Changeset 8680 in josm for trunk/data/validator


Ignore:
Timestamp:
2015-08-22T21:32:45+02:00 (4 years ago)
Author:
simon04
Message:

fix #11755 - Update version of opening_hours.js to 3.3.0

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/data/validator/opening_hours.js

    r8223 r8680  
    1 /*
     1require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){if(require&&module){var i18n=require("i18next-client");module.exports=i18n}var opening_hours_resources={en:{opening_hours:{pretty:{off:"closed",SH:"school holidays",PH:"public holidays"}}},de:{opening_hours:{texts:{"unexpected token":'Unerwartetes Zeichen: "__token__" Das bedeutet, dass die Syntax an dieser Stelle nicht erkannt werden konnte.',"no string":"Der Wert (erster Parameter) ist kein String",nothing:"Der Wert enthält nichts, was ausgewertet werden könnte.","nothing useful":"Diese Regel enthält nichts nützliches. Bitte entferne diese leere Regel.","programmers joke":"Kann es sein, dass du ein Programmier bist und das Hinzufügen eines Semikolons nach jedem Statement ist zwanghaft ;) ?"+" Es ist so, dass das Semikolon in der opening_hours Syntax als Trenner für Regeln definiert ist."+" Bitte verzichte an dieser Stelle auf ein Semikolon.","interpreted as year":"Die Zahl __number__ wird als Jahr interpretiert."+' Vermutlich ist das nicht beabsichtigt. Uhrzeiten werden als "12:00" angegeben.',"rule before fallback empty":"Die Regel vor der Fallback-Regel enthält nichts nützliches","hour min seperator":'Bitte benutze ":" als Stunden/Minuten Trenner',"warnings severity":'Der Parameter optional_conf_parm["warnings_severity"] muss eine ganze Zahl zwischen (einschließlich) 0 und (einschließlich) 7 sein.'+" Gegeben: __severity__ "+", erwartet: Eine der Zahlen: __allowed__.","optional conf parm type":"Der optional_conf_parm Parameter hat einen unbekannten Typ."+" Gegeben: __given__","conf param tag key missing":'Der optional_conf_parm["tag_key"] fehlt, ist aber notwendig wegen optional_conf_parm["map_value"].',"conf param mode invalid":'Der optional_conf_parm["mode"] Parameter ist eine ungültige Zahl.'+" Gegeben: __given__"+", erwartet: Eine der Zahlen: __allowed__.","conf param unkown type":'Der optional_conf_parm["__key__"] Parameter hat einen unbekannten Typ.'+" Gegeben: __given__, erwartet: __expected__.","library bug":'Bei der Auswertung des Wertes "__value__" ist ein Fehler aufgetreten.'+" Bitte melde diesen Bug hier: __url__.__message__","use multi":'Du hast __count__ __part2__ Einzelne Regeln können mit ";" getrennt werden.',"selector multi 2a":"__what__ in einer Regel benutzt. Du kannst nur einen davon je Regel verwenden","selector multi 2b":"nicht verbundene __what__ in einer Regel benutzt. Das ist vermutlich ein Fehler."+" Gleiche Selektoren können (und sollten) immer zusammen und durch Kommas getrennt geschrieben werden."+' Beispiel für Zeitspannen "12:00-13:00,15:00-18:00".'+' Beispiel für Wochentage "Mo-We,Fr".',"selector state":"Status-Schlüsselwörter (offen, geschlossen)",comments:"Kommentare",months:"Monate",weekdays:"Wochentage",ranges:"Zeitspannen","default state":"Diese Regel, welche den Standard Status (d.h. geschlossen) für alle folgenden Regeln ändert, ist nicht die erste Regel."+" Diese Regel überschreibt alle vorherigen Regeln."+" Es kann legtim sein, den Standard Status z.B. auf geöffnet festzulegen"+" und dann nur die Zeiten, zu denen geschlossen ist, anzugeben.",vague:"Diese Regel ist nicht sehr aussagekräftig, da keine Zeit angegeben wurde."+" Bitte füge eine Zeitangabe oder einen Kommentar hinzu, um dies zu verbessern.","empty comment":"Du hast einen leeren Kommentar verwendet."+'" Bitte schreibe entweder einen Kommentar-Text oder benutze stattdessen das Schlüsselwort "unknown".',separator_for_readability:"Du hast das optionale Symbol <separator_for_readability> an der falschen Stelle benutzt."+" Bitte lies die Syntax Spezifikation um zu sehen wo es verwendet werden kann oder entferne es.","strange 24/7":'Du hast 24/7 in einer Art verwendet, welche wahrscheinlich nicht als "24 Stunden, 7 Tage die Woche" interpretiert wird.'+' Der Richtigkeit halber solltest du "open" oder "closed"'+" für diese Regel verwenden und dann die Ausnahmen angeben um das selbe Ziel zu erreichen. So ist es klarer –"+' zum Beispiel "open; Mo 12:00-14:00 off".',"public holiday":'Es wurde keine Regel für "PH" (feiertags) angegeben. Dies ist nicht sehr Aussagekräftig.__part2__'+' Bitte füge die Regel "PH off" an, wenn die Einrichtung an allen Feiertagen geschlossen ist'+' oder schreibe "Sa,Su,PH 12:00-16:00" um auszudrücken, dass Samstags, Sonntags und feiertags von 12:00-16:00 geöffnet ist.'+" Wenn du dir im Unklaren bist, versuche die Öffnungszeit zu klären. Falls das nicht möglich ist, lass die Angabe weg und ignoriere diese Warnung.","public holiday part2":' Leider ist der "tag key" (beispielsweise "opening_hours", or "lit") in opening_hours.js nicht bekannt.'+" Diese Warnung betrifft nur die Keys: __keys__. Falls deine Angabe nicht für einen dieser ist, ignoriere bitte folgenden Hinweis:",switched:'Der Selektor "__first__" wurde für eine bessere Lesbarkeit und der Vollständigkeit halber mit '+' "__second__" getauscht.',"no colon after":'Bitte Benutze kein ":" nach dem Token __token__.',"number -5 to 5":"Zahl zwischen -5 und 5 (außer 0) erwartet.","one weekday constraint":"Du kannst höchstens einen beschränkten Wochentag in einer Monats-Spanne verwenden","range contrainted weekdays":"Du kannst keine Wochentags-Spanne als Beschränkung in einer Monats-Spanne verwenden",expected:'"__symbol__" erwartet.',"range zero":'Du kannst keine __type__-Spanne mit Periode "0" verwenden.',"period one year+":'Bitte verwende keine __type__-Spannen mit Periode "1".'+' Wenn du ausdrücken willst, das eine Einrichtung ab einem bestimmten Jahr immer offen ist, benutze bitte "<year>+".',"period one":'Bitte verwende keine __type__-Spannen mit Periode "1".',"month 31":"Die Tagangabe für __month__ muss zwischen 1 und 31 liegen.","month 30":"Der Monat __month__ hat keine 31 Tage. Der letzte Tag von __month__ ist Tag 30.","month feb":'"Der Monat __month__ hat entwedet 28 oder 29 Tage (Schaltjahre)."',"point in time":"Erwarte Bindestrich (-) oder offenes Ende (+) in der Zeitspanne __calc__."+" Um mit Zeitpunkten zu arbeiten, muss der Modus für  __libraryname__ umgestellt werden."+" Vielleicht falscher OSM tag verwendet?",calculation:"Berechnung","time range continue":"Die Zeitspanne geht nicht wie erwartet weiter","period continue":'Die Zeitspannen-Periode geht nicht wie erwartet weiter. Beispiel "/01:30".',"time range mode":'__libraryname__ wurde im "Zeitspannen-Modus" aufgerufen. Zeitpunkt gefunden.',"point in time mode":'__libraryname__ wurde im "Zeitpunkt-Modus" aufgerufen. Zeitspanne gefunden.',"outside current day":"Zeitspanne beginnt außerhalb des aktuellen Tages","two midnights":"Zeitspanne welche mehrmals Mitternacht beinhaltet wird nicht untersützt","without minutes":"Zeitspanne ohne Minutenangabe angegeben. Das ist nicht sehr eindeutig!"+' Bitte verwende stattdessen folgende Syntax "__syntax__".',"outside day":"Die Zeitspanne beginnt außerhalb des aktuellen Tages","zero calculation":"Das Hinzufügen von 0 in einer variablen Zeitberechnung ändert die variable Zeit nicht."+' Bitte entferne die Zeitberechnung (Beispiel: "sunrise-(sunset-00:00)").',"calculation syntax":"Berechnung mit variabler Zeit hat nicht die korrekte Syntax",missing:'Fehlendes "__symbol__"',"(time)":"(Zeit)","bad range":"Ungültige Zeitspanne: __from__-__to__","] or more numbers":'"]" oder weitere Zahlen erwartet.',"additional rule no sense":'Eine weitere Regel an dieser Stelle ergibt keinen Sinn. Benutze einfach ";" als Trenner für Regeln.'+" Siehe https://wiki.openstreetmap.org/wiki/Key:opening_hours/specification#explain:additional_rule_separator","unexpected token weekday range":"Unerwartes Token in Tages-Spanne: __token__","max differ":"Es sollte keinen Grund geben, mehr als __maxdiffer__ Tage von einem __name__ abzuweichen. Wenn nötig, teile uns dies bitte mit …","adding 0":"Addition von 0 verändert das Datum nicht. Bitte weglassen.","unexpected token holiday":"Unerwartes Token (in Feiertags-Auswertung): __token__","no SH defintion":"Für die Schulferien __name__ fehlen die Defintionen für das Jahr __year__"+" Du kannst diese hinzufügen: __repository_url__","no PH definition":"Der Feiertag __name__ ist für das Land __cc__ nicht definiert."+" Du kannst diese hinzufügen: __repository_url__","no PH definition state":"Der Feiertag __name__ ist für das Land __cc__ und Bundesland __state__ nicht definiert."+" Du kannst diese hinzufügen: __repository_url__","no country code":"Der Ländercode fehlt. Dieser wird benötigt um die korrekten Feiertage zu bestimmen (siehe in der README wie dieser anzugeben ist)","movable no formular":"Der bewegliche Feiertag __name__ kann nicht berechnet werden."+" Bitte füge eine entsprechende Formel hinzu.","movable not in year":"Der bewegliche Feiertag __name__ plus __days__"+" Tage befindet sich nicht mehr im selben Jahr. Aktuell nicht unterstüzt.","year range one year":"Eine Jahres-Spanne mit gleichem Jahr als Beginn und Ende ergibt keinen Sinn."+' Bitte entferne das Ende-Jahr. zum Beispiel: "__year__ May 23"',"year range reverse":"Eine Jahres-Spanne mit Beginn größer als Ende ergibt keinen Sinn."+" Bitte umdrehen.","year past":"Das Jahr liegt in der Vergangenheit.","unexpected token year range":"Unerwartetes Token in der Jahres-Spanne: __token__","week range reverse":"Du hast eine Wochen-Spanne in umgekehrter Reihenfolge oder mehrere Jahr umfassende angegeben. Dies ist aktuell nicht unterstützt.","week negative":"Du hast eine Wochennummer kleiner 1 angegeben. Korrekte Angaben sind 1-53.","week exceed":"Du hast eine Wochennummer größer als 53 angegeben. Korrekte Angaben sind 1-53.","week period less than 2":"Du hast eine Wochenperiode kleiner 2 angegeben."+' Wenn du die gesammte Spanne von __weekfrom__ bis __weekto__ angeben will, lasse "/__period__" einfach weg.',"week period greater than 26":"Du hast eine Wochen-Periode größer als 26 angegeben."+" 26.5 ist die Hälfte des Maximums von 53 Wochen pro Jahr. Damit würde eine Periode größer als 26 nur einmal pro Jahr auftreten."+' Bitte gibt den Wochen-Selektor als "week __weekfrom__" an, wenn es das ist, was du ausdrücken möchtest.',"unexpected token week range":"Unerwartetes Token in Wochen-Spanne: __token__","unexpected token month range":"Unerwartetes Token in Monats-Spanne: __token__","day range reverse":"Zeitspanne in falscher Reihenfolge. Begin ist größer als Ende.","open end":'Angegeben als "open end". Schließzeit wurde geraten.',"date parameter needed":"Datumsparameter nötig."},pretty:{off:"geschlossen",SH:"Schulferien",PH:"Feiertags"}}}};if(!i18n.isInitialized()){i18n.init({fallbackLng:"en",resStore:opening_hours_resources,getAsync:true,useCookie:true,debug:true})}else{for(lang in opening_hours_resources){i18n.addResourceBundle(lang,"opening_hours",opening_hours_resources[lang]["opening_hours"],true)}}},{"i18next-client":"i18next-client"}],2:[function(require,module,exports){/*
     2 Copyright (c) 2011-2013, Vladimir Agafonkin
     3 SunCalc is a JavaScript library for calculating sun position, sunlight phases, and moon position.
     4 https://github.com/mourner/suncalc
     5 */
     6(function(global){"use strict";var SunCalc;if(typeof exports!=="undefined"){SunCalc=exports}else{SunCalc=global.SunCalc={}}var PI=Math.PI,rad=PI/180,sin=Math.sin,cos=Math.cos,tan=Math.tan,asin=Math.asin,atan=Math.atan2,acos=Math.acos;var dayMs=1e3*60*60*24,J1970=2440588,J2000=2451545;function toJulian(date){return date.valueOf()/dayMs-.5+J1970}function fromJulian(j){return new Date((j+.5-J1970)*dayMs)}function toDays(date){return toJulian(date)-J2000}var e=rad*23.4397;function getRightAscension(l,b){return atan(sin(l)*cos(e)-tan(b)*sin(e),cos(l))}function getDeclination(l,b){return asin(sin(b)*cos(e)+cos(b)*sin(e)*sin(l))}function getAzimuth(H,phi,dec){return atan(sin(H),cos(H)*sin(phi)-tan(dec)*cos(phi))}function getAltitude(H,phi,dec){return asin(sin(phi)*sin(dec)+cos(phi)*cos(dec)*cos(H))}function getSiderealTime(d,lw){return rad*(280.16+360.9856235*d)-lw}function getSolarMeanAnomaly(d){return rad*(357.5291+.98560028*d)}function getEquationOfCenter(M){return rad*(1.9148*sin(M)+.02*sin(2*M)+3e-4*sin(3*M))}function getEclipticLongitude(M,C){var P=rad*102.9372;return M+C+P+PI}function getSunCoords(d){var M=getSolarMeanAnomaly(d),C=getEquationOfCenter(M),L=getEclipticLongitude(M,C);return{dec:getDeclination(L,0),ra:getRightAscension(L,0)}}SunCalc.getPosition=function(date,lat,lng){var lw=rad*-lng,phi=rad*lat,d=toDays(date),c=getSunCoords(d),th=getSiderealTime(d,lw),H=th-c.ra;return{azimuth:getAzimuth(H,phi,c.dec),altitude:getAltitude(H,phi,c.dec)}};var times=[[-.83,"sunrise","sunset"],[-.3,"sunriseEnd","sunsetStart"],[-6,"dawn","dusk"],[-12,"nauticalDawn","nauticalDusk"],[-18,"nightEnd","night"],[6,"goldenHourEnd","goldenHour"]];SunCalc.addTime=function(angle,riseName,setName){times.push([angle,riseName,setName])};var J0=9e-4;function getJulianCycle(d,lw){return Math.round(d-J0-lw/(2*PI))}function getApproxTransit(Ht,lw,n){return J0+(Ht+lw)/(2*PI)+n}function getSolarTransitJ(ds,M,L){return J2000+ds+.0053*sin(M)-.0069*sin(2*L)}function getHourAngle(h,phi,d){return acos((sin(h)-sin(phi)*sin(d))/(cos(phi)*cos(d)))}SunCalc.getTimes=function(date,lat,lng){var lw=rad*-lng,phi=rad*lat,d=toDays(date),n=getJulianCycle(d,lw),ds=getApproxTransit(0,lw,n),M=getSolarMeanAnomaly(ds),C=getEquationOfCenter(M),L=getEclipticLongitude(M,C),dec=getDeclination(L,0),Jnoon=getSolarTransitJ(ds,M,L);function getSetJ(h){var w=getHourAngle(h,phi,dec),a=getApproxTransit(w,lw,n);return getSolarTransitJ(a,M,L)}var result={solarNoon:fromJulian(Jnoon),nadir:fromJulian(Jnoon-.5)};var i,len,time,angle,morningName,eveningName,Jset,Jrise;for(i=0,len=times.length;i<len;i+=1){time=times[i];angle=time[0];morningName=time[1];eveningName=time[2];Jset=getSetJ(angle*rad);Jrise=Jnoon-(Jset-Jnoon);result[morningName]=fromJulian(Jrise);result[eveningName]=fromJulian(Jset)}return result};function getMoonCoords(d){var L=rad*(218.316+13.176396*d),M=rad*(134.963+13.064993*d),F=rad*(93.272+13.22935*d),l=L+rad*6.289*sin(M),b=rad*5.128*sin(F),dt=385001-20905*cos(M);return{ra:getRightAscension(l,b),dec:getDeclination(l,b),dist:dt}}SunCalc.getMoonPosition=function(date,lat,lng){var lw=rad*-lng,phi=rad*lat,d=toDays(date),c=getMoonCoords(d),H=getSiderealTime(d,lw)-c.ra,h=getAltitude(H,phi,c.dec);h=h+.017*rad/tan(h+10.26*rad/(h+5.1*rad));return{azimuth:getAzimuth(H,phi,c.dec),altitude:h,distance:c.dist}};SunCalc.getMoonFraction=function(date){var d=toDays(date),s=getSunCoords(d),m=getMoonCoords(d),sdist=149598e3,phi=acos(sin(s.dec)*sin(m.dec)+cos(s.dec)*cos(m.dec)*cos(s.ra-m.ra)),inc=atan(sdist*sin(phi),m.dist-sdist*cos(phi));return(1+cos(inc))/2}})(this)},{}],"i18next-client":[function(require,module,exports){(function(root){if(!Array.prototype.indexOf){Array.prototype.indexOf=function(searchElement){"use strict";if(this==null){throw new TypeError}var t=Object(this);var len=t.length>>>0;if(len===0){return-1}var n=0;if(arguments.length>0){n=Number(arguments[1]);if(n!=n){n=0}else if(n!=0&&n!=Infinity&&n!=-Infinity){n=(n>0||-1)*Math.floor(Math.abs(n))}}if(n>=len){return-1}var k=n>=0?n:Math.max(len-Math.abs(n),0);for(;k<len;k++){if(k in t&&t[k]===searchElement){return k}}return-1}}if(!Array.prototype.lastIndexOf){Array.prototype.lastIndexOf=function(searchElement){"use strict";if(this==null){throw new TypeError}var t=Object(this);var len=t.length>>>0;if(len===0){return-1}var n=len;if(arguments.length>1){n=Number(arguments[1]);if(n!=n){n=0}else if(n!=0&&n!=1/0&&n!=-(1/0)){n=(n>0||-1)*Math.floor(Math.abs(n))}}var k=n>=0?Math.min(n,len-1):len-Math.abs(n);for(;k>=0;k--){if(k in t&&t[k]===searchElement){return k}}return-1}}if(typeof String.prototype.trim!=="function"){String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")}}var $=root.jQuery||root.Zepto,i18n={},resStore={},currentLng,replacementCounter=0,languages=[],initialized=false,sync={},conflictReference=null;if(typeof module!=="undefined"&&module.exports){module.exports=i18n}else{if($){$.i18n=$.i18n||i18n}if(root.i18n){conflictReference=root.i18n}root.i18n=i18n}sync={load:function(lngs,options,cb){if(options.useLocalStorage){sync._loadLocal(lngs,options,function(err,store){var missingLngs=[];for(var i=0,len=lngs.length;i<len;i++){if(!store[lngs[i]])missingLngs.push(lngs[i])}if(missingLngs.length>0){sync._fetch(missingLngs,options,function(err,fetched){f.extend(store,fetched);sync._storeLocal(fetched);cb(err,store)})}else{cb(err,store)}})}else{sync._fetch(lngs,options,function(err,store){cb(err,store)})}},_loadLocal:function(lngs,options,cb){var store={},nowMS=(new Date).getTime();if(window.localStorage){var todo=lngs.length;f.each(lngs,function(key,lng){var local=f.localStorage.getItem("res_"+lng);if(local){local=JSON.parse(local);if(local.i18nStamp&&local.i18nStamp+options.localStorageExpirationTime>nowMS){store[lng]=local}}todo--;if(todo===0)cb(null,store)})}},_storeLocal:function(store){if(window.localStorage){for(var m in store){store[m].i18nStamp=(new Date).getTime();f.localStorage.setItem("res_"+m,JSON.stringify(store[m]))}}return},_fetch:function(lngs,options,cb){var ns=options.ns,store={};if(!options.dynamicLoad){var todo=ns.namespaces.length*lngs.length,errors;f.each(ns.namespaces,function(nsIndex,nsValue){f.each(lngs,function(lngIndex,lngValue){var loadComplete=function(err,data){if(err){errors=errors||[];errors.push(err)}store[lngValue]=store[lngValue]||{};store[lngValue][nsValue]=data;todo--;if(todo===0)cb(errors,store)};if(typeof options.customLoad=="function"){options.customLoad(lngValue,nsValue,options,loadComplete)}else{sync._fetchOne(lngValue,nsValue,options,loadComplete)}})})}else{var loadComplete=function(err,data){cb(err,data)};if(typeof options.customLoad=="function"){options.customLoad(lngs,ns.namespaces,options,loadComplete)}else{var url=applyReplacement(options.resGetPath,{lng:lngs.join("+"),ns:ns.namespaces.join("+")});f.ajax({url:url,cache:options.cache,success:function(data,status,xhr){f.log("loaded: "+url);loadComplete(null,data)},error:function(xhr,status,error){f.log("failed loading: "+url);loadComplete("failed loading resource.json error: "+error)},dataType:"json",async:options.getAsync,timeout:options.ajaxTimeout})}}},_fetchOne:function(lng,ns,options,done){var url=applyReplacement(options.resGetPath,{lng:lng,ns:ns});f.ajax({url:url,cache:options.cache,success:function(data,status,xhr){f.log("loaded: "+url);done(null,data)},error:function(xhr,status,error){if(status&&status==200||xhr&&xhr.status&&xhr.status==200){f.error("There is a typo in: "+url)}else if(status&&status==404||xhr&&xhr.status&&xhr.status==404){f.log("Does not exist: "+url)}else{var theStatus=status?status:xhr&&xhr.status?xhr.status:null;f.log(theStatus+" when loading "+url)}done(error,{})},dataType:"json",async:options.getAsync,timeout:options.ajaxTimeout})},postMissing:function(lng,ns,key,defaultValue,lngs){var payload={};payload[key]=defaultValue;var urls=[];if(o.sendMissingTo==="fallback"&&o.fallbackLng[0]!==false){for(var i=0;i<o.fallbackLng.length;i++){urls.push({lng:o.fallbackLng[i],url:applyReplacement(o.resPostPath,{lng:o.fallbackLng[i],ns:ns})})}}else if(o.sendMissingTo==="current"||o.sendMissingTo==="fallback"&&o.fallbackLng[0]===false){urls.push({lng:lng,url:applyReplacement(o.resPostPath,{lng:lng,ns:ns})})}else if(o.sendMissingTo==="all"){for(var i=0,l=lngs.length;i<l;i++){urls.push({lng:lngs[i],url:applyReplacement(o.resPostPath,{lng:lngs[i],ns:ns})})}}for(var y=0,len=urls.length;y<len;y++){var item=urls[y];f.ajax({url:item.url,type:o.sendType,data:payload,success:function(data,status,xhr){f.log("posted missing key '"+key+"' to: "+item.url);var keys=key.split(".");var x=0;var value=resStore[item.lng][ns];while(keys[x]){if(x===keys.length-1){value=value[keys[x]]=defaultValue}else{value=value[keys[x]]=value[keys[x]]||{}}x++}},error:function(xhr,status,error){f.log("failed posting missing key '"+key+"' to: "+item.url)},dataType:"json",async:o.postAsync,timeout:o.ajaxTimeout})}},reload:reload};var o={lng:undefined,load:"all",preload:[],lowerCaseLng:false,returnObjectTrees:false,fallbackLng:["dev"],fallbackNS:[],detectLngQS:"setLng",detectLngFromLocalStorage:false,ns:{namespaces:["translation"],defaultNs:"translation"},fallbackOnNull:true,fallbackOnEmpty:false,fallbackToDefaultNS:false,showKeyIfEmpty:false,nsseparator:":",keyseparator:".",selectorAttr:"data-i18n",debug:false,resGetPath:"locales/__lng__/__ns__.json",resPostPath:"locales/add/__lng__/__ns__",getAsync:true,postAsync:true,resStore:undefined,useLocalStorage:false,localStorageExpirationTime:7*24*60*60*1e3,dynamicLoad:false,sendMissing:false,sendMissingTo:"fallback",sendType:"POST",interpolationPrefix:"__",interpolationSuffix:"__",defaultVariables:false,reusePrefix:"$t(",reuseSuffix:")",pluralSuffix:"_plural",pluralNotFound:["plural_not_found",Math.random()].join(""),contextNotFound:["context_not_found",Math.random()].join(""),escapeInterpolation:false,indefiniteSuffix:"_indefinite",indefiniteNotFound:["indefinite_not_found",Math.random()].join(""),setJqueryExt:true,defaultValueFromContent:true,useDataAttrOptions:false,cookieExpirationTime:undefined,useCookie:true,cookieName:"i18next",cookieDomain:undefined,objectTreeKeyHandler:undefined,postProcess:undefined,parseMissingKey:undefined,missingKeyHandler:sync.postMissing,ajaxTimeout:0,shortcutFunction:"sprintf"};function _extend(target,source){if(!source||typeof source==="function"){return target}for(var attr in source){target[attr]=source[attr]}return target}function _deepExtend(target,source){for(var prop in source)if(prop in target)_deepExtend(target[prop],source[prop]);else target[prop]=source[prop];return target}function _each(object,callback,args){var name,i=0,length=object.length,isObj=length===undefined||Object.prototype.toString.apply(object)!=="[object Array]"||typeof object==="function";if(args){if(isObj){for(name in object){if(callback.apply(object[name],args)===false){break}}}else{for(;i<length;){if(callback.apply(object[i++],args)===false){break}}}}else{if(isObj){for(name in object){if(callback.call(object[name],name,object[name])===false){break}}}else{for(;i<length;){if(callback.call(object[i],i,object[i++])===false){break}}}}return object}var _entityMap={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;"};function _escape(data){if(typeof data==="string"){return data.replace(/[&<>"'\/]/g,function(s){return _entityMap[s]})}else{return data}}function _ajax(options){
     7// v0.5.0 of https://github.com/goloroden/http.js
     8var getXhr=function(callback){if(window.XMLHttpRequest){return callback(null,new XMLHttpRequest)}else if(window.ActiveXObject){try{return callback(null,new ActiveXObject("Msxml2.XMLHTTP"))}catch(e){return callback(null,new ActiveXObject("Microsoft.XMLHTTP"))}}return callback(new Error)};var encodeUsingUrlEncoding=function(data){if(typeof data==="string"){return data}var result=[];for(var dataItem in data){if(data.hasOwnProperty(dataItem)){result.push(encodeURIComponent(dataItem)+"="+encodeURIComponent(data[dataItem]))}}return result.join("&")};var utf8=function(text){text=text.replace(/\r\n/g,"\n");var result="";for(var i=0;i<text.length;i++){var c=text.charCodeAt(i);if(c<128){result+=String.fromCharCode(c)}else if(c>127&&c<2048){result+=String.fromCharCode(c>>6|192);result+=String.fromCharCode(c&63|128)}else{result+=String.fromCharCode(c>>12|224);result+=String.fromCharCode(c>>6&63|128);result+=String.fromCharCode(c&63|128)}}return result};var base64=function(text){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";text=utf8(text);var result="",chr1,chr2,chr3,enc1,enc2,enc3,enc4,i=0;do{chr1=text.charCodeAt(i++);chr2=text.charCodeAt(i++);chr3=text.charCodeAt(i++);enc1=chr1>>2;enc2=(chr1&3)<<4|chr2>>4;enc3=(chr2&15)<<2|chr3>>6;enc4=chr3&63;if(isNaN(chr2)){enc3=enc4=64}else if(isNaN(chr3)){enc4=64}result+=keyStr.charAt(enc1)+keyStr.charAt(enc2)+keyStr.charAt(enc3)+keyStr.charAt(enc4);chr1=chr2=chr3="";enc1=enc2=enc3=enc4=""}while(i<text.length);return result};var mergeHeaders=function(){var result=arguments[0];for(var i=1;i<arguments.length;i++){var currentHeaders=arguments[i];for(var header in currentHeaders){if(currentHeaders.hasOwnProperty(header)){result[header]=currentHeaders[header]}}}return result};var ajax=function(method,url,options,callback){if(typeof options==="function"){callback=options;options={}}options.cache=options.cache||false;options.data=options.data||{};options.headers=options.headers||{};options.jsonp=options.jsonp||false;options.async=options.async===undefined?true:options.async;var headers=mergeHeaders({accept:"*/*","content-type":"application/x-www-form-urlencoded;charset=UTF-8"},ajax.headers,options.headers);var payload;if(headers["content-type"]==="application/json"){payload=JSON.stringify(options.data)}else{payload=encodeUsingUrlEncoding(options.data)}if(method==="GET"){var queryString=[];if(payload){queryString.push(payload);payload=null}if(!options.cache){queryString.push("_="+(new Date).getTime())}if(options.jsonp){queryString.push("callback="+options.jsonp);queryString.push("jsonp="+options.jsonp)}queryString=queryString.join("&");if(queryString.length>1){if(url.indexOf("?")>-1){url+="&"+queryString}else{url+="?"+queryString}}if(options.jsonp){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.type="text/javascript";script.src=url;head.appendChild(script);return}}getXhr(function(err,xhr){if(err)return callback(err);xhr.open(method,url,options.async);for(var header in headers){if(headers.hasOwnProperty(header)){xhr.setRequestHeader(header,headers[header])}}xhr.onreadystatechange=function(){if(xhr.readyState===4){var data=xhr.responseText||"";if(!callback){return}callback(xhr.status,{text:function(){return data},json:function(){try{return JSON.parse(data)}catch(e){f.error("Can not parse JSON. URL: "+url);return{}}}})}};xhr.send(payload)})};var http={authBasic:function(username,password){ajax.headers["Authorization"]="Basic "+base64(username+":"+password)},connect:function(url,options,callback){return ajax("CONNECT",url,options,callback)},del:function(url,options,callback){return ajax("DELETE",url,options,callback)},get:function(url,options,callback){return ajax("GET",url,options,callback)},head:function(url,options,callback){return ajax("HEAD",url,options,callback)},headers:function(headers){ajax.headers=headers||{}},isAllowed:function(url,verb,callback){this.options(url,function(status,data){callback(data.text().indexOf(verb)!==-1)})},options:function(url,options,callback){return ajax("OPTIONS",url,options,callback)},patch:function(url,options,callback){return ajax("PATCH",url,options,callback)},post:function(url,options,callback){return ajax("POST",url,options,callback)},put:function(url,options,callback){return ajax("PUT",url,options,callback)},trace:function(url,options,callback){return ajax("TRACE",url,options,callback)}};var methode=options.type?options.type.toLowerCase():"get";http[methode](options.url,options,function(status,data){if(status===200||status===0&&data.text()){options.success(data.json(),status,null)}else{options.error(data.text(),status,null)}})}var _cookie={create:function(name,value,minutes,domain){var expires;if(minutes){var date=new Date;date.setTime(date.getTime()+minutes*60*1e3);expires="; expires="+date.toGMTString()}else expires="";domain=domain?"domain="+domain+";":"";document.cookie=name+"="+value+expires+";"+domain+"path=/"},read:function(name){var nameEQ=name+"=";var ca=document.cookie.split(";");for(var i=0;i<ca.length;i++){var c=ca[i];while(c.charAt(0)==" ")c=c.substring(1,c.length);if(c.indexOf(nameEQ)===0)return c.substring(nameEQ.length,c.length)}return null},remove:function(name){this.create(name,"",-1)}};var cookie_noop={create:function(name,value,minutes,domain){},read:function(name){return null},remove:function(name){}};var f={extend:$?$.extend:_extend,deepExtend:_deepExtend,each:$?$.each:_each,ajax:$?$.ajax:typeof document!=="undefined"?_ajax:function(){},cookie:typeof document!=="undefined"?_cookie:cookie_noop,detectLanguage:detectLanguage,escape:_escape,log:function(str){if(o.debug&&typeof console!=="undefined")console.log(str)},error:function(str){if(typeof console!=="undefined")console.error(str)},getCountyIndexOfLng:function(lng){var lng_index=0;if(lng==="nb-NO"||lng==="nn-NO"||lng==="nb-no"||lng==="nn-no")lng_index=1;return lng_index},toLanguages:function(lng,fallbackLng){var log=this.log;fallbackLng=fallbackLng||o.fallbackLng;if(typeof fallbackLng==="string")fallbackLng=[fallbackLng];function applyCase(l){var ret=l;if(typeof l==="string"&&l.indexOf("-")>-1){var parts=l.split("-");ret=o.lowerCaseLng?parts[0].toLowerCase()+"-"+parts[1].toLowerCase():parts[0].toLowerCase()+"-"+parts[1].toUpperCase()}else{ret=o.lowerCaseLng?l.toLowerCase():l}return ret}var languages=[];var whitelist=o.lngWhitelist||false;var addLanguage=function(language){if(!whitelist||whitelist.indexOf(language)>-1){languages.push(language)}else{log("rejecting non-whitelisted language: "+language)}};if(typeof lng==="string"&&lng.indexOf("-")>-1){var parts=lng.split("-");if(o.load!=="unspecific")addLanguage(applyCase(lng));if(o.load!=="current")addLanguage(applyCase(parts[this.getCountyIndexOfLng(lng)]))}else{addLanguage(applyCase(lng))}for(var i=0;i<fallbackLng.length;i++){if(languages.indexOf(fallbackLng[i])===-1&&fallbackLng[i])languages.push(applyCase(fallbackLng[i]))}return languages},regexEscape:function(str){return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},regexReplacementEscape:function(strOrFn){if(typeof strOrFn==="string"){return strOrFn.replace(/\$/g,"$$$$")}else{return strOrFn}},localStorage:{setItem:function(key,value){if(window.localStorage){try{window.localStorage.setItem(key,value)}catch(e){f.log('failed to set value for key "'+key+'" to localStorage.')}}},getItem:function(key,value){if(window.localStorage){try{return window.localStorage.getItem(key,value)}catch(e){f.log('failed to get value for key "'+key+'" from localStorage.');return undefined}}}}};function init(options,cb){if(typeof options==="function"){cb=options;options={}}options=options||{};f.extend(o,options);delete o.fixLng;if(o.functions){delete o.functions;f.extend(f,options.functions)}if(typeof o.ns=="string"){o.ns={namespaces:[o.ns],defaultNs:o.ns}}if(typeof o.fallbackNS=="string"){o.fallbackNS=[o.fallbackNS]}if(typeof o.fallbackLng=="string"||typeof o.fallbackLng=="boolean"){o.fallbackLng=[o.fallbackLng]}o.interpolationPrefixEscaped=f.regexEscape(o.interpolationPrefix);o.interpolationSuffixEscaped=f.regexEscape(o.interpolationSuffix);if(!o.lng)o.lng=f.detectLanguage();languages=f.toLanguages(o.lng);currentLng=languages[0];f.log("currentLng set to: "+currentLng);if(o.useCookie&&f.cookie.read(o.cookieName)!==currentLng){f.cookie.create(o.cookieName,currentLng,o.cookieExpirationTime,o.cookieDomain)}if(o.detectLngFromLocalStorage&&typeof document!=="undefined"&&window.localStorage){f.localStorage.setItem("i18next_lng",currentLng)}var lngTranslate=translate;if(options.fixLng){lngTranslate=function(key,options){options=options||{};options.lng=options.lng||lngTranslate.lng;return translate(key,options)};lngTranslate.lng=currentLng}pluralExtensions.setCurrentLng(currentLng);if($&&o.setJqueryExt){addJqueryFunct&&addJqueryFunct()}else{addJqueryLikeFunctionality&&addJqueryLikeFunctionality()}var deferred;if($&&$.Deferred){deferred=$.Deferred()}if(o.resStore){resStore=o.resStore;initialized=true;if(cb)cb(null,lngTranslate);if(deferred)deferred.resolve(lngTranslate);if(deferred)return deferred.promise();return}var lngsToLoad=f.toLanguages(o.lng);if(typeof o.preload==="string")o.preload=[o.preload];for(var i=0,l=o.preload.length;i<l;i++){var pres=f.toLanguages(o.preload[i]);for(var y=0,len=pres.length;y<len;y++){if(lngsToLoad.indexOf(pres[y])<0){lngsToLoad.push(pres[y])}}}i18n.sync.load(lngsToLoad,o,function(err,store){resStore=store;initialized=true;if(cb)cb(err,lngTranslate);if(deferred)(!err?deferred.resolve:deferred.reject)(err||lngTranslate)});if(deferred)return deferred.promise()}function isInitialized(){return initialized}function preload(lngs,cb){if(typeof lngs==="string")lngs=[lngs];for(var i=0,l=lngs.length;i<l;i++){if(o.preload.indexOf(lngs[i])<0){o.preload.push(lngs[i])}}return init(cb)}function addResourceBundle(lng,ns,resources,deep){if(typeof ns!=="string"){resources=ns;ns=o.ns.defaultNs}else if(o.ns.namespaces.indexOf(ns)<0){o.ns.namespaces.push(ns)}resStore[lng]=resStore[lng]||{};resStore[lng][ns]=resStore[lng][ns]||{};if(deep){f.deepExtend(resStore[lng][ns],resources)}else{f.extend(resStore[lng][ns],resources)}if(o.useLocalStorage){sync._storeLocal(resStore)}}function hasResourceBundle(lng,ns){if(typeof ns!=="string"){ns=o.ns.defaultNs}resStore[lng]=resStore[lng]||{};var res=resStore[lng][ns]||{};var hasValues=false;for(var prop in res){if(res.hasOwnProperty(prop)){hasValues=true}}return hasValues}function getResourceBundle(lng,ns){if(typeof ns!=="string"){ns=o.ns.defaultNs}resStore[lng]=resStore[lng]||{};return f.extend({},resStore[lng][ns])}function removeResourceBundle(lng,ns){if(typeof ns!=="string"){ns=o.ns.defaultNs}resStore[lng]=resStore[lng]||{};resStore[lng][ns]={};if(o.useLocalStorage){sync._storeLocal(resStore)}}function addResource(lng,ns,key,value){if(typeof ns!=="string"){resource=ns;ns=o.ns.defaultNs}else if(o.ns.namespaces.indexOf(ns)<0){o.ns.namespaces.push(ns)}resStore[lng]=resStore[lng]||{};resStore[lng][ns]=resStore[lng][ns]||{};var keys=key.split(o.keyseparator);var x=0;var node=resStore[lng][ns];var origRef=node;while(keys[x]){if(x==keys.length-1)node[keys[x]]=value;else{if(node[keys[x]]==null)node[keys[x]]={};node=node[keys[x]]}x++}if(o.useLocalStorage){sync._storeLocal(resStore)}}function addResources(lng,ns,resources){if(typeof ns!=="string"){resource=ns;ns=o.ns.defaultNs}else if(o.ns.namespaces.indexOf(ns)<0){o.ns.namespaces.push(ns)}for(var m in resources){if(typeof resources[m]==="string")addResource(lng,ns,m,resources[m])}}function setDefaultNamespace(ns){o.ns.defaultNs=ns}function loadNamespace(namespace,cb){loadNamespaces([namespace],cb)}function loadNamespaces(namespaces,cb){var opts={dynamicLoad:o.dynamicLoad,resGetPath:o.resGetPath,getAsync:o.getAsync,customLoad:o.customLoad,ns:{namespaces:namespaces,defaultNs:""}};var lngsToLoad=f.toLanguages(o.lng);if(typeof o.preload==="string")o.preload=[o.preload];for(var i=0,l=o.preload.length;i<l;i++){var pres=f.toLanguages(o.preload[i]);for(var y=0,len=pres.length;y<len;y++){if(lngsToLoad.indexOf(pres[y])<0){lngsToLoad.push(pres[y])}}}var lngNeedLoad=[];for(var a=0,lenA=lngsToLoad.length;a<lenA;a++){var needLoad=false;var resSet=resStore[lngsToLoad[a]];if(resSet){for(var b=0,lenB=namespaces.length;b<lenB;b++){if(!resSet[namespaces[b]])needLoad=true}}else{needLoad=true}if(needLoad)lngNeedLoad.push(lngsToLoad[a])}if(lngNeedLoad.length){i18n.sync._fetch(lngNeedLoad,opts,function(err,store){var todo=namespaces.length*lngNeedLoad.length;f.each(namespaces,function(nsIndex,nsValue){if(o.ns.namespaces.indexOf(nsValue)<0){o.ns.namespaces.push(nsValue)}f.each(lngNeedLoad,function(lngIndex,lngValue){resStore[lngValue]=resStore[lngValue]||{};resStore[lngValue][nsValue]=store[lngValue][nsValue];todo--;if(todo===0&&cb){if(o.useLocalStorage)i18n.sync._storeLocal(resStore);cb()}})})})}else{if(cb)cb()}}function setLng(lng,options,cb){if(typeof options==="function"){cb=options;options={}}else if(!options){options={}}options.lng=lng;return init(options,cb)}function lng(){return currentLng}function reload(cb){resStore={};setLng(currentLng,cb)}function noConflict(){window.i18next=window.i18n;if(conflictReference){window.i18n=conflictReference}else{delete window.i18n}}function addJqueryFunct(){$.t=$.t||translate;function parse(ele,key,options){if(key.length===0)return;var attr="text";if(key.indexOf("[")===0){var parts=key.split("]");key=parts[1];attr=parts[0].substr(1,parts[0].length-1)}if(key.indexOf(";")===key.length-1){key=key.substr(0,key.length-2)}var optionsToUse;if(attr==="html"){optionsToUse=o.defaultValueFromContent?$.extend({defaultValue:ele.html()},options):options;ele.html($.t(key,optionsToUse))}else if(attr==="text"){optionsToUse=o.defaultValueFromContent?$.extend({defaultValue:ele.text()},options):options;ele.text($.t(key,optionsToUse))}else if(attr==="prepend"){optionsToUse=o.defaultValueFromContent?$.extend({defaultValue:ele.html()},options):options;ele.prepend($.t(key,optionsToUse))}else if(attr==="append"){optionsToUse=o.defaultValueFromContent?$.extend({defaultValue:ele.html()},options):options;ele.append($.t(key,optionsToUse))}else if(attr.indexOf("data-")===0){var dataAttr=attr.substr("data-".length);optionsToUse=o.defaultValueFromContent?$.extend({defaultValue:ele.data(dataAttr)},options):options;var translated=$.t(key,optionsToUse);ele.data(dataAttr,translated);ele.attr(attr,translated)}else{optionsToUse=o.defaultValueFromContent?$.extend({defaultValue:ele.attr(attr)},options):options;ele.attr(attr,$.t(key,optionsToUse))}}function localize(ele,options){var key=ele.attr(o.selectorAttr);if(!key&&typeof key!=="undefined"&&key!==false)key=ele.text()||ele.val();if(!key)return;var target=ele,targetSelector=ele.data("i18n-target");if(targetSelector){target=ele.find(targetSelector)||ele}if(!options&&o.useDataAttrOptions===true){options=ele.data("i18n-options")}options=options||{};if(key.indexOf(";")>=0){var keys=key.split(";");$.each(keys,function(m,k){if(k!=="")parse(target,k,options)})}else{parse(target,key,options)}if(o.useDataAttrOptions===true)ele.data("i18n-options",options)}$.fn.i18n=function(options){return this.each(function(){localize($(this),options);var elements=$(this).find("["+o.selectorAttr+"]");elements.each(function(){localize($(this),options)})})}}function addJqueryLikeFunctionality(){function parse(ele,key,options){if(key.length===0)return;var attr="text";if(key.indexOf("[")===0){var parts=key.split("]");key=parts[1];attr=parts[0].substr(1,parts[0].length-1)}if(key.indexOf(";")===key.length-1){key=key.substr(0,key.length-2)}if(attr==="html"){ele.innerHTML=translate(key,options)}else if(attr==="text"){ele.textContent=translate(key,options)}else if(attr==="prepend"){ele.insertAdjacentHTML(translate(key,options),"afterbegin")}else if(attr==="append"){ele.insertAdjacentHTML(translate(key,options),"beforeend")}else{ele.setAttribute(attr,translate(key,options))}}function localize(ele,options){var key=ele.getAttribute(o.selectorAttr);if(!key&&typeof key!=="undefined"&&key!==false)key=ele.textContent||ele.value;if(!key)return;var target=ele,targetSelector=ele.getAttribute("i18n-target");if(targetSelector){target=ele.querySelector(targetSelector)||ele}if(key.indexOf(";")>=0){var keys=key.split(";"),index=0,length=keys.length;for(;index<length;index++){if(keys[index]!=="")parse(target,keys[index],options)}}else{parse(target,key,options)}}i18n.translateObject=function(object,options){var elements=object.querySelectorAll("["+o.selectorAttr+"]");var index=0,length=elements.length;for(;index<length;index++){localize(elements[index],options)}}}function applyReplacement(str,replacementHash,nestedKey,options){if(!str)return str;options=options||replacementHash;if(str.indexOf(options.interpolationPrefix||o.interpolationPrefix)<0)return str;var prefix=options.interpolationPrefix?f.regexEscape(options.interpolationPrefix):o.interpolationPrefixEscaped,suffix=options.interpolationSuffix?f.regexEscape(options.interpolationSuffix):o.interpolationSuffixEscaped,unEscapingSuffix="HTML"+suffix;var hash=replacementHash.replace&&typeof replacementHash.replace==="object"?replacementHash.replace:replacementHash;f.each(hash,function(key,value){var nextKey=nestedKey?nestedKey+o.keyseparator+key:key;if(typeof value==="object"&&value!==null){str=applyReplacement(str,value,nextKey,options)}else{if(options.escapeInterpolation||o.escapeInterpolation){str=str.replace(new RegExp([prefix,nextKey,unEscapingSuffix].join(""),"g"),f.regexReplacementEscape(value));str=str.replace(new RegExp([prefix,nextKey,suffix].join(""),"g"),f.regexReplacementEscape(f.escape(value)))}else{str=str.replace(new RegExp([prefix,nextKey,suffix].join(""),"g"),f.regexReplacementEscape(value))}}});return str}f.applyReplacement=applyReplacement;function applyReuse(translated,options){var comma=",";var options_open="{";var options_close="}";var opts=f.extend({},options);delete opts.postProcess;while(translated.indexOf(o.reusePrefix)!=-1){replacementCounter++;if(replacementCounter>o.maxRecursion){break}var index_of_opening=translated.lastIndexOf(o.reusePrefix);var index_of_end_of_closing=translated.indexOf(o.reuseSuffix,index_of_opening)+o.reuseSuffix.length;var token=translated.substring(index_of_opening,index_of_end_of_closing);var token_without_symbols=token.replace(o.reusePrefix,"").replace(o.reuseSuffix,"");if(index_of_end_of_closing<=index_of_opening){f.error("there is an missing closing in following translation value",translated);return""}if(token_without_symbols.indexOf(comma)!=-1){var index_of_token_end_of_closing=token_without_symbols.indexOf(comma);if(token_without_symbols.indexOf(options_open,index_of_token_end_of_closing)!=-1&&token_without_symbols.indexOf(options_close,index_of_token_end_of_closing)!=-1){var index_of_opts_opening=token_without_symbols.indexOf(options_open,index_of_token_end_of_closing);var index_of_opts_end_of_closing=token_without_symbols.indexOf(options_close,index_of_opts_opening)+options_close.length;try{opts=f.extend(opts,JSON.parse(token_without_symbols.substring(index_of_opts_opening,index_of_opts_end_of_closing)));token_without_symbols=token_without_symbols.substring(0,index_of_token_end_of_closing)}catch(e){}}}var translated_token=_translate(token_without_symbols,opts);translated=translated.replace(token,f.regexReplacementEscape(translated_token))}return translated}function hasContext(options){return options.context&&(typeof options.context=="string"||typeof options.context=="number")}function needsPlural(options,lng){return options.count!==undefined&&typeof options.count!="string"}function needsIndefiniteArticle(options){return options.indefinite_article!==undefined&&typeof options.indefinite_article!="string"&&options.indefinite_article}function exists(key,options){options=options||{};var notFound=_getDefaultValue(key,options),found=_find(key,options);return found!==undefined||found===notFound}function translate(key,options){options=options||{};if(!initialized){f.log("i18next not finished initialization. you might have called t function before loading resources finished.");return options.defaultValue||""}replacementCounter=0;return _translate.apply(null,arguments)}function _getDefaultValue(key,options){return options.defaultValue!==undefined?options.defaultValue:key}function _injectSprintfProcessor(){var values=[];for(var i=1;i<arguments.length;i++){values.push(arguments[i])}return{postProcess:"sprintf",sprintf:values}}function _translate(potentialKeys,options){if(options&&typeof options!=="object"){if(o.shortcutFunction==="sprintf"){options=_injectSprintfProcessor.apply(null,arguments)}else if(o.shortcutFunction==="defaultValue"){options={defaultValue:options}}}else{options=options||{}}if(typeof o.defaultVariables==="object"){options=f.extend({},o.defaultVariables,options)}if(potentialKeys===undefined||potentialKeys===null||potentialKeys==="")return"";if(typeof potentialKeys==="number"){potentialKeys=String(potentialKeys)}if(typeof potentialKeys==="string"){potentialKeys=[potentialKeys]}var key=potentialKeys[0];if(potentialKeys.length>1){for(var i=0;i<potentialKeys.length;i++){key=potentialKeys[i];if(exists(key,options)){break}}}var notFound=_getDefaultValue(key,options),found=_find(key,options),lngs=options.lng?f.toLanguages(options.lng,options.fallbackLng):languages,ns=options.ns||o.ns.defaultNs,parts;if(key.indexOf(o.nsseparator)>-1){parts=key.split(o.nsseparator);ns=parts[0];key=parts[1]}if(found===undefined&&o.sendMissing&&typeof o.missingKeyHandler==="function"){if(options.lng){o.missingKeyHandler(lngs[0],ns,key,notFound,lngs)}else{o.missingKeyHandler(o.lng,ns,key,notFound,lngs)}}var postProcessorsToApply;if(typeof o.postProcess==="string"&&o.postProcess!==""){postProcessorsToApply=[o.postProcess]}else if(typeof o.postProcess==="array"||typeof o.postProcess==="object"){postProcessorsToApply=o.postProcess}else{postProcessorsToApply=[]}if(typeof options.postProcess==="string"&&options.postProcess!==""){postProcessorsToApply=postProcessorsToApply.concat([options.postProcess])}else if(typeof options.postProcess==="array"||typeof options.postProcess==="object"){postProcessorsToApply=postProcessorsToApply.concat(options.postProcess)}if(found!==undefined&&postProcessorsToApply.length){postProcessorsToApply.forEach(function(postProcessor){if(postProcessors[postProcessor]){found=postProcessors[postProcessor](found,key,options)}})}var splitNotFound=notFound;if(notFound.indexOf(o.nsseparator)>-1){parts=notFound.split(o.nsseparator);splitNotFound=parts[1]}if(splitNotFound===key&&o.parseMissingKey){notFound=o.parseMissingKey(notFound)}if(found===undefined){notFound=applyReplacement(notFound,options);notFound=applyReuse(notFound,options);if(postProcessorsToApply.length){var val=_getDefaultValue(key,options);postProcessorsToApply.forEach(function(postProcessor){if(postProcessors[postProcessor]){found=postProcessors[postProcessor](val,key,options)}})}}return found!==undefined?found:notFound}function _find(key,options){options=options||{};var optionWithoutCount,translated,notFound=_getDefaultValue(key,options),lngs=languages;if(!resStore){return notFound}if(lngs[0].toLowerCase()==="cimode")return notFound;if(options.lngs)lngs=options.lngs;if(options.lng){lngs=f.toLanguages(options.lng,options.fallbackLng);if(!resStore[lngs[0]]){var oldAsync=o.getAsync;o.getAsync=false;i18n.sync.load(lngs,o,function(err,store){f.extend(resStore,store);o.getAsync=oldAsync})}}var ns=options.ns||o.ns.defaultNs;if(key.indexOf(o.nsseparator)>-1){var parts=key.split(o.nsseparator);ns=parts[0];key=parts[1]}if(hasContext(options)){optionWithoutCount=f.extend({},options);delete optionWithoutCount.context;optionWithoutCount.defaultValue=o.contextNotFound;var contextKey=ns+o.nsseparator+key+"_"+options.context;translated=translate(contextKey,optionWithoutCount);if(translated!=o.contextNotFound){return applyReplacement(translated,{context:options.context})}}if(needsPlural(options,lngs[0])){optionWithoutCount=f.extend({lngs:[lngs[0]]},options);delete optionWithoutCount.count;optionWithoutCount._origLng=optionWithoutCount._origLng||optionWithoutCount.lng||lngs[0];delete optionWithoutCount.lng;optionWithoutCount.defaultValue=o.pluralNotFound;var pluralKey;if(!pluralExtensions.needsPlural(lngs[0],options.count)){pluralKey=ns+o.nsseparator+key}else{pluralKey=ns+o.nsseparator+key+o.pluralSuffix;var pluralExtension=pluralExtensions.get(lngs[0],options.count);if(pluralExtension>=0){pluralKey=pluralKey+"_"+pluralExtension}else if(pluralExtension===1){pluralKey=ns+o.nsseparator+key}}translated=translate(pluralKey,optionWithoutCount);if(translated!=o.pluralNotFound){return applyReplacement(translated,{count:options.count,interpolationPrefix:options.interpolationPrefix,interpolationSuffix:options.interpolationSuffix})}else if(lngs.length>1){var clone=lngs.slice();clone.shift();options=f.extend(options,{lngs:clone});options._origLng=optionWithoutCount._origLng;delete options.lng;translated=translate(ns+o.nsseparator+key,options);if(translated!=o.pluralNotFound)return translated}else{optionWithoutCount.lng=optionWithoutCount._origLng;delete optionWithoutCount._origLng;translated=translate(ns+o.nsseparator+key,optionWithoutCount);return applyReplacement(translated,{count:options.count,interpolationPrefix:options.interpolationPrefix,interpolationSuffix:options.interpolationSuffix})}}if(needsIndefiniteArticle(options)){var optionsWithoutIndef=f.extend({},options);delete optionsWithoutIndef.indefinite_article;optionsWithoutIndef.defaultValue=o.indefiniteNotFound;var indefiniteKey=ns+o.nsseparator+key+(options.count&&!needsPlural(options,lngs[0])||!options.count?o.indefiniteSuffix:"");translated=translate(indefiniteKey,optionsWithoutIndef);if(translated!=o.indefiniteNotFound){return translated}}var found;var keys=key.split(o.keyseparator);for(var i=0,len=lngs.length;i<len;i++){if(found!==undefined)break;var l=lngs[i];var x=0;var value=resStore[l]&&resStore[l][ns];while(keys[x]){value=value&&value[keys[x]];x++}if(value!==undefined&&(!o.showKeyIfEmpty||value!=="")){var valueType=Object.prototype.toString.apply(value);if(typeof value==="string"){value=applyReplacement(value,options);value=applyReuse(value,options)}else if(valueType==="[object Array]"&&!o.returnObjectTrees&&!options.returnObjectTrees){value=value.join("\n");value=applyReplacement(value,options);value=applyReuse(value,options)}else if(value===null&&o.fallbackOnNull===true){value=undefined}else if(value!==null){if(!o.returnObjectTrees&&!options.returnObjectTrees){if(o.objectTreeKeyHandler&&typeof o.objectTreeKeyHandler=="function"){value=o.objectTreeKeyHandler(key,value,l,ns,options)}else{value="key '"+ns+":"+key+" ("+l+")' "+"returned an object instead of string.";f.log(value)}}else if(valueType!=="[object Number]"&&valueType!=="[object Function]"&&valueType!=="[object RegExp]"){var copy=valueType==="[object Array]"?[]:{};f.each(value,function(m){copy[m]=_translate(ns+o.nsseparator+key+o.keyseparator+m,options)});value=copy}}if(typeof value==="string"&&value.trim()===""&&o.fallbackOnEmpty===true)value=undefined;found=value}}if(found===undefined&&!options.isFallbackLookup&&(o.fallbackToDefaultNS===true||o.fallbackNS&&o.fallbackNS.length>0)){options.isFallbackLookup=true;if(o.fallbackNS.length){for(var y=0,lenY=o.fallbackNS.length;y<lenY;y++){found=_find(o.fallbackNS[y]+o.nsseparator+key,options);if(found||found===""&&o.fallbackOnEmpty===false){var foundValue=found.indexOf(o.nsseparator)>-1?found.split(o.nsseparator)[1]:found,notFoundValue=notFound.indexOf(o.nsseparator)>-1?notFound.split(o.nsseparator)[1]:notFound;if(foundValue!==notFoundValue)break}}}else{options.ns=o.ns.defaultNs;found=_find(key,options)}options.isFallbackLookup=false}return found}function detectLanguage(){var detectedLng;var whitelist=o.lngWhitelist||[];var userLngChoices=[];var qsParm=[];if(typeof window!=="undefined"){(function(){var query=window.location.search.substring(1);var params=query.split("&");for(var i=0;i<params.length;i++){var pos=params[i].indexOf("=");if(pos>0){var key=params[i].substring(0,pos);if(key==o.detectLngQS){userLngChoices.push(params[i].substring(pos+1))}}}})()}if(o.useCookie&&typeof document!=="undefined"){var c=f.cookie.read(o.cookieName);if(c)userLngChoices.push(c)}if(o.detectLngFromLocalStorage&&typeof window!=="undefined"&&window.localStorage){var lang=f.localStorage.getItem("i18next_lng");if(lang){userLngChoices.push(lang)}}if(typeof navigator!=="undefined"){if(navigator.languages){for(var i=0;i<navigator.languages.length;i++){userLngChoices.push(navigator.languages[i])}}if(navigator.userLanguage){userLngChoices.push(navigator.userLanguage)}if(navigator.language){userLngChoices.push(navigator.language)}}(function(){for(var i=0;i<userLngChoices.length;i++){var lng=userLngChoices[i];if(lng.indexOf("-")>-1){var parts=lng.split("-");lng=o.lowerCaseLng?parts[0].toLowerCase()+"-"+parts[1].toLowerCase():parts[0].toLowerCase()+"-"+parts[1].toUpperCase()}if(whitelist.length===0||whitelist.indexOf(lng)>-1){detectedLng=lng;break}}})();if(!detectedLng){detectedLng=o.fallbackLng[0]}return detectedLng}var _rules=[["ach","Acholi",[1,2],1],["af","Afrikaans",[1,2],2],["ak","Akan",[1,2],1],["am","Amharic",[1,2],1],["an","Aragonese",[1,2],2],["ar","Arabic",[0,1,2,3,11,100],5],["arn","Mapudungun",[1,2],1],["ast","Asturian",[1,2],2],["ay","Aymará",[1],3],["az","Azerbaijani",[1,2],2],["be","Belarusian",[1,2,5],4],["bg","Bulgarian",[1,2],2],["bn","Bengali",[1,2],2],["bo","Tibetan",[1],3],["br","Breton",[1,2],1],["bs","Bosnian",[1,2,5],4],["ca","Catalan",[1,2],2],["cgg","Chiga",[1],3],["cs","Czech",[1,2,5],6],["csb","Kashubian",[1,2,5],7],["cy","Welsh",[1,2,3,8],8],["da","Danish",[1,2],2],["de","German",[1,2],2],["dev","Development Fallback",[1,2],2],["dz","Dzongkha",[1],3],["el","Greek",[1,2],2],["en","English",[1,2],2],["eo","Esperanto",[1,2],2],["es","Spanish",[1,2],2],["es_ar","Argentinean Spanish",[1,2],2],["et","Estonian",[1,2],2],["eu","Basque",[1,2],2],["fa","Persian",[1],3],["fi","Finnish",[1,2],2],["fil","Filipino",[1,2],1],["fo","Faroese",[1,2],2],["fr","French",[1,2],9],["fur","Friulian",[1,2],2],["fy","Frisian",[1,2],2],["ga","Irish",[1,2,3,7,11],10],["gd","Scottish Gaelic",[1,2,3,20],11],["gl","Galician",[1,2],2],["gu","Gujarati",[1,2],2],["gun","Gun",[1,2],1],["ha","Hausa",[1,2],2],["he","Hebrew",[1,2],2],["hi","Hindi",[1,2],2],["hr","Croatian",[1,2,5],4],["hu","Hungarian",[1,2],2],["hy","Armenian",[1,2],2],["ia","Interlingua",[1,2],2],["id","Indonesian",[1],3],["is","Icelandic",[1,2],12],["it","Italian",[1,2],2],["ja","Japanese",[1],3],["jbo","Lojban",[1],3],["jv","Javanese",[0,1],13],["ka","Georgian",[1],3],["kk","Kazakh",[1],3],["km","Khmer",[1],3],["kn","Kannada",[1,2],2],["ko","Korean",[1],3],["ku","Kurdish",[1,2],2],["kw","Cornish",[1,2,3,4],14],["ky","Kyrgyz",[1],3],["lb","Letzeburgesch",[1,2],2],["ln","Lingala",[1,2],1],["lo","Lao",[1],3],["lt","Lithuanian",[1,2,10],15],["lv","Latvian",[1,2,0],16],["mai","Maithili",[1,2],2],["mfe","Mauritian Creole",[1,2],1],["mg","Malagasy",[1,2],1],["mi","Maori",[1,2],1],["mk","Macedonian",[1,2],17],["ml","Malayalam",[1,2],2],["mn","Mongolian",[1,2],2],["mnk","Mandinka",[0,1,2],18],["mr","Marathi",[1,2],2],["ms","Malay",[1],3],["mt","Maltese",[1,2,11,20],19],["nah","Nahuatl",[1,2],2],["nap","Neapolitan",[1,2],2],["nb","Norwegian Bokmal",[1,2],2],["ne","Nepali",[1,2],2],["nl","Dutch",[1,2],2],["nn","Norwegian Nynorsk",[1,2],2],["no","Norwegian",[1,2],2],["nso","Northern Sotho",[1,2],2],["oc","Occitan",[1,2],1],["or","Oriya",[2,1],2],["pa","Punjabi",[1,2],2],["pap","Papiamento",[1,2],2],["pl","Polish",[1,2,5],7],["pms","Piemontese",[1,2],2],["ps","Pashto",[1,2],2],["pt","Portuguese",[1,2],2],["pt_br","Brazilian Portuguese",[1,2],2],["rm","Romansh",[1,2],2],["ro","Romanian",[1,2,20],20],["ru","Russian",[1,2,5],4],["sah","Yakut",[1],3],["sco","Scots",[1,2],2],["se","Northern Sami",[1,2],2],["si","Sinhala",[1,2],2],["sk","Slovak",[1,2,5],6],["sl","Slovenian",[5,1,2,3],21],["so","Somali",[1,2],2],["son","Songhay",[1,2],2],["sq","Albanian",[1,2],2],["sr","Serbian",[1,2,5],4],["su","Sundanese",[1],3],["sv","Swedish",[1,2],2],["sw","Swahili",[1,2],2],["ta","Tamil",[1,2],2],["te","Telugu",[1,2],2],["tg","Tajik",[1,2],1],["th","Thai",[1],3],["ti","Tigrinya",[1,2],1],["tk","Turkmen",[1,2],2],["tr","Turkish",[1,2],1],["tt","Tatar",[1],3],["ug","Uyghur",[1],3],["uk","Ukrainian",[1,2,5],4],["ur","Urdu",[1,2],2],["uz","Uzbek",[1,2],1],["vi","Vietnamese",[1],3],["wa","Walloon",[1,2],1],["wo","Wolof",[1],3],["yo","Yoruba",[1,2],2],["zh","Chinese",[1],3]];
     9var _rulesPluralsTypes={1:function(n){return Number(n>1)},2:function(n){return Number(n!=1)},3:function(n){return 0},4:function(n){return Number(n%10==1&&n%100!=11?0:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?1:2)},5:function(n){return Number(n===0?0:n==1?1:n==2?2:n%100>=3&&n%100<=10?3:n%100>=11?4:5)},6:function(n){return Number(n==1?0:n>=2&&n<=4?1:2)},7:function(n){return Number(n==1?0:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?1:2)},8:function(n){return Number(n==1?0:n==2?1:n!=8&&n!=11?2:3)},9:function(n){return Number(n>=2)},10:function(n){return Number(n==1?0:n==2?1:n<7?2:n<11?3:4)},11:function(n){return Number(n==1||n==11?0:n==2||n==12?1:n>2&&n<20?2:3)},12:function(n){return Number(n%10!=1||n%100==11)},13:function(n){return Number(n!==0)},14:function(n){return Number(n==1?0:n==2?1:n==3?2:3)},15:function(n){return Number(n%10==1&&n%100!=11?0:n%10>=2&&(n%100<10||n%100>=20)?1:2)},16:function(n){return Number(n%10==1&&n%100!=11?0:n!==0?1:2)},17:function(n){return Number(n==1||n%10==1?0:1)},18:function(n){return Number(0?0:n==1?1:2)},19:function(n){return Number(n==1?0:n===0||n%100>1&&n%100<11?1:n%100>10&&n%100<20?2:3)},20:function(n){return Number(n==1?0:n===0||n%100>0&&n%100<20?1:2)},21:function(n){return Number(n%100==1?1:n%100==2?2:n%100==3||n%100==4?3:0)}};var pluralExtensions={rules:function(){var l,rules={};for(l=_rules.length;l--;){rules[_rules[l][0]]={name:_rules[l][1],numbers:_rules[l][2],plurals:_rulesPluralsTypes[_rules[l][3]]}}return rules}(),addRule:function(lng,obj){pluralExtensions.rules[lng]=obj},setCurrentLng:function(lng){if(!pluralExtensions.currentRule||pluralExtensions.currentRule.lng!==lng){var parts=lng.split("-");pluralExtensions.currentRule={lng:lng,rule:pluralExtensions.rules[parts[0]]}}},needsPlural:function(lng,count){var parts=lng.split("-");var ext;if(pluralExtensions.currentRule&&pluralExtensions.currentRule.lng===lng){ext=pluralExtensions.currentRule.rule}else{ext=pluralExtensions.rules[parts[f.getCountyIndexOfLng(lng)]]}if(ext&&ext.numbers.length<=1){return false}else{return this.get(lng,count)!==1}},get:function(lng,count){var parts=lng.split("-");function getResult(l,c){var ext;if(pluralExtensions.currentRule&&pluralExtensions.currentRule.lng===lng){ext=pluralExtensions.currentRule.rule}else{ext=pluralExtensions.rules[l]}if(ext){var i;if(ext.noAbs){i=ext.plurals(c)}else{i=ext.plurals(Math.abs(c))}var number=ext.numbers[i];if(ext.numbers.length===2&&ext.numbers[0]===1){if(number===2){number=-1}else if(number===1){number=1}}return number}else{return c===1?"1":"-1"}}return getResult(parts[f.getCountyIndexOfLng(lng)],count)}};var postProcessors={};var addPostProcessor=function(name,fc){postProcessors[name]=fc};var sprintf=function(){function get_type(variable){return Object.prototype.toString.call(variable).slice(8,-1).toLowerCase()}function str_repeat(input,multiplier){for(var output=[];multiplier>0;output[--multiplier]=input){}return output.join("")}var str_format=function(){if(!str_format.cache.hasOwnProperty(arguments[0])){str_format.cache[arguments[0]]=str_format.parse(arguments[0])}return str_format.format.call(null,str_format.cache[arguments[0]],arguments)};str_format.format=function(parse_tree,argv){var cursor=1,tree_length=parse_tree.length,node_type="",arg,output=[],i,k,match,pad,pad_character,pad_length;for(i=0;i<tree_length;i++){node_type=get_type(parse_tree[i]);if(node_type==="string"){output.push(parse_tree[i])}else if(node_type==="array"){match=parse_tree[i];if(match[2]){arg=argv[cursor];for(k=0;k<match[2].length;k++){if(!arg.hasOwnProperty(match[2][k])){throw sprintf('[sprintf] property "%s" does not exist',match[2][k])}arg=arg[match[2][k]]}}else if(match[1]){arg=argv[match[1]]}else{arg=argv[cursor++]}if(/[^s]/.test(match[8])&&get_type(arg)!="number"){throw sprintf("[sprintf] expecting number but found %s",get_type(arg))}switch(match[8]){case"b":arg=arg.toString(2);break;case"c":arg=String.fromCharCode(arg);break;case"d":arg=parseInt(arg,10);break;case"e":arg=match[7]?arg.toExponential(match[7]):arg.toExponential();break;case"f":arg=match[7]?parseFloat(arg).toFixed(match[7]):parseFloat(arg);break;case"o":arg=arg.toString(8);break;case"s":arg=(arg=String(arg))&&match[7]?arg.substring(0,match[7]):arg;break;case"u":arg=Math.abs(arg);break;case"x":arg=arg.toString(16);break;case"X":arg=arg.toString(16).toUpperCase();break}arg=/[def]/.test(match[8])&&match[3]&&arg>=0?"+"+arg:arg;pad_character=match[4]?match[4]=="0"?"0":match[4].charAt(1):" ";pad_length=match[6]-String(arg).length;pad=match[6]?str_repeat(pad_character,pad_length):"";output.push(match[5]?arg+pad:pad+arg)}}return output.join("")};str_format.cache={};str_format.parse=function(fmt){var _fmt=fmt,match=[],parse_tree=[],arg_names=0;while(_fmt){if((match=/^[^\x25]+/.exec(_fmt))!==null){parse_tree.push(match[0])}else if((match=/^\x25{2}/.exec(_fmt))!==null){parse_tree.push("%")}else if((match=/^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(_fmt))!==null){if(match[2]){arg_names|=1;var field_list=[],replacement_field=match[2],field_match=[];if((field_match=/^([a-z_][a-z_\d]*)/i.exec(replacement_field))!==null){field_list.push(field_match[1]);while((replacement_field=replacement_field.substring(field_match[0].length))!==""){if((field_match=/^\.([a-z_][a-z_\d]*)/i.exec(replacement_field))!==null){field_list.push(field_match[1])}else if((field_match=/^\[(\d+)\]/.exec(replacement_field))!==null){field_list.push(field_match[1])}else{throw"[sprintf] huh?"}}}else{throw"[sprintf] huh?"}match[2]=field_list}else{arg_names|=2}if(arg_names===3){throw"[sprintf] mixing positional and named placeholders is not (yet) supported"}parse_tree.push(match)}else{throw"[sprintf] huh?"}_fmt=_fmt.substring(match[0].length)}return parse_tree};return str_format}();var vsprintf=function(fmt,argv){argv.unshift(fmt);return sprintf.apply(null,argv)};addPostProcessor("sprintf",function(val,key,opts){if(!opts.sprintf)return val;if(Object.prototype.toString.apply(opts.sprintf)==="[object Array]"){return vsprintf(val,opts.sprintf)}else if(typeof opts.sprintf==="object"){return sprintf(val,opts.sprintf)}return val});i18n.init=init;i18n.isInitialized=isInitialized;i18n.setLng=setLng;i18n.preload=preload;i18n.addResourceBundle=addResourceBundle;i18n.hasResourceBundle=hasResourceBundle;i18n.getResourceBundle=getResourceBundle;i18n.addResource=addResource;i18n.addResources=addResources;i18n.removeResourceBundle=removeResourceBundle;i18n.loadNamespace=loadNamespace;i18n.loadNamespaces=loadNamespaces;i18n.setDefaultNamespace=setDefaultNamespace;i18n.t=translate;i18n.translate=translate;i18n.exists=exists;i18n.detectLanguage=f.detectLanguage;i18n.pluralExtensions=pluralExtensions;i18n.sync=sync;i18n.functions=f;i18n.lng=lng;i18n.addPostProcessor=addPostProcessor;i18n.applyReplacement=f.applyReplacement;i18n.options=o;i18n.noConflict=noConflict})(typeof exports==="undefined"?window:exports)},{}],moment:[function(require,module,exports){(function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?module.exports=factory():typeof define==="function"&&define.amd?define(factory):global.moment=factory()})(this,function(){"use strict";var hookCallback;function utils_hooks__hooks(){return hookCallback.apply(null,arguments)}function setHookCallback(callback){hookCallback=callback}function isArray(input){return Object.prototype.toString.call(input)==="[object Array]"}function isDate(input){return input instanceof Date||Object.prototype.toString.call(input)==="[object Date]"}function map(arr,fn){var res=[],i;for(i=0;i<arr.length;++i){res.push(fn(arr[i],i))}return res}function hasOwnProp(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function extend(a,b){for(var i in b){if(hasOwnProp(b,i)){a[i]=b[i]}}if(hasOwnProp(b,"toString")){a.toString=b.toString}if(hasOwnProp(b,"valueOf")){a.valueOf=b.valueOf}return a}function create_utc__createUTC(input,format,locale,strict){return createLocalOrUTC(input,format,locale,strict,true).utc()}function defaultParsingFlags(){return{empty:false,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:false,invalidMonth:null,invalidFormat:false,userInvalidated:false,iso:false}}function getParsingFlags(m){if(m._pf==null){m._pf=defaultParsingFlags()}return m._pf}function valid__isValid(m){if(m._isValid==null){var flags=getParsingFlags(m);m._isValid=!isNaN(m._d.getTime())&&flags.overflow<0&&!flags.empty&&!flags.invalidMonth&&!flags.nullInput&&!flags.invalidFormat&&!flags.userInvalidated;if(m._strict){m._isValid=m._isValid&&flags.charsLeftOver===0&&flags.unusedTokens.length===0&&flags.bigHour===undefined}}return m._isValid}function valid__createInvalid(flags){var m=create_utc__createUTC(NaN);if(flags!=null){extend(getParsingFlags(m),flags)}else{getParsingFlags(m).userInvalidated=true}return m}var momentProperties=utils_hooks__hooks.momentProperties=[];function copyConfig(to,from){var i,prop,val;if(typeof from._isAMomentObject!=="undefined"){to._isAMomentObject=from._isAMomentObject}if(typeof from._i!=="undefined"){to._i=from._i}if(typeof from._f!=="undefined"){to._f=from._f}if(typeof from._l!=="undefined"){to._l=from._l}if(typeof from._strict!=="undefined"){to._strict=from._strict}if(typeof from._tzm!=="undefined"){to._tzm=from._tzm}if(typeof from._isUTC!=="undefined"){to._isUTC=from._isUTC}if(typeof from._offset!=="undefined"){to._offset=from._offset}if(typeof from._pf!=="undefined"){to._pf=getParsingFlags(from)}if(typeof from._locale!=="undefined"){to._locale=from._locale}if(momentProperties.length>0){for(i in momentProperties){prop=momentProperties[i];val=from[prop];if(typeof val!=="undefined"){to[prop]=val}}}return to}var updateInProgress=false;function Moment(config){copyConfig(this,config);this._d=new Date(+config._d);if(updateInProgress===false){updateInProgress=true;utils_hooks__hooks.updateOffset(this);updateInProgress=false}}function isMoment(obj){return obj instanceof Moment||obj!=null&&obj._isAMomentObject!=null}function toInt(argumentForCoercion){var coercedNumber=+argumentForCoercion,value=0;if(coercedNumber!==0&&isFinite(coercedNumber)){if(coercedNumber>=0){value=Math.floor(coercedNumber)}else{value=Math.ceil(coercedNumber)}}return value}function compareArrays(array1,array2,dontConvert){var len=Math.min(array1.length,array2.length),lengthDiff=Math.abs(array1.length-array2.length),diffs=0,i;for(i=0;i<len;i++){if(dontConvert&&array1[i]!==array2[i]||!dontConvert&&toInt(array1[i])!==toInt(array2[i])){diffs++}}return diffs+lengthDiff}function Locale(){}var locales={};var globalLocale;function normalizeLocale(key){return key?key.toLowerCase().replace("_","-"):key}function chooseLocale(names){var i=0,j,next,locale,split;while(i<names.length){split=normalizeLocale(names[i]).split("-");j=split.length;next=normalizeLocale(names[i+1]);next=next?next.split("-"):null;while(j>0){locale=loadLocale(split.slice(0,j).join("-"));if(locale){return locale}if(next&&next.length>=j&&compareArrays(split,next,true)>=j-1){break}j--}i++}return null}function loadLocale(name){var oldLocale=null;if(!locales[name]&&typeof module!=="undefined"&&module&&module.exports){try{oldLocale=globalLocale._abbr;require("./locale/"+name);locale_locales__getSetGlobalLocale(oldLocale)}catch(e){}}return locales[name]}function locale_locales__getSetGlobalLocale(key,values){var data;if(key){if(typeof values==="undefined"){data=locale_locales__getLocale(key)}else{data=defineLocale(key,values)}if(data){globalLocale=data}}return globalLocale._abbr}function defineLocale(name,values){if(values!==null){values.abbr=name;if(!locales[name]){locales[name]=new Locale}locales[name].set(values);locale_locales__getSetGlobalLocale(name);return locales[name]}else{delete locales[name];return null}}function locale_locales__getLocale(key){var locale;if(key&&key._locale&&key._locale._abbr){key=key._locale._abbr}if(!key){return globalLocale}if(!isArray(key)){locale=loadLocale(key);if(locale){return locale}key=[key]}return chooseLocale(key)}var aliases={};function addUnitAlias(unit,shorthand){var lowerCase=unit.toLowerCase();aliases[lowerCase]=aliases[lowerCase+"s"]=aliases[shorthand]=unit}function normalizeUnits(units){return typeof units==="string"?aliases[units]||aliases[units.toLowerCase()]:undefined}function normalizeObjectUnits(inputObject){var normalizedInput={},normalizedProp,prop;for(prop in inputObject){if(hasOwnProp(inputObject,prop)){normalizedProp=normalizeUnits(prop);if(normalizedProp){normalizedInput[normalizedProp]=inputObject[prop]}}}return normalizedInput}function makeGetSet(unit,keepTime){return function(value){if(value!=null){get_set__set(this,unit,value);utils_hooks__hooks.updateOffset(this,keepTime);return this}else{return get_set__get(this,unit)}}}function get_set__get(mom,unit){return mom._d["get"+(mom._isUTC?"UTC":"")+unit]()}function get_set__set(mom,unit,value){return mom._d["set"+(mom._isUTC?"UTC":"")+unit](value)}function getSet(units,value){var unit;if(typeof units==="object"){for(unit in units){this.set(unit,units[unit])}}else{units=normalizeUnits(units);if(typeof this[units]==="function"){return this[units](value)}}return this}function zeroFill(number,targetLength,forceSign){var output=""+Math.abs(number),sign=number>=0;while(output.length<targetLength){output="0"+output}return(sign?forceSign?"+":"":"-")+output}var formattingTokens=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g;var localFormattingTokens=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g;var formatFunctions={};var formatTokenFunctions={};function addFormatToken(token,padded,ordinal,callback){var func=callback;if(typeof callback==="string"){func=function(){return this[callback]()}}if(token){formatTokenFunctions[token]=func}if(padded){formatTokenFunctions[padded[0]]=function(){return zeroFill(func.apply(this,arguments),padded[1],padded[2])}}if(ordinal){formatTokenFunctions[ordinal]=function(){return this.localeData().ordinal(func.apply(this,arguments),token)}}}function removeFormattingTokens(input){if(input.match(/\[[\s\S]/)){return input.replace(/^\[|\]$/g,"")}return input.replace(/\\/g,"")}function makeFormatFunction(format){var array=format.match(formattingTokens),i,length;for(i=0,length=array.length;i<length;i++){if(formatTokenFunctions[array[i]]){array[i]=formatTokenFunctions[array[i]]}else{array[i]=removeFormattingTokens(array[i])}}return function(mom){var output="";for(i=0;i<length;i++){output+=array[i]instanceof Function?array[i].call(mom,format):array[i]}return output}}function formatMoment(m,format){if(!m.isValid()){return m.localeData().invalidDate()}format=expandFormat(format,m.localeData());if(!formatFunctions[format]){formatFunctions[format]=makeFormatFunction(format)}return formatFunctions[format](m)}function expandFormat(format,locale){var i=5;function replaceLongDateFormatTokens(input){return locale.longDateFormat(input)||input}localFormattingTokens.lastIndex=0;while(i>=0&&localFormattingTokens.test(format)){format=format.replace(localFormattingTokens,replaceLongDateFormatTokens);localFormattingTokens.lastIndex=0;i-=1}return format}var match1=/\d/;var match2=/\d\d/;var match3=/\d{3}/;var match4=/\d{4}/;var match6=/[+-]?\d{6}/;var match1to2=/\d\d?/;var match1to3=/\d{1,3}/;var match1to4=/\d{1,4}/;var match1to6=/[+-]?\d{1,6}/;var matchUnsigned=/\d+/;var matchSigned=/[+-]?\d+/;var matchOffset=/Z|[+-]\d\d:?\d\d/gi;var matchTimestamp=/[+-]?\d+(\.\d{1,3})?/;var matchWord=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i;var regexes={};function addRegexToken(token,regex,strictRegex){regexes[token]=typeof regex==="function"?regex:function(isStrict){return isStrict&&strictRegex?strictRegex:regex}}function getParseRegexForToken(token,config){if(!hasOwnProp(regexes,token)){return new RegExp(unescapeFormat(token))}return regexes[token](config._strict,config._locale)}function unescapeFormat(s){return s.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(matched,p1,p2,p3,p4){return p1||p2||p3||p4}).replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var tokens={};function addParseToken(token,callback){var i,func=callback;if(typeof token==="string"){token=[token]}if(typeof callback==="number"){func=function(input,array){array[callback]=toInt(input)}}for(i=0;i<token.length;i++){tokens[token[i]]=func}}function addWeekParseToken(token,callback){addParseToken(token,function(input,array,config,token){config._w=config._w||{};callback(input,config._w,config,token)})}function addTimeToArrayFromToken(token,input,config){if(input!=null&&hasOwnProp(tokens,token)){tokens[token](input,config._a,config,token)}}var YEAR=0;var MONTH=1;var DATE=2;var HOUR=3;var MINUTE=4;var SECOND=5;var MILLISECOND=6;function daysInMonth(year,month){return new Date(Date.UTC(year,month+1,0)).getUTCDate()}addFormatToken("M",["MM",2],"Mo",function(){return this.month()+1});addFormatToken("MMM",0,0,function(format){return this.localeData().monthsShort(this,format)});addFormatToken("MMMM",0,0,function(format){return this.localeData().months(this,format)});addUnitAlias("month","M");addRegexToken("M",match1to2);addRegexToken("MM",match1to2,match2);addRegexToken("MMM",matchWord);addRegexToken("MMMM",matchWord);addParseToken(["M","MM"],function(input,array){array[MONTH]=toInt(input)-1});addParseToken(["MMM","MMMM"],function(input,array,config,token){var month=config._locale.monthsParse(input,token,config._strict);if(month!=null){array[MONTH]=month}else{getParsingFlags(config).invalidMonth=input}});var defaultLocaleMonths="January_February_March_April_May_June_July_August_September_October_November_December".split("_");function localeMonths(m){return this._months[m.month()]}var defaultLocaleMonthsShort="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function localeMonthsShort(m){return this._monthsShort[m.month()]}function localeMonthsParse(monthName,format,strict){var i,mom,regex;if(!this._monthsParse){this._monthsParse=[];this._longMonthsParse=[];this._shortMonthsParse=[]}for(i=0;i<12;i++){mom=create_utc__createUTC([2e3,i]);if(strict&&!this._longMonthsParse[i]){this._longMonthsParse[i]=new RegExp("^"+this.months(mom,"").replace(".","")+"$","i");this._shortMonthsParse[i]=new RegExp("^"+this.monthsShort(mom,"").replace(".","")+"$","i")}if(!strict&&!this._monthsParse[i]){regex="^"+this.months(mom,"")+"|^"+this.monthsShort(mom,"");this._monthsParse[i]=new RegExp(regex.replace(".",""),"i")}if(strict&&format==="MMMM"&&this._longMonthsParse[i].test(monthName)){return i}else if(strict&&format==="MMM"&&this._shortMonthsParse[i].test(monthName)){return i}else if(!strict&&this._monthsParse[i].test(monthName)){return i}}}function setMonth(mom,value){var dayOfMonth;if(typeof value==="string"){value=mom.localeData().monthsParse(value);if(typeof value!=="number"){return mom}}dayOfMonth=Math.min(mom.date(),daysInMonth(mom.year(),value));mom._d["set"+(mom._isUTC?"UTC":"")+"Month"](value,dayOfMonth);return mom}function getSetMonth(value){if(value!=null){setMonth(this,value);utils_hooks__hooks.updateOffset(this,true);return this}else{return get_set__get(this,"Month")}}function getDaysInMonth(){return daysInMonth(this.year(),this.month())}function checkOverflow(m){var overflow;var a=m._a;if(a&&getParsingFlags(m).overflow===-2){overflow=a[MONTH]<0||a[MONTH]>11?MONTH:a[DATE]<1||a[DATE]>daysInMonth(a[YEAR],a[MONTH])?DATE:a[HOUR]<0||a[HOUR]>24||a[HOUR]===24&&(a[MINUTE]!==0||a[SECOND]!==0||a[MILLISECOND]!==0)?HOUR:a[MINUTE]<0||a[MINUTE]>59?MINUTE:a[SECOND]<0||a[SECOND]>59?SECOND:a[MILLISECOND]<0||a[MILLISECOND]>999?MILLISECOND:-1;if(getParsingFlags(m)._overflowDayOfYear&&(overflow<YEAR||overflow>DATE)){overflow=DATE}getParsingFlags(m).overflow=overflow}return m}function warn(msg){if(utils_hooks__hooks.suppressDeprecationWarnings===false&&typeof console!=="undefined"&&console.warn){console.warn("Deprecation warning: "+msg)}}function deprecate(msg,fn){var firstTime=true,msgWithStack=msg+"\n"+(new Error).stack;return extend(function(){if(firstTime){warn(msgWithStack);firstTime=false}return fn.apply(this,arguments)},fn)}var deprecations={};function deprecateSimple(name,msg){if(!deprecations[name]){warn(msg);deprecations[name]=true}}utils_hooks__hooks.suppressDeprecationWarnings=false;var from_string__isoRegex=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/;var isoDates=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]];var isoTimes=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]];var aspNetJsonRegex=/^\/?Date\((\-?\d+)/i;function configFromISO(config){var i,l,string=config._i,match=from_string__isoRegex.exec(string);if(match){getParsingFlags(config).iso=true;for(i=0,l=isoDates.length;i<l;i++){if(isoDates[i][1].exec(string)){config._f=isoDates[i][0]+(match[6]||" ");break}}for(i=0,l=isoTimes.length;i<l;i++){if(isoTimes[i][1].exec(string)){config._f+=isoTimes[i][0];break}}if(string.match(matchOffset)){config._f+="Z"}configFromStringAndFormat(config)}else{config._isValid=false}}function configFromString(config){var matched=aspNetJsonRegex.exec(config._i);if(matched!==null){config._d=new Date(+matched[1]);return}configFromISO(config);if(config._isValid===false){delete config._isValid;utils_hooks__hooks.createFromInputFallback(config)}}utils_hooks__hooks.createFromInputFallback=deprecate("moment construction falls back to js Date. This is "+"discouraged and will be removed in upcoming major "+"release. Please refer to "+"https://github.com/moment/moment/issues/1407 for more info.",function(config){config._d=new Date(config._i+(config._useUTC?" UTC":""))});function createDate(y,m,d,h,M,s,ms){var date=new Date(y,m,d,h,M,s,ms);if(y<1970){date.setFullYear(y)}return date}function createUTCDate(y){var date=new Date(Date.UTC.apply(null,arguments));if(y<1970){date.setUTCFullYear(y)}return date}addFormatToken(0,["YY",2],0,function(){return this.year()%100});addFormatToken(0,["YYYY",4],0,"year");addFormatToken(0,["YYYYY",5],0,"year");addFormatToken(0,["YYYYYY",6,true],0,"year");addUnitAlias("year","y");addRegexToken("Y",matchSigned);addRegexToken("YY",match1to2,match2);addRegexToken("YYYY",match1to4,match4);addRegexToken("YYYYY",match1to6,match6);addRegexToken("YYYYYY",match1to6,match6);addParseToken(["YYYY","YYYYY","YYYYYY"],YEAR);addParseToken("YY",function(input,array){array[YEAR]=utils_hooks__hooks.parseTwoDigitYear(input)});function daysInYear(year){return isLeapYear(year)?366:365}function isLeapYear(year){return year%4===0&&year%100!==0||year%400===0}utils_hooks__hooks.parseTwoDigitYear=function(input){return toInt(input)+(toInt(input)>68?1900:2e3)};var getSetYear=makeGetSet("FullYear",false);function getIsLeapYear(){return isLeapYear(this.year())}addFormatToken("w",["ww",2],"wo","week");addFormatToken("W",["WW",2],"Wo","isoWeek");addUnitAlias("week","w");addUnitAlias("isoWeek","W");addRegexToken("w",match1to2);addRegexToken("ww",match1to2,match2);addRegexToken("W",match1to2);addRegexToken("WW",match1to2,match2);addWeekParseToken(["w","ww","W","WW"],function(input,week,config,token){week[token.substr(0,1)]=toInt(input)});function weekOfYear(mom,firstDayOfWeek,firstDayOfWeekOfYear){var end=firstDayOfWeekOfYear-firstDayOfWeek,daysToDayOfWeek=firstDayOfWeekOfYear-mom.day(),adjustedMoment;if(daysToDayOfWeek>end){daysToDayOfWeek-=7}if(daysToDayOfWeek<end-7){daysToDayOfWeek+=7}adjustedMoment=local__createLocal(mom).add(daysToDayOfWeek,"d");return{week:Math.ceil(adjustedMoment.dayOfYear()/7),year:adjustedMoment.year()}}function localeWeek(mom){return weekOfYear(mom,this._week.dow,this._week.doy).week}var defaultLocaleWeek={dow:0,doy:6};function localeFirstDayOfWeek(){return this._week.dow}function localeFirstDayOfYear(){return this._week.doy}function getSetWeek(input){var week=this.localeData().week(this);return input==null?week:this.add((input-week)*7,"d")}function getSetISOWeek(input){var week=weekOfYear(this,1,4).week;return input==null?week:this.add((input-week)*7,"d")}addFormatToken("DDD",["DDDD",3],"DDDo","dayOfYear");addUnitAlias("dayOfYear","DDD");addRegexToken("DDD",match1to3);addRegexToken("DDDD",match3);addParseToken(["DDD","DDDD"],function(input,array,config){config._dayOfYear=toInt(input)});function dayOfYearFromWeeks(year,week,weekday,firstDayOfWeekOfYear,firstDayOfWeek){var d=createUTCDate(year,0,1).getUTCDay();var daysToAdd;var dayOfYear;d=d===0?7:d;weekday=weekday!=null?weekday:firstDayOfWeek;daysToAdd=firstDayOfWeek-d+(d>firstDayOfWeekOfYear?7:0)-(d<firstDayOfWeek?7:0);dayOfYear=7*(week-1)+(weekday-firstDayOfWeek)+daysToAdd+1;return{year:dayOfYear>0?year:year-1,dayOfYear:dayOfYear>0?dayOfYear:daysInYear(year-1)+dayOfYear}}function getSetDayOfYear(input){var dayOfYear=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return input==null?dayOfYear:this.add(input-dayOfYear,"d")}function defaults(a,b,c){if(a!=null){return a}if(b!=null){return b}return c}function currentDateArray(config){var now=new Date;if(config._useUTC){return[now.getUTCFullYear(),now.getUTCMonth(),now.getUTCDate()]}return[now.getFullYear(),now.getMonth(),now.getDate()]}function configFromArray(config){var i,date,input=[],currentDate,yearToUse;if(config._d){return}currentDate=currentDateArray(config);if(config._w&&config._a[DATE]==null&&config._a[MONTH]==null){dayOfYearFromWeekInfo(config)}if(config._dayOfYear){yearToUse=defaults(config._a[YEAR],currentDate[YEAR]);if(config._dayOfYear>daysInYear(yearToUse)){getParsingFlags(config)._overflowDayOfYear=true}date=createUTCDate(yearToUse,0,config._dayOfYear);config._a[MONTH]=date.getUTCMonth();config._a[DATE]=date.getUTCDate()}for(i=0;i<3&&config._a[i]==null;++i){config._a[i]=input[i]=currentDate[i]}for(;i<7;i++){config._a[i]=input[i]=config._a[i]==null?i===2?1:0:config._a[i]}if(config._a[HOUR]===24&&config._a[MINUTE]===0&&config._a[SECOND]===0&&config._a[MILLISECOND]===0){config._nextDay=true;config._a[HOUR]=0}config._d=(config._useUTC?createUTCDate:createDate).apply(null,input);if(config._tzm!=null){config._d.setUTCMinutes(config._d.getUTCMinutes()-config._tzm)}if(config._nextDay){config._a[HOUR]=24}}function dayOfYearFromWeekInfo(config){var w,weekYear,week,weekday,dow,doy,temp;w=config._w;if(w.GG!=null||w.W!=null||w.E!=null){dow=1;doy=4;weekYear=defaults(w.GG,config._a[YEAR],weekOfYear(local__createLocal(),1,4).year);week=defaults(w.W,1);weekday=defaults(w.E,1)}else{dow=config._locale._week.dow;doy=config._locale._week.doy;weekYear=defaults(w.gg,config._a[YEAR],weekOfYear(local__createLocal(),dow,doy).year);week=defaults(w.w,1);if(w.d!=null){weekday=w.d;if(weekday<dow){++week}}else if(w.e!=null){weekday=w.e+dow}else{weekday=dow}}temp=dayOfYearFromWeeks(weekYear,week,weekday,doy,dow);config._a[YEAR]=temp.year;config._dayOfYear=temp.dayOfYear}utils_hooks__hooks.ISO_8601=function(){};function configFromStringAndFormat(config){if(config._f===utils_hooks__hooks.ISO_8601){configFromISO(config);return}config._a=[];getParsingFlags(config).empty=true;var string=""+config._i,i,parsedInput,tokens,token,skipped,stringLength=string.length,totalParsedInputLength=0;tokens=expandFormat(config._f,config._locale).match(formattingTokens)||[];for(i=0;i<tokens.length;i++){token=tokens[i];parsedInput=(string.match(getParseRegexForToken(token,config))||[])[0];if(parsedInput){skipped=string.substr(0,string.indexOf(parsedInput));if(skipped.length>0){getParsingFlags(config).unusedInput.push(skipped)}string=string.slice(string.indexOf(parsedInput)+parsedInput.length);totalParsedInputLength+=parsedInput.length}if(formatTokenFunctions[token]){if(parsedInput){getParsingFlags(config).empty=false}else{getParsingFlags(config).unusedTokens.push(token)}addTimeToArrayFromToken(token,parsedInput,config)}else if(config._strict&&!parsedInput){getParsingFlags(config).unusedTokens.push(token)}}getParsingFlags(config).charsLeftOver=stringLength-totalParsedInputLength;if(string.length>0){getParsingFlags(config).unusedInput.push(string)}if(getParsingFlags(config).bigHour===true&&config._a[HOUR]<=12&&config._a[HOUR]>0){getParsingFlags(config).bigHour=undefined}config._a[HOUR]=meridiemFixWrap(config._locale,config._a[HOUR],config._meridiem);configFromArray(config);checkOverflow(config)}function meridiemFixWrap(locale,hour,meridiem){var isPm;if(meridiem==null){return hour}if(locale.meridiemHour!=null){return locale.meridiemHour(hour,meridiem)}else if(locale.isPM!=null){isPm=locale.isPM(meridiem);if(isPm&&hour<12){hour+=12}if(!isPm&&hour===12){hour=0}return hour}else{return hour}}function configFromStringAndArray(config){var tempConfig,bestMoment,scoreToBeat,i,currentScore;if(config._f.length===0){getParsingFlags(config).invalidFormat=true;config._d=new Date(NaN);return}for(i=0;i<config._f.length;i++){currentScore=0;tempConfig=copyConfig({},config);if(config._useUTC!=null){tempConfig._useUTC=config._useUTC}tempConfig._f=config._f[i];configFromStringAndFormat(tempConfig);if(!valid__isValid(tempConfig)){continue}currentScore+=getParsingFlags(tempConfig).charsLeftOver;currentScore+=getParsingFlags(tempConfig).unusedTokens.length*10;getParsingFlags(tempConfig).score=currentScore;if(scoreToBeat==null||currentScore<scoreToBeat){scoreToBeat=currentScore;bestMoment=tempConfig}}extend(config,bestMoment||tempConfig)}function configFromObject(config){if(config._d){return}var i=normalizeObjectUnits(config._i);config._a=[i.year,i.month,i.day||i.date,i.hour,i.minute,i.second,i.millisecond];configFromArray(config)}function createFromConfig(config){var input=config._i,format=config._f,res;config._locale=config._locale||locale_locales__getLocale(config._l);if(input===null||format===undefined&&input===""){return valid__createInvalid({nullInput:true})}if(typeof input==="string"){config._i=input=config._locale.preparse(input)}if(isMoment(input)){return new Moment(checkOverflow(input))}else if(isArray(format)){configFromStringAndArray(config)}else if(format){configFromStringAndFormat(config)}else if(isDate(input)){config._d=input}else{configFromInput(config)}res=new Moment(checkOverflow(config));if(res._nextDay){res.add(1,"d");res._nextDay=undefined}return res}function configFromInput(config){var input=config._i;if(input===undefined){config._d=new Date}else if(isDate(input)){config._d=new Date(+input)}else if(typeof input==="string"){configFromString(config)}else if(isArray(input)){config._a=map(input.slice(0),function(obj){return parseInt(obj,10)});configFromArray(config)}else if(typeof input==="object"){configFromObject(config)}else if(typeof input==="number"){config._d=new Date(input)}else{utils_hooks__hooks.createFromInputFallback(config)}}function createLocalOrUTC(input,format,locale,strict,isUTC){var c={};if(typeof locale==="boolean"){strict=locale;locale=undefined}
     10// https://github.com/moment/moment/issues/1423
     11c._isAMomentObject=true;c._useUTC=c._isUTC=isUTC;c._l=locale;c._i=input;c._f=format;c._strict=strict;return createFromConfig(c)}function local__createLocal(input,format,locale,strict){return createLocalOrUTC(input,format,locale,strict,false)}var prototypeMin=deprecate("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var other=local__createLocal.apply(null,arguments);return other<this?this:other});var prototypeMax=deprecate("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var other=local__createLocal.apply(null,arguments);return other>this?this:other});function pickBy(fn,moments){var res,i;if(moments.length===1&&isArray(moments[0])){moments=moments[0]}if(!moments.length){return local__createLocal()}res=moments[0];for(i=1;i<moments.length;++i){if(moments[i][fn](res)){res=moments[i]}}return res}function min(){var args=[].slice.call(arguments,0);return pickBy("isBefore",args)}function max(){var args=[].slice.call(arguments,0);return pickBy("isAfter",args)}function Duration(duration){var normalizedInput=normalizeObjectUnits(duration),years=normalizedInput.year||0,quarters=normalizedInput.quarter||0,months=normalizedInput.month||0,weeks=normalizedInput.week||0,days=normalizedInput.day||0,hours=normalizedInput.hour||0,minutes=normalizedInput.minute||0,seconds=normalizedInput.second||0,milliseconds=normalizedInput.millisecond||0;this._milliseconds=+milliseconds+seconds*1e3+minutes*6e4+hours*36e5;this._days=+days+weeks*7;this._months=+months+quarters*3+years*12;this._data={};this._locale=locale_locales__getLocale();this._bubble()}function isDuration(obj){return obj instanceof Duration}function offset(token,separator){addFormatToken(token,0,0,function(){var offset=this.utcOffset();var sign="+";if(offset<0){offset=-offset;sign="-"}return sign+zeroFill(~~(offset/60),2)+separator+zeroFill(~~offset%60,2)})}offset("Z",":");offset("ZZ","");addRegexToken("Z",matchOffset);addRegexToken("ZZ",matchOffset);addParseToken(["Z","ZZ"],function(input,array,config){config._useUTC=true;config._tzm=offsetFromString(input)});var chunkOffset=/([\+\-]|\d\d)/gi;function offsetFromString(string){var matches=(string||"").match(matchOffset)||[];var chunk=matches[matches.length-1]||[];var parts=(chunk+"").match(chunkOffset)||["-",0,0];var minutes=+(parts[1]*60)+toInt(parts[2]);return parts[0]==="+"?minutes:-minutes}function cloneWithOffset(input,model){var res,diff;if(model._isUTC){res=model.clone();diff=(isMoment(input)||isDate(input)?+input:+local__createLocal(input))-+res;res._d.setTime(+res._d+diff);utils_hooks__hooks.updateOffset(res,false);return res}else{return local__createLocal(input).local()}return model._isUTC?local__createLocal(input).zone(model._offset||0):local__createLocal(input).local()}function getDateOffset(m){
     12// https://github.com/moment/moment/pull/1871
     13return-Math.round(m._d.getTimezoneOffset()/15)*15}utils_hooks__hooks.updateOffset=function(){};function getSetOffset(input,keepLocalTime){var offset=this._offset||0,localAdjust;if(input!=null){if(typeof input==="string"){input=offsetFromString(input)}if(Math.abs(input)<16){input=input*60}if(!this._isUTC&&keepLocalTime){localAdjust=getDateOffset(this)}this._offset=input;this._isUTC=true;if(localAdjust!=null){this.add(localAdjust,"m")}if(offset!==input){if(!keepLocalTime||this._changeInProgress){add_subtract__addSubtract(this,create__createDuration(input-offset,"m"),1,false)}else if(!this._changeInProgress){this._changeInProgress=true;utils_hooks__hooks.updateOffset(this,true);this._changeInProgress=null}}return this}else{return this._isUTC?offset:getDateOffset(this)}}function getSetZone(input,keepLocalTime){if(input!=null){if(typeof input!=="string"){input=-input}this.utcOffset(input,keepLocalTime);return this}else{return-this.utcOffset()}}function setOffsetToUTC(keepLocalTime){return this.utcOffset(0,keepLocalTime)}function setOffsetToLocal(keepLocalTime){if(this._isUTC){this.utcOffset(0,keepLocalTime);this._isUTC=false;if(keepLocalTime){this.subtract(getDateOffset(this),"m")}}return this}function setOffsetToParsedOffset(){if(this._tzm){this.utcOffset(this._tzm)}else if(typeof this._i==="string"){this.utcOffset(offsetFromString(this._i))}return this}function hasAlignedHourOffset(input){if(!input){input=0}else{input=local__createLocal(input).utcOffset()}return(this.utcOffset()-input)%60===0}function isDaylightSavingTime(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function isDaylightSavingTimeShifted(){if(this._a){var other=this._isUTC?create_utc__createUTC(this._a):local__createLocal(this._a);return this.isValid()&&compareArrays(this._a,other.toArray())>0}return false}function isLocal(){return!this._isUTC}function isUtcOffset(){return this._isUTC}function isUtc(){return this._isUTC&&this._offset===0}var aspNetRegex=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/;var create__isoRegex=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;function create__createDuration(input,key){var duration=input,match=null,sign,ret,diffRes;if(isDuration(input)){duration={ms:input._milliseconds,d:input._days,M:input._months}}else if(typeof input==="number"){duration={};if(key){duration[key]=input}else{duration.milliseconds=input}}else if(!!(match=aspNetRegex.exec(input))){sign=match[1]==="-"?-1:1;duration={y:0,d:toInt(match[DATE])*sign,h:toInt(match[HOUR])*sign,m:toInt(match[MINUTE])*sign,s:toInt(match[SECOND])*sign,ms:toInt(match[MILLISECOND])*sign}}else if(!!(match=create__isoRegex.exec(input))){sign=match[1]==="-"?-1:1;duration={y:parseIso(match[2],sign),M:parseIso(match[3],sign),d:parseIso(match[4],sign),h:parseIso(match[5],sign),m:parseIso(match[6],sign),s:parseIso(match[7],sign),w:parseIso(match[8],sign)}}else if(duration==null){duration={}}else if(typeof duration==="object"&&("from"in duration||"to"in duration)){diffRes=momentsDifference(local__createLocal(duration.from),local__createLocal(duration.to));duration={};duration.ms=diffRes.milliseconds;duration.M=diffRes.months}ret=new Duration(duration);if(isDuration(input)&&hasOwnProp(input,"_locale")){ret._locale=input._locale}return ret}create__createDuration.fn=Duration.prototype;function parseIso(inp,sign){var res=inp&&parseFloat(inp.replace(",","."));return(isNaN(res)?0:res)*sign}function positiveMomentsDifference(base,other){var res={milliseconds:0,months:0};res.months=other.month()-base.month()+(other.year()-base.year())*12;if(base.clone().add(res.months,"M").isAfter(other)){--res.months}res.milliseconds=+other-+base.clone().add(res.months,"M");return res}function momentsDifference(base,other){var res;other=cloneWithOffset(other,base);if(base.isBefore(other)){res=positiveMomentsDifference(base,other)}else{res=positiveMomentsDifference(other,base);res.milliseconds=-res.milliseconds;res.months=-res.months}return res}function createAdder(direction,name){return function(val,period){var dur,tmp;if(period!==null&&!isNaN(+period)){deprecateSimple(name,"moment()."+name+"(period, number) is deprecated. Please use moment()."+name+"(number, period).");tmp=val;val=period;period=tmp}val=typeof val==="string"?+val:val;dur=create__createDuration(val,period);add_subtract__addSubtract(this,dur,direction);return this}}function add_subtract__addSubtract(mom,duration,isAdding,updateOffset){var milliseconds=duration._milliseconds,days=duration._days,months=duration._months;updateOffset=updateOffset==null?true:updateOffset;if(milliseconds){mom._d.setTime(+mom._d+milliseconds*isAdding)}if(days){get_set__set(mom,"Date",get_set__get(mom,"Date")+days*isAdding)}if(months){setMonth(mom,get_set__get(mom,"Month")+months*isAdding)}if(updateOffset){utils_hooks__hooks.updateOffset(mom,days||months)}}var add_subtract__add=createAdder(1,"add");var add_subtract__subtract=createAdder(-1,"subtract");function moment_calendar__calendar(time){var now=time||local__createLocal(),sod=cloneWithOffset(now,this).startOf("day"),diff=this.diff(sod,"days",true),format=diff<-6?"sameElse":diff<-1?"lastWeek":diff<0?"lastDay":diff<1?"sameDay":diff<2?"nextDay":diff<7?"nextWeek":"sameElse";return this.format(this.localeData().calendar(format,this,local__createLocal(now)))}function clone(){return new Moment(this)}function isAfter(input,units){var inputMs;units=normalizeUnits(typeof units!=="undefined"?units:"millisecond");if(units==="millisecond"){input=isMoment(input)?input:local__createLocal(input);return+this>+input}else{inputMs=isMoment(input)?+input:+local__createLocal(input);return inputMs<+this.clone().startOf(units)}}function isBefore(input,units){var inputMs;units=normalizeUnits(typeof units!=="undefined"?units:"millisecond");if(units==="millisecond"){input=isMoment(input)?input:local__createLocal(input);return+this<+input}else{inputMs=isMoment(input)?+input:+local__createLocal(input);return+this.clone().endOf(units)<inputMs}}function isBetween(from,to,units){return this.isAfter(from,units)&&this.isBefore(to,units)}function isSame(input,units){var inputMs;units=normalizeUnits(units||"millisecond");if(units==="millisecond"){input=isMoment(input)?input:local__createLocal(input);return+this===+input}else{inputMs=+local__createLocal(input);return+this.clone().startOf(units)<=inputMs&&inputMs<=+this.clone().endOf(units)}}function absFloor(number){if(number<0){return Math.ceil(number)}else{return Math.floor(number)}}function diff(input,units,asFloat){var that=cloneWithOffset(input,this),zoneDelta=(that.utcOffset()-this.utcOffset())*6e4,delta,output;units=normalizeUnits(units);if(units==="year"||units==="month"||units==="quarter"){output=monthDiff(this,that);if(units==="quarter"){output=output/3}else if(units==="year"){output=output/12}}else{delta=this-that;output=units==="second"?delta/1e3:units==="minute"?delta/6e4:units==="hour"?delta/36e5:units==="day"?(delta-zoneDelta)/864e5:units==="week"?(delta-zoneDelta)/6048e5:delta}return asFloat?output:absFloor(output)}function monthDiff(a,b){var wholeMonthDiff=(b.year()-a.year())*12+(b.month()-a.month()),anchor=a.clone().add(wholeMonthDiff,"months"),anchor2,adjust;if(b-anchor<0){anchor2=a.clone().add(wholeMonthDiff-1,"months");adjust=(b-anchor)/(anchor-anchor2)}else{anchor2=a.clone().add(wholeMonthDiff+1,"months");adjust=(b-anchor)/(anchor2-anchor)}return-(wholeMonthDiff+adjust)}utils_hooks__hooks.defaultFormat="YYYY-MM-DDTHH:mm:ssZ";function toString(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function moment_format__toISOString(){var m=this.clone().utc();if(0<m.year()&&m.year()<=9999){if("function"===typeof Date.prototype.toISOString){return this.toDate().toISOString()}else{return formatMoment(m,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}}else{return formatMoment(m,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}}function format(inputString){var output=formatMoment(this,inputString||utils_hooks__hooks.defaultFormat);return this.localeData().postformat(output)}function from(time,withoutSuffix){if(!this.isValid()){return this.localeData().invalidDate()}return create__createDuration({to:this,from:time}).locale(this.locale()).humanize(!withoutSuffix)}function fromNow(withoutSuffix){return this.from(local__createLocal(),withoutSuffix)}function to(time,withoutSuffix){if(!this.isValid()){return this.localeData().invalidDate()}return create__createDuration({from:this,to:time}).locale(this.locale()).humanize(!withoutSuffix)}function toNow(withoutSuffix){return this.to(local__createLocal(),withoutSuffix)}function locale(key){var newLocaleData;if(key===undefined){return this._locale._abbr}else{newLocaleData=locale_locales__getLocale(key);if(newLocaleData!=null){this._locale=newLocaleData}return this}}var lang=deprecate("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(key){if(key===undefined){return this.localeData()}else{return this.locale(key)}});function localeData(){return this._locale}function startOf(units){units=normalizeUnits(units);switch(units){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}if(units==="week"){this.weekday(0)}if(units==="isoWeek"){this.isoWeekday(1)}if(units==="quarter"){this.month(Math.floor(this.month()/3)*3)}return this}function endOf(units){units=normalizeUnits(units);if(units===undefined||units==="millisecond"){return this}return this.startOf(units).add(1,units==="isoWeek"?"week":units).subtract(1,"ms")}function to_type__valueOf(){return+this._d-(this._offset||0)*6e4}function unix(){return Math.floor(+this/1e3)}function toDate(){return this._offset?new Date(+this):this._d}function toArray(){var m=this;return[m.year(),m.month(),m.date(),m.hour(),m.minute(),m.second(),m.millisecond()]}function moment_valid__isValid(){return valid__isValid(this)}function parsingFlags(){return extend({},getParsingFlags(this))}function invalidAt(){return getParsingFlags(this).overflow}addFormatToken(0,["gg",2],0,function(){return this.weekYear()%100});addFormatToken(0,["GG",2],0,function(){return this.isoWeekYear()%100});function addWeekYearFormatToken(token,getter){addFormatToken(0,[token,token.length],0,getter)}addWeekYearFormatToken("gggg","weekYear");addWeekYearFormatToken("ggggg","weekYear");addWeekYearFormatToken("GGGG","isoWeekYear");addWeekYearFormatToken("GGGGG","isoWeekYear");addUnitAlias("weekYear","gg");addUnitAlias("isoWeekYear","GG");addRegexToken("G",matchSigned);addRegexToken("g",matchSigned);addRegexToken("GG",match1to2,match2);addRegexToken("gg",match1to2,match2);addRegexToken("GGGG",match1to4,match4);addRegexToken("gggg",match1to4,match4);addRegexToken("GGGGG",match1to6,match6);addRegexToken("ggggg",match1to6,match6);addWeekParseToken(["gggg","ggggg","GGGG","GGGGG"],function(input,week,config,token){week[token.substr(0,2)]=toInt(input)});addWeekParseToken(["gg","GG"],function(input,week,config,token){week[token]=utils_hooks__hooks.parseTwoDigitYear(input)});function weeksInYear(year,dow,doy){return weekOfYear(local__createLocal([year,11,31+dow-doy]),dow,doy).week}function getSetWeekYear(input){var year=weekOfYear(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return input==null?year:this.add(input-year,"y")}function getSetISOWeekYear(input){var year=weekOfYear(this,1,4).year;return input==null?year:this.add(input-year,"y")}function getISOWeeksInYear(){return weeksInYear(this.year(),1,4)}function getWeeksInYear(){var weekInfo=this.localeData()._week;return weeksInYear(this.year(),weekInfo.dow,weekInfo.doy)}addFormatToken("Q",0,0,"quarter");addUnitAlias("quarter","Q");addRegexToken("Q",match1);addParseToken("Q",function(input,array){array[MONTH]=(toInt(input)-1)*3});function getSetQuarter(input){return input==null?Math.ceil((this.month()+1)/3):this.month((input-1)*3+this.month()%3)}addFormatToken("D",["DD",2],"Do","date");addUnitAlias("date","D");addRegexToken("D",match1to2);addRegexToken("DD",match1to2,match2);addRegexToken("Do",function(isStrict,locale){return isStrict?locale._ordinalParse:locale._ordinalParseLenient});addParseToken(["D","DD"],DATE);addParseToken("Do",function(input,array){array[DATE]=toInt(input.match(match1to2)[0],10)});var getSetDayOfMonth=makeGetSet("Date",true);addFormatToken("d",0,"do","day");addFormatToken("dd",0,0,function(format){return this.localeData().weekdaysMin(this,format)});addFormatToken("ddd",0,0,function(format){return this.localeData().weekdaysShort(this,format)});addFormatToken("dddd",0,0,function(format){return this.localeData().weekdays(this,format)});addFormatToken("e",0,0,"weekday");addFormatToken("E",0,0,"isoWeekday");addUnitAlias("day","d");addUnitAlias("weekday","e");addUnitAlias("isoWeekday","E");addRegexToken("d",match1to2);addRegexToken("e",match1to2);addRegexToken("E",match1to2);addRegexToken("dd",matchWord);addRegexToken("ddd",matchWord);addRegexToken("dddd",matchWord);addWeekParseToken(["dd","ddd","dddd"],function(input,week,config){var weekday=config._locale.weekdaysParse(input);if(weekday!=null){week.d=weekday}else{getParsingFlags(config).invalidWeekday=input}});addWeekParseToken(["d","e","E"],function(input,week,config,token){week[token]=toInt(input)});function parseWeekday(input,locale){if(typeof input==="string"){if(!isNaN(input)){input=parseInt(input,10)}else{input=locale.weekdaysParse(input);if(typeof input!=="number"){return null}}}return input}var defaultLocaleWeekdays="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_");function localeWeekdays(m){return this._weekdays[m.day()]}var defaultLocaleWeekdaysShort="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");function localeWeekdaysShort(m){return this._weekdaysShort[m.day()]}var defaultLocaleWeekdaysMin="Su_Mo_Tu_We_Th_Fr_Sa".split("_");function localeWeekdaysMin(m){return this._weekdaysMin[m.day()]}function localeWeekdaysParse(weekdayName){var i,mom,regex;if(!this._weekdaysParse){this._weekdaysParse=[]}for(i=0;i<7;i++){if(!this._weekdaysParse[i]){mom=local__createLocal([2e3,1]).day(i);regex="^"+this.weekdays(mom,"")+"|^"+this.weekdaysShort(mom,"")+"|^"+this.weekdaysMin(mom,"");this._weekdaysParse[i]=new RegExp(regex.replace(".",""),"i")}if(this._weekdaysParse[i].test(weekdayName)){return i}}}function getSetDayOfWeek(input){var day=this._isUTC?this._d.getUTCDay():this._d.getDay();if(input!=null){input=parseWeekday(input,this.localeData());return this.add(input-day,"d")}else{return day}}function getSetLocaleDayOfWeek(input){var weekday=(this.day()+7-this.localeData()._week.dow)%7;return input==null?weekday:this.add(input-weekday,"d")}function getSetISODayOfWeek(input){return input==null?this.day()||7:this.day(this.day()%7?input:input-7)}addFormatToken("H",["HH",2],0,"hour");addFormatToken("h",["hh",2],0,function(){return this.hours()%12||12});function meridiem(token,lowercase){addFormatToken(token,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),lowercase)})}meridiem("a",true);meridiem("A",false);addUnitAlias("hour","h");function matchMeridiem(isStrict,locale){return locale._meridiemParse}addRegexToken("a",matchMeridiem);addRegexToken("A",matchMeridiem);addRegexToken("H",match1to2);addRegexToken("h",match1to2);addRegexToken("HH",match1to2,match2);addRegexToken("hh",match1to2,match2);addParseToken(["H","HH"],HOUR);addParseToken(["a","A"],function(input,array,config){config._isPm=config._locale.isPM(input);config._meridiem=input});addParseToken(["h","hh"],function(input,array,config){array[HOUR]=toInt(input);getParsingFlags(config).bigHour=true});function localeIsPM(input){return(input+"").toLowerCase().charAt(0)==="p"}var defaultLocaleMeridiemParse=/[ap]\.?m?\.?/i;function localeMeridiem(hours,minutes,isLower){if(hours>11){return isLower?"pm":"PM"}else{return isLower?"am":"AM"}}var getSetHour=makeGetSet("Hours",true);addFormatToken("m",["mm",2],0,"minute");addUnitAlias("minute","m");addRegexToken("m",match1to2);addRegexToken("mm",match1to2,match2);addParseToken(["m","mm"],MINUTE);var getSetMinute=makeGetSet("Minutes",false);addFormatToken("s",["ss",2],0,"second");addUnitAlias("second","s");addRegexToken("s",match1to2);addRegexToken("ss",match1to2,match2);addParseToken(["s","ss"],SECOND);var getSetSecond=makeGetSet("Seconds",false);addFormatToken("S",0,0,function(){return~~(this.millisecond()/100)});addFormatToken(0,["SS",2],0,function(){return~~(this.millisecond()/10)});function millisecond__milliseconds(token){addFormatToken(0,[token,3],0,"millisecond")}millisecond__milliseconds("SSS");millisecond__milliseconds("SSSS");addUnitAlias("millisecond","ms");addRegexToken("S",match1to3,match1);addRegexToken("SS",match1to3,match2);addRegexToken("SSS",match1to3,match3);addRegexToken("SSSS",matchUnsigned);addParseToken(["S","SS","SSS","SSSS"],function(input,array){array[MILLISECOND]=toInt(("0."+input)*1e3)});var getSetMillisecond=makeGetSet("Milliseconds",false);addFormatToken("z",0,0,"zoneAbbr");addFormatToken("zz",0,0,"zoneName");function getZoneAbbr(){return this._isUTC?"UTC":""}function getZoneName(){return this._isUTC?"Coordinated Universal Time":""}var momentPrototype__proto=Moment.prototype;momentPrototype__proto.add=add_subtract__add;momentPrototype__proto.calendar=moment_calendar__calendar;momentPrototype__proto.clone=clone;momentPrototype__proto.diff=diff;momentPrototype__proto.endOf=endOf;momentPrototype__proto.format=format;momentPrototype__proto.from=from;momentPrototype__proto.fromNow=fromNow;momentPrototype__proto.to=to;momentPrototype__proto.toNow=toNow;momentPrototype__proto.get=getSet;momentPrototype__proto.invalidAt=invalidAt;momentPrototype__proto.isAfter=isAfter;momentPrototype__proto.isBefore=isBefore;momentPrototype__proto.isBetween=isBetween;momentPrototype__proto.isSame=isSame;momentPrototype__proto.isValid=moment_valid__isValid;momentPrototype__proto.lang=lang;momentPrototype__proto.locale=locale;momentPrototype__proto.localeData=localeData;momentPrototype__proto.max=prototypeMax;momentPrototype__proto.min=prototypeMin;momentPrototype__proto.parsingFlags=parsingFlags;momentPrototype__proto.set=getSet;momentPrototype__proto.startOf=startOf;momentPrototype__proto.subtract=add_subtract__subtract;momentPrototype__proto.toArray=toArray;momentPrototype__proto.toDate=toDate;momentPrototype__proto.toISOString=moment_format__toISOString;momentPrototype__proto.toJSON=moment_format__toISOString;momentPrototype__proto.toString=toString;momentPrototype__proto.unix=unix;momentPrototype__proto.valueOf=to_type__valueOf;momentPrototype__proto.year=getSetYear;momentPrototype__proto.isLeapYear=getIsLeapYear;momentPrototype__proto.weekYear=getSetWeekYear;momentPrototype__proto.isoWeekYear=getSetISOWeekYear;momentPrototype__proto.quarter=momentPrototype__proto.quarters=getSetQuarter;momentPrototype__proto.month=getSetMonth;momentPrototype__proto.daysInMonth=getDaysInMonth;momentPrototype__proto.week=momentPrototype__proto.weeks=getSetWeek;momentPrototype__proto.isoWeek=momentPrototype__proto.isoWeeks=getSetISOWeek;momentPrototype__proto.weeksInYear=getWeeksInYear;momentPrototype__proto.isoWeeksInYear=getISOWeeksInYear;momentPrototype__proto.date=getSetDayOfMonth;momentPrototype__proto.day=momentPrototype__proto.days=getSetDayOfWeek;momentPrototype__proto.weekday=getSetLocaleDayOfWeek;momentPrototype__proto.isoWeekday=getSetISODayOfWeek;momentPrototype__proto.dayOfYear=getSetDayOfYear;momentPrototype__proto.hour=momentPrototype__proto.hours=getSetHour;momentPrototype__proto.minute=momentPrototype__proto.minutes=getSetMinute;momentPrototype__proto.second=momentPrototype__proto.seconds=getSetSecond;momentPrototype__proto.millisecond=momentPrototype__proto.milliseconds=getSetMillisecond;momentPrototype__proto.utcOffset=getSetOffset;momentPrototype__proto.utc=setOffsetToUTC;momentPrototype__proto.local=setOffsetToLocal;momentPrototype__proto.parseZone=setOffsetToParsedOffset;momentPrototype__proto.hasAlignedHourOffset=hasAlignedHourOffset;momentPrototype__proto.isDST=isDaylightSavingTime;momentPrototype__proto.isDSTShifted=isDaylightSavingTimeShifted;momentPrototype__proto.isLocal=isLocal;momentPrototype__proto.isUtcOffset=isUtcOffset;momentPrototype__proto.isUtc=isUtc;momentPrototype__proto.isUTC=isUtc;momentPrototype__proto.zoneAbbr=getZoneAbbr;momentPrototype__proto.zoneName=getZoneName;momentPrototype__proto.dates=deprecate("dates accessor is deprecated. Use date instead.",getSetDayOfMonth);momentPrototype__proto.months=deprecate("months accessor is deprecated. Use month instead",getSetMonth);momentPrototype__proto.years=deprecate("years accessor is deprecated. Use year instead",getSetYear);momentPrototype__proto.zone=deprecate("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",getSetZone);var momentPrototype=momentPrototype__proto;function moment__createUnix(input){return local__createLocal(input*1e3)}function moment__createInZone(){return local__createLocal.apply(null,arguments).parseZone()}var defaultCalendar={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"};function locale_calendar__calendar(key,mom,now){var output=this._calendar[key];return typeof output==="function"?output.call(mom,now):output}var defaultLongDateFormat={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"};function longDateFormat(key){var output=this._longDateFormat[key];if(!output&&this._longDateFormat[key.toUpperCase()]){output=this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(val){return val.slice(1)});this._longDateFormat[key]=output}return output}var defaultInvalidDate="Invalid date";function invalidDate(){return this._invalidDate}var defaultOrdinal="%d";var defaultOrdinalParse=/\d{1,2}/;function ordinal(number){return this._ordinal.replace("%d",number)}function preParsePostFormat(string){return string}var defaultRelativeTime={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function relative__relativeTime(number,withoutSuffix,string,isFuture){var output=this._relativeTime[string];return typeof output==="function"?output(number,withoutSuffix,string,isFuture):output.replace(/%d/i,number)}function pastFuture(diff,output){var format=this._relativeTime[diff>0?"future":"past"];return typeof format==="function"?format(output):format.replace(/%s/i,output)}function locale_set__set(config){var prop,i;for(i in config){prop=config[i];if(typeof prop==="function"){this[i]=prop}else{this["_"+i]=prop}}this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}var prototype__proto=Locale.prototype;prototype__proto._calendar=defaultCalendar;prototype__proto.calendar=locale_calendar__calendar;prototype__proto._longDateFormat=defaultLongDateFormat;prototype__proto.longDateFormat=longDateFormat;prototype__proto._invalidDate=defaultInvalidDate;prototype__proto.invalidDate=invalidDate;prototype__proto._ordinal=defaultOrdinal;prototype__proto.ordinal=ordinal;prototype__proto._ordinalParse=defaultOrdinalParse;prototype__proto.preparse=preParsePostFormat;prototype__proto.postformat=preParsePostFormat;prototype__proto._relativeTime=defaultRelativeTime;prototype__proto.relativeTime=relative__relativeTime;prototype__proto.pastFuture=pastFuture;prototype__proto.set=locale_set__set;prototype__proto.months=localeMonths;prototype__proto._months=defaultLocaleMonths;prototype__proto.monthsShort=localeMonthsShort;prototype__proto._monthsShort=defaultLocaleMonthsShort;prototype__proto.monthsParse=localeMonthsParse;prototype__proto.week=localeWeek;prototype__proto._week=defaultLocaleWeek;prototype__proto.firstDayOfYear=localeFirstDayOfYear;prototype__proto.firstDayOfWeek=localeFirstDayOfWeek;prototype__proto.weekdays=localeWeekdays;prototype__proto._weekdays=defaultLocaleWeekdays;prototype__proto.weekdaysMin=localeWeekdaysMin;prototype__proto._weekdaysMin=defaultLocaleWeekdaysMin;prototype__proto.weekdaysShort=localeWeekdaysShort;prototype__proto._weekdaysShort=defaultLocaleWeekdaysShort;prototype__proto.weekdaysParse=localeWeekdaysParse;prototype__proto.isPM=localeIsPM;prototype__proto._meridiemParse=defaultLocaleMeridiemParse;prototype__proto.meridiem=localeMeridiem;function lists__get(format,index,field,setter){var locale=locale_locales__getLocale();var utc=create_utc__createUTC().set(setter,index);return locale[field](utc,format)}function list(format,index,field,count,setter){if(typeof format==="number"){index=format;format=undefined}format=format||"";if(index!=null){return lists__get(format,index,field,setter)}var i;var out=[];for(i=0;i<count;i++){out[i]=lists__get(format,i,field,setter)}return out}function lists__listMonths(format,index){return list(format,index,"months",12,"month")}function lists__listMonthsShort(format,index){return list(format,index,"monthsShort",12,"month")}function lists__listWeekdays(format,index){return list(format,index,"weekdays",7,"day")}function lists__listWeekdaysShort(format,index){return list(format,index,"weekdaysShort",7,"day")}function lists__listWeekdaysMin(format,index){return list(format,index,"weekdaysMin",7,"day")}locale_locales__getSetGlobalLocale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(number){var b=number%10,output=toInt(number%100/10)===1?"th":b===1?"st":b===2?"nd":b===3?"rd":"th";return number+output}});utils_hooks__hooks.lang=deprecate("moment.lang is deprecated. Use moment.locale instead.",locale_locales__getSetGlobalLocale);utils_hooks__hooks.langData=deprecate("moment.langData is deprecated. Use moment.localeData instead.",locale_locales__getLocale);var mathAbs=Math.abs;function duration_abs__abs(){var data=this._data;this._milliseconds=mathAbs(this._milliseconds);this._days=mathAbs(this._days);this._months=mathAbs(this._months);data.milliseconds=mathAbs(data.milliseconds);data.seconds=mathAbs(data.seconds);data.minutes=mathAbs(data.minutes);data.hours=mathAbs(data.hours);data.months=mathAbs(data.months);data.years=mathAbs(data.years);return this}function duration_add_subtract__addSubtract(duration,input,value,direction){var other=create__createDuration(input,value);duration._milliseconds+=direction*other._milliseconds;duration._days+=direction*other._days;duration._months+=direction*other._months;return duration._bubble()}function duration_add_subtract__add(input,value){return duration_add_subtract__addSubtract(this,input,value,1)}function duration_add_subtract__subtract(input,value){return duration_add_subtract__addSubtract(this,input,value,-1)}function bubble(){var milliseconds=this._milliseconds;var days=this._days;var months=this._months;var data=this._data;var seconds,minutes,hours,years=0;data.milliseconds=milliseconds%1e3;seconds=absFloor(milliseconds/1e3);data.seconds=seconds%60;minutes=absFloor(seconds/60);data.minutes=minutes%60;hours=absFloor(minutes/60);data.hours=hours%24;days+=absFloor(hours/24);years=absFloor(daysToYears(days));days-=absFloor(yearsToDays(years));months+=absFloor(days/30);days%=30;years+=absFloor(months/12);months%=12;data.days=days;data.months=months;data.years=years;return this}function daysToYears(days){return days*400/146097}function yearsToDays(years){return years*146097/400}function as(units){var days;var months;var milliseconds=this._milliseconds;units=normalizeUnits(units);if(units==="month"||units==="year"){days=this._days+milliseconds/864e5;months=this._months+daysToYears(days)*12;return units==="month"?months:months/12}else{days=this._days+Math.round(yearsToDays(this._months/12));switch(units){case"week":return days/7+milliseconds/6048e5;case"day":return days+milliseconds/864e5;case"hour":return days*24+milliseconds/36e5;case"minute":return days*1440+milliseconds/6e4;case"second":return days*86400+milliseconds/1e3;case"millisecond":return Math.floor(days*864e5)+milliseconds;default:throw new Error("Unknown unit "+units)}}}function duration_as__valueOf(){return this._milliseconds+this._days*864e5+this._months%12*2592e6+toInt(this._months/12)*31536e6}function makeAs(alias){return function(){return this.as(alias)}}var asMilliseconds=makeAs("ms");var asSeconds=makeAs("s");var asMinutes=makeAs("m");var asHours=makeAs("h");var asDays=makeAs("d");var asWeeks=makeAs("w");var asMonths=makeAs("M");var asYears=makeAs("y");function duration_get__get(units){units=normalizeUnits(units);return this[units+"s"]()}function makeGetter(name){return function(){return this._data[name]}}var duration_get__milliseconds=makeGetter("milliseconds");var seconds=makeGetter("seconds");var minutes=makeGetter("minutes");var hours=makeGetter("hours");var days=makeGetter("days");var months=makeGetter("months");var years=makeGetter("years");function weeks(){return absFloor(this.days()/7)}var round=Math.round;var thresholds={s:45,m:45,h:22,d:26,M:11};function substituteTimeAgo(string,number,withoutSuffix,isFuture,locale){return locale.relativeTime(number||1,!!withoutSuffix,string,isFuture)}function duration_humanize__relativeTime(posNegDuration,withoutSuffix,locale){var duration=create__createDuration(posNegDuration).abs();var seconds=round(duration.as("s"));var minutes=round(duration.as("m"));var hours=round(duration.as("h"));var days=round(duration.as("d"));var months=round(duration.as("M"));var years=round(duration.as("y"));var a=seconds<thresholds.s&&["s",seconds]||minutes===1&&["m"]||minutes<thresholds.m&&["mm",minutes]||hours===1&&["h"]||hours<thresholds.h&&["hh",hours]||days===1&&["d"]||days<thresholds.d&&["dd",days]||months===1&&["M"]||months<thresholds.M&&["MM",months]||years===1&&["y"]||["yy",years];a[2]=withoutSuffix;a[3]=+posNegDuration>0;a[4]=locale;return substituteTimeAgo.apply(null,a)}function duration_humanize__getSetRelativeTimeThreshold(threshold,limit){if(thresholds[threshold]===undefined){return false}if(limit===undefined){return thresholds[threshold]}thresholds[threshold]=limit;return true}function humanize(withSuffix){var locale=this.localeData();var output=duration_humanize__relativeTime(this,!withSuffix,locale);if(withSuffix){output=locale.pastFuture(+this,output)}return locale.postformat(output)}var iso_string__abs=Math.abs;function iso_string__toISOString(){
     14// inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
     15var Y=iso_string__abs(this.years());var M=iso_string__abs(this.months());var D=iso_string__abs(this.days());var h=iso_string__abs(this.hours());var m=iso_string__abs(this.minutes());var s=iso_string__abs(this.seconds()+this.milliseconds()/1e3);var total=this.asSeconds();if(!total){return"P0D"}return(total<0?"-":"")+"P"+(Y?Y+"Y":"")+(M?M+"M":"")+(D?D+"D":"")+(h||m||s?"T":"")+(h?h+"H":"")+(m?m+"M":"")+(s?s+"S":"")}var duration_prototype__proto=Duration.prototype;duration_prototype__proto.abs=duration_abs__abs;duration_prototype__proto.add=duration_add_subtract__add;duration_prototype__proto.subtract=duration_add_subtract__subtract;duration_prototype__proto.as=as;duration_prototype__proto.asMilliseconds=asMilliseconds;duration_prototype__proto.asSeconds=asSeconds;duration_prototype__proto.asMinutes=asMinutes;duration_prototype__proto.asHours=asHours;duration_prototype__proto.asDays=asDays;duration_prototype__proto.asWeeks=asWeeks;duration_prototype__proto.asMonths=asMonths;duration_prototype__proto.asYears=asYears;duration_prototype__proto.valueOf=duration_as__valueOf;duration_prototype__proto._bubble=bubble;duration_prototype__proto.get=duration_get__get;duration_prototype__proto.milliseconds=duration_get__milliseconds;duration_prototype__proto.seconds=seconds;duration_prototype__proto.minutes=minutes;duration_prototype__proto.hours=hours;duration_prototype__proto.days=days;duration_prototype__proto.weeks=weeks;duration_prototype__proto.months=months;duration_prototype__proto.years=years;duration_prototype__proto.humanize=humanize;duration_prototype__proto.toISOString=iso_string__toISOString;duration_prototype__proto.toString=iso_string__toISOString;duration_prototype__proto.toJSON=iso_string__toISOString;duration_prototype__proto.locale=locale;duration_prototype__proto.localeData=localeData;duration_prototype__proto.toIsoString=deprecate("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",iso_string__toISOString);duration_prototype__proto.lang=lang;addFormatToken("X",0,0,"unix");addFormatToken("x",0,0,"valueOf");addRegexToken("x",matchSigned);addRegexToken("X",matchTimestamp);addParseToken("X",function(input,array,config){config._d=new Date(parseFloat(input,10)*1e3)});addParseToken("x",function(input,array,config){config._d=new Date(toInt(input))});utils_hooks__hooks.version="2.10.3";setHookCallback(local__createLocal);utils_hooks__hooks.fn=momentPrototype;utils_hooks__hooks.min=min;utils_hooks__hooks.max=max;utils_hooks__hooks.utc=create_utc__createUTC;utils_hooks__hooks.unix=moment__createUnix;utils_hooks__hooks.months=lists__listMonths;utils_hooks__hooks.isDate=isDate;utils_hooks__hooks.locale=locale_locales__getSetGlobalLocale;utils_hooks__hooks.invalid=valid__createInvalid;utils_hooks__hooks.duration=create__createDuration;utils_hooks__hooks.isMoment=isMoment;utils_hooks__hooks.weekdays=lists__listWeekdays;utils_hooks__hooks.parseZone=moment__createInZone;utils_hooks__hooks.localeData=locale_locales__getLocale;utils_hooks__hooks.isDuration=isDuration;utils_hooks__hooks.monthsShort=lists__listMonthsShort;utils_hooks__hooks.weekdaysMin=lists__listWeekdaysMin;utils_hooks__hooks.defineLocale=defineLocale;utils_hooks__hooks.weekdaysShort=lists__listWeekdaysShort;utils_hooks__hooks.normalizeUnits=normalizeUnits;utils_hooks__hooks.relativeTimeThreshold=duration_humanize__getSetRelativeTimeThreshold;var _moment=utils_hooks__hooks;return _moment})},{}],opening_hours:[function(require,module,exports){/*
    216 * For information see https://github.com/ypid/opening_hours.js
    3  * and the doc directory which contains internal documentation and design.
     17 * and the docs directory which contains internal documentation and design.
    418 */
    5 /* jshint laxbreak: true */
    6 /* jshint boss: true */
    7 /* jshint loopfunc: true */
    8 
    9 (function (root, factory) {
    10         /* constants (holidays, error correction) {{{ */
    11         /* holidays {{{ */
    12         /*
    13          * The country code keys and the PH, SH keys are surrounded by '':
    14          * :%s/^\s\+\zs"\([^"]\+\)"\(: {\)/'\1'\2/
    15          * Fixed the indention with Vim Marco:
    16          * /'PH'<cr>f{jVk%k,a:
    17          * Fixed spacing in parenthesis:
    18          * :%s/\[\zs\([^ ]\)/ \1/e | %s/\([^ ]\)\]/\1 \]/e | %s/,\([^ ]\)/, \1/e
    19          */
    20         var holidays = {
    21                 'fr': { // {{{
    22                         'PH': { // http://fr.wikipedia.org/wiki/F%C3%AAtes_et_jours_f%C3%A9ri%C3%A9s_en_France
    23                                 "Jour de l'an"                          : [  1,  1 ],
    24                                 "Vendredi saint"                        : [  'easter', -2, [ 'Moselle', 'Bas-Rhin', 'Haut-Rhin', 'Guadeloupe', 'Martinique', 'Polynésie française' ] ],
    25                                 "Lundi de Pâques"                       : [  'easter', 1 ],
    26                                 "Saint-Pierre-Chanel"                   : [  4, 28, [ 'Wallis-et-Futuna' ] ],
    27                                 "Fête du Travail"                       : [  5,  1 ],
    28                                 "Fête de la Victoire"                   : [  5,  8 ],
    29                                 "Abolition de l'esclavage (Martinique)" : [  5, 22, [ 'Martinique' ] ],
    30                                 "Abolition de l'esclavage (Guadeloupe)" : [  5, 27, [ 'Guadeloupe' ] ],
    31                                 "Jeudi de l'Ascension"                  : [  'easter', 39 ],
    32                                 "Lundi de Pentecôte"                    : [  'easter', 50 ],
    33                                 "Abolition de l'esclavage (Guyane)"     : [  6, 10, [ 'Guyane' ] ],
    34                                 "Fête de l'autonomie"                   : [  6, 29, [ 'Polynésie française' ] ],
    35                                 "Fête nationale"                        : [  7, 14 ],
    36                                 "Fête Victor Schoelcher"                : [  7, 21, [ 'Guadeloupe', 'Martinique' ] ],
    37                                 "Fête du Territoire"                    : [  7, 29, [ 'Wallis-et-Futuna' ] ],
    38                                 "Assomption"                            : [  8, 15 ],
    39                                 "Fête de la citoyenneté"                : [  9, 24, [ 'Nouvelle-Calédonie' ] ],
    40                                 "Toussaint"                             : [ 11,  1 ],
    41                                 "Armistice"                             : [ 11, 11 ],
    42                                 "Abolition de l'esclavage (Réunion)"    : [ 12, 20, [ 'Réunion' ] ],
    43                                 "Noël"                                  : [ 12, 25 ],
    44                                 "Saint-Étienne "                        : [ 12, 26, [ 'Moselle', 'Bas-Rhin', 'Haut-Rhin' ] ]
    45                         }
    46                 }, // }}}
    47                 'de': { // {{{
    48                         'PH': { // http://de.wikipedia.org/wiki/Feiertage_in_Deutschland
    49                                 'Neujahrstag'               : [  1,  1 ], // month 1, day 1, whole Germany
    50                                 'Heilige Drei Könige'       : [  1,  6, [ 'Baden-Württemberg', 'Bayern', 'Sachsen-Anhalt'] ], // only in the specified states
    51                                 'Tag der Arbeit'            : [  5,  1 ], // whole Germany
    52                                 'Karfreitag'                : [ 'easter', -2 ], // two days before easter
    53                                 'Ostersonntag'              : [ 'easter',  0, [ 'Brandenburg'] ],
    54                                 'Ostermontag'               : [ 'easter',  1 ],
    55                                 'Christi Himmelfahrt'       : [ 'easter', 39 ],
    56                                 'Pfingstsonntag'            : [ 'easter', 49, [ 'Brandenburg'] ],
    57                                 'Pfingstmontag'             : [ 'easter', 50 ],
    58                                 'Fronleichnam'              : [ 'easter', 60, [ 'Baden-Württemberg', 'Bayern', 'Hessen', 'Nordrhein-Westfalen', 'Rheinland-Pfalz', 'Saarland' ] ],
    59                                 'Mariä Himmelfahrt'         : [  8, 15, [ 'Saarland'] ],
    60                                 'Tag der Deutschen Einheit' : [ 10,  3 ],
    61                                 'Reformationstag'           : [ 10, 31, [ 'Brandenburg', 'Mecklenburg-Vorpommern', 'Sachsen', 'Sachsen-Anhalt', 'Thüringen'] ],
    62                                 'Allerheiligen'             : [ 11,  1, [ 'Baden-Württemberg', 'Bayern', 'Nordrhein-Westfalen', 'Rheinland-Pfalz', 'Saarland' ] ],
    63                                 '1. Weihnachtstag'          : [ 12, 25 ],
    64                                 '2. Weihnachtstag'          : [ 12, 26 ],
    65                                 // 'Silvester'              : [ 12, 31 ], // for testing
    66                         },
    67                         'Baden-Württemberg': { // does only apply in Baden-Württemberg
    68                                 // This more specific rule set overwrites the country wide one (they are just ignored).
    69                                 // You may use this instead of the country wide with some
    70                                 // additional holidays for some states, if one state
    71                                 // totally disagrees about how to do holidays …
    72                                 // 'PH': {
    73                                 //     '2. Weihnachtstag'          : [ 12, 26 ],
    74                                 // },
    75 
    76                                 // school holiday normally variate between states
    77                                 'SH': [ // generated by convert_ical_to_json
    78                                                 // You may can adjust this script to use other resources (for other countries) too.
    79                                         {
    80                                                 name: 'Osterferien',
    81                                                 2005: [  3, 24, /* to */  3, 24,   3, 29, /* to */  4,  2 ],
    82                                                 2006: [  4, 18, /* to */  4, 22 ],
    83                                                 2007: [  4,  2, /* to */  4, 14 ],
    84                                                 2008: [  3, 17, /* to */  3, 28 ],
    85                                                 2009: [  4,  9, /* to */  4,  9,   4, 14, /* to */  4, 17 ],
    86                                                 2010: [  4,  1, /* to */  4,  1,   4,  6, /* to */  4, 10 ],
    87                                                 2011: [  4, 21, /* to */  4, 21,   4, 26, /* to */  4, 30 ],
    88                                                 2012: [  4,  2, /* to */  4, 13 ],
    89                                                 2013: [  3, 25, /* to */  4,  5 ],
    90                                                 2014: [  4, 14, /* to */  4, 25 ],
    91                                                 2015: [  3, 30, /* to */  4, 10 ],
    92                                                 2016: [  3, 29, /* to */  4,  2 ],
    93                                                 2017: [  4, 10, /* to */  4, 21 ],
    94                                         },
    95                                         {
    96                                                 name: 'Pfingstferien',
    97                                                 2005: [  5, 17, /* to */  5, 28 ],
    98                                                 2006: [  5, 29, /* to */  6, 10 ],
    99                                                 2007: [  5, 29, /* to */  6,  9 ],
    100                                                 2008: [  5, 13, /* to */  5, 23 ],
    101                                                 2009: [  5, 25, /* to */  6,  6 ],
    102                                                 2010: [  5, 25, /* to */  6,  5 ],
    103                                                 2011: [  6, 14, /* to */  6, 25 ],
    104                                                 2012: [  5, 29, /* to */  6,  9 ],
    105                                                 2013: [  5, 21, /* to */  6,  1 ],
    106                                                 2014: [  6, 10, /* to */  6, 21 ],
    107                                                 2015: [  5, 26, /* to */  6,  6 ],
    108                                                 2016: [  5, 17, /* to */  5, 28 ],
    109                                                 2017: [  6,  6, /* to */  6, 16 ],
    110                                         },
    111                                         {
    112                                                 name: 'Sommerferien',
    113                                                 2005: [  7, 28, /* to */  9, 10 ],
    114                                                 2006: [  8,  3, /* to */  9, 16 ],
    115                                                 2007: [  7, 26, /* to */  9,  8 ],
    116                                                 2008: [  7, 24, /* to */  9,  6 ],
    117                                                 2009: [  7, 30, /* to */  9, 12 ],
    118                                                 2010: [  7, 29, /* to */  9, 11 ],
    119                                                 2011: [  7, 28, /* to */  9, 10 ],
    120                                                 2012: [  7, 26, /* to */  9,  8 ],
    121                                                 2013: [  7, 25, /* to */  9,  7 ],
    122                                                 2014: [  7, 31, /* to */  9, 13 ],
    123                                                 2015: [  7, 30, /* to */  9, 12 ],
    124                                                 2016: [  7, 28, /* to */  9, 10 ],
    125                                                 2017: [  7, 27, /* to */  9,  9 ],
    126                                         },
    127                                         {
    128                                                 name: 'Herbstferien',
    129                                                 2005: [ 11,  2, /* to */ 11,  4 ],
    130                                                 2006: [ 10, 30, /* to */ 11,  3 ],
    131                                                 2007: [ 10, 29, /* to */ 11,  3 ],
    132                                                 2008: [ 10, 27, /* to */ 10, 31 ],
    133                                                 2009: [ 10, 26, /* to */ 10, 31 ],
    134                                                 2010: [ 11,  2, /* to */ 11,  6 ],
    135                                                 2011: [ 10, 31, /* to */ 10, 31,  11,  2, /* to */ 11,  4 ],
    136                                                 2012: [ 10, 29, /* to */ 11,  2 ],
    137                                                 2013: [ 10, 28, /* to */ 10, 30 ],
    138                                                 2014: [ 10, 27, /* to */ 10, 30 ],
    139                                                 2015: [ 11,  2, /* to */ 11,  6 ],
    140                                                 2016: [ 11,  2, /* to */ 11,  4 ],
    141                                         },
    142                                         {
    143                                                 name: 'Weihnachtsferien',
    144                                                 2005: [ 12, 22, /* to */  1,  5 ],
    145                                                 2006: [ 12, 27, /* to */  1,  5 ],
    146                                                 2007: [ 12, 24, /* to */  1,  5 ],
    147                                                 2008: [ 12, 22, /* to */  1, 10 ],
    148                                                 2009: [ 12, 23, /* to */  1,  9 ],
    149                                                 2010: [ 12, 23, /* to */  1,  8 ],
    150                                                 2011: [ 12, 23, /* to */  1,  5 ],
    151                                                 2012: [ 12, 24, /* to */  1,  5 ],
    152                                                 2013: [ 12, 23, /* to */  1,  4 ],
    153                                                 2014: [ 12, 22, /* to */  1,  5 ],
    154                                                 2015: [ 12, 23, /* to */  1,  9 ],
    155                                                 2016: [ 12, 23, /* to */  1,  7 ],
    156                                         },
    157                                 ],
    158                         },
    159                         'Mecklenburg-Vorpommern': {
    160                                 'SH': [
    161                                         {
    162                                                 name: 'Winterferien',
    163                                                 2010: [  2,  6, /* to */  2, 20 ],
    164                                                 2011: [  2,  7, /* to */  2, 19 ],
    165                                                 2012: [  2,  6, /* to */  2, 17 ],
    166                                                 2013: [  2,  4, /* to */  2, 15 ],
    167                                                 2014: [  2,  3, /* to */  2, 15 ],
    168                                                 2015: [  2,  2, /* to */  2, 14 ],
    169                                                 2016: [  2,  1, /* to */  2, 13 ],
    170                                                 2017: [  2,  6, /* to */  2, 18 ],
    171                                         },
    172                                         {
    173                                                 name: 'Osterferien',
    174                                                 2010: [  3, 29, /* to */  4,  7 ],
    175                                                 2011: [  4, 16, /* to */  4, 27 ],
    176                                                 2012: [  4,  2, /* to */  4, 11 ],
    177                                                 2013: [  3, 25, /* to */  4,  3 ],
    178                                                 2014: [  4, 14, /* to */  4, 23 ],
    179                                                 2015: [  3, 30, /* to */  4,  8 ],
    180                                                 2016: [  3, 21, /* to */  3, 30 ],
    181                                                 2017: [  4, 10, /* to */  4, 19 ],
    182                                         },
    183                                         {
    184                                                 name: 'Pfingstferien',
    185                                                 2010: [  5, 21, /* to */  5, 22 ],
    186                                                 2011: [  6, 10, /* to */  6, 14 ],
    187                                                 2012: [  5, 25, /* to */  5, 29 ],
    188                                                 2013: [  5, 17, /* to */  5, 21 ],
    189                                                 2014: [  6,  6, /* to */  6, 10 ],
    190                                                 2015: [  5, 22, /* to */  5, 26 ],
    191                                                 2016: [  5, 14, /* to */  5, 17 ],
    192                                                 2017: [  6,  2, /* to */  6,  6 ],
    193                                         },
    194                                         {
    195                                                 name: 'Sommerferien',
    196                                                 2010: [  7, 12, /* to */  8, 21 ],
    197                                                 2011: [  7,  4, /* to */  8, 13 ],
    198                                                 2012: [  6, 23, /* to */  8,  4 ],
    199                                                 2013: [  6, 22, /* to */  8,  3 ],
    200                                                 2014: [  7, 14, /* to */  8, 23 ],
    201                                                 2015: [  7, 20, /* to */  8, 29 ],
    202                                                 2016: [  7, 25, /* to */  9,  3 ],
    203                                                 2017: [  7, 24, /* to */  9,  2 ],
    204                                         },
    205                                         {
    206                                                 name: 'Herbstferien',
    207                                                 2010: [ 10, 18, /* to */ 10, 23 ],
    208                                                 2011: [ 10, 17, /* to */ 10, 21 ],
    209                                                 2012: [ 10,  1, /* to */ 10,  5 ],
    210                                                 2013: [ 10, 14, /* to */ 10, 19 ],
    211                                                 2014: [ 10, 20, /* to */ 10, 25 ],
    212                                                 2015: [ 10, 24, /* to */ 10, 30 ],
    213                                                 2016: [ 10, 24, /* to */ 10, 28 ],
    214                                         },
    215                                         {
    216                                                 name: 'Weihnachtsferien',
    217                                                 2010: [ 12, 23, /* to */ 12, 31 ],
    218                                                 2011: [ 12, 23, /* to */  1,  3 ],
    219                                                 2012: [ 12, 21, /* to */  1,  4 ],
    220                                                 2013: [ 12, 23, /* to */  1,  3 ],
    221                                                 2014: [ 12, 22, /* to */  1,  2 ],
    222                                                 2015: [ 12, 21, /* to */  1,  2 ],
    223                                                 2016: [ 12, 22, /* to */  1,  2 ],
    224                                         },
    225                                 ],
    226                         },
    227                         'Hessen': {
    228                                 'SH': [
    229                                         {
    230                                                 name: 'Osterferien',
    231                                                 2010: [  3, 29, /* to */  4, 10 ],
    232                                                 2011: [  4, 18, /* to */  4, 30 ],
    233                                                 2012: [  4,  2, /* to */  4, 14 ],
    234                                                 2013: [  3, 25, /* to */  4,  6 ],
    235                                                 2014: [  4, 14, /* to */  4, 26 ],
    236                                                 2015: [  3, 30, /* to */  4, 11 ],
    237                                                 2016: [  3, 29, /* to */  4,  9 ],
    238                                                 2017: [  4,  3, /* to */  4, 15 ],
    239                                                 2018: [  3, 26, /* to */  4,  7 ],
    240                                         },
    241                                         {
    242                                                 name: 'Sommerferien',
    243                                                 2010: [  7,  5, /* to */  8, 14 ],
    244                                                 2011: [  6, 27, /* to */  8,  5 ],
    245                                                 2012: [  7,  2, /* to */  8, 10 ],
    246                                                 2013: [  7,  8, /* to */  8, 16 ],
    247                                                 2014: [  7, 28, /* to */  9,  5 ],
    248                                                 2015: [  7, 27, /* to */  9,  5 ],
    249                                                 2016: [  7, 18, /* to */  8, 26 ],
    250                                                 2017: [  7,  3, /* to */  8, 11 ],
    251                                         },
    252                                         {
    253                                                 name: 'Herbstferien',
    254                                                 2010: [ 10, 11, /* to */ 10, 22 ],
    255                                                 2011: [ 10, 10, /* to */ 10, 22 ],
    256                                                 2012: [ 10, 15, /* to */ 10, 27 ],
    257                                                 2013: [ 10, 14, /* to */ 10, 26 ],
    258                                                 2014: [ 10, 20, /* to */ 11,  1 ],
    259                                                 2015: [ 10, 19, /* to */ 10, 31 ],
    260                                                 2016: [ 10, 17, /* to */ 10, 29 ],
    261                                                 2017: [ 10,  9, /* to */ 10, 21 ],
    262                                         },
    263                                         {
    264                                                 name: 'Weihnachtsferien',
    265                                                 2010: [ 12, 20, /* to */  1,  7 ],
    266                                                 2011: [ 12, 21, /* to */  1,  6 ],
    267                                                 2012: [ 12, 24, /* to */  1, 12 ],
    268                                                 2013: [ 12, 23, /* to */  1, 11 ],
    269                                                 2014: [ 12, 22, /* to */  1, 10 ],
    270                                                 2015: [ 12, 23, /* to */  1,  9 ],
    271                                                 2016: [ 12, 22, /* to */  1,  7 ],
    272                                                 2017: [ 12, 24, /* to */  1, 13 ],
    273                                         },
    274                                 ],
    275                         },
    276                         'Schleswig-Holstein': {
    277                                 'SH': [
    278                                         {
    279                                                 name: 'Osterferien',
    280                                                 2010: [  4,  3, /* to */  4, 17 ],
    281                                                 2011: [  4, 15, /* to */  4, 30 ],
    282                                                 2012: [  3, 30, /* to */  4, 13 ],
    283                                                 2013: [  3, 25, /* to */  4,  9 ],
    284                                                 2014: [  4, 16, /* to */  5,  2 ],
    285                                                 2015: [  4,  1, /* to */  4, 17 ],
    286                                                 2016: [  3, 24, /* to */  4,  9 ],
    287                                                 2017: [  4,  7, /* to */  4, 21 ],
    288                                         },
    289                                         {
    290                                                 name: 'Sommerferien',
    291                                                 2010: [  7, 12, /* to */  8, 21 ],
    292                                                 2011: [  7,  4, /* to */  8, 13 ],
    293                                                 2012: [  6, 25, /* to */  8,  4 ],
    294                                                 2013: [  6, 24, /* to */  8,  3 ],
    295                                                 2014: [  7, 14, /* to */  8, 23 ],
    296                                                 2015: [  7, 20, /* to */  8, 29 ],
    297                                                 2016: [  7, 25, /* to */  9,  3 ],
    298                                                 2017: [  7, 24, /* to */  9,  2 ],
    299                                         },
    300                                         {
    301                                                 name: 'Pfingstferien',
    302                                                 2011: [  6,  3, /* to */  6,  4 ],
    303                                                 2012: [  5, 18, /* to */  5, 18 ],
    304                                                 2013: [  5, 10, /* to */  5, 10 ],
    305                                                 2014: [  5, 30, /* to */  5, 30 ],
    306                                                 2015: [  5, 15, /* to */  5, 15 ],
    307                                                 2016: [  5,  6, /* to */  5,  6 ],
    308                                                 2017: [  5, 26, /* to */  5, 26 ],
    309                                         },
    310                                         {
    311                                                 name: 'Herbstferien',
    312                                                 2010: [ 10, 11, /* to */ 10, 23 ],
    313                                                 2011: [ 10, 10, /* to */ 10, 22 ],
    314                                                 2012: [ 10,  4, /* to */ 10, 19 ],
    315                                                 2013: [ 10,  4, /* to */ 10, 18 ],
    316                                                 2014: [ 10, 13, /* to */ 10, 25 ],
    317                                                 2015: [ 10, 19, /* to */ 10, 31 ],
    318                                                 2016: [ 10, 17, /* to */ 10, 29 ],
    319                                         },
    320                                         {
    321                                                 name: 'Weihnachtsferien',
    322                                                 2010: [ 12, 23, /* to */  1,  7 ],
    323                                                 2011: [ 12, 23, /* to */  1,  6 ],
    324                                                 2012: [ 12, 24, /* to */  1,  5 ],
    325                                                 2013: [ 12, 23, /* to */  1,  6 ],
    326                                                 2014: [ 12, 22, /* to */  1,  6 ],
    327                                                 2015: [ 12, 21, /* to */  1,  6 ],
    328                                                 2016: [ 12, 23, /* to */  1,  6 ],
    329                                         },
    330                                 ],
    331                         },
    332                         'Berlin': {
    333                                 'SH': [
    334                                         {
    335                                                 name: 'Winterferien',
    336                                                 2010: [  2,  1, /* to */  2,  6 ],
    337                                                 2011: [  1, 31, /* to */  2,  5 ],
    338                                                 2012: [  1, 30, /* to */  2,  4 ],
    339                                                 2013: [  2,  4, /* to */  2,  9 ],
    340                                                 2014: [  2,  3, /* to */  2,  8 ],
    341                                                 2015: [  2,  2, /* to */  2,  7 ],
    342                                                 2016: [  2,  1, /* to */  2,  6 ],
    343                                                 2017: [  1, 30, /* to */  2,  4 ],
    344                                         },
    345                                         {
    346                                                 name: 'Osterferien',
    347                                                 2010: [  3, 31, /* to */  4, 10 ],
    348                                                 2011: [  4, 18, /* to */  4, 30 ],
    349                                                 2012: [  4,  2, /* to */  4, 14,   4, 30, /* to */  4, 30 ],
    350                                                 2013: [  3, 25, /* to */  4,  6 ],
    351                                                 2014: [  4, 14, /* to */  4, 26,   5,  2, /* to */  5,  2 ],
    352                                                 2015: [  3, 30, /* to */  4, 11 ],
    353                                                 2016: [  3, 21, /* to */  4,  2 ],
    354                                                 2017: [  4, 10, /* to */  4, 22 ],
    355                                         },
    356                                         {
    357                                                 name: 'Pfingstferien',
    358                                                 2010: [  5, 14, /* to */  5, 14,   5, 25, /* to */  5, 25 ],
    359                                                 2011: [  6,  3, /* to */  6,  3 ],
    360                                                 2012: [  5, 18, /* to */  5, 18 ],
    361                                                 2013: [  5, 10, /* to */  5, 10,   5, 21, /* to */  5, 21 ],
    362                                                 2014: [  5, 30, /* to */  5, 30 ],
    363                                                 2015: [  5, 15, /* to */  5, 15 ],
    364                                                 2016: [  5,  6, /* to */  5,  6,   5, 17, /* to */  5, 17 ],
    365                                                 2017: [  5, 26, /* to */  5, 26 ],
    366                                         },
    367                                         {
    368                                                 name: 'Sommerferien',
    369                                                 2010: [  7,  7, /* to */  8, 21 ],
    370                                                 2011: [  6, 29, /* to */  8, 12 ],
    371                                                 2012: [  6, 20, /* to */  8,  3 ],
    372                                                 2013: [  6, 19, /* to */  8,  2 ],
    373                                                 2014: [  7,  9, /* to */  8, 22 ],
    374                                                 2015: [  7, 15, /* to */  8, 28 ],
    375                                                 2016: [  7, 20, /* to */  9,  2 ],
    376                                                 2017: [  7, 19, /* to */  9,  1 ],
    377                                         },
    378                                         {
    379                                                 name: 'Herbstferien',
    380                                                 2010: [ 10, 11, /* to */ 10, 23 ],
    381                                                 2011: [ 10,  4, /* to */ 10, 14 ],
    382                                                 2012: [ 10,  1, /* to */ 10, 13 ],
    383                                                 2013: [  9, 30, /* to */ 10, 12 ],
    384                                                 2014: [ 10, 20, /* to */ 11,  1 ],
    385                                                 2015: [ 10, 19, /* to */ 10, 31 ],
    386                                                 2016: [ 10, 17, /* to */ 10, 28 ],
    387                                         },
    388                                         {
    389                                                 name: 'Weihnachtsferien',
    390                                                 2010: [ 12, 23, /* to */  1,  1 ],
    391                                                 2011: [ 12, 23, /* to */  1,  3 ],
    392                                                 2012: [ 12, 24, /* to */  1,  4 ],
    393                                                 2013: [ 12, 23, /* to */  1,  3 ],
    394                                                 2014: [ 12, 22, /* to */  1,  2 ],
    395                                                 2015: [ 12, 23, /* to */  1,  2 ],
    396                                                 2016: [ 12, 23, /* to */  1,  3 ],
    397                                         },
    398                                 ],
    399                         },
    400                         'Saarland': {
    401                                 'SH': [
    402                                         {
    403                                                 name: 'Winterferien',
    404                                                 2010: [  2, 15, /* to */  2, 20 ],
    405                                                 2011: [  3,  7, /* to */  3, 12 ],
    406                                                 2012: [  2, 20, /* to */  2, 25 ],
    407                                                 2013: [  2, 11, /* to */  2, 16 ],
    408                                                 2014: [  3,  3, /* to */  3,  8 ],
    409                                                 2015: [  2, 16, /* to */  2, 21 ],
    410                                         },
    411                                         {
    412                                                 name: 'Osterferien',
    413                                                 2010: [  3, 29, /* to */  4, 10 ],
    414                                                 2011: [  4, 18, /* to */  4, 30 ],
    415                                                 2012: [  4,  2, /* to */  4, 14 ],
    416                                                 2013: [  3, 25, /* to */  4,  6 ],
    417                                                 2014: [  4, 14, /* to */  4, 26 ],
    418                                                 2015: [  3, 30, /* to */  4, 11 ],
    419                                         },
    420                                         {
    421                                                 name: 'Sommerferien',
    422                                                 2010: [  7,  5, /* to */  8, 14 ],
    423                                                 2011: [  6, 24, /* to */  8,  6 ],
    424                                                 2012: [  7,  2, /* to */  8, 14 ],
    425                                                 2013: [  7,  8, /* to */  8, 17 ],
    426                                                 2014: [  7, 28, /* to */  9,  6 ],
    427                                                 2015: [  7, 27, /* to */  9,  4 ],
    428                                                 2016: [  7, 18, /* to */  8, 26 ],
    429                                                 2017: [  7,  3, /* to */  8, 14 ],
    430                                         },
    431                                         {
    432                                                 name: 'Herbstferien',
    433                                                 2010: [ 10, 11, /* to */ 10, 23 ],
    434                                                 2011: [ 10,  4, /* to */ 10, 15 ],
    435                                                 2012: [ 10, 22, /* to */ 11,  3 ],
    436                                                 2013: [ 10, 21, /* to */ 11,  2 ],
    437                                                 2014: [ 10, 20, /* to */ 10, 31 ],
    438                                         },
    439                                         {
    440                                                 name: 'Weihnachtsferien',
    441                                                 2010: [ 12, 20, /* to */  1,  1 ],
    442                                                 2011: [ 12, 23, /* to */  1,  4 ],
    443                                                 2012: [ 12, 24, /* to */  1,  5 ],
    444                                                 2013: [ 12, 20, /* to */  1,  4 ],
    445                                                 2014: [ 12, 22, /* to */  1,  7 ],
    446                                         },
    447                                 ],
    448                         },
    449                         'Bremen': {
    450                                 'SH': [
    451                                         {
    452                                                 name: 'Winterferien',
    453                                                 2010: [  2,  1, /* to */  2,  2 ],
    454                                                 2011: [  1, 31, /* to */  2,  1 ],
    455                                                 2012: [  1, 30, /* to */  1, 31 ],
    456                                                 2013: [  1, 31, /* to */  2,  1 ],
    457                                                 2014: [  1, 30, /* to */  1, 31 ],
    458                                                 2015: [  2,  2, /* to */  2,  3 ],
    459                                                 2016: [  1, 28, /* to */  1, 29 ],
    460                                                 2017: [  1, 30, /* to */  1, 31 ],
    461                                         },
    462                                         {
    463                                                 name: 'Osterferien',
    464                                                 2010: [  3, 19, /* to */  4,  6 ],
    465                                                 2011: [  4, 16, /* to */  4, 30 ],
    466                                                 2012: [  3, 26, /* to */  4, 11,   4, 30, /* to */  4, 30 ],
    467                                                 2013: [  3, 16, /* to */  4,  2 ],
    468                                                 2014: [  4,  3, /* to */  4, 22,   5,  2, /* to */  5,  2 ],
    469                                                 2015: [  3, 25, /* to */  4, 10 ],
    470                                                 2016: [  3, 18, /* to */  4,  2 ],
    471                                                 2017: [  4, 10, /* to */  4, 22 ],
    472                                         },
    473                                         {
    474                                                 name: 'Pfingstferien',
    475                                                 2010: [  5, 14, /* to */  5, 14,   5, 25, /* to */  5, 25 ],
    476                                                 2011: [  6,  3, /* to */  6,  3,   6, 14, /* to */  6, 14 ],
    477                                                 2012: [  5, 18, /* to */  5, 18,   5, 29, /* to */  5, 29 ],
    478                                                 2013: [  5, 10, /* to */  5, 10,   5, 21, /* to */  5, 21 ],
    479                                                 2014: [  5, 30, /* to */  5, 30,   6, 10, /* to */  6, 10 ],
    480                                                 2015: [  5, 15, /* to */  5, 15,   5, 26, /* to */  5, 26 ],
    481                                                 2016: [  5,  6, /* to */  5,  6,   5, 17, /* to */  5, 17 ],
    482                                                 2017: [  5, 26, /* to */  5, 26,   6,  6, /* to */  6,  6 ],
    483                                         },
    484                                         {
    485                                                 name: 'Sommerferien',
    486                                                 2010: [  6, 24, /* to */  8,  4 ],
    487                                                 2011: [  7,  7, /* to */  8, 17 ],
    488                                                 2012: [  7, 23, /* to */  8, 31 ],
    489                                                 2013: [  6, 27, /* to */  8,  7 ],
    490                                                 2014: [  7, 31, /* to */  9, 10 ],
    491                                                 2015: [  7, 23, /* to */  9,  2 ],
    492                                                 2016: [  6, 23, /* to */  8,  3 ],
    493                                                 2017: [  6, 22, /* to */  8,  2 ],
    494                                         },
    495                                         {
    496                                                 name: 'Herbstferien',
    497                                                 2010: [ 10,  9, /* to */ 10, 23 ],
    498                                                 2011: [ 10, 17, /* to */ 10, 29 ],
    499                                                 2012: [ 10, 22, /* to */ 11,  3 ],
    500                                                 2013: [ 10,  4, /* to */ 10, 18 ],
    501                                                 2014: [ 10, 27, /* to */ 11,  8 ],
    502                                                 2015: [ 10, 19, /* to */ 10, 31 ],
    503                                                 2016: [ 10,  4, /* to */ 10, 15 ],
    504                                         },
    505                                         {
    506                                                 name: 'Weihnachtsferien',
    507                                                 2010: [ 12, 22, /* to */  1,  5 ],
    508                                                 2011: [ 12, 23, /* to */  1,  4 ],
    509                                                 2012: [ 12, 24, /* to */  1,  5 ],
    510                                                 2013: [ 12, 23, /* to */  1,  3 ],
    511                                                 2014: [ 12, 22, /* to */  1,  5 ],
    512                                                 2015: [ 12, 23, /* to */  1,  6 ],
    513                                                 2016: [ 12, 21, /* to */  1,  6 ],
    514                                         },
    515                                 ],
    516                         },
    517                         'Bayern': {
    518                                 'SH': [
    519                                         {
    520                                                 name: 'Winterferien',
    521                                                 2010: [  2, 15, /* to */  2, 20 ],
    522                                                 2011: [  3,  7, /* to */  3, 11 ],
    523                                                 2012: [  2, 20, /* to */  2, 24 ],
    524                                                 2013: [  2, 11, /* to */  2, 15 ],
    525                                                 2014: [  3,  3, /* to */  3,  7 ],
    526                                                 2015: [  2, 16, /* to */  2, 20 ],
    527                                                 2016: [  2,  8, /* to */  2, 12 ],
    528                                                 2017: [  2, 27, /* to */  3,  3 ],
    529                                         },
    530                                         {
    531                                                 name: 'Osterferien',
    532                                                 2010: [  3, 29, /* to */  4, 10 ],
    533                                                 2011: [  4, 18, /* to */  4, 30 ],
    534                                                 2012: [  4,  2, /* to */  4, 14 ],
    535                                                 2013: [  3, 25, /* to */  4,  6 ],
    536                                                 2014: [  4, 14, /* to */  4, 26 ],
    537                                                 2015: [  3, 30, /* to */  4, 11 ],
    538                                                 2016: [  3, 21, /* to */  4,  1 ],
    539                                                 2017: [  4, 10, /* to */  4, 22 ],
    540                                         },
    541                                         {
    542                                                 name: 'Pfingstferien',
    543                                                 2010: [  5, 25, /* to */  6,  5 ],
    544                                                 2011: [  6, 14, /* to */  6, 25 ],
    545                                                 2012: [  5, 29, /* to */  6,  9 ],
    546                                                 2013: [  5, 21, /* to */  5, 31 ],
    547                                                 2014: [  6, 10, /* to */  6, 21 ],
    548                                                 2015: [  5, 26, /* to */  6,  5 ],
    549                                                 2016: [  5, 17, /* to */  5, 28 ],
    550                                                 2017: [  6,  6, /* to */  6, 16 ],
    551                                         },
    552                                         {
    553                                                 name: 'Sommerferien',
    554                                                 2010: [  8,  2, /* to */  9, 13 ],
    555                                                 2011: [  7, 30, /* to */  9, 12 ],
    556                                                 2012: [  8,  1, /* to */  9, 12 ],
    557                                                 2013: [  7, 31, /* to */  9, 11 ],
    558                                                 2014: [  7, 30, /* to */  9, 15 ],
    559                                                 2015: [  8,  1, /* to */  9, 14 ],
    560                                                 2016: [  7, 30, /* to */  9, 12 ],
    561                                                 2017: [  7, 29, /* to */  9, 11 ],
    562                                         },
    563                                         {
    564                                                 name: 'Herbstferien',
    565                                                 2010: [ 11,  2, /* to */ 11,  5 ],
    566                                                 2011: [ 10, 31, /* to */ 11,  5 ],
    567                                                 2012: [ 10, 29, /* to */ 11,  3 ],
    568                                                 2013: [ 10, 28, /* to */ 10, 31 ],
    569                                                 2014: [ 10, 27, /* to */ 10, 31 ],
    570                                                 2015: [ 11,  2, /* to */ 11,  7 ],
    571                                                 2016: [ 10, 31, /* to */ 11,  4 ],
    572                                         },
    573                                         {
    574                                                 name: 'Weihnachtsferien',
    575                                                 2010: [ 12, 24, /* to */  1,  7 ],
    576                                                 2011: [ 12, 27, /* to */  1,  5 ],
    577                                                 2012: [ 12, 24, /* to */  1,  5 ],
    578                                                 2013: [ 12, 23, /* to */  1,  4 ],
    579                                                 2014: [ 12, 24, /* to */  1,  5 ],
    580                                                 2015: [ 12, 24, /* to */  1,  5 ],
    581                                                 2016: [ 12, 24, /* to */  1,  5 ],
    582                                         },
    583                                 ],
    584                         },
    585                         'Niedersachsen': {
    586                                 'SH': [
    587                                         {
    588                                                 name: 'Winterferien',
    589                                                 2010: [  2,  1, /* to */  2,  2 ],
    590                                                 2011: [  1, 31, /* to */  2,  1 ],
    591                                                 2012: [  1, 30, /* to */  1, 31 ],
    592                                                 2013: [  1, 31, /* to */  2,  1 ],
    593                                                 2014: [  1, 30, /* to */  1, 31 ],
    594                                                 2015: [  2,  2, /* to */  2,  3 ],
    595                                                 2016: [  1, 28, /* to */  1, 29 ],
    596                                                 2017: [  1, 30, /* to */  1, 31 ],
    597                                         },
    598                                         {
    599                                                 name: 'Osterferien',
    600                                                 2010: [  3, 19, /* to */  4,  6 ],
    601                                                 2011: [  4, 16, /* to */  4, 30 ],
    602                                                 2012: [  3, 26, /* to */  4, 11,   4, 30, /* to */  4, 30 ],
    603                                                 2013: [  3, 16, /* to */  4,  2 ],
    604                                                 2014: [  4,  3, /* to */  4, 22,   5,  2, /* to */  5,  2 ],
    605                                                 2015: [  3, 25, /* to */  4, 10 ],
    606                                                 2016: [  3, 18, /* to */  4,  2 ],
    607                                                 2017: [  4, 10, /* to */  4, 22 ],
    608                                         },
    609                                         {
    610                                                 name: 'Pfingstferien',
    611                                                 2010: [  5, 14, /* to */  5, 14,   5, 25, /* to */  5, 25 ],
    612                                                 2011: [  6,  3, /* to */  6,  3,   6, 14, /* to */  6, 14 ],
    613                                                 2012: [  5, 18, /* to */  5, 18,   5, 29, /* to */  5, 29 ],
    614                                                 2013: [  5, 10, /* to */  5, 10,   5, 21, /* to */  5, 21 ],
    615                                                 2014: [  5, 30, /* to */  5, 30,   6, 10, /* to */  6, 10 ],
    616                                                 2015: [  5, 15, /* to */  5, 15,   5, 26, /* to */  5, 26 ],
    617                                                 2016: [  5,  6, /* to */  5,  6,   5, 17, /* to */  5, 17 ],
    618                                                 2017: [  5, 26, /* to */  5, 26,   6,  6, /* to */  6,  6 ],
    619                                         },
    620                                         {
    621                                                 name: 'Sommerferien',
    622                                                 2010: [  6, 24, /* to */  8,  4 ],
    623                                                 2011: [  7,  7, /* to */  8, 17 ],
    624                                                 2012: [  7, 23, /* to */  8, 31 ],
    625                                                 2013: [  6, 27, /* to */  8,  7 ],
    626                                                 2014: [  7, 31, /* to */  9, 10 ],
    627                                                 2015: [  7, 23, /* to */  9,  2 ],
    628                                                 2016: [  6, 23, /* to */  8,  3 ],
    629                                                 2017: [  6, 22, /* to */  8,  2 ],
    630                                         },
    631                                         {
    632                                                 name: 'Herbstferien',
    633                                                 2010: [ 10,  9, /* to */ 10, 23 ],
    634                                                 2011: [ 10, 17, /* to */ 10, 29 ],
    635                                                 2012: [ 10, 22, /* to */ 11,  3 ],
    636                                                 2013: [ 10,  4, /* to */ 10, 18 ],
    637                                                 2014: [ 10, 27, /* to */ 11,  8 ],
    638                                                 2015: [ 10, 19, /* to */ 10, 31 ],
    639                                                 2016: [ 10,  4, /* to */ 10, 15 ],
    640                                         },
    641                                         {
    642                                                 name: 'Weihnachtsferien',
    643                                                 2010: [ 12, 22, /* to */  1,  5 ],
    644                                                 2011: [ 12, 23, /* to */  1,  4 ],
    645                                                 2012: [ 12, 24, /* to */  1,  5 ],
    646                                                 2013: [ 12, 23, /* to */  1,  3 ],
    647                                                 2014: [ 12, 22, /* to */  1,  5 ],
    648                                                 2015: [ 12, 23, /* to */  1,  6 ],
    649                                                 2016: [ 12, 21, /* to */  1,  6 ],
    650                                         },
    651                                 ],
    652                         },
    653                         'Nordrhein-Westfalen': {
    654                                 'SH': [
    655                                         {
    656                                                 name: 'Osterferien',
    657                                                 2010: [  3, 27, /* to */  4, 10 ],
    658                                                 2011: [  4, 18, /* to */  4, 30 ],
    659                                                 2012: [  4,  2, /* to */  4, 14 ],
    660                                                 2013: [  3, 25, /* to */  4,  6 ],
    661                                                 2014: [  4, 14, /* to */  4, 26 ],
    662                                                 2015: [  3, 30, /* to */  4, 11 ],
    663                                                 2016: [  3, 21, /* to */  4,  2 ],
    664                                                 2017: [  4, 10, /* to */  4, 22 ],
    665                                         },
    666                                         {
    667                                                 name: 'Pfingstferien',
    668                                                 2010: [  5, 25, /* to */  5, 25 ],
    669                                                 2012: [  5, 29, /* to */  5, 29 ],
    670                                                 2013: [  5, 21, /* to */  5, 21 ],
    671                                                 2014: [  6, 10, /* to */  6, 10 ],
    672                                                 2015: [  5, 26, /* to */  5, 26 ],
    673                                                 2016: [  5, 17, /* to */  5, 17 ],
    674                                                 2017: [  6,  6, /* to */  6,  6 ],
    675                                         },
    676                                         {
    677                                                 name: 'Sommerferien',
    678                                                 2010: [  7, 15, /* to */  8, 27 ],
    679                                                 2011: [  7, 25, /* to */  9,  6 ],
    680                                                 2012: [  7,  9, /* to */  8, 21 ],
    681                                                 2013: [  7, 22, /* to */  9,  3 ],
    682                                                 2014: [  7,  7, /* to */  8, 19 ],
    683                                                 2015: [  6, 29, /* to */  8, 11 ],
    684                                                 2016: [  7, 11, /* to */  8, 23 ],
    685                                                 2017: [  7, 17, /* to */  8, 29 ],
    686                                         },
    687                                         {
    688                                                 name: 'Herbstferien',
    689                                                 2010: [ 10, 11, /* to */ 10, 23 ],
    690                                                 2011: [ 10, 24, /* to */ 11,  5 ],
    691                                                 2012: [ 10,  8, /* to */ 10, 20 ],
    692                                                 2013: [ 10, 21, /* to */ 11,  2 ],
    693                                                 2014: [ 10,  6, /* to */ 10, 18 ],
    694                                                 2015: [ 10,  5, /* to */ 10, 17 ],
    695                                                 2016: [ 10, 10, /* to */ 10, 21 ],
    696                                         },
    697                                         {
    698                                                 name: 'Weihnachtsferien',
    699                                                 2010: [ 12, 24, /* to */  1,  8 ],
    700                                                 2011: [ 12, 23, /* to */  1,  6 ],
    701                                                 2012: [ 12, 21, /* to */  1,  4 ],
    702                                                 2013: [ 12, 23, /* to */  1,  7 ],
    703                                                 2014: [ 12, 22, /* to */  1,  6 ],
    704                                                 2015: [ 12, 23, /* to */  1,  6 ],
    705                                                 2016: [ 12, 23, /* to */  1,  6 ],
    706                                         },
    707                                 ],
    708                         },
    709                         'Sachsen': {
    710                                 'SH': [
    711                                         {
    712                                                 name: 'Winterferien',
    713                                                 2010: [  2,  8, /* to */  2, 20 ],
    714                                                 2011: [  2, 12, /* to */  2, 26 ],
    715                                                 2012: [  2, 13, /* to */  2, 25 ],
    716                                                 2013: [  2,  4, /* to */  2, 15 ],
    717                                                 2014: [  2, 17, /* to */  3,  1 ],
    718                                                 2015: [  2,  9, /* to */  2, 21 ],
    719                                                 2016: [  2,  8, /* to */  2, 20 ],
    720                                                 2017: [  2, 13, /* to */  2, 24 ],
    721                                         },
    722                                         {
    723                                                 name: 'Osterferien',
    724                                                 2010: [  4,  1, /* to */  4, 10 ],
    725                                                 2011: [  4, 22, /* to */  4, 30 ],
    726                                                 2012: [  4,  6, /* to */  4, 14 ],
    727                                                 2013: [  3, 29, /* to */  4,  6 ],
    728                                                 2014: [  4, 18, /* to */  4, 26 ],
    729                                                 2015: [  4,  2, /* to */  4, 11 ],
    730                                                 2016: [  3, 25, /* to */  4,  2 ],
    731                                                 2017: [  4, 13, /* to */  4, 22 ],
    732                                         },
    733                                         {
    734                                                 name: 'Pfingstferien',
    735                                                 2010: [  5, 14, /* to */  5, 14 ],
    736                                                 2011: [  6,  3, /* to */  6,  3 ],
    737                                                 2012: [  5, 18, /* to */  5, 18 ],
    738                                                 2013: [  5, 10, /* to */  5, 10,   5, 18, /* to */  5, 22 ],
    739                                                 2014: [  5, 30, /* to */  5, 30 ],
    740                                                 2015: [  5, 15, /* to */  5, 15 ],
    741                                                 2016: [  5,  6, /* to */  5,  6 ],
    742                                                 2017: [  5, 26, /* to */  5, 26 ],
    743                                         },
    744                                         {
    745                                                 name: 'Sommerferien',
    746                                                 2010: [  6, 28, /* to */  8,  6 ],
    747                                                 2011: [  7, 11, /* to */  8, 19 ],
    748                                                 2012: [  7, 23, /* to */  8, 31 ],
    749                                                 2013: [  7, 15, /* to */  8, 23 ],
    750                                                 2014: [  7, 21, /* to */  8, 29 ],
    751                                                 2015: [  7, 13, /* to */  8, 21 ],
    752                                                 2016: [  6, 27, /* to */  8,  5 ],
    753                                                 2017: [  6, 26, /* to */  8,  4 ],
    754                                         },
    755                                         {
    756                                                 name: 'Herbstferien',
    757                                                 2010: [ 10,  4, /* to */ 10, 16 ],
    758                                                 2011: [ 10, 17, /* to */ 10, 28 ],
    759                                                 2012: [ 10, 22, /* to */ 11,  2 ],
    760                                                 2013: [ 10, 21, /* to */ 11,  1 ],
    761                                                 2014: [ 10, 20, /* to */ 10, 31 ],
    762                                                 2015: [ 10, 12, /* to */ 10, 24 ],
    763                                                 2016: [ 10,  3, /* to */ 10, 15 ],
    764                                         },
    765                                         {
    766                                                 name: 'Weihnachtsferien',
    767                                                 2010: [ 12, 23, /* to */  1,  1 ],
    768                                                 2011: [ 12, 23, /* to */  1,  2 ],
    769                                                 2012: [ 12, 22, /* to */  1,  2 ],
    770                                                 2013: [ 12, 21, /* to */  1,  3 ],
    771                                                 2014: [ 12, 22, /* to */  1,  3 ],
    772                                                 2015: [ 12, 21, /* to */  1,  2 ],
    773                                                 2016: [ 12, 23, /* to */  1,  2 ],
    774                                         },
    775                                 ],
    776                         },
    777                         'Thüringen': {
    778                                 'SH': [
    779                                         {
    780                                                 name: 'Winterferien',
    781                                                 2010: [  2,  1, /* to */  2,  6 ],
    782                                                 2011: [  1, 31, /* to */  2,  5 ],
    783                                                 2012: [  2,  6, /* to */  2, 11 ],
    784                                                 2013: [  2, 18, /* to */  2, 23 ],
    785                                                 2014: [  2, 17, /* to */  2, 22 ],
    786                                                 2015: [  2,  2, /* to */  2,  7 ],
    787                                                 2016: [  2,  1, /* to */  2,  6 ],
    788                                                 2017: [  2,  6, /* to */  2, 11 ],
    789                                         },
    790                                         {
    791                                                 name: 'Osterferien',
    792                                                 2010: [  3, 29, /* to */  4,  9 ],
    793                                                 2011: [  4, 18, /* to */  4, 30 ],
    794                                                 2012: [  4,  2, /* to */  4, 13 ],
    795                                                 2013: [  3, 25, /* to */  4,  6 ],
    796                                                 2014: [  4, 19, /* to */  5,  2 ],
    797                                                 2015: [  3, 30, /* to */  4, 11 ],
    798                                                 2016: [  3, 24, /* to */  4,  2 ],
    799                                                 2017: [  4, 10, /* to */  4, 21 ],
    800                                         },
    801                                         {
    802                                                 name: 'Sommerferien',
    803                                                 2010: [  6, 24, /* to */  8,  4 ],
    804                                                 2011: [  7, 11, /* to */  8, 19 ],
    805                                                 2012: [  7, 23, /* to */  8, 31 ],
    806                                                 2013: [  7, 15, /* to */  8, 23 ],
    807                                                 2014: [  7, 21, /* to */  8, 29 ],
    808                                                 2015: [  7, 13, /* to */  8, 21 ],
    809                                                 2016: [  6, 27, /* to */  8, 10 ],
    810                                                 2017: [  6, 26, /* to */  8,  9 ],
    811                                         },
    812                                         {
    813                                                 name: 'Pfingstferien',
    814                                                 2011: [  6, 11, /* to */  6, 14 ],
    815                                                 2012: [  5, 25, /* to */  5, 29 ],
    816                                                 2013: [  5, 10, /* to */  5, 10 ],
    817                                                 2014: [  5, 30, /* to */  5, 30 ],
    818                                                 2015: [  5, 15, /* to */  5, 15 ],
    819                                                 2016: [  5,  6, /* to */  5,  6 ],
    820                                                 2017: [  5, 26, /* to */  5, 26 ],
    821                                         },
    822                                         {
    823                                                 name: 'Herbstferien',
    824                                                 2010: [ 10,  9, /* to */ 10, 23 ],
    825                                                 2011: [ 10, 17, /* to */ 10, 28 ],
    826                                                 2012: [ 10, 22, /* to */ 11,  3 ],
    827                                                 2013: [ 10, 21, /* to */ 11,  2 ],
    828                                                 2014: [ 10,  6, /* to */ 10, 18 ],
    829                                                 2015: [ 10,  5, /* to */ 10, 17 ],
    830                                                 2016: [ 10, 10, /* to */ 10, 22 ],
    831                                         },
    832                                         {
    833                                                 name: 'Weihnachtsferien',
    834                                                 2010: [ 12, 23, /* to */  1,  1 ],
    835                                                 2011: [ 12, 23, /* to */  1,  1 ],
    836                                                 2012: [ 12, 24, /* to */  1,  5 ],
    837                                                 2013: [ 12, 23, /* to */  1,  4 ],
    838                                                 2014: [ 12, 22, /* to */  1,  3 ],
    839                                                 2015: [ 12, 23, /* to */  1,  2 ],
    840                                                 2016: [ 12, 23, /* to */ 12, 31 ],
    841                                         },
    842                                 ],
    843                         },
    844                         'Hamburg': {
    845                                 'SH': [
    846                                         {
    847                                                 name: 'Winterferien',
    848                                                 2010: [  1, 29, /* to */  1, 29 ],
    849                                                 2011: [  1, 31, /* to */  1, 31 ],
    850                                                 2012: [  1, 30, /* to */  1, 30 ],
    851                                                 2013: [  2,  1, /* to */  2,  1 ],
    852                                                 2014: [  1, 31, /* to */  1, 31 ],
    853                                                 2015: [  1, 30, /* to */  1, 30 ],
    854                                                 2016: [  1, 29, /* to */  1, 29 ],
    855                                                 2017: [  1, 30, /* to */  1, 30 ],
    856                                         },
    857                                         {
    858                                                 name: 'Osterferien',
    859                                                 2010: [  3,  8, /* to */  3, 20 ],
    860                                                 2011: [  3,  7, /* to */  3, 18 ],
    861                                                 2012: [  3,  5, /* to */  3, 16 ],
    862                                                 2013: [  3,  4, /* to */  3, 15 ],
    863                                                 2014: [  3,  3, /* to */  3, 14 ],
    864                                                 2015: [  3,  2, /* to */  3, 13 ],
    865                                                 2016: [  3,  7, /* to */  3, 18 ],
    866                                                 2017: [  3,  6, /* to */  3, 17 ],
    867                                         },
    868                                         {
    869                                                 name: 'Pfingstferien',
    870                                                 2010: [  5, 14, /* to */  5, 22 ],
    871                                                 2011: [  4, 26, /* to */  4, 29,   6,  3, /* to */  6,  3 ],
    872                                                 2012: [  4, 30, /* to */  5,  4,   5, 18, /* to */  5, 18 ],
    873                                                 2013: [  5,  2, /* to */  5, 10 ],
    874                                                 2014: [  4, 28, /* to */  5,  2,   5, 30, /* to */  5, 30 ],
    875                                                 2015: [  5, 11, /* to */  5, 15 ],
    876                                                 2016: [  5,  6, /* to */  5,  6,   5, 17, /* to */  5, 20 ],
    877                                                 2017: [  5, 22, /* to */  5, 26 ],
    878                                         },
    879                                         {
    880                                                 name: 'Sommerferien',
    881                                                 2010: [  7,  8, /* to */  8, 18 ],
    882                                                 2011: [  6, 30, /* to */  8, 10 ],
    883                                                 2012: [  6, 21, /* to */  8,  1 ],
    884                                                 2013: [  6, 20, /* to */  7, 31 ],
    885                                                 2014: [  7, 10, /* to */  8, 20 ],
    886                                                 2015: [  7, 16, /* to */  8, 26 ],
    887                                                 2016: [  7, 21, /* to */  8, 31 ],
    888                                                 2017: [  7, 20, /* to */  8, 30 ],
    889                                         },
    890                                         {
    891                                                 name: 'Herbstferien',
    892                                                 2010: [ 10,  4, /* to */ 10, 15 ],
    893                                                 2011: [ 10,  4, /* to */ 10, 14 ],
    894                                                 2012: [ 10,  1, /* to */ 10, 12 ],
    895                                                 2013: [  9, 30, /* to */ 10, 11 ],
    896                                                 2014: [ 10, 13, /* to */ 10, 24 ],
    897                                                 2015: [ 10, 19, /* to */ 10, 30 ],
    898                                                 2016: [ 10, 17, /* to */ 10, 28 ],
    899                                         },
    900                                         {
    901                                                 name: 'Weihnachtsferien',
    902                                                 2010: [ 12, 23, /* to */  1,  3 ],
    903                                                 2011: [ 12, 27, /* to */  1,  6 ],
    904                                                 2012: [ 12, 21, /* to */  1,  4 ],
    905                                                 2013: [ 12, 19, /* to */  1,  3 ],
    906                                                 2014: [ 12, 22, /* to */  1,  6 ],
    907                                                 2015: [ 12, 21, /* to */  1,  1 ],
    908                                                 2016: [ 12, 27, /* to */  1,  6 ],
    909                                         },
    910                                 ],
    911                         },
    912                         'Sachsen-Anhalt': {
    913                                 'SH': [
    914                                         {
    915                                                 name: 'Winterferien',
    916                                                 2010: [  2,  8, /* to */  2, 13 ],
    917                                                 2011: [  2,  5, /* to */  2, 12 ],
    918                                                 2012: [  2,  4, /* to */  2, 11 ],
    919                                                 2013: [  2,  1, /* to */  2,  8 ],
    920                                                 2014: [  2,  1, /* to */  2, 12 ],
    921                                                 2015: [  2,  2, /* to */  2, 14 ],
    922                                                 2016: [  2,  1, /* to */  2, 10 ],
    923                                                 2017: [  2,  4, /* to */  2, 11 ],
    924                                         },
    925                                         {
    926                                                 name: 'Osterferien',
    927                                                 2010: [  3, 29, /* to */  4,  9 ],
    928                                                 2011: [  4, 18, /* to */  4, 27 ],
    929                                                 2012: [  4,  2, /* to */  4,  7 ],
    930                                                 2013: [  3, 25, /* to */  3, 30 ],
    931                                                 2014: [  4, 14, /* to */  4, 17 ],
    932                                                 2015: [  4,  2, /* to */  4,  2 ],
    933                                                 2016: [  3, 24, /* to */  3, 24 ],
    934                                                 2017: [  4, 10, /* to */  4, 13 ],
    935                                         },
    936                                         {
    937                                                 name: 'Pfingstferien',
    938                                                 2010: [  5, 14, /* to */  5, 22 ],
    939                                                 2011: [  6, 14, /* to */  6, 18 ],
    940                                                 2012: [  5, 18, /* to */  5, 25 ],
    941                                                 2013: [  5, 10, /* to */  5, 18 ],
    942                                                 2014: [  5, 30, /* to */  6,  7 ],
    943                                                 2015: [  5, 15, /* to */  5, 23 ],
    944                                                 2016: [  5,  6, /* to */  5, 14 ],
    945                                                 2017: [  5, 26, /* to */  5, 26 ],
    946                                         },
    947                                         {
    948                                                 name: 'Sommerferien',
    949                                                 2010: [  6, 24, /* to */  8,  4 ],
    950                                                 2011: [  7, 11, /* to */  8, 24 ],
    951                                                 2012: [  7, 23, /* to */  9,  5 ],
    952                                                 2013: [  7, 15, /* to */  8, 28 ],
    953                                                 2014: [  7, 21, /* to */  9,  3 ],
    954                                                 2015: [  7, 13, /* to */  8, 26 ],
    955                                                 2016: [  6, 27, /* to */  8, 10 ],
    956                                                 2017: [  6, 26, /* to */  8,  9 ],
    957                                         },
    958                                         {
    959                                                 name: 'Herbstferien',
    960                                                 2010: [ 10, 18, /* to */ 10, 23 ],
    961                                                 2011: [ 10, 17, /* to */ 10, 22 ],
    962                                                 2012: [ 10, 29, /* to */ 11,  2 ],
    963                                                 2013: [ 10, 21, /* to */ 10, 25 ],
    964                                                 2014: [ 10, 27, /* to */ 10, 30 ],
    965                                                 2015: [ 10, 17, /* to */ 10, 24 ],
    966                                                 2016: [ 10,  4, /* to */ 10, 15 ],
    967                                         },
    968                                         {
    969                                                 name: 'Weihnachtsferien',
    970                                                 2010: [ 12, 22, /* to */  1,  5 ],
    971                                                 2011: [ 12, 22, /* to */  1,  7 ],
    972                                                 2012: [ 12, 19, /* to */  1,  4 ],
    973                                                 2013: [ 12, 21, /* to */  1,  3 ],
    974                                                 2014: [ 12, 22, /* to */  1,  5 ],
    975                                                 2015: [ 12, 21, /* to */  1,  5 ],
    976                                                 2016: [ 12, 19, /* to */  1,  2 ],
    977                                         },
    978                                 ],
    979                         },
    980                         'Rheinland-Pfalz': {
    981                                 'SH': [
    982                                         {
    983                                                 name: 'Osterferien',
    984                                                 2010: [  3, 26, /* to */  4,  9 ],
    985                                                 2011: [  4, 18, /* to */  4, 29 ],
    986                                                 2012: [  3, 29, /* to */  4, 13 ],
    987                                                 2013: [  3, 20, /* to */  4,  5 ],
    988                                                 2014: [  4, 11, /* to */  4, 25 ],
    989                                                 2015: [  3, 26, /* to */  4, 10 ],
    990                                                 2016: [  3, 18, /* to */  4,  1 ],
    991                                                 2017: [  4, 10, /* to */  4, 21 ],
    992                                         },
    993                                         {
    994                                                 name: 'Sommerferien',
    995                                                 2010: [  7,  5, /* to */  8, 13 ],
    996                                                 2011: [  6, 27, /* to */  8,  5 ],
    997                                                 2012: [  7,  2, /* to */  8, 10 ],
    998                                                 2013: [  7,  8, /* to */  8, 16 ],
    999                                                 2014: [  7, 28, /* to */  9,  5 ],
    1000                                                 2015: [  7, 27, /* to */  9,  4 ],
    1001                                                 2016: [  7, 18, /* to */  8, 26 ],
    1002                                                 2017: [  7,  3, /* to */  8, 11 ],
    1003                                         },
    1004                                         {
    1005                                                 name: 'Herbstferien',
    1006                                                 2010: [ 10, 11, /* to */ 10, 22 ],
    1007                                                 2011: [ 10,  4, /* to */ 10, 14 ],
    1008                                                 2012: [ 10,  1, /* to */ 10, 12 ],
    1009                                                 2013: [ 10,  4, /* to */ 10, 18 ],
    1010                                                 2014: [ 10, 20, /* to */ 10, 31 ],
    1011                                                 2015: [ 10, 19, /* to */ 10, 30 ],
    1012                                                 2016: [ 10, 10, /* to */ 10, 21 ],
    1013                                         },
    1014                                         {
    1015                                                 name: 'Weihnachtsferien',
    1016                                                 2010: [ 12, 23, /* to */  1,  7 ],
    1017                                                 2011: [ 12, 22, /* to */  1,  6 ],
    1018                                                 2012: [ 12, 20, /* to */  1,  4 ],
    1019                                                 2013: [ 12, 23, /* to */  1,  7 ],
    1020                                                 2014: [ 12, 22, /* to */  1,  7 ],
    1021                                                 2015: [ 12, 23, /* to */  1,  8 ],
    1022                                                 2016: [ 12, 22, /* to */  1,  6 ],
    1023                                         },
    1024                                 ],
    1025                         },
    1026                         'Brandenburg': {
    1027                                 'SH': [
    1028                                         {
    1029                                                 name: 'Winterferien',
    1030                                                 2010: [  2,  1, /* to */  2,  6 ],
    1031                                                 2011: [  1, 31, /* to */  2,  5 ],
    1032                                                 2012: [  1, 30, /* to */  2,  4 ],
    1033                                                 2013: [  2,  4, /* to */  2,  9 ],
    1034                                                 2014: [  2,  3, /* to */  2,  8 ],
    1035                                                 2015: [  2,  2, /* to */  2,  7 ],
    1036                                                 2016: [  2,  1, /* to */  2,  6 ],
    1037                                                 2017: [  1, 30, /* to */  2,  4 ],
    1038                                         },
    1039                                         {
    1040                                                 name: 'Osterferien',
    1041                                                 2010: [  3, 31, /* to */  4, 10 ],
    1042                                                 2011: [  4, 20, /* to */  4, 30 ],
    1043                                                 2012: [  4,  4, /* to */  4, 14,   4, 30, /* to */  4, 30 ],
    1044                                                 2013: [  3, 27, /* to */  4,  6 ],
    1045                                                 2014: [  4, 16, /* to */  4, 26,   5,  2, /* to */  5,  2 ],
    1046                                                 2015: [  4,  1, /* to */  4, 11 ],
    1047                                                 2016: [  3, 23, /* to */  4,  2 ],
    1048                                                 2017: [  4, 12, /* to */  4, 22 ],
    1049                                         },
    1050                                         {
    1051                                                 name: 'Pfingstferien',
    1052                                                 2010: [  5, 14, /* to */  5, 14 ],
    1053                                                 2011: [  6,  3, /* to */  6,  3 ],
    1054                                                 2012: [  5, 18, /* to */  5, 18 ],
    1055                                                 2013: [  5, 10, /* to */  5, 10 ],
    1056                                                 2014: [  5, 30, /* to */  5, 30 ],
    1057                                                 2015: [  5, 15, /* to */  5, 15 ],
    1058                                                 2016: [  5,  6, /* to */  5,  6,   5, 17, /* to */  5, 17 ],
    1059                                                 2017: [  5, 26, /* to */  5, 26 ],
    1060                                         },
    1061                                         {
    1062                                                 name: 'Sommerferien',
    1063                                                 2010: [  7,  8, /* to */  8, 21 ],
    1064                                                 2011: [  6, 30, /* to */  8, 13 ],
    1065                                                 2012: [  6, 21, /* to */  8,  3 ],
    1066                                                 2013: [  6, 20, /* to */  8,  2 ],
    1067                                                 2014: [  7, 10, /* to */  8, 22 ],
    1068                                                 2015: [  7, 16, /* to */  8, 28 ],
    1069                                                 2016: [  7, 21, /* to */  9,  3 ],
    1070                                                 2017: [  7, 20, /* to */  9,  1 ],
    1071                                         },
    1072                                         {
    1073                                                 name: 'Herbstferien',
    1074                                                 2010: [ 10, 11, /* to */ 10, 23 ],
    1075                                                 2011: [ 10,  4, /* to */ 10, 14 ],
    1076                                                 2012: [ 10,  1, /* to */ 10, 13 ],
    1077                                                 2013: [  9, 30, /* to */ 10, 12,  11,  1, /* to */ 11,  1 ],
    1078                                                 2014: [ 10, 20, /* to */ 11,  1 ],
    1079                                                 2015: [ 10, 19, /* to */ 10, 30 ],
    1080                                                 2016: [ 10, 17, /* to */ 10, 28 ],
    1081                                         },
    1082                                         {
    1083                                                 name: 'Weihnachtsferien',
    1084                                                 2010: [ 12, 23, /* to */  1,  1 ],
    1085                                                 2011: [ 12, 23, /* to */  1,  3 ],
    1086                                                 2012: [ 12, 24, /* to */  1,  4 ],
    1087                                                 2013: [ 12, 23, /* to */  1,  3 ],
    1088                                                 2014: [ 12, 22, /* to */  1,  2 ],
    1089                                                 2015: [ 12, 23, /* to */  1,  2 ],
    1090                                                 2016: [ 12, 23, /* to */  1,  3 ],
    1091                                         },
    1092                                 ],
    1093                         },
    1094                 }, // }}}
    1095                 'at': { // {{{
    1096                         'PH': { // http://de.wikipedia.org/wiki/Feiertage_in_%C3%96sterreich
    1097                                 'Neujahrstag'                : [  1,  1 ],
    1098                                 'Heilige Drei Könige'        : [  1,  6 ],
    1099                                 // 'Josef'                   : [  3, 19, [ 'Kärnten', 'Steiermark', 'Tirol', 'Vorarlberg' ] ],
    1100                                 // 'Karfreitag'              : [ 'easter', -2 ],
    1101                                 'Ostermontag'                : [ 'easter',  1 ],
    1102                                 'Staatsfeiertag'             : [  5,  1 ],
    1103                                 // 'Florian'                 : [  5,  4, [ 'Oberösterreich' ] ],
    1104                                 'Christi Himmelfahrt'        : [ 'easter', 39 ],
    1105                                 'Pfingstmontag'              : [ 'easter', 50 ],
    1106                                 'Fronleichnam'               : [ 'easter', 60 ],
    1107                                 'Mariä Himmelfahrt'          : [  8, 15 ],
    1108                                 // 'Rupert'                  : [  9, 24, [ 'Salzburg' ] ],
    1109                                 // 'Tag der Volksabstimmung' : [ 10, 10, [ 'Kärnten' ] ],
    1110                                 'Nationalfeiertag'           : [ 10, 26 ],
    1111                                 'Allerheiligen'              : [ 11,  1 ],
    1112                                 // 'Martin'                  : [ 11, 11, [ 'Burgenland' ] ],
    1113                                 // 'Leopold'                 : [ 11, 15, [ 'Niederösterreich', 'Wien' ] ],
    1114                                 'Mariä Empfängnis'           : [ 12,  8 ],
    1115                                 // 'Heiliger Abend'          : [ 12, 24 ],
    1116                                 'Christtag'                  : [ 12, 25 ],
    1117                                 'Stefanitag'                 : [ 12, 26 ],
    1118                                 // 'Silvester'               : [ 12, 31 ],
    1119                         },
    1120                 }, // }}}
    1121                 'ca': { // {{{
    1122                         'PH': { // https://en.wikipedia.org/wiki/Public_holidays_in_Canada
    1123                                 "New Year's Day" : [  1,  1 ],
    1124                                 "Good Friday"    : [  'easter', -2 ],
    1125                                 "Canada Day"     : [  'canadaDay', 0 ],
    1126                                 "Labour Day"     : [  'firstSeptemberMonday', 0 ],
    1127                                 "Christmas Day"  : [ 12, 25 ]
    1128                         },
    1129                         'Alberta': {
    1130                                 'PH': {
    1131                                         "New Year's Day"     : [  1,  1 ],
    1132                                         "Alberta Family Day" : [  'firstFebruaryMonday', 14 ],
    1133                                         "Good Friday"        : [  'easter', -2 ],
    1134                                         "Easter Monday"      : [  'easter', 1 ],
    1135                                         "Victoria Day"       : [  'victoriaDay', 0 ],
    1136                                         "Canada Day"         : [  'canadaDay', 0 ],
    1137                                         "Heritage Day"       : [  'firstAugustMonday', 0 ],
    1138                                         "Labour Day"         : [  'firstSeptemberMonday', 0 ],
    1139                                         "Thanksgiving"       : [  'firstOctoberMonday', 7 ],
    1140                                         "Remembrance Day"    : [ 11, 11 ],
    1141                                         "Christmas Day"      : [ 12, 25 ],
    1142                                         "Boxing Day"         : [ 12, 26 ]
    1143                                 },
    1144                         },
    1145                         'British Columbia': {
    1146                                 'PH': {
    1147                                         "New Year's Day"       : [  1,  1 ],
    1148                                         "Family Day"           : [  'firstFebruaryMonday', 7 ],
    1149                                         "Good Friday"          : [  'easter', -2 ],
    1150                                         "Victoria Day"         : [  'victoriaDay', 0 ],
    1151                                         "Canada Day"           : [  'canadaDay', 0 ],
    1152                                         "British Columbia Day" : [  'firstAugustMonday', 0 ],
    1153                                         "Labour Day"           : [  'firstSeptemberMonday', 0 ],
    1154                                         "Thanksgiving"         : [  'firstOctoberMonday', 7 ],
    1155                                         "Remembrance Day"      : [ 11, 11 ],
    1156                                         "Christmas Day"        : [ 12, 25 ]
    1157                                 },
    1158                         },
    1159                         'Manitoba': {
    1160                                 'PH': {
    1161                                         "New Year's Day"  : [  1,  1 ],
    1162                                         "Louis Riel Day"  : [  'firstFebruaryMonday', 14 ],
    1163                                         "Good Friday"     : [  'easter', -2 ],
    1164                                         "Victoria Day"    : [  'victoriaDay', 0 ],
    1165                                         "Canada Day"      : [  'canadaDay', 0 ],
    1166                                         "Civic Holiday"   : [  'firstAugustMonday', 0 ],
    1167                                         "Labour Day"      : [  'firstSeptemberMonday', 0 ],
    1168                                         "Thanksgiving"    : [  'firstOctoberMonday', 7 ],
    1169                                         "Remembrance Day" : [ 11, 11 ],
    1170                                         "Christmas Day"   : [ 12, 25 ]
    1171                                 },
    1172                         },
    1173                         'New Brunswick': {
    1174                                 'PH': {
    1175                                         "New Year's Day"    : [  1,  1 ],
    1176                                         "Good Friday"       : [  'easter', -2 ],
    1177                                         "Victoria Day"      : [  'victoriaDay', 0 ],
    1178                                         "Canada Day"        : [  'canadaDay', 0 ],
    1179                                         "New Brunswick Day" : [  'firstAugustMonday', 0 ],
    1180                                         "Labour Day"        : [  'firstSeptemberMonday', 0 ],
    1181                                         "Thanksgiving"      : [  'firstOctoberMonday', 7 ],
    1182                                         "Remembrance Day"   : [ 11, 11 ],
    1183                                         "Christmas Day"     : [ 12, 25 ],
    1184                                         "Boxing Day"        : [ 12, 26 ]
    1185                                 },
    1186                         },
    1187                         'Newfoundland and Labrador': {
    1188                                 'PH': {
    1189                                         "New Year's Day"      : [  1,  1 ],
    1190                                         "Saint Patrick's Day" : [  3, 17 ],
    1191                                         "Good Friday"         : [  'easter', -2 ],
    1192                                         "Saint George's Day"  : [  4, 23 ],
    1193                                         "Discovery Day"       : [  6, 24 ],
    1194                                         "Memorial Day"        : [  7, 1 ],
    1195                                         "Orangemen's Day"     : [  7, 12 ],
    1196                                         "Labour Day"          : [  'firstSeptemberMonday', 0 ],
    1197                                         "Armistice Day"       : [ 11, 11 ],
    1198                                         "Christmas Day"       : [ 12, 25 ]
    1199                                 },
    1200                         },
    1201                         'Northwest Territories': {
    1202                                 'PH': {
    1203                                         "New Year's Day"          : [  1,  1 ],
    1204                                         "Good Friday"             : [  'easter', -2 ],
    1205                                         "Victoria Day"            : [  'victoriaDay', 0 ],
    1206                                         "National Aboriginal Day" : [  6, 21 ],
    1207                                         "Canada Day"              : [  'canadaDay', 0 ],
    1208                                         "Civic Holiday"           : [  'firstAugustMonday', 0 ],
    1209                                         "Labour Day"              : [  'firstSeptemberMonday', 0 ],
    1210                                         "Thanksgiving"            : [  'firstOctoberMonday', 7 ],
    1211                                         "Remembrance Day"         : [ 11, 11 ],
    1212                                         "Christmas Day"           : [ 12, 25 ]
    1213                                 },
    1214                         },
    1215                         'Nova Scotia': {
    1216                                 'PH': {
    1217                                         "New Year's Day"  : [  1,  1 ],
    1218                                         "Good Friday"     : [  'easter', -2 ],
    1219                                         "Victoria Day"    : [  'victoriaDay', 0 ],
    1220                                         "Canada Day"      : [  'canadaDay', 0 ],
    1221                                         "Natal Day"       : [  'firstAugustMonday', 0 ],
    1222                                         "Labour Day"      : [  'firstSeptemberMonday', 0 ],
    1223                                         "Thanksgiving"    : [  'firstOctoberMonday', 7 ],
    1224                                         "Remembrance Day" : [ 11, 11 ],
    1225                                         "Christmas Day"   : [ 12, 25 ],
    1226                                         "Boxing Day"      : [ 12, 26 ]
    1227                                 },
    1228                         },
    1229                         'Nunavut': {
    1230                                 'PH': {
    1231                                         "New Year's Day"  : [  1,  1 ],
    1232                                         "Good Friday"     : [  'easter', -2 ],
    1233                                         "Victoria Day"    : [  'victoriaDay', 0 ],
    1234                                         "Canada Day"      : [  'canadaDay', 0 ],
    1235                                         "Nunavut Day"     : [  7, 9 ],
    1236                                         "Civic Holiday"   : [  'firstAugustMonday', 0 ],
    1237                                         "Labour Day"      : [  'firstSeptemberMonday', 0 ],
    1238                                         "Thanksgiving"    : [  'firstOctoberMonday', 7 ],
    1239                                         "Remembrance Day" : [ 11, 11 ],
    1240                                         "Christmas Day"   : [ 12, 25 ]
    1241                                 },
    1242                         },
    1243                         'Ontario': {
    1244                                 'PH': {
    1245                                         "New Year's Day"              : [  1,  1 ],
    1246                                         "Family Day"                  : [  'firstFebruaryMonday', 14 ],
    1247                                         "Good Friday"                 : [  'easter', -2 ],
    1248                                         "Victoria Day"                : [  'victoriaDay', 0 ],
    1249                                         "Canada Day"                  : [  'canadaDay', 0 ],
    1250                                         "August Civic Public Holiday" : [  'firstAugustMonday', 0 ],
    1251                                         "Labour Day"                  : [  'firstSeptemberMonday', 0 ],
    1252                                         "Thanksgiving"                : [  'firstOctoberMonday', 7 ],
    1253                                         "Remembrance Day"             : [ 11, 11 ],
    1254                                         "Christmas Day"               : [ 12, 25 ],
    1255                                         "Boxing Day"                  : [ 12, 26 ]
    1256                                 },
    1257                         },
    1258                         'Prince Edward Island': {
    1259                                 'PH': {
    1260                                         "New Year's Day"      : [  1,  1 ],
    1261                                         "Islander Day"        : [  'firstFebruaryMonday', 14 ],
    1262                                         "Good Friday"         : [  'easter', -2 ],
    1263                                         "Easter Monday"       : [  'easter', 1 ],
    1264                                         "Victoria Day"        : [  'victoriaDay', 0 ],
    1265                                         "Canada Day"          : [  'canadaDay', 0 ],
    1266                                         "Civic Holiday"       : [  'firstAugustMonday', 0 ],
    1267                                         "Gold Cup Parade Day" : [  'firstAugustMonday', 18 ],
    1268                                         "Labour Day"          : [  'firstSeptemberMonday', 0 ],
    1269                                         "Thanksgiving"        : [  'firstOctoberMonday', 7 ],
    1270                                         "Remembrance Day"     : [ 11, 11 ],
    1271                                         "Christmas Day"       : [ 12, 25 ],
    1272                                         "Boxing Day"          : [ 12, 26 ]
    1273                                 },
    1274                         },
    1275                         'Quebec': {
    1276                                 'PH': {
    1277                                         "Jour de l'an"                    : [  1,  1 ],
    1278                                         "Vendredi saint"                  : [  'easter', -2 ],
    1279                                         "Lundi de Pâques"                 : [  'easter', 1 ],
    1280                                         "Journée nationale des patriotes" : [  'victoriaDay', 0 ],
    1281                                         "Fête nationale du Québec"        : [  6, 24 ],
    1282                                         "Fête du Canada"                  : [  'canadaDay', 0 ],
    1283                                         "Fête du Travail"                 : [  'firstSeptemberMonday', 0 ],
    1284                                         "Jour de l'Action de grâce"       : [  'firstOctoberMonday', 7 ],
    1285                                         "Noël"                            : [ 12, 25 ]
    1286                                 },
    1287                         },
    1288                         'Saskatchewan': {
    1289                                 'PH': {
    1290                                         "New Year's Day"   : [  1,  1 ],
    1291                                         "Family Day"       : [  'firstFebruaryMonday', 14 ],
    1292                                         "Good Friday"      : [  'easter', -2 ],
    1293                                         "Victoria Day"     : [  'victoriaDay', 0 ],
    1294                                         "Canada Day"       : [  'canadaDay', 0 ],
    1295                                         "Saskatchewan Day" : [  'firstAugustMonday', 0 ],
    1296                                         "Labour Day"       : [  'firstSeptemberMonday', 0 ],
    1297                                         "Thanksgiving"     : [  'firstOctoberMonday', 7 ],
    1298                                         "Remembrance Day"  : [ 11, 11 ],
    1299                                         "Christmas Day"    : [ 12, 25 ]
    1300                                 },
    1301                         },
    1302                         'Yukon': {
    1303                                 'PH': {
    1304                                         "New Year's Day"  : [  1,  1 ],
    1305                                         "Heritage Day"    : [  'lastFebruarySunday',  -2 ],
    1306                                         "Good Friday"     : [  'easter', -2 ],
    1307                                         "Easter Monday"   : [  'easter', 1 ],
    1308                                         "Victoria Day"    : [  'victoriaDay', 0 ],
    1309                                         "Canada Day"      : [  'canadaDay', 0 ],
    1310                                         "Discovery Day"   : [  'firstAugustMonday', 14 ],
    1311                                         "Labour Day"      : [  'firstSeptemberMonday', 0 ],
    1312                                         "Thanksgiving"    : [  'firstOctoberMonday', 7 ],
    1313                                         "Remembrance Day" : [ 11, 11 ],
    1314                                         "Christmas Day"   : [ 12, 25 ],
    1315                                         "Boxing Day"      : [ 12, 26 ]
    1316                                 },
    1317                         },
    1318                 }, // }}}
    1319                 'ru': { // {{{
    1320                         'PH': { // https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B0%D0%B7%D0%B4%D0%BD%D0%B8%D0%BA%D0%B8_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8
    1321                                 "1. Новогодние каникулы":     [ 1, 1 ],
    1322                                 "2. Новогодние каникулы":     [ 1, 2 ],
    1323                                 "3. Новогодние каникулы":     [ 1, 3 ],
    1324                                 "4. Новогодние каникулы":     [ 1, 4 ],
    1325                                 "5. Новогодние каникулы":     [ 1, 5 ],
    1326                                 "6. Новогодние каникулы":     [ 1, 6 ],
    1327                                 "Рождество Христово":         [ 1, 7 ],
    1328                                 "8. Новогодние каникулы":     [ 1, 8 ],
    1329                                 "День защитника Отечества":   [ 2, 23 ],
    1330                                 "Международный женский день": [ 3, 8 ],
    1331                                 "День Победы":                [ 5, 9 ],
    1332                                 "Праздник Весны и Труда":     [ 5, 1 ],
    1333                                 "День народного единства":    [ 11, 4 ],
    1334                                 "День России":                [ 6, 12 ],
    1335                         },
    1336                         'Tatarstan': { // https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B0%D0%B7%D0%B4%D0%BD%D0%B8%D0%BA%D0%B8_%D0%A2%D0%B0%D1%82%D0%B0%D1%80%D1%81%D1%82%D0%B0%D0%BD%D0%B0
    1337                                 'PH': {
    1338                                         "1. Новогодние каникулы":                [ 1, 1 ],
    1339                                         "2. Новогодние каникулы":                [ 1, 2 ],
    1340                                         "3. Новогодние каникулы":                [ 1, 3 ],
    1341                                         "4. Новогодние каникулы":                [ 1, 4 ],
    1342                                         "5. Новогодние каникулы":                [ 1, 5 ],
    1343                                         "6. Новогодние каникулы":                [ 1, 6 ],
    1344                                         "Рождество Христово":                    [ 1, 7 ],
    1345                                         "8. Новогодние каникулы":                [ 1, 8 ],
    1346                                         "День защитника Отечества":              [ 2, 23 ],
    1347                                         "Международный женский день":            [ 3, 8 ],
    1348                                         "День Победы":                           [ 5, 9 ],
    1349                                         "Праздник Весны и Труда":                [ 5, 1 ],
    1350                                         "День народного единства":               [ 11, 4 ],
    1351                                         "День России":                           [ 6, 12 ],
    1352                                         // local
    1353                                         "Ураза-байрам":                          [ 7, 28 ],
    1354                                         "День Республики Татарстан":             [ 8, 30 ],
    1355                                         "Курбан-байрам":                         [ 10, 4 ],
    1356                                         "День Конституции Республики Татарстан": [ 11, 6 ],
    1357                                 },
    1358                         },
    1359                         'Bashkortostan': { // https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B0%D0%B7%D0%B4%D0%BD%D0%B8%D0%BA%D0%B8_%D0%91%D0%B0%D1%88%D0%BA%D0%BE%D1%80%D1%82%D0%BE%D1%81%D1%82%D0%B0%D0%BD%D0%B0
    1360                                 'PH': {
    1361                                         "1. Новогодние каникулы":               [ 1, 1 ],
    1362                                         "2. Новогодние каникулы":           [ 1, 2 ],
    1363                                         "3. Новогодние каникулы":           [ 1, 3 ],
    1364                                         "4. Новогодние каникулы":           [ 1, 4 ],
    1365                                         "5. Новогодние каникулы":           [ 1, 5 ],
    1366                                         "6. Новогодние каникулы":           [ 1, 6 ],
    1367                                         "Рождество Христово":               [ 1, 7 ],
    1368                                         "8. Новогодние каникулы":           [ 1, 8 ],
    1369                                         "День защитника Отечества":         [ 2, 23 ],
    1370                                         "Международный женский день":       [ 3, 8 ],
    1371                                         "День Победы":                      [ 5, 9 ],
    1372                                         "Праздник Весны и Труда":           [ 5, 1 ],
    1373                                         "День народного единства":          [ 11, 4 ],
    1374                                         "День России":                      [ 6, 12 ],
    1375                                         // local
    1376                                         "Ураза-байрам":                     [ 7, 28 ],
    1377                                         "Курбан-байрам":                    [ 10, 4 ],
    1378                                         "День Республики Башкирии":         [ 10, 11 ],
    1379                                         "День Конституции Башкортостана":   [ 12, 24 ],
    1380                                 },
    1381                         },
    1382                         'Chuvashia': {
    1383                                 'PH': {
    1384                                         "1. Новогодние каникулы":           [ 1, 1 ],
    1385                                         "2. Новогодние каникулы":           [ 1, 2 ],
    1386                                         "3. Новогодние каникулы":           [ 1, 3 ],
    1387                                         "4. Новогодние каникулы":           [ 1, 4 ],
    1388                                         "5. Новогодние каникулы":           [ 1, 5 ],
    1389                                         "6. Новогодние каникулы":           [ 1, 6 ],
    1390                                         "Рождество Христово":               [ 1, 7 ],
    1391                                         "8. Новогодние каникулы":           [ 1, 8 ],
    1392                                         "День защитника Отечества":         [ 2, 23 ],
    1393                                         "Международный женский день":       [ 3, 8 ],
    1394                                         "День Победы":                      [ 5, 9 ],
    1395                                         "Праздник Весны и Труда":           [ 5, 1 ],
    1396                                         "День народного единства":          [ 11, 4 ],
    1397                                         "День России":                      [ 6, 12 ],
    1398                                         // local
    1399                                         "День Чувашской республики":        [ 6, 24 ],
    1400                                 },
    1401                         },
    1402                         'Sakha Republic': { // https://ru.wikipedia.org/wiki/%D0%AF%D0%BA%D1%83%D1%82%D0%B8%D1%8F#.D0.9F.D1.80.D0.B0.D0.B7.D0.B4.D0.BD.D0.B8.D0.BA.D0.B8_.D0.AF.D0.BA.D1.83.D1.82.D0.B8.D0.B8
    1403                                 'PH': {
    1404                                         "1. Новогодние каникулы":                 [ 1, 1 ],
    1405                                         "2. Новогодние каникулы":                 [ 1, 2 ],
    1406                                         "3. Новогодние каникулы":                 [ 1, 3 ],
    1407                                         "4. Новогодние каникулы":                 [ 1, 4 ],
    1408                                         "5. Новогодние каникулы":                 [ 1, 5 ],
    1409                                         "6. Новогодние каникулы":                 [ 1, 6 ],
    1410                                         "Рождество Христово":                     [ 1, 7 ],
    1411                                         "8. Новогодние каникулы":                 [ 1, 8 ],
    1412                                         "День защитника Отечества":               [ 2, 23 ],
    1413                                         "Международный женский день":             [ 3, 8 ],
    1414                                         "День Победы":                            [ 5, 9 ],
    1415                                         "Праздник Весны и Труда":                 [ 5, 1 ],
    1416                                         "День народного единства":                [ 11, 4 ],
    1417                                         "День России":                            [ 6, 12 ],
    1418                                         // local
    1419                                         "День Республики Саха":                   [ 4, 27 ],
    1420                                         "Ысыах":                                  [ 6, 23 ],
    1421                                         "День государственности Республики Саха": [ 9, 27 ],
    1422                                 },
    1423                         },
    1424                         'Republic of Kalmykia': { // https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B0%D0%B7%D0%B4%D0%BD%D0%B8%D0%BA%D0%B8_%D0%B8_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D0%BD%D1%8B%D0%B5_%D0%B4%D0%B0%D1%82%D1%8B_%D0%9A%D0%B0%D0%BB%D0%BC%D1%8B%D0%BA%D0%B8%D0%B8
    1425                                 'PH': {
    1426                                         "1. Новогодние каникулы":                                            [ 1, 1 ],
    1427                                         "2. Новогодние каникулы":                                            [ 1, 2 ],
    1428                                         "3. Новогодние каникулы":                                            [ 1, 3 ],
    1429                                         "4. Новогодние каникулы":                                            [ 1, 4 ],
    1430                                         "5. Новогодние каникулы":                                            [ 1, 5 ],
    1431                                         "6. Новогодние каникулы":                                            [ 1, 6 ],
    1432                                         "Рождество Христово":                                                [ 1, 7 ],
    1433                                         "8. Новогодние каникулы":                                            [ 1, 8 ],
    1434                                         "День защитника Отечества":                                          [ 2, 23 ],
    1435                                         "Международный женский день":                                        [ 3, 8 ],
    1436                                         "День Победы":                                                       [ 5, 9 ],
    1437                                         "Праздник Весны и Труда":                                            [ 5, 1 ],
    1438                                         "День народного единства":                                           [ 11, 4 ],
    1439                                         "День России":                                                       [ 6, 12 ],
    1440                                         // local
    1441                                         "Цаган Сар":                                                         [ 1, 14 ],
    1442                                         "День принятия Степного Уложения (Конституции) Республики Калмыкия": [ 4, 5 ],
    1443                                         "День рождения Будды Шакьямун":                                                  [ 6, 6 ],
    1444                                         "Зул":                                                                                               [ 12, 15 ],
    1445                                         "День памяти жертв депортации калмыцкого народа":                    [ 12, 28 ],
    1446                                 },
    1447                         },
    1448                         'Buryatia': { // https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B0%D0%B7%D0%B4%D0%BD%D0%B8%D0%BA%D0%B8_%D0%91%D1%83%D1%80%D1%8F%D1%82%D0%B8%D0%B8
    1449                                 'PH': {
    1450                                         "1. Новогодние каникулы":     [ 1, 1 ],
    1451                                         "2. Новогодние каникулы":     [ 1, 2 ],
    1452                                         "3. Новогодние каникулы":     [ 1, 3 ],
    1453                                         "4. Новогодние каникулы":     [ 1, 4 ],
    1454                                         "5. Новогодние каникулы":     [ 1, 5 ],
    1455                                         "6. Новогодние каникулы":     [ 1, 6 ],
    1456                                         "Рождество Христово":         [ 1, 7 ],
    1457                                         "8. Новогодние каникулы":     [ 1, 8 ],
    1458                                         "День защитника Отечества":   [ 2, 23 ],
    1459                                         "Международный женский день": [ 3, 8 ],
    1460                                         "День Победы":                [ 5, 9 ],
    1461                                         "Праздник Весны и Труда":     [ 5, 1 ],
    1462                                         "День народного единства":    [ 11, 4 ],
    1463                                         "День России":                [ 6, 12 ],
    1464                                         //
    1465                                         "Сагаалган":                  [ 1, 14 ],
    1466                                 },
    1467                         },
    1468                         'Republic of Karelia': { // https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B0%D0%B7%D0%B4%D0%BD%D0%B8%D0%BA%D0%B8_%D0%A0%D0%B5%D1%81%D0%BF%D1%83%D0%B1%D0%BB%D0%B8%D0%BA%D0%B8_%D0%9A%D0%B0%D1%80%D0%B5%D0%BB%D0%B8%D1%8F
    1469                                 'PH': {
    1470                                         "1. Новогодние каникулы":                              [ 1, 1 ],
    1471                                         "2. Новогодние каникулы":                              [ 1, 2 ],
    1472                                         "3. Новогодние каникулы":                              [ 1, 3 ],
    1473                                         "4. Новогодние каникулы":                              [ 1, 4 ],
    1474                                         "5. Новогодние каникулы":                              [ 1, 5 ],
    1475                                         "6. Новогодние каникулы":                              [ 1, 6 ],
    1476                                         "Рождество Христово":                                  [ 1, 7 ],
    1477                                         "8. Новогодние каникулы":                              [ 1, 8 ],
    1478                                         "День защитника Отечества":                            [ 2, 23 ],
    1479                                         "Международный женский день":                          [ 3, 8 ],
    1480                                         "День Победы":                                         [ 5, 9 ],
    1481                                         "Праздник Весны и Труда":                              [ 5, 1 ],
    1482                                         "День народного единства":                             [ 11, 4 ],
    1483                                         "День России":                                         [ 6, 12 ],
    1484                                         // local
    1485                                         "День Республики Карелия":                             [ 6, 8 ],
    1486                                         "День освобождения Карелии от фашистских захватчиков": [ 9, 30 ],
    1487                                 },
    1488                         },
    1489                         'Удмуртская республика': {
    1490                                 'PH': {
    1491                                         "1. Новогодние каникулы":                       [ 1, 1 ],
    1492                                         "2. Новогодние каникулы":                       [ 1, 2 ],
    1493                                         "3. Новогодние каникулы":                       [ 1, 3 ],
    1494                                         "4. Новогодние каникулы":                       [ 1, 4 ],
    1495                                         "5. Новогодние каникулы":                       [ 1, 5 ],
    1496                                         "6. Новогодние каникулы":                       [ 1, 6 ],
    1497                                         "Рождество Христово":                           [ 1, 7 ],
    1498                                         "8. Новогодние каникулы":                       [ 1, 8 ],
    1499                                         "День защитника Отечества":                     [ 2, 23 ],
    1500                                         "Международный женский день":                   [ 3, 8 ],
    1501                                         "День Победы":                                  [ 5, 9 ],
    1502                                         "Праздник Весны и Труда":                       [ 5, 1 ],
    1503                                         "День народного единства":                      [ 11, 4 ],
    1504                                         "День России":                                  [ 6, 12 ],
    1505                                         // local
    1506                                         "День Государственности Удмуртской Республики": [ 5, 31 ],
    1507                                 },
    1508                         },
    1509                         'Adygea': {
    1510                                 'PH': {
    1511                                         "1. Новогодние каникулы":             [ 1, 1 ],
    1512                                         "2. Новогодние каникулы":             [ 1, 2 ],
    1513                                         "3. Новогодние каникулы":             [ 1, 3 ],
    1514                                         "4. Новогодние каникулы":             [ 1, 4 ],
    1515                                         "5. Новогодние каникулы":             [ 1, 5 ],
    1516                                         "6. Новогодние каникулы":             [ 1, 6 ],
    1517                                         "Рождество Христово":                 [ 1, 7 ],
    1518                                         "8. Новогодние каникулы":             [ 1, 8 ],
    1519                                         "День защитника Отечества":           [ 2, 23 ],
    1520                                         "Международный женский день":         [ 3, 8 ],
    1521                                         "День Победы":                        [ 5, 9 ],
    1522                                         "Праздник Весны и Труда":             [ 5, 1 ],
    1523                                         "День народного единства":            [ 11, 4 ],
    1524                                         "День России":                        [ 6, 12 ],
    1525                                         // local
    1526                                         "Ураза-байрам":                       [ 7, 28 ],
    1527                                         "Курбан-байрам":                      [ 10, 4 ],
    1528                                         "День образования Республики Адыгея": [ 10, 5 ],
    1529                                 },
    1530                         },
    1531                         'Republic of Dagestan': { // https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B0%D0%B7%D0%B4%D0%BD%D0%B8%D0%BA%D0%B8_%D0%94%D0%B0%D0%B3%D0%B5%D1%81%D1%82%D0%B0%D0%BD%D0%B0
    1532                                 'PH': {
    1533                                         "1. Новогодние каникулы":               [ 1, 1 ],
    1534                                         "2. Новогодние каникулы":               [ 1, 2 ],
    1535                                         "3. Новогодние каникулы":               [ 1, 3 ],
    1536                                         "4. Новогодние каникулы":               [ 1, 4 ],
    1537                                         "5. Новогодние каникулы":               [ 1, 5 ],
    1538                                         "6. Новогодние каникулы":               [ 1, 6 ],
    1539                                         "Рождество Христово":                   [ 1, 7 ],
    1540                                         "8. Новогодние каникулы":               [ 1, 8 ],
    1541                                         "День защитника Отечества":             [ 2, 23 ],
    1542                                         "Международный женский день":           [ 3, 8 ],
    1543                                         "День Победы":                          [ 5, 9 ],
    1544                                         "Праздник Весны и Труда":               [ 5, 1 ],
    1545                                         "День народного единства":              [ 11, 4 ],
    1546                                         "День России":                          [ 6, 12 ],
    1547                                         // local
    1548                                         "День Конституции Республики Дагестан": [ 7, 26 ],
    1549                                         "Ураза-байрам":                         [ 7, 28 ],
    1550                                         "День единства народов Дагестана":      [ 9, 15 ],
    1551                                         "Курбан-байрам":                        [ 10, 4 ],
    1552                                 },
    1553                         },
    1554                         'Ingushetia': { // https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B0%D0%B7%D0%B4%D0%BD%D0%B8%D0%BA%D0%B8_%D0%98%D0%BD%D0%B3%D1%83%D1%88%D0%B5%D1%82%D0%B8%D0%B8
    1555                                 'PH': {
    1556                                         "1. Новогодние каникулы":                [ 1, 1 ],
    1557                                         "2. Новогодние каникулы":                [ 1, 2 ],
    1558                                         "3. Новогодние каникулы":                [ 1, 3 ],
    1559                                         "4. Новогодние каникулы":                [ 1, 4 ],
    1560                                         "5. Новогодние каникулы":                [ 1, 5 ],
    1561                                         "6. Новогодние каникулы":                [ 1, 6 ],
    1562                                         "Рождество Христово":                    [ 1, 7 ],
    1563                                         "8. Новогодние каникулы":                [ 1, 8 ],
    1564                                         "День защитника Отечества":              [ 2, 23 ],
    1565                                         "Международный женский день":            [ 3, 8 ],
    1566                                         "День Победы":                           [ 5, 9 ],
    1567                                         "Праздник Весны и Труда":                [ 5, 1 ],
    1568                                         "День народного единства":               [ 11, 4 ],
    1569                                         "День России":                           [ 6, 12 ],
    1570                                         // local
    1571                                         "День образования Республики Ингушетия": [ 6, 4 ],
    1572                                         "Ураза-байрам":                          [ 7, 28 ],
    1573                                         "Курбан-байрам":                         [ 10, 4 ],
    1574                                 },
    1575                         },
    1576                         'Карачаево-Черкесская республика': {
    1577                                 'PH': {
    1578                                         "1. Новогодние каникулы":                [ 1, 1 ],
    1579                                         "2. Новогодние каникулы":                [ 1, 2 ],
    1580                                         "3. Новогодние каникулы":                [ 1, 3 ],
    1581                                         "4. Новогодние каникулы":                [ 1, 4 ],
    1582                                         "5. Новогодние каникулы":                [ 1, 5 ],
    1583                                         "6. Новогодние каникулы":                [ 1, 6 ],
    1584                                         "Рождество Христово":                    [ 1, 7 ],
    1585                                         "8. Новогодние каникулы":                [ 1, 8 ],
    1586                                         "День защитника Отечества":              [ 2, 23 ],
    1587                                         "Международный женский день":            [ 3, 8 ],
    1588                                         "День Победы":                           [ 5, 9 ],
    1589                                         "Праздник Весны и Труда":                [ 5, 1 ],
    1590                                         "День народного единства":               [ 11, 4 ],
    1591                                         "День России":                           [ 6, 12 ],
    1592                                         // local
    1593                                         "День возрождения карачаевского народа": [ 5, 3 ],
    1594                                         "Ураза-байрам":                          [ 7, 28 ],
    1595                                         "Курбан-байрам":                         [ 10, 4 ],
    1596                                 },
    1597                         },
    1598                         'Chechen Republic': { // https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B0%D0%B7%D0%B4%D0%BD%D0%B8%D0%BA%D0%B8_%D0%A7%D0%B5%D1%87%D0%BD%D0%B8
    1599                                 'PH': {
    1600                                         "1. Новогодние каникулы":           [ 1, 1 ],
    1601                                         "2. Новогодние каникулы":           [ 1, 2 ],
    1602                                         "3. Новогодние каникулы":           [ 1, 3 ],
    1603                                         "4. Новогодние каникулы":           [ 1, 4 ],
    1604                                         "5. Новогодние каникулы":           [ 1, 5 ],
    1605                                         "6. Новогодние каникулы":           [ 1, 6 ],
    1606                                         "Рождество Христово":               [ 1, 7 ],
    1607                                         "8. Новогодние каникулы":           [ 1, 8 ],
    1608                                         "День защитника Отечества":         [ 2, 23 ],
    1609                                         "Международный женский день":       [ 3, 8 ],
    1610                                         "День Победы":                      [ 5, 9 ],
    1611                                         "Праздник Весны и Труда":           [ 5, 1 ],
    1612                                         "День народного единства":          [ 11, 4 ],
    1613                                         "День России":                      [ 6, 12 ],
    1614                                         // local
    1615                                         "День мира в Чеченской Республике": [ 4, 16 ],
    1616                                         "Ураза-байрам":                     [ 7, 28 ],
    1617                                         "Курбан-байрам":                    [ 10, 4 ],
    1618                                 },
    1619                         },
    1620                         'Кабардино-Балкарская республика': {
    1621                                 'PH': {
    1622                                         "1. Новогодние каникулы":                                 [ 1, 1 ],
    1623                                         "2. Новогодние каникулы":                                 [ 1, 2 ],
    1624                                         "3. Новогодние каникулы":                                 [ 1, 3 ],
    1625                                         "4. Новогодние каникулы":                                 [ 1, 4 ],
    1626                                         "5. Новогодние каникулы":                                 [ 1, 5 ],
    1627                                         "6. Новогодние каникулы":                                 [ 1, 6 ],
    1628                                         "Рождество Христово":                                     [ 1, 7 ],
    1629                                         "8. Новогодние каникулы":                                 [ 1, 8 ],
    1630                                         "День защитника Отечества":                               [ 2, 23 ],
    1631                                         "Международный женский день":                             [ 3, 8 ],
    1632                                         "День Победы":                                            [ 5, 9 ],
    1633                                         "Праздник Весны и Труда":                                 [ 5, 1 ],
    1634                                         "День народного единства":                                [ 11, 4 ],
    1635                                         "День России":                                            [ 6, 12 ],
    1636                                         // local
    1637                                         "День возрождения балкарского народа":                    [ 3, 28 ],
    1638                                         "Черкесский день траура":                                 [ 5, 21 ],
    1639                                         "Ураза-байрам":                                           [ 7, 28 ],
    1640                                         "День государственности Кабардино-Балкарской Республики": [ 9, 1 ],
    1641                                         "Курбан-байрам":                                          [ 10, 4 ],
    1642                                 },
    1643                         },
    1644                         'Altai Republic': {
    1645                                 'PH': {
    1646                                         "1. Новогодние каникулы":           [ 1, 1 ],
    1647                                         "2. Новогодние каникулы":           [ 1, 2 ],
    1648                                         "3. Новогодние каникулы":           [ 1, 3 ],
    1649                                         "4. Новогодние каникулы":           [ 1, 4 ],
    1650                                         "5. Новогодние каникулы":           [ 1, 5 ],
    1651                                         "6. Новогодние каникулы":           [ 1, 6 ],
    1652                                         "Рождество Христово":               [ 1, 7 ],
    1653                                         "8. Новогодние каникулы":           [ 1, 8 ],
    1654                                         "День защитника Отечества":         [ 2, 23 ],
    1655                                         "Международный женский день":       [ 3, 8 ],
    1656                                         "День Победы":                      [ 5, 9 ],
    1657                                         "Праздник Весны и Труда":           [ 5, 1 ],
    1658                                         "День народного единства":          [ 11, 4 ],
    1659                                         "День России":                      [ 6, 12 ],
    1660                                         // local
    1661                                         "Чага-Байрам":                      [ 1, 14 ],
    1662                                 },
    1663                         },
    1664                         'Tuva': {
    1665                                 'PH': {
    1666                                         "1. Новогодние каникулы":           [ 1, 1 ],
    1667                                         "2. Новогодние каникулы":           [ 1, 2 ],
    1668                                         "3. Новогодние каникулы":           [ 1, 3 ],
    1669                                         "4. Новогодние каникулы":           [ 1, 4 ],
    1670                                         "5. Новогодние каникулы":           [ 1, 5 ],
    1671                                         "6. Новогодние каникулы":           [ 1, 6 ],
    1672                                         "Рождество Христово":               [ 1, 7 ],
    1673                                         "8. Новогодние каникулы":           [ 1, 8 ],
    1674                                         "День защитника Отечества":         [ 2, 23 ],
    1675                                         "Международный женский день":       [ 3, 8 ],
    1676                                         "День Победы":                      [ 5, 9 ],
    1677                                         "Праздник Весны и Труда":           [ 5, 1 ],
    1678                                         "День народного единства":          [ 11, 4 ],
    1679                                         "День России":                      [ 6, 12 ],
    1680                                         // local
    1681                                         "Народный праздник Шагаа":          [ 1, 14 ],
    1682                                         "День Республики Тыва":             [ 8, 15 ],
    1683                                 },
    1684                         },
    1685                         'Saratov Oblast': {
    1686                                 'PH': {
    1687                                         "1. Новогодние каникулы":           [ 1, 1 ],
    1688                                         "2. Новогодние каникулы":           [ 1, 2 ],
    1689                                         "3. Новогодние каникулы":           [ 1, 3 ],
    1690                                         "4. Новогодние каникулы":           [ 1, 4 ],
    1691                                         "5. Новогодние каникулы":           [ 1, 5 ],
    1692                                         "6. Новогодние каникулы":           [ 1, 6 ],
    1693                                         "Рождество Христово":               [ 1, 7 ],
    1694                                         "8. Новогодние каникулы":           [ 1, 8 ],
    1695                                         "День защитника Отечества":         [ 2, 23 ],
    1696                                         "Международный женский день":       [ 3, 8 ],
    1697                                         "День Победы":                      [ 5, 9 ],
    1698                                         "Праздник Весны и Труда":           [ 5, 1 ],
    1699                                         "День народного единства":          [ 11, 4 ],
    1700                                         "День России":                      [ 6, 12 ],
    1701                                         // local
    1702                                         "Радоница":                         [ 4, 29 ],
    1703                                 },
    1704                         },
    1705                         'Bryansk Oblast': {
    1706                                 'PH': {
    1707                                         "1. Новогодние каникулы":           [ 1, 1 ],
    1708                                         "2. Новогодние каникулы":           [ 1, 2 ],
    1709                                         "3. Новогодние каникулы":           [ 1, 3 ],
    1710                                         "4. Новогодние каникулы":           [ 1, 4 ],
    1711                                         "5. Новогодние каникулы":           [ 1, 5 ],
    1712                                         "6. Новогодние каникулы":           [ 1, 6 ],
    1713                                         "Рождество Христово":               [ 1, 7 ],
    1714                                         "8. Новогодние каникулы":           [ 1, 8 ],
    1715                                         "День защитника Отечества":         [ 2, 23 ],
    1716                                         "Международный женский день":       [ 3, 8 ],
    1717                                         "День Победы":                      [ 5, 9 ],
    1718                                         "Праздник Весны и Труда":           [ 5, 1 ],
    1719                                         "День народного единства":          [ 11, 4 ],
    1720                                         "День России":                      [ 6, 12 ],
    1721                                         // local
    1722                                         "Радоница":                         [ 4, 29 ],
    1723                                         "День освобождения города Брянска": [ 9, 17 ],
    1724                                 },
    1725                         },
    1726                         'Komi Republic': {
    1727                                 'PH': {
    1728                                         "1. Новогодние каникулы":     [ 1, 1 ],
    1729                                         "2. Новогодние каникулы":     [ 1, 2 ],
    1730                                         "3. Новогодние каникулы":     [ 1, 3 ],
    1731                                         "4. Новогодние каникулы":     [ 1, 4 ],
    1732                                         "5. Новогодние каникулы":     [ 1, 5 ],
    1733                                         "6. Новогодние каникулы":     [ 1, 6 ],
    1734                                         "Рождество Христово":         [ 1, 7 ],
    1735                                         "8. Новогодние каникулы":     [ 1, 8 ],
    1736                                         "День защитника Отечества":   [ 2, 23 ],
    1737                                         "Международный женский день": [ 3, 8 ],
    1738                                         "День Победы":                [ 5, 9 ],
    1739                                         "Праздник Весны и Труда":     [ 5, 1 ],
    1740                                         "День народного единства":    [ 11, 4 ],
    1741                                         "День России":                [ 6, 12 ],
    1742                                         // local
    1743                                         "День Республики Коми":       [ 8, 22 ],
    1744                                 },
    1745                         },
    1746                 }, // }}}
    1747                 'ua': { // {{{
    1748                         'PH': { // http://uk.wikipedia.org/wiki/%D0%A1%D0%B2%D1%8F%D1%82%D0%B0_%D1%82%D0%B0_%D0%BF%D0%B0%D0%BC%27%D1%8F%D1%82%D0%BD%D1%96_%D0%B4%D0%BD%D1%96_%D0%B2_%D0%A3%D0%BA%D1%80%D0%B0%D1%97%D0%BD%D1%96
    1749                                 "Новий рік"                 : [  1,  1 ],
    1750                                 "Різдво"                    : [  1,  7 ],
    1751                                 "Міжнародний жіночий день"  : [  3,  8 ],
    1752                                 "Великдень"                 : [ 'orthodox easter',  1 ],
    1753                                 "День Праці 1"              : [  5,  1 ],
    1754                                 "День Праці 2"              : [  5,  2 ],
    1755                                 "День Перемоги"             : [  5,  9 ],
    1756                                 "День Конституції України"  : [  6, 28 ],
    1757                                 "День Незалежності України" : [  8, 24 ],
    1758                         }
    1759                 }, // }}}
    1760                 'us': { // {{{
    1761                         'PH': { // https://en.wikipedia.org/wiki/Public_holidays_in_the_United_States
    1762                                 "New Year's Day"   : [ 1, 1 ],
    1763                                 "Memorial Day"     : [ "lastMayMonday", 0 ],
    1764                                 "Independence Day" : [ 7, 4 ],
    1765                                 "Labor Day"        : [ "firstSeptemberMonday", 0 ],
    1766                                 "Veterans Day"     : [ 11, 11 ],
    1767                                 "Thanksgiving"     : [ "firstNovemberThursday", 21 ],
    1768                                 "Christmas Day"    : [ 12, 25 ]
    1769                         },
    1770                         'Alabama': {
    1771                                 'PH': { // http://www.archives.alabama.gov/intro/holidays.html
    1772                                         "New Year's Day"                              : [ 1, 1 ],
    1773                                         "Robert E. Lee/Martin Luther King Birthday"   : [ "firstJanuaryMonday", 14 ],
    1774                                         "George Washington/Thomas Jefferson Birthday" : [ "firstFebruaryMonday", 14 ],
    1775                                         "Memorial Day"                                : [ "lastMayMonday", 0 ],
    1776                                         "Independence Day"                            : [ 7, 4 ],
    1777                                         "Labor Day"                                   : [ "firstSeptemberMonday", 0 ],
    1778                                         "Columbus Day"                                : [ "firstOctoberMonday", 7 ],
    1779                                         "Veterans Day"                                : [ 11, 11 ],
    1780                                         "Thanksgiving"                                : [ "firstNovemberThursday", 21 ],
    1781                                         "Christmas Day"                               : [ 12, 25 ],
    1782                                         "Confederate Memorial Day"                    : [ "firstAprilMonday", 21 ],
    1783                                         "Jefferson Davis' Birthday"                   : [ "firstJuneMonday", 0 ]
    1784                                 }
    1785                         },
    1786                         'Alaska': {
    1787                                 'PH': {
    1788                                         "New Year's Day"              : [ 1, 1 ],
    1789                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    1790                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    1791                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    1792                                         "Independence Day"            : [ 7, 4 ],
    1793                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    1794                                         "Veterans Day"                : [ 11, 11 ],
    1795                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    1796                                         "Christmas Day"               : [ 12, 25 ],
    1797                                         "Seward's Day"                : [ "lastMarchMonday", 0 ],
    1798                                         "Alaska Day"                  : [ 10, 18 ]
    1799                                 }
    1800                         },
    1801                         'Arizona': {
    1802                                 'PH': {
    1803                                         "New Year's Day"                              : [ 1, 1 ],
    1804                                         "Dr. Martin Luther King Jr./Civil Rights Day" : [ "firstJanuaryMonday", 14 ],
    1805                                         "Washington's Birthday"                       : [ "firstFebruaryMonday", 14 ],
    1806                                         "Memorial Day"                                : [ "lastMayMonday", 0 ],
    1807                                         "Independence Day"                            : [ 7, 4 ],
    1808                                         "Labor Day"                                   : [ "firstSeptemberMonday", 0 ],
    1809                                         "Columbus Day"                                : [ "firstOctoberMonday", 7 ],
    1810                                         "Veterans Day"                                : [ 11, 11 ],
    1811                                         "Thanksgiving"                                : [ "firstNovemberThursday", 21 ],
    1812                                         "Christmas Day"                               : [ 12, 25 ]
    1813                                 }
    1814                         },
    1815                         'Arkansas': {
    1816                                 'PH': {
    1817                                         "New Year's Day"                                           : [ 1, 1 ],
    1818                                         "Dr. Martin Luther King Jr. and Robert E. Lee's Birthdays" : [ "firstJanuaryMonday", 14 ],
    1819                                         "George Washington's Birthday and Daisy Gatson Bates Day"  : [ "firstFebruaryMonday", 14 ],
    1820                                         "Memorial Day"                                             : [ "lastMayMonday", 0 ],
    1821                                         "Independence Day"                                         : [ 7, 4 ],
    1822                                         "Labor Day"                                                : [ "firstSeptemberMonday", 0 ],
    1823                                         "Columbus Day"                                             : [ "firstOctoberMonday", 7 ],
    1824                                         "Veterans Day"                                             : [ 11, 11 ],
    1825                                         "Thanksgiving"                                             : [ "firstNovemberThursday", 21 ],
    1826                                         "Christmas Eve"                                            : [ 12, 24 ],
    1827                                         "Christmas Day"                                            : [ 12, 25 ]
    1828                                 }
    1829                         },
    1830                         'California': {
    1831                                 'PH': {
    1832                                         "New Year's Day"              : [ 1, 1 ],
    1833                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    1834                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    1835                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    1836                                         "Independence Day"            : [ 7, 4 ],
    1837                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    1838                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    1839                                         "Veterans Day"                : [ 11, 11 ],
    1840                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    1841                                         "Christmas Day"               : [ 12, 25 ],
    1842                                         "César Chávez Day"            : [ 3, 31 ]
    1843                                 }
    1844                         },
    1845                         'Colorado': {
    1846                                 'PH': {
    1847                                         "New Year's Day"              : [ 1, 1 ],
    1848                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    1849                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    1850                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    1851                                         "Independence Day"            : [ 7, 4 ],
    1852                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    1853                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    1854                                         "Veterans Day"                : [ 11, 11 ],
    1855                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    1856                                         "Christmas Day"               : [ 12, 25 ]
    1857                                 }
    1858                         },
    1859                         'Connecticut': {
    1860                                 'PH': {
    1861                                         "New Year's Day"              : [ 1, 1 ],
    1862                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    1863                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    1864                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    1865                                         "Independence Day"            : [ 7, 4 ],
    1866                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    1867                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    1868                                         "Veterans Day"                : [ 11, 11 ],
    1869                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    1870                                         "Christmas Day"               : [ 12, 25 ],
    1871                                         "Lincoln's Birthday"          : [ 2, 12 ],
    1872                                         "Good Friday"                 : [ "easter", -2 ]
    1873                                 }
    1874                         },
    1875                         'Delaware': {
    1876                                 'PH': {
    1877                                         "New Year's Day"              : [ 1, 1 ],
    1878                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    1879                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    1880                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    1881                                         "Independence Day"            : [ 7, 4 ],
    1882                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    1883                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    1884                                         "Veterans Day"                : [ 11, 11 ],
    1885                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    1886                                         "Day After Thanksgiving"      : [ "firstNovemberThursday", 22 ],
    1887                                         "Christmas Day"               : [ 12, 25 ],
    1888                                         "Good Friday"                 : [ "easter", -2 ]
    1889                                 }
    1890                         },
    1891                         'District of Columbia': {
    1892                                 'PH': {
    1893                                         "New Year's Day"              : [ 1, 1 ],
    1894                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    1895                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    1896                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    1897                                         "Independence Day"            : [ 7, 4 ],
    1898                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    1899                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    1900                                         "Veterans Day"                : [ 11, 11 ],
    1901                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    1902                                         "Christmas Day"               : [ 12, 25 ],
    1903                                         "Emancipation Day"            : [ 4, 16 ]
    1904                                 }
    1905                         },
    1906                         'Florida': {
    1907                                 'PH': { // http://www.leg.state.fl.us/Statutes/index.cfm?App_mode=Display_Statute&Search_String=&URL=0100-0199/0110/Sections/0110.117.html
    1908                                         "New Year's Day"              : [ 1, 1 ],
    1909                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    1910                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    1911                                         "Independence Day"            : [ 7, 4 ],
    1912                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    1913                                         "Veterans Day"                : [ 11, 11 ],
    1914                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    1915                                         "Friday after Thanksgiving"   : [ "firstNovemberThursday", 22 ],
    1916                                         "Christmas Day"               : [ 12, 25 ]
    1917                                 }
    1918                         },
    1919                         'Georgia': {
    1920                                 'PH': {
    1921                                         "New Year's Day"              : [ 1, 1 ],
    1922                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    1923                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    1924                                         "Independence Day"            : [ 7, 4 ],
    1925                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    1926                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    1927                                         "Veterans Day"                : [ 11, 11 ],
    1928                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    1929                                         "Robert E. Lee's Birthday"    : [ "firstNovemberThursday", 22 ],
    1930                                         "Washington's Birthday"       : [ 12, 24 ],
    1931                                         "Christmas Day"               : [ 12, 25 ],
    1932                                         "Confederate Memorial Day"    : [ "lastAprilMonday", 0 ]
    1933                                 }
    1934                         },
    1935                         'Guam': {
    1936                                 'PH': {
    1937                                         "New Year's Day"              : [ 1, 1 ],
    1938                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    1939                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    1940                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    1941                                         "Independence Day"            : [ 7, 4 ],
    1942                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    1943                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    1944                                         "Veterans Day"                : [ 11, 11 ],
    1945                                         "Guam Discovery Day"          : [ 3, 5 ],
    1946                                         "Good Friday"                 : [ "easter", -2 ],
    1947                                         "Liberation Day"              : [ 7, 21 ],
    1948                                         "All Souls' Day"              : [ 11, 2 ],
    1949                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    1950                                         "Lady of Camarin Day"         : [ 12, 8 ],
    1951                                         "Christmas Day"               : [ 12, 25 ],
    1952                                 }
    1953                         },
    1954                         'Hawaii': {
    1955                                 'PH': {
    1956                                         "New Year's Day"                      : [ 1, 1 ],
    1957                                         "Martin Luther King, Jr. Day"         : [ "firstJanuaryMonday", 14 ],
    1958                                         "Washington's Birthday"               : [ "firstFebruaryMonday", 14 ],
    1959                                         "Memorial Day"                        : [ "lastMayMonday", 0 ],
    1960                                         "Independence Day"                    : [ 7, 4 ],
    1961                                         "Labor Day"                           : [ "firstSeptemberMonday", 0 ],
    1962                                         "Veterans Day"                        : [ 11, 11 ],
    1963                                         "Thanksgiving"                        : [ "firstNovemberThursday", 21 ],
    1964                                         "Christmas Day"                       : [ 12, 25 ],
    1965                                         "Prince Jonah Kuhio Kalanianaole Day" : [ 3, 26 ],
    1966                                         "Kamehameha Day"                      : [ 6, 11 ],
    1967                                         "Statehood Day"                       : [ "firstAugustFriday", 14 ],
    1968                                         "Election Day"                        : [ "firstNovemberMonday", 1 ]
    1969                                 }
    1970                         },
    1971                         'Idaho': {
    1972                                 'PH': {
    1973                                         "New Year's Day"                                 : [ 1, 1 ],
    1974                                         "Martin Luther King, Jr.-Idaho Human Rights Day" : [ "firstJanuaryMonday", 14 ],
    1975                                         "Washington's Birthday"                          : [ "firstFebruaryMonday", 14 ],
    1976                                         "Memorial Day"                                   : [ "lastMayMonday", 0 ],
    1977                                         "Independence Day"                               : [ 7, 4 ],
    1978                                         "Labor Day"                                      : [ "firstSeptemberMonday", 0 ],
    1979                                         "Columbus Day"                                   : [ "firstOctoberMonday", 7 ],
    1980                                         "Veterans Day"                                   : [ 11, 11 ],
    1981                                         "Thanksgiving"                                   : [ "firstNovemberThursday", 21 ],
    1982                                         "Christmas Day"                                  : [ 12, 25 ]
    1983                                 }
    1984                         },
    1985                         'Illinois': {
    1986                                 'PH': {
    1987                                         "New Year's Day"              : [ 1, 1 ],
    1988                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    1989                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    1990                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    1991                                         "Independence Day"            : [ 7, 4 ],
    1992                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    1993                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    1994                                         "Veterans Day"                : [ 11, 11 ],
    1995                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    1996                                         "Christmas Day"               : [ 12, 25 ],
    1997                                         "Lincoln's Birthday"          : [ 2, 12 ],
    1998                                         "Casimir Pulaski Day"         : [ "firstMarchMonday", 0 ],
    1999                                         "Election Day"                : [ "firstNovemberMonday", 1 ]
    2000                                 }
    2001                         },
    2002                         'Indiana': {
    2003                                 'PH': {
    2004                                         "New Year's Day"              : [ 1, 1 ],
    2005                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2006                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2007                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2008                                         "Independence Day"            : [ 7, 4 ],
    2009                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2010                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2011                                         "Veterans Day"                : [ 11, 11 ],
    2012                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2013                                         "Lincoln's Birthday"          : [ "firstNovemberThursday", 22 ],
    2014                                         "Christmas Day"               : [ 12, 25 ],
    2015                                         "Good Friday"                 : [ "easter", -2 ],
    2016                                         "Primary Election Day"        : [ "firstMayMonday", 1 ],
    2017                                         "Election Day"                : [ "firstNovemberMonday", 1 ]
    2018                                 }
    2019                         },
    2020                         'Iowa': {
    2021                                 'PH': {
    2022                                         "New Year's Day"              : [ 1, 1 ],
    2023                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2024                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2025                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2026                                         "Independence Day"            : [ 7, 4 ],
    2027                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2028                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2029                                         "Veterans Day"                : [ 11, 11 ],
    2030                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2031                                         "Christmas Day"               : [ 12, 25 ],
    2032                                         "Lincoln's Birthday"          : [ 2, 12 ]
    2033                                 }
    2034                         },
    2035                         'Kansas': {
    2036                                 'PH': {
    2037                                         "New Year's Day"              : [ 1, 1 ],
    2038                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2039                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2040                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2041                                         "Independence Day"            : [ 7, 4 ],
    2042                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2043                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2044                                         "Veterans Day"                : [ 11, 11 ],
    2045                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2046                                         "Christmas Day"               : [ 12, 25 ]
    2047                                 }
    2048                         },
    2049                         'Kentucky': {
    2050                                 'PH': {
    2051                                         "New Year's Day"              : [ 1, 1 ],
    2052                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2053                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2054                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2055                                         "Independence Day"            : [ 7, 4 ],
    2056                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2057                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2058                                         "Veterans Day"                : [ 11, 11 ],
    2059                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2060                                         "Christmas Eve"               : [ 12, 24 ],
    2061                                         "Christmas Day"               : [ 12, 25 ],
    2062                                         "New Year's Eve"              : [ 12, 31 ],
    2063                                         "Good Friday"                 : [ "easter", -2 ]
    2064                                 }
    2065                         },
    2066                         'Louisiana': {
    2067                                 'PH': {
    2068                                         "New Year's Day"              : [ 1, 1 ],
    2069                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2070                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2071                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2072                                         "Independence Day"            : [ 7, 4 ],
    2073                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2074                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2075                                         "Veterans Day"                : [ 11, 11 ],
    2076                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2077                                         "Christmas Day"               : [ 12, 25 ],
    2078                                         "Mardi Gras"                  : [ "easter", -47 ],
    2079                                         "Good Friday"                 : [ "easter", -2 ],
    2080                                         "Election Day"                : [ "firstNovemberMonday", 1 ]
    2081                                 }
    2082                         },
    2083                         'Maine': {
    2084                                 'PH': {
    2085                                         "New Year's Day"              : [ 1, 1 ],
    2086                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2087                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2088                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2089                                         "Independence Day"            : [ 7, 4 ],
    2090                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2091                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2092                                         "Veterans Day"                : [ 11, 11 ],
    2093                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2094                                         "Christmas Day"               : [ 12, 25 ],
    2095                                         "Patriots' Day"               : [ "firstAprilMonday", 14 ]
    2096                                 }
    2097                         },
    2098                         'Maryland': {
    2099                                 'PH': {
    2100                                         "New Year's Day"               : [ 1, 1 ],
    2101                                         "Martin Luther King, Jr. Day"  : [ "firstJanuaryMonday", 14 ],
    2102                                         "Washington's Birthday"        : [ "firstFebruaryMonday", 14 ],
    2103                                         "Memorial Day"                 : [ "lastMayMonday", 0 ],
    2104                                         "Independence Day"             : [ 7, 4 ],
    2105                                         "Labor Day"                    : [ "firstSeptemberMonday", 0 ],
    2106                                         "Columbus Day"                 : [ "firstOctoberMonday", 7 ],
    2107                                         "Veterans Day"                 : [ 11, 11 ],
    2108                                         "Thanksgiving"                 : [ "firstNovemberThursday", 21 ],
    2109                                         "Native American Heritage Day" : [ "firstNovemberThursday", 22 ],
    2110                                         "Christmas Day"                : [ 12, 25 ]
    2111                                 }
    2112                         },
    2113                         'Massachusetts': {
    2114                                 'PH': {
    2115                                         "New Year's Day"              : [ 1, 1 ],
    2116                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2117                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2118                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2119                                         "Independence Day"            : [ 7, 4 ],
    2120                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2121                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2122                                         "Veterans Day"                : [ 11, 11 ],
    2123                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2124                                         "Christmas Day"               : [ 12, 25 ],
    2125                                         "Patriots' Day"               : [ "firstAprilMonday", 14 ]
    2126                                 }
    2127                         },
    2128                         'Michigan': {
    2129                                 'PH': {
    2130                                         "New Year's Day"              : [ 1, 1 ],
    2131                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2132                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2133                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2134                                         "Independence Day"            : [ 7, 4 ],
    2135                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2136                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2137                                         "Veterans Day"                : [ 11, 11 ],
    2138                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2139                                         "Christmas Eve"               : [ 12, 24 ],
    2140                                         "Christmas Day"               : [ 12, 25 ],
    2141                                         "New Year's Eve"              : [ 12, 31 ]
    2142                                 }
    2143                         },
    2144                         'Minnesota': {
    2145                                 'PH': {
    2146                                         "New Year's Day"              : [ 1, 1 ],
    2147                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2148                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2149                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2150                                         "Independence Day"            : [ 7, 4 ],
    2151                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2152                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2153                                         "Veterans Day"                : [ 11, 11 ],
    2154                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2155                                         "Christmas Day"               : [ 12, 25 ]
    2156                                 }
    2157                         },
    2158                         'Mississippi': {
    2159                                 'PH': {
    2160                                         "New Year's Day"                                     : [ 1, 1 ],
    2161                                         "Martin Luther King's and Robert E. Lee's Birthdays" : [ "firstJanuaryMonday", 14 ],
    2162                                         "Washington's Birthday"                              : [ "firstFebruaryMonday", 14 ],
    2163                                         "Memorial Day"                                       : [ "lastMayMonday", 0 ],
    2164                                         "Independence Day"                                   : [ 7, 4 ],
    2165                                         "Labor Day"                                          : [ "firstSeptemberMonday", 0 ],
    2166                                         "Columbus Day"                                       : [ "firstOctoberMonday", 7 ],
    2167                                         "Veterans Day"                                       : [ 11, 11 ],
    2168                                         "Thanksgiving"                                       : [ "firstNovemberThursday", 21 ],
    2169                                         "Christmas Day"                                      : [ 12, 25 ],
    2170                                         "Confederate Memorial Day"                           : [ "lastAprilMonday", 0 ]
    2171                                 }
    2172                         },
    2173                         'Missouri': {
    2174                                 'PH': {
    2175                                         "New Year's Day"              : [ 1, 1 ],
    2176                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2177                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2178                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2179                                         "Independence Day"            : [ 7, 4 ],
    2180                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2181                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2182                                         "Veterans Day"                : [ 11, 11 ],
    2183                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2184                                         "Christmas Day"               : [ 12, 25 ],
    2185                                         "Truman Day"                  : [ 5, 8 ]
    2186                                 }
    2187                         },
    2188                         'Montana': {
    2189                                 'PH': {
    2190                                         "New Year's Day"              : [ 1, 1 ],
    2191                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2192                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2193                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2194                                         "Independence Day"            : [ 7, 4 ],
    2195                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2196                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2197                                         "Veterans Day"                : [ 11, 11 ],
    2198                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2199                                         "Christmas Day"               : [ 12, 25 ],
    2200                                         "Election Day"                : [ "firstNovemberMonday", 1 ],
    2201                                         "Christmas Eve"               : [ 12, 24 ],
    2202                                         "New Year's Eve"              : [ 12, 31 ]
    2203                                 }
    2204                         },
    2205                         'Nebraska': {
    2206                                 'PH': {
    2207                                         "New Year's Day"              : [ 1, 1 ],
    2208                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2209                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2210                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2211                                         "Independence Day"            : [ 7, 4 ],
    2212                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2213                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2214                                         "Veterans Day"                : [ 11, 11 ],
    2215                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2216                                         "Christmas Day"               : [ 12, 25 ],
    2217                                         "Arbor Day"                   : [ "lastAprilFriday", 0 ]
    2218                                 }
    2219                         },
    2220                         'Nevada': {
    2221                                 'PH': {
    2222                                         "New Year's Day"              : [ 1, 1 ],
    2223                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2224                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2225                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2226                                         "Independence Day"            : [ 7, 4 ],
    2227                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2228                                         "Veterans Day"                : [ 11, 11 ],
    2229                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2230                                         "Christmas Day"               : [ 12, 25 ],
    2231                                         "Nevada Day"                  : [ "lastOctoberFriday", 0 ],
    2232                                         "Family Day"                  : [ "firstNovemberThursday", 22 ]
    2233                                 }
    2234                         },
    2235                         'New Hampshire': {
    2236                                 'PH': {
    2237                                         "New Year's Day"                           : [ 1, 1 ],
    2238                                         "Martin Luther King, Jr. Civil Rights Day" : [ "firstJanuaryMonday", 14 ],
    2239                                         "Washington's Birthday"                    : [ "firstFebruaryMonday", 14 ],
    2240                                         "Memorial Day"                             : [ "lastMayMonday", 0 ],
    2241                                         "Independence Day"                         : [ 7, 4 ],
    2242                                         "Labor Day"                                : [ "firstSeptemberMonday", 0 ],
    2243                                         "Columbus Day"                             : [ "firstOctoberMonday", 7 ],
    2244                                         "Veterans Day"                             : [ 11, 11 ],
    2245                                         "Thanksgiving"                             : [ "firstNovemberThursday", 21 ],
    2246                                         "Day after Thanksgiving"                   : [ "firstNovemberThursday", 22 ],
    2247                                         "Christmas Day"                            : [ 12, 25 ],
    2248                                         "Election Day"                             : [ "firstNovemberMonday", 1 ]
    2249                                 }
    2250                         },
    2251                         'New Jersey': {
    2252                                 'PH': {
    2253                                         "New Year's Day"              : [ 1, 1 ],
    2254                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2255                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2256                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2257                                         "Independence Day"            : [ 7, 4 ],
    2258                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2259                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2260                                         "Veterans Day"                : [ 11, 11 ],
    2261                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2262                                         "Christmas Day"               : [ 12, 25 ],
    2263                                         "Lincoln's Birthday"          : [ 2, 12 ],
    2264                                         "Good Friday"                 : [ "easter", -2 ],
    2265                                         "Election Day"                : [ "firstNovemberMonday", 1 ]
    2266                                 }
    2267                         },
    2268                         'New Mexico': {
    2269                                 'PH': {
    2270                                         "New Year's Day"              : [ 1, 1 ],
    2271                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2272                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2273                                         "Independence Day"            : [ 7, 4 ],
    2274                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2275                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2276                                         "Veterans Day"                : [ 11, 11 ],
    2277                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2278                                         "Day after Thanksgiving"      : [ "firstNovemberThursday", 22 ],
    2279                                         "Christmas Day"               : [ 12, 25 ]
    2280                                 }
    2281                         },
    2282                         'New York': {
    2283                                 'PH': {
    2284                                         "New Year's Day"              : [ 1, 1 ],
    2285                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2286                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2287                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2288                                         "Independence Day"            : [ 7, 4 ],
    2289                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2290                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2291                                         "Veterans Day"                : [ 11, 11 ],
    2292                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2293                                         "Christmas Day"               : [ 12, 25 ],
    2294                                         "Lincoln's Birthday"          : [ 2, 12 ],
    2295                                         "Election Day"                : [ "firstNovemberMonday", 1 ]
    2296                                 }
    2297                         },
    2298                         'North Carolina': {
    2299                                 'PH': {
    2300                                         "New Year's Day"              : [ 1, 1 ],
    2301                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2302                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2303                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2304                                         "Independence Day"            : [ 7, 4 ],
    2305                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2306                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2307                                         "Veterans Day"                : [ 11, 11 ],
    2308                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2309                                         "Day after Thanksgiving"      : [ "firstNovemberThursday", 22 ],
    2310                                         "Christmas Eve"               : [ 12, 24 ],
    2311                                         "Christmas Day"               : [ 12, 25 ],
    2312                                         "Day after Christmas"         : [ 12, 26 ],
    2313                                         "Good Friday"                 : [ "easter", -2 ]
    2314                                 }
    2315                         },
    2316                         'North Dakota': {
    2317                                 'PH': {
    2318                                         "New Year's Day"              : [ 1, 1 ],
    2319                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2320                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2321                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2322                                         "Independence Day"            : [ 7, 4 ],
    2323                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2324                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2325                                         "Veterans Day"                : [ 11, 11 ],
    2326                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2327                                         "Christmas Day"               : [ 12, 25 ]
    2328                                 }
    2329                         },
    2330                         'Ohio': {
    2331                                 'PH': {
    2332                                         "New Year's Day"              : [ 1, 1 ],
    2333                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2334                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2335                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2336                                         "Independence Day"            : [ 7, 4 ],
    2337                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2338                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2339                                         "Veterans Day"                : [ 11, 11 ],
    2340                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2341                                         "Christmas Day"               : [ 12, 25 ]
    2342                                 }
    2343                         },
    2344                         'Oklahoma': {
    2345                                 'PH': {
    2346                                         "New Year's Day"              : [ 1, 1 ],
    2347                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2348                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2349                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2350                                         "Independence Day"            : [ 7, 4 ],
    2351                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2352                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2353                                         "Veterans Day"                : [ 11, 11 ],
    2354                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2355                                         "Day after Thanksgiving"      : [ "firstNovemberThursday", 22 ],
    2356                                         "Christmas Day"               : [ 12, 25 ]
    2357                                 }
    2358                         },
    2359                         'Oregon': {
    2360                                 'PH': {
    2361                                         "New Year's Day"              : [ 1, 1 ],
    2362                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2363                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2364                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2365                                         "Independence Day"            : [ 7, 4 ],
    2366                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2367                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2368                                         "Veterans Day"                : [ 11, 11 ],
    2369                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2370                                         "Christmas Day"               : [ 12, 25 ]
    2371                                 }
    2372                         },
    2373                         'Pennsylvania': {
    2374                                 'PH': {
    2375                                         "New Year's Day"              : [ 1, 1 ],
    2376                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2377                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2378                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2379                                         "Independence Day"            : [ 7, 4 ],
    2380                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2381                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2382                                         "Veterans Day"                : [ 11, 11 ],
    2383                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2384                                         "Christmas Day"               : [ 12, 25 ],
    2385                                         "Flag Day"                    : [ 6, 14 ]
    2386                                 }
    2387                         },
    2388                         'Puerto Rico': {
    2389                                 'PH': {
    2390                                         "Día de Año Nuevo"                         : [ 1, 1 ],
    2391                                         "Día de Reyes"                             : [ 1, 6 ],
    2392                                         "Natalicio de Eugenio María de Hostos"     : [ "firstJanuaryMonday", 7 ],
    2393                                         "Natalicio de Martin Luther King, Jr."     : [ "firstJanuaryMonday", 14 ],
    2394                                         "Día de los Presidentes"                   : [ "firstFebruaryMonday", 14 ],
    2395                                         "Día de la Abolición de Esclavitud"        : [ 3, 22 ],
    2396                                         "Viernes Santo"                            : [ "easter", -2 ],
    2397                                         "Natalicio de José de Diego"               : [ "firstAprilMonday", 14 ],
    2398                                         "Recordación de los Muertos de la Guerra"  : [ "lastMayMonday", 0 ],
    2399                                         "Día de la Independencia"                  : [ 7, 4 ],
    2400                                         "Constitución de Puerto Rico"              : [ 7, 25 ],
    2401                                         "Natalicio de Dr. José Celso Barbosa"      : [ 7, 27 ],
    2402                                         "Día del Trabajo"                          : [ "firstSeptemberMonday", 0 ],
    2403                                         "Día de la Raza Descubrimiento de América" : [ "firstOctoberMonday", 7 ],
    2404                                         "Día del Veterano"                         : [ 11, 11 ],
    2405                                         "Día del Descubrimiento de Puerto Rico"    : [ 11, 19 ],
    2406                                         "Día de Acción de Gracias"                 : [ "firstNovemberThursday", 21 ],
    2407                                         "Noche Buena"                              : [ 12, 24 ],
    2408                                         "Día de Navidad"                           : [ 12, 25 ]
    2409                                 }
    2410                         },
    2411                         'Rhode Island': {
    2412                                 'PH': {
    2413                                         "New Year's Day"              : [ 1, 1 ],
    2414                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2415                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2416                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2417                                         "Independence Day"            : [ 7, 4 ],
    2418                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2419                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2420                                         "Veterans Day"                : [ 11, 11 ],
    2421                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2422                                         "Christmas Day"               : [ 12, 25 ],
    2423                                         "Victory Day"                 : [ "firstAugustMonday", 7 ]
    2424                                 }
    2425                         },
    2426                         'South Carolina': {
    2427                                 'PH': {
    2428                                         "New Year's Day"              : [ 1, 1 ],
    2429                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2430                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2431                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2432                                         "Independence Day"            : [ 7, 4 ],
    2433                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2434                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2435                                         "Veterans Day"                : [ 11, 11 ],
    2436                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2437                                         "Christmas Day"               : [ 12, 25 ],
    2438                                         "Confederate Memorial Day"    : [ 5, 10 ]
    2439                                 }
    2440                         },
    2441                         'South Dakota': {
    2442                                 'PH': {
    2443                                         "New Year's Day"              : [ 1, 1 ],
    2444                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2445                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2446                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2447                                         "Independence Day"            : [ 7, 4 ],
    2448                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2449                                         "Native American Day"         : [ "firstOctoberMonday", 7 ],
    2450                                         "Veterans Day"                : [ 11, 11 ],
    2451                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2452                                         "Christmas Day"               : [ 12, 25 ]
    2453                                 }
    2454                         },
    2455                         'Tennessee': {
    2456                                 'PH': {
    2457                                         "New Year's Day"              : [ 1, 1 ],
    2458                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2459                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2460                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2461                                         "Independence Day"            : [ 7, 4 ],
    2462                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2463                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2464                                         "Veterans Day"                : [ 11, 11 ],
    2465                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2466                                         "Christmas Eve"               : [ 12, 24 ],
    2467                                         "Christmas Day"               : [ 12, 25 ],
    2468                                         "Good Friday"                 : [ "easter", -2 ]
    2469                                 }
    2470                         },
    2471                         'Texas': {
    2472                                 'PH': {
    2473                                         "New Year's Day"              : [ 1, 1 ],
    2474                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2475                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2476                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2477                                         "Independence Day"            : [ 7, 4 ],
    2478                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2479                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2480                                         "Veterans Day"                : [ 11, 11 ],
    2481                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2482                                         "Friday after Thanksgiving"   : [ "firstNovemberThursday", 22 ],
    2483                                         "Christmas Eve"               : [ 12, 24 ],
    2484                                         "Christmas Day"               : [ 12, 25 ],
    2485                                         "Day after Christmas"         : [ 12, 26 ]
    2486                                 }
    2487                         },
    2488                         'United States Virgin Islands': {
    2489                                 'PH': {
    2490                                         "New Year's Day"                            : [ 1, 1 ],
    2491                                         "Martin Luther King, Jr. Day"               : [ "firstJanuaryMonday", 14 ],
    2492                                         "Washington's Birthday"                     : [ "firstFebruaryMonday", 14 ],
    2493                                         "Memorial Day"                              : [ "lastMayMonday", 0 ],
    2494                                         "Independence Day"                          : [ 7, 4 ],
    2495                                         "Labor Day"                                 : [ "firstSeptemberMonday", 0 ],
    2496                                         "Virgin Islands-Puerto Rico Friendship Day" : [ "firstOctoberMonday", 7 ],
    2497                                         "Veterans Day"                              : [ 11, 11 ],
    2498                                         "Thanksgiving"                              : [ "firstNovemberThursday", 21 ],
    2499                                         "Christmas Day"                             : [ 12, 25 ],
    2500                                         "Three Kings Day"                           : [ 1, 6 ],
    2501                                         "Transfer Day"                              : [ 3, 31 ],
    2502                                         "Holy Thursday"                             : [ "easter", -3 ],
    2503                                         "Good Friday"                               : [ "easter", -2 ],
    2504                                         "Easter Monday"                             : [ "easter", 1 ],
    2505                                         "Emancipation Day"                          : [ 7, 3 ],
    2506                                         "Hurricane Supplication Day"                : [ "firstJulyMonday", 21 ],
    2507                                         "Hurricane Thanksgiving"                    : [ 10, 25 ],
    2508                                         "Liberty Day"                               : [ 11, 1 ],
    2509                                         "Christmas Second Day"                      : [ 12, 26 ],
    2510                                         "New Year's Eve"                            : [ 12, 31 ]
    2511                                 }
    2512                         },
    2513                         'Utah': {
    2514                                 'PH': {
    2515                                         "New Year's Day"              : [ 1, 1 ],
    2516                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2517                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2518                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2519                                         "Independence Day"            : [ 7, 4 ],
    2520                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2521                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2522                                         "Veterans Day"                : [ 11, 11 ],
    2523                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2524                                         "Christmas Day"               : [ 12, 25 ],
    2525                                         "Pioneer Day"                 : [ 7, 24 ]
    2526                                 }
    2527                         },
    2528                         'Vermont': {
    2529                                 'PH': {
    2530                                         "New Year's Day"              : [ 1, 1 ],
    2531                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2532                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2533                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2534                                         "Independence Day"            : [ 7, 4 ],
    2535                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2536                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2537                                         "Veterans Day"                : [ 11, 11 ],
    2538                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2539                                         "Christmas Day"               : [ 12, 25 ],
    2540                                         "Town Meeting Day"            : [ "firstMarchTuesday", 0 ],
    2541                                         "Battle of Bennington"        : [ "firstAugustMonday", 14 ]
    2542                                 }
    2543                         },
    2544                         'Virginia': {
    2545                                 'PH': {
    2546                                         "New Year's Day"              : [ 1, 1 ],
    2547                                         "Lee-Jackson Day"             : [ "firstJanuaryMonday", 11 ],
    2548                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2549                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2550                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2551                                         "Independence Day"            : [ 7, 4 ],
    2552                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2553                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2554                                         "Veterans Day"                : [ 11, 11 ],
    2555                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2556                                         "Christmas Day"               : [ 12, 25 ]
    2557                                 }
    2558                         },
    2559                         'Washington': {
    2560                                 'PH': {
    2561                                         "New Year's Day"              : [ 1, 1 ],
    2562                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2563                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2564                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2565                                         "Independence Day"            : [ 7, 4 ],
    2566                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2567                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2568                                         "Veterans Day"                : [ 11, 11 ],
    2569                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2570                                         "Christmas Day"               : [ 12, 25 ]
    2571                                 }
    2572                         },
    2573                         'West Virginia': {
    2574                                 'PH': {
    2575                                         "New Year's Day"              : [ 1, 1 ],
    2576                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2577                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2578                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2579                                         "Independence Day"            : [ 7, 4 ],
    2580                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2581                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2582                                         "Veterans Day"                : [ 11, 11 ],
    2583                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2584                                         "Christmas Day"               : [ 12, 25 ],
    2585                                         "West Virginia Day"           : [ 6, 20 ],
    2586                                         "Lincoln's Day"               : [ "firstNovemberThursday", 22 ]
    2587                                 }
    2588                         },
    2589                         'Wisconsin': {
    2590                                 'PH': { // http://docs.legis.wisconsin.gov/statutes/statutes/995/20
    2591                                         "New Year's Day"              : [ 1, 1 ],
    2592                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2593                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2594                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2595                                         "Independence Day"            : [ 7, 4 ],
    2596                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2597                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2598                                         "Veterans Day"                : [ 11, 11 ],
    2599                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2600                                         "Christmas Day"               : [ 12, 25 ],
    2601                                         "Primary Election Day"        : [ "firstAugustTuesday", 7 ],
    2602                                         "Election Day"                : [ "firstNovemberMonday", 1 ]
    2603                                 }
    2604                         },
    2605                         'Wyoming': {
    2606                                 'PH': {
    2607                                         "New Year's Day"              : [ 1, 1 ],
    2608                                         "Martin Luther King, Jr. Day" : [ "firstJanuaryMonday", 14 ],
    2609                                         "Washington's Birthday"       : [ "firstFebruaryMonday", 14 ],
    2610                                         "Memorial Day"                : [ "lastMayMonday", 0 ],
    2611                                         "Independence Day"            : [ 7, 4 ],
    2612                                         "Labor Day"                   : [ "firstSeptemberMonday", 0 ],
    2613                                         "Columbus Day"                : [ "firstOctoberMonday", 7 ],
    2614                                         "Veterans Day"                : [ 11, 11 ],
    2615                                         "Thanksgiving"                : [ "firstNovemberThursday", 21 ],
    2616                                         "Christmas Day"               : [ 12, 25 ]
    2617                                 }
    2618                         }
    2619                 }, // }}}
    2620                 'si': { // {{{
    2621                         'PH': { // http://www.vlada.si/o_sloveniji/politicni_sistem/prazniki/
    2622                                 'novo leto'                                 : [  1,  1 ],
    2623                                 'Prešernov dan, slovenski kulturni praznik' : [  2,  8 ],
    2624                                 'velikonočna nedelja'                       : [ 'easter',  0 ],
    2625                                 'velikonočni ponedeljek'                    : [ 'easter',  1 ],
    2626                                 'dan upora proti okupatorju'                : [  4,  27 ],
    2627                                 'praznik dela 1'                            : [  5, 1 ],
    2628                                 'praznik dela 2'                            : [  5, 2 ],
    2629                                 'binkoštna nedelja - binkošti'              : [ 'easter',  49 ],
    2630                                 'dan državnosti'                            : [  6, 25 ],
    2631                                 'Marijino vnebovzetje'                      : [  8, 15 ],
    2632                                 'dan reformacije'                           : [ 10, 31 ],
    2633                                 'dan spomina na mrtve'                      : [ 11,  1 ],
    2634                                 'božič'                                     : [ 12, 25 ],
    2635                                 'dan samostojnosti in enotnosti'            : [ 12, 26 ]
    2636                         }
    2637                 }, // }}}
    2638                 'it': { // {{{
    2639                         'PH': { // http://www.governo.it/Presidenza/ufficio_cerimoniale/cerimoniale/giornate.html
    2640                                 'Capodanno'                                 : [  1,  1 ],
    2641                                 'Epifania'                                  : [  1,  6 ],
    2642                                 'Liberazione dal nazifascismo (1945)'       : [  4, 25 ],
    2643                                 'Pasqua'                                    : [ 'easter',  0 ],
    2644                                 'Lunedì di Pasqua'                          : [ 'easter',  1 ],
    2645                                 'Festa del lavoro'                          : [  5, 1 ],
    2646                                 'Festa della Repubblica'                    : [  6, 2 ],
    2647                                 'Assunzione di Maria'                       : [  8, 15 ],
    2648                                 'Ognissanti'                                : [ 11,  1 ],
    2649                                 'Festa dell’unità nazionale'                : [ 'firstSeptemberSunday', 0 ],
    2650                                 'Immacolata Concezione'                     : [ 12,  8 ],
    2651                                 'Natale di Gesù'                            : [ 12, 25 ],
    2652                                 'Santo Stefano'                             : [ 12, 26 ],
    2653                         },
    2654                 }, // }}}
    2655         };
    2656         // }}}
    2657 
    2658         // error correction {{{
    2659         // Taken form http://www.netzwolf.info/j/osm/time_domain.js
    2660         // Credits go to Netzwolf
    2661         //
    2662         // Key to word_error_correction is the token name except wrong_words
    2663         var word_error_correction = {
    2664                 wrong_words: { /* {{{ */
    2665                         'Assuming "<ok>" for "<ko>".': {
    2666                                 'Frühling':  'Mar-May',
    2667                                 'Frühjahr':  'Mar-May',
    2668                                 'Sommer':    'Jun-Aug',
    2669                                 'Herbst':    'Sep-Nov',
    2670                                 'winter':    'Dec-Feb',
    2671                         }, '"<ko>" wird als "<ok>" interpertiert.': {
    2672                                 'spring':  'Mar-May',
    2673                                 'summer':  'Jun-Aug',
    2674                                 'autumn':  'Sep-Nov',
    2675                                 // 'winter':  'Dec-Feb', // Same as in English.
    2676                                 // morning: '08:00-12:00',
    2677                                 // evening: '13:00-18:00',
    2678                                 '_':  '-',
    2679                                 'daytime': 'sunrise-sunset',
    2680                         }, 'Bitte benutze die englische Schreibweise "<ok>" für "<ko>".': {
    2681                                 'sommer':   'summer',
    2682                                 'werktag':  'Mo-Fr',
    2683                                 'werktags': 'Mo-Fr',
    2684                         }, 'Bitte benutze "<ok>" für "<ko>". Beispiel: "Mo-Fr 08:00-12:00; Tu off".': {
    2685                                 'ruhetag':     'off',
    2686                                 'ruhetage':    'off',
    2687                                 'geschlossen': 'off',
    2688                                 'geschl':      'off',
    2689                                 // 'ausser':      'off',
    2690                                 // 'außer':       'off',
    2691                         }, 'Neem de engelse afkorting "<ok>" voor "<ko>" alstublieft.': {
    2692                                 'gesloten':   'off',
    2693                                 'feestdag':   'PH',
    2694                                 'feestdagen': 'PH',
    2695                         }, 'Assuming "<ok>" for "<ko>". Please avoid using "workday": http://wiki.openstreetmap.org/wiki/Talk:Key:opening_hours#need_syntax_for_holidays_and_workingdays': {
    2696                                 // Used around 260 times but the problem is, that work day might be different in other countries.
    2697                                 'wd':           'Mo-Fr',
    2698                                 'on work day':  'Mo-Fr',
    2699                                 'on work days': 'Mo-Fr',
    2700                                 'weekday':      'Mo-Fr',
    2701                                 'weekdays':     'Mo-Fr',
    2702                                 'vardagar':     'Mo-Fr',
    2703                         }, 'Please use something like "Mo off" instead "<ko>".': {
    2704                                 'except': 'off',
    2705                         }, 'Please omit "<ko>" or use a colon instead: "12:00-14:00".': {
    2706                                 'h': '',
    2707                         }, 'Please omit "<ko>".': {
    2708                                 'season': '',
    2709                                 'hs':     '',
    2710                                 'hrs':    '',
    2711                                 'hours':  '',
    2712                                 '·':      '',
    2713                         }, 'Please omit "<ko>". The key must not be in the value.': {
    2714                                 'opening_hours=': '',
    2715                         }, 'Please omit "<ko>". You might want to express open end which can be specified as "12:00+" for example.': {
    2716                                 'from': '',
    2717                         }, 'You can use notation "<ok>" for "<ko>" in the case that you want to express open end times. Example: "12:00+".': {
    2718                                 'til late': '+',
    2719                                 'till late': '+',
    2720                                 'bis open end': '+',
    2721                                 '-late': '+',
    2722                                 '-open end': '+',
    2723                                 '-openend': '+',
    2724                         }, 'Please use notation "<ok>" for "<ko>". If the times are unsure or vary consider a comment e.g. 12:00-14:00 "only on sunshine".': {
    2725                                 '~':  '-',
    2726                                 '~': '-',
    2727                         }, 'Please use notation "<ok>" for "<ko>". Fallback rule: 12:00-14:00 || "call us"': {
    2728                                 'otherwise':  '||',
    2729                         }, 'You can use notation "<ok>" for "<ko>" temporally if the syntax will still be valid.': {
    2730                                 '?':  'unknown "please add this if known"',
    2731                         }, 'Please use notation "<ok>" for "<ko>". Although using "–" is typographical correct, the opening_hours syntax is defined with the normal hyphen. Correct typography should be done on application level …': {
    2732                                 '–':  '-',
    2733                         }, 'Please use notation "<ok>" for "<ko>".': {
    2734                                 '→':               '-',
    2735                                 '−':               '-',
    2736                                 '=':               '-',
    2737                                 'ー':              '-',
    2738                                 'to':              '-',
    2739                                 'до':              '-',
    2740                                 'a':               '-', // language unknown
    2741                                 'as':              '-', // language unknown
    2742                                 'á':               '-', // language unknown
    2743                                 'ás':              '-', // language unknown
    2744                                 'às':              '-', // language unknown
    2745                                 'ate':             '-', // language unknown
    2746                                 'till':            '-',
    2747                                 'til':             '-',
    2748                                 'until':           '-',
    2749                                 'through':         '-',
    2750                                 'and':             ',',
    2751                                 '&':               ',',
    2752                                 // '/':               ',', // Can not be corrected as / is a valid token
    2753                                 ':':              ':',
    2754                                 '°°':              ':00',
    2755                                 'always':          '24/7',
    2756                                 'nonstop':         '24/7',
    2757                                 '24x7':            '24/7',
    2758                                 'anytime':         '24/7',
    2759                                 'all day':         '24/7',
    2760                                 'daily':           'Mo-Su',
    2761                                 'everyday':        'Mo-Su',
    2762                                 'every day':       'Mo-Su',
    2763                                 'all days':        'Mo-Su',
    2764                                 '7j/7':            'Mo-Su', // I guess that it means that
    2765                                 '7/7':             'Mo-Su', // I guess that it means that
    2766                                 /* {{{
    2767                                  * Fixing this causes to ignore the following warning: "There should be no
    2768                                  * reason to differ more than 6 days from a constrained
    2769                                  * weekdays. If so tell us …".
    2770                                  * The following mistake is expected to occur more often.
    2771                                  */
    2772                                 '7days':           'Mo-Su',
    2773                                 '7 days':          'Mo-Su',
    2774                                 // }}}
    2775                                 '7 days a week':   'Mo-Su',
    2776                                 '7 days/week':     'Mo-Su',
    2777                                 '24 hours 7 days a week':   '24/7',
    2778                                 '24 hours':                '00:00-24:00',
    2779                                 'midday':          '12:00',
    2780                                 'midnight':        '00:00',
    2781                                 'holiday':         'PH',
    2782                                 'holidays':        'PH',
    2783                                 'public holidays': 'PH',
    2784                                 'public holiday':  'PH',
    2785                                 'day after public holiday':      'PH +1 day',
    2786                                 'one day after public holiday':  'PH +1 day',
    2787                                 'day before public holiday':     'PH -1 day',
    2788                                 'one day before public holiday': 'PH -1 day',
    2789                                 'school holiday':  'SH',
    2790                                 'school holidays': 'SH',
    2791                                 // summerholiday:  'SH',
    2792                                 // summerholidays: 'SH',
    2793                                 /* Not implemented {{{ */
    2794                                 // 'day after school holiday':      'SH +1 day',
    2795                                 // 'one day after school holiday':  'SH +1 day',
    2796                                 // 'day before school holiday':     'SH -1 day',
    2797                                 // 'one day before school holiday': 'SH -1 day',
    2798                                 /* }}} */
    2799                                 'weekend':         'Sa,Su',
    2800                                 'weekends':        'Sa,Su',
    2801                                 'daylight':        'sunrise-sunset',
    2802                         }, 'Please use notation "<ok>" for "<ko>". Those characters look very similar but are not the same!': {
    2803                                 'оff':             'off', // Russian o
    2804                         }, 'Please use time format in 24 hours notation ("<ko>"). If PM is used you might have to convert the hours to the 24 hours notation.': {
    2805                                 'pm': '',
    2806                                 'рм': '',
    2807                                 'am': '',
    2808                                 'ам': '',
    2809                         }, 'Bitte verzichte auf "<ko>".': {
    2810                                 'uhr': '',
    2811                                 'geöffnet': '',
    2812                                 'zwischen': '',
    2813                                 'ist': '',
    2814                                 'durchgehend': '',
    2815                         }, 'Bitte verzichte auf "<ko>". Sie möchten eventuell eine Öffnungszeit ohne vorgegebenes Ende (Open End) angeben. Beispiel: "12:00+"': {
    2816                                 'ab':  '',
    2817                                 'von': '',
    2818                         }, 'Es sieht so aus also möchten Sie zusätzliche Einschränkungen für eine Öffnungszeit geben. Falls sich dies nicht mit der Syntax ausdrücken lässt können Kommentare verwendet werden. Zusätzlich sollte eventuell das Schlüsselwort `open` benutzt werden. Bitte probiere "<ok>" für "<ko>".': {
    2819                                 'damen':  'open "Damen"',
    2820                                 'herren': 'open "Herren"',
    2821                         }, 'Bitte benutze die Schreibweise "<ok>" für "<ko>".': {
    2822                                 'bis':         '-',
    2823                                 'täglich':     'Mo-Su',
    2824                                 'schulferien': 'SH',
    2825                                 'sonn und feiertag':   'PH,Su',
    2826                                 'sonn und feiertags':  'PH,Su',
    2827                                 'sonn- und feiertags': 'PH,Su',
    2828                                 'sonn-/feiertag':      'PH,Su',
    2829                                 'sonn-/feiertags':     'PH,Su',
    2830                                 'an sonn- und feiertagen': 'PH,Su',
    2831                                 'nur sonn-/feiertags': 'PH,Su',
    2832                                 'sonn- und feiertage': 'PH,Su',
    2833                         }, 'Bitte benutze die Schreibweise "<ok>" für "<ko>". Es ist war typografisch korrekt aber laut der Spezifikation für opening_hours nicht erlaubt. Siehe auch: http://wiki.openstreetmap.org/wiki/DE:Key:opening_hours/specification.': {
    2834                                 '„': '"',
    2835                                 '“': '"',
    2836                                 '”': '"',
    2837                         }, 'Please use notation "<ok>" for "<ko>". The used quote signs might be typographically correct but are not defined in the specification. See http://wiki.openstreetmap.org/wiki/Key:opening_hours/specification.': {
    2838                                 '«': '"',
    2839                                 '»': '"',
    2840                                 '‚': '"',
    2841                                 '‘': '"',
    2842                                 '’': '"',
    2843                                 '「': '"',
    2844                                 '」': '"',
    2845                                 '『': '"',
    2846                                 '』': '"',
    2847                         }, 'Please use notation "<ok>" for "<ko>". The used quote signs are not defined in the specification. See http://wiki.openstreetmap.org/wiki/Key:opening_hours/specification.': {
    2848                                 "'": '"',
    2849                         }, 'You might want to use comments instead of brackets (which are not valid in this context). If you do, replace "<ok>" with "<ko>".': {
    2850                                 // '(': '"',
    2851                                 // ')': '"',
    2852                         }, 'Bitte benutze die Schreibweise "<ok>" als Ersatz für "und" bzw. "u.".': {
    2853                                 'und': ',',
    2854                                 'u':   ',',
    2855                         }, 'Bitte benutze die englische Abkürzung "<ok>" für "<ko>".': {
    2856                                 'feiertag':   'PH',
    2857                                 'feiertags':  'PH',
    2858                                 'feiertage':  'PH',
    2859                                 'feiertagen': 'PH'
    2860                         }, 'S\'il vous plaît utiliser "<ok>" pour "<ko>".': {
    2861                                 'fermé':        'off',
    2862                                 'et':           ',',
    2863                                 'à':            '-',
    2864                                 'jours fériés': 'PH',
    2865                         }
    2866                 }, /* }}} */
    2867 
    2868                 month: { /* {{{ */
    2869                         'default': {
    2870                                 'jan':  0,
    2871                                 'feb':  1,
    2872                                 'mar':  2,
    2873                                 'apr':  3,
    2874                                 'may':  4,
    2875                                 'jun':  5,
    2876                                 'jul':  6,
    2877                                 'aug':  7,
    2878                                 'sep':  8,
    2879                                 'oct':  9,
    2880                                 'nov': 10,
    2881                                 'dec': 11,
    2882                         }, 'Please use the English abbreviation "<ok>" for "<ko>".': {
    2883                                 'jänner':   0, // Austria
    2884                                 'january':    0,
    2885                                 'february':   1,
    2886                                 'march':      2,
    2887                                 'april':      3,
    2888                                 // 'may':     4,
    2889                                 'june':       5,
    2890                                 'july':       6,
    2891                                 'august':     7,
    2892                                 'september':  8,
    2893                                 'sept':       8,
    2894                                 'october':    9,
    2895                                 'november':  10,
    2896                                 'december':  11,
    2897                         }, 'Bitte benutze die englische Abkürzung "<ok>" für "<ko>".': {
    2898                                 'januar':    0,
    2899                                 'februar':   1,
    2900                                 'märz':    2,
    2901                                 'maerz':     2,
    2902                                 'mai':       4,
    2903                                 'juni':      5,
    2904                                 'juli':      6,
    2905                                 'okt':       9,
    2906                                 'oktober':   9,
    2907                                 'dez':      11,
    2908                                 'dezember': 11,
    2909                         }, 'S\'il vous plaît utiliser l\'abréviation "<ok>" pour "<ko>".': {
    2910                                 'janvier':    0,
    2911                                 'février':    1,
    2912                                 'fév':        1,
    2913                                 'mars':       2,
    2914                                 'avril':      3,
    2915                                 'avr':        3,
    2916                                 'mai':        4,
    2917                                 'juin':       5,
    2918                                 'juillet':    6,
    2919                                 'août':       7,
    2920                                 'aoû':        7,
    2921                                 'septembre':  8,
    2922                                 'octobre':    9,
    2923                                 'novembre':  10,
    2924                                 'décembre':  11,
    2925                         }, 'Neem de engelse afkorting "<ok>" voor "<ko>" alstublieft.': {
    2926                                 'januari':  0,
    2927                                 'februari': 1,
    2928                                 'maart':    2,
    2929                                 'mei':      4,
    2930                                 'augustus': 7,
    2931                         }
    2932                 }, /* }}} */
    2933 
    2934                 calcday: {
    2935                         'default': {
    2936                                 'day': 'day',
    2937                                 'days': 'days',
    2938                         },
    2939                 },
    2940 
    2941                 weekday: { // {{{ Good source: http://www.omniglot.com/language/time/days.htm */
    2942                         'default': {
    2943                                 'su': 0,
    2944                                 'mo': 1,
    2945                                 'tu': 2,
    2946                                 'we': 3,
    2947                                 'th': 4,
    2948                                 'fr': 5,
    2949                                 'sa': 6,
    2950                         }, 'Assuming "<ok>" for "<ko>"': {
    2951                                 'm':          1,
    2952                                 'w':          3,
    2953                                 'f':          5,
    2954                         }, 'Please use the abbreviation "<ok>" for "<ko>".': {
    2955                                 'sun':        0,
    2956                                 'sunday':     0,
    2957                                 'sundays':    0,
    2958                                 'mon':        1,
    2959                                 'monday':     1,
    2960                                 'mondays':    1,
    2961                                 'tue':        2,
    2962                                 'tues':       2, // Used here: http://www.westerhambeauty.co.uk/contact.php
    2963                                 'tuesday':    2,
    2964                                 'tuesdays':   2,
    2965                                 'wed':        3,
    2966                                 'weds':       3,
    2967                                 'wednesday':  3,
    2968                                 'wednesdays': 3,
    2969                                 'thu':        4,
    2970                                 'thur':       4,
    2971                                 'thurs':      4,
    2972                                 'thursday':   4,
    2973                                 'thursdays':  4,
    2974                                 'fri':        5,
    2975                                 'friday':     5,
    2976                                 'fridays':    5,
    2977                                 'sat':        6,
    2978                                 'saturday':   6,
    2979     &