{"version":3,"sources":["webpack:///./node_modules/@progress/kendo-ui/js/kendo.scheduler.monthview.js"],"names":["module","exports","modules","installedModules","__webpack_require__","moduleId","id","loaded","call","m","c","p","0","3","Error","1397","1404","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","f","define","apply","undefined","$","kendo","window","ui","SchedulerView","NS","extend","getDate","date","MS_PER_DAY","NUMBER_OF_ROWS","NUMBER_OF_COLUMNS","INVERSE_COLOR_CLASS","DAY_TEMPLATE","template","EVENT_WRAPPER_STRING","EVENT_TEMPLATE","CELL_INNER_SPACING","MORE_BUTTON_TEMPLATE","MonthGroupedView","Class","init","view","this","_view","_verticalRowCountForLevel","level","_rowCountForLevel","_horizontalGroupCountForLevel","_columnCountForLevel","_getCalendarRowsLength","cellsPerRow","cellCount","_createRows","start","startIdx","horizontalGroupCount","verticalGroupIndex","isVerticallyGrouped","_isVerticallyGrouped","html","groupIdx","_createRow","_adjustStartDate","addDays","_getContent","content","startDate","resources","_getTimeSlotByPosition","x","y","groupIndex","group","groups","daySlotByPosition","_nextSlotStartDate","nextDay","_createRowsLayout","rows","groupHeaderTemplate","_createVerticalColumnsLayout","columns","_createColumnsLayout","_verticalGroupCount","_horizontalGroupCount","_columnOffsetForResource","_positionMobileEvent","event","range","rangeCount","end","rangeIndex","endDate","occurrence","clone","head","tail","_createEventElement","_positionEvent","_addDaySlotCollections","groupCount","tableRows","columnCount","rowCount","rowMultiplier","rowIndex","collection","addDaySlotCollection","tableRow","cells","children","cellMultiplier","setAttribute","cellIndex","cell","addDaySlot","_changePeriodGroupIndex","reverse","length","_createResizeHint","left","startSlot","offsetLeft","top","offsetTop","width","innerWidth","height","clientHeight","hint","fn","_appendResizeHint","_createMoveHint","endSlot","css","firstChildHeight","options","eventHeight","index","addClass","inverseColor","_appendMoveHint","MonthGroupedByDateView","dateIdx","verticalStart","Date","_groupCount","isLastRow","cellIdx","_createDateLayout","resource","configuration","data","dataSource","dataIndex","value","getter","dataValueField","obj","text","htmlEncode","dataTextField","color","dataColorField","field","title","name","className","slice","push","subColumns","startIndex","endIndex","i","currentSlot","_slots","dateRange","daySlotRanges","dateIndex","currentTableIndex","currentCellIndex","currentGroupIndex","_daySlotCollections","vertical","selectionGroupIndex","offsetWidth","offsetHeight","slotIdx","slot","shiftArray","array","idx","concat","firstVisibleMonthDay","calendarInfo","firstDay","firstVisibleDay","getFullYear","getMonth","getHours","getMinutes","getSeconds","getMilliseconds","getDay","setTime","isInDateRange","min","max","msValue","msMin","msMax","scheduler","MonthView","element","that","eventsPerDay","moreButtonHeight","adaptiveSlotHeight","_groupedView","_getGroupedView","isGroupedByDate","_isGroupedByDate","_templates","_editable","_renderLayout","_groups","_updateDirection","selection","ranges","multiple","updateDirection","isSameSlot","isSameCollection","collectionIndex","backward","_changeDate","previous","collections","_getCollections","daySlotCollectionCount","slotIndex","_getNextHorizontalRange","method","horizontalRange","isVertical","_getNextVerticalRange","verticalRange","_changeViewPeriod","newStart","newEnd","pad","_isInRange","events","_continuousSlot","continuousSlot","_changeGroupContinuously","lastGroupIndex","_normalizeHorizontalSelection","_normalizeVerticalSelection","settings","Template","templateSettings","eventTemplate","_eventTmpl","dayTemplate","dateForTitle","format","selectedDateFormat","_firstDayOfMonth","_lastDayOfMonth","shortDateForTitle","selectedShortDateFormat","mobileDateForTitle","selectedMobileDateFormat","nextDate","previousDate","previousDay","_startDate","_endDate","firstDayOfMonth","lastDayOfMonth","createLayout","_layout","_content","_initSlotHeight","refreshLayout","_isVirtualized","_tryRenderContent","on","e","offset","currentTarget","_slotByPosition","preventDefault","trigger","_footer","editable","_isMobile","_touchEditable","_mouseEditable","uid","closest","attr","create","resourceInfo","_resourceBySlot","eventInfo","isAllDay","update","threshold","support","mobileOS","android","_addUserEvents","UserEvents","useClickAsTap","browser","edge","filter","tap","_scrolling","target","selectionByElement","columnLevel","columnLevels","rowLevel","rowLevels","verticalGroupCount","groupedView","groupedResources","verticalGroupIdx","_createCalendar","_cachedGroupIndex","find","_virtualContent","append","_calcSlotHeight","dateHeader","eventSpacing","firstCell","firstChild","Math","round","rowHeight","isMobile","table","_adjustSlotHeight","_canAdjustSlotHeight","weeks","forEach","week","_events","eventIndex","slots","firstSlot","weekOffsetTop","weekHeight","eventMeta","actualEventCount","meta","adjSlot","adjMeta","indexOf","dirty","sort","first","second","order","slotHeight","firstChildTop","style","more","parentNode","bind","weekStartDates","_slotIndices","calendarRowsLength","rowIdx","_weekStartDates","classes","isToday","getTime","weekDayNames","days","namesShort","map","names","inner","showDelete","destroy","resizable","resize","ns","eventResources","messages","angular","elements","dataItem","_isInDateSlot","slotStart","slotEnd","lastSlot","startTime","toUtcTime","endTime","_slotIndex","slotRange","eventCount","collidingEvents","createRows","at","container","appendChild","addEvent","_continuousEvents","rightOffset","rowEvents","eventTop","j","eventLength","clientWidth","parseInt","appendTo","_inverseEventColor","_collectionIndex","_startSlotIndex","_startSlot","outerHeight","scrollTop","scrollLeft","ceil","_resizeHint","add","_updateResizeHint","_removeResizeHint","toString","timezone","toLocalDate","last","_updateMoveHint","distance","duration","_removeMoveHint","_moveHint","getElementsByTagName","_addResourceView","MS_PER_HOUR","render","remove","_cachedEvents","Query","dir","toArray","_renderGroups","_renderEvents","slotRanges","rangeStart","rangeEnd","setDate","middle","parentValue","item","itemParentValue","dataParentValueField","itemIdx","_resourceValue","tmp","operator","groupEqFilter","removeClass","off","jQuery"],"mappings":"6GAAAA,EAAOC,QACE,SAAUC,GAET,IAAIC,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUJ,QAGnC,IAAID,EAASG,EAAiBE,GAAY,CACzCJ,QAAS,GACTK,GAAID,EACJE,QAAQ,GAUT,OANAL,EAAQG,GAAUG,KAAKR,EAAOC,QAASD,EAAQA,EAAOC,QAASG,GAG/DJ,EAAOO,QAAS,EAGTP,EAAOC,QAcf,OATAG,EAAoBK,EAAIP,EAGxBE,EAAoBM,EAAIP,EAGxBC,EAAoBO,EAAI,GAGjBP,EAAoB,GAvC5B,CA0CC,CAEJQ,EACA,SAAUZ,EAAQC,EAASG,GAEhCJ,EAAOC,QAAUG,EAAoB,OAKhCS,EACA,SAAUb,EAAQC,GAEvBD,EAAOC,QAAU,WAAa,MAAM,IAAIa,MAAM,oCAKzCC,KACA,SAAUf,EAAQC,GAEvBD,EAAOC,QAAU,EAAQ,SAIpBe,KACA,SAAUhB,EAAQC,EAASG,GAEhC,IAAIa,EAAgCC,EAA8BC,GAA8B,SAAUC,EAAGC,GACvGH,EAA+B,CAAEd,EAAoB,OAASa,EAAiC,EAAKE,EAA2E,oBAAnCF,EAAiDA,EAA+BK,MAAMrB,EAASiB,GAAiCD,OAAmEM,IAAlCJ,IAAgDnB,EAAOC,QAAUkB,IADpR,EAE7F,WA0tDH,OA/sDA,SAAUK,GACN,IAAIC,EAAQC,OAAOD,MACfE,EAAKF,EAAME,GACXC,EAAgBD,EAAGC,cACnBC,EAAK,kBACLC,EAASN,EAAEM,OACXC,EAAUN,EAAMO,KAAKD,QACrBE,EAAaR,EAAMO,KAAKC,WACxBC,EAAiB,EACjBC,EAAoB,EACpBC,EAAsB,kBACtBC,EAAeZ,EAAMa,SAAS,uEAC9BC,EAAuB,u+BAkCvBC,EAAiBf,EAAMa,SAAS,oGAIhCG,EAAqB,EAErBC,EAAuBjB,EAAMa,SAC7B,mJAGAK,EAAmBlB,EAAMmB,MAAMd,OAAO,CACtCe,KAAM,SAASC,GACXC,KAAKC,MAAQF,GAGjBG,0BAA2B,SAASC,GAChC,IAAIJ,EAAOC,KAAKC,MAEhB,OAAOF,EAAKK,kBAAkBD,IAGlCE,8BAA+B,SAASF,GACpC,IAAIJ,EAAOC,KAAKC,MAEhB,OAAOF,EAAKO,qBAAqBH,IAGrCI,uBAAwB,SAASC,EAAaC,GAC1C,OAAOA,EAAYD,GAGvBE,YAAa,SAASC,EAAOC,EAAUC,EAAsBC,GAMzD,IALA,IAAIf,EAAOC,KAAKC,MACZO,EAAcpB,EACd2B,EAAsBhB,EAAKiB,uBAC3BC,EAAO,GAEFC,EAAW,EAAGA,EAAWL,EAAsBK,IACpDD,GAAQlB,EAAKoB,WAAWR,EAAOC,EAAUJ,EAAaO,EAAsBD,EAAqBI,GAGrG,OAAOD,GAGXG,iBAAkB,SAAST,GACvB,OAAOjC,EAAMO,KAAKoC,QAAQV,EAAOvB,IAGrCkC,YAAa,SAASC,EAASC,EAAWC,GACtC,OAAOF,EAAQ,CAAEtC,KAAMuC,EAAWC,UAAWA,KAGjDC,uBAAwB,SAASC,EAAGC,EAAGC,GACnC,IAAIC,EAAQ9B,KAAKC,MAAM8B,OAAOF,GAE9B,OAAOC,EAAME,kBAAkBL,EAAGC,IAGtCK,mBAAoB,SAAST,GACzB,OAAO9C,EAAMO,KAAKiD,QAAQV,IAG9BW,kBAAmB,SAASV,EAAWW,EAAMC,GACzC,IAAItC,EAAOC,KAAKC,MAEhB,OAAOF,EAAKoC,kBAAkBV,EAAWW,EAAMC,IAGnDC,6BAA8B,SAASb,EAAWW,EAAMC,EAAqBE,GAEzE,OAAOA,GAGXC,qBAAsB,SAASf,EAAWc,EAASF,GAC/C,IAAItC,EAAOC,KAAKC,MAEhB,OAAOF,EAAKyC,qBAAqBf,EAAWc,EAASF,IAGzDI,oBAAqB,SAAStC,GAC1B,IAAIJ,EAAOC,KAAKC,MAEhB,OAAOF,EAAKK,kBAAkBD,IAGlCuC,sBAAuB,SAASvC,GAC5B,IAAIJ,EAAOC,KAAKC,MAEhB,OAAOF,EAAKO,qBAAqBH,GAASJ,EAAK4C,yBAAyBxC,IAG5EyC,qBAAsB,SAASC,EAAOf,EAAOgB,EAAOC,EAAYpC,EAAOqC,EAAKC,GACxE,IAAIlD,EAAOC,KAAKC,MAEZ8C,EAAa,IACM,IAAfE,EACAD,EAAMF,EAAME,IAAIE,UACTD,GAAcF,EAAa,EAClCpC,EAAQmC,EAAMnC,MAAMa,aAEpBb,EAAQmC,EAAMnC,MAAMa,YACpBwB,EAAMF,EAAME,IAAIE,YAIxB,IAAIC,EAAaN,EAAMO,MAAM,CAAEzC,MAAOA,EAAOqC,IAAKA,EAAKK,KAAMP,EAAMO,KAAMC,KAAMR,EAAMQ,OAErFvD,EAAK6C,qBAAqBE,EAAO/C,EAAKwD,oBAAoBJ,GAAarB,IAG3E0B,eAAgB,SAASX,EAAOf,EAAOgB,EAAOC,EAAYpC,EAAOqC,EAAKC,GAClE,IAAIlD,EAAOC,KAAKC,MAEZ8C,EAAa,IACM,IAAfE,EACAD,EAAMF,EAAME,IAAIE,UACTD,GAAcF,EAAa,EAClCpC,EAAQmC,EAAMnC,MAAMa,aAEpBb,EAAQmC,EAAMnC,MAAMa,YACpBwB,EAAMF,EAAME,IAAIE,YAIxB,IAAIC,EAAaN,EAAMO,MAAM,CAAEzC,MAAOA,EAAOqC,IAAKA,EAAKK,KAAMP,EAAMO,KAAMC,KAAMR,EAAMQ,OAErFvD,EAAKyD,eAAeV,EAAO/C,EAAKwD,oBAAoBJ,GAAarB,IAGrE2B,uBAAwB,SAASC,EAAYC,EAAWnC,GAKpD,IAJA,IAAIzB,EAAOC,KAAKC,MACZ2D,EAAcxE,EACdyE,EAAW1E,EAEN0C,EAAa,EAAGA,EAAa6B,EAAY7B,IAAc,CAC5D,IAAIpB,EAAY,EACZqD,EAAgB,EAEhB/D,EAAKiB,yBACL8C,EAAgBjC,GAGpB,IAAK,IAAIkC,EAAWD,EAAgBD,EAAUE,GAAYD,EAAgB,GAAKD,EAAUE,IAAY,CACjG,IAAIjC,EAAQ/B,EAAKgC,OAAOF,GACpBmC,EAAalC,EAAMmC,qBAAqBvF,EAAMO,KAAKoC,QAAQG,EAAWf,GAAY/B,EAAMO,KAAKoC,QAAQG,EAAWf,EAAYmD,IAE5HM,EAAWP,EAAUI,GACrBI,EAAQD,EAASE,SACjBC,EAAiB,EAErBH,EAASI,aAAa,OAAQ,OAEzBvE,EAAKiB,yBACNqD,EAAiBxC,GAGrB,IAAK,IAAI0C,EAAYF,EAAiBT,EAAaW,GAAaF,EAAiB,GAAKT,EAAaW,IAAa,CAC5G,IAAIC,EAAOL,EAAMI,GAEjBxE,EAAK0E,WAAWT,EAAYQ,EAAMhD,EAAWf,GAC7CA,QAMhBiE,wBAAyB,SAASC,GAC9B,IAAI5E,EAAOC,KAAKC,MAEhB,OAAO0E,EAAU5E,EAAKgC,OAAO6C,OAAS,EAAI,GAG9CC,kBAAmB,SAAS/B,GACxB,IAAI/C,EAAOC,KAAKC,MACZ6E,EAAOhC,EAAMiC,YAAYC,WACzBC,EAAMnC,EAAMnC,MAAMuE,UAClBC,EAAQrC,EAAMsC,aACdC,EAASvC,EAAMnC,MAAM2E,aAAe,EACpCC,EAAO1G,EAAc2G,GAAGX,kBAAkBpH,KAAKsC,EAAM+E,EAAMG,EAAKE,EAAOE,GAE3EtF,EAAK0F,kBAAkBF,IAG3BG,gBAAiB,SAAS5C,EAAOD,GAC7B,IAAI9C,EAAOC,KAAKC,MACZ8E,EAAYjC,EAAMiC,YAClBY,EAAU7C,EAAM6C,UAChBJ,EAAOxF,EAAKwD,oBAAoBV,EAAMO,MAAM,CAAEC,KAAMP,EAAMO,KAAMC,KAAMR,EAAMQ,QAEhFiC,EAAKK,IAAI,CACLd,KAAMC,EAAUC,WAAa,EAC7BC,IAAKF,EAAUG,UAAYH,EAAUc,iBACrCR,OAAsC,SAA7BtF,EAAK+F,QAAQC,YAA0B,GAAKhG,EAAK+F,QAAQC,YAClEZ,MAAOrC,EAAMsC,cAAgBL,EAAUiB,QAAUL,EAAQK,MAAQ,EAAI,KAGzET,EAAKU,SAAS,qBAEVpD,EAAMqD,cACNX,EAAKU,SAAS5G,GAGlBU,EAAKoG,gBAAgBZ,MAIzBa,EAAyB1H,EAAMmB,MAAMd,OAAO,CAC5Ce,KAAM,SAASC,GACXC,KAAKC,MAAQF,GAGjBG,0BAA2B,WACvB,OAAO,GAGXG,8BAA+B,SAASF,GACpC,IAAIJ,EAAOC,KAAKC,MAEhB,OAAOF,EAAKO,qBAAqBH,EAAQ,GAAKf,GAGlDsB,YAAa,SAASC,EAAOC,EAAUC,GACnC,IAAId,EAAOC,KAAKC,MACZO,EAAcpB,EACd2B,EAAsBhB,EAAKiB,uBAC3BC,EAAO,GACPoF,EAAU,EAEd,GAAItF,EAAqB,CACrB,IAAIuF,EAAgB,IAAIC,KAAK5F,GACzB+C,EAAa3D,EAAKyG,cACtB,IAAKH,EAASA,EAAUlH,EAAgBkH,IACpCpF,GAAQlB,EAAKoB,WAAWmF,EAAe1F,EAAU8C,EAAY2C,GAE7DC,EAAgB5H,EAAMO,KAAKoC,QAAQiF,EAAe9F,GAEtDG,EAAQjC,EAAMO,KAAKiD,QAAQvB,OACxB,CACH,IAAK0F,EAASA,EAAU7F,EAAa6F,IACjCpF,GAAQlB,EAAKoB,WAAWR,EAAOC,EAAUC,EAAsBwF,GAC/D1F,EAAQjC,EAAMO,KAAKiD,QAAQvB,GAE/BA,EAAQjC,EAAMO,KAAKoC,QAAQV,EAAOH,GAGtC,OAAOS,GAGXG,iBAAkB,SAAST,EAAO8F,GAC9B,IAAI1G,EAAOC,KAAKC,MACZc,EAAsBhB,EAAKiB,uBAE/B,OAAID,EACI0F,EACO/H,EAAMO,KAAKoC,QAAQV,EAAOvB,GAAqBD,EAAiB,GAAK,GAErET,EAAMO,KAAKiD,QAAQvB,GAI3BjC,EAAMO,KAAKoC,QAAQV,EAAOvB,IAGrCkC,YAAa,SAASC,EAASC,EAAWC,EAAWiF,GACjD,OAAgB,IAAZA,EACOnF,EAAQ,CAAEtC,KAAMuC,EAAWC,UAAWA,IAE1C,IAGXC,uBAAwB,SAASC,EAAGC,EAAGC,GACnC,IAAIC,EAAQ9B,KAAKC,MAAM8B,OAAOF,GAE9B,OAAOC,EAAME,kBAAkBL,EAAGC,GAAG,IAGzCK,mBAAoB,SAAST,GACzB,OAAOA,GAGXjB,uBAAwB,WACpB,IAAIR,EAAOC,KAAKC,MACZc,EAAsBhB,EAAKiB,uBAE/B,OAAOD,EAAsB3B,EAAoBD,GAGrDgD,kBAAmB,SAASV,EAAWW,EAAMC,EAAqBE,GAC9D,IAAIxC,EAAOC,KAAKC,MAEhB,OAAOF,EAAK4G,kBAAkBpE,EAAS,MAAM,IAGjDD,6BAA8B,SAASb,EAAWW,EAAMC,GAMpD,IALA,IAAItC,EAAOC,KAAKC,MACZ2G,EAAWnF,EAAU,GACrBoF,EAAgB,GAChBC,EAAOF,EAASG,WAAWhH,OAEtBiH,EAAY,EAAGA,EAAYF,EAAKlC,OAASzF,EAAgB6H,IAAa,CAC3E,IAAIC,EAAQvI,EAAMwI,OAAON,EAASO,eAAtBzI,CAAsCoI,EAAKE,EAAYF,EAAKlC,SACpEwC,EAAM,CACNC,KAAMhF,EAAoB,CACtBgF,KAAM3I,EAAM4I,WAAW5I,EAAMwI,OAAON,EAASW,cAAtB7I,CAAqCoI,EAAKE,EAAYF,EAAKlC,UAClF4C,MAAO9I,EAAMwI,OAAON,EAASa,eAAtB/I,CAAsCoI,EAAKE,EAAYF,EAAKlC,SACnE8C,MAAOd,EAASc,MAChBC,MAAOf,EAASe,MAChBC,KAAMhB,EAASgB,KACfX,MAAOA,IAEXY,UAAW,cACXZ,MAAOA,GAGXG,EAAI7E,QAAUxC,EAAKyC,qBAAqBf,EAAUqG,MAAM,GAAI,KAAMzF,EAAqB,KAAM,KAAM4E,GAEnGJ,EAAckB,KAAKX,GAGvB,OAAOP,GAGXrE,qBAAsB,SAASf,EAAWc,EAASF,EAAqB2F,GACpE,IAAIjI,EAAOC,KAAKC,MAEhB,OAAOF,EAAKyC,qBAAqBf,EAAWc,EAASF,EAAqB2F,GAAY,IAG1FvF,oBAAqB,SAAStC,GAC1B,IAAIJ,EAAOC,KAAKC,MAEhB,OAAOF,EAAKO,qBAAqBH,GAAShB,GAG9CuD,sBAAuB,SAASvC,GAC5B,IAAIJ,EAAOC,KAAKC,MAChB,OAAOF,EAAKO,qBAAqBH,GAASf,GAG9CwD,qBAAsB,SAASC,EAAOf,EAAOgB,EAAOC,EAAYpC,EAAOqC,GAKnE,IAJA,IAAIjD,EAAOC,KAAKC,MACZgI,EAAanF,EAAMnC,MAAMqF,MACzBkC,EAAWpF,EAAME,IAAIgD,MAEhBmC,EAAIrF,EAAMnC,MAAMqF,MAAOmC,GAAKrF,EAAME,IAAIgD,MAAOmC,IAAK,CACvD,IAAIC,EAActF,EAAMkB,WAAWqE,OAAOF,GACtCG,EAAYxG,EAAMyG,cAAcH,EAAYzH,MAAOyH,EAAYzH,OAAO,GAAM,GAE5EwC,EAAaN,EAAMO,MAAM,CACzBzC,MAAOwH,IAAMF,EAAatH,EAAOyH,EAAY5G,YAC7CwB,IAAKmF,IAAMD,EAAWlF,EAAMoF,EAAYlF,UACxCG,KAAM8E,IAAMD,GAAYpF,EAAMO,KAC9BC,KAAM6E,IAAMF,GAAcnF,EAAMQ,OAEpCvD,EAAK6C,qBAAqB0F,EAAWvI,EAAKwD,oBAAoBJ,GAAarB,KAInF0B,eAAgB,SAASX,EAAOf,EAAOgB,EAAOC,EAAYpC,EAAOqC,GAK7D,IAJA,IAAIjD,EAAOC,KAAKC,MACZgI,EAAanF,EAAMnC,MAAMqF,MACzBkC,EAAWpF,EAAME,IAAIgD,MAEhBmC,EAAIrF,EAAMnC,MAAMqF,MAAOmC,GAAKrF,EAAME,IAAIgD,MAAOmC,IAAK,CACvD,IAAIC,EAActF,EAAMkB,WAAWqE,OAAOF,GACtCG,EAAYxG,EAAMyG,cAAcH,EAAYzH,MAAOyH,EAAYzH,OAAO,GAAM,GAE5EwC,EAAaN,EAAMO,MAAM,CACzBzC,MAAOwH,IAAMF,EAAatH,EAAOyH,EAAY5G,YAC7CwB,IAAKmF,IAAMD,EAAWlF,EAAMoF,EAAYlF,UACxCG,KAAM8E,IAAMD,GAAYpF,EAAMO,KAC9BC,KAAM6E,IAAMF,GAAcnF,EAAMQ,OAEpCvD,EAAKyD,eAAe8E,EAAWvI,EAAKwD,oBAAoBJ,GAAarB,KAI7E2B,uBAAwB,SAASC,EAAYC,EAAWnC,GAMpD,IALA,IAAIzB,EAAOC,KAAKC,MACZ2D,EAAcxE,EACdyE,EAAW1E,EACX4B,EAAsBhB,EAAKiB,uBAEtBwH,EAAY,EAAGA,EAAY5E,EAAa4E,IAC7C,IAAK,IAAIzE,EAAW,EAAGA,EAAWF,EAAUE,IAAY,CACpD,IAAIlC,EAAa,EACb4G,EAAoB1H,EAAsByH,EAAYzE,EACtDG,EAAWP,EAAU8E,GACrBtE,EAAQD,EAASE,SACjBC,EAAiB,EAErBH,EAASI,aAAa,OAAQ,OAEzBvE,EAAKiB,yBACNqD,EAAiBmE,GAGrB,IAAK,IAAIjE,EAAYF,EAAiBX,EAAYa,GAAaF,EAAiB,GAAKX,EAAYa,IAAa,CAC1G,IAKIP,EALAvD,EAAasD,EAAWH,EAAe4E,EACvCE,EAAmB3H,EAAsBwD,EAAaR,EAAWL,EAAca,EAC/EC,EAAOL,EAAMuE,GACbC,EAAoB5H,EAAsBwD,EAAY1C,EACtDC,EAAQ/B,EAAKgC,OAAO4G,GAGpB3E,EADc,IAAdwE,EACa1G,EAAMmC,qBAAqBvF,EAAMO,KAAKoC,QAAQG,EAAWf,GAAY/B,EAAMO,KAAKoC,QAAQG,EAAWf,EAAYmD,IAE/G9B,EAAM8G,oBAAoB7E,GAG3ChE,EAAK0E,WAAWT,EAAYQ,EAAMhD,EAAWf,GAC7CoB,OAMhB6C,wBAAyB,SAASC,EAASkE,EAAUC,GACjD,IAAI/I,EAAOC,KAAKC,MAEhB,OAAI4I,GAAY9I,EAAKiB,uBACV2D,EAAU5E,EAAKgC,OAAO6C,OAAS,EAAI,EAGvCkE,GAGXjE,kBAAmB,SAAS/B,GACxB,IACIgC,EAAMG,EAAKE,EAAOE,EAAQE,EAD1BxF,EAAOC,KAAKC,MAGhB,GAAIF,EAAKiB,uBACT8D,EAAOhC,EAAMiC,YAAYC,WACzBC,EAAMnC,EAAMnC,MAAMuE,UAClBC,EAAQrC,EAAMiC,YAAYgE,YAC1B1D,EAASvC,EAAM6C,UAAUT,UAAYpC,EAAMiC,YAAYiE,aAAelG,EAAMiC,YAAYG,UAAY,EACpGK,EAAO1G,EAAc2G,GAAGX,kBAAkBpH,KAAKsC,EAAM+E,EAAMG,EAAKE,EAAOE,GAEvEtF,EAAK0F,kBAAkBF,QAEnB,IAAK,IAAI0D,EAAUnG,EAAMiC,YAAYiB,MAAOiD,GAAWnG,EAAM6C,UAAUK,MAAOiD,IAAW,CACrF,IAAIC,EAAOpG,EAAMkB,WAAWqE,OAAOY,GACnCnE,EAAOoE,EAAKlE,WACZC,EAAMiE,EAAKhE,UACXC,EAAQ+D,EAAKH,YACb1D,EAAS6D,EAAKF,aAAe,EAC7BzD,EAAO1G,EAAc2G,GAAGX,kBAAkBpH,KAAKsC,EAAM+E,EAAMG,EAAKE,EAAOE,GAEvEtF,EAAK0F,kBAAkBF,KAKnCG,gBAAiB,SAAS5C,EAAOD,GAK7B,IAJA,IAAI9C,EAAOC,KAAKC,MACZ8E,EAAYjC,EAAMiC,YAClBY,EAAU7C,EAAM6C,UAEXsD,EAAUlE,EAAUiB,MAAOiD,GAAWtD,EAAQK,MAAOiD,IAAW,CACrE,IAAIC,EAAOpG,EAAMkB,WAAWqE,OAAOY,GAC/B1D,EAAOxF,EAAKwD,oBAAoBV,EAAMO,MAAM,CAAEC,KAAMP,EAAMO,KAAMC,KAAMR,EAAMQ,QAEhFiC,EAAKK,IAAI,CACLd,KAAMoE,EAAKlE,WACXC,IAAKiE,EAAKhE,UAAYgE,EAAKrD,iBAC3BR,OAAsC,SAA7BtF,EAAK+F,QAAQC,YAA0B,GAAKhG,EAAK+F,QAAQC,YAClEZ,MAAO+D,EAAKH,YAAc,IAG9BxD,EAAKU,SAAS,qBAEVpD,EAAMqD,cACNX,EAAKU,SAAS5G,GAGlBU,EAAKoG,gBAAgBZ,OA4qCjC,SAAS4D,EAAWC,EAAOC,GACvB,OAAOD,EAAMtB,MAAMuB,GAAKC,OAAOF,EAAMtB,MAAM,EAAGuB,IAGlD,SAASE,EAAqBtK,EAAMuK,GAChC,IAAIC,EAAWD,EAAaC,SACxBC,EAAkB,IAAInD,KAAKtH,EAAK0K,cAAe1K,EAAK2K,WAAY,EAAG3K,EAAK4K,WAAY5K,EAAK6K,aAAc7K,EAAK8K,aAAc9K,EAAK+K,mBAEnI,MAAON,EAAgBO,UAAYR,EAC/B/K,EAAMO,KAAKiL,QAAQR,GAAkB,EAAIxK,GAG7C,OAAOwK,EAGX,SAASS,EAAclD,EAAOmD,EAAKC,GAC/B,IAEIC,EAFAC,EAAQH,EACRI,EAAQH,EAKZ,OAFAC,EAAUrD,EAEHqD,GAAWC,GAASD,GAAWE,EA7rC1C9L,EAAME,GAAG6L,UAAU7K,iBAAmBA,EACtClB,EAAME,GAAG6L,UAAUrE,uBAAyBA,EAE5CxH,EAAG8L,UAAY7L,EAAcE,OAAO,CAChCe,KAAM,SAAS6K,EAAS7E,GACpB,IAAI8E,EAAO5K,KAGkB,IAAzB8F,EAAQ+E,eACR/E,EAAQ+E,aAAe,GAIC,IAAxB/E,EAAQC,cACRD,EAAQC,YAAc,GAIO,IAA7BD,EAAQgF,mBACRhF,EAAQgF,iBAAmB,GAII,kBAAxBhF,EAAQC,aAAoD,SAAxBD,EAAQC,cACnDD,EAAQC,YAAc,IAIE,SAAxBD,EAAQC,cACRD,EAAQiF,oBAAqB,GAGjClM,EAAc2G,GAAG1F,KAAKrC,KAAKmN,EAAMD,EAAS7E,GAC1C8E,EAAKI,aAAeJ,EAAKK,kBAGzB,IAAIC,EAAkBlL,KAAKmL,mBACvBJ,EAAqB/K,KAAK8F,QAAQiF,mBAClChF,EAAc/F,KAAK8F,QAAQC,YAE/B,IAAwB,IAApBmF,IAAmD,IAAvBH,EAC5B,MAAM,IAAIhN,MAAM,iEAGpB,IAAwB,IAApBmN,GAA4C,SAAhBnF,EAC5B,MAAM,IAAIhI,MAAM,8DAGpB6M,EAAKjD,MAAQiD,EAAK9E,QAAQ6B,MAE1BiD,EAAKQ,aAELR,EAAKS,YAELT,EAAKU,cAAcV,EAAK9E,QAAQ7G,MAEhC2L,EAAKW,WAGT3D,KAAM,QAENqD,gBAAiB,WACb,OAAIjL,KAAKmL,mBACE,IAAIzM,EAAME,GAAG6L,UAAUrE,uBAAuBpG,MAE9C,IAAItB,EAAME,GAAG6L,UAAU7K,iBAAiBI,OAIvDwL,iBAAkB,SAASC,EAAWC,EAAQC,EAAUhH,EAASkE,GAC7D,GAAI8C,EAAU,CACV,IAIIC,EAJA7G,EAAY2G,EAAO,GAAG/K,MACtBgF,EAAU+F,EAAOA,EAAO9G,OAAS,GAAG5B,IACpC6I,EAAa9G,EAAUiB,QAAUL,EAAQK,MACzC8F,EAAmB/G,EAAUgH,kBAAoBpG,EAAQoG,gBAIzDH,EADA/C,EACmBgD,GAAcC,GAAqBA,EAEpCD,GAAcC,EAGhCF,IACAH,EAAUO,SAAWrH,KAKjCsH,YAAa,SAASR,EAAWvC,EAAMgD,GACnC,IACIC,EAAanG,EADblE,EAAQ9B,KAAK+B,OAAO0J,EAAU5J,YAGlC,GAAIqK,GAIA,GAHAC,EAAcrK,EAAMsK,gBAAgBtK,EAAMuK,0BAC1CrG,EAAQkD,EAAK6C,gBAAkB,EAE3B/F,GAAS,EACT,OAAQmG,EAAYnG,GAAOqC,OAAO8D,EAAYnG,GAAOqC,OAAOzD,OAAS,OAEtE,CACHuH,EAAcrK,EAAMsK,gBAAgBtK,EAAMuK,0BAC1CrG,EAAQkD,EAAK6C,gBAAkB,EAC/B,IAAIO,EAAY,EAEhB,GAAIH,EAAYnG,IAAUmG,EAAYnG,GAAOqC,OAAOiE,GAChD,OAAQH,EAAYnG,GAAOqC,OAAOiE,KAK9CC,wBAAyB,SAASzK,EAAO0K,EAAQC,GAC7C,IAAIC,EAAa1M,KAAKgB,uBAKtB,OAHAyL,EAAgB1H,UAAYjD,EAAM0K,GAAQC,EAAgB1H,UAAW2H,GACrED,EAAgB9G,QAAU7D,EAAM0K,GAAQC,EAAgB9G,QAAS+G,GAE1DD,GAGXE,sBAAuB,SAAS7K,EAAO0K,EAAQI,EAAejB,GAC1D,IAAIe,EAAa1M,KAAKgB,wBAA0BhB,KAAKmL,mBAKrD,OAHAyB,EAAc7H,UAAYjD,EAAM0K,GAAQI,EAAc7H,UAAW4G,EAAUe,GAC3EE,EAAcjH,QAAU7D,EAAM0K,GAAQI,EAAcjH,QAASgG,EAAUe,GAEhEE,GAGXC,kBAAmB,SAASpB,EAAW9G,EAASkE,GAC5C,IACIiE,EAAUC,EADVC,EAAMnE,EAAW,EAAI,EAUzB,OAPIlE,IACAqI,IAAQ,GAGZF,EAAYpO,EAAMO,KAAKoC,QAAQoK,EAAU9K,MAAOqM,GAChDD,EAASrO,EAAMO,KAAKoC,QAAQoK,EAAUzI,IAAKgK,IAEvChN,KAAKiN,WAAWH,EAAUC,KAI9BtB,EAAU9K,MAAQmM,EAClBrB,EAAUzI,IAAM+J,IAEXlE,GAAaA,GAAY7I,KAAKgB,0BAC/ByK,EAAU5J,WAAa7B,KAAKgL,aAAatG,wBAAwBC,EAASkE,EAAU4C,EAAU5J,aAGlG4J,EAAUyB,OAAS,IAEZ,IAGXC,gBAAiB,SAAS1B,EAAWC,EAAQ/G,GACzC,IAAIqB,EAAQyF,EAAUO,SAAW,EAAIN,EAAO9G,OAAS,EACjD9C,EAAQ9B,KAAK+B,OAAO0J,EAAU5J,YAElC,OAAOC,EAAMsL,eAAe1B,EAAO1F,GAAOrF,MAAOgE,IAGrD0I,yBAA0B,SAAS5B,EAAW2B,EAAgBzB,EAAUhH,GACpE,IAAKgH,EAAU,CACX,IAAI9J,EAAa4J,EAAU5J,WACvByL,EAAiBtN,KAAK+B,OAAO6C,OAAS,EACtCiE,EAAW7I,KAAKgB,uBAChBc,EAAQ9B,KAAK+B,OAAOF,IAEnBuL,GAAkBvE,GAEnBuE,EAAiBtL,EAAM6C,EAAU,WAAa,eAE9C9C,GAAe8C,GAAW,EAAI,GAEvByI,IAAmBvE,IAC1BhH,EAAa8C,EAAU2I,EAAiB,IAGxCzL,EAAa,GAAKA,EAAayL,KAC/BzL,EAAa8C,EAAU2I,EAAiB,EACxCF,EAAiB,MAGrB3B,EAAU5J,WAAaA,EAG3B,OAAOuL,GAGXG,8BAA+B,SAAS9B,EAAWC,EAAQ/G,GACvD,IAAIuE,EAQJ,OALIA,EADAvE,EACO+G,EAAO,GAAG/K,MAEV+K,EAAOA,EAAO9G,OAAS,GAAG5B,IAG9BkG,GAGXsE,4BAA6B,SAAS/B,EAAWC,GAC7C,IAAIxC,EAQJ,OALIA,EADAuC,EAAUO,SACHN,EAAO,GAAG/K,MAEV+K,EAAOA,EAAO9G,OAAS,GAAG5B,IAG9BkG,GAGXkC,WAAY,WACR,IAAItF,EAAU9F,KAAK8F,QACf2H,EAAW1O,EAAO,GAAIL,EAAMgP,SAAU5H,EAAQ6H,kBAElD3N,KAAK4N,cAAgB5N,KAAK6N,WAAW/H,EAAQ8H,cAAepO,GAC5DQ,KAAK8N,YAAcpP,EAAMa,SAASuG,EAAQgI,YAAaL,GACvDzN,KAAKqC,oBAAsB3D,EAAMa,SAASuG,EAAQzD,oBAAqBoL,IAG3EM,aAAc,WACV,OAAOrP,EAAMsP,OAAOhO,KAAK8F,QAAQmI,mBAAoBjO,KAAKkO,iBAAkBlO,KAAKmO,kBAGrFC,kBAAmB,WACf,OAAO1P,EAAMsP,OAAOhO,KAAK8F,QAAQuI,wBAAyBrO,KAAKkO,iBAAkBlO,KAAKmO,kBAG1FG,mBAAoB,WAChB,OAAO5P,EAAMsP,OAAOhO,KAAK8F,QAAQyI,yBAA0BvO,KAAKkO,iBAAkBlO,KAAKmO,kBAG3FK,SAAU,WACN,OAAO9P,EAAMO,KAAKiD,QAAQlC,KAAKmO,kBAGnCM,aAAc,WACV,OAAO/P,EAAMO,KAAKyP,YAAY1O,KAAKkO,mBAGvC1M,UAAW,WACP,OAAOxB,KAAK2O,YAGhBzL,QAAS,WACL,OAAOlD,KAAK4O,UAGhBtD,cAAe,SAASrM,GACpB,IAAI2L,EAAO5K,KAEXA,KAAKkO,iBAAmBxP,EAAMO,KAAK4P,gBAAgB5P,GAEnDe,KAAKmO,gBAAkBzP,EAAMO,KAAK6P,eAAe7P,GAEjDe,KAAK2O,WAAapF,EAAqBtK,EAAMe,KAAKwJ,gBAElDxJ,KAAK+O,aAAa/O,KAAKgP,WAEvBhP,KAAKiP,WAELjP,KAAKkP,kBAELlP,KAAKmP,gBAEFnP,KAAKoP,kBACJpP,KAAKqP,oBAGTrP,KAAKuB,QAAQ+N,GAAG,QAAUxQ,EAAI,6BAA6B,SAASyQ,GAChE,IAAIC,EAAS/Q,EAAE8Q,EAAEE,eAAeD,SAC5BtG,EAAO0B,EAAK8E,gBAAgBF,EAAO1K,KAAM0K,EAAOvK,KAEpDsK,EAAEI,iBACF/E,EAAKgF,QAAQ,WAAY,CAAE7P,KAAM,MAAOd,KAAMiK,EAAK1H,iBAGvDxB,KAAK6P,WAGTxE,UAAW,WACHrL,KAAK8F,QAAQgK,WACT9P,KAAK+P,YACL/P,KAAKgQ,iBAELhQ,KAAKiQ,mBAMjBA,eAAgB,WACZ,IAAIrF,EAAO5K,KACX4K,EAAKD,QAAQ2E,GAAG,QAAUxQ,EAAI,qDAAqD,SAASyQ,GACxF3E,EAAKgF,QAAQ,SAAU,CAAEM,IAAKzR,EAAEuB,MAAMmQ,QAAQ,YAAYC,KAAK1R,EAAM0R,KAAK,UAC1Eb,EAAEI,qBAG+B,IAAjC/E,EAAK9E,QAAQgK,SAASO,QACtBzF,EAAKD,QAAQ2E,GAAG,WAAaxQ,EAAI,kDAAkD,SAASyQ,GACxF,IAAIC,EAAS/Q,EAAE8Q,EAAEE,eAAeD,SAC5BtG,EAAO0B,EAAK8E,gBAAgBF,EAAO1K,KAAM0K,EAAOvK,KAEpD,GAAIiE,EAAM,CACN,IAAIoH,EAAe1F,EAAK2F,gBAAgBrH,GACxC0B,EAAKgF,QAAQ,MAAO,CAAEY,UAAWzR,EAAO,CAAE0R,UAAU,EAAM9P,MAAOuI,EAAK1H,YAAawB,IAAKkG,EAAK1H,aAAe8O,KAGhHf,EAAEI,qBAI2B,IAAjC/E,EAAK9E,QAAQgK,SAASY,QACtB9F,EAAKD,QAAQ2E,GAAG,WAAaxQ,EAAI,mCAAmC,SAASyQ,GACzE3E,EAAKgF,QAAQ,OAAQ,CAAEM,IAAKzR,EAAEuB,MAAMmQ,QAAQ,YAAYC,KAAK1R,EAAM0R,KAAK,UACxEb,EAAEI,qBAKdK,eAAgB,WACZ,IAAIpF,EAAO5K,KACP2Q,EAAY,EAEZjS,EAAMkS,QAAQC,SAASC,UACvBH,EAAY,IAGqB,IAAjC/F,EAAK9E,QAAQgK,SAASO,SACtBzF,EAAKmG,eAAiB,IAAIrS,EAAMsS,WAAWpG,EAAKD,QAAS,CACrDgG,UAAWA,EACXM,eAAgBvS,EAAMkS,QAAQM,QAAQC,KACtCC,OAAQ,iDACRC,IAAK,SAAS9B,GACV,IAAI3E,EAAK0G,WAAT,CAGA,IAAI9B,EAAS/Q,EAAE8Q,EAAEgC,QAAQ/B,SACrBtG,EAAO0B,EAAK8E,gBAAgBF,EAAO1K,KAAM0K,EAAOvK,KAEpD,GAAIiE,EAAM,CACN,IAAIoH,EAAe1F,EAAK2F,gBAAgBrH,GACxC0B,EAAKgF,QAAQ,MAAO,CAAEY,UAAWzR,EAAO,CAAE0R,UAAU,EAAM9P,MAAOuI,EAAK1H,YAAawB,IAAKkG,EAAK1H,aAAe8O,KAGhHf,EAAEI,uBAMlB6B,mBAAoB,SAAShN,GACzB,IAAIgL,EAAS/Q,EAAE+F,GAAMgL,SACrB,OAAOxP,KAAK0P,gBAAgBF,EAAO1K,KAAM0K,EAAOvK,MAGpD3E,qBAAsB,SAASH,GAC3B,IAAIsR,EAAczR,KAAK0R,aAAavR,GACpC,OAAOsR,EAAcA,EAAY7M,OAAS,GAG9CxE,kBAAmB,SAASD,GACxB,IAAIwR,EAAW3R,KAAK4R,UAAUzR,GAC9B,OAAOwR,EAAWA,EAAS/M,OAAS,GAGxCqK,SAAU,WACN,IAAIhO,EAAO,UACP4Q,EAAqB,EACrBC,EAAc9R,KAAKgL,aACnBvJ,EAAYzB,KAAK+R,iBAEjBtQ,EAAUmD,QACN5E,KAAKgB,yBACL6Q,EAAqBC,EAAY5R,0BAA0BuB,EAAUmD,OAAS,IAItF,IAAK,IAAIoN,EAAmB,EAAGA,EAAmBH,EAAoBG,IAClE/Q,GAAQjB,KAAKiS,gBAAgBD,GAC7BhS,KAAKkS,kBAAoBF,EAG7B/Q,GAAQ,WAERjB,KAAKuB,QAAQ4Q,KAAK,SAASlR,KAAKA,IAGpCmR,gBAAiB,WACb,IAAIxH,EAAO5K,KACPiB,EAAO,GAEXA,GAAQjB,KAAKiS,kBAAkBjS,KAAKkS,mBAEpCtH,EAAKrJ,QAAQ4Q,KAAK,eAAeE,OAAOpR,GAExC2J,EAAKsE,mBAGToD,gBAAiB,SAASzH,GACtB,IAKI0H,EALAzM,EAAU9F,KAAK8F,QACfC,EAAcD,EAAQC,YACtByM,EAAe1M,EAAQ0M,aACvB1H,EAAmBhF,EAAQgF,iBAC3B2H,EAAYzS,KAAKuB,QAAQ4Q,KAAK,eAAe,GAGjD,GAAoB,SAAhBpM,GAA2B0M,EAM/B,OAFAF,EAAaE,EAAUC,WAEhBC,KAAKC,MAENH,EAAUzJ,aAAeyJ,EAAUnN,aAGrCiN,EAAWrN,UAGXqN,EAAWvJ,aAGXtJ,EAGEmL,EAAe9E,GAAoB8E,EAAe,GAAM2H,GAGxD9S,EAAqBoL,GAGvBpL,IAIRwP,gBAAiB,WACb,IAKI2D,EALA/M,EAAU9F,KAAK8F,QACf+E,EAAe/E,EAAQ+E,aACvB9E,EAAcD,EAAQC,YACtB+M,EAAW9S,KAAK+P,YAChBgD,EAAQ/S,KAAKuB,QAAQ4Q,KAAK,SAG1BW,GAIuB,kBAAhB/M,IACPgN,EAAM9M,SAAS,0BAEf4M,EAAY7S,KAAKsS,gBAAgBzH,GAEjCkI,EAAMZ,KAAK,MAAM9M,OAAQwN,KAIjCG,kBAAmB,SAASlR,GACxB,IAAIgE,EAAU9F,KAAK8F,QACfC,EAAcD,EAAQC,YACtByM,EAAe1M,EAAQ0M,aACvB1H,EAAmBhF,EAAQgF,iBAE/B,IAAkC,IAA9B9K,KAAKiT,qBAAT,CAIA,IAAIC,EAAQpR,EAAM8G,oBAElB5I,KAAKuB,QAAQ4Q,KAAK,SAASlM,SAAS,0BAEpCiN,EAAMC,QAAQ,SAASC,GACnB,IAAIlG,EAASkG,EAAKC,QACdC,EAAa,EACbC,EAAQH,EAAK/K,OACbmL,EAAYD,EAAM,GAClBE,EAAgBD,EAAU7I,QAAQzF,UAClCwO,EAAa,EAGjBH,EAAMJ,SAAQ,SAASjK,GACdA,EAAKyK,UAINzK,EAAK0K,iBAAmB1K,EAAKyK,UAAU/O,QAHvCsE,EAAKyK,UAAY,GACjBzK,EAAK0K,iBAAmB,MAOhCL,EAAMJ,SAAQ,SAASjK,EAAMoD,GAEzBpD,EAAKyK,UAAUR,SAAQ,SAASU,EAAMP,GAG9BO,EAAK5L,aAAeqE,GAKpBuH,EAAK5L,aAAe4L,EAAK3L,UAK7BqL,EAAMzL,MAAMwE,EAAWuH,EAAK3L,SAAW,GAAGiL,SAAQ,SAASW,GAEvD,IAAIC,EAAUD,EAAQH,UAElBI,EAAQC,QAAQH,IAAS,IAK7BE,EAAQA,EAAQnP,QAAUsE,EAAKyK,UAAUL,GACzCQ,EAAQF,iBAAmBG,EAAQnP,OACnCkP,EAAQG,OAAQ,UAML,IAAf/K,EAAK+K,QACL/K,EAAKyK,UAAUO,MAAK,SAASC,EAAOC,GAChC,OAAOD,EAAME,MAAQD,EAAOC,gBAEzBnL,EAAK+K,UAKA,SAAhBlO,GACAwN,EAAMJ,SAAQ,SAASjK,EAAMoD,GACzB,IAAIgI,EAAapL,EAAKqL,cAAgBrL,EAAKrD,iBAAmBnG,EAE9DwJ,EAAKyK,UAAUR,SAAQ,SAASU,EAAMP,GAClCO,EAAK5O,IAAM0N,KAAKtI,IAAIwJ,EAAK5O,IAAKwO,EAAgBa,GAC9CA,EAAcT,EAAK5O,IAAMwO,EAAiBjB,EAAeqB,EAAKxO,aAM1EkO,EAAMJ,SAAQ,SAASjK,EAAMoD,GACzB,IAAIgI,EAAapL,EAAKqL,cAAgBrL,EAAKrD,iBAAmBnG,EAE9DwJ,EAAKyK,UAAUR,SAAQ,SAASU,GAC5BA,EAAK5O,IAAM0N,KAAKtI,IAAIwJ,EAAK5O,IAAKwO,EAAgBa,GAC9CA,EAAcT,EAAK5O,IAAMwO,EAAiBjB,EAAeqB,EAAKxO,OAE1DwO,EAAK5L,aAAeqE,IACpBY,EAAOoG,GAAY3I,QAAQ,GAAG6J,MAAMvP,IAAM4O,EAAK5O,IAAM,KACrDqO,QAIJpK,EAAKyK,UAAU/O,OAAS,GACxB0P,GAAc9B,EACd8B,GAAc5U,GAEd4U,GAA+B,SAAhBvO,EAAyB,GAAKA,EAG7CmD,EAAKuL,OACLvL,EAAKuL,KAAK,GAAGD,MAAMvP,IAAMwO,EAAgBa,EAAa,KACtDA,GAAc5U,EAAqBoL,GAGvC4I,EAAaf,KAAKtI,IAAIqJ,EAAYY,EAAa,MAKnDd,EAAU7I,QAAQ+J,WAAWF,MAAMnP,OAASqO,EAAa,KACzDH,EAAMJ,SAAQ,SAASjK,GACnBA,EAAKhE,UAAYuO,EACjBvK,EAAKF,aAAe0K,EACpBxK,EAAK5D,aAAeoO,EAAa,MAGvCiB,KAAK3U,SAGXiS,gBAAiB,SAASnR,GACtB,IAAIH,EAAQX,KAAKwB,YACbf,EAAYrB,EAAkBD,EAC9BqB,EAAcpB,EACdwV,EAAiB,CAACjU,GAClBM,EAAO,GACPJ,EAAuB,EACvBE,EAAsBf,KAAKgB,uBAC3B8Q,EAAc9R,KAAKgL,aAEnBvJ,EAAYzB,KAAK+R,iBAEjBtQ,EAAUmD,SACL7D,IACDF,EAAuBiR,EAAYzR,8BAA8BoB,EAAUmD,OAAS,KAI5F5E,KAAK6U,aAAe,GAIpB,IAFA,IAAIC,EAAqBhD,EAAYvR,uBAAuBC,EAAaC,GAEhEsU,EAAS,EAAGA,EAASD,EAAoBC,IAAU,CACxD9T,GAAQ,OAER2T,EAAe7M,KAAKpH,GAEpB,IAAIC,EAAWmU,EAAOvU,EAEtBS,GAAQ6Q,EAAYpR,YAAYC,EAAOC,EAAUC,EAAsBC,GACvEH,EAAQmR,EAAY1Q,iBAAiBT,EAAOoU,IAAWD,EAAqB,GAE5E7T,GAAQ,QAMZ,OAHAjB,KAAKgV,gBAAkBJ,EACvB5U,KAAK4O,SAAWlQ,EAAMO,KAAKyP,YAAY/N,GAEhCM,GAGXE,WAAY,SAASK,EAAWZ,EAAUJ,EAAaqB,GAanD,IAZA,IAAI+I,EAAO5K,KACPoK,EAAMQ,EAAKsD,iBACX7D,EAAMO,EAAKuD,gBACX5M,EAAUqJ,EAAKkD,YACfmH,EAAU,GACVhU,EAAO,GACP6Q,EAAc9R,KAAKgL,aAEnBvJ,EAAY,WACZ,OAAOmJ,EAAK2F,gBAAgB,CAAE1O,WAAYA,KAGrC6E,EAAU,EAAGA,EAAUlG,EAAakG,IACzCuO,EAAU,GAENvW,EAAMO,KAAKiW,QAAQ1T,KACnByT,GAAW,WAGVvW,EAAMO,KAAKkL,cAAc3I,EAAW4I,EAAKC,KAC1C4K,GAAW,kBAGfhU,GAAQ,OAEQ,KAAZgU,IACAhU,GAAQ,UAAYgU,EAAU,KAGlChU,GAAQ,IACRA,GAAQ6Q,EAAYxQ,YAAYC,EAASC,EAAWC,EAAWiF,GAC/DzF,GAAQ,QAER2J,EAAKiK,aAAa7V,EAAQwC,GAAW2T,WAAavU,EAAW8F,EAE7DlF,EAAYsQ,EAAY7P,mBAAmBT,GAG/C,OAAOP,GAGX+N,QAAS,WACL,IASI5M,EATAoH,EAAexJ,KAAKwJ,eAEpB4L,EAAepV,KAAK+P,YAAcvG,EAAa6L,KAAKC,WAAWC,KAAI,SAAU3N,GAC7E,OAAOA,EAAK,MACX4B,EAAa6L,KAAKG,MAEnBA,EAAQrM,EAAWiM,EAAc5L,EAAaC,UAC9ClH,EAAU9D,EAAE8W,IAAIC,GAAO,SAASvO,GAAS,MAAO,CAAEI,KAAMJ,MACxDxF,EAAYzB,KAAK+R,iBAEjBD,EAAc9R,KAAKgL,aAEvB,GAAIvJ,EAAUmD,OACV,GAAI5E,KAAKgB,uBAAwB,CAE7B,IADA,IAAIyU,EAAQ,GACHpM,EAAM,EAAGA,EAAM,EAAGA,IACvBoM,EAAM1N,KAAK,CAAEV,KAAM,oBAAqBQ,UAAW,yBAEvDzF,EAAQ0P,EAAY3P,kBAAkBV,EAAWgU,EAAOzV,KAAKqC,oBAAqBE,GAClFA,EAAWuP,EAAYxP,6BAA6Bb,EAAWgU,EAAOzV,KAAKqC,oBAAqBE,QAGhGA,EAAWuP,EAAYtP,qBAAqBf,EAAWc,EAASvC,KAAKqC,oBAAqBE,GAIlG,MAAO,CACHA,QAASA,EACTH,KAAMA,IAIdmB,oBAAqB,SAASV,GAC1B,IAAIiD,EAAU9F,KAAK8F,QACfgK,EAAWhK,EAAQgK,SAEnBgD,EAAW9S,KAAK+P,YAEpBlN,EAAM6S,WAAa5F,IAAiC,IAArBA,EAAS6F,UAAsB7C,EAC9DjQ,EAAM+S,UAAY9F,IAAgC,IAApBA,EAAS+F,SAAqB/C,EAC5DjQ,EAAMiT,GAAKpX,EAAMoX,GACjBjT,EAAMpB,UAAYzB,KAAK+V,eAAelT,GACtCA,EAAMqD,cAAe,EACrBrD,EAAMmT,SAAWlQ,EAAQkQ,UAAY,CAAEL,QAAS,UAEhD,IAAIhL,EAAUlM,EAAEuB,KAAK4N,cAAc/K,IASnC,OAPA7C,KAAKiW,QAAQ,WAAW,WACpB,MAAO,CACHC,SAAUvL,EACV7D,KAAM,CAAE,CAAEqP,SAAUtT,QAIrB8H,GAGXyL,cAAe,SAASvT,GACpB,IAAId,EAAS/B,KAAK+B,OAAO,GACrBsU,EAAYtU,EAAOyR,YAAY7S,MAC/B2V,EAAUvU,EAAOwU,WAAWvT,IAAM,EAElCwT,EAAY9X,EAAMO,KAAKwX,UAAU5T,EAAMlC,OACvC+V,EAAUhY,EAAMO,KAAKwX,UAAU5T,EAAMG,KAEzC,OAAQmH,EAAcqM,EAAWH,EAAWC,IACxCnM,EAAcuM,EAASL,EAAWC,IAClCnM,EAAckM,EAAWG,EAAWE,IACpCvM,EAAcmM,EAASE,EAAWE,OAChCvM,EAAcuM,EAASL,EAAWA,IAAclM,EAAcuM,EAASF,EAAWA,IAAc3T,EAAM4N,WAGhHkG,WAAY,SAAS1X,GACjB,OAAOe,KAAK6U,aAAa7V,EAAQC,GAAMkW,YAG3CvS,qBAAsB,SAASgU,EAAWjM,EAAS7I,GAC/C,IAAIiD,EAAY6R,EAAUjW,MAEtBiW,EAAUjW,MAAMqE,WAAa4R,EAAU5T,IAAIgC,aAC5CD,EAAY6R,EAAU5T,KAGzB,IAAIiF,EAAa2O,EAAUjW,MAAMqF,MAC7BkC,EAAWD,EAEX4O,EAAa,EACb3J,EAASrO,EAAciY,gBAAgBF,EAAU1J,SAAUjF,EAAYC,GAE3EgF,EAAOnF,KAAK,CAAC4C,QAASA,EAAShK,MAAOsH,EAAYjF,IAAKkF,IAEvD,IAAI9F,EAAOvD,EAAckY,WAAW7J,GAEhChE,EAAO0N,EAAU5S,WAAWgT,GAAG/O,GAE/BgP,EAAY/N,EAAK+N,UAEhBA,IAEDA,EAAYxY,EAAEC,EAAMsP,OAAO,4EACvBjJ,EAAUG,UAAYH,EAAUwP,cAAgBxP,EAAUc,iBAAmB,KAC7Ed,EAAUC,WAAa,KACvBD,EAAUgE,YAAc,OAG5BG,EAAK+N,UAAYA,EAEjBjX,KAAKuB,QAAQ,GAAG2V,YAAYD,EAAU,KAGtC7U,EAAKwC,QAAUiS,IACfD,EAAUO,SAAS,CAACxM,QAASA,EAAShK,MAAOsH,EAAYjF,IAAKkF,EAAUrG,WAAYkD,EAAUlD,aAE9FC,EAAMsV,kBAAkBrP,KAAK,CACzB4C,QAASA,EACTuF,IAAKvF,EAAQyF,KAAK1R,EAAM0R,KAAK,QAC7BzP,MAAOiW,EAAUjW,MACjBqC,IAAK4T,EAAU5T,MAGnBiU,EAAU,GAAGC,YAAYvM,EAAQ,MAIzCnH,eAAgB,SAASoT,EAAWjM,EAAS7I,GACzC,IAAIiE,EAAc/F,KAAK8F,QAAQC,YAC3ByM,EAAexS,KAAK8F,QAAQ0M,aAC5BzN,EAAY6R,EAAUjW,MAEtBiW,EAAUjW,MAAMqE,WAAa4R,EAAU5T,IAAIgC,aAC3CD,EAAY6R,EAAU5T,KAG1B,IAAIiF,EAAa2O,EAAUjW,MAAMqF,MAC7BkC,EAAW0O,EAAU5T,IAAIgD,MACzB6Q,EAAa9R,EAAU8R,WACvB3J,EAASrO,EAAciY,gBAAgBF,EAAU1J,SAAUjF,EAAYC,GACvEmP,EAAcpP,IAAeC,EAAW,EAAI,EAEhDgF,EAAOnF,KAAK,CAAC4C,QAASA,EAAShK,MAAOsH,EAAYjF,IAAKkF,IAIvD,IAFA,IAAI9F,EAAOvD,EAAckY,WAAW7J,GAE3B7D,EAAM,EAAGzE,EAAS+N,KAAKvI,IAAIhI,EAAKwC,OAAQiS,GAAaxN,EAAMzE,EAAQyE,IAaxE,IAZA,IAAIiO,EAAYlV,EAAKiH,GAAK6D,OACtBqK,EAA4B,SAAhBxR,EACV,GAEEhB,EAAUG,UACVH,EAAUwP,cACVxP,EAAUc,iBACVnG,EACA2J,GAAOtD,EAAcyM,GACrB,KAGCgF,EAAI,EAAGC,EAAcH,EAAU1S,OAAQ4S,EAAIC,EAAaD,IAC7DF,EAAUE,GAAG7M,QAAQ,GAAG6J,MAAMvP,IAAMsS,EACpCD,EAAUE,GAAG7M,QAAQyF,KAAK1R,EAAM0R,KAAK,SAAU/G,GAIvD,GAAIjH,EAAKwC,OAASiS,EACd,IAAK,IAAIvK,EAAYrE,EAAYqE,GAAapE,EAAUoE,IAAa,CACjE,IAAItI,EAAa4S,EAAU5S,WAEvBkF,EAAOlF,EAAWgT,GAAG1K,GAErBpD,EAAKuL,OAITvL,EAAKuL,KAAOhW,EAAEkB,EAAqB,CAC/BmW,GAAIpX,EAAMoX,GACVnV,MAAO2L,EACPtJ,IAAKsJ,EACLnH,MAAO+D,EAAKwO,YAAc,EAC1B5S,KAAMoE,EAAKlE,WAAa,EACxBC,IAAsB,SAAhBc,EACA,GAEEmD,EAAKhE,UACLgE,EAAKqL,cACLrL,EAAKrD,iBACLnG,EACCmX,EAAa9Q,GACX8Q,EAAa,GAAKrE,EACrB9S,KAIZM,KAAKuB,QAAQ,GAAG2V,YAAYhO,EAAKuL,KAAK,SAEvC,CACHmC,EAAUO,SAAS,CAACxM,QAASA,EAAShK,MAAOsH,EAAYjF,IAAKkF,EAAUrG,WAAYkD,EAAUlD,aAE9F8I,EAAQ,GAAG6J,MAAMrP,MAAQyR,EAAUxR,aAAeiS,EAAc,KAChE1M,EAAQ,GAAG6J,MAAM1P,KAAOC,EAAUC,WAAa,EAAI,KACnD2F,EAAQ,GAAG6J,MAAMnP,OAA0B,SAAhBU,EAA0B,GAAKA,EAAc,KAExEjE,EAAMsV,kBAAkBrP,KAAK,CACzB4C,QAASA,EACTuF,IAAKvF,EAAQyF,KAAK1R,EAAM0R,KAAK,QAC7BzP,MAAOiW,EAAUjW,MACjBqC,IAAK4T,EAAU5T,IACfqR,MAAOsD,SAAShN,EAAQyF,KAAK1R,EAAM0R,KAAK,UAAW,MAGvDzF,EAAQiN,SAAS5X,KAAKuB,SAEtBvB,KAAK6X,mBAAmBlN,GAGxB,IAAImN,EAAmBlB,EAAUjW,MAAMoL,gBACnCgM,EAAkBnB,EAAUjW,MAAMqF,MAClCgS,EAAalW,EAAM8G,oBAAoBkP,GAAkBzP,OAAO0P,GAE/DC,EAAWrE,YACZqE,EAAWrE,UAAY,IAG3BqE,EAAWrE,UAAU5L,KAAK,CACtB1C,OAAyB,SAAhBU,EAA0B4E,EAAQsN,cAAgBlS,EAC3Dd,IAAK,EACLgD,WAAY8P,EACZ7P,SAAU0O,EAAU5T,IAAIgD,MACxBkK,IAAKvF,EAAQyF,KAAK1R,EAAM0R,KAAK,QAC7BiE,MAAOsD,SAAShN,EAAQyF,KAAK1R,EAAM0R,KAAK,UAAW,QAK/DV,gBAAiB,SAAS/N,EAAGC,GACzB,IAAI4N,EAASxP,KAAKuB,QAAQiO,SAE1B7N,GAAK6N,EAAO1K,KACZlD,GAAK4N,EAAOvK,IACZrD,GAAK5B,KAAKuB,QAAQ,GAAG2W,UACrBvW,GAAK3B,KAAKuB,QAAQ,GAAG4W,WAErBxW,EAAIgR,KAAKyF,KAAKzW,GACdC,EAAI+Q,KAAKyF,KAAKxW,GAEd,IAAK,IAAIC,EAAa,EAAGA,EAAa7B,KAAK+B,OAAO6C,OAAQ/C,IAAc,CACpE,IAAIqH,EAAOlJ,KAAKgL,aAAatJ,uBAAuBC,EAAGC,EAAGC,GAE1D,GAAIqH,EACA,OAAOA,EAIf,OAAO,MAGXzD,kBAAmB,SAASF,GACxBA,EAAKqS,SAAS5X,KAAKuB,SAEnBvB,KAAKqY,YAAcrY,KAAKqY,YAAYC,IAAI/S,IAG5CgT,kBAAmB,SAAS1V,EAAOhB,EAAY2U,EAAWE,GACtD1W,KAAKwY,oBAML,IAJA,IAAI1W,EAAQ9B,KAAK+B,OAAOF,GAEpB6J,EAAS5J,EAAM4J,OAAO8K,EAAWE,GAAS,EAAM7T,EAAM4N,UAEjDxN,EAAa,EAAGA,EAAayI,EAAO9G,OAAQ3B,IACjDjD,KAAKgL,aAAanG,kBAAkB6G,EAAOzI,IAG/CjD,KAAKqY,YAAYlG,KAAK,gCAAgC9K,KAAK,IAE3DrH,KAAKqY,YAAYlE,QAAQlO,SAAS,WAAWkM,KAAK,gBAAgB9K,KAAK3I,EAAM+Z,SAAS/Z,EAAMga,SAASC,YAAYnC,GAAY,SAE7HxW,KAAKqY,YAAYO,OAAO3S,SAAS,UAAUkM,KAAK,mBAAmB9K,KAAK3I,EAAM+Z,SAAS/Z,EAAMga,SAASC,YAAYjC,GAAU,UAGhImC,gBAAiB,SAAShW,EAAOhB,EAAYiX,GACzC,IAAInY,EAAQjC,EAAMO,KAAKwX,UAAU5T,EAAMlC,OAASmY,EAE5C9V,EAAMrC,EAAQkC,EAAMkW,WAEpBjX,EAAQ9B,KAAK+B,OAAOF,GAEpB6J,EAAS5J,EAAM4J,OAAO/K,EAAOqC,GAAK,EAAMH,EAAM4N,UAElDzQ,KAAKgZ,gBAAgBnW,EAAMqN,KAE3B,IAAK,IAAIjN,EAAa,EAAGA,EAAayI,EAAO9G,OAAQ3B,IACjDjD,KAAKgL,aAAatF,gBAAgBgG,EAAOzI,GAAaJ,IAI9DsD,gBAAiB,SAASZ,GACtBA,EAAKqS,SAAS5X,KAAKuB,SAEnBvB,KAAKiZ,UAAYjZ,KAAKiZ,UAAUX,IAAI/S,IAGxCgG,QAAS,WACL,IAAI7H,EAAa1D,KAAKwG,cAClB7C,EAAY3D,KAAKuB,QAAQ,GAAG2X,qBAAqB,MACjD1X,EAAYxB,KAAKwB,YACrBxB,KAAK+B,OAAS,GAEd,IAAK,IAAIsH,EAAM,EAAGA,EAAM3F,EAAY2F,IAChCrJ,KAAKmZ,iBAAiB9P,GAG1BrJ,KAAKgL,aAAavH,uBAAuBC,EAAYC,EAAWnC,IAIpEiD,WAAY,SAAST,EAAYQ,EAAMhD,EAAWf,GAC9C,IAAIE,EAAQjC,EAAMO,KAAKoC,QAAQG,EAAWf,GACtCuC,EAAMtE,EAAMO,KAAKC,WACjB2L,EAAe7K,KAAK8F,QAAQ+E,aAE5BrJ,EAAUqI,aAAelJ,EAAMkJ,aAC/B7G,IAAQxB,EAAUqI,WAAalJ,EAAMkJ,YAAcnL,EAAMO,KAAKma,aAGlEzY,EAAQjC,EAAMO,KAAKwX,UAAU9V,GAC7BqC,GAAOrC,EAEP6D,EAAKF,aAAa,OAAQ,YAC1BE,EAAKF,aAAa,iBAAiB,GAEnCN,EAAWS,WAAWD,EAAM7D,EAAOqC,EAAK6H,IAG5CwO,OAAQ,SAASnM,GACblN,KAAKuB,QAAQ6C,SAAS,+CAA+CkV,SAErEtZ,KAAKuZ,cAAgBrM,EAErBlN,KAAKuL,UAEL2B,EAAS,IAAIxO,EAAMoI,KAAK0S,MAAMtM,GACzBgH,KAAK,CAAC,CAAExM,MAAO,QAAS+R,IAAK,OAAQ,CAAE/R,MAAO,MAAO+R,IAAK,UAC1DC,UACAtI,OAAO,SAASvO,GACb,OAAO7C,KAAKoW,cAAcvT,IAC5B8R,KAAK3U,OAEX,IAAIyB,EAAYzB,KAAK+R,iBACjBe,EAAW9S,KAAK+P,YAChB7E,EAAkBlL,KAAKmL,mBACvBJ,EAAqB/K,KAAK8F,QAAQiF,mBAEtC/K,KAAKiT,sBAAoC,IAAbH,IAAyC,IAApB5H,GAAiD,IAArBzJ,EAAUmD,SAAuC,IAAvBmG,EAEnGtJ,EAAUmD,OACV5E,KAAK2Z,cAAczM,EAAQzL,EAAW,EAAG,GAEzCzB,KAAK4Z,cAAc1M,EAAQ,GAG/BlN,KAAKmP,gBACLnP,KAAK4P,QAAQ,aAGjBgK,cAAe,SAAS1M,EAAQrL,GAC5B,IAAIC,EAAQ9B,KAAK+B,OAAOF,GACpB9B,EAAOC,KAAKgL,aAAa/K,MACzB6S,EAAW/S,EAAKgQ,YAEhBjO,IAICA,EAAMsV,oBACPtV,EAAMsV,kBAAoB,IAG1BtE,EAEA5F,EAAOiG,QAAQ,SAAStQ,GACpB,IAAI6I,EAAS5J,EAAM+X,WAAWhX,GAAO,GACjCC,EAAQ4I,EAAO,GACf/K,EAAQmC,EAAMnC,MAAMA,MACpBqC,EAAMF,EAAME,IAAIA,IAChB8W,EAAa,IAAIvT,KAAKzD,EAAMnC,MAAMA,OAClCoZ,EAAWrO,EAAOA,EAAO9G,OAAS,GAAG5B,IAAIA,IACzC8J,EAAW,IAAIvG,KAAKuT,GACpB/M,EAAS,IAAIxG,KAAKvD,GAEtB,MAAO8W,EAAW3E,WAAa4E,GAC3BlX,EAAMG,KAAOtE,EAAMga,SAASC,YAAYmB,IACxCjX,EAAMlC,OAASjC,EAAMga,SAASC,YAAYoB,GAAU,CACpD,IAAIzR,EAAYxG,EAAMyG,cAAcuE,EAASqI,UAAWpI,EAAOoI,WAAW,GAAM,GAChFpI,EAAOiN,QAAQjN,EAAO/N,UAAY,GAClC8N,EAASkN,QAAQlN,EAAS9N,UAAY,GAElCsJ,IACAA,EAAUjF,KAAO,KACjBiF,EAAU2R,OAAS,KACnB3R,EAAUhF,KAAO,KACjBtD,KAAKgL,aAAapI,qBAAqBC,EAAOf,EAAOwG,EAAW,EAAG3H,EAAOqC,EAAK,IAGnF8W,EAAapb,EAAMO,KAAKoC,QAAQyY,EAAY,KAGlDnF,KAAK3U,QAIPkN,EAAOiG,QAAQ,SAAStQ,GAOpB,IANA,IAAIC,EACAnC,EAAQkC,EAAMlC,MACdqC,EAAMH,EAAMG,IACZ0I,EAAS5J,EAAM+X,WAAWhX,GAAO,GACjCE,EAAa2I,EAAO9G,OAEf3B,EAAa,EAAGA,EAAaF,EAAYE,IAC9CH,EAAQ4I,EAAOzI,GAEfjD,KAAKgL,aAAaxH,eAAeX,EAAOf,EAAOgB,EAAOC,EAAYpC,EAAOqC,EAAKC,IAGpF0R,KAAK3U,QAE2B,IAA9BA,KAAKiT,sBACLjT,KAAKgT,kBAAkBlR,MAMnC6X,cAAe,SAASzM,EAAQzL,EAAW+N,EAAQiC,EAAayI,GAC5D,IAAItT,EAAWnF,EAAU,GAEzB,GAAImF,EAAU,CACV,IAAI7G,EAAO6G,EAASG,WAAWhH,OAE/BA,EAAOA,EAAKqR,QAAO,SAAS+I,GACxB,IAAIC,EAAkB1b,EAAMwI,OAAON,EAASyT,qBAAtB3b,CAA4Cyb,GAElE,OAA2B,OAApBC,QAAgD5b,IAApB4b,GAAiCA,IAAoBF,KAG5F,IAAK,IAAII,EAAU,EAAGA,EAAUva,EAAK6E,OAAQ0V,IAAW,CACpD,IAAIrT,EAAQjH,KAAKua,eAAe3T,EAAU7G,EAAKua,IAE3CE,EAAM,IAAI9b,EAAMoI,KAAK0S,MAAMtM,GAAQkE,OAAO,CAAE1J,MAAOd,EAASc,MAAO+S,SAAU5b,EAAc6b,cAAczT,KAAUyS,UAEnHjY,EAAUmD,OAAS,EACnB4K,EAASxP,KAAK2Z,cAAca,EAAK/Y,EAAUqG,MAAM,GAAI0H,IAAUiC,EAAc,EAAGxK,GAEhFjH,KAAK4Z,cAAcY,EAAKhL,MAIpC,OAAOA,GAGXhJ,YAAa,WACT,IAAI/E,EAAYzB,KAAK+R,iBACjBD,EAAc9R,KAAKgL,aAEvB,OAAIvJ,EAAUmD,OACN5E,KAAKgB,uBACE8Q,EAAYrP,oBAAoBhB,EAAUmD,OAAS,GAEnDkN,EAAYpP,sBAAsBjB,EAAUmD,QAGpD,GAGXjC,yBAA0B,SAASqD,GAC/B,OAAOhG,KAAKM,qBAAqB0F,GAAShG,KAAKM,qBAAqB0F,EAAQ,IAGhF2P,QAAS,WACD3V,KAAK+S,OACL/S,KAAK+S,MAAM4H,YAAY,yBAGvB3a,KAAKuB,SACLvB,KAAKuB,QAAQqZ,IAAI9b,GAGjBkB,KAAK2K,SACL3K,KAAK2K,QAAQiQ,IAAI9b,GAGrBD,EAAc2G,GAAGmQ,QAAQlY,KAAKuC,MAE1BA,KAAK+P,aAAe/P,KAAK8F,QAAQgK,WACI,IAAjC9P,KAAK8F,QAAQgK,SAASO,QACtBrQ,KAAK+Q,eAAe4E,WAKhCzI,OAAQ,CAAC,SAAU,MAAO,OAAQ,YAElCpH,QAAS,CACL6B,MAAO,QACPC,KAAM,QACN7B,YAAa,GACb+E,iBAAkB,GAClBgF,UAAU,EACV7B,mBAAoB,QACpBI,wBAAyB,QACzBE,yBAA0B,WAC1BlM,oBAAqB,UACrByL,YAAaxO,EACbsO,cAAenO,EACfoL,aAAc,EACdE,oBAAoB,EACpByH,aAAc,KAhrD1B,CA6sDG7T,OAAOD,MAAMmc,QAETlc,OAAOD,QAEXrB,EAAoB","file":"js/chunk-vendors~68fdbe17.d5bca4d8.js","sourcesContent":["module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1404);\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n/***/ }),\n\n/***/ 1397:\n/***/ (function(module, exports) {\n\n\tmodule.exports = require(\"./kendo.scheduler.view\");\n\n/***/ }),\n\n/***/ 1404:\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1397) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t})(function(){\n\n\tvar __meta__ = { // jshint ignore:line\n\t id: \"scheduler.monthview\",\n\t name: \"Scheduler Month View\",\n\t category: \"web\",\n\t description: \"The Scheduler Month View\",\n\t depends: [ \"scheduler.view\" ],\n\t hidden: true\n\t};\n\n\t(function($){\n\t var kendo = window.kendo,\n\t ui = kendo.ui,\n\t SchedulerView = ui.SchedulerView,\n\t NS = \".kendoMonthView\",\n\t extend = $.extend,\n\t getDate = kendo.date.getDate,\n\t MS_PER_DAY = kendo.date.MS_PER_DAY,\n\t NUMBER_OF_ROWS = 6,\n\t NUMBER_OF_COLUMNS = 7,\n\t INVERSE_COLOR_CLASS = \"k-event-inverse\",\n\t DAY_TEMPLATE = kendo.template('#:kendo.toString(date, \"dd\")#'),\n\t EVENT_WRAPPER_STRING = '
' +\n\t '' +\n\t '# if (data.tail || data.middle) {#' +\n\t '' +\n\t '#}#' +\n\t '# if (data.isException()) {#' +\n\t '' +\n\t '# } else if (data.isRecurring()) {#' +\n\t '' +\n\t '#}#' +\n\t '' +\n\t '{0}' +\n\t '' +\n\t '#if (showDelete) {#' +\n\t '' +\n\t '#}#' +\n\t '# if (data.head || data.middle) {#' +\n\t '' +\n\t '#}#' +\n\t '' +\n\t '# if (resizable && !data.tail && !data.middle) {#' +\n\t '' +\n\t '#}#' +\n\t '# if (resizable && !data.head && !data.middle) {#' +\n\t '' +\n\t '#}#' +\n\t '
',\n\t EVENT_TEMPLATE = kendo.template('
' +\n\t '
#:title#
' +\n\t '
');\n\n\t var CELL_INNER_SPACING = 2;\n\n\t var MORE_BUTTON_TEMPLATE = kendo.template(\n\t '
'\n\t );\n\n\t var MonthGroupedView = kendo.Class.extend({\n\t init: function(view) {\n\t this._view = view;\n\t },\n\n\t _verticalRowCountForLevel: function(level) {\n\t var view = this._view;\n\n\t return view._rowCountForLevel(level);\n\t },\n\n\t _horizontalGroupCountForLevel: function(level) {\n\t var view = this._view;\n\n\t return view._columnCountForLevel(level);\n\t },\n\n\t _getCalendarRowsLength: function(cellsPerRow, cellCount) {\n\t return cellCount / cellsPerRow;\n\t },\n\n\t _createRows: function(start, startIdx, horizontalGroupCount, verticalGroupIndex) {\n\t var view = this._view;\n\t var cellsPerRow = NUMBER_OF_COLUMNS;\n\t var isVerticallyGrouped = view._isVerticallyGrouped();\n\t var html = \"\";\n\n\t for (var groupIdx = 0; groupIdx < horizontalGroupCount; groupIdx++) {\n\t html += view._createRow(start, startIdx, cellsPerRow, isVerticallyGrouped ? verticalGroupIndex : groupIdx);\n\t }\n\n\t return html;\n\t },\n\n\t _adjustStartDate: function(start) {\n\t return kendo.date.addDays(start, NUMBER_OF_COLUMNS);\n\t },\n\n\t _getContent: function(content, startDate, resources) {\n\t return content({ date: startDate, resources: resources });\n\t },\n\n\t _getTimeSlotByPosition: function(x, y, groupIndex) {\n\t var group = this._view.groups[groupIndex];\n\n\t return group.daySlotByPosition(x, y);\n\t },\n\n\t _nextSlotStartDate: function(startDate) {\n\t return kendo.date.nextDay(startDate);\n\t },\n\n\t _createRowsLayout: function(resources, rows, groupHeaderTemplate) {\n\t var view = this._view;\n\n\t return view._createRowsLayout(resources, rows, groupHeaderTemplate);\n\t },\n\n\t _createVerticalColumnsLayout: function(resources, rows, groupHeaderTemplate, columns) {\n\n\t return columns;\n\t },\n\n\t _createColumnsLayout: function(resources, columns, groupHeaderTemplate) {\n\t var view = this._view;\n\n\t return view._createColumnsLayout(resources, columns, groupHeaderTemplate);\n\t },\n\n\t _verticalGroupCount: function(level) {\n\t var view = this._view;\n\n\t return view._rowCountForLevel(level);\n\t },\n\n\t _horizontalGroupCount: function(level) {\n\t var view = this._view;\n\n\t return view._columnCountForLevel(level) / view._columnOffsetForResource(level);\n\t },\n\n\t _positionMobileEvent: function(event, group, range, rangeCount, start, end, rangeIndex){\n\t var view = this._view;\n\n\t if (rangeCount > 1) {\n\t if (rangeIndex === 0) {\n\t end = range.end.endDate();\n\t } else if (rangeIndex == rangeCount - 1) {\n\t start = range.start.startDate();\n\t } else {\n\t start = range.start.startDate();\n\t end = range.end.endDate();\n\t }\n\t }\n\n\t var occurrence = event.clone({ start: start, end: end, head: range.head, tail: range.tail });\n\n\t view._positionMobileEvent(range, view._createEventElement(occurrence), group);\n\t },\n\n\t _positionEvent: function(event, group, range, rangeCount, start, end, rangeIndex){\n\t var view = this._view;\n\n\t if (rangeCount > 1) {\n\t if (rangeIndex === 0) {\n\t end = range.end.endDate();\n\t } else if (rangeIndex == rangeCount - 1) {\n\t start = range.start.startDate();\n\t } else {\n\t start = range.start.startDate();\n\t end = range.end.endDate();\n\t }\n\t }\n\n\t var occurrence = event.clone({ start: start, end: end, head: range.head, tail: range.tail });\n\n\t view._positionEvent(range, view._createEventElement(occurrence), group);\n\t },\n\n\t _addDaySlotCollections: function(groupCount, tableRows, startDate) {\n\t var view = this._view;\n\t var columnCount = NUMBER_OF_COLUMNS;\n\t var rowCount = NUMBER_OF_ROWS;\n\n\t for (var groupIndex = 0; groupIndex < groupCount; groupIndex++) {\n\t var cellCount = 0;\n\t var rowMultiplier = 0;\n\n\t if (view._isVerticallyGrouped()) {\n\t rowMultiplier = groupIndex;\n\t }\n\n\t for (var rowIndex = rowMultiplier * rowCount; rowIndex < (rowMultiplier + 1) * rowCount; rowIndex++) {\n\t var group = view.groups[groupIndex];\n\t var collection = group.addDaySlotCollection(kendo.date.addDays(startDate, cellCount), kendo.date.addDays(startDate, cellCount + columnCount));\n\n\t var tableRow = tableRows[rowIndex];\n\t var cells = tableRow.children;\n\t var cellMultiplier = 0;\n\n\t tableRow.setAttribute(\"role\", \"row\");\n\n\t if (!view._isVerticallyGrouped()) {\n\t cellMultiplier = groupIndex;\n\t }\n\n\t for (var cellIndex = cellMultiplier * columnCount; cellIndex < (cellMultiplier + 1) * columnCount; cellIndex++) {\n\t var cell = cells[cellIndex];\n\n\t view.addDaySlot(collection, cell, startDate, cellCount);\n\t cellCount++;\n\t }\n\t }\n\t }\n\t },\n\n\t _changePeriodGroupIndex: function(reverse){\n\t var view = this._view;\n\n\t return reverse ? view.groups.length - 1 : 0;\n\t },\n\n\t _createResizeHint: function(range) {\n\t var view = this._view;\n\t var left = range.startSlot().offsetLeft;\n\t var top = range.start.offsetTop;\n\t var width = range.innerWidth();\n\t var height = range.start.clientHeight - 2;\n\t var hint = SchedulerView.fn._createResizeHint.call(view, left, top, width, height);\n\n\t view._appendResizeHint(hint);\n\t },\n\n\t _createMoveHint: function(range, event) {\n\t var view = this._view;\n\t var startSlot = range.startSlot();\n\t var endSlot = range.endSlot();\n\t var hint = view._createEventElement(event.clone({ head: range.head, tail: range.tail }));\n\n\t hint.css({\n\t left: startSlot.offsetLeft + 2,\n\t top: startSlot.offsetTop + startSlot.firstChildHeight,\n\t height: (view.options.eventHeight === \"auto\") ? 25 : view.options.eventHeight,\n\t width: range.innerWidth() - (startSlot.index !== endSlot.index ? 3 : 2)\n\t });\n\n\t hint.addClass(\"k-event-drag-hint\");\n\n\t if (event.inverseColor) {\n\t hint.addClass(INVERSE_COLOR_CLASS);\n\t }\n\n\t view._appendMoveHint(hint);\n\t }\n\t });\n\n\t var MonthGroupedByDateView = kendo.Class.extend({\n\t init: function(view) {\n\t this._view = view;\n\t },\n\n\t _verticalRowCountForLevel: function() {\n\t return 1;\n\t },\n\n\t _horizontalGroupCountForLevel: function(level) {\n\t var view = this._view;\n\n\t return view._columnCountForLevel(level + 1) / NUMBER_OF_COLUMNS;\n\t },\n\n\t _createRows: function(start, startIdx, horizontalGroupCount) {\n\t var view = this._view;\n\t var cellsPerRow = NUMBER_OF_COLUMNS;\n\t var isVerticallyGrouped = view._isVerticallyGrouped();\n\t var html = \"\";\n\t var dateIdx = 0;\n\n\t if (isVerticallyGrouped) {\n\t var verticalStart = new Date(start);\n\t var groupCount = view._groupCount();\n\t for (dateIdx; dateIdx < NUMBER_OF_ROWS; dateIdx++) {\n\t html += view._createRow(verticalStart, startIdx, groupCount, dateIdx);\n\n\t verticalStart = kendo.date.addDays(verticalStart, cellsPerRow);\n\t }\n\t start = kendo.date.nextDay(start);\n\t } else {\n\t for (dateIdx; dateIdx < cellsPerRow; dateIdx++) {\n\t html += view._createRow(start, startIdx, horizontalGroupCount, dateIdx);\n\t start = kendo.date.nextDay(start);\n\t }\n\t start = kendo.date.addDays(start, cellsPerRow);\n\t }\n\n\t return html;\n\t },\n\n\t _adjustStartDate: function(start, isLastRow) {\n\t var view = this._view;\n\t var isVerticallyGrouped = view._isVerticallyGrouped();\n\n\t if (isVerticallyGrouped) {\n\t if (isLastRow) {\n\t return kendo.date.addDays(start, NUMBER_OF_COLUMNS * (NUMBER_OF_ROWS - 1) + 1);\n\t } else {\n\t return kendo.date.nextDay(start);\n\t }\n\t }\n\n\t return kendo.date.addDays(start, NUMBER_OF_COLUMNS);\n\t },\n\n\t _getContent: function(content, startDate, resources, cellIdx) {\n\t if (cellIdx === 0) {\n\t return content({ date: startDate, resources: resources });\n\t }\n\t return \"\";\n\t },\n\n\t _getTimeSlotByPosition: function(x, y, groupIndex) {\n\t var group = this._view.groups[groupIndex];\n\n\t return group.daySlotByPosition(x, y, true);\n\t },\n\n\t _nextSlotStartDate: function(startDate) {\n\t return startDate;\n\t },\n\n\t _getCalendarRowsLength: function() {\n\t var view = this._view;\n\t var isVerticallyGrouped = view._isVerticallyGrouped();\n\n\t return isVerticallyGrouped ? NUMBER_OF_COLUMNS : NUMBER_OF_ROWS;\n\t },\n\n\t _createRowsLayout: function(resources, rows, groupHeaderTemplate, columns) {\n\t var view = this._view;\n\n\t return view._createDateLayout(columns, null, false);\n\t },\n\n\t _createVerticalColumnsLayout: function(resources, rows, groupHeaderTemplate) {\n\t var view = this._view;\n\t var resource = resources[0];\n\t var configuration = [];\n\t var data = resource.dataSource.view();\n\n\t for (var dataIndex = 0; dataIndex < data.length * NUMBER_OF_ROWS; dataIndex++) {\n\t var value = kendo.getter(resource.dataValueField)(data[dataIndex % data.length]);\n\t var obj = {\n\t text: groupHeaderTemplate({\n\t text: kendo.htmlEncode(kendo.getter(resource.dataTextField)(data[dataIndex % data.length])),\n\t color: kendo.getter(resource.dataColorField)(data[dataIndex % data.length]),\n\t field: resource.field,\n\t title: resource.title,\n\t name: resource.name,\n\t value: value\n\t }),\n\t className: \"k-slot-cell\",\n\t value: value\n\t };\n\n\t obj.columns = view._createColumnsLayout(resources.slice(1), null, groupHeaderTemplate, null, null, value);\n\n\t configuration.push(obj);\n\t }\n\n\t return configuration;\n\t },\n\n\t _createColumnsLayout: function(resources, columns, groupHeaderTemplate, subColumns) {\n\t var view = this._view;\n\n\t return view._createColumnsLayout(resources, columns, groupHeaderTemplate, subColumns, true);\n\t },\n\n\t _verticalGroupCount: function(level) {\n\t var view = this._view;\n\n\t return view._columnCountForLevel(level) / NUMBER_OF_ROWS;\n\t },\n\n\t _horizontalGroupCount: function(level) {\n\t var view = this._view;\n\t return view._columnCountForLevel(level) / NUMBER_OF_COLUMNS;\n\t },\n\n\t _positionMobileEvent: function(event, group, range, rangeCount, start, end){\n\t var view = this._view;\n\t var startIndex = range.start.index;\n\t var endIndex = range.end.index;\n\n\t for (var i = range.start.index; i <= range.end.index; i++) {\n\t var currentSlot = range.collection._slots[i];\n\t var dateRange = group.daySlotRanges(currentSlot.start, currentSlot.start, true)[0];\n\n\t var occurrence = event.clone({\n\t start: i === startIndex ? start: currentSlot.startDate(),\n\t end: i === endIndex ? end : currentSlot.endDate(),\n\t head: i !== endIndex || range.head,\n\t tail: i !== startIndex || range.tail });\n\n\t view._positionMobileEvent(dateRange, view._createEventElement(occurrence), group);\n\t }\n\t },\n\n\t _positionEvent: function(event, group, range, rangeCount, start, end){\n\t var view = this._view;\n\t var startIndex = range.start.index;\n\t var endIndex = range.end.index;\n\n\t for (var i = range.start.index; i <= range.end.index; i++) {\n\t var currentSlot = range.collection._slots[i];\n\t var dateRange = group.daySlotRanges(currentSlot.start, currentSlot.start, true)[0];\n\n\t var occurrence = event.clone({\n\t start: i === startIndex ? start: currentSlot.startDate(),\n\t end: i === endIndex ? end : currentSlot.endDate(),\n\t head: i !== endIndex || range.head,\n\t tail: i !== startIndex || range.tail });\n\n\t view._positionEvent(dateRange, view._createEventElement(occurrence), group);\n\t }\n\t },\n\n\t _addDaySlotCollections: function(groupCount, tableRows, startDate) {\n\t var view = this._view;\n\t var columnCount = NUMBER_OF_COLUMNS;\n\t var rowCount = NUMBER_OF_ROWS;\n\t var isVerticallyGrouped = view._isVerticallyGrouped();\n\n\t for (var dateIndex = 0; dateIndex < columnCount; dateIndex++) {\n\t for (var rowIndex = 0; rowIndex < rowCount; rowIndex++) {\n\t var groupIndex = 0;\n\t var currentTableIndex = isVerticallyGrouped ? dateIndex : rowIndex;\n\t var tableRow = tableRows[currentTableIndex];\n\t var cells = tableRow.children;\n\t var cellMultiplier = 0;\n\n\t tableRow.setAttribute(\"role\", \"row\");\n\n\t if (!view._isVerticallyGrouped()) {\n\t cellMultiplier = dateIndex;\n\t }\n\n\t for (var cellIndex = cellMultiplier * groupCount; cellIndex < (cellMultiplier + 1) * groupCount; cellIndex++) {\n\t var cellCount = (rowIndex * columnCount) + dateIndex;\n\t var currentCellIndex = isVerticallyGrouped ? cellIndex + (rowIndex * groupCount) : cellIndex;\n\t var cell = cells[currentCellIndex];\n\t var currentGroupIndex = isVerticallyGrouped ? cellIndex : groupIndex;\n\t var group = view.groups[currentGroupIndex];\n\t var collection;\n\t if (dateIndex === 0) {\n\t collection = group.addDaySlotCollection(kendo.date.addDays(startDate, cellCount), kendo.date.addDays(startDate, cellCount + columnCount));\n\t } else {\n\t collection = group._daySlotCollections[rowIndex];\n\t }\n\n\t view.addDaySlot(collection, cell, startDate, cellCount);\n\t groupIndex++;\n\t }\n\t }\n\t }\n\t },\n\n\t _changePeriodGroupIndex: function(reverse, vertical, selectionGroupIndex){\n\t var view = this._view;\n\n\t if (vertical && view._isVerticallyGrouped()){\n\t return reverse ? view.groups.length - 1 : 0;\n\t }\n\n\t return selectionGroupIndex;\n\t },\n\n\t _createResizeHint: function(range) {\n\t var view = this._view;\n\t var left, top, width, height, hint;\n\n\t if (view._isVerticallyGrouped()) {\n\t left = range.startSlot().offsetLeft;\n\t top = range.start.offsetTop;\n\t width = range.startSlot().offsetWidth;\n\t height = range.endSlot().offsetTop + range.startSlot().offsetHeight - range.startSlot().offsetTop - 2;\n\t hint = SchedulerView.fn._createResizeHint.call(view, left, top, width, height);\n\n\t view._appendResizeHint(hint);\n\t } else {\n\t for (var slotIdx = range.startSlot().index; slotIdx <= range.endSlot().index; slotIdx++) {\n\t var slot = range.collection._slots[slotIdx];\n\t left = slot.offsetLeft;\n\t top = slot.offsetTop;\n\t width = slot.offsetWidth;\n\t height = slot.offsetHeight - 2;\n\t hint = SchedulerView.fn._createResizeHint.call(view, left, top, width, height);\n\n\t view._appendResizeHint(hint);\n\t }\n\t }\n\t },\n\n\t _createMoveHint: function(range, event) {\n\t var view = this._view;\n\t var startSlot = range.startSlot();\n\t var endSlot = range.endSlot();\n\n\t for (var slotIdx = startSlot.index; slotIdx <= endSlot.index; slotIdx++) {\n\t var slot = range.collection._slots[slotIdx];\n\t var hint = view._createEventElement(event.clone({ head: range.head, tail: range.tail }));\n\n\t hint.css({\n\t left: slot.offsetLeft,\n\t top: slot.offsetTop + slot.firstChildHeight,\n\t height: (view.options.eventHeight === \"auto\") ? 25 : view.options.eventHeight,\n\t width: slot.offsetWidth - 2\n\t });\n\n\t hint.addClass(\"k-event-drag-hint\");\n\n\t if (event.inverseColor) {\n\t hint.addClass(INVERSE_COLOR_CLASS);\n\t }\n\n\t view._appendMoveHint(hint);\n\t }\n\t }\n\t });\n\n\t kendo.ui.scheduler.MonthGroupedView = MonthGroupedView;\n\t kendo.ui.scheduler.MonthGroupedByDateView = MonthGroupedByDateView;\n\n\t ui.MonthView = SchedulerView.extend({\n\t init: function(element, options) {\n\t var that = this;\n\n\t // Do not allow less than one event\n\t if (options.eventsPerDay === 0) {\n\t options.eventsPerDay = 1;\n\t }\n\n\t // Do not allow 0 height events\n\t if (options.eventHeight === 0) {\n\t options.eventHeight = 1;\n\t }\n\n\t // Do not allow 0 height more-button\n\t if (options.moreButtonHeight === 0) {\n\t options.moreButtonHeight = 1;\n\t }\n\n\t // Do not allow string values other than auto\n\t if (typeof options.eventHeight === \"string\" && options.eventHeight !== \"auto\") {\n\t options.eventHeight = 25;\n\t }\n\n\t // Set adaptiveSlotHeight to true if eventHeight is auto\n\t if (options.eventHeight === \"auto\") {\n\t options.adaptiveSlotHeight = true;\n\t }\n\n\t SchedulerView.fn.init.call(that, element, options);\n\t that._groupedView = that._getGroupedView();\n\n\t // Exception handling for invalid combinations\n\t var isGroupedByDate = this._isGroupedByDate();\n\t var adaptiveSlotHeight = this.options.adaptiveSlotHeight;\n\t var eventHeight = this.options.eventHeight;\n\n\t if (isGroupedByDate === true && adaptiveSlotHeight === true) {\n\t throw new Error(\"Incompatible options: adaptive slot height and date grouping!\");\n\t }\n\n\t if (isGroupedByDate === true && eventHeight === \"auto\") {\n\t throw new Error(\"Incompatible options: auto event height and date grouping!\");\n\t }\n\n\t that.title = that.options.title;\n\n\t that._templates();\n\n\t that._editable();\n\n\t that._renderLayout(that.options.date);\n\n\t that._groups();\n\t },\n\n\t name: \"month\",\n\n\t _getGroupedView: function(){\n\t if (this._isGroupedByDate()){\n\t return new kendo.ui.scheduler.MonthGroupedByDateView(this);\n\t } else {\n\t return new kendo.ui.scheduler.MonthGroupedView(this);\n\t }\n\t },\n\n\t _updateDirection: function(selection, ranges, multiple, reverse, vertical) {\n\t if (multiple) {\n\t var startSlot = ranges[0].start;\n\t var endSlot = ranges[ranges.length - 1].end;\n\t var isSameSlot = startSlot.index === endSlot.index;\n\t var isSameCollection = startSlot.collectionIndex === endSlot.collectionIndex;\n\t var updateDirection;\n\n\t if (vertical) {\n\t updateDirection = (isSameSlot && isSameCollection) || isSameCollection;\n\t } else {\n\t updateDirection = isSameSlot && isSameCollection;\n\t }\n\n\t if (updateDirection) {\n\t selection.backward = reverse;\n\t }\n\t }\n\t },\n\n\t _changeDate: function(selection, slot, previous) {\n\t var group = this.groups[selection.groupIndex];\n\t var collections, index;\n\n\t if (previous) {\n\t collections = group._getCollections(group.daySlotCollectionCount());\n\t index = slot.collectionIndex - 1;\n\n\t if (index >= 0) {\n\t return collections[index]._slots[collections[index]._slots.length - 1];\n\t }\n\t } else {\n\t collections = group._getCollections(group.daySlotCollectionCount());\n\t index = slot.collectionIndex + 1;\n\t var slotIndex = 0;\n\n\t if (collections[index] && collections[index]._slots[slotIndex]) {\n\t return collections[index]._slots[slotIndex];\n\t }\n\t }\n\t },\n\n\t _getNextHorizontalRange: function(group, method, horizontalRange){\n\t var isVertical = this._isVerticallyGrouped();\n\n\t horizontalRange.startSlot = group[method](horizontalRange.startSlot, isVertical);\n\t horizontalRange.endSlot = group[method](horizontalRange.endSlot, isVertical);\n\n\t return horizontalRange;\n\t },\n\n\t _getNextVerticalRange: function(group, method, verticalRange, multiple){\n\t var isVertical = this._isVerticallyGrouped() && this._isGroupedByDate();\n\n\t verticalRange.startSlot = group[method](verticalRange.startSlot, multiple, isVertical);\n\t verticalRange.endSlot = group[method](verticalRange.endSlot, multiple, isVertical);\n\n\t return verticalRange;\n\t },\n\n\t _changeViewPeriod: function(selection, reverse, vertical) {\n\t var pad = vertical ? 7 : 1;\n\t var newStart, newEnd;\n\n\t if (reverse) {\n\t pad *= -1;\n\t }\n\n\t newStart = kendo.date.addDays(selection.start, pad);\n\t newEnd = kendo.date.addDays(selection.end, pad);\n\n\t if (this._isInRange(newStart, newEnd)){\n\t return false;\n\t }\n\n\t selection.start = newStart;\n\t selection.end = newEnd;\n\n\t if (!vertical || (vertical && this._isVerticallyGrouped())) {\n\t selection.groupIndex = this._groupedView._changePeriodGroupIndex(reverse, vertical, selection.groupIndex);\n\t }\n\n\t selection.events = [];\n\n\t return true;\n\t },\n\n\t _continuousSlot: function(selection, ranges, reverse) {\n\t var index = selection.backward ? 0 : ranges.length - 1;\n\t var group = this.groups[selection.groupIndex];\n\n\t return group.continuousSlot(ranges[index].start, reverse);\n\t },\n\n\t _changeGroupContinuously: function(selection, continuousSlot, multiple, reverse) {\n\t if (!multiple) {\n\t var groupIndex = selection.groupIndex;\n\t var lastGroupIndex = this.groups.length - 1;\n\t var vertical = this._isVerticallyGrouped();\n\t var group = this.groups[groupIndex];\n\n\t if (!continuousSlot && vertical) {\n\n\t continuousSlot = group[reverse ? \"lastSlot\" : \"firstSlot\"]();\n\n\t groupIndex += (reverse ? -1 : 1);\n\n\t } else if (continuousSlot && !vertical) {\n\t groupIndex = reverse ? lastGroupIndex : 0;\n\t }\n\n\t if (groupIndex < 0 || groupIndex > lastGroupIndex) {\n\t groupIndex = reverse ? lastGroupIndex : 0;\n\t continuousSlot = null;\n\t }\n\n\t selection.groupIndex = groupIndex;\n\t }\n\n\t return continuousSlot;\n\t },\n\n\t _normalizeHorizontalSelection: function(selection, ranges, reverse) {\n\t var slot;\n\n\t if (reverse) {\n\t slot = ranges[0].start;\n\t } else {\n\t slot = ranges[ranges.length - 1].end;\n\t }\n\n\t return slot;\n\t },\n\n\t _normalizeVerticalSelection: function(selection, ranges) {\n\t var slot;\n\n\t if (selection.backward) {\n\t slot = ranges[0].start;\n\t } else {\n\t slot = ranges[ranges.length - 1].end;\n\t }\n\n\t return slot;\n\t },\n\n\t _templates: function() {\n\t var options = this.options,\n\t settings = extend({}, kendo.Template, options.templateSettings);\n\n\t this.eventTemplate = this._eventTmpl(options.eventTemplate, EVENT_WRAPPER_STRING);\n\t this.dayTemplate = kendo.template(options.dayTemplate, settings);\n\t this.groupHeaderTemplate = kendo.template(options.groupHeaderTemplate, settings);\n\t },\n\n\t dateForTitle: function() {\n\t return kendo.format(this.options.selectedDateFormat, this._firstDayOfMonth, this._lastDayOfMonth);\n\t },\n\n\t shortDateForTitle: function() {\n\t return kendo.format(this.options.selectedShortDateFormat, this._firstDayOfMonth, this._lastDayOfMonth);\n\t },\n\n\t mobileDateForTitle: function () {\n\t return kendo.format(this.options.selectedMobileDateFormat, this._firstDayOfMonth, this._lastDayOfMonth);\n\t },\n\n\t nextDate: function() {\n\t return kendo.date.nextDay(this._lastDayOfMonth);\n\t },\n\n\t previousDate: function() {\n\t return kendo.date.previousDay(this._firstDayOfMonth);\n\t },\n\n\t startDate: function() {\n\t return this._startDate;\n\t },\n\n\t endDate: function() {\n\t return this._endDate;\n\t },\n\n\t _renderLayout: function(date) {\n\t var that = this;\n\n\t this._firstDayOfMonth = kendo.date.firstDayOfMonth(date);\n\n\t this._lastDayOfMonth = kendo.date.lastDayOfMonth(date);\n\n\t this._startDate = firstVisibleMonthDay(date, this.calendarInfo());\n\n\t this.createLayout(this._layout());\n\n\t this._content();\n\n\t this._initSlotHeight();\n\n\t this.refreshLayout();\n\n\t if(this._isVirtualized()) {\n\t this._tryRenderContent();\n\t }\n\n\t this.content.on(\"click\" + NS, \".k-nav-day,.k-more-events\", function(e) {\n\t var offset = $(e.currentTarget).offset();\n\t var slot = that._slotByPosition(offset.left, offset.top);\n\n\t e.preventDefault();\n\t that.trigger(\"navigate\", { view: \"day\", date: slot.startDate() });\n\t });\n\n\t this._footer();\n\t },\n\n\t _editable: function() {\n\t if (this.options.editable) {\n\t if (this._isMobile()) {\n\t this._touchEditable();\n\t } else {\n\t this._mouseEditable();\n\t }\n\n\t }\n\t },\n\n\t _mouseEditable: function() {\n\t var that = this;\n\t that.element.on(\"click\" + NS, \".k-scheduler-monthview .k-event a:has(.k-i-close)\", function(e) {\n\t that.trigger(\"remove\", { uid: $(this).closest(\".k-event\").attr(kendo.attr(\"uid\")) });\n\t e.preventDefault();\n\t });\n\n\t if (that.options.editable.create !== false) {\n\t that.element.on(\"dblclick\" + NS, \".k-scheduler-monthview .k-scheduler-content td\", function(e) {\n\t var offset = $(e.currentTarget).offset();\n\t var slot = that._slotByPosition(offset.left, offset.top);\n\n\t if (slot) {\n\t var resourceInfo = that._resourceBySlot(slot);\n\t that.trigger(\"add\", { eventInfo: extend({ isAllDay: true, start: slot.startDate(), end: slot.startDate() }, resourceInfo ) });\n\t }\n\n\t e.preventDefault();\n\t });\n\t }\n\n\t if (that.options.editable.update !== false) {\n\t that.element.on(\"dblclick\" + NS, \".k-scheduler-monthview .k-event\", function(e) {\n\t that.trigger(\"edit\", { uid: $(this).closest(\".k-event\").attr(kendo.attr(\"uid\")) });\n\t e.preventDefault();\n\t });\n\t }\n\t },\n\n\t _touchEditable: function() {\n\t var that = this;\n\t var threshold = 0;\n\n\t if (kendo.support.mobileOS.android) {\n\t threshold = 5;\n\t }\n\n\t if (that.options.editable.create !== false) {\n\t that._addUserEvents = new kendo.UserEvents(that.element, {\n\t threshold: threshold,\n\t useClickAsTap: !kendo.support.browser.edge,\n\t filter: \".k-scheduler-monthview .k-scheduler-content td\",\n\t tap: function(e) {\n\t if (that._scrolling) {\n\t return;\n\t }\n\t var offset = $(e.target).offset();\n\t var slot = that._slotByPosition(offset.left, offset.top);\n\n\t if (slot) {\n\t var resourceInfo = that._resourceBySlot(slot);\n\t that.trigger(\"add\", { eventInfo: extend({ isAllDay: true, start: slot.startDate(), end: slot.startDate() }, resourceInfo ) });\n\t }\n\n\t e.preventDefault();\n\t }\n\t });\n\t }\n\t },\n\n\t selectionByElement: function(cell) {\n\t var offset = $(cell).offset();\n\t return this._slotByPosition(offset.left, offset.top);\n\t },\n\n\t _columnCountForLevel: function(level) {\n\t var columnLevel = this.columnLevels[level];\n\t return columnLevel ? columnLevel.length : 0;\n\t },\n\n\t _rowCountForLevel: function(level) {\n\t var rowLevel = this.rowLevels[level];\n\t return rowLevel ? rowLevel.length : 0;\n\t },\n\n\t _content: function() {\n\t var html = '';\n\t var verticalGroupCount = 1;\n\t var groupedView = this._groupedView;\n\t var resources = this.groupedResources;\n\n\t if (resources.length) {\n\t if (this._isVerticallyGrouped()) {\n\t verticalGroupCount = groupedView._verticalRowCountForLevel(resources.length - 1);\n\t }\n\t }\n\n\t for (var verticalGroupIdx = 0; verticalGroupIdx < verticalGroupCount; verticalGroupIdx++) {\n\t html += this._createCalendar(verticalGroupIdx);\n\t this._cachedGroupIndex = verticalGroupIdx;\n\t }\n\n\t html += \"\";\n\n\t this.content.find(\"table\").html(html);\n\t },\n\n\t _virtualContent: function(){\n\t var that = this;\n\t var html = '';\n\n\t html += this._createCalendar(++this._cachedGroupIndex);\n\n\t that.content.find(\"table tbody\").append(html);\n\n\t that._initSlotHeight();\n\t },\n\n\t _calcSlotHeight: function(eventsPerDay) {\n\t var options = this.options;\n\t var eventHeight = options.eventHeight;\n\t var eventSpacing = options.eventSpacing;\n\t var moreButtonHeight = options.moreButtonHeight;\n\t var firstCell = this.content.find(\"table tr td\")[0];\n\t var dateHeader;\n\n\t if (eventHeight === \"auto\" || !firstCell) {\n\t return undefined;\n\t }\n\n\t dateHeader = firstCell.firstChild;\n\n\t return Math.round(\n\t // border of cell\n\t ( firstCell.offsetHeight - firstCell.clientHeight ) +\n\n\t // top padding\n\t dateHeader.offsetTop +\n\n\t // height of date header\n\t dateHeader.offsetHeight +\n\n\t // cell inner spacing\n\t CELL_INNER_SPACING +\n\n\t // all visible events and spacing\n\t ( eventsPerDay * eventHeight ) + ( ( eventsPerDay - 1 ) * eventSpacing ) +\n\n\t // leading space, more button\n\t ( CELL_INNER_SPACING + moreButtonHeight ) +\n\n\t // traling spacing\n\t CELL_INNER_SPACING\n\t );\n\t },\n\n\t _initSlotHeight: function() {\n\t var options = this.options;\n\t var eventsPerDay = options.eventsPerDay;\n\t var eventHeight = options.eventHeight;\n\t var isMobile = this._isMobile();\n\t var table = this.content.find(\"table\");\n\t var rowHeight;\n\n\t if (isMobile) {\n\t return;\n\t }\n\n\t if (typeof eventHeight === \"number\") {\n\t table.addClass(\"k-scheduler-table-auto\");\n\n\t rowHeight = this._calcSlotHeight(eventsPerDay);\n\n\t table.find(\"tr\").height( rowHeight );\n\t }\n\t },\n\n\t _adjustSlotHeight: function(group) {\n\t var options = this.options;\n\t var eventHeight = options.eventHeight;\n\t var eventSpacing = options.eventSpacing;\n\t var moreButtonHeight = options.moreButtonHeight;\n\n\t if (this._canAdjustSlotHeight !== true) {\n\t return;\n\t }\n\n\t var weeks = group._daySlotCollections;\n\n\t this.content.find(\"table\").addClass(\"k-scheduler-table-auto\");\n\n\t weeks.forEach(function(week) {\n\t var events = week._events;\n\t var eventIndex = 0;\n\t var slots = week._slots;\n\t var firstSlot = slots[0];\n\t var weekOffsetTop = firstSlot.element.offsetTop;\n\t var weekHeight = 0;\n\n\t // Ensure event meta exists in each slot\n\t slots.forEach(function(slot) {\n\t if (!slot.eventMeta) {\n\t slot.eventMeta = [];\n\t slot.actualEventCount = 0;\n\t } else {\n\t slot.actualEventCount = slot.eventMeta.length;\n\t }\n\t });\n\n\t // Ensure spanning event meta is present in all related slots\n\t slots.forEach(function(slot, slotIndex) {\n\n\t slot.eventMeta.forEach(function(meta, eventIndex) {\n\n\t // Skip events not starting in this slot\n\t if (meta.startIndex !== slotIndex) {\n\t return;\n\t }\n\n\t // Skip non-spanning events\n\t if (meta.startIndex === meta.endIndex) {\n\t return;\n\t }\n\n\t // Copy spanning event meta in all related slots\n\t slots.slice(slotIndex, meta.endIndex + 1).forEach(function(adjSlot) {\n\n\t var adjMeta = adjSlot.eventMeta;\n\n\t if (adjMeta.indexOf(meta) > -1) {\n\t return;\n\t }\n\n\t // adjMeta.push(meta);\n\t adjMeta[adjMeta.length] = slot.eventMeta[eventIndex];\n\t adjSlot.actualEventCount = adjMeta.length;\n\t adjSlot.dirty = true;\n\t });\n\n\t });\n\n\t // Set correct order\n\t if (slot.dirty === true) {\n\t slot.eventMeta.sort(function(first, second) {\n\t return first.order - second.order;\n\t });\n\t delete slot.dirty;\n\t }\n\n\t });\n\n\t if (eventHeight === \"auto\") {\n\t slots.forEach(function(slot, slotIndex) { // jshint ignore:line\n\t var slotHeight = slot.firstChildTop + slot.firstChildHeight + CELL_INNER_SPACING;\n\n\t slot.eventMeta.forEach(function(meta, eventIndex) { // jshint ignore:line\n\t meta.top = Math.max(meta.top, weekOffsetTop + slotHeight);\n\t slotHeight = (meta.top - weekOffsetTop) + eventSpacing + meta.height;\n\t });\n\t });\n\t }\n\n\t // Position events\n\t slots.forEach(function(slot, slotIndex) {\n\t var slotHeight = slot.firstChildTop + slot.firstChildHeight + CELL_INNER_SPACING;\n\n\t slot.eventMeta.forEach(function(meta) {\n\t meta.top = Math.max(meta.top, weekOffsetTop + slotHeight);\n\t slotHeight = (meta.top - weekOffsetTop) + eventSpacing + meta.height;\n\n\t if (meta.startIndex === slotIndex) {\n\t events[eventIndex].element[0].style.top = meta.top + \"px\";\n\t eventIndex++;\n\t }\n\t });\n\n\t if (slot.eventMeta.length > 0) {\n\t slotHeight -= eventSpacing;\n\t slotHeight += CELL_INNER_SPACING;\n\t } else {\n\t slotHeight += (eventHeight === \"auto\" ? 25 : eventHeight);\n\t }\n\n\t if (slot.more) {\n\t slot.more[0].style.top = weekOffsetTop + slotHeight + \"px\";\n\t slotHeight += CELL_INNER_SPACING + moreButtonHeight;\n\t }\n\n\t weekHeight = Math.max(weekHeight, slotHeight + 1);\n\n\t });\n\n\t // Update slot size and meta\n\t firstSlot.element.parentNode.style.height = weekHeight + \"px\";\n\t slots.forEach(function(slot) {\n\t slot.offsetTop = weekOffsetTop;\n\t slot.offsetHeight = weekHeight;\n\t slot.clientHeight = weekHeight - 1;\n\t });\n\n\t }.bind(this));\n\t },\n\n\t _createCalendar: function(verticalGroupIndex) {\n\t var start = this.startDate();\n\t var cellCount = NUMBER_OF_COLUMNS*NUMBER_OF_ROWS;\n\t var cellsPerRow = NUMBER_OF_COLUMNS;\n\t var weekStartDates = [start];\n\t var html = '';\n\t var horizontalGroupCount = 1;\n\t var isVerticallyGrouped = this._isVerticallyGrouped();\n\t var groupedView = this._groupedView;\n\n\t var resources = this.groupedResources;\n\n\t if (resources.length) {\n\t if (!isVerticallyGrouped) {\n\t horizontalGroupCount = groupedView._horizontalGroupCountForLevel(resources.length - 1);\n\t }\n\t }\n\n\t this._slotIndices = {};\n\n\t var calendarRowsLength = groupedView._getCalendarRowsLength(cellsPerRow, cellCount);\n\n\t for (var rowIdx = 0; rowIdx < calendarRowsLength; rowIdx++) {\n\t html += \"\";\n\n\t weekStartDates.push(start);\n\n\t var startIdx = rowIdx*cellsPerRow;\n\n\t html += groupedView._createRows(start, startIdx, horizontalGroupCount, verticalGroupIndex);\n\t start = groupedView._adjustStartDate(start, rowIdx === calendarRowsLength - 1);\n\n\t html += \"\";\n\t }\n\n\t this._weekStartDates = weekStartDates;\n\t this._endDate = kendo.date.previousDay(start);\n\n\t return html;\n\t },\n\n\t _createRow: function(startDate, startIdx, cellsPerRow, groupIndex) {\n\t var that = this;\n\t var min = that._firstDayOfMonth;\n\t var max = that._lastDayOfMonth;\n\t var content = that.dayTemplate;\n\t var classes = \"\";\n\t var html = \"\";\n\t var groupedView = this._groupedView;\n\n\t var resources = function() {\n\t return that._resourceBySlot({ groupIndex: groupIndex });\n\t };\n\n\t for (var cellIdx = 0; cellIdx < cellsPerRow; cellIdx++) {\n\t classes = \"\";\n\n\t if (kendo.date.isToday(startDate)) {\n\t classes += \"k-today\";\n\t }\n\n\t if (!kendo.date.isInDateRange(startDate, min, max)) {\n\t classes += \" k-other-month\";\n\t }\n\n\t html += \"\";\n\t html += groupedView._getContent(content, startDate, resources, cellIdx);\n\t html += \"\";\n\n\t that._slotIndices[getDate(startDate).getTime()] = startIdx + cellIdx;\n\n\t startDate = groupedView._nextSlotStartDate(startDate);\n\t }\n\n\t return html;\n\t },\n\n\t _layout: function() {\n\t var calendarInfo = this.calendarInfo();\n\n\t var weekDayNames = this._isMobile() ? calendarInfo.days.namesShort.map(function (name) {\n\t return name[0];\n\t }) : calendarInfo.days.names;\n\n\t var names = shiftArray(weekDayNames, calendarInfo.firstDay);\n\t var columns = $.map(names, function(value) { return { text: value }; });\n\t var resources = this.groupedResources;\n\t var rows;\n\t var groupedView = this._groupedView;\n\n\t if (resources.length) {\n\t if (this._isVerticallyGrouped()) {\n\t var inner = []; //add hidden cells in order to sync the content rows\n\t for (var idx = 0; idx < 6; idx++) {\n\t inner.push({ text: \"
 
\", className: \"k-hidden k-slot-cell\" });\n\t }\n\t rows = groupedView._createRowsLayout(resources, inner, this.groupHeaderTemplate, columns);\n\t columns = groupedView._createVerticalColumnsLayout(resources, inner, this.groupHeaderTemplate, columns);\n\n\t } else {\n\t columns = groupedView._createColumnsLayout(resources, columns, this.groupHeaderTemplate, columns);\n\t }\n\t }\n\n\t return {\n\t columns: columns,\n\t rows: rows\n\t };\n\t },\n\n\t _createEventElement: function(event) {\n\t var options = this.options;\n\t var editable = options.editable;\n\n\t var isMobile = this._isMobile();\n\n\t event.showDelete = editable && editable.destroy !== false && !isMobile;\n\t event.resizable = editable && editable.resize !== false && !isMobile;\n\t event.ns = kendo.ns;\n\t event.resources = this.eventResources(event);\n\t event.inverseColor = false;\n\t event.messages = options.messages || { destroy: \"Delete\" };\n\n\t var element = $(this.eventTemplate(event));\n\n\t this.angular(\"compile\", function(){\n\t return {\n\t elements: element,\n\t data: [ { dataItem: event } ]\n\t };\n\t });\n\n\t return element;\n\t },\n\n\t _isInDateSlot: function(event) {\n\t var groups = this.groups[0];\n\t var slotStart = groups.firstSlot().start;\n\t var slotEnd = groups.lastSlot().end - 1;\n\n\t var startTime = kendo.date.toUtcTime(event.start);\n\t var endTime = kendo.date.toUtcTime(event.end);\n\n\t return (isInDateRange(startTime, slotStart, slotEnd) ||\n\t isInDateRange(endTime, slotStart, slotEnd) ||\n\t isInDateRange(slotStart, startTime, endTime) ||\n\t isInDateRange(slotEnd, startTime, endTime)) &&\n\t (!isInDateRange(endTime, slotStart, slotStart) || isInDateRange(endTime, startTime, startTime) || event.isAllDay );\n\t },\n\n\t _slotIndex: function(date) {\n\t return this._slotIndices[getDate(date).getTime()];\n\t },\n\n\t _positionMobileEvent: function(slotRange, element, group) {\n\t var startSlot = slotRange.start;\n\n\t if (slotRange.start.offsetLeft > slotRange.end.offsetLeft) {\n\t startSlot = slotRange.end;\n\t }\n\n\t var startIndex = slotRange.start.index;\n\t var endIndex = startIndex;\n\n\t var eventCount = 3;\n\t var events = SchedulerView.collidingEvents(slotRange.events(), startIndex, endIndex);\n\n\t events.push({element: element, start: startIndex, end: endIndex });\n\n\t var rows = SchedulerView.createRows(events);\n\n\t var slot = slotRange.collection.at(startIndex);\n\n\t var container = slot.container;\n\n\t if (!container) {\n\n\t container = $(kendo.format('
',\n\t startSlot.offsetTop + startSlot.firstChildTop + startSlot.firstChildHeight + \"px\",\n\t startSlot.offsetLeft + \"px\",\n\t startSlot.offsetWidth + \"px\"\n\t ));\n\n\t slot.container = container;\n\n\t this.content[0].appendChild(container[0]);\n\t }\n\n\t if (rows.length <= eventCount) {\n\t slotRange.addEvent({element: element, start: startIndex, end: endIndex, groupIndex: startSlot.groupIndex });\n\n\t group._continuousEvents.push({\n\t element: element,\n\t uid: element.attr(kendo.attr(\"uid\")),\n\t start: slotRange.start,\n\t end: slotRange.end\n\t });\n\n\t container[0].appendChild(element[0]);\n\t }\n\t },\n\n\t _positionEvent: function(slotRange, element, group) {\n\t var eventHeight = this.options.eventHeight;\n\t var eventSpacing = this.options.eventSpacing;\n\t var startSlot = slotRange.start;\n\n\t if (slotRange.start.offsetLeft > slotRange.end.offsetLeft) {\n\t startSlot = slotRange.end;\n\t }\n\n\t var startIndex = slotRange.start.index;\n\t var endIndex = slotRange.end.index;\n\t var eventCount = startSlot.eventCount;\n\t var events = SchedulerView.collidingEvents(slotRange.events(), startIndex, endIndex);\n\t var rightOffset = startIndex !== endIndex ? 3 : 2;\n\n\t events.push({element: element, start: startIndex, end: endIndex });\n\n\t var rows = SchedulerView.createRows(events);\n\n\t for (var idx = 0, length = Math.min(rows.length, eventCount); idx < length; idx++) {\n\t var rowEvents = rows[idx].events;\n\t var eventTop = (eventHeight === \"auto\")\n\t ? \"\" // jshint ignore:line\n\t : (\n\t startSlot.offsetTop +\n\t startSlot.firstChildTop +\n\t startSlot.firstChildHeight +\n\t CELL_INNER_SPACING +\n\t idx * (eventHeight + eventSpacing) +\n\t \"px\"\n\t );\n\n\t for (var j = 0, eventLength = rowEvents.length; j < eventLength; j++) {\n\t rowEvents[j].element[0].style.top = eventTop;\n\t rowEvents[j].element.attr(kendo.attr(\"order\"), idx);\n\t }\n\t }\n\n\t if (rows.length > eventCount) {\n\t for (var slotIndex = startIndex; slotIndex <= endIndex; slotIndex++) {\n\t var collection = slotRange.collection;\n\n\t var slot = collection.at(slotIndex);\n\n\t if (slot.more) {\n\t continue;\n\t }\n\n\t slot.more = $(MORE_BUTTON_TEMPLATE({\n\t ns: kendo.ns,\n\t start: slotIndex,\n\t end: slotIndex,\n\t width: slot.clientWidth - 2,\n\t left: slot.offsetLeft + 2,\n\t top: (eventHeight === \"auto\")\n\t ? \"\" // jshint ignore:line\n\t : (\n\t slot.offsetTop +\n\t slot.firstChildTop +\n\t slot.firstChildHeight +\n\t CELL_INNER_SPACING +\n\t (eventCount * eventHeight) +\n\t ( (eventCount - 1) * eventSpacing) +\n\t CELL_INNER_SPACING\n\t )\n\t }));\n\n\t this.content[0].appendChild(slot.more[0]);\n\t }\n\t } else {\n\t slotRange.addEvent({element: element, start: startIndex, end: endIndex, groupIndex: startSlot.groupIndex });\n\n\t element[0].style.width = slotRange.innerWidth() - rightOffset + \"px\";\n\t element[0].style.left = startSlot.offsetLeft + 2 + \"px\";\n\t element[0].style.height = (eventHeight === \"auto\") ? \"\" : eventHeight + \"px\";\n\n\t group._continuousEvents.push({\n\t element: element,\n\t uid: element.attr(kendo.attr(\"uid\")),\n\t start: slotRange.start,\n\t end: slotRange.end,\n\t order: parseInt(element.attr(kendo.attr(\"order\")), 10)\n\t });\n\n\t element.appendTo(this.content);\n\n\t this._inverseEventColor(element);\n\n\t // Add event meta to slot\n\t var _collectionIndex = slotRange.start.collectionIndex;\n\t var _startSlotIndex = slotRange.start.index;\n\t var _startSlot = group._daySlotCollections[_collectionIndex]._slots[_startSlotIndex];\n\n\t if (!_startSlot.eventMeta) {\n\t _startSlot.eventMeta = [];\n\t }\n\n\t _startSlot.eventMeta.push({\n\t height: (eventHeight === \"auto\") ? element.outerHeight() : eventHeight,\n\t top: 0,\n\t startIndex: _startSlotIndex,\n\t endIndex: slotRange.end.index,\n\t uid: element.attr(kendo.attr(\"uid\")),\n\t order: parseInt(element.attr(kendo.attr(\"order\")), 10)\n\t });\n\t }\n\t },\n\n\t _slotByPosition: function(x, y) {\n\t var offset = this.content.offset();\n\n\t x -= offset.left;\n\t y -= offset.top;\n\t y += this.content[0].scrollTop;\n\t x += this.content[0].scrollLeft;\n\n\t x = Math.ceil(x);\n\t y = Math.ceil(y);\n\n\t for (var groupIndex = 0; groupIndex < this.groups.length; groupIndex++) {\n\t var slot = this._groupedView._getTimeSlotByPosition(x, y, groupIndex);\n\n\t if (slot) {\n\t return slot;\n\t }\n\t }\n\n\t return null;\n\t },\n\n\t _appendResizeHint: function(hint) {\n\t hint.appendTo(this.content);\n\n\t this._resizeHint = this._resizeHint.add(hint);\n\t },\n\n\t _updateResizeHint: function(event, groupIndex, startTime, endTime) {\n\t this._removeResizeHint();\n\n\t var group = this.groups[groupIndex];\n\n\t var ranges = group.ranges(startTime, endTime, true, event.isAllDay);\n\n\t for (var rangeIndex = 0; rangeIndex < ranges.length; rangeIndex++) {\n\t this._groupedView._createResizeHint(ranges[rangeIndex]);\n\t }\n\n\t this._resizeHint.find(\".k-label-top,.k-label-bottom\").text(\"\");\n\n\t this._resizeHint.first().addClass(\"k-first\").find(\".k-label-top\").text(kendo.toString(kendo.timezone.toLocalDate(startTime), \"M/dd\"));\n\n\t this._resizeHint.last().addClass(\"k-last\").find(\".k-label-bottom\").text(kendo.toString(kendo.timezone.toLocalDate(endTime), \"M/dd\"));\n\t },\n\n\t _updateMoveHint: function(event, groupIndex, distance) {\n\t var start = kendo.date.toUtcTime(event.start) + distance;\n\n\t var end = start + event.duration();\n\n\t var group = this.groups[groupIndex];\n\n\t var ranges = group.ranges(start, end, true, event.isAllDay);\n\n\t this._removeMoveHint(event.uid);\n\n\t for (var rangeIndex = 0; rangeIndex < ranges.length; rangeIndex++) {\n\t this._groupedView._createMoveHint(ranges[rangeIndex], event);\n\t }\n\t },\n\n\t _appendMoveHint: function(hint) {\n\t hint.appendTo(this.content);\n\n\t this._moveHint = this._moveHint.add(hint);\n\t },\n\n\t _groups: function() {\n\t var groupCount = this._groupCount();\n\t var tableRows = this.content[0].getElementsByTagName(\"tr\");\n\t var startDate = this.startDate();\n\t this.groups = [];\n\n\t for (var idx = 0; idx < groupCount; idx++) {\n\t this._addResourceView(idx);\n\t }\n\n\t this._groupedView._addDaySlotCollections(groupCount, tableRows, startDate);\n\t },\n\n\n\t addDaySlot: function(collection, cell, startDate, cellCount){\n\t var start = kendo.date.addDays(startDate, cellCount);\n\t var end = kendo.date.MS_PER_DAY;\n\t var eventsPerDay = this.options.eventsPerDay;\n\n\t if (startDate.getHours() !== start.getHours()) {\n\t end += (startDate.getHours() - start.getHours()) * kendo.date.MS_PER_HOUR;\n\t }\n\n\t start = kendo.date.toUtcTime(start);\n\t end += start;\n\n\t cell.setAttribute(\"role\", \"gridcell\");\n\t cell.setAttribute(\"aria-selected\", false);\n\n\t collection.addDaySlot(cell, start, end, eventsPerDay);\n\t },\n\n\t render: function(events) {\n\t this.content.children(\".k-event,.k-more-events,.k-events-container\").remove();\n\n\t this._cachedEvents = events;\n\n\t this._groups();\n\n\t events = new kendo.data.Query(events)\n\t .sort([{ field: \"start\", dir: \"asc\" },{ field: \"end\", dir: \"desc\" }])\n\t .toArray()\n\t .filter(function(event) {\n\t return this._isInDateSlot(event);\n\t }.bind(this));\n\n\t var resources = this.groupedResources;\n\t var isMobile = this._isMobile();\n\t var isGroupedByDate = this._isGroupedByDate();\n\t var adaptiveSlotHeight = this.options.adaptiveSlotHeight;\n\n\t this._canAdjustSlotHeight = isMobile !== true && isGroupedByDate !== true && resources.length === 0 && adaptiveSlotHeight === true;\n\n\t if (resources.length) {\n\t this._renderGroups(events, resources, 0, 1);\n\t } else {\n\t this._renderEvents(events, 0);\n\t }\n\n\t this.refreshLayout();\n\t this.trigger(\"activate\");\n\t },\n\n\t _renderEvents: function(events, groupIndex) {\n\t var group = this.groups[groupIndex];\n\t var view = this._groupedView._view;\n\t var isMobile = view._isMobile();\n\n\t if(!group) {\n\t return;\n\t }\n\n\t if (!group._continuousEvents) {\n\t group._continuousEvents = [];\n\t }\n\n\t if (isMobile) {\n\n\t events.forEach(function(event) {\n\t var ranges = group.slotRanges(event, true);\n\t var range = ranges[0];\n\t var start = range.start.start;\n\t var end = range.end.end;\n\t var rangeStart = new Date(range.start.start);\n\t var rangeEnd = ranges[ranges.length - 1].end.end;\n\t var newStart = new Date(rangeStart);\n\t var newEnd = new Date(end);\n\n\t while (rangeStart.getTime() <= rangeEnd &&\n\t event.end >= kendo.timezone.toLocalDate(rangeStart) &&\n\t event.start <= kendo.timezone.toLocalDate(rangeEnd)){\n\t var dateRange = group.daySlotRanges(newStart.getTime(), newEnd.getTime(), true)[0];\n\t newEnd.setDate(newEnd.getDate() + 1);\n\t newStart.setDate(newStart.getDate() + 1);\n\n\t if (dateRange) {\n\t dateRange.head = null;\n\t dateRange.middle = null;\n\t dateRange.tail = null;\n\t this._groupedView._positionMobileEvent(event, group, dateRange, 1, start, end, 0);\n\t }\n\n\t rangeStart = kendo.date.addDays(rangeStart, 1);\n\t }\n\n\t }.bind(this));\n\n\t } else {\n\n\t events.forEach(function(event) {\n\t var range;\n\t var start = event.start;\n\t var end = event.end;\n\t var ranges = group.slotRanges(event, true);\n\t var rangeCount = ranges.length;\n\n\t for (var rangeIndex = 0; rangeIndex < rangeCount; rangeIndex++) {\n\t range = ranges[rangeIndex];\n\n\t this._groupedView._positionEvent(event, group, range, rangeCount, start, end, rangeIndex);\n\t }\n\n\t }.bind(this));\n\n\t if (this._canAdjustSlotHeight === true) {\n\t this._adjustSlotHeight(group);\n\t }\n\n\t }\n\t },\n\n\t _renderGroups: function(events, resources, offset, columnLevel, parentValue) {\n\t var resource = resources[0];\n\n\t if (resource) {\n\t var view = resource.dataSource.view();\n\n\t view = view.filter(function(item) {\n\t var itemParentValue = kendo.getter(resource.dataParentValueField)(item);\n\n\t return itemParentValue === null || itemParentValue === undefined || itemParentValue === parentValue;\n\t });\n\n\t for (var itemIdx = 0; itemIdx < view.length; itemIdx++) {\n\t var value = this._resourceValue(resource, view[itemIdx]);\n\n\t var tmp = new kendo.data.Query(events).filter({ field: resource.field, operator: SchedulerView.groupEqFilter(value) }).toArray();\n\n\t if (resources.length > 1) {\n\t offset = this._renderGroups(tmp, resources.slice(1), offset++, columnLevel + 1, value);\n\t } else {\n\t this._renderEvents(tmp, offset++);\n\t }\n\t }\n\t }\n\t return offset;\n\t },\n\n\t _groupCount: function() {\n\t var resources = this.groupedResources;\n\t var groupedView = this._groupedView;\n\n\t if (resources.length) {\n\t if (this._isVerticallyGrouped()) {\n\t return groupedView._verticalGroupCount(resources.length - 1);\n\t } else {\n\t return groupedView._horizontalGroupCount(resources.length);\n\t }\n\t }\n\t return 1;\n\t },\n\n\t _columnOffsetForResource: function(index) {\n\t return this._columnCountForLevel(index) / this._columnCountForLevel(index - 1);\n\t },\n\n\t destroy: function(){\n\t if (this.table) {\n\t this.table.removeClass(\"k-scheduler-monthview\");\n\t }\n\n\t if (this.content) {\n\t this.content.off(NS);\n\t }\n\n\t if (this.element) {\n\t this.element.off(NS);\n\t }\n\n\t SchedulerView.fn.destroy.call(this);\n\n\t if (this._isMobile() && this.options.editable) {\n\t if (this.options.editable.create !== false) {\n\t this._addUserEvents.destroy();\n\t }\n\t }\n\t },\n\n\t events: [\"remove\", \"add\", \"edit\", \"navigate\"],\n\n\t options: {\n\t title: \"Month\",\n\t name: \"month\",\n\t eventHeight: 25,\n\t moreButtonHeight: 13,\n\t editable: true,\n\t selectedDateFormat: \"{0:y}\",\n\t selectedShortDateFormat: \"{0:y}\",\n\t selectedMobileDateFormat: \"{0:MMMM}\",\n\t groupHeaderTemplate: \"#=text#\",\n\t dayTemplate: DAY_TEMPLATE,\n\t eventTemplate: EVENT_TEMPLATE,\n\t eventsPerDay: 2,\n\t adaptiveSlotHeight: false,\n\t eventSpacing: 3\n\t }\n\t });\n\n\n\t function shiftArray(array, idx) {\n\t return array.slice(idx).concat(array.slice(0, idx));\n\t }\n\n\t function firstVisibleMonthDay(date, calendarInfo) {\n\t var firstDay = calendarInfo.firstDay,\n\t firstVisibleDay = new Date(date.getFullYear(), date.getMonth(), 0, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n\n\t while (firstVisibleDay.getDay() != firstDay) {\n\t kendo.date.setTime(firstVisibleDay, -1 * MS_PER_DAY);\n\t }\n\n\t return firstVisibleDay;\n\t }\n\n\t function isInDateRange(value, min, max) {\n\t var msMin = min,\n\t msMax = max,\n\t msValue;\n\n\t msValue = value;\n\n\t return msValue >= msMin && msValue <= msMax;\n\t }\n\t})(window.kendo.jQuery);\n\n\treturn window.kendo;\n\n\t}, __webpack_require__(3));\n\n\n/***/ })\n\n/******/ });"],"sourceRoot":""}