{"version":3,"file":"kendo.calendar.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendocalendar","js","this","$","undefined$1","kendo","window","support","ui","Widget","keys","parse","parseDate","encode","htmlEncode","adjustDST","date","weekInYear","Selectable","extractFormat","_extractFormat","template","getCulture","transitions","transitionOrigin","css","cellTemplate","data","emptyCellTemplate","otherMonthCellTemplate","weekNumberTemplate","outerWidth","_outerWidth","ns","CLICK","KEYDOWN_NS","ID","SLIDE","MONTH","CENTURY","CHANGE","NAVIGATE","VALUE","DISABLED","FOCUSED","OTHERMONTH","CELLSELECTOR","CELLSELECTORVALID","SELECTED","BLUR","FOCUS","FOCUS_WITH_NS","MOUSEENTER","touch","MOUSEENTER_WITH_NS","MOUSELEAVE","MS_PER_DAY","PREVARROW","NEXTARROW","ARIA_DISABLED","ARIA_SELECTED","ARIA_LABEL","extend","DATE","Date","views","month","year","decade","century","HEADERSELECTOR","Calendar","init","element","options","value","that","componentType","fn","call","wrapper","url","unescape","disableDates","getDisabledExpr","_templates","_selectable","_header","_viewWrapper","hasFooter","_footer","footer","_today","find","_toggle","addClass","weekNumber","on","mousetoggle","_move","bind","e","link","currentTarget","firstChild","toDateObject","href","indexOf","preventDefault","_view","name","selectable","_click","_focusView","focusOnNav","attr","_isMultipleSelection","first","closest","last","_lastActive","selectRange","trigger","event","_current","_value","_setCurrent","normalize","format","culture","_selectDates","_index","start","restrictValue","min","max","_addClassProxy","_active","_cell","hasClass","todayString","toDateString","getToday","_cellByDate","_removeClassProxy","removeClass","selectDates","length","notify","dates","depth","size","animation","horizontal","effects","reverse","duration","divisor","vertical","messages","weekColumnHeader","today","navigateTo","parentViews","events","componentTypes","classic","header","ref","actionAttr","isRtl","icon","iconClass","guid","linksSelector","contentClasses","modern","setOptions","_destroySelectable","hide","navigate","destroy","off","_title","_table","current","view","focus","table","_bindTable","_option","navigateToPast","_navigate","navigateToFuture","navigateUp","index","navigateDown","isEqualDate","isNaN","to","currentView","compare","disabled","title","from","old","_oldTable","currentValue","future","viewWrapper","children","calendar","toggleClass","kendoStop","_changeView","html","removeAttr","content","otherMonth","isWeekColumnVisible","_aria","addClassToViewContainer","replace","_animate","_focus","_visualizeSelectedDatesInView","_selectCell","validSelectedDates","datesUnique","map","getTime","filter","position","array","time","grep","_validateValue","setHours","createDate","getFullYear","getMonth","getDate","isInRange","selectedDates","each","clear","cells","_selectElement","selectableOptions","parseOptions","aria","inputSelectors","multiple","change","_onSelect","relatedTarget","_onRelatedTarget","target","is","eventArgs","ctrlKey","metaKey","_toggleSelection","_cellsBySelector","_deselect","_addSelectedCellsToArray","shiftKey","_rangeSelection","currentCell","push","toDateCell","startDate","daysDifference","fromDate","toDate","daysBetweenTwoDates","addDaysToArray","selector","item","currentDateIndex","Number","splice","_dateInView","firstDateInView","_isNavigatable","cellIndex","isDisabled","eq","prevent","method","temp","key","keyCode","RIGHT","LEFT","UP","DOWN","SPACEBAR","HOME","END","getHours","getMinutes","getSeconds","getMilliseconds","setFullYear","_todayClick","ENTER","_keyboardToggleSelection","focusedDate","setDate","_nextNavigatable","_keyboardRangeSelection","PAGEUP","PAGEDOWN","_unselect","navigatableDate","active","parent","remove","append","insertAfter","_horizontal","viewWidth","margin","add","width","wrap","display","complete","unwrap","kendoAnimate","_vertical","cell","insertBefore","left","parseInt","top","height","_selectedCell","removeAttribute","id","appendTo","show","toString","getValidCssClass","arrow","modifier","has","option","isBigger","value1","value2","isEqualMonth","empty","toggle","isTodayDisabled","todayClass","_todayClass","footerTemplate","executeTemplate","useWithBlock","_updateAria","ariaTemplate","text","valueType","plugin","firstDayOfMonth","firstVisibleDay","calendarInfo","firstDay","getDay","setTime","tzOffsetBefore","getTimezoneOffset","resultDATE","tzOffsetDiff","getCalendarInfo","months","names","idx","navigateUrl","showHeader","hasUrl","currentCalendar","firstDayIdx","days","shiftArray","shortNames","namesShort","lastDayOfMonth","perRow","setter","build","cssClass","day","linkClass","i","inArray","dateString","join","weekNumberBuild","currentDate","timeOffset","Math","abs","date1","date2","month1","year1","month2","year2","hours","calendarMonths","namesAbbr","namesFull","label","setMonth","minYear","maxYear","end","modular","cellsPerRow","otherMonthTemplate","result","slice","concat","multiplier","endDate","fromDateUTC","UTC","endDateUTC","ceil","numberOfDays","nextDay","type","dateObject","calendars","standard","patterns","d","isFunction","Array","isArray","callback","disabledDates","convertDatesArray","toLowerCase","createDisabledExpr","noop","oldValue","newValue","split","tmpl","isEqualDatePart","viewsEnum","jQuery"],"sources":["kendo.calendar.js"],"mappings":"CAAA,SAAWA,EAAQC,GACI,iBAAZC,SAA0C,oBAAXC,OAAyBA,OAAOD,QAAUD,EAAQG,QAAQ,iBAAkBA,QAAQ,uBAAwBA,QAAQ,mBACxI,mBAAXC,QAAyBA,OAAOC,IAAMD,OAAO,CAAC,iBAAkB,uBAAwB,mBAAoBJ,KAClHD,EAA+B,oBAAfO,WAA6BA,WAAaP,GAAUQ,MAAcC,cAAgBT,EAAOS,eAAiB,CAAC,EAAGT,EAAOS,cAAcC,GAAKT,IAC5J,CAJD,CAIGU,MAAM,WA6kEL,OApkEA,SAAUC,EAAGC,GACT,IAAIC,EAAQC,OAAOD,MACfE,EAAUF,EAAME,QAChBC,EAAKH,EAAMG,GACXC,EAASD,EAAGC,OACZC,EAAOL,EAAMK,KACbC,EAAQN,EAAMO,UACdC,EAASR,EAAMS,WACfC,EAAYV,EAAMW,KAAKD,UACvBE,EAAaZ,EAAMW,KAAKC,WACxBC,EAAab,EAAMG,GAAGU,WACtBC,EAAgBd,EAAMe,eACtBC,EAAWhB,EAAMgB,SACjBC,EAAajB,EAAMiB,WACnBC,EAAclB,EAAME,QAAQgB,YAC5BC,EAAmBD,EAAcA,EAAYE,IAAM,mBAAqB,GACxEC,EAAeL,GAAS,SAAUM,GAAQ,MAAQ,cAAkBA,EAAa,SAAI,mEAA+EA,EAAO,GAAI,UAAcA,EAAe,WAAI,KAASA,EAAU,MAAI,WAAc,IACrPC,EAAoBP,GAAS,WAAc,MAAO,sFAAwF,IAC1IQ,EAAyBR,GAAS,WAAc,MAAO,sEAAwE,IAC/HS,EAAqBT,GAAS,SAAUM,GAAQ,MAAQ,mCAAwCA,EAAe,WAAI,OAAU,IAC7HI,EAAa1B,EAAM2B,YACnBC,EAAK,iBACLC,EAAQ,QAAUD,EAClBE,EAAa,UAAYF,EACzBG,EAAK,KAGLC,EAAQ,UACRC,EAAQ,QACRC,EAAU,UACVC,EAAS,SACTC,EAAW,WACXC,EAAQ,QAERC,EAAW,aACXC,EAAU,UACVC,EAAa,gBAGbC,EAAe,kBACfC,EAAoB,wBAA0BJ,EAA1B,yBAEpBK,EAAW,aACXC,EAAO,OAAShB,EAChBiB,EAAQ,QACRC,EAAgBD,EAAQjB,EACxBmB,EAAa7C,EAAQ8C,MAAQ,aAAe,aAC5CC,EAAqB/C,EAAQ8C,MAAQ,aAAepB,EAAK,aAAeA,EACxEsB,EAAahD,EAAQ8C,MAAQ,WAAapB,EAAK,aAAeA,EAAK,aAAeA,EAElFuB,EAAa,MACbC,EAAY,aACZC,EAAY,aACZC,EAAgB,gBAChBC,EAAgB,gBAChBC,EAAa,aACbC,EAAS3D,EAAE2D,OACXC,EAAOC,KACPC,EAAQ,CACJC,MAAO,EACPC,KAAM,EACNC,OAAQ,EACRC,QAAS,GAEbC,EAAiB,gCAiBjBC,GAAW9D,EAAOqD,OAAO,CACzBU,KAAM,SAASC,EAASC,GACpB,IAAiBC,EAAbC,EAAO1E,MACXwE,EAAUA,GAAW,CAAC,GACdG,cAAgBH,EAAQG,eAAiB,UACjDpE,EAAOqE,GAAGN,KAAKO,KAAKH,EAAMH,EAASC,GAEnCD,EAAUG,EAAKI,QAAUJ,EAAKH,SAC9BC,EAAUE,EAAKF,SAEPO,IAAM5E,EAAM6E,SAASR,EAAQO,KAErCL,EAAKF,QAAQS,aAAeC,GAAgBR,EAAKF,QAAQS,cAEzDP,EAAKS,aAELT,EAAKU,cAELV,EAAKW,UAELX,EAAKY,eAEDZ,EAAKF,QAAQe,UACbb,EAAKc,QAAQd,EAAKe,SAElBf,EAAKgB,OAAShB,EAAKH,QAAQoB,KAAK,yBAChCjB,EAAKkB,WAGJrB,EACAsB,SAAS,wBAA0BrB,EAAQsB,WAAa,iBAAmB,KAC3EC,GAAG3C,EAAqB,IAAMC,EAAYT,EAAcoD,IACxDD,GAAG9D,EAAY,kBAAmByC,EAAKuB,MAAMC,KAAKxB,IAClDqB,GAAG/D,EAAQ,YAAaY,GAAc,SAASuD,GAC5C,IAAIC,EAAOD,EAAEE,cAAcC,WACvB7B,EAAQ8B,GAAaH,IAEM,GAA3BA,EAAKI,KAAKC,QAAQ,MAClBN,EAAEO,iBAGiB,SAAnBhC,EAAKiC,MAAMC,MAAmBlC,EAAKF,QAAQS,aAAaR,IAGrC,SAAnBC,EAAKiC,MAAMC,MAAyC,UAAtBpC,EAAQqC,YAClCnC,EAAKoC,OAAO7G,EAAEmG,GAE1B,IACCL,GAAG,UAAYhE,EAAI,8BAA8B,WAC9C2C,EAAKqC,YAAuC,IAA5BrC,EAAKF,QAAQwC,WACjC,IACCC,KAAK/E,GAENwC,EAAKwC,wBAA0BxC,EAAKF,QAAQsB,YAC5CvB,EAAQwB,GAAG/D,EA9FE,yBA8FyB,SAASmE,GACvC,IAAIgB,EAAQlH,EAAEkG,EAAEE,eAAee,QAAQ,MAAMzB,KAAK9C,GAAmBsE,QACjEE,EAAO3C,EAAKmC,WAAWS,YAAcrH,EAAEkG,EAAEE,eAAee,QAAQ,MAAMzB,KAAK9C,GAAmBwE,OAClG3C,EAAKmC,WAAWU,YAAYJ,EAAOE,GACnC3C,EAAKmC,WAAWW,QAAQlF,EAAQ,CAAEmF,MAAOtB,IACzCzB,EAAKgD,SAAWhD,EAAKiD,OAASpB,GAAac,EAAK1B,KAAK,MACrDjB,EAAKkD,YAAYlD,EAAKgD,SAC9B,IAGJG,GAAUrD,GACVC,EAAQhE,EAAM+D,EAAQC,MAAOD,EAAQsD,OAAQtD,EAAQuD,SACrDrD,EAAKsD,aAAe,GAEpBtD,EAAKuD,OAASlE,EAAMS,EAAQ0D,OAE5BxD,EAAKgD,SAAW,IAAI7D,GAAMsE,GAAc1D,EAAOD,EAAQ4D,IAAK5D,EAAQ6D,MAEpE3D,EAAK4D,eAAiB,WAGlB,GAFA5D,EAAK6D,SAAU,EAEX7D,EAAK8D,MAAMC,SAAShG,GAAW,CAC/B,IAAIiG,EAAchE,EAAKiC,MAAMgC,aAAaC,MAC1ClE,EAAK8D,MAAQ9D,EAAKmE,YAAYH,EAClC,CAEAhE,EAAK8D,MAAM3C,SAASnD,EACxB,EAEAgC,EAAKoE,kBAAoB,WACrBpE,EAAK6D,SAAU,EACX7D,EAAK8D,OACL9D,EAAK8D,MAAMO,YAAYrG,EAE/B,EAEAgC,EAAKD,MAAMA,GAEPC,EAAKwC,wBAA0B1C,EAAQwE,YAAYC,OAAS,GAC5DvE,EAAKsE,YAAYxE,EAAQwE,aAE7B7I,EAAM+I,OAAOxE,EACjB,EAEAF,QAAS,CACLoC,KAAM,WACNnC,MAAO,KACP2D,IAAK,IAAIvE,EAAK,KAAM,EAAG,GACvBwE,IAAK,IAAIxE,EAAK,KAAM,GAAI,IACxBsF,MAAO,GACPlE,aAAc,KACdF,IAAK,GACLgD,QAAS,GACTtC,OAAQ,GACRqC,OAAQ,GACR9D,MAAO,CAAC,EACR8B,YAAY,EACZe,WAAY,SACZmC,YAAa,GACbd,MAAO9F,EACPgH,MAAOhH,EACPiH,KAAM,SACNC,UAAW,CACPC,WAAY,CACRC,QAASrH,EACTsH,SAAS,EACTC,SAAU,IACVC,QAAS,GAEbC,SAAU,CACNJ,QAAS,SACTE,SAAU,MAGlBG,SAAU,CACNC,iBAAkB,GAClBC,MAAO,QACPC,WAAY,eACZC,YAAa,CACTjG,MAAO,YACPC,KAAM,cACNC,OAAQ,iBAGhBS,cAAe,WAGnBuF,OAAQ,CACJ5H,EACAC,GAGJ4H,eAAgB,CACZC,QAAW,CACPC,OAAQ,CACJlJ,SArKc,SAAUmJ,GAChC,IAAIC,EAAaD,EAAIC,WACjBlB,EAAOiB,EAAIjB,KACXmB,EAAQF,EAAIE,MAEhB,MAAO,0EAAkFD,EAAa,6DAAoElB,EAAO,iEAAoE1F,EAAa,eAAoBxD,EAAMG,GAAGmK,KAAK,CAAEA,KAAO,cAAgBD,EAAQ,QAAU,QAAUE,UAAW,kBAAsB,sDAA4DH,EAAa,iBAAsBpK,EAAMwK,OAAS,uDAA6DtB,EAAO,uGAA8GkB,EAAa,6DAAoElB,EAAO,kEAAqE1F,EAAa,WAAgBxD,EAAMG,GAAGmK,KAAK,CAAEA,KAAO,cAAgBD,EAAQ,OAAS,SAAWE,UAAW,kBAAsB,sBACh8B,GAiKYnF,WAAW,EACXqF,cAAe,YACfC,eAAgB,8BAEpBC,OAAU,CACNT,OAAQ,CACJlJ,SAtKa,SAAUmJ,GAC/B,IAAIC,EAAaD,EAAIC,WACjBlB,EAAOiB,EAAIjB,KACXQ,EAAWS,EAAIT,SACfW,EAAQF,EAAIE,MAEhB,MAAO,iEAAqED,EAAa,iBAAsBpK,EAAMwK,OAAS,sCAA0CtB,EAAO,8PAAyQkB,EAAa,KAAOC,EAAQ,OAAS,QAAU,wCAA2CnB,EAAO,uFAA2FlJ,EAAMG,GAAGmK,KAAK,CAAEA,KAAO,YAAcD,EAAQ,QAAU,QAAUE,UAAW,kBAAsB,sEAA0EH,EAAa,iDAAsDlB,EAAO,wGAA8GlJ,EAAMS,WAAWiJ,EAASE,OAAU,6EAAiFQ,EAAa,KAAOC,EAAQ,OAAS,QAAU,wCAA2CnB,EAAO,uFAA2FlJ,EAAMG,GAAGmK,KAAK,CAAEA,KAAO,YAAcD,EAAQ,OAAS,SAAWE,UAAW,kBAAsB,kEACn3C,GAiKYnF,WAAW,EACXqF,cAAe,YACfC,eAAgB,kDAIxBE,WAAY,SAASvG,GACjB,IAAIE,EAAO1E,KAEX6H,GAAUrD,GAEVA,EAAQS,aAAeC,GAAgBV,EAAQS,cAC/CP,EAAKsG,qBAEDxG,EAAQqF,WACRrF,EAAQqF,SAAW5J,EAAE2D,OAAO,CAAC,GAAG,EAAMc,EAAKF,QAAQqF,SAAUrF,EAAQqF,WAGzEtJ,EAAOqE,GAAGmG,WAAWlG,KAAKH,EAAMF,GAEhCE,EAAKS,aAELT,EAAKU,cAELV,EAAKY,eAEDZ,EAAKF,QAAQe,UACbb,EAAKc,QAAQd,EAAKe,SAElBf,EAAKH,QAAQoB,KAAK,aAAasF,OAC/BvG,EAAKkB,WAETlB,EAAKuD,OAASlE,EAAMW,EAAKF,QAAQ0D,OAEjCxD,EAAKwG,WAED1G,EAAQsB,YACRpB,EAAKH,QAAQsB,SAAS,gBAE9B,EAEAsF,QAAS,WACL,IAAIzG,EAAO1E,KACX+J,EAAQrF,EAAKgB,OAEbhB,EAAKH,QAAQ6G,IAAIrJ,GACjB2C,EAAK2G,OAAOD,IAAIrJ,GAChB2C,EAAKnB,GAAW6H,IAAIrJ,GACpB2C,EAAKlB,GAAW4H,IAAIrJ,GACpB2C,EAAKsG,qBACL7K,EAAMgL,QAAQzG,EAAK4G,QAEfvB,GACA5J,EAAMgL,QAAQpB,EAAMqB,IAAIrJ,IAG5BxB,EAAOqE,GAAGuG,QAAQtG,KAAKH,EAC3B,EAEA6G,QAAS,WACL,OAAOvL,KAAK0H,QAChB,EAEA8D,KAAM,WACF,OAAOxL,KAAK2G,KAChB,EAEA8E,MAAO,SAASC,GACZA,EAAQA,GAAS1L,KAAKsL,OACtBtL,KAAK2L,WAAWD,GAChBA,EAAMlE,QAAQ,QAClB,EAEAY,IAAK,SAAS3D,GACV,OAAOzE,KAAK4L,QAjSV,MAiSuBnH,EAC7B,EAEA4D,IAAK,SAAS5D,GACV,OAAOzE,KAAK4L,QAAQ,MAAOnH,EAC/B,EAEAoH,eAAgB,WACZ7L,KAAK8L,UAAUvI,GAAY,EAC/B,EAEAwI,iBAAkB,WACd/L,KAAK8L,UAAUtI,EAAW,EAC9B,EAEAwI,WAAY,WACR,IAAItH,EAAO1E,KACXiM,EAAQvH,EAAKuD,OAETvD,EAAK2G,OAAO5C,SAAShG,IAIzBiC,EAAKwG,SAASxG,EAAKgD,WAAYuE,EACnC,EAEAC,aAAc,SAASzH,GACnB,IAAIC,EAAO1E,KACXiM,EAAQvH,EAAKuD,OACbmB,EAAQ1E,EAAKF,QAAQ4E,MAEhB3E,IAIDwH,IAAUlI,EAAMqF,GAQpB1E,EAAKwG,SAASzG,IAASwH,GAPdE,GAAYzH,EAAKiD,OAAQjD,EAAKgD,WAAcyE,GAAYzH,EAAKiD,OAAQlD,KACtEC,EAAKD,MAAMA,GACXC,EAAK8C,QAAQlF,IAMzB,EAEA4I,SAAU,SAASzG,EAAO+G,GACtBA,EAAOY,MAAMZ,GAAQzH,EAAMyH,GAAQA,EAEnC,IAWIa,EAAIC,EAAaC,EACjBC,EAZA9H,EAAO1E,KACPwE,EAAUE,EAAKF,QACfuD,EAAUvD,EAAQuD,QAClBK,EAAM5D,EAAQ4D,IACdC,EAAM7D,EAAQ6D,IACdoE,EAAQ/H,EAAK2G,OACbqB,EAAOhI,EAAK4G,OACZqB,EAAMjI,EAAKkI,UACXC,EAAenI,EAAKgD,SACpBoF,EAASrI,IAAUA,GAASoI,EAC5BjD,EAAW4B,IAAStL,GAAesL,IAAS9G,EAAKuD,OAGjD8E,EAAcrI,EAAKH,QAAQyI,SAAS,oBAiCxC,GA/BKvI,IACDA,EAAQoI,GAGZnI,EAAKgD,SAAWjD,EAAQ,IAAIZ,GAAMsE,GAAc1D,EAAO2D,EAAKC,IAExDmD,IAAStL,EACTsL,EAAO9G,EAAKuD,OAEZvD,EAAKuD,OAASuD,EAGlB9G,EAAKiC,MAAQ2F,EAAcW,GAASlJ,MAAMyH,GAC1Ce,EAAUD,EAAYC,QAEtBC,EAAWhB,IAASzH,EAAM1B,GAC1BoK,EAAMS,YAAYzK,EAAU+J,GAAUvF,KAAKxD,EAAe+I,GAE1DA,EAAWD,EAAQ9H,EAAO2D,GAAO,EACjC1D,EAAKnB,GAAW2J,YAAYzK,EAAU+J,GAAUvF,KAAKxD,EAAe+I,GAEpEA,EAAWD,EAAQ9H,EAAO4D,IAAQ,EAClC3D,EAAKlB,GAAW0J,YAAYzK,EAAU+J,GAAUvF,KAAKxD,EAAe+I,GAEhEE,GAAQC,GAAOA,EAAIlL,KAAK,eACxBkL,EAAIQ,WAAU,GAAM,GACpBT,EAAKS,WAAU,GAAM,IAGzBzI,EAAKkI,UAAYF,GAEZA,GAAQhI,EAAK0I,YAAa,CAC3BX,EAAMY,KAAK,+BAAiCf,EAAYG,MAAMhI,EAAO2D,EAAKC,EAAKN,GAAW,WAEtFrD,EAAKF,QAAQqF,SAASI,aAAevF,EAAKiC,MAAMC,OAASvE,EACzDoK,EAAMxF,KAAK,QAAStG,EAAO+D,EAAKF,QAAQqF,SAASG,WAAatF,EAAKF,QAAQqF,SAASI,YAAYvF,EAAKiC,MAAMC,QAE3G6F,EAAMa,WAAW,SAGrB5I,EAAK4G,OAASe,EAAKpM,EAAEqM,EAAYiB,QAAQ3J,EAAO,CAC5CwE,IAAKA,EACLC,IAAKA,EACLvH,KAAM2D,EACNM,IAAKP,EAAQO,IACboE,MAAO3E,EAAQ2E,MACfrB,OAAQtD,EAAQsD,OAChB0F,YAAY,EACZzF,QAASA,EACT9C,aAAcT,EAAQS,aACtBwI,oBAAqBjJ,EAAQsB,WAC7B+D,SAAUrF,EAAQqF,SAClBgB,eAAgBnG,EAAKF,QAAQqG,gBAC9BnG,EAAK4H,EAAY1F,SAEpBlC,EAAKgJ,QAELC,GAAwBtB,EAAIC,EAAY1F,MACxC,IAAIgH,EAAUlB,GAAQA,EAAKjL,KAAK,WAAa4K,EAAG5K,KAAK,SACrDiD,EAAKmJ,SAAS,CACVnB,KAAMA,EACNL,GAAIA,EACJzC,SAAUA,EACVkD,OAAQA,EACRc,QAASA,IAGbb,EAAYhE,YAAY,yFACxBgE,EAAYlH,SAAS,cAAgByG,EAAY1F,KAAO,QAExDlC,EAAK8C,QAAQjF,GAEbmC,EAAKoJ,OAAOrJ,EAChB,CAEI+G,IAASzH,EAAMS,EAAQ4E,QAAU1E,EAAKsD,aAAaiB,OAAS,GAC5DvE,EAAKqJ,gCAGuB,WAA5BrJ,EAAKF,QAAQqC,YACT2E,IAASzH,EAAMS,EAAQ4E,QAAU1E,EAAKiD,SAAWjD,EAAKF,QAAQS,aAAaP,EAAKiD,SAChFjD,EAAKsJ,YAAYtJ,EAAKiD,QAI9BjD,EAAKkD,YAAYnD,IAEZiI,GAAQhI,EAAK8D,OACd9D,EAAK8D,MAAMO,YAAYrG,GAG3BgC,EAAK0I,aAAc,CACvB,EAEApE,YAAa,SAASG,GAClB,IACI8E,EACAC,EAFAxJ,EAAO1E,KAIX,GAAImJ,IAAUjJ,EACV,OAAOwE,EAAKsD,aAGhBkG,EAAc/E,EACTgF,KAAI,SAASrN,GAAQ,OAAOA,EAAKsN,SAAW,IAC5CC,QAAO,SAASvN,EAAMwN,EAAUC,GAC7B,OAAOA,EAAM9H,QAAQ3F,KAAUwN,CACnC,IACCH,KAAI,SAASK,GAAQ,OAAO,IAAI1K,KAAK0K,EAAO,IAEjDP,EAAqBhO,EAAEwO,KAAKP,GAAa,SAASzJ,GAC9C,GAAIA,EACA,OAAQC,EAAKgK,eAAe,IAAI5K,KAAKW,EAAMkK,SAAS,EAAG,EAAG,EAAG,OAAUlK,CAE/E,IACAC,EAAKsD,aAAeiG,EAAmBhF,OAAS,EAAIgF,EAA6C,IAAvBC,EAAYjF,OAAeiF,EAAcxJ,EAAKsD,aACxHtD,EAAKqJ,+BACT,EAEAtJ,MAAO,SAASA,GACZ,IAAIC,EAAO1E,KACP2M,EAAMjI,EAAKiC,MACX6E,EAAO9G,EAAKiC,MAEhB,GAAIlC,IAAUvE,EACV,OAAOwE,EAAKiD,OAIhB,IADAlD,EAAQC,EAAKgK,eAAejK,KACfC,EAAKwC,uBAAwB,CACtC,IAAIpG,EAAO,IAAIgD,MAAMW,GACrB3D,EAAK6N,SAAS,EAAG,EAAG,EAAG,GACvBjK,EAAKsD,aAAe,CAAClH,GACrB4D,EAAKmC,WAAWS,YAAc,IAClC,CACIqF,GAAiB,OAAVlI,GAAkBC,EAAK8D,MAC9B9D,EAAK8D,MAAMO,YAAYjG,IAEvB4B,EAAK0I,aAAe3I,GAAS+G,GAA+C,IAAvCA,EAAKe,QAAQ9H,EAAOC,EAAKgD,UAC9DhD,EAAKwG,SAASzG,GAEtB,EAEA+F,MAAO,WACH,OAAOrK,EAAME,QAAQmK,MAAMxK,KAAK8E,QACpC,EAEA4I,MAAO,WACH,IAAIhC,EAAQ1L,KAAKsL,OAEjBI,EAAMzE,KAAK,kBAAmBjH,KAAKqL,OAAOpE,KAAK,OAEvB,UAApBjH,KAAK2G,MAAMC,MAAgD,aAA5B5G,KAAKwE,QAAQqC,YAC5C6E,EAAMzE,KAAK,uBAAwB,OAE3C,EAEAyH,eAAgB,SAASjK,GACrB,IAAIC,EAAO1E,KACPwE,EAAUE,EAAKF,QACf4D,EAAM5D,EAAQ4D,IACdC,EAAM7D,EAAQ6D,IAsBlB,OApBc,OAAV5D,IACAC,EAAKgD,SAAWkH,GAAWlK,EAAKgD,SAASmH,cAAenK,EAAKgD,SAASoH,WAAYpK,EAAKgD,SAASqH,YAKtF,QAFdtK,EAAQhE,EAAMgE,EAAOD,EAAQsD,OAAQtD,EAAQuD,YAKpCiH,GAFLvK,EAAQ,IAAIZ,GAAMY,GAEI2D,EAAKC,KACvB5D,EAAQ,OAIF,OAAVA,GAAmBC,EAAKF,QAAQS,aAAa,IAAInB,MAAMW,IAEhDC,EAAKiD,SAAWzH,IACvBwE,EAAKiD,OAAS,MAFdjD,EAAKiD,OAASlD,EAKXC,EAAKiD,MAChB,EAEAoG,8BAA+B,WAC3B,IAAIrJ,EAAO1E,KACNiP,EAAgB,CAAC,EACtBhP,EAAEiP,KAAKxK,EAAKsD,cAAc,SAASiE,EAAOxH,GACtCwK,EAAc9O,EAAM8M,SAASlJ,MAAM,GAAG4E,aAAalE,IAAUA,CACjE,IACAC,EAAKmC,WAAWsI,QACf,IAAIC,EAAQ1K,EAAK4G,OACb3F,KAAK/C,GACLyL,QAAO,SAASpC,EAAO1H,GACpB,OAAO0K,EAAchP,EAAEsE,EAAQ+B,YAAYW,KAAK9G,EAAM8G,KAAKzE,IAC/D,IACA4M,EAAMnG,OAAS,GACfvE,EAAKmC,WAAWwI,eAAeD,GAAO,EAE9C,EAEAlI,qBAAsB,WAElB,MAAmC,aADxBlH,KACCwE,QAAQqC,UACxB,EAEAzB,YAAa,WACT,IAAIV,EAAO1E,KACX,GAAK0E,EAAKwC,uBAAV,CAIA,IAAIL,EAAanC,EAAKF,QAAQqC,WAC9ByI,EAAoBtO,EAAWuO,aAAa1I,GAE5CnC,EAAKmC,WAAa,IAAI7F,EAAW0D,EAAKI,QAAS,CAC3C0K,MAAM,EAENC,eAAgB,wNAChBC,SAAUJ,EAAkBI,SAC5BrB,OAAQ,uBAAyBxL,EACjC8M,OAAQjL,EAAKkL,UAAU1J,KAAKxB,GAC5BmL,cAAenL,EAAKoL,iBAAiB5J,KAAKxB,IAZ9C,CAcJ,EAEAoL,iBAAkB,SAASC,GACvB,IAAIrL,EAAO1E,KAEP0E,EAAKmC,WAAWrC,QAAQkL,UAAYK,EAAOC,GAAGnN,KAC9C6B,EAAKgD,SAAWnB,GAAawJ,EAAOpK,KAAK,MACzCjB,EAAKkD,YAAYlD,EAAKgD,UAG9B,EAEAkI,UAAW,SAASzJ,GAChB,IAAIzB,EAAO1E,KACPiQ,EAAY9J,EACQnF,EAAWuO,aAAa7K,EAAKF,QAAQqC,YAEtC6I,UAUnBO,EAAUxI,MAAMyI,SAAWD,EAAUxI,MAAM0I,QACvClQ,EAAEgQ,EAAUxI,MAAMpB,eAAe2J,GAAGnN,GACpC6B,EAAK0L,iBAAiBnQ,EAAEgQ,EAAUxI,MAAMpB,iBAGxC3B,EAAK2L,iBAAiBxN,GAAmBqM,MAAK,SAASjD,EAAO1H,GAC1D,IAAIE,EAAQ8B,GAAatG,EAAEsE,GAASoB,KAAK,MACzCjB,EAAK4L,UAAU7L,EACnB,IACAC,EAAK6L,4BAGJN,EAAUxI,MAAM+I,SACrB9L,EAAK+L,gBAAgB/L,EAAK8D,OAErBvI,EAAEgQ,EAAUxI,MAAMpB,eAAe2J,GAAGpN,GACzC8B,EAAKD,MAAM8B,GAAatG,EAAEgQ,EAAUxI,MAAMpB,eAAeV,KAAK,QAG9DjB,EAAKsD,aAAe,GACpBtD,EAAK6L,4BAER7L,EAAK8C,QAAQlF,IA/BNrC,EAAEgQ,EAAUxI,MAAMpB,eAAe2J,GAAG,QAAU/P,EAAEgQ,EAAUxI,MAAMpB,eAAeoC,SAAS,cACxFxI,EAAEgQ,EAAUxI,MAAMpB,eAAeR,SAAS,cAG1CnB,EAAKoC,OAAO7G,EAAEgQ,EAAUxI,MAAMpB,eAAeV,KAAK,KA4B9D,EAEAqF,mBAAoB,WAChB,IAAItG,EAAO1E,KAEP0E,EAAKmC,aACLnC,EAAKmC,WAAWsE,UAChBzG,EAAKmC,WAAa,KAE1B,EAGAuJ,iBAAkB,SAASM,GACvB,IACI5P,EAAOyF,GAAamK,EAAY/K,KAAK,MACjC+K,EAAYjI,SAAS,cAFlBzI,KAGEgI,aAAa2I,KAAK7P,GAHpBd,KAMEsQ,UAAUxP,EAE3B,EAGA2P,gBAAiB,SAASG,EAAYC,GAClC,IAGIC,EAHApM,EAAO1E,KACP+Q,EAAWF,GAAatK,GAAa7B,EAAKmC,WAAWpC,QAAQ0C,QAAQxB,KAAK,MAC1EqL,EAASzK,GAAaqK,EAAWjL,KAAK,MAGtCjB,EAAKmC,WAAWS,aAAe5C,EAAKiD,OACpCoJ,EAAWrM,EAAKmC,WAAWS,YAAcf,GAAa7B,EAAKmC,WAAWS,YAAY3B,KAAK,MAAQ,IAAI7B,MAAMY,EAAKiD,QAE9GjD,EAAKmC,WAAWS,YAAcuJ,EAAYnM,EAAKmE,YAAYnE,EAAKiC,MAAMgC,aAAakI,GAAYhO,GAAqB6B,EAAKmC,WAAWpC,QAAQ0C,QAGhJzC,EAAKsD,aAAe,GACpB8I,EAAiBG,GAAoBF,EAAUC,GAC/CE,GAAexM,EAAKsD,aAAc8I,EAAgBC,EAAUrM,EAAKF,QAAQS,cAEzEP,EAAKqJ,+BACT,EAEAsC,iBAAkB,SAASc,GAEvB,OADWnR,KACCsL,OAAO3F,KAAKwL,EAC5B,EAEAZ,yBAA0B,WACtB,IAAI7L,EAAO1E,KACX0E,EAAKmC,WAAWpC,QAAQyK,MAAK,SAASjD,EAAOmF,GACzC,IAAItQ,EAAOyF,GAAatG,EAAEmR,EAAK9K,aAC1B5B,EAAKF,QAAQS,aAAanE,IAC3B4D,EAAKsD,aAAa2I,KAAK7P,EAE/B,GACJ,EAECwP,UAAW,SAASxP,GACjB,IACKuQ,EADMrR,KACkBgI,aAAamG,IAAImD,QAAQ7K,SAAS3F,IACtC,GAArBuQ,GAFOrR,KAGFgI,aAAauJ,OAAOF,EAAkB,EAEnD,EAEAG,YAAa,SAAS1Q,GAClB,IACI2Q,EAAkBlL,GADXvG,KAC6BqQ,iBAAiBxN,GAAmBsE,QAAQxB,KAAK,MAGzF,OAAQ7E,IAFayF,GAFVvG,KAE4BqQ,iBAAiBxN,GAAmBwE,OAAO1B,KAAK,QAEnD7E,IAAS2Q,CACjD,EAEAC,eAAgB,SAAS7E,EAAc8E,GACnC,IAGI1F,EAHAvH,EAAO1E,KACP4R,EAAalN,EAAKF,QAAQS,aAI9B,MAAuB,SAAnBP,EAAKiC,MAAMC,MACHgL,EAAW/E,IAEnBZ,EAAQvH,EAAKI,QAAQa,KAAK,IAAMjD,GAASuJ,QAClCvH,EAAKI,QAAQa,KAAK,iBAAiBkM,GAAG5F,EAAQ0F,GACzC3B,GAAGnN,KAAuB+O,EAAW/E,GAEzD,EAEA5G,MAAO,SAASE,GACZ,IAUI1B,EAAOqN,EAASC,EAAQC,EAVxBtN,EAAO1E,KACPwE,EAAUE,EAAKF,QACfyN,EAAM9L,EAAE+L,QACR1G,EAAO9G,EAAKiC,MACZsF,EAAQvH,EAAKuD,OACbG,EAAM1D,EAAKF,QAAQ4D,IACnBC,EAAM3D,EAAKF,QAAQ6D,IACnBwE,EAAe,IAAIhJ,GAAMa,EAAKgD,UAC9B8C,EAAQ9F,EAAK8F,QACboH,EAAalN,EAAKF,QAAQS,aAiC9B,GA9BIkB,EAAE4J,SAAWrL,EAAK4G,OAAO,KACzB5G,EAAK6D,SAAU,GAGf0J,GAAOzR,EAAK2R,QAAU3H,GAASyH,GAAOzR,EAAK4R,MAAQ5H,GACnD/F,EAAQ,EACRqN,GAAU,GACHG,GAAOzR,EAAK4R,OAAS5H,GAASyH,GAAOzR,EAAK2R,OAAS3H,GAC1D/F,GAAS,EACTqN,GAAU,GACHG,GAAOzR,EAAK6R,IACnB5N,EAAkB,IAAVwH,GAAe,GAAK,EAC5B6F,GAAU,GACHG,GAAOzR,EAAK8R,MACnB7N,EAAkB,IAAVwH,EAAc,EAAI,EAC1B6F,GAAU,GACHG,GAAOzR,EAAK+R,UACnB9N,EAAQ,EACRqN,GAAU,GACHG,GAAOzR,EAAKgS,MAAQP,GAAOzR,EAAKiS,KAEvCT,EAAOxG,EADPuG,EAASE,GAAOzR,EAAKgS,KAAO,QAAU,QAClB3F,IACpBA,EAAe,IAAIhJ,EAAKmO,EAAKnD,cAAemD,EAAKlD,WAAYkD,EAAKjD,UAAWlC,EAAa6F,WAAY7F,EAAa8F,aAAc9F,EAAa+F,aAAc/F,EAAagG,oBAC5JC,YAAYd,EAAKnD,eAC9BiD,GAAU,GACK,KAARG,IACPvN,EAAKqO,YAAY5M,GACjB2L,GAAU,GAGV3L,EAAE+J,SAAW/J,EAAEgK,SACf,GAAI8B,GAAOzR,EAAK2R,QAAU3H,GAASyH,GAAOzR,EAAK4R,MAAQ5H,EACnD9F,EAAKqH,mBACL+F,GAAU,OACP,GAAIG,GAAOzR,EAAK4R,OAAS5H,GAASyH,GAAOzR,EAAK2R,OAAS3H,EAC1D9F,EAAKmH,iBACLiG,GAAU,OACP,GAAIG,GAAOzR,EAAK6R,GACnB3N,EAAKsH,aACL8F,GAAU,OACP,GAAIG,GAAOzR,EAAK8R,KACnB5N,EAAKoC,OAAO7G,EAAEyE,EAAK8D,MAAM,GAAGlC,aAC5BwL,GAAU,OAEP,IAAKG,GAAOzR,EAAKwS,OAASf,GAAOzR,EAAK+R,WAAa7N,EAAKwC,uBAAwB,CACnFxC,EAAKuO,yBAAyB9M,GAE9B,IAAI+M,EAAc3M,GAAatG,EAAEyE,EAAK8D,MAAM,IAAI7C,KAAK,MACrDjB,EAAKkD,YAAYsL,EAErB,OACO/M,EAAEqK,UACL/L,IAAUvE,GAAe6R,KACpBA,GACDvG,EAAK2H,QAAQtG,EAAcpI,GAG1BuK,GAAUnC,EAAczE,EAAKC,KAC9BwE,EAAe1E,GAAc0E,EAAcrI,EAAQ4D,IAAK5D,EAAQ6D,MAGhEuJ,EAAW/E,KACXA,EAAenI,EAAK0O,iBAAiBvG,EAAcpI,IAGvD2D,EAAMwG,GAAWxG,EAAIyG,cAAezG,EAAI0G,WAAY1G,EAAI2G,WACpDrK,EAAKwC,uBACLxC,EAAK2O,wBAAwBlN,EAAG0G,GAGhCnI,EAAKoJ,OAAOjB,KAIhBoF,GAAOzR,EAAKwS,OAASf,GAAOzR,EAAK+R,UAChB,SAAb/G,EAAK5E,MAAmBlC,EAAKwC,wBAC7BxC,EAAKD,MAAM8B,GAAatG,EAAEyE,EAAK8D,MAAM7C,KAAK,QAC1CjB,EAAKmC,WAAWS,YAAcrH,EAAEyE,EAAK8D,MAAM,IAC3C9D,EAAK8C,QAAQlF,IAGboC,EAAKoC,OAAO7G,EAAEyE,EAAK8D,MAAM,GAAGlC,aAEhCwL,GAAU,GACHG,GAAOzR,EAAK8S,QACnBxB,GAAU,EACVpN,EAAKmH,kBACEoG,GAAOzR,EAAK+S,WACnBzB,GAAU,EACVpN,EAAKqH,qBAGLtH,GAASsN,KACJA,GACDvG,EAAK2H,QAAQtG,EAAcpI,GAK1BuK,GAAUnC,EAFfzE,EAAMwG,GAAWxG,EAAIyG,cAAezG,EAAI0G,WAAY1G,EAAI2G,WAEtB1G,KAC9BwE,EAAe1E,GAAc0E,EAAcrI,EAAQ4D,IAAK5D,EAAQ6D,MAG/D3D,EAAKgN,eAAe7E,EAAcpI,KACnCoI,EAAenI,EAAK0O,iBAAiBvG,EAAcpI,IAGnDC,EAAKwC,uBACAxC,EAAK8M,YAAY3E,IAIlBnI,EAAKgD,SAAWmF,EAChBnI,EAAKkD,YAAYiF,IAJjBnI,EAAKwG,SAAS2B,GAQlBnI,EAAKoJ,OAAOjB,KASxB,OAJIiF,GACA3L,EAAEO,iBAGChC,EAAKgD,QAChB,EAEA2L,wBAAyB,SAAS5L,EAAOoF,GACrC,IACIkE,EACAD,EAFApM,EAAO1E,KAIX,IAAK0E,EAAK8M,YAAY3E,GAYlB,OAXAnI,EAAKsD,aAAe,GAGpB8I,EAAiBG,GADjBF,EAAWrM,EAAKmC,WAAWS,YAAcf,GAAa7B,EAAKmC,WAAWS,YAAY3B,KAAK,MAAQkH,EAChD,IAAI/I,MAAM+I,IAEzDqE,GAAexM,EAAKsD,aAAc8I,EAAgBC,EAAUrM,EAAKF,QAAQS,cAEzEP,EAAKwG,SAAS2B,GACdnI,EAAKgD,SAAWmF,EAChBnI,EAAKmC,WAAWS,YAAc5C,EAAKmC,WAAWS,aAAe5C,EAAKmE,YAAYnE,EAAKiC,MAAMgC,aAAakE,GAAehK,QACrH6B,EAAK8C,QAAQlF,GAGjBoC,EAAKmC,WAAWrC,QAAQ6J,OAAS3J,EAAKI,QAAQa,KAAK,SAASsD,OAAS,IAAM4D,GAAgBnI,EAAKgD,SAAW,uBAAyB7E,EAAoB,uBAAyBA,EACjL6B,EAAKkD,YAAYiF,GACjBnI,EAAKgD,SAAWmF,EAEhBnI,EAAK+L,gBAAgB/L,EAAKmE,YAAYnE,EAAKiC,MAAMgC,aAAakE,GAAehK,GAAoBgK,GAEjGnI,EAAK8C,QAAQlF,GAEboC,EAAKmC,WAAWrC,QAAQ6J,OAAS,uBAAyBxL,CAC9D,EAEAoQ,yBAA0B,SAASxL,GAC/B,IAAI/C,EAAO1E,KAEXyH,EAAMpB,cAAgB3B,EAAK8D,MAAM,GACjC9D,EAAKmC,WAAWS,YAAcrH,EAAEyE,EAAK8D,MAAM,IAEvCvI,EAAEyE,EAAK8D,MAAM,IAAIC,SAAS3F,GAC1B4B,EAAKmC,WAAW2M,UAAUvT,EAAEyE,EAAK8D,MAAM,KAGvC9D,EAAKmC,WAAWpC,MAAMxE,EAAEyE,EAAK8D,MAAM,KAEvC9D,EAAKmC,WAAWW,QAAQlF,EAAQ,CAAEmF,MAAOA,GAC7C,EAEA2L,iBAAkB,SAASvG,EAAcpI,GACrC,IAAIC,EAAO1E,KACXwM,GAAW,EACXhB,EAAO9G,EAAKiC,MACZyB,EAAM1D,EAAKF,QAAQ4D,IACnBC,EAAM3D,EAAKF,QAAQ6D,IACnBuJ,EAAalN,EAAKF,QAAQS,aAC1BwO,EAAkB,IAAI3P,KAAK+I,EAAauB,WAIxC,IAFA5C,EAAK2H,QAAQM,GAAkBhP,GAExB+H,GAAU,CAGb,GAFAhB,EAAK2H,QAAQtG,EAAcpI,IAEtBuK,GAAUnC,EAAczE,EAAKC,GAAM,CACpCwE,EAAe4G,EACf,KACJ,CACAjH,EAAWoF,EAAW/E,EAC1B,CACA,OAAOA,CACX,EAEAgB,SAAU,SAASrJ,GACf,IAAIE,EAAO1E,KACP0M,EAAOlI,EAAQkI,KACfL,EAAK7H,EAAQ6H,GACbqH,EAAShP,EAAK6D,QACdwE,EAAcrI,EAAKH,QAAQyI,SAAS,oBAEnCN,EAGMA,EAAKiH,SAASlS,KAAK,cAC1BiL,EAAKtB,IAAIrJ,GACT2K,EAAKiH,SAASxG,WAAU,GAAM,GAAMyG,SACpClH,EAAKkH,SAEL7G,EAAY8G,OAAOxH,GACnB3H,EAAKqC,WAAW2M,KACRhH,EAAKsD,GAAG,cAA0C,IAA3BtL,EAAKF,QAAQ8E,WAAuB9E,EAAQoJ,SAC3EvB,EAAGyH,YAAYpH,GACfA,EAAKtB,IAAIrJ,GAAI6R,SAEblP,EAAKqC,WAAW2M,IAEhBhP,EAAKF,EAAQoF,SAAW,YAAc,eAAe8C,EAAML,EAAI7H,EAAQsI,SAfvEC,EAAY8G,OAAOxH,GACnB3H,EAAKiH,WAAWU,GAgBxB,EAEA0H,YAAa,SAASrH,EAAML,EAAIS,GAC5B,IAAIpI,EAAO1E,KACP0T,EAAShP,EAAK6D,QACdgB,EAAa7E,EAAKF,QAAQ8E,UAAUC,WACpCC,EAAUD,EAAWC,QACrBwK,EAAYnS,EAAW6K,GACvBuH,EAAUpS,EAAW6K,GAAM,GAAQsH,EAEnCxK,IAAsC,GAA3BA,EAAQ/C,QAAQtE,KAC3BuK,EAAKwH,IAAI7H,GAAI9K,IAAI,CAAE4S,MAAOH,IAE1BtH,EAAK0H,KAAK,UAEV1P,EAAKqC,WAAW2M,EAAQhH,GAExBA,EAAKiH,SACJpS,IAAI,CACD+M,SAAU,WACV6F,MAAoB,EAAZH,EAAkB,EAAIC,EAC9BI,QAAS,OACT,cAAevH,EAAS,GAAMkH,EAAYC,IAG9C5H,EAAGS,EAAS,cAAgB,gBAAgBJ,GAE5C9I,EAAO2F,EAAY,CACfC,QAASrH,EAAQ,KAAO2K,EAAS,QAp9BtC,QAq9BKwH,SAAU,WACN5H,EAAKtB,IAAIrJ,GAAI6R,SACblP,EAAKkI,UAAY,KAEjBP,EAAGkI,SAEH7P,EAAKqC,WAAW2M,EAEpB,IAGJhH,EAAKiH,SAASxG,WAAU,GAAM,GAAMqH,aAAajL,GAEzD,EAEAkL,UAAW,SAAS/H,EAAML,GACtB,IAIIqI,EAAMpG,EAJN5J,EAAO1E,KACP4J,EAAWlF,EAAKF,QAAQ8E,UAAUM,SAClCJ,EAAUI,EAASJ,QACnBkK,EAAShP,EAAK6D,QAGdiB,IAAuC,GAA5BA,EAAQ/C,QAAQ,UAC3B4F,EAAGsI,aAAajI,GAEhBA,EAAKnL,IAAI,CACL+M,SAAU,WACV6F,MAAO9H,EAAG8H,UAGV7S,IAGAgN,GADAA,GADAoG,EAAOhQ,EAAKmE,YAAYnE,EAAKiC,MAAMgC,aAAajE,EAAKgD,YACrC4G,YACKsG,KAAOC,SAASH,EAAKP,QAAU,EAAG,IAA5C,OAAiE7F,EAASwG,IAAMD,SAASH,EAAKK,SAAW,EAAG,KAAM,KAC7H1I,EAAG9K,IAAID,EAAkBgN,IAG7B5B,EAAKS,WAAU,GAAM,GAAMqH,aAAa,CACpChL,QAAS,UACTE,SAAU,IACV4K,SAAU,WACN5H,EAAKtB,IAAIrJ,GAAI6R,SACblP,EAAKkI,UAAY,KAEjBlI,EAAKqC,WAAW2M,EACpB,IAGJrH,EAAGc,WAAU,GAAM,GAAMqH,aAAa5K,GAE9C,EAEAf,YAAa,SAASpE,EAAO0M,GACzB,OAAOnR,KAAKsL,OAAO3F,KAAKwL,GAAsB,WAAaxO,EAAa,KACvE0L,QAAO,WACJ,OAAOpO,EAAED,KAAKsG,YAAYW,KAAK9G,EAAM8G,KAAKzE,MAAYiC,CAC1D,GACJ,EAEAuJ,YAAa,SAASlN,GAClB,IAAI4D,EAAO1E,KACP0U,EAAOhQ,EAAKsQ,cACZvQ,EAAQC,EAAKiC,MAAMgC,aAAa7H,GAE5B4T,GAAQA,EAAK,KACbA,EAAK,GAAGO,gBAAgBvR,GACxBgR,EAAK3L,YAAYjG,IAGrB4R,EAAOhQ,EAAKmE,YAAYpE,EAAkC,YAA3BC,EAAKF,QAAQqC,WAA2BjE,EAAe,WAAaD,EAAa,KAEhH+B,EAAKsQ,cAAgBN,EACrBA,EAAK7O,SAAS/C,GACTmE,KAAKvD,GAAe,EACjC,EAEAkE,YAAa,SAAS9G,GAClB,IAAI4D,EAAO1E,KACPkV,EAAK/U,EAAMwK,OACX+J,EAAOhQ,EAAK8D,MACZ/D,EAAQC,EAAKiC,MAAMgC,aAAa7H,GAE5B4T,GAAQA,EAAK,KACbA,EAAK3L,YAAYrG,GACjBgS,EAAK,GAAGO,gBAAgBtR,GACxB+Q,EAAK,GAAGO,gBAAgB/S,IAG5BwS,EAAOhQ,EAAKmE,YAAYpE,EAAkC,YAA3BC,EAAKF,QAAQqC,WAA2BjE,EAAe,WAAaD,EAAa,KAEhH+B,EAAK8D,MAAQkM,EAEbA,EAAKzN,KAAK/E,EAAIgT,GACTrP,SAASnD,GAEVgC,EAAK4G,OAAO,KACZ5G,EAAK4G,OAAO,GAAG2J,gBAAgB,yBAC/BvQ,EAAK4G,OAAOrE,KAAK,wBAAyBiO,GAEtD,EAEAvJ,WAAY,SAASD,GACjBA,EACC3F,GAAG9C,EAAejD,KAAKsI,gBACvBvC,GAAGhD,EAAM/C,KAAK8I,kBACnB,EAEAhC,OAAQ,SAASV,GACb,IAAI1B,EAAO1E,KACXwE,EAAUE,EAAKF,QACfqI,EAAe,IAAI/I,MAAMY,EAAKgD,UAC9BjD,EAAQ8B,GAAaH,GAErBvF,EAAU4D,EAAO,GAEM,SAAnBC,EAAKiC,MAAMC,MAAmBlC,EAAKF,QAAQS,aAAaR,KACxDA,EAAQC,EAAKiD,QAGjBjD,EAAKiC,MAAMwM,QAAQtG,EAAcpI,GAEjCC,EAAKwH,aAAa/D,GAAc0E,EAAcrI,EAAQ4D,IAAK5D,EAAQ6D,KACvE,EAEAyF,OAAQ,SAASrJ,GACb,IAAIC,EAAO1E,KAGgC,IAFpC0E,EAAKiC,MAEH4F,QAAQ9H,EAAOC,EAAKgD,UACzBhD,EAAKwG,SAASzG,IAEdC,EAAKgD,SAAWjD,EAChBC,EAAKkD,YAAYnD,GAEzB,EAEAsC,WAAY,SAAS2M,EAAQhI,GACrBgI,GACA1T,KAAKyL,MAAMC,EAEnB,EAEApG,aAAc,WACV,IACIf,EADOvE,KACQuE,QACfwI,EAAcxI,EAAQyI,SAAS,oBAE9BD,EAAY,KACbA,EAAc9M,EAAE,mCAAmC6T,YAAYvP,EAAQoB,KAAKvB,IAEpF,EAEAoB,QAAS,SAASrE,GACd,IAAIuD,EAAO1E,KACX+J,EAAQnB,KACRrE,EAAUG,EAAKH,QACfkB,EAASlB,EAAQoB,KAAK,aAEtB,IAAKxE,EAGD,OAFAuD,EAAKkB,SAAQ,QACbH,EAAOwF,OAINxF,EAAO,KACRA,EAASxF,EAAE,oSAA4SkV,SAAS5Q,IAGpUG,EAAKgB,OAASD,EAAO2P,OAChBzP,KAAK,0BACLsB,KAAK,QAAS9G,EAAMkV,SAAStL,EAAO,IAAKrF,EAAKF,QAAQuD,UAE3DtC,EAAOE,KAAK,kBACP0H,KAAKlM,EAAS4I,IAEnBrF,EAAKkB,SACT,EAEAP,QAAS,WACL,IAAIX,EAAO1E,KACXuE,EAAUG,EAAKH,QACfqG,EAAgBlG,EAAKF,QAAQoG,cAExBrG,EAAQoB,KAAKvB,GAAgB,IAC9BG,EAAQ8I,KAAKlN,EAAMgB,SAASuD,EAAKF,QAAQ6F,OAAOlJ,SAAnChB,CAA6CF,EAAE2D,QAAO,EAAK,CAAC,EAAGc,EAAKF,QAAS,CACtF+F,WAAYpK,EAAM8G,KAAK,UACvBoC,KAAMlJ,EAAMmV,iBAAiB,YAAa,OAAQ5Q,EAAKF,QAAQ6E,MAC/DmB,MAAO9F,EAAK8F,YAIpBjG,EAAQoB,KAAKiF,GACR7E,GAAG/D,EAAQ,YAAcD,GAAI,WAAa,OAAO,CAAO,IAE7D2C,EAAK2G,OAAS9G,EAAQoB,KAAK,IAAMxF,EAAM8G,KAAK,UAAY,cAAclB,GAAG/D,EAAQ,YAAcD,GAAI,WAC/F2C,EAAK6D,SAAsC,IAA5B7D,EAAKF,QAAQwC,WAC5BtC,EAAKsH,YACT,IACAtH,EAAKnB,GAAagB,EAAQoB,KAAK,IAAMxF,EAAM8G,KAAK,UAAY,YAAYlB,GAAG/D,EAAQ,YAAcD,GAAI,WACjG2C,EAAK6D,SAAsC,IAA5B7D,EAAKF,QAAQwC,WAC5BtC,EAAKmH,gBACT,IACAnH,EAAKlB,GAAae,EAAQoB,KAAK,IAAMxF,EAAM8G,KAAK,UAAY,YAAYlB,GAAG/D,EAAQ,YAAcD,GAAI,WACjG2C,EAAK6D,SAAsC,IAA5B7D,EAAKF,QAAQwC,WAC5BtC,EAAKqH,kBACT,IACAxH,EAAQoB,KAAK,IAAMxF,EAAM8G,KAAK,UAAY,aAAalB,GAAG/D,EAAQ,YAAcD,EAAI2C,EAAKqO,YAAY7M,KAAKxB,GAE9G,EAEAoH,UAAW,SAASyJ,EAAOC,GACvB,IAAI9Q,EAAO1E,KACXiM,EAAQvH,EAAKuD,OAAS,EACtB4E,EAAe,IAAIhJ,GAAMa,EAAKgD,UAE1BhD,EAAKwC,yBAEL2F,EAAetG,GADY7B,EAAK4G,OAAO3F,KAAK,+CAA+C8P,IAAI,WAAWtO,QACzDxB,KAAK,MACtDjB,EAAKgD,SAAW,IAAI5D,MAAM+I,KAG9B0I,EAAQ7Q,EAAK6Q,IAEF9M,SAAShG,KACZwJ,EAAQ,EACRY,EAAaiG,YAAYjG,EAAagC,cAAgB,IAAM2G,GAE5DvI,GAASlJ,MAAMkI,GAAOkH,QAAQtG,EAAc2I,GAGhD9Q,EAAKwG,SAAS2B,GAEtB,EAEAjB,QAAS,SAAS8J,EAAQjR,GACtB,IAGIkR,EAHAjR,EAAO1E,KACPwE,EAAUE,EAAKF,QACfqI,EAAenI,EAAKiD,QAAUjD,EAAKgD,SAGvC,GAAIjD,IAAUvE,EACV,OAAOsE,EAAQkR,IAGnBjR,EAAQhE,EAAMgE,EAAOD,EAAQsD,OAAQtD,EAAQuD,YAM7CvD,EAAQkR,GAAU,IAAI7R,GAAMY,KAGxBkR,EAntCF,QAktCED,EACWjR,EAAQoI,EAERA,EAAepI,IAsvBtC,SAAsBmR,EAAQC,GAC1B,GAAID,EACA,OAAOA,EAAO/G,gBAAkBgH,EAAOhH,eACnC+G,EAAO9G,aAAe+G,EAAO/G,WAGrC,OAAO,CACX,CA1vBwBgH,CAAajJ,EAAcpI,MACnCkR,IACAjR,EAAKiD,OAAS,MAElBjD,EAAK0I,aAAc,GAGlB1I,EAAK0I,cACN1I,EAAK0I,eAAiB5I,EAAQR,MAAMuJ,UAAW/I,EAAQR,MAAM+R,QAGjErR,EAAKwG,SAASxG,EAAKiD,QAEnBjD,EAAKkB,UACT,EAEAA,QAAS,SAASoQ,GACd,IAAItR,EAAO1E,KACPwE,EAAUE,EAAKF,QACfyR,EAAkBvR,EAAKF,QAAQS,aAAa2D,MAC5CxC,EAAO1B,EAAKgB,OACZwQ,EAAaxR,EAAKyR,cAElBH,IAAW9V,IACX8V,EAAShH,GAAUpG,KAAYpE,EAAQ4D,IAAK5D,EAAQ6D,MAGpDjC,IACAA,EAAKgF,IAAIpJ,GAELgU,IAAWC,EACX7P,EAAKP,SAASqQ,GACbnN,YAAYtG,GACZsD,GAAG/D,EAAO0C,EAAKqO,YAAY7M,KAAKxB,IAEjC0B,EAAK2C,YAAYmN,GAChBrQ,SAASpD,GACTsD,GAAG/D,EAAO8P,IAGvB,EAEAqE,YAAa,WACT,MAtvCI,sBAuvCR,EAEApD,YAAa,SAAS5M,GAClB,IAAIzB,EAAO1E,KACXoJ,EAAQrF,EAAMW,EAAKF,QAAQ4E,OAC3BoD,EAAW9H,EAAKF,QAAQS,aACxB8E,EAAQnB,KAERzC,EAAEO,iBAEE8F,EAASzC,KAIoC,IAA7CrF,EAAKiC,MAAM4F,QAAQ7H,EAAKgD,SAAUqC,IAAgBrF,EAAKuD,QAAUmB,IACjE1E,EAAK0I,aAAc,GAGnB1I,EAAKwC,yBACLxC,EAAKsD,aAAe,CAAC+B,GACrBrF,EAAKmC,WAAWS,YAAc,MAGlC5C,EAAKiD,OAASoC,EACdrF,EAAKwG,SAASnB,EAAOX,GAErB1E,EAAK8C,QAAQlF,GACjB,EAEA6C,WAAY,WACR,IAAIT,EAAO1E,KACPwE,EAAUE,EAAKF,QACfiB,EAASjB,EAAQiB,OACjBzB,EAAQQ,EAAQR,MAChBuJ,EAAUvJ,EAAMuJ,QAChBzH,EAAa9B,EAAM8B,WACnBiQ,EAAQ/R,EAAM+R,MACdK,EAAiB,SAAU3U,GAAQ,MAAQ,GAAMtB,EAAMkV,SAAS5T,EAAK,IAAI+C,EAAQuD,QAAY,EAEjGrD,EAAKV,MAAQ,CACTuJ,QAAS,SAAU9L,GAAQ,MAAQ,cAAkBA,EAAa,SAAI,oDAA6DA,EAAc,UAAI,WAAgBA,EAAQ,IAAI,KAAStB,EAAM8G,KAAKzE,GAAU,KAASf,EAAe,WAAI,YAAiBA,EAAU,MAAI,MAAS4U,GAAgB9I,EAAS9L,IAASA,EAAKgD,OAAS,WAAc,EACjVsR,MAAO,SAAUtU,GAAQ,MAAQ,wBAA4B4U,GAAgBN,EAAOtU,IAAS,UAAY,OAAU,EACnHqE,WAAY,SAAUrE,GAAQ,MAAQ,sBAA0B4U,GAAgBvQ,EAAYrE,IAASA,EAAKqE,YAAc,OAAU,GAGtIpB,EAAKT,KAAO,CACRsJ,QAASpM,GAAS,SAAUM,GAAQ,MAAQ,cAAkBA,EAAa,SAAI,mEAA+EA,EAAO,GAAI,UAAcA,EAAe,WAAI,iBAAsBA,EAAU,MAAI,KAASA,EAAU,MAAI,WAAc,KAGnRgE,IAAqB,IAAXA,IACV2Q,EAAiB3Q,GAGrBf,EAAKe,QAAoB,IAAXA,EAAmBtE,EAASiV,EAAgB,CAAEE,cAAc,IAAW,IACzF,EAEAC,YAAa,SAASC,EAAc1V,GAChC,IAII2V,EAJA/R,EAAO1E,KACP0U,EAAOhQ,EAAK8D,MACZkO,EAAYhS,EAAK8G,OAAOkL,YACxBnL,EAAUzK,GAAQ4D,EAAK6G,UAa3B,OATIkL,EADc,UAAdC,EACOvW,EAAMkV,SAAS9J,EAAS,QACV,SAAdmL,EACAvW,EAAMkV,SAAS9J,EAAS,KAExBmJ,EAAK+B,OAGhB/B,EAAKzN,KAAK,aAAcuP,EAAa,CAAEjL,QAASA,EAASmL,UAAWA,EAAWD,KAAMA,KAE9E/B,EAAKzN,KAAK,KACrB,IAGJ3G,EAAGqW,OAAOtS,IAEV,IAAI4I,GAAW,CACX2J,gBAAiB,SAAS9V,GACtB,OAAO8N,GACH9N,EAAK+N,cACL/N,EAAKgO,WACL,EAER,EAEA+H,gBAAiB,SAAS/V,EAAMgW,GAG5B,IAAIC,GAFJD,EAAeA,GAAgB3W,EAAM4H,UAAUkF,UAEnB8J,SAC5BF,EAAkB,IAAIhT,EAAK/C,EAAK+N,cAAe/N,EAAKgO,WAAY,EAAGhO,EAAK4R,WAAY5R,EAAK6R,aAAc7R,EAAK8R,aAAc9R,EAAK+R,mBAG/H,IAFAgE,EAAgB/D,YAAYhS,EAAK+N,eAE1BgI,EAAgBG,UAAYD,GAC/B9J,GAASgK,QAAQJ,GAAiB,OAGtC,OAAOA,CACX,EAEAI,QAAS,SAASnW,EAAM0N,GACpB,IAAI0I,EAAiBpW,EAAKqW,oBAC1BC,EAAa,IAAIvT,EAAK/C,EAAKsN,UAAYI,GACvC6I,EAAeD,EAAWD,oBAAsBD,EAEhDpW,EAAKmW,QAAQG,EAAWhJ,UAv1CZ,IAu1CwBiJ,EACxC,EACAtT,MAAO,CAAC,CACJ6C,KAAMxE,EACNqK,MAAO,SAAS3L,EAAMsH,EAAKC,EAAKN,GAC5B,OAAOuP,GAAgBvP,GAASwP,OAAOC,MAAM1W,EAAKgO,YAAc,IAAMhO,EAAK+N,aAC/E,EACAtB,QAAS,SAAS/I,GACd,IAAIE,EAAO1E,KACPyX,EAAM,EACNrP,EAAM5D,EAAQ4D,IACdC,EAAM7D,EAAQ6D,IACdvH,EAAO0D,EAAQ1D,KACfqI,EAAQ3E,EAAQ2E,MAChBrB,EAAStD,EAAQsD,OACjBC,EAAUvD,EAAQuD,QAClB2P,EAAclT,EAAQO,IACtB4S,EAAanT,EAAQmT,WACrBnK,EAAahJ,EAAQgJ,WACrBC,EAAsBjJ,EAAQiJ,oBAC9BmK,EAASF,GAAevO,EAAM,GAC9B0O,EAAkBP,GAAgBvP,GAClC+P,EAAcD,EAAgBd,SAC9BgB,EAAOF,EAAgBE,KACvBP,EAAQQ,GAAWD,EAAKP,MAAOM,GAC/BG,EAAaD,GAAWD,EAAKG,WAAYJ,GACzC5P,EAAQ+E,GAAS4J,gBAAgB/V,EAAM+W,GACvCjB,EAAkBlS,EAAKyC,MAAMrG,GAC7BqX,EAAiBzT,EAAK2C,KAAKvG,GAC3B6H,EAAejE,EAAKiE,aACpBoB,EAAQnB,KAERyE,EAAO,0CADU7I,EAAQqG,eAC2C,iCAAmClC,EAAaT,GAAS,KAYjI,IAVIyP,IACAtK,GAAQ,sDAAwDrN,KAAKyM,MAAM3L,EAAMsH,EAAKC,EAAKN,GAAW,cAG1GsF,GAAQ,wEAEJI,IACAJ,GAAQ,+CAAiD1M,EAAO6D,EAAQqF,SAASC,kBAAoB,SAGlG2N,EAAM,EAAGA,IACZpK,GAAQ,qDAAuDmK,EAAMC,GAAO,KAAOQ,EAAWR,GAAO,QAMzG,OAHA5W,EAAUkJ,EAAO,GACjBA,GAASA,EAEFyB,GAAK,CACR4D,MAAO,GACPgJ,OAAQ,EACR/K,KAAMA,GAAQ,qFACdnF,MAAO0G,GAAW1G,EAAM2G,cAAe3G,EAAM4G,WAAY5G,EAAM6G,WAC/DtB,oBAAqBA,EACrB3H,WAAYtB,EAAQsB,WACpBsC,IAAKwG,GAAWxG,EAAIyG,cAAezG,EAAI0G,WAAY1G,EAAI2G,WACvD1G,IAAKuG,GAAWvG,EAAIwG,cAAexG,EAAIyG,WAAYzG,EAAI0G,WACvDvB,WAAYA,EACZD,QAAS/I,EAAQ+I,QACjB4K,eAAgBA,EAChBpC,MAAOvR,EAAQuR,MACfsC,OAAQ3T,EAAKyO,QACblO,aAAcT,EAAQS,aACtBqT,MAAO,SAASxX,EAAM2W,EAAKxS,GACvB,IAAIsT,EAAW,CAAE,iBACbC,EAAM1X,EAAKkW,SACXyB,EAAY,GACZ1T,EAAM,IAuBV,OArBIjE,EAAO8V,GAAmB9V,EAAOqX,IACjCI,EAAS5H,KAAKhO,GAGdsC,EAAanE,IACbyX,EAAS5H,KAAKlO,IAGb3B,IAASiJ,GACVwO,EAAS5H,KAAK,WAGN,IAAR6H,GAAqB,IAARA,GACbD,EAAS5H,KAAK,aAGdiH,GAifxB,SAAiB9W,EAAMqI,GACnB,IAAK,IAAIuP,EAAI,EAAGzP,EAASE,EAAMF,OAAQyP,EAAIzP,EAAQyP,IAC/C,GAAI5X,KAAUqI,EAAMuP,GAChB,OAAO,EAGf,OAAO,CACX,CAxfkCC,EAAS7X,EAAMqI,KACzBpE,EAAM2S,EAAY9J,QAAQ,MAAOzN,EAAMkV,SAASvU,EAAMgH,EAAQC,IAC9D0Q,EAAY,kBAGT,CACH3X,KAAMA,EACNqI,MAAOA,EACPpH,GAAI5B,EAAM4B,GACV0K,MAAOtM,EAAMkV,SAASvU,EAAM,IAAKiH,GACjCtD,MAAO3D,EAAKiO,UACZ6J,WAAYjQ,EAAa7H,GACzByX,SAAUA,EAASM,KAAK,KACxBJ,UAAWA,EACX1T,IAAKA,EAEb,EACA+T,gBAAiB,SAAShY,GACtB,MAAO,CACHgF,WAAY/E,EAAWD,EAAMX,EAAM4H,UAAUkF,SAAS8J,UACtDgC,YAAajY,EAErB,GAER,EACAqG,MAAO,SAASrG,GACZ,OAAOmM,GAAS2J,gBAAgB9V,EACpC,EACAuG,KAAM,SAASvG,GACX,IAAIuG,EAAOuH,GAAW9N,EAAK+N,cAAe/N,EAAKgO,WAAa,EAAG,GAC/D3H,EAAQ8F,GAAS2J,gBAAgB9V,GACjCkY,EAAaC,KAAKC,IAAI7R,EAAK8P,oBAAsBhQ,EAAMgQ,qBAMvD,OAJI6B,GACA3R,EAAKsH,SAASxH,EAAMuL,WAAcsG,EAAa,IAG5C3R,CACX,EACAkF,QAAS,SAAS4M,EAAOC,GACrB,IACAC,EAASF,EAAMrK,WACfwK,EAAQH,EAAMtK,cACd0K,EAASH,EAAMtK,WACf0K,EAAQJ,EAAMvK,cAUd,OARIyK,EAAQE,EACC,EACFF,EAAQE,GACL,EAEDH,GAAUE,EAAS,EAAIF,EAASE,EAAS,GAAK,CAI/D,EACApG,QAAS,SAASrS,EAAM2D,GACpB,IAAIgV,EAAQ3Y,EAAK4R,WACbjO,aAAiBZ,EACjB/C,EAAKgS,YAAYrO,EAAMoK,cAAepK,EAAMqK,WAAYrK,EAAMsK,WAE9D9B,GAASgK,QAAQnW,EAAM2D,EAAQnB,GAEnCzC,EAAUC,EAAM2Y,EACpB,EACA9Q,aAAc,SAAS7H,GACnB,OAAOA,EAAK+N,cAAgB,IAAM/N,EAAKgO,WAAa,IAAMhO,EAAKiO,SACnE,EACA2H,UAAW,WACP,MAAO,MACX,GAEJ,CACI9P,KAAM,OACN6F,MAAO,SAAS3L,GACZ,OAAOA,EAAK+N,aAChB,EACAtB,QAAS,SAAS/I,GACd,IAAIkV,EAAiBpC,GAAgB9S,EAAQuD,SAASwP,OAClDoC,EAAYD,EAAeC,UAC3BC,EAAYF,EAAelC,MAC3B7O,EAAe3I,KAAK2I,aACpBP,EAAM5D,EAAQ4D,IACdC,EAAM7D,EAAQ6D,IACdgF,EAAO,GAWX,OATI7I,EAAQmT,aACRtK,GAAQ,kGACJA,GAAQ,qDACJA,GAAQrN,KAAKyM,MAAMjI,EAAQ1D,MAC/BuM,GAAQ,aACRA,GAAQ,mCACJA,GAAQ,yCAGb7B,GAAK,CACRpD,IAAKwG,GAAWxG,EAAIyG,cAAezG,EAAI0G,WAAY,GACnDzG,IAAKuG,GAAWvG,EAAIwG,cAAexG,EAAIyG,WAAY,GACnD5G,MAAO0G,GAAWpK,EAAQ1D,KAAK+N,cAAe,EAAG,GACjDxB,KAAMA,EACNgL,OAAQrY,KAAKmT,QACb5F,QAAS/I,EAAQ+I,QACjB+K,MAAO,SAASxX,GAGZ,MAAO,CACH2D,MAAOkV,EAAU7Y,EAAKgO,YACtB+K,MAAOD,EAAU9Y,EAAKgO,YACtB/M,GAAI5B,EAAM4B,GACV6W,WAAYjQ,EAAa7H,GACzByX,SAPW,CAAE,iBAOMM,KAAK,KAEhC,GAER,EACA1R,MAAO,SAASrG,GACZ,OAAO8N,GAAW9N,EAAK+N,cAAe,EAAG/N,EAAKiO,UAClD,EACA1H,KAAM,SAASvG,GACX,OAAO8N,GAAW9N,EAAK+N,cAAe,GAAI/N,EAAKiO,UACnD,EACAxC,QAAS,SAAS4M,EAAOC,GACrB,OAAO7M,GAAQ4M,EAAOC,EAC1B,EACAjG,QAAS,SAASrS,EAAM2D,GACpB,IAAIT,EACJyV,EAAQ3Y,EAAK4R,WAETjO,aAAiBZ,GACjBG,EAAQS,EAAMqK,WAEdhO,EAAKgS,YAAYrO,EAAMoK,cAAe7K,EAAOlD,EAAKiO,WAE9C/K,IAAUlD,EAAKgO,YACfhO,EAAKqS,QAAQ,KAGjBnP,EAAQlD,EAAKgO,WAAarK,EAE1B3D,EAAKgZ,SAAS9V,GAEVA,EAAQ,KACRA,GAAS,IAGTA,EAAQ,GAAKlD,EAAKgO,YAAc9K,GAChClD,EAAKqS,QAAQ,IAIrBtS,EAAUC,EAAM2Y,EACpB,EACA9Q,aAAc,SAAS7H,GACnB,OAAOA,EAAK+N,cAAgB,IAAM/N,EAAKgO,WAAa,IACxD,EACA4H,UAAW,WACP,MAAO,OACX,GAEJ,CACI9P,KAAM,SACN6F,MAAO,SAAS3L,EAAMsH,EAAKC,GACvB,OAAOoE,GAAM3L,EAAMsH,EAAKC,EAAK,GACjC,EACAkF,QAAS,SAAS/I,GACd,IAAIP,EAAOO,EAAQ1D,KAAK+N,cACxBlG,EAAe3I,KAAK2I,aACpB0E,EAAO,GAWP,OATI7I,EAAQmT,aACRtK,GAAQ,kGACJA,GAAQ,kCACJA,GAAQrN,KAAKyM,MAAMjI,EAAQ1D,KAAM0D,EAAQ4D,IAAK5D,EAAQ6D,KAC1DgF,GAAQ,aACRA,GAAQ,mCACJA,GAAQ,yCAGb7B,GAAK,CACRtD,MAAO0G,GAAW3K,EAAOA,EAAO,GAAK,EAAG,EAAG,GAC3CmE,IAAKwG,GAAWpK,EAAQ4D,IAAIyG,cAAe,EAAG,GAC9CxG,IAAKuG,GAAWpK,EAAQ6D,IAAIwG,cAAe,EAAG,GAC9CrB,WAAYhJ,EAAQgJ,WACpBH,KAAMA,EACNgL,OAAQrY,KAAKmT,QACbmF,MAAO,SAASxX,EAAM2W,GAClB,IAAIc,EAAW,CAAE,iBAMjB,OAJY,IAARd,GAAqB,KAARA,GACbc,EAAS5H,KAAKhO,GAGX,CACH8B,MAAO3D,EAAK+N,cACZ9M,GAAI5B,EAAM4B,GACV6W,WAAYjQ,EAAa7H,GACzByX,SAAUA,EAASM,KAAK,KAEhC,GAER,EACA1R,MAAO,SAASrG,GACZ,IAAImD,EAAOnD,EAAK+N,cAChB,OAAOD,GAAW3K,EAAOA,EAAO,GAAInD,EAAKgO,WAAYhO,EAAKiO,UAC9D,EACA1H,KAAM,SAASvG,GACX,IAAImD,EAAOnD,EAAK+N,cAChB,OAAOD,GAAW3K,EAAOA,EAAO,GAAK,EAAGnD,EAAKgO,WAAYhO,EAAKiO,UAClE,EACAxC,QAAS,SAAS4M,EAAOC,GACrB,OAAO7M,GAAQ4M,EAAOC,EAAO,GACjC,EACAjG,QAAS,SAASrS,EAAM2D,GACpB0O,GAAQrS,EAAM2D,EAAO,EACzB,EACAkE,aAAc,SAAS7H,GACnB,OAAOA,EAAK+N,cAAgB,MAChC,EACA6H,UAAW,WACP,MAAO,MACX,GAEJ,CACI9P,KAAMvE,EACNoK,MAAO,SAAS3L,EAAMsH,EAAKC,GACvB,OAAOoE,GAAM3L,EAAMsH,EAAKC,EAAK,IACjC,EACAkF,QAAS,SAAS/I,GACd,IAAIP,EAAOO,EAAQ1D,KAAK+N,cACxBzG,EAAM5D,EAAQ4D,IAAIyG,cAClBxG,EAAM7D,EAAQ6D,IAAIwG,cAClBlG,EAAe3I,KAAK2I,aACpBoR,EAAU3R,EACV4R,EAAU3R,EACVgF,EAAO,GAkBP,OAfA2M,GAAoBA,EAAU,KAD9BD,GAAoBA,EAAU,IAGN,KACpBC,EAAUD,EAAU,GAGpBvV,EAAQmT,aACRtK,GAAQ,kGACJA,GAAQ,qDACJA,GAAQrN,KAAKyM,MAAMjI,EAAQ1D,KAAM0D,EAAQ4D,IAAK5D,EAAQ6D,KAC1DgF,GAAQ,aACRA,GAAQ,mCACJA,GAAQ,yCAGb7B,GAAK,CACRtD,MAAO0G,GAAW3K,EAAOA,EAAO,IAAM,GAAI,EAAG,GAC7CmE,IAAKwG,GAAWmL,EAAS,EAAG,GAC5B1R,IAAKuG,GAAWoL,EAAS,EAAG,GAC5BxM,WAAYhJ,EAAQgJ,WACpBH,KAAMA,EACNgL,OAAQrY,KAAKmT,QACbmF,MAAO,SAASxX,EAAM2W,GAClB,IAAIc,EAAW,CAAE,iBACbrQ,EAAQpH,EAAK+N,cACboL,EAAM/R,EAAQ,EAclB,OAZY,IAARuP,GAAqB,KAARA,GACbc,EAAS5H,KAAKhO,GAGduF,EAAQE,IACRF,EAAQE,GAGR6R,EAAM5R,IACN4R,EAAM5R,GAGH,CACHtG,GAAI5B,EAAM4B,GACV0C,MAAOyD,EAAQ,MAAQ+R,EACvBrB,WAAYjQ,EAAa7H,GACzByX,SAAUA,EAASM,KAAK,KAEhC,GAER,EACA1R,MAAO,SAASrG,GACZ,IAAImD,EAAOnD,EAAK+N,cAChB,OAAOD,GAAW3K,EAAOA,EAAO,IAAKnD,EAAKgO,WAAYhO,EAAKiO,UAC/D,EACA1H,KAAM,SAASvG,GACX,IAAImD,EAAOnD,EAAK+N,cAChB,OAAOD,GAAW3K,EAAOA,EAAO,IAAM,GAAInD,EAAKgO,WAAYhO,EAAKiO,UACpE,EACAxC,QAAS,SAAS4M,EAAOC,GACrB,OAAO7M,GAAQ4M,EAAOC,EAAO,IACjC,EACAjG,QAAS,SAASrS,EAAM2D,GACpB0O,GAAQrS,EAAM2D,EAAO,GACzB,EACAkE,aAAc,SAAS7H,GACnB,IAAImD,EAAOnD,EAAK+N,cAChB,OAAQ5K,EAAOA,EAAO,GAAM,MAChC,EACAyS,UAAW,WACP,MAAO,QACX,KAIR,SAASjK,GAAM3L,EAAMsH,EAAKC,EAAK6R,GAC3B,IAGID,EAHA/R,EAAQpH,EAAK+N,cACbkL,EAAU3R,EAAIyG,cACdmL,EAAU3R,EAAIwG,cAalB,OATAoL,GADA/R,GAAgBA,EAAQgS,IACTA,EAAU,GAErBhS,EAAQ6R,IACR7R,EAAQ6R,GAERE,EAAMD,IACNC,EAAMD,GAGH9R,EAAQ,IAAM+R,CACzB,CAEA,SAASzO,GAAKhH,GACV,IACI/C,EADAgW,EAAM,EAENrP,EAAM5D,EAAQ4D,IACdC,EAAM7D,EAAQ6D,IACdH,EAAQ1D,EAAQ0D,MAChBmQ,EAAS7T,EAAQ6T,OACjBC,EAAQ9T,EAAQ8T,MAChBQ,EAAkBtU,EAAQsU,gBAC1B7P,EAASzE,EAAQ4K,OAAS,GAC1B3B,EAAsBjJ,EAAQiJ,oBAC9B0M,EAAc3V,EAAQ4T,QAAU,EAChC5K,EAAahJ,EAAQgJ,WACrB2K,EAAiB3T,EAAQ2T,eACzBrS,EAAatB,EAAQsB,YAAclE,EACnC2L,EAAU/I,EAAQ+I,SAAW/L,EAC7BuU,EAAQvR,EAAQuR,OAASrU,EACzB0Y,EAAqB5V,EAAQ7C,wBAA0BA,EACvD0L,EAAO7I,EAAQ6I,MAAQ,uKAO3B,IALII,IACAJ,GAAQvH,EAAWgT,EAAgB5Q,KAIhCuP,EAAMxO,EAAQwO,IACbA,EAAM,GAAKA,EAAM0C,GAAgB,IACjC9M,GAAQ,6CACJI,IACAJ,GAAoDvH,EAA5C0H,IAAgBtF,IAAUiQ,EAA6BW,EAAgB5Q,GAAqB,CAAEpC,WAAY,aAI1HoC,EAAQ0G,GAAW1G,EAAM2G,cAAe3G,EAAM4G,WAAY5G,EAAM6G,WAChElO,EAAUqH,EAAO,GAIjBmF,IAAgD,KAFhD5L,EAAO6W,EAAMpQ,EAAOuP,EAAKjT,EAAQS,eAEnBsT,SAAS9R,QAAQ9D,IAAuB6K,EAAyCwB,GAAU9G,EAAOE,EAAKC,GAAOkF,EAAQ9L,GAAQsU,EAAMtU,GAA9E2Y,EAAmB3Y,GAEvF4W,EAAOnQ,EAAO,GAGlB,OAAOmF,EAAO,uBAClB,CAEA,SAASd,GAAQ4M,EAAOC,EAAO5D,GAC3B,IAAI8D,EAAQH,EAAMtK,cACd3G,EAAQkR,EAAMvK,cACdoL,EAAM/R,EACNmS,EAAS,EAab,OAXI7E,IAEAyE,GADA/R,GAAgBA,EAAQsN,GACVtN,EAAQsN,EAAWA,EAAW,GAG5C8D,EAAQW,EACRI,EAAS,EACFf,EAAQpR,IACfmS,GAAU,GAGPA,CACX,CAEA,SAASzR,KACL,IAAImB,EAAQ,IAAIlG,EAChB,OAAO,IAAIA,EAAKkG,EAAM8E,cAAe9E,EAAM+E,WAAY/E,EAAMgF,UACjE,CAEA,SAAS5G,GAAc1D,EAAO2D,EAAKC,GAC/B,IAAI0B,EAAQnB,KAWZ,OATInE,IACAsF,EAAQ,IAAIlG,GAAMY,IAGlB2D,EAAM2B,EACNA,EAAQ,IAAIlG,GAAMuE,GACXC,EAAM0B,IACbA,EAAQ,IAAIlG,GAAMwE,IAEf0B,CACX,CAEA,SAASiF,GAAUlO,EAAMsH,EAAKC,GAC1B,OAAQvH,IAASsH,IAAQtH,IAASuH,CACtC,CAEA,SAAS2P,GAAWzJ,EAAOkJ,GACvB,OAAOlJ,EAAM+L,MAAM7C,GAAK8C,OAAOhM,EAAM+L,MAAM,EAAG7C,GAClD,CAEA,SAAStE,GAAQrS,EAAM2D,EAAO+V,GAC1B/V,EAAQA,aAAiBZ,EAAOY,EAAMoK,cAAgB/N,EAAK+N,cAAgB2L,EAAa/V,EACxF3D,EAAKgS,YAAYrO,EACrB,CAEA,SAASwM,GAAoBJ,EAAW4J,GACpC,IAAKA,GAAW5J,EAAW,CACvB,IAAImB,GAAQnB,EACZ5D,GAASlJ,MAAM,GAAGoP,QAAQtC,EAAW4J,GACrCxN,GAASlJ,MAAM,GAAGoP,QAAQsH,EAAS,IAAI3W,KAAKkO,GAChD,CACA,IAAI0I,EAAc5W,KAAK6W,IAAI9J,EAAUhC,cAAegC,EAAU/B,WAAY+B,EAAU9B,WAChF6L,EAAa9W,KAAK6W,IAAIF,EAAQ5L,cAAe4L,EAAQ3L,WAAY2L,EAAQ1L,WAE7E,OAAOkK,KAAK4B,OAAOD,GAAcF,GAAeva,EAAMW,KAAKwC,WAC/D,CAEA,SAAS4N,GAAe3C,EAAOuM,EAAc/J,EAAU9L,GACnD,IAAK,IAAIyT,EAAI,EAAGA,GAAKoC,EAAcpC,IAAK,CACpC,IAAIqC,EAAU,IAAIjX,KAAKiN,EAAS3C,WAE3BnJ,EADL8V,EAAU,IAAIjX,KAAKiX,EAAQ5H,QAAQ4H,EAAQhM,UAAY2J,MAEnDnK,EAAMoC,KAAKoK,EAEnB,CACJ,CAEA,SAAS/U,GAAYG,GACFlG,EAAED,MAAMyI,SAAS,eAG5BxI,EAAED,MAAMkN,YAp4DJ,UAo4DuBhK,EAAWuD,QAAQN,EAAE6U,OAAS,GAAK7U,EAAE6U,MAAQhY,EAEhF,CAEA,SAAS8O,GAAQ3L,GACbA,EAAEO,gBACN,CAGA,SAASkI,GAAW3K,EAAMD,EAAOlD,GAC7B,IAAIma,EAAa,IAAIpX,EAAKI,EAAMD,EAAOlD,GAEvC,OADAma,EAAWnI,YAAY7O,EAAMD,EAAOlD,GAC7Bma,CACX,CAEA,SAAS3D,GAAgBvP,GACrB,OAAO3G,EAAW2G,GAASmT,UAAUC,QACzC,CAEA,SAAStT,GAAUrD,GACf,IAAI0D,EAAQnE,EAAMS,EAAQ0D,OACtBkB,EAAQrF,EAAMS,EAAQ4E,OACtBrB,EAAU3G,EAAWoD,EAAQuD,SAEjCvD,EAAQsD,OAAS7G,EAAcuD,EAAQsD,QAAUC,EAAQmT,UAAUC,SAASC,SAASC,GAEjFjP,MAAMlE,KACNA,EAAQ,EACR1D,EAAQ0D,MAAQ9F,IAGhBgH,IAAUlJ,GAAekJ,EAAQlB,KACjC1D,EAAQ4E,MAAQhH,GAGE,OAAlBoC,EAAQ2E,QACR3E,EAAQ2E,MAAQ,GAExB,CAEA,SAASwE,GAAwBpJ,EAAS+H,GACtC/H,EAAQsB,SAAS,KAAOyG,EAC5B,CA+BA,SAASpH,GAAgBwQ,GACrB,OAAIvV,EAAMmb,WAAW5F,GACVA,EAGP6F,MAAMC,QAAQ9F,GActB,SAA4BvM,GACxB,IAAIsS,EACAC,EAAgB,GAChB3D,EAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAE5C5O,EAAM,aAActF,GACpB6X,EAdR,SAA2BvS,GAEvB,IADA,IAAIkR,EAAS,GACJ3B,EAAI,EAAGA,EAAIvP,EAAMF,OAAQyP,IAC9B2B,EAAO1J,KAAKxH,EAAMuP,GAAG/J,SAAS,EAAG,EAAG,EAAG,IAE3C,OAAO0L,CACX,CAQwBsB,CAAkBxS,GAClCsS,EAAW,SAAU3a,GAAQ,SAAUA,GAAQ4a,EAAcjV,QAAQ,IAAK3C,KAAKhD,GAAO6N,SAAS,EAAG,EAAG,EAAG,KAAO,EAAI,IAEnH+M,EAAgBvS,EAAMgF,KAAI,SAAUqK,GAChCA,EAAMA,EAAI8B,MAAM,EAAE,GAAGsB,cACrB,IAAI3P,EAAQ8L,EAAKtR,QAAQ+R,GACzB,GAAIvM,GAAS,EACT,OAAOA,CAEf,IAEAwP,EAAW,SAAU3a,GAAQ,SAAUA,GAAQ4a,EAAcjV,QAAQ,IAAK3C,KAAKhD,GAAOkW,WAAa,EAAI,GAG3G,OAAOyE,CACX,CAlCeI,CAAmBnG,GAEvBzV,EAAE6b,IACb,CAiCA,SAAS3P,GAAY4P,EAAUC,GAM5B,OALID,aAAoBjY,MAAQkY,aAAoBlY,OAChDiY,EAAWA,EAAS3N,UACpB4N,EAAWA,EAAS5N,WAGjB2N,IAAaC,CACvB,CAEA,SAASzV,GAAaH,GAClB,IAAI3B,EAAQxE,EAAEmG,GAAMa,KAAK9G,EAAM8G,KAAKzE,IAAQyZ,MAAM,KAIlD,OAFAxX,EAAQmK,GAAWnK,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAGjD,CAGA,SAAS4R,GAAgB6F,EAAMza,GAC3B,OAAIya,EACI/b,EAAMmb,WAAWY,GACVA,EAAKza,GAETN,EAAS+a,EAAT/a,CAAeM,GAEnBvB,CACX,CAEA+M,GAASkP,gBA1FT,SAAyBvG,EAAQC,GAC7B,QAAID,IACOA,EAAO/G,gBAAkBgH,EAAOhH,eACnC+G,EAAO9G,aAAe+G,EAAO/G,YAC7B8G,EAAO7G,YAAc8G,EAAO9G,UAIxC,EAmFA9B,GAASd,YAAcA,GACvBc,GAAS9E,cAAgBA,GACzB8E,GAAS+B,UAAYA,GACrB/B,GAASU,wBAA0BA,GACnCV,GAASpF,UAAYA,GACrBoF,GAASmP,UAAYrY,EACrBkJ,GAAST,SAAWtH,GACpB+H,GAAS1G,aAAeA,GACxB0G,GAASrE,SAAWA,GACpBqE,GAAS2B,WAAaA,GAEtBzO,EAAM8M,SAAWA,EACpB,CAjkED,CAikEG7M,OAAOD,MAAMkc,QACFlc,KAIjB","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('kendo.core.js'), require('kendo.selectable.js'), require('kendo.icons.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.core', 'kendo.selectable', 'kendo.icons'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendocalendar = global.kendocalendar || {}, global.kendocalendar.js = factory()));\n})(this, (function () {\n var __meta__ = {\n id: \"calendar\",\n name: \"Calendar\",\n category: \"web\",\n description: \"The Calendar widget renders a graphical calendar that supports navigation and selection.\",\n depends: [ \"core\", \"selectable\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n support = kendo.support,\n ui = kendo.ui,\n Widget = ui.Widget,\n keys = kendo.keys,\n parse = kendo.parseDate,\n encode = kendo.htmlEncode,\n adjustDST = kendo.date.adjustDST,\n weekInYear = kendo.date.weekInYear,\n Selectable = kendo.ui.Selectable,\n extractFormat = kendo._extractFormat,\n template = kendo.template,\n getCulture = kendo.getCulture,\n transitions = kendo.support.transitions,\n transitionOrigin = transitions ? transitions.css + \"transform-origin\" : \"\",\n cellTemplate = template(function (data) { return (\"\" + (data.value) + \"\"); }),\n emptyCellTemplate = template(function () { return ''; }),\n otherMonthCellTemplate = template(function () { return ' '; }),\n weekNumberTemplate = template(function (data) { return (\"\" + (data.weekNumber) + \"\"); }),\n outerWidth = kendo._outerWidth,\n ns = \".kendoCalendar\",\n CLICK = \"click\" + ns,\n KEYDOWN_NS = \"keydown\" + ns,\n ID = \"id\",\n MIN = \"min\",\n LEFT = \"left\",\n SLIDE = \"slideIn\",\n MONTH = \"month\",\n CENTURY = \"century\",\n CHANGE = \"change\",\n NAVIGATE = \"navigate\",\n VALUE = \"value\",\n HOVER = \"k-hover\",\n DISABLED = \"k-disabled\",\n FOCUSED = \"k-focus\",\n OTHERMONTH = \"k-other-month\",\n OUTOFRANGE = \"k-out-of-range\",\n TODAY = \"k-calendar-nav-today\",\n CELLSELECTOR = \"td:has(.k-link)\",\n CELLSELECTORVALID = \"td:has(.k-link):not(.\" + DISABLED + \"):not(.\" + OUTOFRANGE + \")\",\n WEEKCOLUMNSELECTOR = \"td:not(:has(.k-link))\",\n SELECTED = \"k-selected\",\n BLUR = \"blur\" + ns,\n FOCUS = \"focus\",\n FOCUS_WITH_NS = FOCUS + ns,\n MOUSEENTER = support.touch ? \"touchstart\" : \"mouseenter\",\n MOUSEENTER_WITH_NS = support.touch ? \"touchstart\" + ns : \"mouseenter\" + ns,\n MOUSELEAVE = support.touch ? \"touchend\" + ns + \" touchmove\" + ns : \"mouseleave\" + ns,\n MS_PER_MINUTE = 60000,\n MS_PER_DAY = 86400000,\n PREVARROW = \"_prevArrow\",\n NEXTARROW = \"_nextArrow\",\n ARIA_DISABLED = \"aria-disabled\",\n ARIA_SELECTED = \"aria-selected\",\n ARIA_LABEL = \"aria-label\",\n extend = $.extend,\n DATE = Date,\n views = {\n month: 0,\n year: 1,\n decade: 2,\n century: 3\n },\n HEADERSELECTOR = '.k-header, .k-calendar-header',\n CLASSIC_HEADER_TEMPLATE = function (ref) {\n var actionAttr = ref.actionAttr;\n var size = ref.size;\n var isRtl = ref.isRtl;\n\n return \"
\\n \" + (kendo.ui.icon({ icon: (\"caret-alt-\" + (isRtl ? \"right\" : \"left\")), iconClass: \"k-button-icon\" })) + \"\\n \\n \" + (kendo.ui.icon({ icon: (\"caret-alt-\" + (isRtl ? \"left\" : \"right\")), iconClass: \"k-button-icon\" })) + \"\\n
\";\n },\n MODERN_HEADER_TEMPLATE = function (ref) {\n var actionAttr = ref.actionAttr;\n var size = ref.size;\n var messages = ref.messages;\n var isRtl = ref.isRtl;\n\n return \"
\\n \\n \\n \\n \\n \\n \\n \\n
\";\n };\n\n var Calendar = Widget.extend({\n init: function(element, options) {\n var that = this, value, id;\n options = options || {};\n options.componentType = options.componentType || \"classic\";\n Widget.fn.init.call(that, element, options);\n\n element = that.wrapper = that.element;\n options = that.options;\n\n options.url = kendo.unescape(options.url);\n\n that.options.disableDates = getDisabledExpr(that.options.disableDates);\n\n that._templates();\n\n that._selectable();\n\n that._header();\n\n that._viewWrapper();\n\n if (that.options.hasFooter) {\n that._footer(that.footer);\n } else {\n that._today = that.element.find('.k-calendar-nav-today');\n that._toggle();\n }\n\n id = element\n .addClass(\"k-widget k-calendar \" + (options.weekNumber ? \" k-week-number\" : \"\"))\n .on(MOUSEENTER_WITH_NS + \" \" + MOUSELEAVE, CELLSELECTOR, mousetoggle)\n .on(KEYDOWN_NS, \"table.k-content\", that._move.bind(that))\n .on(CLICK + \" touchend\", CELLSELECTOR, function(e) {\n var link = e.currentTarget.firstChild,\n value = toDateObject(link);\n\n if (link.href.indexOf(\"#\") != -1) {\n e.preventDefault();\n }\n\n if (that._view.name == \"month\" && that.options.disableDates(value)) {\n return;\n }\n if (that._view.name != \"month\" || options.selectable == \"single\") {\n that._click($(link));\n }\n })\n .on(\"mouseup\" + ns, \"table.k-content, .k-footer\", function() {\n that._focusView(that.options.focusOnNav !== false);\n })\n .attr(ID);\n\n if (that._isMultipleSelection() && that.options.weekNumber) {\n element.on(CLICK, WEEKCOLUMNSELECTOR, function(e) {\n var first = $(e.currentTarget).closest(\"tr\").find(CELLSELECTORVALID).first(),\n last = that.selectable._lastActive = $(e.currentTarget).closest(\"tr\").find(CELLSELECTORVALID).last();\n that.selectable.selectRange(first, last);\n that.selectable.trigger(CHANGE, { event: e });\n that._current = that._value = toDateObject(last.find(\"a\"));\n that._setCurrent(that._current);\n });\n }\n\n normalize(options);\n value = parse(options.value, options.format, options.culture);\n that._selectDates = [];\n\n that._index = views[options.start];\n\n that._current = new DATE(+restrictValue(value, options.min, options.max));\n\n that._addClassProxy = function() {\n that._active = true;\n\n if (that._cell.hasClass(DISABLED)) {\n var todayString = that._view.toDateString(getToday());\n that._cell = that._cellByDate(todayString);\n }\n\n that._cell.addClass(FOCUSED);\n };\n\n that._removeClassProxy = function() {\n that._active = false;\n if (that._cell) {\n that._cell.removeClass(FOCUSED);\n }\n };\n\n that.value(value);\n\n if (that._isMultipleSelection() && options.selectDates.length > 0) {\n that.selectDates(options.selectDates);\n }\n kendo.notify(that);\n },\n\n options: {\n name: \"Calendar\",\n value: null,\n min: new DATE(1900, 0, 1),\n max: new DATE(2099, 11, 31),\n dates: [],\n disableDates: null,\n url: \"\",\n culture: \"\",\n footer: \"\",\n format: \"\",\n month: {},\n weekNumber: false,\n selectable: \"single\",\n selectDates: [],\n start: MONTH,\n depth: MONTH,\n size: \"medium\",\n animation: {\n horizontal: {\n effects: SLIDE,\n reverse: true,\n duration: 500,\n divisor: 2\n },\n vertical: {\n effects: \"zoomIn\",\n duration: 400\n }\n },\n messages: {\n weekColumnHeader: \"\",\n today: \"Today\",\n navigateTo: \"Navigate to \",\n parentViews: {\n month: \"year view\",\n year: \"decade view\",\n decade: \"century view\"\n }\n },\n componentType: \"classic\"\n },\n\n events: [\n CHANGE,\n NAVIGATE\n ],\n\n componentTypes: {\n \"classic\": {\n header: {\n template: CLASSIC_HEADER_TEMPLATE\n },\n hasFooter: true,\n linksSelector: \".k-button\",\n contentClasses: \"k-calendar-table k-content\"\n },\n \"modern\": {\n header: {\n template: MODERN_HEADER_TEMPLATE\n },\n hasFooter: false,\n linksSelector: \".k-button\",\n contentClasses: \"k-calendar-table k-content k-calendar-content\"\n }\n },\n\n setOptions: function(options) {\n var that = this;\n\n normalize(options);\n\n options.disableDates = getDisabledExpr(options.disableDates);\n that._destroySelectable();\n\n if (options.messages) {\n options.messages = $.extend({}, true, that.options.messages, options.messages);\n }\n\n Widget.fn.setOptions.call(that, options);\n\n that._templates();\n\n that._selectable();\n\n that._viewWrapper();\n\n if (that.options.hasFooter) {\n that._footer(that.footer);\n } else {\n that.element.find(\".k-footer\").hide();\n that._toggle();\n }\n that._index = views[that.options.start];\n\n that.navigate();\n\n if (options.weekNumber) {\n that.element.addClass('k-week-number');\n }\n },\n\n destroy: function() {\n var that = this,\n today = that._today;\n\n that.element.off(ns);\n that._title.off(ns);\n that[PREVARROW].off(ns);\n that[NEXTARROW].off(ns);\n that._destroySelectable();\n kendo.destroy(that._table);\n\n if (today) {\n kendo.destroy(today.off(ns));\n }\n\n Widget.fn.destroy.call(that);\n },\n\n current: function() {\n return this._current;\n },\n\n view: function() {\n return this._view;\n },\n\n focus: function(table) {\n table = table || this._table;\n this._bindTable(table);\n table.trigger(\"focus\");\n },\n\n min: function(value) {\n return this._option(MIN, value);\n },\n\n max: function(value) {\n return this._option(\"max\", value);\n },\n\n navigateToPast: function() {\n this._navigate(PREVARROW, -1);\n },\n\n navigateToFuture: function() {\n this._navigate(NEXTARROW, 1);\n },\n\n navigateUp: function() {\n var that = this,\n index = that._index;\n\n if (that._title.hasClass(DISABLED)) {\n return;\n }\n\n that.navigate(that._current, ++index);\n },\n\n navigateDown: function(value) {\n var that = this,\n index = that._index,\n depth = that.options.depth;\n\n if (!value) {\n return;\n }\n\n if (index === views[depth]) {\n if (!isEqualDate(that._value, that._current) || !isEqualDate(that._value, value)) {\n that.value(value);\n that.trigger(CHANGE);\n }\n return;\n }\n\n that.navigate(value, --index);\n },\n\n navigate: function(value, view) {\n view = isNaN(view) ? views[view] : view;\n\n var that = this,\n options = that.options,\n culture = options.culture,\n min = options.min,\n max = options.max,\n title = that._title,\n from = that._table,\n old = that._oldTable,\n currentValue = that._current,\n future = value && +value > +currentValue,\n vertical = view !== undefined$1 && view !== that._index,\n to, currentView, compare,\n disabled,\n viewWrapper = that.element.children(\".k-calendar-view\");\n\n if (!value) {\n value = currentValue;\n }\n\n that._current = value = new DATE(+restrictValue(value, min, max));\n\n if (view === undefined$1) {\n view = that._index;\n } else {\n that._index = view;\n }\n\n that._view = currentView = calendar.views[view];\n compare = currentView.compare;\n\n disabled = view === views[CENTURY];\n title.toggleClass(DISABLED, disabled).attr(ARIA_DISABLED, disabled);\n\n disabled = compare(value, min) < 1;\n that[PREVARROW].toggleClass(DISABLED, disabled).attr(ARIA_DISABLED, disabled);\n\n disabled = compare(value, max) > -1;\n that[NEXTARROW].toggleClass(DISABLED, disabled).attr(ARIA_DISABLED, disabled);\n\n if (from && old && old.data(\"animating\")) {\n old.kendoStop(true, true);\n from.kendoStop(true, true);\n }\n\n that._oldTable = from;\n\n if (!from || that._changeView) {\n title.html('' + currentView.title(value, min, max, culture) + '');\n\n if (that.options.messages.parentViews && that._view.name !== CENTURY) {\n title.attr(\"title\", encode(that.options.messages.navigateTo + that.options.messages.parentViews[that._view.name]));\n } else {\n title.removeAttr(\"title\");\n }\n\n that._table = to = $(currentView.content(extend({\n min: min,\n max: max,\n date: value,\n url: options.url,\n dates: options.dates,\n format: options.format,\n otherMonth: true,\n culture: culture,\n disableDates: options.disableDates,\n isWeekColumnVisible: options.weekNumber,\n messages: options.messages,\n contentClasses: that.options.contentClasses\n }, that[currentView.name])));\n\n that._aria();\n\n addClassToViewContainer(to, currentView.name);\n var replace = from && from.data(\"start\") === to.data(\"start\");\n that._animate({\n from: from,\n to: to,\n vertical: vertical,\n future: future,\n replace: replace\n });\n\n viewWrapper.removeClass(\"k-calendar-monthview k-calendar-yearview k-calendar-decadeview k-calendar-centuryview\");\n viewWrapper.addClass(\"k-calendar-\" + currentView.name + \"view\");\n\n that.trigger(NAVIGATE);\n\n that._focus(value);\n }\n\n if (view === views[options.depth] && that._selectDates.length > 0) {\n that._visualizeSelectedDatesInView();\n }\n\n if (that.options.selectable === \"single\") {\n if (view === views[options.depth] && that._value && !that.options.disableDates(that._value)) {\n that._selectCell(that._value);\n }\n }\n\n that._setCurrent(value);\n\n if (!from && that._cell) {\n that._cell.removeClass(FOCUSED);\n }\n\n that._changeView = true;\n },\n\n selectDates: function(dates) {\n var that = this,\n validSelectedDates,\n datesUnique;\n\n if (dates === undefined$1) {\n return that._selectDates;\n }\n\n datesUnique = dates\n .map(function(date) { return date.getTime(); })\n .filter(function(date, position, array) {\n return array.indexOf(date) === position;\n })\n .map(function(time) { return new Date(time); });\n\n validSelectedDates = $.grep(datesUnique, function(value) {\n if (value) {\n return +that._validateValue(new Date(value.setHours(0, 0, 0, 0))) === +value;\n }\n });\n that._selectDates = validSelectedDates.length > 0 ? validSelectedDates : (datesUnique.length === 0 ? datesUnique : that._selectDates);\n that._visualizeSelectedDatesInView();\n },\n\n value: function(value) {\n var that = this,\n old = that._view,\n view = that._view;\n\n if (value === undefined$1) {\n return that._value;\n }\n\n value = that._validateValue(value);\n if (value && that._isMultipleSelection()) {\n var date = new Date(+value);\n date.setHours(0, 0, 0, 0);\n that._selectDates = [date];\n that.selectable._lastActive = null;\n }\n if (old && value === null && that._cell) {\n that._cell.removeClass(SELECTED);\n } else {\n that._changeView = !value || view && view.compare(value, that._current) !== 0;\n that.navigate(value);\n }\n },\n\n isRtl: function() {\n return kendo.support.isRtl(this.wrapper);\n },\n\n _aria: function() {\n var table = this._table;\n\n table.attr(\"aria-labelledby\", this._title.attr(\"id\"));\n\n if (this._view.name === \"month\" && this.options.selectable === \"multiple\") {\n table.attr(\"aria-multiselectable\", \"true\");\n }\n },\n\n _validateValue: function(value) {\n var that = this,\n options = that.options,\n min = options.min,\n max = options.max;\n\n if (value === null) {\n that._current = createDate(that._current.getFullYear(), that._current.getMonth(), that._current.getDate());\n }\n\n value = parse(value, options.format, options.culture);\n\n if (value !== null) {\n value = new DATE(+value);\n\n if (!isInRange(value, min, max)) {\n value = null;\n }\n }\n\n if (value === null || !that.options.disableDates(new Date(+value))) {\n that._value = value;\n } else if (that._value === undefined$1) {\n that._value = null;\n }\n\n return that._value;\n },\n\n _visualizeSelectedDatesInView: function() {\n var that = this;\n var selectedDates = {};\n $.each(that._selectDates, function(index, value) {\n selectedDates[kendo.calendar.views[0].toDateString(value)] = value;\n });\n that.selectable.clear();\n var cells = that._table\n .find(CELLSELECTOR)\n .filter(function(index, element) {\n return selectedDates[$(element.firstChild).attr(kendo.attr(VALUE))];\n });\n if (cells.length > 0) {\n that.selectable._selectElement(cells, true);\n }\n },\n\n _isMultipleSelection: function() {\n var that = this;\n return that.options.selectable === \"multiple\";\n },\n\n _selectable: function() {\n var that = this;\n if (!that._isMultipleSelection()) {\n return;\n }\n\n var selectable = that.options.selectable,\n selectableOptions = Selectable.parseOptions(selectable);\n\n that.selectable = new Selectable(that.wrapper, {\n aria: true,\n //excludes the anchor element\n inputSelectors: \"input,textarea,.k-multiselect-wrap,select,button,.k-button>span,.k-button>img,span.k-icon.k-i-caret-alt-down,span.k-icon.k-i-caret-alt-up,span.k-svg-icon.k-svg-i-caret-alt-down,span.k-svg-icon.k-svg-i-caret-alt-up\",\n multiple: selectableOptions.multiple,\n filter: \"table.k-month:eq(0) \" + CELLSELECTORVALID,\n change: that._onSelect.bind(that),\n relatedTarget: that._onRelatedTarget.bind(that)\n });\n },\n\n _onRelatedTarget: function(target) {\n var that = this;\n\n if (that.selectable.options.multiple && target.is(CELLSELECTORVALID)) {\n that._current = toDateObject(target.find(\"a\"));\n that._setCurrent(that._current);\n }\n\n },\n\n _onSelect: function(e) {\n var that = this,\n eventArgs = e,\n selectableOptions = Selectable.parseOptions(that.options.selectable);\n\n if (!selectableOptions.multiple) {\n if ($(eventArgs.event.currentTarget).is(\"td\") && !$(eventArgs.event.currentTarget).hasClass(\"k-selected\")) {\n $(eventArgs.event.currentTarget).addClass(\"k-selected\");\n }\n else {\n that._click($(eventArgs.event.currentTarget).find(\"a\"));\n }\n return;\n }\n\n if (eventArgs.event.ctrlKey || eventArgs.event.metaKey) {\n if ($(eventArgs.event.currentTarget).is(CELLSELECTORVALID)) {\n that._toggleSelection($(eventArgs.event.currentTarget));\n }\n else {\n that._cellsBySelector(CELLSELECTORVALID).each(function(index, element) {\n var value = toDateObject($(element).find(\"a\"));\n that._deselect(value);\n });\n that._addSelectedCellsToArray();\n }\n }\n else if (eventArgs.event.shiftKey) {\n that._rangeSelection(that._cell);\n }\n else if ($(eventArgs.event.currentTarget).is(CELLSELECTOR)) {\n that.value(toDateObject($(eventArgs.event.currentTarget).find(\"a\")));\n }\n else {\n that._selectDates = [];\n that._addSelectedCellsToArray();\n }\n that.trigger(CHANGE);\n },\n\n _destroySelectable: function() {\n var that = this;\n\n if (that.selectable) {\n that.selectable.destroy();\n that.selectable = null;\n }\n },\n\n //when ctrl key is clicked\n _toggleSelection: function(currentCell) {\n var that = this,\n date = toDateObject(currentCell.find(\"a\"));\n if (currentCell.hasClass(\"k-selected\")) {\n that._selectDates.push(date);\n }\n else {\n that._deselect(date);\n }\n },\n\n //shift selection\n _rangeSelection: function(toDateCell, startDate) {\n var that = this,\n fromDate = startDate || toDateObject(that.selectable.value().first().find(\"a\")),\n toDate = toDateObject(toDateCell.find(\"a\")),\n daysDifference;\n\n if (that.selectable._lastActive || that._value) {\n fromDate = that.selectable._lastActive ? toDateObject(that.selectable._lastActive.find(\"a\")) : new Date(+that._value);\n } else {\n that.selectable._lastActive = startDate ? that._cellByDate(that._view.toDateString(startDate), CELLSELECTORVALID) : that.selectable.value().first();\n }\n\n that._selectDates = [];\n daysDifference = daysBetweenTwoDates(fromDate, toDate);\n addDaysToArray(that._selectDates, daysDifference, fromDate, that.options.disableDates);\n\n that._visualizeSelectedDatesInView();\n },\n\n _cellsBySelector: function(selector) {\n var that = this;\n return that._table.find(selector);\n },\n\n _addSelectedCellsToArray: function() {\n var that = this;\n that.selectable.value().each(function(index, item) {\n var date = toDateObject($(item.firstChild));\n if (!that.options.disableDates(date)) {\n that._selectDates.push(date);\n }\n });\n },\n\n _deselect: function(date) {\n var that = this;\n var currentDateIndex = that._selectDates.map(Number).indexOf(+date);\n if (currentDateIndex != -1) {\n that._selectDates.splice(currentDateIndex, 1);\n }\n },\n\n _dateInView: function(date) {\n var that = this,\n firstDateInView = toDateObject(that._cellsBySelector(CELLSELECTORVALID).first().find(\"a\")),\n lastDateInView = toDateObject(that._cellsBySelector(CELLSELECTORVALID).last().find(\"a\"));\n\n return +date <= +lastDateInView && +date >= +firstDateInView;\n },\n\n _isNavigatable: function(currentValue, cellIndex) {\n var that = this;\n var isDisabled = that.options.disableDates;\n var cell;\n var index;\n\n if (that._view.name == \"month\") {\n return !isDisabled(currentValue);\n } else {\n index = that.wrapper.find(\".\" + FOCUSED).index();\n cell = that.wrapper.find(\".k-content td\").eq(index + cellIndex);\n return cell.is(CELLSELECTORVALID) || !isDisabled(currentValue);\n }\n },\n\n _move: function(e) {\n var that = this,\n options = that.options,\n key = e.keyCode,\n view = that._view,\n index = that._index,\n min = that.options.min,\n max = that.options.max,\n currentValue = new DATE(+that._current),\n isRtl = that.isRtl(),\n isDisabled = that.options.disableDates,\n value, prevent, method, temp;\n\n if (e.target === that._table[0]) {\n that._active = true;\n }\n\n if (key == keys.RIGHT && !isRtl || key == keys.LEFT && isRtl) {\n value = 1;\n prevent = true;\n } else if (key == keys.LEFT && !isRtl || key == keys.RIGHT && isRtl) {\n value = -1;\n prevent = true;\n } else if (key == keys.UP) {\n value = index === 0 ? -7 : -4;\n prevent = true;\n } else if (key == keys.DOWN) {\n value = index === 0 ? 7 : 4;\n prevent = true;\n } else if (key == keys.SPACEBAR) {\n value = 0;\n prevent = true;\n } else if (key == keys.HOME || key == keys.END) {\n method = key == keys.HOME ? \"first\" : \"last\";\n temp = view[method](currentValue);\n currentValue = new DATE(temp.getFullYear(), temp.getMonth(), temp.getDate(), currentValue.getHours(), currentValue.getMinutes(), currentValue.getSeconds(), currentValue.getMilliseconds());\n currentValue.setFullYear(temp.getFullYear());\n prevent = true;\n } else if (key === 84) {\n that._todayClick(e);\n prevent = true;\n }\n\n if (e.ctrlKey || e.metaKey) {\n if (key == keys.RIGHT && !isRtl || key == keys.LEFT && isRtl) {\n that.navigateToFuture();\n prevent = true;\n } else if (key == keys.LEFT && !isRtl || key == keys.RIGHT && isRtl) {\n that.navigateToPast();\n prevent = true;\n } else if (key == keys.UP) {\n that.navigateUp();\n prevent = true;\n } else if (key == keys.DOWN) {\n that._click($(that._cell[0].firstChild));\n prevent = true;\n }\n else if ((key == keys.ENTER || key == keys.SPACEBAR) && that._isMultipleSelection()) {\n that._keyboardToggleSelection(e);\n\n var focusedDate = toDateObject($(that._cell[0]).find(\"a\"));\n that._setCurrent(focusedDate);\n\n }\n } else if (e.shiftKey) {\n if (value !== undefined$1 || method) {\n if (!method) {\n view.setDate(currentValue, value);\n }\n\n if (!isInRange(currentValue, min, max)) {\n currentValue = restrictValue(currentValue, options.min, options.max);\n }\n\n if (isDisabled(currentValue)) {\n currentValue = that._nextNavigatable(currentValue, value);\n }\n\n min = createDate(min.getFullYear(), min.getMonth(), min.getDate());\n if (that._isMultipleSelection()) {\n that._keyboardRangeSelection(e, currentValue);\n }\n else {\n that._focus(currentValue);\n }\n }\n } else {\n if (key == keys.ENTER || key == keys.SPACEBAR) {\n if (view.name == \"month\" && that._isMultipleSelection()) {\n that.value(toDateObject($(that._cell.find(\"a\"))));\n that.selectable._lastActive = $(that._cell[0]);\n that.trigger(CHANGE);\n }\n else {\n that._click($(that._cell[0].firstChild));\n }\n prevent = true;\n } else if (key == keys.PAGEUP) {\n prevent = true;\n that.navigateToPast();\n } else if (key == keys.PAGEDOWN) {\n prevent = true;\n that.navigateToFuture();\n }\n\n if (value || method) {\n if (!method) {\n view.setDate(currentValue, value);\n }\n\n min = createDate(min.getFullYear(), min.getMonth(), min.getDate());\n\n if (!isInRange(currentValue, min, max)) {\n currentValue = restrictValue(currentValue, options.min, options.max);\n }\n\n if (!that._isNavigatable(currentValue, value)) {\n currentValue = that._nextNavigatable(currentValue, value);\n }\n\n if (that._isMultipleSelection()) {\n if (!that._dateInView(currentValue)) {\n that.navigate(currentValue);\n }\n else {\n that._current = currentValue;\n that._setCurrent(currentValue);\n }\n }\n else {\n that._focus(currentValue);\n }\n }\n }\n\n if (prevent) {\n e.preventDefault();\n }\n\n return that._current;\n },\n\n _keyboardRangeSelection: function(event, currentValue) {\n var that = this,\n fromDate,\n daysDifference;\n\n if (!that._dateInView(currentValue)) {\n that._selectDates = [];\n\n fromDate = that.selectable._lastActive ? toDateObject(that.selectable._lastActive.find(\"a\")) : currentValue;\n daysDifference = daysBetweenTwoDates(fromDate, new Date(+currentValue));\n\n addDaysToArray(that._selectDates, daysDifference, fromDate, that.options.disableDates);\n\n that.navigate(currentValue);\n that._current = currentValue;\n that.selectable._lastActive = that.selectable._lastActive || that._cellByDate(that._view.toDateString(currentValue), CELLSELECTORVALID);\n that.trigger(CHANGE);\n return;\n }\n that.selectable.options.filter = that.wrapper.find(\"table\").length > 1 && +currentValue > +that._current ? \"table.k-month:eq(1) \" + CELLSELECTORVALID : \"table.k-month:eq(0) \" + CELLSELECTORVALID;\n that._setCurrent(currentValue);\n that._current = currentValue;\n\n that._rangeSelection(that._cellByDate(that._view.toDateString(currentValue), CELLSELECTORVALID), currentValue);\n\n that.trigger(CHANGE);\n\n that.selectable.options.filter = \"table.k-month:eq(0) \" + CELLSELECTORVALID;\n },\n\n _keyboardToggleSelection: function(event) {\n var that = this;\n\n event.currentTarget = that._cell[0];\n that.selectable._lastActive = $(that._cell[0]);\n\n if ($(that._cell[0]).hasClass(SELECTED)) {\n that.selectable._unselect($(that._cell[0]));\n }\n else {\n that.selectable.value($(that._cell[0]));\n }\n that.selectable.trigger(CHANGE, { event: event });\n },\n\n _nextNavigatable: function(currentValue, value) {\n var that = this,\n disabled = true,\n view = that._view,\n min = that.options.min,\n max = that.options.max,\n isDisabled = that.options.disableDates,\n navigatableDate = new Date(currentValue.getTime());\n\n view.setDate(navigatableDate, -value);\n\n while (disabled) {\n view.setDate(currentValue, value);\n\n if (!isInRange(currentValue, min, max)) {\n currentValue = navigatableDate;\n break;\n }\n disabled = isDisabled(currentValue);\n }\n return currentValue;\n },\n\n _animate: function(options) {\n var that = this;\n var from = options.from;\n var to = options.to;\n var active = that._active;\n var viewWrapper = that.element.children(\".k-calendar-view\");\n\n if (!from) {\n viewWrapper.append(to);\n that._bindTable(to);\n } else if (from.parent().data(\"animating\")) {\n from.off(ns);\n from.parent().kendoStop(true, true).remove();\n from.remove();\n\n viewWrapper.append(to);\n that._focusView(active);\n } else if (!from.is(\":visible\") || that.options.animation === false || options.replace) {\n to.insertAfter(from);\n from.off(ns).remove();\n\n that._focusView(active);\n } else {\n that[options.vertical ? \"_vertical\" : \"_horizontal\"](from, to, options.future);\n }\n },\n\n _horizontal: function(from, to, future) {\n var that = this,\n active = that._active,\n horizontal = that.options.animation.horizontal,\n effects = horizontal.effects,\n viewWidth = outerWidth(from),\n margin = (outerWidth(from, true) - viewWidth);\n\n if (effects && effects.indexOf(SLIDE) != -1) {\n from.add(to).css({ width: viewWidth });\n\n from.wrap(\"
\");\n\n that._focusView(active, from);\n\n from.parent()\n .css({\n position: \"relative\",\n width: (viewWidth * 2) + (2 * margin),\n display: \"flex\",\n \"margin-left\": future ? 0 : (-viewWidth - margin)\n });\n\n to[future ? \"insertAfter\" : \"insertBefore\"](from);\n\n extend(horizontal, {\n effects: SLIDE + \":\" + (future ? \"right\" : LEFT),\n complete: function() {\n from.off(ns).remove();\n that._oldTable = null;\n\n to.unwrap();\n\n that._focusView(active);\n\n }\n });\n\n from.parent().kendoStop(true, true).kendoAnimate(horizontal);\n }\n },\n\n _vertical: function(from, to) {\n var that = this,\n vertical = that.options.animation.vertical,\n effects = vertical.effects,\n active = that._active, //active state before from's blur\n cell, position;\n\n if (effects && effects.indexOf(\"zoom\") != -1) {\n to.insertBefore(from);\n\n from.css({\n position: \"absolute\",\n width: to.width()\n });\n\n if (transitionOrigin) {\n cell = that._cellByDate(that._view.toDateString(that._current));\n position = cell.position();\n position = (position.left + parseInt(cell.width() / 2, 10)) + \"px\" + \" \" + (position.top + parseInt(cell.height() / 2, 10) + \"px\");\n to.css(transitionOrigin, position);\n }\n\n from.kendoStop(true, true).kendoAnimate({\n effects: \"fadeOut\",\n duration: 600,\n complete: function() {\n from.off(ns).remove();\n that._oldTable = null;\n\n that._focusView(active);\n }\n });\n\n to.kendoStop(true, true).kendoAnimate(vertical);\n }\n },\n\n _cellByDate: function(value, selector) {\n return this._table.find(selector ? selector : \"td:not(.\" + OTHERMONTH + \")\")\n .filter(function() {\n return $(this.firstChild).attr(kendo.attr(VALUE)) === value;\n });\n },\n\n _selectCell: function(date) {\n var that = this,\n cell = that._selectedCell,\n value = that._view.toDateString(date);\n\n if (cell && cell[0]) {\n cell[0].removeAttribute(ARIA_SELECTED);\n cell.removeClass(SELECTED);\n }\n\n cell = that._cellByDate(value, that.options.selectable == \"multiple\" ? CELLSELECTOR : \"td:not(.\" + OTHERMONTH + \")\");\n\n that._selectedCell = cell;\n cell.addClass(SELECTED)\n .attr(ARIA_SELECTED, true);\n },\n\n _setCurrent: function(date) {\n var that = this,\n id = kendo.guid(),\n cell = that._cell,\n value = that._view.toDateString(date);\n\n if (cell && cell[0]) {\n cell.removeClass(FOCUSED);\n cell[0].removeAttribute(ARIA_LABEL);\n cell[0].removeAttribute(ID);\n }\n\n cell = that._cellByDate(value, that.options.selectable == \"multiple\" ? CELLSELECTOR : \"td:not(.\" + OTHERMONTH + \")\");\n\n that._cell = cell;\n\n cell.attr(ID, id)\n .addClass(FOCUSED);\n\n if (that._table[0]) {\n that._table[0].removeAttribute(\"aria-activedescendant\");\n that._table.attr(\"aria-activedescendant\", id);\n }\n },\n\n _bindTable: function(table) {\n table\n .on(FOCUS_WITH_NS, this._addClassProxy)\n .on(BLUR, this._removeClassProxy);\n },\n\n _click: function(link) {\n var that = this,\n options = that.options,\n currentValue = new Date(+that._current),\n value = toDateObject(link);\n\n adjustDST(value, 0);\n\n if (that._view.name == \"month\" && that.options.disableDates(value)) {\n value = that._value;\n }\n\n that._view.setDate(currentValue, value);\n\n that.navigateDown(restrictValue(currentValue, options.min, options.max));\n },\n\n _focus: function(value) {\n var that = this,\n view = that._view;\n\n if (view.compare(value, that._current) !== 0) {\n that.navigate(value);\n } else {\n that._current = value;\n that._setCurrent(value);\n }\n },\n\n _focusView: function(active, table) {\n if (active) {\n this.focus(table);\n }\n },\n\n _viewWrapper: function() {\n var that = this;\n var element = that.element;\n var viewWrapper = element.children(\".k-calendar-view\");\n\n if (!viewWrapper[0]) {\n viewWrapper = $(\"
\").insertAfter(element.find(HEADERSELECTOR));\n }\n },\n\n _footer: function(template) {\n var that = this,\n today = getToday(),\n element = that.element,\n footer = element.find(\".k-footer\");\n\n if (!template) {\n that._toggle(false);\n footer.hide();\n return;\n }\n\n if (!footer[0]) {\n footer = $(\"
\\n \\n
\").appendTo(element);\n }\n\n that._today = footer.show()\n .find(\".k-button-flat-primary\")\n .attr(\"title\", kendo.toString(today, \"D\", that.options.culture));\n\n footer.find(\".k-button-text\")\n .html(template(today));\n\n that._toggle();\n },\n\n _header: function() {\n var that = this,\n element = that.element,\n linksSelector = that.options.linksSelector;\n\n if (!element.find(HEADERSELECTOR)[0]) {\n element.html(kendo.template(that.options.header.template)($.extend(true,{}, that.options, {\n actionAttr: kendo.attr(\"action\"),\n size: kendo.getValidCssClass(\"k-button-\", \"size\", that.options.size),\n isRtl: that.isRtl()\n })));\n }\n\n element.find(linksSelector)\n .on(CLICK + \" touchend\" + ns, function() { return false; } );\n\n that._title = element.find('[' + kendo.attr(\"action\") + '=\"nav-up\"]').on(CLICK + \" touchend\" + ns, function() {\n that._active = that.options.focusOnNav !== false;\n that.navigateUp();\n });\n that[PREVARROW] = element.find('[' + kendo.attr(\"action\") + '=\"prev\"]').on(CLICK + \" touchend\" + ns, function() {\n that._active = that.options.focusOnNav !== false;\n that.navigateToPast();\n });\n that[NEXTARROW] = element.find('[' + kendo.attr(\"action\") + '=\"next\"]').on(CLICK + \" touchend\" + ns, function() {\n that._active = that.options.focusOnNav !== false;\n that.navigateToFuture();\n });\n element.find('[' + kendo.attr(\"action\") + '=\"today\"]').on(CLICK + \" touchend\" + ns, that._todayClick.bind(that));\n\n },\n\n _navigate: function(arrow, modifier) {\n var that = this,\n index = that._index + 1,\n currentValue = new DATE(+that._current);\n\n if (that._isMultipleSelection()) {\n var firstDayCurrentMonth = that._table.find(\"td:not(.k-other-month):not(.k-out-of-range)\").has(\".k-link\").first();\n currentValue = toDateObject(firstDayCurrentMonth.find(\"a\"));\n that._current = new Date(+currentValue);\n }\n\n arrow = that[arrow];\n\n if (!arrow.hasClass(DISABLED)) {\n if (index > 3) {\n currentValue.setFullYear(currentValue.getFullYear() + 100 * modifier);\n } else {\n calendar.views[index].setDate(currentValue, modifier);\n }\n\n that.navigate(currentValue);\n }\n },\n\n _option: function(option, value) {\n var that = this,\n options = that.options,\n currentValue = that._value || that._current,\n isBigger;\n\n if (value === undefined$1) {\n return options[option];\n }\n\n value = parse(value, options.format, options.culture);\n\n if (!value) {\n return;\n }\n\n options[option] = new DATE(+value);\n\n if (option === MIN) {\n isBigger = value > currentValue;\n } else {\n isBigger = currentValue > value;\n }\n\n if (isBigger || isEqualMonth(currentValue, value)) {\n if (isBigger) {\n that._value = null;\n }\n that._changeView = true;\n }\n\n if (!that._changeView) {\n that._changeView = !!(options.month.content || options.month.empty);\n }\n\n that.navigate(that._value);\n\n that._toggle();\n },\n\n _toggle: function(toggle) {\n var that = this,\n options = that.options,\n isTodayDisabled = that.options.disableDates(getToday()),\n link = that._today,\n todayClass = that._todayClass();\n\n if (toggle === undefined$1) {\n toggle = isInRange(getToday(), options.min, options.max);\n }\n\n if (link) {\n link.off(CLICK);\n\n if (toggle && !isTodayDisabled) {\n link.addClass(todayClass)\n .removeClass(DISABLED)\n .on(CLICK, that._todayClick.bind(that));\n } else {\n link.removeClass(todayClass)\n .addClass(DISABLED)\n .on(CLICK, prevent);\n }\n }\n },\n\n _todayClass: function() {\n return TODAY;\n },\n\n _todayClick: function(e) {\n var that = this,\n depth = views[that.options.depth],\n disabled = that.options.disableDates,\n today = getToday();\n\n e.preventDefault();\n\n if (disabled(today)) {\n return;\n }\n\n if (that._view.compare(that._current, today) === 0 && that._index == depth) {\n that._changeView = false;\n }\n\n if (that._isMultipleSelection()) {\n that._selectDates = [today];\n that.selectable._lastActive = null;\n }\n\n that._value = today;\n that.navigate(today, depth);\n\n that.trigger(CHANGE);\n },\n\n _templates: function() {\n var that = this,\n options = that.options,\n footer = options.footer,\n month = options.month,\n content = month.content,\n weekNumber = month.weekNumber,\n empty = month.empty,\n footerTemplate = function (data) { return (\"\" + (kendo.toString(data,\"D\",options.culture))); };\n\n that.month = {\n content: function (data) { return (\"\" + (executeTemplate(content, data) || data.value) + \"\"); },\n empty: function (data) { return (\"\" + (executeTemplate(empty, data) || \" \") + \"\"); },\n weekNumber: function (data) { return (\"\" + (executeTemplate(weekNumber, data) || data.weekNumber) + \"\"); }\n };\n\n that.year = {\n content: template(function (data) { return (\"\" + (data.value) + \"\"); })\n };\n\n if (footer && footer !== true) {\n footerTemplate = footer;\n }\n\n that.footer = footer !== false ? template(footerTemplate, { useWithBlock: false }) : null;\n },\n\n _updateAria: function(ariaTemplate, date) {\n var that = this;\n var cell = that._cell;\n var valueType = that.view().valueType();\n var current = date || that.current();\n var text;\n\n if (valueType === \"month\") {\n text = kendo.toString(current, \"MMMM\");\n } else if (valueType === \"date\") {\n text = kendo.toString(current, \"D\");\n } else {\n text = cell.text();\n }\n\n cell.attr(\"aria-label\", ariaTemplate({ current: current, valueType: valueType, text: text }));\n\n return cell.attr(\"id\");\n }\n });\n\n ui.plugin(Calendar);\n\n var calendar = {\n firstDayOfMonth: function(date) {\n return createDate(\n date.getFullYear(),\n date.getMonth(),\n 1\n );\n },\n\n firstVisibleDay: function(date, calendarInfo) {\n calendarInfo = calendarInfo || kendo.culture().calendar;\n\n var firstDay = calendarInfo.firstDay,\n firstVisibleDay = new DATE(date.getFullYear(), date.getMonth(), 1, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n firstVisibleDay.setFullYear(date.getFullYear());\n\n while (firstVisibleDay.getDay() != firstDay) {\n calendar.setTime(firstVisibleDay, -1 * MS_PER_DAY);\n }\n\n return firstVisibleDay;\n },\n\n setTime: function(date, time) {\n var tzOffsetBefore = date.getTimezoneOffset(),\n resultDATE = new DATE(date.getTime() + time),\n tzOffsetDiff = resultDATE.getTimezoneOffset() - tzOffsetBefore;\n\n date.setTime(resultDATE.getTime() + tzOffsetDiff * MS_PER_MINUTE);\n },\n views: [{\n name: MONTH,\n title: function(date, min, max, culture) {\n return getCalendarInfo(culture).months.names[date.getMonth()] + \" \" + date.getFullYear();\n },\n content: function(options) {\n var that = this,\n idx = 0,\n min = options.min,\n max = options.max,\n date = options.date,\n dates = options.dates,\n format = options.format,\n culture = options.culture,\n navigateUrl = options.url,\n showHeader = options.showHeader,\n otherMonth = options.otherMonth,\n isWeekColumnVisible = options.isWeekColumnVisible,\n hasUrl = navigateUrl && dates[0],\n currentCalendar = getCalendarInfo(culture),\n firstDayIdx = currentCalendar.firstDay,\n days = currentCalendar.days,\n names = shiftArray(days.names, firstDayIdx),\n shortNames = shiftArray(days.namesShort, firstDayIdx),\n start = calendar.firstVisibleDay(date, currentCalendar),\n firstDayOfMonth = that.first(date),\n lastDayOfMonth = that.last(date),\n toDateString = that.toDateString,\n today = getToday(),\n contentClasses = options.contentClasses,\n html = '';\n\n if (showHeader) {\n html += '';\n }\n\n html += '';\n\n if (isWeekColumnVisible) {\n html += '';\n }\n\n for (; idx < 7; idx++) {\n html += '';\n }\n\n adjustDST(today, 0);\n today = +today;\n\n return view({\n cells: 42,\n perRow: 7,\n html: html += '',\n start: createDate(start.getFullYear(), start.getMonth(), start.getDate()),\n isWeekColumnVisible: isWeekColumnVisible,\n weekNumber: options.weekNumber,\n min: createDate(min.getFullYear(), min.getMonth(), min.getDate()),\n max: createDate(max.getFullYear(), max.getMonth(), max.getDate()),\n otherMonth: otherMonth,\n content: options.content,\n lastDayOfMonth: lastDayOfMonth,\n empty: options.empty,\n setter: that.setDate,\n disableDates: options.disableDates,\n build: function(date, idx, disableDates) {\n var cssClass = [ \"k-calendar-td\" ],\n day = date.getDay(),\n linkClass = \"\",\n url = \"#\";\n\n if (date < firstDayOfMonth || date > lastDayOfMonth) {\n cssClass.push(OTHERMONTH);\n }\n\n if (disableDates(date)) {\n cssClass.push(DISABLED);\n }\n\n if (+date === today) {\n cssClass.push(\"k-today\");\n }\n\n if (day === 0 || day === 6) {\n cssClass.push(\"k-weekend\");\n }\n\n if (hasUrl && inArray(+date, dates)) {\n url = navigateUrl.replace(\"{0}\", kendo.toString(date, format, culture));\n linkClass = \" k-action-link\";\n }\n\n return {\n date: date,\n dates: dates,\n ns: kendo.ns,\n title: kendo.toString(date, \"D\", culture),\n value: date.getDate(),\n dateString: toDateString(date),\n cssClass: cssClass.join(\" \"),\n linkClass: linkClass,\n url: url\n };\n },\n weekNumberBuild: function(date) {\n return {\n weekNumber: weekInYear(date, kendo.culture().calendar.firstDay),\n currentDate: date\n };\n }\n });\n },\n first: function(date) {\n return calendar.firstDayOfMonth(date);\n },\n last: function(date) {\n var last = createDate(date.getFullYear(), date.getMonth() + 1, 0),\n first = calendar.firstDayOfMonth(date),\n timeOffset = Math.abs(last.getTimezoneOffset() - first.getTimezoneOffset());\n\n if (timeOffset) {\n last.setHours(first.getHours() + (timeOffset / 60));\n }\n\n return last;\n },\n compare: function(date1, date2) {\n var result,\n month1 = date1.getMonth(),\n year1 = date1.getFullYear(),\n month2 = date2.getMonth(),\n year2 = date2.getFullYear();\n\n if (year1 > year2) {\n result = 1;\n } else if (year1 < year2) {\n result = -1;\n } else {\n result = month1 == month2 ? 0 : month1 > month2 ? 1 : -1;\n }\n\n return result;\n },\n setDate: function(date, value) {\n var hours = date.getHours();\n if (value instanceof DATE) {\n date.setFullYear(value.getFullYear(), value.getMonth(), value.getDate());\n } else {\n calendar.setTime(date, value * MS_PER_DAY);\n }\n adjustDST(date, hours);\n },\n toDateString: function(date) {\n return date.getFullYear() + \"/\" + date.getMonth() + \"/\" + date.getDate();\n },\n valueType: function() {\n return \"date\";\n }\n },\n {\n name: \"year\",\n title: function(date) {\n return date.getFullYear();\n },\n content: function(options) {\n var calendarMonths = getCalendarInfo(options.culture).months,\n namesAbbr = calendarMonths.namesAbbr,\n namesFull = calendarMonths.names,\n toDateString = this.toDateString,\n min = options.min,\n max = options.max,\n html = \"\";\n\n if (options.showHeader) {\n html += '
' + this.title(date, min, max, culture) + '
' + encode(options.messages.weekColumnHeader) + '' + shortNames[idx] + '
';\n html += '';\n html += '';\n html += '';\n }\n\n return view({\n min: createDate(min.getFullYear(), min.getMonth(), 1),\n max: createDate(max.getFullYear(), max.getMonth(), 1),\n start: createDate(options.date.getFullYear(), 0, 1),\n html: html,\n setter: this.setDate,\n content: options.content,\n build: function(date) {\n var cssClass = [ \"k-calendar-td\" ];\n\n return {\n value: namesAbbr[date.getMonth()],\n label: namesFull[date.getMonth()],\n ns: kendo.ns,\n dateString: toDateString(date),\n cssClass: cssClass.join(\" \")\n };\n }\n });\n },\n first: function(date) {\n return createDate(date.getFullYear(), 0, date.getDate());\n },\n last: function(date) {\n return createDate(date.getFullYear(), 11, date.getDate());\n },\n compare: function(date1, date2) {\n return compare(date1, date2);\n },\n setDate: function(date, value) {\n var month,\n hours = date.getHours();\n\n if (value instanceof DATE) {\n month = value.getMonth();\n\n date.setFullYear(value.getFullYear(), month, date.getDate());\n\n if (month !== date.getMonth()) {\n date.setDate(0);\n }\n } else {\n month = date.getMonth() + value;\n\n date.setMonth(month);\n\n if (month > 11) {\n month -= 12;\n }\n\n if (month > 0 && date.getMonth() != month) {\n date.setDate(0);\n }\n }\n\n adjustDST(date, hours);\n },\n toDateString: function(date) {\n return date.getFullYear() + \"/\" + date.getMonth() + \"/1\";\n },\n valueType: function() {\n return \"month\";\n }\n },\n {\n name: \"decade\",\n title: function(date, min, max) {\n return title(date, min, max, 10);\n },\n content: function(options) {\n var year = options.date.getFullYear(),\n toDateString = this.toDateString,\n html = \"\";\n\n if (options.showHeader) {\n html += '
';\n html += this.title(options.date);\n html += '
';\n html += '';\n html += '';\n html += '';\n }\n\n return view({\n start: createDate(year - year % 10 - 1, 0, 1),\n min: createDate(options.min.getFullYear(), 0, 1),\n max: createDate(options.max.getFullYear(), 0, 1),\n otherMonth: options.otherMonth,\n html: html,\n setter: this.setDate,\n build: function(date, idx) {\n var cssClass = [ \"k-calendar-td\" ];\n\n if (idx === 0 || idx === 11) {\n cssClass.push(OTHERMONTH);\n }\n\n return {\n value: date.getFullYear(),\n ns: kendo.ns,\n dateString: toDateString(date),\n cssClass: cssClass.join(\" \")\n };\n }\n });\n },\n first: function(date) {\n var year = date.getFullYear();\n return createDate(year - year % 10, date.getMonth(), date.getDate());\n },\n last: function(date) {\n var year = date.getFullYear();\n return createDate(year - year % 10 + 9, date.getMonth(), date.getDate());\n },\n compare: function(date1, date2) {\n return compare(date1, date2, 10);\n },\n setDate: function(date, value) {\n setDate(date, value, 1);\n },\n toDateString: function(date) {\n return date.getFullYear() + \"/0/1\";\n },\n valueType: function() {\n return \"year\";\n }\n },\n {\n name: CENTURY,\n title: function(date, min, max) {\n return title(date, min, max, 100);\n },\n content: function(options) {\n var year = options.date.getFullYear(),\n min = options.min.getFullYear(),\n max = options.max.getFullYear(),\n toDateString = this.toDateString,\n minYear = min,\n maxYear = max,\n html = \"\";\n\n minYear = minYear - minYear % 10;\n maxYear = maxYear - maxYear % 10;\n\n if (maxYear - minYear < 10) {\n maxYear = minYear + 9;\n }\n\n if (options.showHeader) {\n html += '
';\n html += this.title(options.date, options.min, options.max);\n html += '
';\n html += '';\n html += '';\n html += '';\n }\n\n return view({\n start: createDate(year - year % 100 - 10, 0, 1),\n min: createDate(minYear, 0, 1),\n max: createDate(maxYear, 0, 1),\n otherMonth: options.otherMonth,\n html: html,\n setter: this.setDate,\n build: function(date, idx) {\n var cssClass = [ \"k-calendar-td\" ];\n var start = date.getFullYear(),\n end = start + 9;\n\n if (idx === 0 || idx === 11) {\n cssClass.push(OTHERMONTH);\n }\n\n if (start < min) {\n start = min;\n }\n\n if (end > max) {\n end = max;\n }\n\n return {\n ns: kendo.ns,\n value: start + \" - \" + end,\n dateString: toDateString(date),\n cssClass: cssClass.join(\" \")\n };\n }\n });\n },\n first: function(date) {\n var year = date.getFullYear();\n return createDate(year - year % 100, date.getMonth(), date.getDate());\n },\n last: function(date) {\n var year = date.getFullYear();\n return createDate(year - year % 100 + 99, date.getMonth(), date.getDate());\n },\n compare: function(date1, date2) {\n return compare(date1, date2, 100);\n },\n setDate: function(date, value) {\n setDate(date, value, 10);\n },\n toDateString: function(date) {\n var year = date.getFullYear();\n return (year - year % 10) + \"/0/1\";\n },\n valueType: function() {\n return \"decade\";\n }\n }]\n };\n\n function title(date, min, max, modular) {\n var start = date.getFullYear(),\n minYear = min.getFullYear(),\n maxYear = max.getFullYear(),\n end;\n\n start = start - start % modular;\n end = start + (modular - 1);\n\n if (start < minYear) {\n start = minYear;\n }\n if (end > maxYear) {\n end = maxYear;\n }\n\n return start + \"-\" + end;\n }\n\n function view(options) {\n var idx = 0,\n data,\n min = options.min,\n max = options.max,\n start = options.start,\n setter = options.setter,\n build = options.build,\n weekNumberBuild = options.weekNumberBuild,\n length = options.cells || 12,\n isWeekColumnVisible = options.isWeekColumnVisible,\n cellsPerRow = options.perRow || 4,\n otherMonth = options.otherMonth,\n lastDayOfMonth = options.lastDayOfMonth,\n weekNumber = options.weekNumber || weekNumberTemplate,\n content = options.content || cellTemplate,\n empty = options.empty || emptyCellTemplate,\n otherMonthTemplate = options.otherMonthCellTemplate || otherMonthCellTemplate,\n html = options.html || '
';\n html += this.title(options.date, options.min, options.max);\n html += '
';\n\n if (isWeekColumnVisible) {\n html += weekNumber(weekNumberBuild(start));\n }\n\n\n for (; idx < length; idx++) {\n if (idx > 0 && idx % cellsPerRow === 0) {\n html += '';\n if (isWeekColumnVisible) {\n html += otherMonth || (+start <= +lastDayOfMonth) ? weekNumber(weekNumberBuild(start)) : weekNumber({ weekNumber: \" \" });\n }\n }\n\n start = createDate(start.getFullYear(), start.getMonth(), start.getDate());\n adjustDST(start, 0);\n\n data = build(start, idx, options.disableDates);\n\n html += (data.cssClass.indexOf(OTHERMONTH) !== -1 && !otherMonth) ? otherMonthTemplate(data) : isInRange(start, min, max) ? content(data) : empty(data);\n\n setter(start, 1);\n }\n\n return html + \"
\";\n }\n\n function compare(date1, date2, modifier) {\n var year1 = date1.getFullYear(),\n start = date2.getFullYear(),\n end = start,\n result = 0;\n\n if (modifier) {\n start = start - start % modifier;\n end = start - start % modifier + modifier - 1;\n }\n\n if (year1 > end) {\n result = 1;\n } else if (year1 < start) {\n result = -1;\n }\n\n return result;\n }\n\n function getToday() {\n var today = new DATE();\n return new DATE(today.getFullYear(), today.getMonth(), today.getDate());\n }\n\n function restrictValue(value, min, max) {\n var today = getToday();\n\n if (value) {\n today = new DATE(+value);\n }\n\n if (min > today) {\n today = new DATE(+min);\n } else if (max < today) {\n today = new DATE(+max);\n }\n return today;\n }\n\n function isInRange(date, min, max) {\n return +date >= +min && +date <= +max;\n }\n\n function shiftArray(array, idx) {\n return array.slice(idx).concat(array.slice(0, idx));\n }\n\n function setDate(date, value, multiplier) {\n value = value instanceof DATE ? value.getFullYear() : date.getFullYear() + multiplier * value;\n date.setFullYear(value);\n }\n\n function daysBetweenTwoDates(startDate, endDate) {\n if (+endDate < +startDate) {\n var temp = +startDate;\n calendar.views[0].setDate(startDate, endDate);\n calendar.views[0].setDate(endDate, new Date(temp));\n }\n var fromDateUTC = Date.UTC(startDate.getFullYear(), startDate.getMonth(), startDate.getDate());\n var endDateUTC = Date.UTC(endDate.getFullYear(), endDate.getMonth(), endDate.getDate());\n\n return Math.ceil((+endDateUTC - +fromDateUTC) / kendo.date.MS_PER_DAY);\n }\n\n function addDaysToArray(array, numberOfDays, fromDate, disableDates) {\n for (var i = 0; i <= numberOfDays; i++) {\n var nextDay = new Date(fromDate.getTime());\n nextDay = new Date(nextDay.setDate(nextDay.getDate() + i));\n if (!disableDates(nextDay)) {\n array.push(nextDay);\n }\n }\n }\n\n function mousetoggle(e) {\n var disabled = $(this).hasClass(\"k-disabled\");\n\n if (!disabled) {\n $(this).toggleClass(HOVER, MOUSEENTER.indexOf(e.type) > -1 || e.type == FOCUS);\n }\n }\n\n function prevent(e) {\n e.preventDefault();\n }\n\n // creates date with full year\n function createDate(year, month, date) {\n var dateObject = new DATE(year, month, date);\n dateObject.setFullYear(year, month, date);\n return dateObject;\n }\n\n function getCalendarInfo(culture) {\n return getCulture(culture).calendars.standard;\n }\n\n function normalize(options) {\n var start = views[options.start],\n depth = views[options.depth],\n culture = getCulture(options.culture);\n\n options.format = extractFormat(options.format || culture.calendars.standard.patterns.d);\n\n if (isNaN(start)) {\n start = 0;\n options.start = MONTH;\n }\n\n if (depth === undefined$1 || depth > start) {\n options.depth = MONTH;\n }\n\n if (options.dates === null) {\n options.dates = [];\n }\n }\n\n function addClassToViewContainer(element, currentView) {\n element.addClass(\"k-\" + currentView);\n }\n\n function inArray(date, dates) {\n for (var i = 0, length = dates.length; i < length; i++) {\n if (date === +dates[i]) {\n return true;\n }\n }\n return false;\n }\n\n function isEqualDatePart(value1, value2) {\n if (value1) {\n return value1.getFullYear() === value2.getFullYear() &&\n value1.getMonth() === value2.getMonth() &&\n value1.getDate() === value2.getDate();\n }\n\n return false;\n }\n\n function isEqualMonth(value1, value2) {\n if (value1) {\n return value1.getFullYear() === value2.getFullYear() &&\n value1.getMonth() === value2.getMonth();\n }\n\n return false;\n }\n\n\n function getDisabledExpr(option) {\n if (kendo.isFunction(option)) {\n return option;\n }\n\n if (Array.isArray(option)) {\n return createDisabledExpr(option);\n }\n return $.noop;\n }\n\n function convertDatesArray(dates) {\n var result = [];\n for (var i = 0; i < dates.length; i++) {\n result.push(dates[i].setHours(0, 0, 0, 0));\n }\n return result;\n }\n\n function createDisabledExpr(dates) {\n var callback,\n disabledDates = [],\n days = [\"su\", \"mo\", \"tu\", \"we\", \"th\", \"fr\", \"sa\"];\n\n if (dates[0] instanceof DATE) {\n disabledDates = convertDatesArray(dates);\n callback = function (date) { return !!(date && disabledDates.indexOf((new Date(date)).setHours(0, 0, 0, 0)) > -1); };\n } else {\n disabledDates = dates.map(function (day) {\n day = day.slice(0,2).toLowerCase();\n var index = days.indexOf(day);\n if (index > -1) {\n return index;\n }\n });\n\n callback = function (date) { return !!(date && disabledDates.indexOf((new Date(date)).getDay()) > -1); };\n }\n\n return callback;\n }\n\n function isEqualDate(oldValue, newValue) {\n if (oldValue instanceof Date && newValue instanceof Date) {\n oldValue = oldValue.getTime();\n newValue = newValue.getTime();\n }\n\n return oldValue === newValue;\n }\n\n function toDateObject(link) {\n var value = $(link).attr(kendo.attr(VALUE)).split(\"/\");\n //Safari cannot create correctly date from \"1/1/2090\"\n value = createDate(value[0], value[1], value[2]);\n\n return value;\n }\n\n // Backwards compatibility after CSP changes.\n function executeTemplate(tmpl, data) {\n if (tmpl) {\n if (kendo.isFunction(tmpl)) {\n return tmpl(data);\n }\n return template(tmpl)(data);\n }\n return undefined$1;\n }\n\n calendar.isEqualDatePart = isEqualDatePart;\n calendar.isEqualDate = isEqualDate;\n calendar.restrictValue = restrictValue;\n calendar.isInRange = isInRange;\n calendar.addClassToViewContainer = addClassToViewContainer;\n calendar.normalize = normalize;\n calendar.viewsEnum = views;\n calendar.disabled = getDisabledExpr;\n calendar.toDateObject = toDateObject;\n calendar.getToday = getToday;\n calendar.createDate = createDate;\n\n kendo.calendar = calendar;\n })(window.kendo.jQuery);\n var kendo$1 = kendo;\n\n return kendo$1;\n\n}));\n"]}