diff --git a/js/dist/admin.js b/js/dist/admin.js index 2bdf9e89..013a27f6 100755 --- a/js/dist/admin.js +++ b/js/dist/admin.js @@ -1,2 +1,2 @@ -module.exports=function(e){var t={};function o(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,o),r.l=!0,r.exports}return o.m=e,o.c=t,o.d=function(e,t,n){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)o.d(n,r,function(t){return e[t]}.bind(null,r));return n},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=19)}({1:function(e,t){e.exports=flarum.core.compat.extend},19:function(e,t,o){"use strict";o.r(t);var n=o(1),r=o(7),a=o.n(r);app.initializers.add("fof/polls",function(){Object(n.extend)(a.a.prototype,"moderateItems",function(e){e.add("fof-polls",{icon:"fa fa-pencil-alt",label:app.translator.trans("fof-polls.admin.permissions.moderate"),permission:"discussion.polls"},95)}),Object(n.extend)(a.a.prototype,"startItems",function(e){e.add("fof-polls-start",{icon:"fa fa-signal",label:app.translator.trans("fof-polls.admin.permissions.start"),permission:"startPolls"},95)}),Object(n.extend)(a.a.prototype,"replyItems",function(e){e.add("fof-polls-edit",{icon:"fa fa-pencil-alt",label:app.translator.trans("fof-polls.admin.permissions.self_edit"),permission:"selfEditPolls"},70),e.add("fof-polls-vote",{icon:"fa fa-signal",label:app.translator.trans("fof-polls.admin.permissions.vote"),permission:"votePolls"},80)})})},7:function(e,t){e.exports=flarum.core.compat["components/PermissionGrid"]}}); +module.exports=function(e){var t={};function o(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,o),r.l=!0,r.exports}return o.m=e,o.c=t,o.d=function(e,t,n){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)o.d(n,r,function(t){return e[t]}.bind(null,r));return n},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=19)}({1:function(e,t){e.exports=flarum.core.compat.extend},19:function(e,t,o){"use strict";o.r(t);var n=o(1),r=o(6),a=o.n(r);app.initializers.add("fof/polls",function(){Object(n.extend)(a.a.prototype,"moderateItems",function(e){e.add("fof-polls",{icon:"fa fa-pencil-alt",label:app.translator.trans("fof-polls.admin.permissions.moderate"),permission:"discussion.polls"},95)}),Object(n.extend)(a.a.prototype,"startItems",function(e){e.add("fof-polls-start",{icon:"fa fa-signal",label:app.translator.trans("fof-polls.admin.permissions.start"),permission:"startPolls"},95)}),Object(n.extend)(a.a.prototype,"replyItems",function(e){e.add("fof-polls-edit",{icon:"fa fa-pencil-alt",label:app.translator.trans("fof-polls.admin.permissions.self_edit"),permission:"selfEditPolls"},70),e.add("fof-polls-vote",{icon:"fa fa-signal",label:app.translator.trans("fof-polls.admin.permissions.vote"),permission:"votePolls"},80)})})},6:function(e,t){e.exports=flarum.core.compat["components/PermissionGrid"]}}); //# sourceMappingURL=admin.js.map \ No newline at end of file diff --git a/js/dist/forum.js b/js/dist/forum.js index 49009aff..ff12912e 100755 --- a/js/dist/forum.js +++ b/js/dist/forum.js @@ -1,4 +1,4 @@ -module.exports=function(e){var t={};function n(o){if(t[o])return t[o].exports;var a=t[o]={i:o,l:!1,exports:{}};return e[o].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(o,a,function(t){return e[t]}.bind(null,a));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=18)}([function(e,t){e.exports=flarum.core.compat.Model},function(e,t){e.exports=flarum.core.compat.extend},function(e,t){e.exports=flarum.core.compat["components/Button"]},function(e,t){e.exports=flarum.core.compat["utils/mixin"]},function(e,t){e.exports=flarum.core.compat["components/CommentPost"]},function(e,t){e.exports=flarum.core.compat["components/Modal"]},function(e,t){e.exports=flarum.core.compat["components/DiscussionComposer"]},,function(e,t){e.exports=flarum.core.compat["components/Badge"]},function(e,t){e.exports=flarum.core.compat["components/DiscussionList"]},function(e,t){e.exports=flarum.core.compat["models/Discussion"]},function(e,t){e.exports=flarum.core.compat["components/Switch"]},function(e,t,n){ +module.exports=function(e){var t={};function n(o){if(t[o])return t[o].exports;var a=t[o]={i:o,l:!1,exports:{}};return e[o].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(o,a,function(t){return e[t]}.bind(null,a));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=18)}([function(e,t){e.exports=flarum.core.compat.Model},function(e,t){e.exports=flarum.core.compat.extend},function(e,t){e.exports=flarum.core.compat["components/Button"]},function(e,t){e.exports=flarum.core.compat["utils/mixin"]},function(e,t){e.exports=flarum.core.compat["components/Modal"]},function(e,t){e.exports=flarum.core.compat["components/DiscussionComposer"]},,function(e,t){e.exports=flarum.core.compat["components/CommentPost"]},function(e,t){e.exports=flarum.core.compat["components/Badge"]},function(e,t){e.exports=flarum.core.compat["components/DiscussionList"]},function(e,t){e.exports=flarum.core.compat["models/Discussion"]},function(e,t){e.exports=flarum.core.compat["components/Switch"]},function(e,t,n){ /* flatpickr v4.6.1, @license MIT */ e.exports=function(){"use strict"; /*! ***************************************************************************** @@ -14,5 +14,5 @@ e.exports=function(){"use strict"; See the Apache Version 2.0 License for specific language governing permissions and limitations under the License. - ***************************************************************************** */var e=function(){return(e=Object.assign||function(e){for(var t,n=1,o=arguments.length;n",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:"auto",positionElement:void 0,prevArrow:"",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1},o={weekdays:{shorthand:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],longhand:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},months:{shorthand:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],longhand:["January","February","March","April","May","June","July","August","September","October","November","December"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:function(e){var t=e%100;if(t>3&&t<21)return"th";switch(t%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}},rangeSeparator:" to ",weekAbbreviation:"Wk",scrollTitle:"Scroll to increment",toggleTitle:"Click to toggle",amPM:["AM","PM"],yearAriaLabel:"Year",time_24hr:!1},a=function(e){return("0"+e).slice(-2)},i=function(e){return!0===e?1:0};function r(e,t,n){var o;return void 0===n&&(n=!1),function(){var a=this,i=arguments;null!==o&&clearTimeout(o),o=window.setTimeout(function(){o=null,n||e.apply(a,i)},t),n&&!o&&e.apply(a,i)}}var l=function(e){return e instanceof Array?e:[e]};function s(e,t,n){if(!0===n)return e.classList.add(t);e.classList.remove(t)}function c(e,t,n){var o=window.document.createElement(e);return t=t||"",n=n||"",o.className=t,void 0!==n&&(o.textContent=n),o}function u(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function d(e,t){var n=c("div","numInputWrapper"),o=c("input","numInput "+e),a=c("span","arrowUp"),i=c("span","arrowDown");if(-1===navigator.userAgent.indexOf("MSIE 9.0")?o.type="number":(o.type="text",o.pattern="\\d*"),void 0!==t)for(var r in t)o.setAttribute(r,t[r]);return n.appendChild(o),n.appendChild(a),n.appendChild(i),n}var p=function(){},f=function(e,t,n){return n.months[t?"shorthand":"longhand"][e]},m={D:p,F:function(e,t,n){e.setMonth(n.months.longhand.indexOf(t))},G:function(e,t){e.setHours(parseFloat(t))},H:function(e,t){e.setHours(parseFloat(t))},J:function(e,t){e.setDate(parseFloat(t))},K:function(e,t,n){e.setHours(e.getHours()%12+12*i(new RegExp(n.amPM[1],"i").test(t)))},M:function(e,t,n){e.setMonth(n.months.shorthand.indexOf(t))},S:function(e,t){e.setSeconds(parseFloat(t))},U:function(e,t){return new Date(1e3*parseFloat(t))},W:function(e,t,n){var o=parseInt(t),a=new Date(e.getFullYear(),0,2+7*(o-1),0,0,0,0);return a.setDate(a.getDate()-a.getDay()+n.firstDayOfWeek),a},Y:function(e,t){e.setFullYear(parseFloat(t))},Z:function(e,t){return new Date(t)},d:function(e,t){e.setDate(parseFloat(t))},h:function(e,t){e.setHours(parseFloat(t))},i:function(e,t){e.setMinutes(parseFloat(t))},j:function(e,t){e.setDate(parseFloat(t))},l:p,m:function(e,t){e.setMonth(parseFloat(t)-1)},n:function(e,t){e.setMonth(parseFloat(t)-1)},s:function(e,t){e.setSeconds(parseFloat(t))},u:function(e,t){return new Date(parseFloat(t))},w:p,y:function(e,t){e.setFullYear(2e3+parseFloat(t))}},h={D:"(\\w+)",F:"(\\w+)",G:"(\\d\\d|\\d)",H:"(\\d\\d|\\d)",J:"(\\d\\d|\\d)\\w+",K:"",M:"(\\w+)",S:"(\\d\\d|\\d)",U:"(.+)",W:"(\\d\\d|\\d)",Y:"(\\d{4})",Z:"(.+)",d:"(\\d\\d|\\d)",h:"(\\d\\d|\\d)",i:"(\\d\\d|\\d)",j:"(\\d\\d|\\d)",l:"(\\w+)",m:"(\\d\\d|\\d)",n:"(\\d\\d|\\d)",s:"(\\d\\d|\\d)",u:"(.+)",w:"(\\d\\d|\\d)",y:"(\\d{2})"},g={Z:function(e){return e.toISOString()},D:function(e,t,n){return t.weekdays.shorthand[g.w(e,t,n)]},F:function(e,t,n){return f(g.n(e,t,n)-1,!1,t)},G:function(e,t,n){return a(g.h(e,t,n))},H:function(e){return a(e.getHours())},J:function(e,t){return void 0!==t.ordinal?e.getDate()+t.ordinal(e.getDate()):e.getDate()},K:function(e,t){return t.amPM[i(e.getHours()>11)]},M:function(e,t){return f(e.getMonth(),!0,t)},S:function(e){return a(e.getSeconds())},U:function(e){return e.getTime()/1e3},W:function(e,t,n){return n.getWeek(e)},Y:function(e){return e.getFullYear()},d:function(e){return a(e.getDate())},h:function(e){return e.getHours()%12?e.getHours()%12:12},i:function(e){return a(e.getMinutes())},j:function(e){return e.getDate()},l:function(e,t){return t.weekdays.longhand[e.getDay()]},m:function(e){return a(e.getMonth()+1)},n:function(e){return e.getMonth()+1},s:function(e){return e.getSeconds()},u:function(e){return e.getTime()},w:function(e){return e.getDay()},y:function(e){return String(e.getFullYear()).substring(2)}},v=function(e){var t=e.config,a=void 0===t?n:t,i=e.l10n,r=void 0===i?o:i;return function(e,t,n){var o=n||r;return void 0!==a.formatDate?a.formatDate(e,t,o):t.split("").map(function(t,n,i){return g[t]&&"\\"!==i[n-1]?g[t](e,o,a):"\\"!==t?t:""}).join("")}},D=function(e){var t=e.config,a=void 0===t?n:t,i=e.l10n,r=void 0===i?o:i;return function(e,t,o,i){if(0===e||e){var l,s=i||r,c=e;if(e instanceof Date)l=new Date(e.getTime());else if("string"!=typeof e&&void 0!==e.toFixed)l=new Date(e);else if("string"==typeof e){var u=t||(a||n).dateFormat,d=String(e).trim();if("today"===d)l=new Date,o=!0;else if(/Z$/.test(d)||/GMT$/.test(d))l=new Date(e);else if(a&&a.parseDate)l=a.parseDate(e,u);else{l=a&&a.noCalendar?new Date((new Date).setHours(0,0,0,0)):new Date((new Date).getFullYear(),0,1,0,0,0,0);for(var p=void 0,f=[],g=0,v=0,D="";gMath.min(t,n)&&er&&(u=n===g.hourElement?u-r-i(!g.amPM):o,p&&H(void 0,1,g.hourElement)),g.amPM&&d&&(1===l?u+s===23:Math.abs(u-s)>l)&&(g.amPM.textContent=g.l10n.amPM[i(g.amPM.textContent===g.l10n.amPM[0])]),n.value=a(u)}}(e);var t=g._input.value;k(),we(),g._input.value!==t&&g._debouncedChange()}function k(){if(void 0!==g.hourElement&&void 0!==g.minuteElement){var e,t,n=(parseInt(g.hourElement.value.slice(-2),10)||0)%24,o=(parseInt(g.minuteElement.value,10)||0)%60,a=void 0!==g.secondElement?(parseInt(g.secondElement.value,10)||0)%60:0;void 0!==g.amPM&&(e=n,t=g.amPM.textContent,n=e%12+12*i(t===g.l10n.amPM[1]));var r=void 0!==g.config.minTime||g.config.minDate&&g.minDateHasTime&&g.latestSelectedDateObj&&0===b(g.latestSelectedDateObj,g.config.minDate,!0),l=void 0!==g.config.maxTime||g.config.maxDate&&g.maxDateHasTime&&g.latestSelectedDateObj&&0===b(g.latestSelectedDateObj,g.config.maxDate,!0);if(l){var s=void 0!==g.config.maxTime?g.config.maxTime:g.config.maxDate;(n=Math.min(n,s.getHours()))===s.getHours()&&(o=Math.min(o,s.getMinutes())),o===s.getMinutes()&&(a=Math.min(a,s.getSeconds()))}if(r){var c=void 0!==g.config.minTime?g.config.minTime:g.config.minDate;(n=Math.max(n,c.getHours()))===c.getHours()&&(o=Math.max(o,c.getMinutes())),o===c.getMinutes()&&(a=Math.max(a,c.getSeconds()))}_(n,o,a)}}function T(e){var t=e||g.latestSelectedDateObj;t&&_(t.getHours(),t.getMinutes(),t.getSeconds())}function O(){var e=g.config.defaultHour,t=g.config.defaultMinute,n=g.config.defaultSeconds;if(void 0!==g.config.minDate){var o=g.config.minDate.getHours(),a=g.config.minDate.getMinutes();(e=Math.max(e,o))===o&&(t=Math.max(a,t)),e===o&&t===a&&(n=g.config.minDate.getSeconds())}if(void 0!==g.config.maxDate){var i=g.config.maxDate.getHours(),r=g.config.maxDate.getMinutes();(e=Math.min(e,i))===i&&(t=Math.min(r,t)),e===i&&t===r&&(n=g.config.maxDate.getSeconds())}_(e,t,n)}function _(e,t,n){void 0!==g.latestSelectedDateObj&&g.latestSelectedDateObj.setHours(e%24,t,n||0,0),g.hourElement&&g.minuteElement&&!g.isMobile&&(g.hourElement.value=a(g.config.time_24hr?e:(12+e)%12+12*i(e%12==0)),g.minuteElement.value=a(t),void 0!==g.amPM&&(g.amPM.textContent=g.l10n.amPM[i(e>=12)]),void 0!==g.secondElement&&(g.secondElement.value=a(n)))}function I(e){var t=parseInt(e.target.value)+(e.delta||0);(t/1e3>1||"Enter"===e.key&&!/[^\d]/.test(t.toString()))&&ee(t)}function N(e,t,n,o){return t instanceof Array?t.forEach(function(t){return N(e,t,n,o)}):e instanceof Array?e.forEach(function(e){return N(e,t,n,o)}):(e.addEventListener(t,n,o),void g._handlers.push({element:e,event:t,handler:n,options:o}))}function S(e){return function(t){1===t.which&&e(t)}}function F(){ge("onChange")}function j(){if(g.config.wrap&&["open","close","toggle","clear"].forEach(function(e){Array.prototype.forEach.call(g.element.querySelectorAll("[data-"+e+"]"),function(t){return N(t,"click",g[e])})}),g.isMobile)!function(){var e=g.config.enableTime?g.config.noCalendar?"time":"datetime-local":"date";g.mobileInput=c("input",g.input.className+" flatpickr-mobile"),g.mobileInput.step=g.input.getAttribute("step")||"any",g.mobileInput.tabIndex=1,g.mobileInput.type=e,g.mobileInput.disabled=g.input.disabled,g.mobileInput.required=g.input.required,g.mobileInput.placeholder=g.input.placeholder,g.mobileFormatStr="datetime-local"===e?"Y-m-d\\TH:i:S":"date"===e?"Y-m-d":"H:i:S",g.selectedDates.length>0&&(g.mobileInput.defaultValue=g.mobileInput.value=g.formatDate(g.selectedDates[0],g.mobileFormatStr)),g.config.minDate&&(g.mobileInput.min=g.formatDate(g.config.minDate,"Y-m-d")),g.config.maxDate&&(g.mobileInput.max=g.formatDate(g.config.maxDate,"Y-m-d")),g.input.type="hidden",void 0!==g.altInput&&(g.altInput.type="hidden");try{g.input.parentNode&&g.input.parentNode.insertBefore(g.mobileInput,g.input.nextSibling)}catch(e){}N(g.mobileInput,"change",function(e){g.setDate(e.target.value,!1,g.mobileFormatStr),ge("onChange"),ge("onClose")})}();else{var e=r(ie,50);g._debouncedChange=r(F,M),g.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&N(g.daysContainer,"mouseover",function(e){"range"===g.config.mode&&ae(e.target)}),N(window.document.body,"keydown",oe),g.config.inline||g.config.static||N(window,"resize",e),void 0!==window.ontouchstart?N(window.document,"touchstart",X):N(window.document,"mousedown",S(X)),N(window.document,"focus",X,{capture:!0}),!0===g.config.clickOpens&&(N(g._input,"focus",g.open),N(g._input,"mousedown",S(g.open))),void 0!==g.daysContainer&&(N(g.monthNav,"mousedown",S(Me)),N(g.monthNav,["keyup","increment"],I),N(g.daysContainer,"mousedown",S(pe))),void 0!==g.timeContainer&&void 0!==g.minuteElement&&void 0!==g.hourElement&&(N(g.timeContainer,["increment"],P),N(g.timeContainer,"blur",P,{capture:!0}),N(g.timeContainer,"mousedown",S(Y)),N([g.hourElement,g.minuteElement],["focus","click"],function(e){return e.target.select()}),void 0!==g.secondElement&&N(g.secondElement,"focus",function(){return g.secondElement&&g.secondElement.select()}),void 0!==g.amPM&&N(g.amPM,"mousedown",S(function(e){P(e),F()})))}}function A(e,t){var n=void 0!==e?g.parseDate(e):g.latestSelectedDateObj||(g.config.minDate&&g.config.minDate>g.now?g.config.minDate:g.config.maxDate&&g.config.maxDate11)]),g.amPM.title=g.l10n.toggleTitle,g.amPM.tabIndex=-1,g.timeContainer.appendChild(g.amPM)),g.timeContainer}()),s(g.calendarContainer,"rangeMode","range"===g.config.mode),s(g.calendarContainer,"animate",!0===g.config.animate),s(g.calendarContainer,"multiMonth",g.config.showMonths>1),g.calendarContainer.appendChild(e);var r=void 0!==g.config.appendTo&&void 0!==g.config.appendTo.nodeType;if((g.config.inline||g.config.static)&&(g.calendarContainer.classList.add(g.config.inline?"inline":"static"),g.config.inline&&(!r&&g.element.parentNode?g.element.parentNode.insertBefore(g.calendarContainer,g._input.nextSibling):void 0!==g.config.appendTo&&g.config.appendTo.appendChild(g.calendarContainer)),g.config.static)){var l=c("div","flatpickr-wrapper");g.element.parentNode&&g.element.parentNode.insertBefore(l,g.element),l.appendChild(g.element),g.altInput&&l.appendChild(g.altInput),l.appendChild(g.calendarContainer)}g.config.static||g.config.inline||(void 0!==g.config.appendTo?g.config.appendTo:window.document.body).appendChild(g.calendarContainer)}function B(e,t,n,o){var a=te(t,!0),i=c("span","flatpickr-day "+e,t.getDate().toString());return i.dateObj=t,i.$i=o,i.setAttribute("aria-label",g.formatDate(t,g.config.ariaDateFormat)),-1===e.indexOf("hidden")&&0===b(t,g.now)&&(g.todayDateElem=i,i.classList.add("today"),i.setAttribute("aria-current","date")),a?(i.tabIndex=-1,De(t)&&(i.classList.add("selected"),g.selectedDateElem=i,"range"===g.config.mode&&(s(i,"startRange",g.selectedDates[0]&&0===b(t,g.selectedDates[0],!0)),s(i,"endRange",g.selectedDates[1]&&0===b(t,g.selectedDates[1],!0)),"nextMonthDay"===e&&i.classList.add("inRange")))):i.classList.add("flatpickr-disabled"),"range"===g.config.mode&&function(e){return!("range"!==g.config.mode||g.selectedDates.length<2)&&b(e,g.selectedDates[0])>=0&&b(e,g.selectedDates[1])<=0}(t)&&!De(t)&&i.classList.add("inRange"),g.weekNumbers&&1===g.config.showMonths&&"prevMonthDay"!==e&&n%7==1&&g.weekNumbers.insertAdjacentHTML("beforeend",""+g.config.getWeek(t)+""),ge("onDayCreate",i),i}function q(e){e.focus(),"range"===g.config.mode&&ae(e)}function W(e){for(var t=e>0?0:g.config.showMonths-1,n=e>0?g.config.showMonths:-1,o=t;o!=n;o+=e)for(var a=g.daysContainer.children[o],i=e>0?0:a.children.length-1,r=e>0?a.children.length:-1,l=i;l!=r;l+=e){var s=a.children[l];if(-1===s.className.indexOf("hidden")&&te(s.dateObj))return s}}function R(e,t){var n=ne(document.activeElement||document.body),o=void 0!==e?e:n?document.activeElement:void 0!==g.selectedDateElem&&ne(g.selectedDateElem)?g.selectedDateElem:void 0!==g.todayDateElem&&ne(g.todayDateElem)?g.todayDateElem:W(t>0?1:-1);return void 0===o?g._input.focus():n?void function(e,t){for(var n=-1===e.className.indexOf("Month")?e.dateObj.getMonth():g.currentMonth,o=t>0?g.config.showMonths:-1,a=t>0?1:-1,i=n-g.currentMonth;i!=o;i+=a)for(var r=g.daysContainer.children[i],l=n-g.currentMonth===i?e.$i+t:t<0?r.children.length-1:0,s=r.children.length,c=l;c>=0&&c0?s:-1);c+=a){var u=r.children[c];if(-1===u.className.indexOf("hidden")&&te(u.dateObj)&&Math.abs(e.$i-c)>=Math.abs(t))return q(u)}g.changeMonth(a),R(W(a),0)}(o,t):q(o)}function V(e,t){for(var n=(new Date(e,t,1).getDay()-g.l10n.firstDayOfWeek+7)%7,o=g.utils.getDaysInMonth((t-1+12)%12),a=g.utils.getDaysInMonth(t),i=window.document.createDocumentFragment(),r=g.config.showMonths>1,l=r?"prevMonthDay hidden":"prevMonthDay",s=r?"nextMonthDay hidden":"nextMonthDay",u=o+1-n,d=0;u<=o;u++,d++)i.appendChild(B(l,new Date(e,t-1,u),u,d));for(u=1;u<=a;u++,d++)i.appendChild(B("",new Date(e,t,u),u,d));for(var p=a+1;p<=42-n&&(1===g.config.showMonths||d%7!=0);p++,d++)i.appendChild(B(s,new Date(e,t+1,p%a),p,d));var f=c("div","dayContainer");return f.appendChild(i),f}function J(){if(void 0!==g.daysContainer){u(g.daysContainer),g.weekNumbers&&u(g.weekNumbers);for(var e=document.createDocumentFragment(),t=0;t1)){var e=function(e){return!(void 0!==g.config.minDate&&g.currentYear===g.config.minDate.getFullYear()&&eg.config.maxDate.getMonth())};g.monthsDropdownContainer.tabIndex=-1,g.monthsDropdownContainer.innerHTML="";for(var t=0;t<12;t++)if(e(t)){var n=c("option","flatpickr-monthDropdown-month");n.value=new Date(g.currentYear,t).getMonth().toString(),n.textContent=f(t,!1,g.l10n),n.tabIndex=-1,g.currentMonth===t&&(n.selected=!0),g.monthsDropdownContainer.appendChild(n)}}}function U(){var e,t=c("div","flatpickr-month"),n=window.document.createDocumentFragment();g.config.showMonths>1?e=c("span","cur-month"):(g.monthsDropdownContainer=c("select","flatpickr-monthDropdown-months"),N(g.monthsDropdownContainer,"change",function(e){var t=e.target,n=parseInt(t.value,10);g.changeMonth(n-g.currentMonth),ge("onMonthChange")}),K(),e=g.monthsDropdownContainer);var o=d("cur-year",{tabindex:"-1"}),a=o.getElementsByTagName("input")[0];a.setAttribute("aria-label",g.l10n.yearAriaLabel),g.config.minDate&&a.setAttribute("min",g.config.minDate.getFullYear().toString()),g.config.maxDate&&(a.setAttribute("max",g.config.maxDate.getFullYear().toString()),a.disabled=!!g.config.minDate&&g.config.minDate.getFullYear()===g.config.maxDate.getFullYear());var i=c("div","flatpickr-current-month");return i.appendChild(e),i.appendChild(o),n.appendChild(i),t.appendChild(n),{container:t,yearElement:a,monthElement:e}}function $(){u(g.monthNav),g.monthNav.appendChild(g.prevMonthNav),g.config.showMonths&&(g.yearElements=[],g.monthElements=[]);for(var e=g.config.showMonths;e--;){var t=U();g.yearElements.push(t.yearElement),g.monthElements.push(t.monthElement),g.monthNav.appendChild(t.container)}g.monthNav.appendChild(g.nextMonthNav)}function z(){g.weekdayContainer?u(g.weekdayContainer):g.weekdayContainer=c("div","flatpickr-weekdays");for(var e=g.config.showMonths;e--;){var t=c("div","flatpickr-weekdaycontainer");g.weekdayContainer.appendChild(t)}return G(),g.weekdayContainer}function G(){var e=g.l10n.firstDayOfWeek,t=g.l10n.weekdays.shorthand.slice();e>0&&e\n "+t.join("")+"\n \n "}function Z(e,t){void 0===t&&(t=!0);var n=t?e:e-g.currentMonth;n<0&&!0===g._hidePrevMonthArrow||n>0&&!0===g._hideNextMonthArrow||(g.currentMonth+=n,(g.currentMonth<0||g.currentMonth>11)&&(g.currentYear+=g.currentMonth>11?1:-1,g.currentMonth=(g.currentMonth+12)%12,ge("onYearChange"),K()),J(),ge("onMonthChange"),be())}function Q(e){return!(!g.config.appendTo||!g.config.appendTo.contains(e))||g.calendarContainer.contains(e)}function X(e){if(g.isOpen&&!g.config.inline){var t=function(e){if("function"==typeof e.composedPath){var t=e.composedPath();return t[0]}return e.target}(e),n=Q(t),o=t===g.input||t===g.altInput||g.element.contains(t)||e.path&&e.path.indexOf&&(~e.path.indexOf(g.input)||~e.path.indexOf(g.altInput)),a="blur"===e.type?o&&e.relatedTarget&&!Q(e.relatedTarget):!o&&!n&&!Q(e.relatedTarget),i=!g.config.ignoredFocusElements.some(function(e){return e.contains(t)});a&&i&&(g.close(),"range"===g.config.mode&&1===g.selectedDates.length&&(g.clear(!1),g.redraw()))}}function ee(e){if(!(!e||g.config.minDate&&eg.config.maxDate.getFullYear())){var t=e,n=g.currentYear!==t;g.currentYear=t||g.currentYear,g.config.maxDate&&g.currentYear===g.config.maxDate.getFullYear()?g.currentMonth=Math.min(g.config.maxDate.getMonth(),g.currentMonth):g.config.minDate&&g.currentYear===g.config.minDate.getFullYear()&&(g.currentMonth=Math.max(g.config.minDate.getMonth(),g.currentMonth)),n&&(g.redraw(),ge("onYearChange"),K())}}function te(e,t){void 0===t&&(t=!0);var n=g.parseDate(e,void 0,t);if(g.config.minDate&&n&&b(n,g.config.minDate,void 0!==t?t:!g.minDateHasTime)<0||g.config.maxDate&&n&&b(n,g.config.maxDate,void 0!==t?t:!g.maxDateHasTime)>0)return!1;if(0===g.config.enable.length&&0===g.config.disable.length)return!0;if(void 0===n)return!1;for(var o=g.config.enable.length>0,a=o?g.config.enable:g.config.disable,i=0,r=void 0;i=r.from.getTime()&&n.getTime()<=r.to.getTime())return o}return!o}function ne(e){return void 0!==g.daysContainer&&-1===e.className.indexOf("hidden")&&g.daysContainer.contains(e)}function oe(e){var t=e.target===g._input,n=g.config.allowInput,o=g.isOpen&&(!n||!t),a=g.config.inline&&t&&!n;if(13===e.keyCode&&t){if(n)return g.setDate(g._input.value,!0,e.target===g.altInput?g.config.altFormat:g.config.dateFormat),e.target.blur();g.open()}else if(Q(e.target)||o||a){var i=!!g.timeContainer&&g.timeContainer.contains(e.target);switch(e.keyCode){case 13:i?(e.preventDefault(),P(),de()):pe(e);break;case 27:e.preventDefault(),de();break;case 8:case 46:t&&!g.config.allowInput&&(e.preventDefault(),g.clear());break;case 37:case 39:if(i||t)g.hourElement&&g.hourElement.focus();else if(e.preventDefault(),void 0!==g.daysContainer&&(!1===n||document.activeElement&&ne(document.activeElement))){var r=39===e.keyCode?1:-1;e.ctrlKey?(e.stopPropagation(),Z(r),R(W(1),0)):R(void 0,r)}break;case 38:case 40:e.preventDefault();var l=40===e.keyCode?1:-1;g.daysContainer&&void 0!==e.target.$i||e.target===g.input?e.ctrlKey?(e.stopPropagation(),ee(g.currentYear-l),R(W(1),0)):i||R(void 0,7*l):e.target===g.currentYearElement?ee(g.currentYear-l):g.config.enableTime&&(!i&&g.hourElement&&g.hourElement.focus(),P(e),g._debouncedChange());break;case 9:if(i){var s=[g.hourElement,g.minuteElement,g.secondElement,g.amPM].concat(g.pluginElements).filter(function(e){return e}),c=s.indexOf(e.target);if(-1!==c){var u=s[c+(e.shiftKey?-1:1)];e.preventDefault(),(u||g._input).focus()}}else!g.config.noCalendar&&g.daysContainer&&g.daysContainer.contains(e.target)&&e.shiftKey&&(e.preventDefault(),g._input.focus())}}if(void 0!==g.amPM&&e.target===g.amPM)switch(e.key){case g.l10n.amPM[0].charAt(0):case g.l10n.amPM[0].charAt(0).toLowerCase():g.amPM.textContent=g.l10n.amPM[0],k(),we();break;case g.l10n.amPM[1].charAt(0):case g.l10n.amPM[1].charAt(0).toLowerCase():g.amPM.textContent=g.l10n.amPM[1],k(),we()}(t||Q(e.target))&&ge("onKeyDown",e)}function ae(e){if(1===g.selectedDates.length&&(!e||e.classList.contains("flatpickr-day")&&!e.classList.contains("flatpickr-disabled"))){for(var t=e?e.dateObj.getTime():g.days.firstElementChild.dateObj.getTime(),n=g.parseDate(g.selectedDates[0],void 0,!0).getTime(),o=Math.min(t,g.selectedDates[0].getTime()),a=Math.max(t,g.selectedDates[0].getTime()),i=!1,r=0,l=0,s=o;so&&sr)?r=s:s>n&&(!l||s0&&d0&&d>l;return p?(s.classList.add("notAllowed"),["inRange","startRange","endRange"].forEach(function(e){s.classList.remove(e)}),"continue"):i&&!p?"continue":(["startRange","inRange","endRange","notAllowed"].forEach(function(e){s.classList.remove(e)}),void(void 0!==e&&(e.classList.add(t<=g.selectedDates[0].getTime()?"startRange":"endRange"),nt&&d===n&&s.classList.add("endRange"),d>=r&&(0===l||d<=l)&&y(d,n,t)&&s.classList.add("inRange"))))},p=0,f=u.children.length;p0||n.getMinutes()>0||n.getSeconds()>0),g.selectedDates&&(g.selectedDates=g.selectedDates.filter(function(e){return te(e)}),g.selectedDates.length||"min"!==e||T(n),we()),g.daysContainer&&(ue(),void 0!==n?g.currentYearElement[e]=n.getFullYear().toString():g.currentYearElement.removeAttribute(e),g.currentYearElement.disabled=!!o&&void 0!==n&&o.getFullYear()===n.getFullYear())}}function se(){"object"!=typeof g.config.locale&&void 0===E.l10ns[g.config.locale]&&g.config.errorHandler(new Error("flatpickr: invalid locale "+g.config.locale)),g.l10n=e({},E.l10ns.default,"object"==typeof g.config.locale?g.config.locale:"default"!==g.config.locale?E.l10ns[g.config.locale]:void 0),h.K="("+g.l10n.amPM[0]+"|"+g.l10n.amPM[1]+"|"+g.l10n.amPM[0].toLowerCase()+"|"+g.l10n.amPM[1].toLowerCase()+")";var t=e({},m,JSON.parse(JSON.stringify(p.dataset||{})));void 0===t.time_24hr&&void 0===E.defaultConfig.time_24hr&&(g.config.time_24hr=g.l10n.time_24hr),g.formatDate=v(g),g.parseDate=D({config:g.config,l10n:g.l10n})}function ce(e){if(void 0!==g.calendarContainer){ge("onPreCalendarPosition");var t=e||g._positionElement,n=Array.prototype.reduce.call(g.calendarContainer.children,function(e,t){return e+t.offsetHeight},0),o=g.calendarContainer.offsetWidth,a=g.config.position.split(" "),i=a[0],r=a.length>1?a[1]:null,l=t.getBoundingClientRect(),c=window.innerHeight-l.bottom,u="above"===i||"below"!==i&&cn,d=window.pageYOffset+l.top+(u?-n-2:t.offsetHeight+2);if(s(g.calendarContainer,"arrowTop",!u),s(g.calendarContainer,"arrowBottom",u),!g.config.inline){var p=window.pageXOffset+l.left-(null!=r&&"center"===r?(o-l.width)/2:0),f=window.document.body.offsetWidth-l.right,m=p+o>window.document.body.offsetWidth,h=f+o>window.document.body.offsetWidth;if(s(g.calendarContainer,"rightMost",m),!g.config.static)if(g.calendarContainer.style.top=d+"px",m)if(h){var v=document.styleSheets[0];if(void 0===v)return;var D=window.document.body.offsetWidth,b=Math.max(0,D/2-o/2),y=v.cssRules.length,w="{left:"+l.left+"px;right:auto;}";s(g.calendarContainer,"rightMost",!1),s(g.calendarContainer,"centerMost",!0),v.insertRule(".flatpickr-calendar.centerMost:before,.flatpickr-calendar.centerMost:after"+w,y),g.calendarContainer.style.left=b+"px",g.calendarContainer.style.right="auto"}else g.calendarContainer.style.left="auto",g.calendarContainer.style.right=f+"px";else g.calendarContainer.style.left=p+"px",g.calendarContainer.style.right="auto"}}}function ue(){g.config.noCalendar||g.isMobile||(be(),J())}function de(){g._input.focus(),-1!==window.navigator.userAgent.indexOf("MSIE")||void 0!==navigator.msMaxTouchPoints?setTimeout(g.close,0):g.close()}function pe(e){e.preventDefault(),e.stopPropagation();var t=function e(t,n){return n(t)?t:t.parentNode?e(t.parentNode,n):void 0}(e.target,function(e){return e.classList&&e.classList.contains("flatpickr-day")&&!e.classList.contains("flatpickr-disabled")&&!e.classList.contains("notAllowed")});if(void 0!==t){var n=t,o=g.latestSelectedDateObj=new Date(n.dateObj.getTime()),a=(o.getMonth()g.currentMonth+g.config.showMonths-1)&&"range"!==g.config.mode;if(g.selectedDateElem=n,"single"===g.config.mode)g.selectedDates=[o];else if("multiple"===g.config.mode){var i=De(o);i?g.selectedDates.splice(parseInt(i),1):g.selectedDates.push(o)}else"range"===g.config.mode&&(2===g.selectedDates.length&&g.clear(!1,!1),g.latestSelectedDateObj=o,g.selectedDates.push(o),0!==b(o,g.selectedDates[0],!0)&&g.selectedDates.sort(function(e,t){return e.getTime()-t.getTime()}));if(k(),a){var r=g.currentYear!==o.getFullYear();g.currentYear=o.getFullYear(),g.currentMonth=o.getMonth(),r&&(ge("onYearChange"),K()),ge("onMonthChange")}if(be(),J(),we(),g.config.enableTime&&setTimeout(function(){return g.showTimeInput=!0},50),a||"range"===g.config.mode||1!==g.config.showMonths?void 0!==g.selectedDateElem&&void 0===g.hourElement&&g.selectedDateElem&&g.selectedDateElem.focus():q(n),void 0!==g.hourElement&&void 0!==g.hourElement&&g.hourElement.focus(),g.config.closeOnSelect){var l="single"===g.config.mode&&!g.config.enableTime,s="range"===g.config.mode&&2===g.selectedDates.length&&!g.config.enableTime;(l||s)&&de()}F()}}g.parseDate=D({config:g.config,l10n:g.l10n}),g._handlers=[],g.pluginElements=[],g.loadedPlugins=[],g._bind=N,g._setHoursFromDate=T,g._positionCalendar=ce,g.changeMonth=Z,g.changeYear=ee,g.clear=function(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0),g.input.value="",void 0!==g.altInput&&(g.altInput.value=""),void 0!==g.mobileInput&&(g.mobileInput.value=""),g.selectedDates=[],g.latestSelectedDateObj=void 0,!0===t&&(g.currentYear=g._initialDate.getFullYear(),g.currentMonth=g._initialDate.getMonth()),g.showTimeInput=!1,!0===g.config.enableTime&&O(),g.redraw(),e&&ge("onChange")},g.close=function(){g.isOpen=!1,g.isMobile||(void 0!==g.calendarContainer&&g.calendarContainer.classList.remove("open"),void 0!==g._input&&g._input.classList.remove("active")),ge("onClose")},g._createElement=c,g.destroy=function(){void 0!==g.config&&ge("onDestroy");for(var e=g._handlers.length;e--;){var t=g._handlers[e];t.element.removeEventListener(t.event,t.handler,t.options)}if(g._handlers=[],g.mobileInput)g.mobileInput.parentNode&&g.mobileInput.parentNode.removeChild(g.mobileInput),g.mobileInput=void 0;else if(g.calendarContainer&&g.calendarContainer.parentNode)if(g.config.static&&g.calendarContainer.parentNode){var n=g.calendarContainer.parentNode;if(n.lastChild&&n.removeChild(n.lastChild),n.parentNode){for(;n.firstChild;)n.parentNode.insertBefore(n.firstChild,n);n.parentNode.removeChild(n)}}else g.calendarContainer.parentNode.removeChild(g.calendarContainer);g.altInput&&(g.input.type="text",g.altInput.parentNode&&g.altInput.parentNode.removeChild(g.altInput),delete g.altInput),g.input&&(g.input.type=g.input._type,g.input.classList.remove("flatpickr-input"),g.input.removeAttribute("readonly"),g.input.value=""),["_showTimeInput","latestSelectedDateObj","_hideNextMonthArrow","_hidePrevMonthArrow","__hideNextMonthArrow","__hidePrevMonthArrow","isMobile","isOpen","selectedDateElem","minDateHasTime","maxDateHasTime","days","daysContainer","_input","_positionElement","innerContainer","rContainer","monthNav","todayDateElem","calendarContainer","weekdayContainer","prevMonthNav","nextMonthNav","monthsDropdownContainer","currentMonthElement","currentYearElement","navigationCurrentMonth","selectedDateElem","config"].forEach(function(e){try{delete g[e]}catch(e){}})},g.isEnabled=te,g.jumpToDate=A,g.open=function(e,t){if(void 0===t&&(t=g._positionElement),!0===g.isMobile)return e&&(e.preventDefault(),e.target&&e.target.blur()),void 0!==g.mobileInput&&(g.mobileInput.focus(),g.mobileInput.click()),void ge("onOpen");if(!g._input.disabled&&!g.config.inline){var n=g.isOpen;g.isOpen=!0,n||(g.calendarContainer.classList.add("open"),g._input.classList.add("active"),ge("onOpen"),ce(t)),!0===g.config.enableTime&&!0===g.config.noCalendar&&(0===g.selectedDates.length&&re(),!1!==g.config.allowInput||void 0!==e&&g.timeContainer.contains(e.relatedTarget)||setTimeout(function(){return g.hourElement.select()},50))}},g.redraw=ue,g.set=function(e,n){if(null!==e&&"object"==typeof e)for(var o in Object.assign(g.config,e),e)void 0!==fe[o]&&fe[o].forEach(function(e){return e()});else g.config[e]=n,void 0!==fe[e]?fe[e].forEach(function(e){return e()}):t.indexOf(e)>-1&&(g.config[e]=l(n));g.redraw(),we(!1)},g.setDate=function(e,t,n){if(void 0===t&&(t=!1),void 0===n&&(n=g.config.dateFormat),0!==e&&!e||e instanceof Array&&0===e.length)return g.clear(t);me(e,n),g.showTimeInput=g.selectedDates.length>0,g.latestSelectedDateObj=g.selectedDates[g.selectedDates.length-1],g.redraw(),A(),T(),0===g.selectedDates.length&&g.clear(!1),we(t),t&&ge("onChange")},g.toggle=function(e){if(!0===g.isOpen)return g.close();g.open(e)};var fe={locale:[se,G],showMonths:[$,x,z],minDate:[A],maxDate:[A]};function me(e,t){var n=[];if(e instanceof Array)n=e.map(function(e){return g.parseDate(e,t)});else if(e instanceof Date||"number"==typeof e)n=[g.parseDate(e,t)];else if("string"==typeof e)switch(g.config.mode){case"single":case"time":n=[g.parseDate(e,t)];break;case"multiple":n=e.split(g.config.conjunction).map(function(e){return g.parseDate(e,t)});break;case"range":n=e.split(g.l10n.rangeSeparator).map(function(e){return g.parseDate(e,t)})}else g.config.errorHandler(new Error("Invalid date supplied: "+JSON.stringify(e)));g.selectedDates=n.filter(function(e){return e instanceof Date&&te(e,!1)}),"range"===g.config.mode&&g.selectedDates.sort(function(e,t){return e.getTime()-t.getTime()})}function he(e){return e.slice().map(function(e){return"string"==typeof e||"number"==typeof e||e instanceof Date?g.parseDate(e,void 0,!0):e&&"object"==typeof e&&e.from&&e.to?{from:g.parseDate(e.from,void 0),to:g.parseDate(e.to,void 0)}:e}).filter(function(e){return e})}function ge(e,t){if(void 0!==g.config){var n=g.config[e];if(void 0!==n&&n.length>0)for(var o=0;n[o]&&o1?g.monthElements[t].textContent=f(n.getMonth(),g.config.shorthandCurrentMonth,g.l10n)+" ":g.monthsDropdownContainer.value=n.getMonth().toString(),e.value=n.getFullYear().toString()}),g._hidePrevMonthArrow=void 0!==g.config.minDate&&(g.currentYear===g.config.minDate.getFullYear()?g.currentMonth<=g.config.minDate.getMonth():g.currentYearg.config.maxDate.getMonth():g.currentYear>g.config.maxDate.getFullYear()))}function ye(e){return g.selectedDates.map(function(t){return g.formatDate(t,e)}).filter(function(e,t,n){return"range"!==g.config.mode||g.config.enableTime||n.indexOf(e)===t}).join("range"!==g.config.mode?g.config.conjunction:g.l10n.rangeSeparator)}function we(e){void 0===e&&(e=!0),void 0!==g.mobileInput&&g.mobileFormatStr&&(g.mobileInput.value=void 0!==g.latestSelectedDateObj?g.formatDate(g.latestSelectedDateObj,g.mobileFormatStr):""),g.input.value=ye(g.config.dateFormat),void 0!==g.altInput&&(g.altInput.value=ye(g.config.altFormat)),!1!==e&&ge("onValueUpdate")}function Me(e){var t=g.prevMonthNav.contains(e.target),n=g.nextMonthNav.contains(e.target);t||n?Z(t?-1:1):g.yearElements.indexOf(e.target)>=0?e.target.select():e.target.classList.contains("arrowUp")?g.changeYear(g.currentYear+1):e.target.classList.contains("arrowDown")&&g.changeYear(g.currentYear-1)}return function(){g.element=g.input=p,g.isOpen=!1,function(){var o=["wrap","weekNumbers","allowInput","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],a=e({},m,JSON.parse(JSON.stringify(p.dataset||{}))),i={};g.config.parseDate=a.parseDate,g.config.formatDate=a.formatDate,Object.defineProperty(g.config,"enable",{get:function(){return g.config._enable},set:function(e){g.config._enable=he(e)}}),Object.defineProperty(g.config,"disable",{get:function(){return g.config._disable},set:function(e){g.config._disable=he(e)}});var r="time"===a.mode;if(!a.dateFormat&&(a.enableTime||r)){var s=E.defaultConfig.dateFormat||n.dateFormat;i.dateFormat=a.noCalendar||r?"H:i"+(a.enableSeconds?":S":""):s+" H:i"+(a.enableSeconds?":S":"")}if(a.altInput&&(a.enableTime||r)&&!a.altFormat){var c=E.defaultConfig.altFormat||n.altFormat;i.altFormat=a.noCalendar||r?"h:i"+(a.enableSeconds?":S K":" K"):c+" h:i"+(a.enableSeconds?":S":"")+" K"}a.altInputClass||(g.config.altInputClass=g.input.className+" "+g.config.altInputClass),Object.defineProperty(g.config,"minDate",{get:function(){return g.config._minDate},set:le("min")}),Object.defineProperty(g.config,"maxDate",{get:function(){return g.config._maxDate},set:le("max")});var u=function(e){return function(t){g.config["min"===e?"_minTime":"_maxTime"]=g.parseDate(t,"H:i")}};Object.defineProperty(g.config,"minTime",{get:function(){return g.config._minTime},set:u("min")}),Object.defineProperty(g.config,"maxTime",{get:function(){return g.config._maxTime},set:u("max")}),"time"===a.mode&&(g.config.noCalendar=!0,g.config.enableTime=!0),Object.assign(g.config,i,a);for(var d=0;d-1?g.config[h]=l(f[h]).map(C).concat(g.config[h]):void 0===a[h]&&(g.config[h]=f[h])}ge("onParseConfig")}(),se(),g.input=g.config.wrap?p.querySelector("[data-input]"):p,g.input?(g.input._type=g.input.type,g.input.type="text",g.input.classList.add("flatpickr-input"),g._input=g.input,g.config.altInput&&(g.altInput=c(g.input.nodeName,g.config.altInputClass),g._input=g.altInput,g.altInput.placeholder=g.input.placeholder,g.altInput.disabled=g.input.disabled,g.altInput.required=g.input.required,g.altInput.tabIndex=g.input.tabIndex,g.altInput.type="text",g.input.setAttribute("type","hidden"),!g.config.static&&g.input.parentNode&&g.input.parentNode.insertBefore(g.altInput,g.input.nextSibling)),g.config.allowInput||g._input.setAttribute("readonly","readonly"),g._positionElement=g.config.positionElement||g._input):g.config.errorHandler(new Error("Invalid input element specified")),function(){g.selectedDates=[],g.now=g.parseDate(g.config.now)||new Date;var e=g.config.defaultDate||("INPUT"!==g.input.nodeName&&"TEXTAREA"!==g.input.nodeName||!g.input.placeholder||g.input.value!==g.input.placeholder?g.input.value:null);e&&me(e,g.config.dateFormat),g._initialDate=g.selectedDates.length>0?g.selectedDates[0]:g.config.minDate&&g.config.minDate.getTime()>g.now.getTime()?g.config.minDate:g.config.maxDate&&g.config.maxDate.getTime()0&&(g.latestSelectedDateObj=g.selectedDates[0]),void 0!==g.config.minTime&&(g.config.minTime=g.parseDate(g.config.minTime,"H:i")),void 0!==g.config.maxTime&&(g.config.maxTime=g.parseDate(g.config.maxTime,"H:i")),g.minDateHasTime=!!g.config.minDate&&(g.config.minDate.getHours()>0||g.config.minDate.getMinutes()>0||g.config.minDate.getSeconds()>0),g.maxDateHasTime=!!g.config.maxDate&&(g.config.maxDate.getHours()>0||g.config.maxDate.getMinutes()>0||g.config.maxDate.getSeconds()>0),Object.defineProperty(g,"showTimeInput",{get:function(){return g._showTimeInput},set:function(e){g._showTimeInput=e,g.calendarContainer&&s(g.calendarContainer,"showTimeInput",e),g.isOpen&&ce()}})}(),g.utils={getDaysInMonth:function(e,t){return void 0===e&&(e=g.currentMonth),void 0===t&&(t=g.currentYear),1===e&&(t%4==0&&t%100!=0||t%400==0)?29:g.l10n.daysInMonth[e]}},g.isMobile||L(),j(),(g.selectedDates.length||g.config.noCalendar)&&(g.config.enableTime&&T(g.config.noCalendar?g.latestSelectedDateObj||g.config.minDate:void 0),we(!1)),x(),g.showTimeInput=g.selectedDates.length>0||g.config.noCalendar;var o=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);!g.isMobile&&o&&ce(),ge("onReady")}(),g}function x(e,t){for(var n=Array.prototype.slice.call(e).filter(function(e){return e instanceof HTMLElement}),o=[],a=0;a=2?x.a.component({type:"button",className:"Button Button--warning PollModal--button",icon:"fas fa-minus",onclick:n>=2?e.removeOption.bind(e,n):""}):"")})},n.addOption=function(){var e=app.data["fof-polls.options.max"],t=e&&parseInt(e)||11;this.options.length=2?x.a.component({type:"button",className:"Button PollModal--button",icon:"fas fa-minus",onclick:n>=2?e.removeOption.bind(e,n):""}):"")})},n.addOption=function(){var e=app.data["fof-polls.options.max"],t=e&&parseInt(e)||11;this.options.length",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:"auto",positionElement:void 0,prevArrow:"",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1},o={weekdays:{shorthand:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],longhand:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},months:{shorthand:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],longhand:["January","February","March","April","May","June","July","August","September","October","November","December"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:function(e){var t=e%100;if(t>3&&t<21)return"th";switch(t%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}},rangeSeparator:" to ",weekAbbreviation:"Wk",scrollTitle:"Scroll to increment",toggleTitle:"Click to toggle",amPM:["AM","PM"],yearAriaLabel:"Year",time_24hr:!1},a=function(e){return("0"+e).slice(-2)},i=function(e){return!0===e?1:0};function r(e,t,n){var o;return void 0===n&&(n=!1),function(){var a=this,i=arguments;null!==o&&clearTimeout(o),o=window.setTimeout(function(){o=null,n||e.apply(a,i)},t),n&&!o&&e.apply(a,i)}}var l=function(e){return e instanceof Array?e:[e]};function s(e,t,n){if(!0===n)return e.classList.add(t);e.classList.remove(t)}function c(e,t,n){var o=window.document.createElement(e);return t=t||"",n=n||"",o.className=t,void 0!==n&&(o.textContent=n),o}function u(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function d(e,t){var n=c("div","numInputWrapper"),o=c("input","numInput "+e),a=c("span","arrowUp"),i=c("span","arrowDown");if(-1===navigator.userAgent.indexOf("MSIE 9.0")?o.type="number":(o.type="text",o.pattern="\\d*"),void 0!==t)for(var r in t)o.setAttribute(r,t[r]);return n.appendChild(o),n.appendChild(a),n.appendChild(i),n}var p=function(){},f=function(e,t,n){return n.months[t?"shorthand":"longhand"][e]},m={D:p,F:function(e,t,n){e.setMonth(n.months.longhand.indexOf(t))},G:function(e,t){e.setHours(parseFloat(t))},H:function(e,t){e.setHours(parseFloat(t))},J:function(e,t){e.setDate(parseFloat(t))},K:function(e,t,n){e.setHours(e.getHours()%12+12*i(new RegExp(n.amPM[1],"i").test(t)))},M:function(e,t,n){e.setMonth(n.months.shorthand.indexOf(t))},S:function(e,t){e.setSeconds(parseFloat(t))},U:function(e,t){return new Date(1e3*parseFloat(t))},W:function(e,t,n){var o=parseInt(t),a=new Date(e.getFullYear(),0,2+7*(o-1),0,0,0,0);return a.setDate(a.getDate()-a.getDay()+n.firstDayOfWeek),a},Y:function(e,t){e.setFullYear(parseFloat(t))},Z:function(e,t){return new Date(t)},d:function(e,t){e.setDate(parseFloat(t))},h:function(e,t){e.setHours(parseFloat(t))},i:function(e,t){e.setMinutes(parseFloat(t))},j:function(e,t){e.setDate(parseFloat(t))},l:p,m:function(e,t){e.setMonth(parseFloat(t)-1)},n:function(e,t){e.setMonth(parseFloat(t)-1)},s:function(e,t){e.setSeconds(parseFloat(t))},u:function(e,t){return new Date(parseFloat(t))},w:p,y:function(e,t){e.setFullYear(2e3+parseFloat(t))}},h={D:"(\\w+)",F:"(\\w+)",G:"(\\d\\d|\\d)",H:"(\\d\\d|\\d)",J:"(\\d\\d|\\d)\\w+",K:"",M:"(\\w+)",S:"(\\d\\d|\\d)",U:"(.+)",W:"(\\d\\d|\\d)",Y:"(\\d{4})",Z:"(.+)",d:"(\\d\\d|\\d)",h:"(\\d\\d|\\d)",i:"(\\d\\d|\\d)",j:"(\\d\\d|\\d)",l:"(\\w+)",m:"(\\d\\d|\\d)",n:"(\\d\\d|\\d)",s:"(\\d\\d|\\d)",u:"(.+)",w:"(\\d\\d|\\d)",y:"(\\d{2})"},g={Z:function(e){return e.toISOString()},D:function(e,t,n){return t.weekdays.shorthand[g.w(e,t,n)]},F:function(e,t,n){return f(g.n(e,t,n)-1,!1,t)},G:function(e,t,n){return a(g.h(e,t,n))},H:function(e){return a(e.getHours())},J:function(e,t){return void 0!==t.ordinal?e.getDate()+t.ordinal(e.getDate()):e.getDate()},K:function(e,t){return t.amPM[i(e.getHours()>11)]},M:function(e,t){return f(e.getMonth(),!0,t)},S:function(e){return a(e.getSeconds())},U:function(e){return e.getTime()/1e3},W:function(e,t,n){return n.getWeek(e)},Y:function(e){return e.getFullYear()},d:function(e){return a(e.getDate())},h:function(e){return e.getHours()%12?e.getHours()%12:12},i:function(e){return a(e.getMinutes())},j:function(e){return e.getDate()},l:function(e,t){return t.weekdays.longhand[e.getDay()]},m:function(e){return a(e.getMonth()+1)},n:function(e){return e.getMonth()+1},s:function(e){return e.getSeconds()},u:function(e){return e.getTime()},w:function(e){return e.getDay()},y:function(e){return String(e.getFullYear()).substring(2)}},v=function(e){var t=e.config,a=void 0===t?n:t,i=e.l10n,r=void 0===i?o:i;return function(e,t,n){var o=n||r;return void 0!==a.formatDate?a.formatDate(e,t,o):t.split("").map(function(t,n,i){return g[t]&&"\\"!==i[n-1]?g[t](e,o,a):"\\"!==t?t:""}).join("")}},D=function(e){var t=e.config,a=void 0===t?n:t,i=e.l10n,r=void 0===i?o:i;return function(e,t,o,i){if(0===e||e){var l,s=i||r,c=e;if(e instanceof Date)l=new Date(e.getTime());else if("string"!=typeof e&&void 0!==e.toFixed)l=new Date(e);else if("string"==typeof e){var u=t||(a||n).dateFormat,d=String(e).trim();if("today"===d)l=new Date,o=!0;else if(/Z$/.test(d)||/GMT$/.test(d))l=new Date(e);else if(a&&a.parseDate)l=a.parseDate(e,u);else{l=a&&a.noCalendar?new Date((new Date).setHours(0,0,0,0)):new Date((new Date).getFullYear(),0,1,0,0,0,0);for(var p=void 0,f=[],g=0,v=0,D="";gMath.min(t,n)&&er&&(u=n===g.hourElement?u-r-i(!g.amPM):o,p&&H(void 0,1,g.hourElement)),g.amPM&&d&&(1===l?u+s===23:Math.abs(u-s)>l)&&(g.amPM.textContent=g.l10n.amPM[i(g.amPM.textContent===g.l10n.amPM[0])]),n.value=a(u)}}(e);var t=g._input.value;k(),we(),g._input.value!==t&&g._debouncedChange()}function k(){if(void 0!==g.hourElement&&void 0!==g.minuteElement){var e,t,n=(parseInt(g.hourElement.value.slice(-2),10)||0)%24,o=(parseInt(g.minuteElement.value,10)||0)%60,a=void 0!==g.secondElement?(parseInt(g.secondElement.value,10)||0)%60:0;void 0!==g.amPM&&(e=n,t=g.amPM.textContent,n=e%12+12*i(t===g.l10n.amPM[1]));var r=void 0!==g.config.minTime||g.config.minDate&&g.minDateHasTime&&g.latestSelectedDateObj&&0===b(g.latestSelectedDateObj,g.config.minDate,!0),l=void 0!==g.config.maxTime||g.config.maxDate&&g.maxDateHasTime&&g.latestSelectedDateObj&&0===b(g.latestSelectedDateObj,g.config.maxDate,!0);if(l){var s=void 0!==g.config.maxTime?g.config.maxTime:g.config.maxDate;(n=Math.min(n,s.getHours()))===s.getHours()&&(o=Math.min(o,s.getMinutes())),o===s.getMinutes()&&(a=Math.min(a,s.getSeconds()))}if(r){var c=void 0!==g.config.minTime?g.config.minTime:g.config.minDate;(n=Math.max(n,c.getHours()))===c.getHours()&&(o=Math.max(o,c.getMinutes())),o===c.getMinutes()&&(a=Math.max(a,c.getSeconds()))}_(n,o,a)}}function T(e){var t=e||g.latestSelectedDateObj;t&&_(t.getHours(),t.getMinutes(),t.getSeconds())}function O(){var e=g.config.defaultHour,t=g.config.defaultMinute,n=g.config.defaultSeconds;if(void 0!==g.config.minDate){var o=g.config.minDate.getHours(),a=g.config.minDate.getMinutes();(e=Math.max(e,o))===o&&(t=Math.max(a,t)),e===o&&t===a&&(n=g.config.minDate.getSeconds())}if(void 0!==g.config.maxDate){var i=g.config.maxDate.getHours(),r=g.config.maxDate.getMinutes();(e=Math.min(e,i))===i&&(t=Math.min(r,t)),e===i&&t===r&&(n=g.config.maxDate.getSeconds())}_(e,t,n)}function _(e,t,n){void 0!==g.latestSelectedDateObj&&g.latestSelectedDateObj.setHours(e%24,t,n||0,0),g.hourElement&&g.minuteElement&&!g.isMobile&&(g.hourElement.value=a(g.config.time_24hr?e:(12+e)%12+12*i(e%12==0)),g.minuteElement.value=a(t),void 0!==g.amPM&&(g.amPM.textContent=g.l10n.amPM[i(e>=12)]),void 0!==g.secondElement&&(g.secondElement.value=a(n)))}function I(e){var t=parseInt(e.target.value)+(e.delta||0);(t/1e3>1||"Enter"===e.key&&!/[^\d]/.test(t.toString()))&&ee(t)}function N(e,t,n,o){return t instanceof Array?t.forEach(function(t){return N(e,t,n,o)}):e instanceof Array?e.forEach(function(e){return N(e,t,n,o)}):(e.addEventListener(t,n,o),void g._handlers.push({element:e,event:t,handler:n,options:o}))}function S(e){return function(t){1===t.which&&e(t)}}function F(){ge("onChange")}function j(){if(g.config.wrap&&["open","close","toggle","clear"].forEach(function(e){Array.prototype.forEach.call(g.element.querySelectorAll("[data-"+e+"]"),function(t){return N(t,"click",g[e])})}),g.isMobile)!function(){var e=g.config.enableTime?g.config.noCalendar?"time":"datetime-local":"date";g.mobileInput=c("input",g.input.className+" flatpickr-mobile"),g.mobileInput.step=g.input.getAttribute("step")||"any",g.mobileInput.tabIndex=1,g.mobileInput.type=e,g.mobileInput.disabled=g.input.disabled,g.mobileInput.required=g.input.required,g.mobileInput.placeholder=g.input.placeholder,g.mobileFormatStr="datetime-local"===e?"Y-m-d\\TH:i:S":"date"===e?"Y-m-d":"H:i:S",g.selectedDates.length>0&&(g.mobileInput.defaultValue=g.mobileInput.value=g.formatDate(g.selectedDates[0],g.mobileFormatStr)),g.config.minDate&&(g.mobileInput.min=g.formatDate(g.config.minDate,"Y-m-d")),g.config.maxDate&&(g.mobileInput.max=g.formatDate(g.config.maxDate,"Y-m-d")),g.input.type="hidden",void 0!==g.altInput&&(g.altInput.type="hidden");try{g.input.parentNode&&g.input.parentNode.insertBefore(g.mobileInput,g.input.nextSibling)}catch(e){}N(g.mobileInput,"change",function(e){g.setDate(e.target.value,!1,g.mobileFormatStr),ge("onChange"),ge("onClose")})}();else{var e=r(ie,50);g._debouncedChange=r(F,M),g.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&N(g.daysContainer,"mouseover",function(e){"range"===g.config.mode&&ae(e.target)}),N(window.document.body,"keydown",oe),g.config.inline||g.config.static||N(window,"resize",e),void 0!==window.ontouchstart?N(window.document,"touchstart",X):N(window.document,"mousedown",S(X)),N(window.document,"focus",X,{capture:!0}),!0===g.config.clickOpens&&(N(g._input,"focus",g.open),N(g._input,"mousedown",S(g.open))),void 0!==g.daysContainer&&(N(g.monthNav,"mousedown",S(Me)),N(g.monthNav,["keyup","increment"],I),N(g.daysContainer,"mousedown",S(pe))),void 0!==g.timeContainer&&void 0!==g.minuteElement&&void 0!==g.hourElement&&(N(g.timeContainer,["increment"],P),N(g.timeContainer,"blur",P,{capture:!0}),N(g.timeContainer,"mousedown",S(Y)),N([g.hourElement,g.minuteElement],["focus","click"],function(e){return e.target.select()}),void 0!==g.secondElement&&N(g.secondElement,"focus",function(){return g.secondElement&&g.secondElement.select()}),void 0!==g.amPM&&N(g.amPM,"mousedown",S(function(e){P(e),F()})))}}function A(e,t){var n=void 0!==e?g.parseDate(e):g.latestSelectedDateObj||(g.config.minDate&&g.config.minDate>g.now?g.config.minDate:g.config.maxDate&&g.config.maxDate11)]),g.amPM.title=g.l10n.toggleTitle,g.amPM.tabIndex=-1,g.timeContainer.appendChild(g.amPM)),g.timeContainer}()),s(g.calendarContainer,"rangeMode","range"===g.config.mode),s(g.calendarContainer,"animate",!0===g.config.animate),s(g.calendarContainer,"multiMonth",g.config.showMonths>1),g.calendarContainer.appendChild(e);var r=void 0!==g.config.appendTo&&void 0!==g.config.appendTo.nodeType;if((g.config.inline||g.config.static)&&(g.calendarContainer.classList.add(g.config.inline?"inline":"static"),g.config.inline&&(!r&&g.element.parentNode?g.element.parentNode.insertBefore(g.calendarContainer,g._input.nextSibling):void 0!==g.config.appendTo&&g.config.appendTo.appendChild(g.calendarContainer)),g.config.static)){var l=c("div","flatpickr-wrapper");g.element.parentNode&&g.element.parentNode.insertBefore(l,g.element),l.appendChild(g.element),g.altInput&&l.appendChild(g.altInput),l.appendChild(g.calendarContainer)}g.config.static||g.config.inline||(void 0!==g.config.appendTo?g.config.appendTo:window.document.body).appendChild(g.calendarContainer)}function B(e,t,n,o){var a=te(t,!0),i=c("span","flatpickr-day "+e,t.getDate().toString());return i.dateObj=t,i.$i=o,i.setAttribute("aria-label",g.formatDate(t,g.config.ariaDateFormat)),-1===e.indexOf("hidden")&&0===b(t,g.now)&&(g.todayDateElem=i,i.classList.add("today"),i.setAttribute("aria-current","date")),a?(i.tabIndex=-1,De(t)&&(i.classList.add("selected"),g.selectedDateElem=i,"range"===g.config.mode&&(s(i,"startRange",g.selectedDates[0]&&0===b(t,g.selectedDates[0],!0)),s(i,"endRange",g.selectedDates[1]&&0===b(t,g.selectedDates[1],!0)),"nextMonthDay"===e&&i.classList.add("inRange")))):i.classList.add("flatpickr-disabled"),"range"===g.config.mode&&function(e){return!("range"!==g.config.mode||g.selectedDates.length<2)&&b(e,g.selectedDates[0])>=0&&b(e,g.selectedDates[1])<=0}(t)&&!De(t)&&i.classList.add("inRange"),g.weekNumbers&&1===g.config.showMonths&&"prevMonthDay"!==e&&n%7==1&&g.weekNumbers.insertAdjacentHTML("beforeend",""+g.config.getWeek(t)+""),ge("onDayCreate",i),i}function q(e){e.focus(),"range"===g.config.mode&&ae(e)}function W(e){for(var t=e>0?0:g.config.showMonths-1,n=e>0?g.config.showMonths:-1,o=t;o!=n;o+=e)for(var a=g.daysContainer.children[o],i=e>0?0:a.children.length-1,r=e>0?a.children.length:-1,l=i;l!=r;l+=e){var s=a.children[l];if(-1===s.className.indexOf("hidden")&&te(s.dateObj))return s}}function R(e,t){var n=ne(document.activeElement||document.body),o=void 0!==e?e:n?document.activeElement:void 0!==g.selectedDateElem&&ne(g.selectedDateElem)?g.selectedDateElem:void 0!==g.todayDateElem&&ne(g.todayDateElem)?g.todayDateElem:W(t>0?1:-1);return void 0===o?g._input.focus():n?void function(e,t){for(var n=-1===e.className.indexOf("Month")?e.dateObj.getMonth():g.currentMonth,o=t>0?g.config.showMonths:-1,a=t>0?1:-1,i=n-g.currentMonth;i!=o;i+=a)for(var r=g.daysContainer.children[i],l=n-g.currentMonth===i?e.$i+t:t<0?r.children.length-1:0,s=r.children.length,c=l;c>=0&&c0?s:-1);c+=a){var u=r.children[c];if(-1===u.className.indexOf("hidden")&&te(u.dateObj)&&Math.abs(e.$i-c)>=Math.abs(t))return q(u)}g.changeMonth(a),R(W(a),0)}(o,t):q(o)}function V(e,t){for(var n=(new Date(e,t,1).getDay()-g.l10n.firstDayOfWeek+7)%7,o=g.utils.getDaysInMonth((t-1+12)%12),a=g.utils.getDaysInMonth(t),i=window.document.createDocumentFragment(),r=g.config.showMonths>1,l=r?"prevMonthDay hidden":"prevMonthDay",s=r?"nextMonthDay hidden":"nextMonthDay",u=o+1-n,d=0;u<=o;u++,d++)i.appendChild(B(l,new Date(e,t-1,u),u,d));for(u=1;u<=a;u++,d++)i.appendChild(B("",new Date(e,t,u),u,d));for(var p=a+1;p<=42-n&&(1===g.config.showMonths||d%7!=0);p++,d++)i.appendChild(B(s,new Date(e,t+1,p%a),p,d));var f=c("div","dayContainer");return f.appendChild(i),f}function J(){if(void 0!==g.daysContainer){u(g.daysContainer),g.weekNumbers&&u(g.weekNumbers);for(var e=document.createDocumentFragment(),t=0;t1)){var e=function(e){return!(void 0!==g.config.minDate&&g.currentYear===g.config.minDate.getFullYear()&&eg.config.maxDate.getMonth())};g.monthsDropdownContainer.tabIndex=-1,g.monthsDropdownContainer.innerHTML="";for(var t=0;t<12;t++)if(e(t)){var n=c("option","flatpickr-monthDropdown-month");n.value=new Date(g.currentYear,t).getMonth().toString(),n.textContent=f(t,!1,g.l10n),n.tabIndex=-1,g.currentMonth===t&&(n.selected=!0),g.monthsDropdownContainer.appendChild(n)}}}function U(){var e,t=c("div","flatpickr-month"),n=window.document.createDocumentFragment();g.config.showMonths>1?e=c("span","cur-month"):(g.monthsDropdownContainer=c("select","flatpickr-monthDropdown-months"),N(g.monthsDropdownContainer,"change",function(e){var t=e.target,n=parseInt(t.value,10);g.changeMonth(n-g.currentMonth),ge("onMonthChange")}),K(),e=g.monthsDropdownContainer);var o=d("cur-year",{tabindex:"-1"}),a=o.getElementsByTagName("input")[0];a.setAttribute("aria-label",g.l10n.yearAriaLabel),g.config.minDate&&a.setAttribute("min",g.config.minDate.getFullYear().toString()),g.config.maxDate&&(a.setAttribute("max",g.config.maxDate.getFullYear().toString()),a.disabled=!!g.config.minDate&&g.config.minDate.getFullYear()===g.config.maxDate.getFullYear());var i=c("div","flatpickr-current-month");return i.appendChild(e),i.appendChild(o),n.appendChild(i),t.appendChild(n),{container:t,yearElement:a,monthElement:e}}function $(){u(g.monthNav),g.monthNav.appendChild(g.prevMonthNav),g.config.showMonths&&(g.yearElements=[],g.monthElements=[]);for(var e=g.config.showMonths;e--;){var t=U();g.yearElements.push(t.yearElement),g.monthElements.push(t.monthElement),g.monthNav.appendChild(t.container)}g.monthNav.appendChild(g.nextMonthNav)}function z(){g.weekdayContainer?u(g.weekdayContainer):g.weekdayContainer=c("div","flatpickr-weekdays");for(var e=g.config.showMonths;e--;){var t=c("div","flatpickr-weekdaycontainer");g.weekdayContainer.appendChild(t)}return G(),g.weekdayContainer}function G(){var e=g.l10n.firstDayOfWeek,t=g.l10n.weekdays.shorthand.slice();e>0&&e\n "+t.join("")+"\n \n "}function Z(e,t){void 0===t&&(t=!0);var n=t?e:e-g.currentMonth;n<0&&!0===g._hidePrevMonthArrow||n>0&&!0===g._hideNextMonthArrow||(g.currentMonth+=n,(g.currentMonth<0||g.currentMonth>11)&&(g.currentYear+=g.currentMonth>11?1:-1,g.currentMonth=(g.currentMonth+12)%12,ge("onYearChange"),K()),J(),ge("onMonthChange"),be())}function Q(e){return!(!g.config.appendTo||!g.config.appendTo.contains(e))||g.calendarContainer.contains(e)}function X(e){if(g.isOpen&&!g.config.inline){var t=function(e){if("function"==typeof e.composedPath){var t=e.composedPath();return t[0]}return e.target}(e),n=Q(t),o=t===g.input||t===g.altInput||g.element.contains(t)||e.path&&e.path.indexOf&&(~e.path.indexOf(g.input)||~e.path.indexOf(g.altInput)),a="blur"===e.type?o&&e.relatedTarget&&!Q(e.relatedTarget):!o&&!n&&!Q(e.relatedTarget),i=!g.config.ignoredFocusElements.some(function(e){return e.contains(t)});a&&i&&(g.close(),"range"===g.config.mode&&1===g.selectedDates.length&&(g.clear(!1),g.redraw()))}}function ee(e){if(!(!e||g.config.minDate&&eg.config.maxDate.getFullYear())){var t=e,n=g.currentYear!==t;g.currentYear=t||g.currentYear,g.config.maxDate&&g.currentYear===g.config.maxDate.getFullYear()?g.currentMonth=Math.min(g.config.maxDate.getMonth(),g.currentMonth):g.config.minDate&&g.currentYear===g.config.minDate.getFullYear()&&(g.currentMonth=Math.max(g.config.minDate.getMonth(),g.currentMonth)),n&&(g.redraw(),ge("onYearChange"),K())}}function te(e,t){void 0===t&&(t=!0);var n=g.parseDate(e,void 0,t);if(g.config.minDate&&n&&b(n,g.config.minDate,void 0!==t?t:!g.minDateHasTime)<0||g.config.maxDate&&n&&b(n,g.config.maxDate,void 0!==t?t:!g.maxDateHasTime)>0)return!1;if(0===g.config.enable.length&&0===g.config.disable.length)return!0;if(void 0===n)return!1;for(var o=g.config.enable.length>0,a=o?g.config.enable:g.config.disable,i=0,r=void 0;i=r.from.getTime()&&n.getTime()<=r.to.getTime())return o}return!o}function ne(e){return void 0!==g.daysContainer&&-1===e.className.indexOf("hidden")&&g.daysContainer.contains(e)}function oe(e){var t=e.target===g._input,n=g.config.allowInput,o=g.isOpen&&(!n||!t),a=g.config.inline&&t&&!n;if(13===e.keyCode&&t){if(n)return g.setDate(g._input.value,!0,e.target===g.altInput?g.config.altFormat:g.config.dateFormat),e.target.blur();g.open()}else if(Q(e.target)||o||a){var i=!!g.timeContainer&&g.timeContainer.contains(e.target);switch(e.keyCode){case 13:i?(e.preventDefault(),P(),de()):pe(e);break;case 27:e.preventDefault(),de();break;case 8:case 46:t&&!g.config.allowInput&&(e.preventDefault(),g.clear());break;case 37:case 39:if(i||t)g.hourElement&&g.hourElement.focus();else if(e.preventDefault(),void 0!==g.daysContainer&&(!1===n||document.activeElement&&ne(document.activeElement))){var r=39===e.keyCode?1:-1;e.ctrlKey?(e.stopPropagation(),Z(r),R(W(1),0)):R(void 0,r)}break;case 38:case 40:e.preventDefault();var l=40===e.keyCode?1:-1;g.daysContainer&&void 0!==e.target.$i||e.target===g.input?e.ctrlKey?(e.stopPropagation(),ee(g.currentYear-l),R(W(1),0)):i||R(void 0,7*l):e.target===g.currentYearElement?ee(g.currentYear-l):g.config.enableTime&&(!i&&g.hourElement&&g.hourElement.focus(),P(e),g._debouncedChange());break;case 9:if(i){var s=[g.hourElement,g.minuteElement,g.secondElement,g.amPM].concat(g.pluginElements).filter(function(e){return e}),c=s.indexOf(e.target);if(-1!==c){var u=s[c+(e.shiftKey?-1:1)];e.preventDefault(),(u||g._input).focus()}}else!g.config.noCalendar&&g.daysContainer&&g.daysContainer.contains(e.target)&&e.shiftKey&&(e.preventDefault(),g._input.focus())}}if(void 0!==g.amPM&&e.target===g.amPM)switch(e.key){case g.l10n.amPM[0].charAt(0):case g.l10n.amPM[0].charAt(0).toLowerCase():g.amPM.textContent=g.l10n.amPM[0],k(),we();break;case g.l10n.amPM[1].charAt(0):case g.l10n.amPM[1].charAt(0).toLowerCase():g.amPM.textContent=g.l10n.amPM[1],k(),we()}(t||Q(e.target))&&ge("onKeyDown",e)}function ae(e){if(1===g.selectedDates.length&&(!e||e.classList.contains("flatpickr-day")&&!e.classList.contains("flatpickr-disabled"))){for(var t=e?e.dateObj.getTime():g.days.firstElementChild.dateObj.getTime(),n=g.parseDate(g.selectedDates[0],void 0,!0).getTime(),o=Math.min(t,g.selectedDates[0].getTime()),a=Math.max(t,g.selectedDates[0].getTime()),i=!1,r=0,l=0,s=o;so&&sr)?r=s:s>n&&(!l||s0&&d0&&d>l;return p?(s.classList.add("notAllowed"),["inRange","startRange","endRange"].forEach(function(e){s.classList.remove(e)}),"continue"):i&&!p?"continue":(["startRange","inRange","endRange","notAllowed"].forEach(function(e){s.classList.remove(e)}),void(void 0!==e&&(e.classList.add(t<=g.selectedDates[0].getTime()?"startRange":"endRange"),nt&&d===n&&s.classList.add("endRange"),d>=r&&(0===l||d<=l)&&y(d,n,t)&&s.classList.add("inRange"))))},p=0,f=u.children.length;p0||n.getMinutes()>0||n.getSeconds()>0),g.selectedDates&&(g.selectedDates=g.selectedDates.filter(function(e){return te(e)}),g.selectedDates.length||"min"!==e||T(n),we()),g.daysContainer&&(ue(),void 0!==n?g.currentYearElement[e]=n.getFullYear().toString():g.currentYearElement.removeAttribute(e),g.currentYearElement.disabled=!!o&&void 0!==n&&o.getFullYear()===n.getFullYear())}}function se(){"object"!=typeof g.config.locale&&void 0===E.l10ns[g.config.locale]&&g.config.errorHandler(new Error("flatpickr: invalid locale "+g.config.locale)),g.l10n=e({},E.l10ns.default,"object"==typeof g.config.locale?g.config.locale:"default"!==g.config.locale?E.l10ns[g.config.locale]:void 0),h.K="("+g.l10n.amPM[0]+"|"+g.l10n.amPM[1]+"|"+g.l10n.amPM[0].toLowerCase()+"|"+g.l10n.amPM[1].toLowerCase()+")";var t=e({},m,JSON.parse(JSON.stringify(p.dataset||{})));void 0===t.time_24hr&&void 0===E.defaultConfig.time_24hr&&(g.config.time_24hr=g.l10n.time_24hr),g.formatDate=v(g),g.parseDate=D({config:g.config,l10n:g.l10n})}function ce(e){if(void 0!==g.calendarContainer){ge("onPreCalendarPosition");var t=e||g._positionElement,n=Array.prototype.reduce.call(g.calendarContainer.children,function(e,t){return e+t.offsetHeight},0),o=g.calendarContainer.offsetWidth,a=g.config.position.split(" "),i=a[0],r=a.length>1?a[1]:null,l=t.getBoundingClientRect(),c=window.innerHeight-l.bottom,u="above"===i||"below"!==i&&cn,d=window.pageYOffset+l.top+(u?-n-2:t.offsetHeight+2);if(s(g.calendarContainer,"arrowTop",!u),s(g.calendarContainer,"arrowBottom",u),!g.config.inline){var p=window.pageXOffset+l.left-(null!=r&&"center"===r?(o-l.width)/2:0),f=window.document.body.offsetWidth-l.right,m=p+o>window.document.body.offsetWidth,h=f+o>window.document.body.offsetWidth;if(s(g.calendarContainer,"rightMost",m),!g.config.static)if(g.calendarContainer.style.top=d+"px",m)if(h){var v=document.styleSheets[0];if(void 0===v)return;var D=window.document.body.offsetWidth,b=Math.max(0,D/2-o/2),y=v.cssRules.length,w="{left:"+l.left+"px;right:auto;}";s(g.calendarContainer,"rightMost",!1),s(g.calendarContainer,"centerMost",!0),v.insertRule(".flatpickr-calendar.centerMost:before,.flatpickr-calendar.centerMost:after"+w,y),g.calendarContainer.style.left=b+"px",g.calendarContainer.style.right="auto"}else g.calendarContainer.style.left="auto",g.calendarContainer.style.right=f+"px";else g.calendarContainer.style.left=p+"px",g.calendarContainer.style.right="auto"}}}function ue(){g.config.noCalendar||g.isMobile||(be(),J())}function de(){g._input.focus(),-1!==window.navigator.userAgent.indexOf("MSIE")||void 0!==navigator.msMaxTouchPoints?setTimeout(g.close,0):g.close()}function pe(e){e.preventDefault(),e.stopPropagation();var t=function e(t,n){return n(t)?t:t.parentNode?e(t.parentNode,n):void 0}(e.target,function(e){return e.classList&&e.classList.contains("flatpickr-day")&&!e.classList.contains("flatpickr-disabled")&&!e.classList.contains("notAllowed")});if(void 0!==t){var n=t,o=g.latestSelectedDateObj=new Date(n.dateObj.getTime()),a=(o.getMonth()g.currentMonth+g.config.showMonths-1)&&"range"!==g.config.mode;if(g.selectedDateElem=n,"single"===g.config.mode)g.selectedDates=[o];else if("multiple"===g.config.mode){var i=De(o);i?g.selectedDates.splice(parseInt(i),1):g.selectedDates.push(o)}else"range"===g.config.mode&&(2===g.selectedDates.length&&g.clear(!1,!1),g.latestSelectedDateObj=o,g.selectedDates.push(o),0!==b(o,g.selectedDates[0],!0)&&g.selectedDates.sort(function(e,t){return e.getTime()-t.getTime()}));if(k(),a){var r=g.currentYear!==o.getFullYear();g.currentYear=o.getFullYear(),g.currentMonth=o.getMonth(),r&&(ge("onYearChange"),K()),ge("onMonthChange")}if(be(),J(),we(),g.config.enableTime&&setTimeout(function(){return g.showTimeInput=!0},50),a||"range"===g.config.mode||1!==g.config.showMonths?void 0!==g.selectedDateElem&&void 0===g.hourElement&&g.selectedDateElem&&g.selectedDateElem.focus():q(n),void 0!==g.hourElement&&void 0!==g.hourElement&&g.hourElement.focus(),g.config.closeOnSelect){var l="single"===g.config.mode&&!g.config.enableTime,s="range"===g.config.mode&&2===g.selectedDates.length&&!g.config.enableTime;(l||s)&&de()}F()}}g.parseDate=D({config:g.config,l10n:g.l10n}),g._handlers=[],g.pluginElements=[],g.loadedPlugins=[],g._bind=N,g._setHoursFromDate=T,g._positionCalendar=ce,g.changeMonth=Z,g.changeYear=ee,g.clear=function(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0),g.input.value="",void 0!==g.altInput&&(g.altInput.value=""),void 0!==g.mobileInput&&(g.mobileInput.value=""),g.selectedDates=[],g.latestSelectedDateObj=void 0,!0===t&&(g.currentYear=g._initialDate.getFullYear(),g.currentMonth=g._initialDate.getMonth()),g.showTimeInput=!1,!0===g.config.enableTime&&O(),g.redraw(),e&&ge("onChange")},g.close=function(){g.isOpen=!1,g.isMobile||(void 0!==g.calendarContainer&&g.calendarContainer.classList.remove("open"),void 0!==g._input&&g._input.classList.remove("active")),ge("onClose")},g._createElement=c,g.destroy=function(){void 0!==g.config&&ge("onDestroy");for(var e=g._handlers.length;e--;){var t=g._handlers[e];t.element.removeEventListener(t.event,t.handler,t.options)}if(g._handlers=[],g.mobileInput)g.mobileInput.parentNode&&g.mobileInput.parentNode.removeChild(g.mobileInput),g.mobileInput=void 0;else if(g.calendarContainer&&g.calendarContainer.parentNode)if(g.config.static&&g.calendarContainer.parentNode){var n=g.calendarContainer.parentNode;if(n.lastChild&&n.removeChild(n.lastChild),n.parentNode){for(;n.firstChild;)n.parentNode.insertBefore(n.firstChild,n);n.parentNode.removeChild(n)}}else g.calendarContainer.parentNode.removeChild(g.calendarContainer);g.altInput&&(g.input.type="text",g.altInput.parentNode&&g.altInput.parentNode.removeChild(g.altInput),delete g.altInput),g.input&&(g.input.type=g.input._type,g.input.classList.remove("flatpickr-input"),g.input.removeAttribute("readonly"),g.input.value=""),["_showTimeInput","latestSelectedDateObj","_hideNextMonthArrow","_hidePrevMonthArrow","__hideNextMonthArrow","__hidePrevMonthArrow","isMobile","isOpen","selectedDateElem","minDateHasTime","maxDateHasTime","days","daysContainer","_input","_positionElement","innerContainer","rContainer","monthNav","todayDateElem","calendarContainer","weekdayContainer","prevMonthNav","nextMonthNav","monthsDropdownContainer","currentMonthElement","currentYearElement","navigationCurrentMonth","selectedDateElem","config"].forEach(function(e){try{delete g[e]}catch(e){}})},g.isEnabled=te,g.jumpToDate=A,g.open=function(e,t){if(void 0===t&&(t=g._positionElement),!0===g.isMobile)return e&&(e.preventDefault(),e.target&&e.target.blur()),void 0!==g.mobileInput&&(g.mobileInput.focus(),g.mobileInput.click()),void ge("onOpen");if(!g._input.disabled&&!g.config.inline){var n=g.isOpen;g.isOpen=!0,n||(g.calendarContainer.classList.add("open"),g._input.classList.add("active"),ge("onOpen"),ce(t)),!0===g.config.enableTime&&!0===g.config.noCalendar&&(0===g.selectedDates.length&&re(),!1!==g.config.allowInput||void 0!==e&&g.timeContainer.contains(e.relatedTarget)||setTimeout(function(){return g.hourElement.select()},50))}},g.redraw=ue,g.set=function(e,n){if(null!==e&&"object"==typeof e)for(var o in Object.assign(g.config,e),e)void 0!==fe[o]&&fe[o].forEach(function(e){return e()});else g.config[e]=n,void 0!==fe[e]?fe[e].forEach(function(e){return e()}):t.indexOf(e)>-1&&(g.config[e]=l(n));g.redraw(),we(!1)},g.setDate=function(e,t,n){if(void 0===t&&(t=!1),void 0===n&&(n=g.config.dateFormat),0!==e&&!e||e instanceof Array&&0===e.length)return g.clear(t);me(e,n),g.showTimeInput=g.selectedDates.length>0,g.latestSelectedDateObj=g.selectedDates[g.selectedDates.length-1],g.redraw(),A(),T(),0===g.selectedDates.length&&g.clear(!1),we(t),t&&ge("onChange")},g.toggle=function(e){if(!0===g.isOpen)return g.close();g.open(e)};var fe={locale:[se,G],showMonths:[$,x,z],minDate:[A],maxDate:[A]};function me(e,t){var n=[];if(e instanceof Array)n=e.map(function(e){return g.parseDate(e,t)});else if(e instanceof Date||"number"==typeof e)n=[g.parseDate(e,t)];else if("string"==typeof e)switch(g.config.mode){case"single":case"time":n=[g.parseDate(e,t)];break;case"multiple":n=e.split(g.config.conjunction).map(function(e){return g.parseDate(e,t)});break;case"range":n=e.split(g.l10n.rangeSeparator).map(function(e){return g.parseDate(e,t)})}else g.config.errorHandler(new Error("Invalid date supplied: "+JSON.stringify(e)));g.selectedDates=n.filter(function(e){return e instanceof Date&&te(e,!1)}),"range"===g.config.mode&&g.selectedDates.sort(function(e,t){return e.getTime()-t.getTime()})}function he(e){return e.slice().map(function(e){return"string"==typeof e||"number"==typeof e||e instanceof Date?g.parseDate(e,void 0,!0):e&&"object"==typeof e&&e.from&&e.to?{from:g.parseDate(e.from,void 0),to:g.parseDate(e.to,void 0)}:e}).filter(function(e){return e})}function ge(e,t){if(void 0!==g.config){var n=g.config[e];if(void 0!==n&&n.length>0)for(var o=0;n[o]&&o1?g.monthElements[t].textContent=f(n.getMonth(),g.config.shorthandCurrentMonth,g.l10n)+" ":g.monthsDropdownContainer.value=n.getMonth().toString(),e.value=n.getFullYear().toString()}),g._hidePrevMonthArrow=void 0!==g.config.minDate&&(g.currentYear===g.config.minDate.getFullYear()?g.currentMonth<=g.config.minDate.getMonth():g.currentYearg.config.maxDate.getMonth():g.currentYear>g.config.maxDate.getFullYear()))}function ye(e){return g.selectedDates.map(function(t){return g.formatDate(t,e)}).filter(function(e,t,n){return"range"!==g.config.mode||g.config.enableTime||n.indexOf(e)===t}).join("range"!==g.config.mode?g.config.conjunction:g.l10n.rangeSeparator)}function we(e){void 0===e&&(e=!0),void 0!==g.mobileInput&&g.mobileFormatStr&&(g.mobileInput.value=void 0!==g.latestSelectedDateObj?g.formatDate(g.latestSelectedDateObj,g.mobileFormatStr):""),g.input.value=ye(g.config.dateFormat),void 0!==g.altInput&&(g.altInput.value=ye(g.config.altFormat)),!1!==e&&ge("onValueUpdate")}function Me(e){var t=g.prevMonthNav.contains(e.target),n=g.nextMonthNav.contains(e.target);t||n?Z(t?-1:1):g.yearElements.indexOf(e.target)>=0?e.target.select():e.target.classList.contains("arrowUp")?g.changeYear(g.currentYear+1):e.target.classList.contains("arrowDown")&&g.changeYear(g.currentYear-1)}return function(){g.element=g.input=p,g.isOpen=!1,function(){var o=["wrap","weekNumbers","allowInput","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],a=e({},m,JSON.parse(JSON.stringify(p.dataset||{}))),i={};g.config.parseDate=a.parseDate,g.config.formatDate=a.formatDate,Object.defineProperty(g.config,"enable",{get:function(){return g.config._enable},set:function(e){g.config._enable=he(e)}}),Object.defineProperty(g.config,"disable",{get:function(){return g.config._disable},set:function(e){g.config._disable=he(e)}});var r="time"===a.mode;if(!a.dateFormat&&(a.enableTime||r)){var s=E.defaultConfig.dateFormat||n.dateFormat;i.dateFormat=a.noCalendar||r?"H:i"+(a.enableSeconds?":S":""):s+" H:i"+(a.enableSeconds?":S":"")}if(a.altInput&&(a.enableTime||r)&&!a.altFormat){var c=E.defaultConfig.altFormat||n.altFormat;i.altFormat=a.noCalendar||r?"h:i"+(a.enableSeconds?":S K":" K"):c+" h:i"+(a.enableSeconds?":S":"")+" K"}a.altInputClass||(g.config.altInputClass=g.input.className+" "+g.config.altInputClass),Object.defineProperty(g.config,"minDate",{get:function(){return g.config._minDate},set:le("min")}),Object.defineProperty(g.config,"maxDate",{get:function(){return g.config._maxDate},set:le("max")});var u=function(e){return function(t){g.config["min"===e?"_minTime":"_maxTime"]=g.parseDate(t,"H:i")}};Object.defineProperty(g.config,"minTime",{get:function(){return g.config._minTime},set:u("min")}),Object.defineProperty(g.config,"maxTime",{get:function(){return g.config._maxTime},set:u("max")}),"time"===a.mode&&(g.config.noCalendar=!0,g.config.enableTime=!0),Object.assign(g.config,i,a);for(var d=0;d-1?g.config[h]=l(f[h]).map(C).concat(g.config[h]):void 0===a[h]&&(g.config[h]=f[h])}ge("onParseConfig")}(),se(),g.input=g.config.wrap?p.querySelector("[data-input]"):p,g.input?(g.input._type=g.input.type,g.input.type="text",g.input.classList.add("flatpickr-input"),g._input=g.input,g.config.altInput&&(g.altInput=c(g.input.nodeName,g.config.altInputClass),g._input=g.altInput,g.altInput.placeholder=g.input.placeholder,g.altInput.disabled=g.input.disabled,g.altInput.required=g.input.required,g.altInput.tabIndex=g.input.tabIndex,g.altInput.type="text",g.input.setAttribute("type","hidden"),!g.config.static&&g.input.parentNode&&g.input.parentNode.insertBefore(g.altInput,g.input.nextSibling)),g.config.allowInput||g._input.setAttribute("readonly","readonly"),g._positionElement=g.config.positionElement||g._input):g.config.errorHandler(new Error("Invalid input element specified")),function(){g.selectedDates=[],g.now=g.parseDate(g.config.now)||new Date;var e=g.config.defaultDate||("INPUT"!==g.input.nodeName&&"TEXTAREA"!==g.input.nodeName||!g.input.placeholder||g.input.value!==g.input.placeholder?g.input.value:null);e&&me(e,g.config.dateFormat),g._initialDate=g.selectedDates.length>0?g.selectedDates[0]:g.config.minDate&&g.config.minDate.getTime()>g.now.getTime()?g.config.minDate:g.config.maxDate&&g.config.maxDate.getTime()0&&(g.latestSelectedDateObj=g.selectedDates[0]),void 0!==g.config.minTime&&(g.config.minTime=g.parseDate(g.config.minTime,"H:i")),void 0!==g.config.maxTime&&(g.config.maxTime=g.parseDate(g.config.maxTime,"H:i")),g.minDateHasTime=!!g.config.minDate&&(g.config.minDate.getHours()>0||g.config.minDate.getMinutes()>0||g.config.minDate.getSeconds()>0),g.maxDateHasTime=!!g.config.maxDate&&(g.config.maxDate.getHours()>0||g.config.maxDate.getMinutes()>0||g.config.maxDate.getSeconds()>0),Object.defineProperty(g,"showTimeInput",{get:function(){return g._showTimeInput},set:function(e){g._showTimeInput=e,g.calendarContainer&&s(g.calendarContainer,"showTimeInput",e),g.isOpen&&ce()}})}(),g.utils={getDaysInMonth:function(e,t){return void 0===e&&(e=g.currentMonth),void 0===t&&(t=g.currentYear),1===e&&(t%4==0&&t%100!=0||t%400==0)?29:g.l10n.daysInMonth[e]}},g.isMobile||L(),j(),(g.selectedDates.length||g.config.noCalendar)&&(g.config.enableTime&&T(g.config.noCalendar?g.latestSelectedDateObj||g.config.minDate:void 0),we(!1)),x(),g.showTimeInput=g.selectedDates.length>0||g.config.noCalendar;var o=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);!g.isMobile&&o&&ce(),ge("onReady")}(),g}function x(e,t){for(var n=Array.prototype.slice.call(e).filter(function(e){return e instanceof HTMLElement}),o=[],a=0;a=2?M.a.component({type:"button",className:"Button Button--warning PollModal--button",icon:"fas fa-minus",onclick:n>=2?e.removeOption.bind(e,n):""}):"")})},n.addOption=function(){var e=app.data["fof-polls.options.max"],t=e&&parseInt(e)||11;this.options.length=2?M.a.component({type:"button",className:"Button PollModal--button",icon:"fas fa-minus",onclick:n>=2?e.removeOption.bind(e,n):""}):"")})},n.addOption=function(){var e=app.data["fof-polls.options.max"],t=e&&parseInt(e)||11;this.options.length\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false\n };\n\n var english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ]\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ]\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: function (nth) {\n var s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n time_24hr: false\n };\n\n var pad = function (number) { return (\"0\" + number).slice(-2); };\n var int = function (bool) { return (bool === true ? 1 : 0); };\n /* istanbul ignore next */\n function debounce(func, wait, immediate) {\n if (immediate === void 0) { immediate = false; }\n var timeout;\n return function () {\n var context = this, args = arguments;\n timeout !== null && clearTimeout(timeout);\n timeout = window.setTimeout(function () {\n timeout = null;\n if (!immediate)\n func.apply(context, args);\n }, wait);\n if (immediate && !timeout)\n func.apply(context, args);\n };\n }\n var arrayify = function (obj) {\n return obj instanceof Array ? obj : [obj];\n };\n\n function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n }\n function createElement(tag, className, content) {\n var e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n }\n function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n }\n function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined; // nothing found\n }\n function createNumberInput(inputClassName, opts) {\n var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (var key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n }\n function getEventTarget(event) {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n\n var doNothing = function () { return undefined; };\n var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\n var revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n H: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n J: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n K: function (dateObj, amPM, locale) {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n W: function (dateObj, weekNum, locale) {\n var weekNumber = parseInt(weekNum);\n var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: function (dateObj, year) {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: function (_, ISODate) { return new Date(ISODate); },\n d: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n h: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n i: function (dateObj, minutes) {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: function (_, unixMillSeconds) {\n return new Date(parseFloat(unixMillSeconds));\n },\n w: doNothing,\n y: function (dateObj, year) {\n dateObj.setFullYear(2000 + parseFloat(year));\n }\n };\n var tokenRegex = {\n D: \"(\\\\w+)\",\n F: \"(\\\\w+)\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"(\\\\w+)\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"(\\\\w+)\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\"\n };\n var formats = {\n // get the date in UTC\n Z: function (date) { return date.toISOString(); },\n // weekday name, short, e.g. Thu\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n // full month name e.g. January\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n // padded hour 1-12\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n // hours with leading zero e.g. 03\n H: function (date) { return pad(date.getHours()); },\n // day (1-30) with ordinal suffix e.g. 1st, 2nd\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n // AM/PM\n K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n // shorthand month e.g. Jan, Sep, Oct, etc\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n // seconds 00-59\n S: function (date) { return pad(date.getSeconds()); },\n // unix timestamp\n U: function (date) { return date.getTime() / 1000; },\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n // full year e.g. 2016\n Y: function (date) { return date.getFullYear(); },\n // day in month, padded (01-30)\n d: function (date) { return pad(date.getDate()); },\n // hour from 1-12 (am/pm)\n h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n // minutes, padded with leading zero e.g. 09\n i: function (date) { return pad(date.getMinutes()); },\n // day in month (1-30)\n j: function (date) { return date.getDate(); },\n // weekday name, full, e.g. Thursday\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n // padded month number (01-12)\n m: function (date) { return pad(date.getMonth() + 1); },\n // the month number (1-12)\n n: function (date) { return date.getMonth() + 1; },\n // seconds 0-59\n s: function (date) { return date.getSeconds(); },\n // Unix Milliseconds\n u: function (date) { return date.getTime(); },\n // number of the day of the week\n w: function (date) { return date.getDay(); },\n // last two digits of year e.g. 16 for 2016\n y: function (date) { return String(date.getFullYear()).substring(2); }\n };\n\n var createDateFormatter = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (dateObj, frmt, overrideLocale) {\n var locale = overrideLocale || l10n;\n if (config.formatDate !== undefined) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map(function (c, i, arr) {\n return formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\";\n })\n .join(\"\");\n };\n };\n var createDateParser = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (date, givenFormat, timeless, customLocale) {\n if (date !== 0 && !date)\n return undefined;\n var locale = customLocale || l10n;\n var parsedDate;\n var dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined // timestamp\n )\n // create a copy\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n // date string\n var format = givenFormat || (config || defaults).dateFormat;\n var datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr) // datestrings w/ timezone\n )\n parsedDate = new Date(date);\n else if (config && config.parseDate)\n parsedDate = config.parseDate(date, format);\n else {\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n var matched = void 0, ops = [];\n for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n var token_1 = format[i];\n var isBackSlash = token_1 === \"\\\\\";\n var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token_1] && !escaped) {\n regexStr += tokenRegex[token_1];\n var match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token_1 !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token_1],\n val: match[++matchIndex]\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\"; // don't really care\n ops.forEach(function (_a) {\n var fn = _a.fn, val = _a.val;\n return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n });\n }\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n /* istanbul ignore next */\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n };\n };\n /**\n * Compute the difference in dates, measured in ms\n */\n function compareDates(date1, date2, timeless) {\n if (timeless === void 0) { timeless = true; }\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n }\n var isBetween = function (ts, ts1, ts2) {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n };\n var duration = {\n DAY: 86400000\n };\n\n if (typeof Object.assign !== \"function\") {\n Object.assign = function (target) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n var _loop_1 = function (source) {\n if (source) {\n Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n }\n };\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var source = args_1[_a];\n _loop_1(source);\n }\n return target;\n };\n }\n\n var DEBOUNCED_CHANGE_MS = 300;\n function FlatpickrInstance(element, instanceConfig) {\n var self = {\n config: __assign({}, defaults, flatpickr.defaultConfig),\n l10n: english\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self._createElement = createElement;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth: function (month, yr) {\n if (month === void 0) { month = self.currentMonth; }\n if (yr === void 0) { yr = self.currentYear; }\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n }\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar\n ? self.latestSelectedDateObj || self.config.minDate\n : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n self.showTimeInput =\n self.selectedDates.length > 0 || self.config.noCalendar;\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n /* TODO: investigate this further\n \n Currently, there is weird positioning behavior in safari causing pages\n to scroll up. https://github.com/chmln/flatpickr/issues/563\n \n However, most browsers are not Safari and positioning is expensive when used\n in scale. https://github.com/chmln/flatpickr/issues/1096\n */\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n var config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1)\n return;\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n /**\n * The handler for all events targeting the time inputs\n */\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n setDefaultTime();\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n var prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n /**\n * Syncs the selected date object time with user's time input\n */\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n var limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n var limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (limitMaxHours) {\n var maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n var minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours())\n minutes = Math.max(minutes, minTime.getMinutes());\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n setHours(hours, minutes, seconds);\n }\n /**\n * Syncs time input values with a date\n */\n function setHoursFromDate(dateObj) {\n var date = dateObj || self.latestSelectedDateObj;\n if (date)\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n function setDefaultHours() {\n var hours = self.config.defaultHour;\n var minutes = self.config.defaultMinute;\n var seconds = self.config.defaultSeconds;\n if (self.config.minDate !== undefined) {\n var minHr = self.config.minDate.getHours();\n var minMinutes = self.config.minDate.getMinutes();\n hours = Math.max(hours, minHr);\n if (hours === minHr)\n minutes = Math.max(minMinutes, minutes);\n if (hours === minHr && minutes === minMinutes)\n seconds = self.config.minDate.getSeconds();\n }\n if (self.config.maxDate !== undefined) {\n var maxHr = self.config.maxDate.getHours();\n var maxMinutes = self.config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = self.config.maxDate.getSeconds();\n }\n setHours(hours, minutes, seconds);\n }\n /**\n * Sets the hours, minutes, and optionally seconds\n * of the latest selected date object and the\n * corresponding time inputs\n * @param {Number} hours the hour. whether its military\n * or am-pm gets inferred from config\n * @param {Number} minutes the minutes\n * @param {Number} seconds the seconds (optional)\n */\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n /**\n * Handles the year input and incrementing events\n * @param {Event} event the keyup or increment event\n */\n function onYearInput(event) {\n var year = parseInt(event.target.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n /**\n * Essentially addEventListener + tracking\n * @param {Element} element the element to addEventListener to\n * @param {String} event the event name\n * @param {Function} handler the event handler\n */\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n if (element instanceof Array)\n return element.forEach(function (el) { return bind(el, event, handler, options); });\n element.addEventListener(event, handler, options);\n self._handlers.push({\n element: element,\n event: event,\n handler: handler,\n options: options\n });\n }\n /**\n * A mousedown handler which mimics click.\n * Minimizes latency, since we don't need to wait for mouseup in most cases.\n * Also, avoids handling right clicks.\n *\n * @param {Function} handler the event handler\n */\n function onClick(handler) {\n return function (evt) {\n evt.which === 1 && handler(evt);\n };\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n /**\n * Adds all the necessary event listeners\n */\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n return bind(el, \"click\", self[evt]);\n });\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n var debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", function (e) {\n if (self.config.mode === \"range\")\n onMouseOver(e.target);\n });\n bind(window.document.body, \"keydown\", onKeyDown);\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", onClick(documentClick));\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"mousedown\", onClick(self.open));\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"mousedown\", onClick(onMonthNavClick));\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"mousedown\", onClick(selectDate));\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n var selText = function (e) {\n return e.target.select();\n };\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"mousedown\", onClick(timeIncrement));\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n if (self.amPM !== undefined) {\n bind(self.amPM, \"mousedown\", onClick(function (e) {\n updateTime(e);\n triggerChange();\n }));\n }\n }\n }\n /**\n * Set the calendar view to a particular date.\n * @param {Date} jumpDate the date to set the view to\n * @param {boolean} triggerChange if change events should be triggered\n */\n function jumpToDate(jumpDate, triggerChange) {\n var jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n var oldYear = self.currentYear;\n var oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n /* istanbul ignore next */\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n /**\n * The up/down arrow handler for time inputs\n * @param {Event} e the click event\n */\n function timeIncrement(e) {\n if (~e.target.className.indexOf(\"arrow\"))\n incrementNumInput(e, e.target.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n /**\n * Increments/decrements the value of input associ-\n * ated with the up/down arrow by dispatching an\n * \"increment\" event on the input.\n *\n * @param {Event} e the click event\n * @param {Number} delta the diff (usually 1 or -1)\n * @param {Element} inputElem the input element\n */\n function incrementNumInput(e, delta, inputElem) {\n var target = e && e.target;\n var input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n var event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n var fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n var customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, dayNumber, i) {\n var dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", \"flatpickr-day \" + className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n dayNumber % 7 === 1) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"\" + self.config.getWeek(date) + \"\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n for (var m = startMonth; m != endMonth; m += delta) {\n var month = self.daysContainer.children[m];\n var startIndex = delta > 0 ? 0 : month.children.length - 1;\n var endIndex = delta > 0 ? month.children.length : -1;\n for (var i = startIndex; i != endIndex; i += delta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n var givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n var loopDelta = delta > 0 ? 1 : -1;\n for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n var month = self.daysContainer.children[m];\n var startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n var numMonthDays = month.children.length;\n for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n var dayFocused = isInView(document.activeElement || document.body);\n var startElem = current !== undefined\n ? current\n : dayFocused\n ? document.activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined)\n return self._input.focus();\n if (!dayFocused)\n return focusOnDayElem(startElem);\n getNextAvailableDay(startElem, offset);\n }\n function buildMonthDays(year, month) {\n var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12);\n var daysInMonth = self.utils.getDaysInMonth(month), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n // prepend days from the ending of previous month\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n // Start at 1 since there is no 0th day\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n // append days from the next month\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n //updateNavigationCurrentMonth();\n var dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n // TODO: week numbers for each month\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n var frag = document.createDocumentFragment();\n for (var i = 0; i < self.config.showMonths; i++) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1)\n return;\n var shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (var i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, false, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n var container = createElement(\"div\", \"flatpickr-month\");\n var monthNavFragment = window.document.createDocumentFragment();\n var monthElement;\n if (self.config.showMonths > 1) {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n bind(self.monthsDropdownContainer, \"change\", function (e) {\n var target = e.target;\n var selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n var yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container: container,\n yearElement: yearElement,\n monthElement: monthElement\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (var m = self.config.showMonths; m--;) {\n var month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: function () { return self.__hidePrevMonthArrow; },\n set: function (bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n }\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: function () { return self.__hideNextMonthArrow; },\n set: function (bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n }\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n var hourInput = createNumberInput(\"flatpickr-hour\");\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n var minuteInput = createNumberInput(\"flatpickr-minute\");\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? self.config.defaultHour\n : military2ampm(self.config.defaultHour));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : self.config.defaultMinute);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n var secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : self.config.defaultSeconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n // add self.amPM if appropriate\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (var i = self.config.showMonths; i--;) {\n var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n var firstDayOfWeek = self.l10n.firstDayOfWeek;\n var weekdays = self.l10n.weekdays.shorthand.slice();\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = weekdays.splice(firstDayOfWeek, weekdays.length).concat(weekdays.splice(0, firstDayOfWeek));\n }\n for (var i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = \"\\n \\n \" + weekdays.join(\"\") + \"\\n \\n \";\n }\n }\n /* istanbul ignore next */\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper: weekWrapper,\n weekNumbers: weekNumbers\n };\n }\n function changeMonth(value, isOffset) {\n if (isOffset === void 0) { isOffset = true; }\n var delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent, toInitial) {\n if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\n if (toInitial === void 0) { toInitial = true; }\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n self.showTimeInput = false;\n if (self.config.enableTime === true) {\n setDefaultHours();\n }\n self.redraw();\n if (triggerChangeEvent)\n // triggerChangeEvent is true (default) or an Event\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (var i = self._handlers.length; i--;) {\n var h = self._handlers[i];\n h.element.removeEventListener(h.event, h.handler, h.options);\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n var wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n self.input.value = \"\";\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach(function (k) {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n if (self.config.appendTo && self.config.appendTo.contains(elem))\n return true;\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n var eventTarget_1 = getEventTarget(e);\n var isCalendarElement = isCalendarElem(eventTarget_1);\n var isInput = eventTarget_1 === self.input ||\n eventTarget_1 === self.altInput ||\n self.element.contains(eventTarget_1) ||\n // web components\n // e.path is not present in all browsers. circumventing typechecks\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n var lostFocus = e.type === \"blur\"\n ? isInput &&\n e.relatedTarget &&\n !isCalendarElem(e.relatedTarget)\n : !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n return elem.contains(eventTarget_1);\n });\n if (lostFocus && isIgnored) {\n self.close();\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n self.clear(false);\n self.redraw();\n }\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless) {\n if (timeless === void 0) { timeless = true; }\n var dateToCheck = self.parseDate(date, undefined, timeless); // timeless\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (self.config.enable.length === 0 && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n var bool = self.config.enable.length > 0, array = bool ? self.config.enable : self.config.disable;\n for (var i = 0, d = void 0; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck) // disabled by function\n )\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n // disabled by date\n return bool;\n else if (typeof d === \"string\" && dateToCheck !== undefined) {\n // disabled by date string\n var parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (\n // disabled by range\n typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onKeyDown(e) {\n // e.key e.keyCode\n // \"Backspace\" 8\n // \"Tab\" 9\n // \"Enter\" 13\n // \"Escape\" (IE \"Esc\") 27\n // \"ArrowLeft\" (IE \"Left\") 37\n // \"ArrowUp\" (IE \"Up\") 38\n // \"ArrowRight\" (IE \"Right\") 39\n // \"ArrowDown\" (IE \"Down\") 40\n // \"Delete\" (IE \"Del\") 46\n var isInput = e.target === self._input;\n var allowInput = self.config.allowInput;\n var allowKeydown = self.isOpen && (!allowInput || !isInput);\n var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n return e.target.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(e.target) ||\n allowKeydown ||\n allowInlineKeydown) {\n var isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(e.target);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27: // escape\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (document.activeElement && isInView(document.activeElement)))) {\n var delta_1 = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta_1);\n else {\n e.stopPropagation();\n changeMonth(delta_1);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n var delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer && e.target.$i !== undefined) ||\n e.target === self.input) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (e.target === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n var elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter(function (x) { return x; });\n var i = elems.indexOf(e.target);\n if (i !== -1) {\n var target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(e.target) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && e.target === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(e.target)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem) {\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(\"flatpickr-day\") ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n var hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n var containsDisabled = false;\n var minRange = 0, maxRange = 0;\n for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n for (var m = 0; m < self.config.showMonths; m++) {\n var month = self.daysContainer.children[m];\n var _loop_1 = function (i, l) {\n var dayElem = month.children[i], date = dayElem.dateObj;\n var timestamp = date.getTime();\n var outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n return \"continue\";\n }\n else if (containsDisabled && !outOfRange)\n return \"continue\";\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n };\n for (var i = 0, l = month.children.length; i < l; i++) {\n _loop_1(i, l);\n }\n }\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function setDefaultTime() {\n self.setDate(self.config.minDate !== undefined\n ? new Date(self.config.minDate.getTime())\n : new Date(), true);\n setDefaultHours();\n updateValue();\n }\n function open(e, positionElement) {\n if (positionElement === void 0) { positionElement = self._positionElement; }\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n e.target && e.target.blur();\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n if (self._input.disabled || self.config.inline)\n return;\n var wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.selectedDates.length === 0) {\n setDefaultTime();\n }\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(function () { return self.hourElement.select(); }, 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return function (date) {\n var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n var boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n var userConfig = __assign({}, instanceConfig, JSON.parse(JSON.stringify(element.dataset || {})));\n var formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: function () { return self.config._enable; },\n set: function (dates) {\n self.config._enable = parseDateRules(dates);\n }\n });\n Object.defineProperty(self.config, \"disable\", {\n get: function () { return self.config._disable; },\n set: function (dates) {\n self.config._disable = parseDateRules(dates);\n }\n });\n var timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaults.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaults.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n self.input.className + \" \" + self.config.altInputClass;\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: function () { return self.config._minDate; },\n set: minMaxDateSetter(\"min\")\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: function () { return self.config._maxDate; },\n set: minMaxDateSetter(\"max\")\n });\n var minMaxTimeSetter = function (type) { return function (val) {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i\");\n }; };\n Object.defineProperty(self.config, \"minTime\", {\n get: function () { return self.config._minTime; },\n set: minMaxTimeSetter(\"min\")\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: function () { return self.config._maxTime; },\n set: minMaxTimeSetter(\"max\")\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (var i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable.length &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (var i = 0; i < self.config.plugins.length; i++) {\n var pluginConf = self.config.plugins[i](self) || {};\n for (var key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n triggerEvent(\"onParseConfig\");\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n self.l10n = __assign({}, flatpickr.l10ns[\"default\"], (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n var userConfig = __assign({}, instanceConfig, JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n var positionElement = customPositionElement || self._positionElement;\n var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n var top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n var left = window.pageXOffset +\n inputBounds.left -\n (configPosHorizontal != null && configPosHorizontal === \"center\"\n ? (calendarWidth - inputBounds.width) / 2\n : 0);\n var right = window.document.body.offsetWidth - inputBounds.right;\n var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = top + \"px\";\n if (!rightMost) {\n self.calendarContainer.style.left = left + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = right + \"px\";\n }\n else {\n var doc = document.styleSheets[0];\n // some testing environments don't have css support\n if (doc === undefined)\n return;\n var bodyWidth = window.document.body.offsetWidth;\n var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n var centerBefore = \".flatpickr-calendar.centerMost:before\";\n var centerAfter = \".flatpickr-calendar.centerMost:after\";\n var centerIndex = doc.cssRules.length;\n var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n self.calendarContainer.style.left = centerLeft + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n // hack - bugs in the way IE handles focus keeps the calendar open\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n var isSelectable = function (day) {\n return day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n };\n var t = findParent(e.target, isSelectable);\n if (t === undefined)\n return;\n var target = t;\n var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n var selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n // unless selecting same date twice, sort ascendingly\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n var isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (self.config.enableTime)\n setTimeout(function () { return (self.showTimeInput = true); }, 50);\n // maintain focus\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n var single = self.config.mode === \"single\" && !self.config.enableTime;\n var range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n var CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate]\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (var key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach(function (x) { return x(); });\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach(function (x) { return x(); });\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(false);\n }\n function setSelectedDate(inputDate, format) {\n var dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n self.selectedDates = dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); });\n if (self.config.mode === \"range\")\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n function setDate(date, triggerChange, format) {\n if (triggerChange === void 0) { triggerChange = false; }\n if (format === void 0) { format = self.config.dateFormat; }\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.showTimeInput = self.selectedDates.length > 0;\n self.latestSelectedDateObj = self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate();\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map(function (rule) {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined)\n };\n return rule;\n })\n .filter(function (x) { return x; }); // remove falsy values\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n // Workaround IE11 setting placeholder as the input's value\n var preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n Object.defineProperty(self, \"showTimeInput\", {\n get: function () { return self._showTimeInput; },\n set: function (bool) {\n self._showTimeInput = bool;\n if (self.calendarContainer)\n toggleClass(self.calendarContainer, \"showTimeInput\", bool);\n self.isOpen && positionCalendar();\n }\n });\n }\n function setupInputs() {\n self.input = self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n /* istanbul ignore next */\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n // hack: store previous type to restore it after destroy()\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n // replicate self.element\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n var inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.step = self.input.getAttribute(\"step\") || \"any\";\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", function (e) {\n self.setDate(e.target.value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n // If the instance has been destroyed already, all hooks have been removed\n if (self.config === undefined)\n return;\n var hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (var i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n // many front-end frameworks bind to the input event\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (var i = 0; i < self.selectedDates.length; i++) {\n if (compareDates(self.selectedDates[i], date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach(function (yearElement, i) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1) {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(format) {\n return self.selectedDates\n .map(function (dObj) { return self.formatDate(dObj, format); })\n .filter(function (d, i, arr) {\n return self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i;\n })\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n /**\n * Updates the values of inputs associated with the calendar\n */\n function updateValue(triggerChange) {\n if (triggerChange === void 0) { triggerChange = true; }\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n var isPrevMonth = self.prevMonthNav.contains(e.target);\n var isNextMonth = self.nextMonthNav.contains(e.target);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(e.target) >= 0) {\n e.target.select();\n }\n else if (e.target.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (e.target.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n var isKeyDown = e.type === \"keydown\", input = e.target;\n if (self.amPM !== undefined && e.target === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n var newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n }\n /* istanbul ignore next */\n function _flatpickr(nodeList, config) {\n // static list\n var nodes = Array.prototype.slice\n .call(nodeList)\n .filter(function (x) { return x instanceof HTMLElement; });\n var instances = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n }\n /* istanbul ignore next */\n if (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n // browser env\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n }\n /* istanbul ignore next */\n var flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n };\n /* istanbul ignore next */\n flatpickr.defaultConfig = {};\n flatpickr.l10ns = {\n en: __assign({}, english),\n \"default\": __assign({}, english)\n };\n flatpickr.localize = function (l10n) {\n flatpickr.l10ns[\"default\"] = __assign({}, flatpickr.l10ns[\"default\"], l10n);\n };\n flatpickr.setDefaults = function (config) {\n flatpickr.defaultConfig = __assign({}, flatpickr.defaultConfig, config);\n };\n flatpickr.parseDate = createDateParser({});\n flatpickr.formatDate = createDateFormatter({});\n flatpickr.compareDates = compareDates;\n /* istanbul ignore next */\n if (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n }\n // eslint-disable-next-line @typescript-eslint/camelcase\n Date.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n };\n if (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n }\n\n return flatpickr;\n\n}));\n","module.exports = flarum.core.compat['Component'];","module.exports = flarum.core.compat['components/LogInModal'];","module.exports = flarum.core.compat['helpers/avatar'];","module.exports = flarum.core.compat['helpers/username'];","module.exports = flarum.core.compat['utils/PostControls'];","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","import Model from 'flarum/Model';\nimport mixin from 'flarum/utils/mixin';\n\nexport default class Poll extends mixin(Model, {\n question: Model.attribute('question'),\n hasEnded: Model.attribute('hasEnded'),\n endDate: Model.attribute('endDate'),\n publicPoll: Model.attribute('publicPoll'),\n\n options: Model.hasMany('options'),\n votes: Model.hasMany('votes'),\n}) {\n apiEndpoint() {\n return `/fof/polls${this.exists ? `/${this.data.id}` : ''}`;\n }\n}\n","import Model from 'flarum/Model';\nimport mixin from 'flarum/utils/mixin';\n\nexport default class PollOption extends mixin(Model, {\n answer: Model.attribute('answer'),\n\n poll: Model.hasOne('polls'),\n votes: Model.hasMany('votes'),\n}) {\n apiEndpoint() {\n return `/fof/polls/answers${this.exists ? `/${this.data.id}` : ''}`;\n }\n}\n","import Model from 'flarum/Model';\nimport mixin from 'flarum/utils/mixin';\n\nexport default class PollVote extends mixin(Model, {\n poll: Model.hasOne('poll'),\n option: Model.hasOne('option'),\n user: Model.hasOne('user'),\n\n pollId: Model.attribute('pollId'),\n optionId: Model.attribute('optionId'),\n}) {\n apiEndpoint() {\n return `/fof/polls/${this.pollId()}/vote`;\n }\n}\n","import Button from 'flarum/components/Button';\nimport Modal from 'flarum/components/Modal';\nimport Switch from 'flarum/components/Switch';\n\nimport flatpickr from 'flatpickr';\n\nexport default class CreatePollModal extends Modal {\n init() {\n super.init();\n\n this.options = [m.prop(''), m.prop('')];\n\n this.question = m.prop('');\n\n this.endDate = m.prop();\n\n this.publicPoll = m.prop(false);\n\n if (this.props.poll) {\n const poll = this.props.poll;\n\n this.options = poll.relationships.options.map(o => m.prop(o));\n this.question(poll.question);\n this.endDate(!poll.endDate || isNaN(poll.endDate.getTime()) ? null : poll.endDate);\n this.publicPoll(poll.publicPoll);\n }\n }\n\n title() {\n return app.translator.trans('fof-polls.forum.modal.add_title');\n }\n\n className() {\n return 'PollDiscussionModal Modal--small';\n }\n\n configDatePicker(el, isInitialized) {\n if (isInitialized) return;\n\n flatpickr(el, {\n enableTime: true,\n minDate: this.endDate() || 'today',\n dateFormat: 'Y-m-d H:i',\n defaultDate: this.endDate(),\n wrap: true,\n\n onChange: dates => this.endDate(dates[0]),\n });\n }\n\n content() {\n return [\n
\n
\n
\n \n\n \n
\n\n
\n \n\n {this.displayOptions()}\n
\n\n
\n \n\n
\n \n {Button.component({\n className: 'Button PollModal--button',\n icon: 'fas fa-times',\n 'data-clear': true,\n })}\n
\n
\n\n
\n {Switch.component({\n state: this.publicPoll() || false,\n children: app.translator.trans('fof-polls.forum.modal.public_poll_label'),\n onchange: this.publicPoll,\n })}\n
\n\n
\n {Button.component({\n type: 'submit',\n className: 'Button Button--primary PollModal-SubmitButton',\n children: app.translator.trans('fof-polls.forum.modal.submit'),\n loading: this.loading,\n })}\n
\n
\n
,\n ];\n }\n\n displayOptions() {\n return Object.keys(this.options).map((el, i) => (\n
\n
\n \n
\n {i >= 2\n ? Button.component({\n type: 'button',\n className: 'Button Button--warning PollModal--button',\n icon: 'fas fa-minus',\n onclick: i >= 2 ? this.removeOption.bind(this, i) : '',\n })\n : ''}\n
\n ));\n }\n\n addOption() {\n const setting = app.data['fof-polls.options.max'];\n const max = (setting && parseInt(setting)) || 11;\n\n if (this.options.length < max) {\n this.options.push(m.prop(''));\n } else {\n alert(app.translator.trans('fof-polls.forum.modal.max'));\n }\n }\n\n removeOption(option) {\n this.options.splice(option, 1);\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n const poll = {\n question: this.question(),\n endDate: this.endDate(),\n publicPoll: this.publicPoll(),\n };\n const options = this.options.map(a => a()).filter(Boolean);\n\n if (this.question() === '') {\n alert(app.translator.trans('fof-polls.forum.modal.include_question'));\n\n return;\n }\n\n if (options.length < 2) {\n alert(app.translator.trans('fof-polls.forum.modal.min'));\n\n return;\n }\n\n poll.relationships = { options };\n\n this.props.onsubmit(poll);\n\n app.modal.close();\n }\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","import Modal from 'flarum/components/Modal';\nimport avatar from 'flarum/helpers/avatar';\nimport username from 'flarum/helpers/username';\n\nexport default class ShowVotersModal extends Modal {\n className() {\n return 'Modal--small';\n }\n\n title() {\n return app.translator.trans('fof-polls.forum.votes_modal.title');\n }\n\n content() {\n return (\n
\n
    \n {this.props.poll.options().map(opt => {\n const votes = this.props.poll\n .votes()\n .filter(v => opt.id() === v.option().id())\n .map(v => v.user());\n\n return (\n
    \n

    {opt.answer() + ':'}

    \n\n {votes.length ? (\n votes.map(u => {\n const attrs = u && { href: app.route.user(u), config: m.route };\n\n return (\n
  • \n \n {avatar(u)} {username(u)}\n \n
  • \n );\n })\n ) : (\n

    {app.translator.trans('fof-polls.forum.modal.no_voters')}

    \n )}\n
    \n );\n })}\n
\n
\n );\n }\n}\n","import Component from 'flarum/Component';\nimport Button from 'flarum/components/Button';\nimport LogInModal from 'flarum/components/LogInModal';\n\nimport ListVotersModal from './ListVotersModal';\n\nexport default class PollVote extends Component {\n init() {\n this.poll = this.props.poll;\n\n this.vote = m.prop();\n this.voted = m.prop(false);\n\n this.updateData();\n }\n\n view() {\n return (\n
\n

{this.poll.question()}

\n\n {this.options.map(opt => {\n const hasVoted = this.voted();\n const voted =\n this.vote() &&\n this.vote()\n .option()\n .id() === opt.id();\n const votes = this.votes.filter(v => v.option().id() === opt.id()).length;\n const percent = Math.round((votes / this.poll.votes().length) * 100);\n\n const attrs = voted\n ? {\n title:\n hasVoted && app.translator.transChoice('fof-polls.forum.tooltip.votes', votes, { count: String(votes) }).join(''),\n config: function(element) {\n $(element).tooltip({ placement: 'right' });\n },\n }\n : {};\n\n const inputAttrs = voted\n ? {\n checked: true,\n }\n : {};\n\n return (\n
\n
\n {((!this.poll.hasEnded() && app.session.user && app.session.user.canVotePolls()) || !app.session.user) && (\n \n )}\n\n
\n \n {hasVoted && (\n \n )}\n
\n
\n );\n })}\n\n
\n\n {this.poll.publicPoll()\n ? Button.component({\n className: 'Button Button--primary PublicPollButton',\n children: app.translator.trans('fof-polls.forum.public_poll'),\n onclick: () => this.showVoters(),\n })\n : ''}\n\n {app.session.user && !app.session.user.canVotePolls() ? (\n
{app.translator.trans('fof-polls.forum.no_permission')}
\n ) : this.poll.hasEnded() ? (\n
{app.translator.trans('fof-polls.forum.poll_ended')}
\n ) : this.poll.endDate() !== null ? (\n
\n \n {app.translator.trans('fof-polls.forum.days_remaining', { time: moment(this.poll.endDate()).fromNow() })}\n
\n ) : (\n ''\n )}\n
\n );\n }\n\n updateData() {\n this.poll = app.store.getById('polls', this.poll.id());\n this.options = this.poll.options() || [];\n this.votes = this.poll.votes() || [];\n\n this.vote(app.session.user ? this.votes.find(v => v.user() && v.user().id() === app.session.user.id()) : null);\n\n this.voted(!!this.vote());\n }\n\n onError(evt, error) {\n evt.target.checked = false;\n\n app.alerts.show(error.alert);\n }\n\n changeVote(option, evt) {\n if (!app.session.user) {\n app.modal.show(new LogInModal());\n evt.target.checked = false;\n return;\n }\n\n if (\n this.vote() &&\n option.id() ===\n this.vote()\n .option()\n .id()\n )\n option = null;\n\n if (!this.vote()) {\n this.vote(app.store.createRecord('poll_votes'));\n\n this.vote().pollId(this.poll.id());\n }\n\n m.startComputation();\n\n app.request({\n method: 'PATCH',\n url: `${app.forum.attribute('apiUrl')}/fof/polls/${this.poll.id()}/vote`,\n errorHandler: this.onError.bind(this, evt),\n data: {\n data: {\n optionId: option ? option.id() : null,\n },\n },\n }).then(res => {\n app.store.pushPayload(res);\n\n if (!option) app.store.remove(this.vote());\n\n this.updateData();\n\n if (!option) {\n m.redraw.strategy('all');\n m.redraw();\n m.redraw.strategy('diff');\n }\n\n m.endComputation();\n });\n }\n\n showVoters() {\n app.modal.show(\n new ListVotersModal({\n poll: this.poll,\n })\n );\n }\n}\n","import Button from 'flarum/components/Button';\n\nimport CreatePollModal from './CreatePollModal';\n\nexport default class EditPollModal extends CreatePollModal {\n init() {\n this.poll = this.props.poll;\n\n this.options = this.poll.options();\n this.optionAnswers = this.options.map(o => m.prop(o.answer()));\n this.question = m.prop(this.poll.question());\n this.endDate = m.prop(this.poll.endDate());\n this.publicPoll = m.prop(this.poll.publicPoll());\n }\n\n title() {\n return app.translator.trans('fof-polls.forum.modal.edit_title');\n }\n\n displayOptions() {\n return this.options.map((opt, i) => (\n
\n
\n \n
\n\n {i >= 2\n ? Button.component({\n type: 'button',\n className: 'Button PollModal--button',\n icon: 'fas fa-minus',\n onclick: i >= 2 ? this.removeOption.bind(this, i) : '',\n })\n : ''}\n
\n ));\n }\n\n addOption() {\n const setting = app.data['fof-polls.options.max'];\n const max = (setting && parseInt(setting)) || 11;\n\n if (this.options.length < max) {\n this.options.push(app.store.createRecord('poll_options'));\n this.optionAnswers.push(m.prop(''));\n } else {\n alert(app.translator.trans('fof-polls.forum.modal.max'));\n }\n }\n\n removeOption(i) {\n this.options.splice(i, 1);\n this.optionAnswers.splice(i, 1);\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n if (this.loading) return;\n\n this.loading = true;\n\n const options = this.options.map((o, i) => {\n if (!o.data.attributes) o.data.attributes = {};\n\n o.data.attributes.answer = this.optionAnswers[i]();\n\n return o.data;\n });\n\n return this.poll\n .save({\n question: this.question(),\n endDate: this.endDate() || false,\n publicPoll: this.publicPoll(),\n options,\n })\n .then(() => {\n document.location.reload();\n })\n .catch(e => {\n this.loaded();\n this.onerror(e);\n });\n }\n}\n","import { extend } from 'flarum/extend';\nimport Model from 'flarum/Model';\nimport CommentPost from 'flarum/components/CommentPost';\n\nimport Poll from './models/Poll';\nimport PollOption from './models/PollOption';\nimport PollVote from './models/PollVote';\n\nimport addDiscussionBadge from './addDiscussionBadge';\nimport addDiscussionComposerItem from './addDiscussionComposerItem';\nimport addPollToDiscussion from './addPollToDiscussion';\nimport addDiscussionControls from './addDiscussionControls';\n\napp.initializers.add('fof/polls', () => {\n app.store.models.polls = Poll;\n app.store.models.poll_options = PollOption;\n app.store.models.poll_votes = PollVote;\n\n app.store.models.discussions.prototype.poll = Model.hasOne('poll');\n\n app.store.models.users.prototype.canEditPolls = Model.attribute('canEditPolls');\n app.store.models.users.prototype.canStartPolls = Model.attribute('canStartPolls');\n app.store.models.users.prototype.canSelfEditPolls = Model.attribute('canSelfEditPolls');\n app.store.models.users.prototype.canVotePolls = Model.attribute('canVotePolls');\n\n addDiscussionBadge();\n addDiscussionControls();\n addDiscussionComposerItem();\n addPollToDiscussion();\n});\n","import { extend } from 'flarum/extend';\nimport Badge from 'flarum/components/Badge';\nimport DiscussionList from 'flarum/components/DiscussionList';\nimport Discussion from 'flarum/models/Discussion';\n\nexport default () => {\n extend(DiscussionList.prototype, 'requestParams', params => {\n params.include.push('poll');\n });\n\n extend(Discussion.prototype, 'badges', function(badges) {\n if (this.poll()) {\n badges.add(\n 'poll',\n Badge.component({\n type: 'poll',\n label: app.translator.trans('fof-polls.forum.tooltip.badge'),\n icon: 'fa fa-signal',\n }),\n 5\n );\n }\n });\n};\n","import { extend } from 'flarum/extend';\nimport PostControls from 'flarum/utils/PostControls';\nimport Button from 'flarum/components/Button';\n\nimport EditPollModal from './components/EditPollModal';\n\nexport default () => {\n extend(PostControls, 'moderationControls', function(items, post) {\n const discussion = post.discussion();\n const poll = discussion.poll();\n const user = app.session.user;\n\n if (!(poll && ((user && user.canEditPolls()) || (post.user() && post.user().canSelfEditPolls() && post.user().id() === user.id())) && post.number() === 1)) {\n return;\n }\n\n if (!poll.hasEnded()) {\n items.add(\n 'fof-polls-edit',\n Button.component({\n icon: 'fas fa-check-square',\n children: app.translator.trans('fof-polls.forum.moderation.edit'),\n onclick: () => app.modal.show(new EditPollModal({ poll })),\n })\n );\n }\n\n items.add(\n 'fof-polls-remove',\n Button.component({\n icon: 'fas fa-trash',\n children: app.translator.trans('fof-polls.forum.moderation.delete'),\n onclick: () => {\n if (confirm(app.translator.trans('fof-polls.forum.moderation.delete_confirm'))) {\n poll.delete().then(() => {\n m.redraw.strategy('all');\n m.redraw();\n m.redraw.strategy('diff');\n });\n }\n },\n })\n );\n });\n};\n","import { extend } from 'flarum/extend';\nimport DiscussionComposer from 'flarum/components/DiscussionComposer';\n\nimport CreatePollModal from './components/CreatePollModal';\n\nexport default () => {\n DiscussionComposer.prototype.addPoll = function() {\n app.modal.show(\n new CreatePollModal({\n poll: this.poll,\n onsubmit: poll => (this.poll = poll),\n })\n );\n };\n\n // Add button to DiscussionComposer header\n extend(DiscussionComposer.prototype, 'headerItems', function(items) {\n if (app.session.user && app.session.user.canStartPolls()) {\n items.add(\n 'polls',\n \n \n {app.translator.trans(`fof-polls.forum.composer_discussion.${this.poll ? 'edit' : 'add'}_poll`)}\n \n ,\n 1\n );\n }\n });\n\n extend(DiscussionComposer.prototype, 'data', function(data) {\n if (this.poll) {\n data.poll = this.poll;\n }\n });\n};\n","import { extend } from 'flarum/extend';\nimport CommentPost from 'flarum/components/CommentPost';\n\nimport DiscussionPoll from './components/DiscussionPoll';\n\n// import PollVote from './components/PollVote';\n\nexport default () => {\n extend(CommentPost.prototype, 'content', function(content) {\n const discussion = this.props.post.discussion();\n\n if (discussion.poll() && this.props.post.number() === 1) {\n content.push(\n DiscussionPoll.component({\n poll: discussion.poll(),\n })\n );\n }\n });\n\n extend(CommentPost.prototype, 'config', function(x, isInitialized, context) {\n if (isInitialized) return;\n\n if (app.pusher) {\n app.pusher.then(channels => {\n channels.main.bind('newPollVote', data => {\n var userId = parseInt(data['user_id']);\n\n if (app.session.user && userId == app.session.user.id()) return;\n\n let poll = app.store.getById(\n 'polls',\n this.props.post\n .discussion()\n .poll()\n .id()\n );\n\n if (parseInt(poll.id()) === parseInt(data['poll_id'])) {\n m.startComputation();\n\n let vote = {};\n\n Object.keys(data).map(key => {\n vote[key] = m.prop(data[key]);\n });\n\n vote['option'] = m.prop(app.store.getById('poll_options', data['option_id']));\n vote['user'] = m.prop(app.store.getById('users', data['user_id']));\n\n let newVotes = poll.votes();\n\n newVotes.some((vote, i) => {\n if (vote.user() && parseInt(vote.user().id()) === userId) {\n newVotes.splice(i, 1);\n }\n });\n\n newVotes.push(vote);\n\n poll.votes = m.prop(newVotes);\n\n m.redraw.strategy('all');\n\n m.endComputation();\n }\n });\n\n extend(context, 'onunload', () => channels.main.unbind('newPollVote'));\n });\n }\n });\n};\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://@fof/polls/webpack/bootstrap","webpack://@fof/polls/external \"flarum.core.compat['Model']\"","webpack://@fof/polls/external \"flarum.core.compat['extend']\"","webpack://@fof/polls/external \"flarum.core.compat['components/Button']\"","webpack://@fof/polls/external \"flarum.core.compat['utils/mixin']\"","webpack://@fof/polls/external \"flarum.core.compat['components/Modal']\"","webpack://@fof/polls/external \"flarum.core.compat['components/DiscussionComposer']\"","webpack://@fof/polls/external \"flarum.core.compat['components/CommentPost']\"","webpack://@fof/polls/external \"flarum.core.compat['components/Badge']\"","webpack://@fof/polls/external \"flarum.core.compat['components/DiscussionList']\"","webpack://@fof/polls/external \"flarum.core.compat['models/Discussion']\"","webpack://@fof/polls/external \"flarum.core.compat['components/Switch']\"","webpack://@fof/polls/./node_modules/flatpickr/dist/flatpickr.js","webpack://@fof/polls/external \"flarum.core.compat['Component']\"","webpack://@fof/polls/external \"flarum.core.compat['components/LogInModal']\"","webpack://@fof/polls/external \"flarum.core.compat['helpers/avatar']\"","webpack://@fof/polls/external \"flarum.core.compat['helpers/username']\"","webpack://@fof/polls/external \"flarum.core.compat['utils/PostControls']\"","webpack://@fof/polls/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@fof/polls/./src/forum/models/Poll.js","webpack://@fof/polls/./src/forum/models/PollOption.js","webpack://@fof/polls/./src/forum/models/PollVote.js","webpack://@fof/polls/./src/forum/components/CreatePollModal.js","webpack://@fof/polls/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@fof/polls/./src/forum/components/ListVotersModal.js","webpack://@fof/polls/./src/forum/components/DiscussionPoll.js","webpack://@fof/polls/./src/forum/components/EditPollModal.js","webpack://@fof/polls/./src/forum/components/index.js","webpack://@fof/polls/./src/forum/models/index.js","webpack://@fof/polls/./src/forum/index.js","webpack://@fof/polls/./src/forum/addDiscussionBadge.js","webpack://@fof/polls/./src/forum/addDiscussionControls.js","webpack://@fof/polls/./src/forum/addDiscussionComposerItem.js","webpack://@fof/polls/./src/forum/addPollToDiscussion.js","webpack://@fof/polls/./forum.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","flarum","core","compat","__assign","assign","arguments","length","apply","this","HOOKS","defaults","_disable","_enable","allowInput","altFormat","altInput","altInputClass","animate","window","navigator","userAgent","indexOf","ariaDateFormat","clickOpens","closeOnSelect","conjunction","dateFormat","defaultHour","defaultMinute","defaultSeconds","disable","disableMobile","enable","enableSeconds","enableTime","errorHandler","err","console","warn","getWeek","givenDate","date","Date","getTime","setHours","setDate","getDate","getDay","week1","getFullYear","Math","round","hourIncrement","ignoredFocusElements","inline","locale","minuteIncrement","nextArrow","noCalendar","now","onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition","plugins","position","positionElement","undefined","prevArrow","shorthandCurrentMonth","showMonths","static","time_24hr","weekNumbers","wrap","english","weekdays","shorthand","longhand","months","daysInMonth","firstDayOfWeek","ordinal","nth","rangeSeparator","weekAbbreviation","scrollTitle","toggleTitle","amPM","yearAriaLabel","pad","number","slice","int","bool","debounce","func","wait","immediate","timeout","context","args","clearTimeout","setTimeout","arrayify","obj","Array","toggleClass","elem","className","classList","add","remove","createElement","tag","content","e","document","textContent","clearNode","node","firstChild","removeChild","createNumberInput","inputClassName","opts","wrapper","numInput","arrowUp","arrowDown","type","pattern","setAttribute","appendChild","doNothing","monthToStr","monthNumber","revFormat","D","F","dateObj","monthName","setMonth","G","hour","parseFloat","H","J","day","K","getHours","RegExp","test","M","shortMonth","S","seconds","setSeconds","U","_","unixSeconds","W","weekNum","weekNumber","parseInt","Y","year","setFullYear","Z","ISODate","h","minutes","setMinutes","j","month","u","unixMillSeconds","w","y","tokenRegex","formats","toISOString","options","getMonth","getSeconds","getMinutes","String","substring","createDateFormatter","_a","_b","config","_c","l10n","frmt","overrideLocale","formatDate","split","map","arr","join","createDateParser","givenFormat","timeless","customLocale","parsedDate","dateOrig","toFixed","format","datestr","trim","parseDate","matched","ops","matchIndex","regexStr","token_1","isBackSlash","escaped","match","exec","fn","val","forEach","isNaN","Error","compareDates","date1","date2","isBetween","ts","ts1","ts2","min","max","duration","DAY","target","_i","TypeError","_loop_1","source","keys","args_1","DEBOUNCED_CHANGE_MS","FlatpickrInstance","element","instanceConfig","self","flatpickr","defaultConfig","bindToInstance","setCalendarWidth","requestAnimationFrame","calendarContainer","style","visibility","display","daysContainer","daysWidth","days","offsetWidth","width","weekWrapper","removeProperty","updateTime","selectedDates","setDefaultTime","preventDefault","isKeyDown","input","getAttribute","step","curValue","delta","which","newValue","isHourElem","hourElement","isMinuteElem","minuteElement","incrementNumInput","abs","timeWrapper","prevValue","_input","setHoursFromInputs","updateValue","_debouncedChange","hours","secondElement","limitMinHours","minTime","minDate","minDateHasTime","latestSelectedDateObj","limitMaxHours","maxTime","maxDate","maxDateHasTime","setHoursFromDate","setDefaultHours","minHr","minMinutes","maxHr","maxMinutes","isMobile","onYearInput","event","toString","changeYear","handler","ev","el","addEventListener","_handlers","push","onClick","evt","triggerChange","triggerEvent","bindEvents","querySelectorAll","inputType","mobileInput","tabIndex","disabled","required","placeholder","mobileFormatStr","defaultValue","parentNode","insertBefore","nextSibling","setupMobile","debouncedResize","onResize","onMouseOver","body","ontouchstart","documentClick","capture","open","monthNav","onMonthNavClick","selectDate","timeContainer","timeIncrement","select","jumpToDate","jumpDate","jumpTo","oldYear","currentYear","oldMonth","currentMonth","message","buildMonthSwitch","redraw","contains","inputElem","createEvent","dispatchEvent","build","fragment","createDocumentFragment","yearElements","monthElements","prevMonthNav","innerHTML","nextMonthNav","buildMonths","__hidePrevMonthArrow","set","__hideNextMonthArrow","currentYearElement","updateNavigationCurrentMonth","innerContainer","buildWeeks","rContainer","buildWeekdays","buildDays","separator","hourInput","getElementsByTagName","minuteInput","military2ampm","secondInput","title","buildTime","customAppend","appendTo","nodeType","createDay","dayNumber","dateIsEnabled","isEnabled","dayElement","$i","todayDateElem","isDateSelected","selectedDateElem","isDateInRange","insertAdjacentHTML","focusOnDayElem","targetNode","focus","getFirstAvailableDay","startMonth","endMonth","children","startIndex","endIndex","focusOnDay","current","offset","dayFocused","isInView","activeElement","startElem","givenMonth","loopDelta","numMonthDays","changeMonth","getNextAvailableDay","buildMonthDays","firstOfMonth","prevMonthDays","utils","getDaysInMonth","isMultiMonth","prevMonthDayClass","nextMonthDayClass","dayIndex","dayNum","dayContainer","frag","shouldBuildMonth","monthsDropdownContainer","selected","buildMonth","monthElement","container","monthNavFragment","selectedMonth","yearInput","tabindex","yearElement","weekdayContainer","updateWeekdays","splice","concat","isOffset","_hidePrevMonthArrow","_hideNextMonthArrow","isCalendarElem","isOpen","eventTarget_1","composedPath","path","getEventTarget","isCalendarElement","isInput","lostFocus","relatedTarget","isIgnored","some","close","clear","newYear","newYearNum","isNewYear","dateToCheck","array","parsed","from","to","allowKeydown","allowInlineKeydown","keyCode","blur","isTimeObj","focusAndClose","delta_1","ctrlKey","stopPropagation","elems","pluginElements","filter","x","shiftKey","charAt","toLowerCase","hoverDate","firstElementChild","initialDate","rangeStartDate","rangeEndDate","containsDisabled","minRange","maxRange","dayElem","timestamp","outOfRange","positionCalendar","minMaxDateSetter","inverseDateObj","removeAttribute","setupLocale","l10ns","userConfig","JSON","parse","stringify","dataset","customPositionElement","_positionElement","calendarHeight","reduce","acc","child","offsetHeight","calendarWidth","configPos","configPosVertical","configPosHorizontal","inputBounds","getBoundingClientRect","distanceFromBottom","innerHeight","bottom","showOnTop","top","pageYOffset","left","pageXOffset","right","rightMost","centerMost","doc","styleSheets","bodyWidth","centerLeft","centerIndex","cssRules","centerStyle","insertRule","centerBefore","msMaxTouchPoints","findParent","condition","selectedDate","shouldChangeMonth","selectedIndex","sort","a","b","showTimeInput","single","range","loadedPlugins","_bind","_setHoursFromDate","_positionCalendar","triggerChangeEvent","toInitial","_initialDate","_createElement","destroy","removeEventListener","lastChild","_type","k","click","wasOpen","option","CALLBACKS","setSelectedDate","toggle","inputDate","dates","parseDateRules","rule","data","hooks","initEvent","getDateStr","dObj","isPrevMonth","isNextMonth","boolOpts","timeMode","defaultDateFormat","defaultAltFormat","_minDate","_maxDate","minMaxTimeSetter","_minTime","_maxTime","hook","pluginConf","parseConfig","querySelector","nodeName","preloadedDate","defaultDate","_showTimeInput","setupDates","yr","isSafari","init","_flatpickr","nodeList","nodes","HTMLElement","instances","error","HTMLCollection","NodeList","selector","Node","en","default","localize","setDefaults","jQuery","fp_incr","factory","_inheritsLoose","subClass","superClass","constructor","__proto__","Poll","apiEndpoint","exists","id","mixin","Model","question","attribute","hasEnded","endDate","publicPoll","hasMany","votes","PollOption","answer","poll","hasOne","PollVote","pollId","user","optionId","CreatePollModal","_Modal","prop","props","relationships","app","translator","trans","configDatePicker","isInitialized","_this","bidi","Button","component","icon","onclick","addOption","displayOptions","data-input","data-clear","Switch","state","onchange","loading","_this2","removeOption","setting","alert","onsubmit","Boolean","modal","Modal","_extends","ListVotersModal","opt","v","attrs","href","route","avatar","username","DiscussionPoll","vote","voted","updateData","view","hasVoted","percent","transChoice","count","$","tooltip","placement","inputAttrs","checked","data-selected","session","canVotePolls","changeVote","showVoters","class","time","moment","fromNow","store","getById","find","onError","alerts","show","LogInModal","createRecord","startComputation","request","method","url","forum","then","res","pushPayload","strategy","endComputation","Component","EditPollModal","optionAnswers","attributes","save","location","reload","loaded","onerror","components","models","initializers","polls","poll_options","poll_votes","discussions","users","canEditPolls","canStartPolls","canSelfEditPolls","extend","DiscussionList","params","include","Discussion","badges","Badge","label","PostControls","items","post","discussion","confirm","DiscussionComposer","addPoll","CommentPost","pusher","channels","main","userId","newVotes","unbind","__webpack_exports__"],"mappings":"2BACA,IAAAA,EAAA,GAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,GAAA,CACAG,EAAAH,EACAI,GAAA,EACAH,QAAA,IAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QA0DA,OArDAF,EAAAQ,EAAAF,EAGAN,EAAAS,EAAAV,EAGAC,EAAAU,EAAA,SAAAR,EAAAS,EAAAC,GACAZ,EAAAa,EAAAX,EAAAS,IACAG,OAAAC,eAAAb,EAAAS,EAAA,CAA0CK,YAAA,EAAAC,IAAAL,KAK1CZ,EAAAkB,EAAA,SAAAhB,GACA,oBAAAiB,eAAAC,aACAN,OAAAC,eAAAb,EAAAiB,OAAAC,YAAA,CAAwDC,MAAA,WAExDP,OAAAC,eAAAb,EAAA,cAAiDmB,OAAA,KAQjDrB,EAAAsB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAArB,EAAAqB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFA1B,EAAAkB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAArB,EAAAU,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAzB,EAAA6B,EAAA,SAAA1B,GACA,IAAAS,EAAAT,KAAAqB,WACA,WAA2B,OAAArB,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAH,EAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD/B,EAAAkC,EAAA,GAIAlC,IAAAmC,EAAA,oBClFAhC,EAAAD,QAAAkC,OAAAC,KAAAC,OAAA,qBCAAnC,EAAAD,QAAAkC,OAAAC,KAAAC,OAAA,sBCAAnC,EAAAD,QAAAkC,OAAAC,KAAAC,OAAA,oCCAAnC,EAAAD,QAAAkC,OAAAC,KAAAC,OAAA,8BCAAnC,EAAAD,QAAAkC,OAAAC,KAAAC,OAAA,mCCAAnC,EAAAD,QAAAkC,OAAAC,KAAAC,OAAA,iDCAAnC,EAAAD,QAAAkC,OAAAC,KAAAC,OAAA,yCCAAnC,EAAAD,QAAAkC,OAAAC,KAAAC,OAAA,mCCAAnC,EAAAD,QAAAkC,OAAAC,KAAAC,OAAA,4CCAAnC,EAAAD,QAAAkC,OAAAC,KAAAC,OAAA,oCCAAnC,EAAAD,QAAAkC,OAAAC,KAAAC,OAAA;;ACEgEnC,EAAAD,QAG/D,WAAoB;;;;;;;;;;;;;;oFAiBrB,IAAAqC,EAAA,WAQA,OAPAA,EAAAzB,OAAA0B,QAAA,SAAAlB,GACA,QAAAa,EAAA/B,EAAA,EAAAyB,EAAAY,UAAAC,OAAoDtC,EAAAyB,EAAOzB,IAE3D,QAAA8B,KADAC,EAAAM,UAAArC,GACAU,OAAAkB,UAAAC,eAAA1B,KAAA4B,EAAAD,KAAAZ,EAAAY,GAAAC,EAAAD,IAEA,OAAAZ,IAEAqB,MAAAC,KAAAH,YAGAI,EAAA,CACA,WACA,UACA,cACA,YACA,YACA,gBACA,SACA,gBACA,UACA,gBACA,eACA,yBAEAC,EAAA,CACAC,SAAA,GACAC,QAAA,GACAC,YAAA,EACAC,UAAA,SACAC,UAAA,EACAC,cAAA,qBACAC,QAAA,iBAAAC,SACA,IAAAA,OAAAC,UAAAC,UAAAC,QAAA,QACAC,eAAA,SACAC,YAAA,EACAC,eAAA,EACAC,YAAA,KACAC,WAAA,QACAC,YAAA,GACAC,cAAA,EACAC,eAAA,EACAC,QAAA,GACAC,eAAA,EACAC,OAAA,GACAC,eAAA,EACAC,YAAA,EACAC,aAAA,SAAAC,GACA,0BAAAC,iBAAAC,KAAAF,IAEAG,QAAA,SAAAC,GACA,IAAAC,EAAA,IAAAC,KAAAF,EAAAG,WACAF,EAAAG,SAAA,SAEAH,EAAAI,QAAAJ,EAAAK,UAAA,GAAAL,EAAAM,SAAA,MAEA,IAAAC,EAAA,IAAAN,KAAAD,EAAAQ,cAAA,KAEA,SACAC,KAAAC,QAAAV,EAAAE,UAAAK,EAAAL,WAAA,MACA,GACAK,EAAAD,SAAA,MACA,IAEAK,cAAA,EACAC,qBAAA,GACAC,QAAA,EACAC,OAAA,UACAC,gBAAA,EACArE,KAAA,SACAsE,UAAA,yOACAC,YAAA,EACAC,IAAA,IAAAjB,KACAkB,SAAA,GACAC,QAAA,GACAC,YAAA,GACAC,UAAA,GACAC,UAAA,GACAC,cAAA,GACAC,OAAA,GACAC,cAAA,GACAC,QAAA,GACAC,cAAA,GACAC,aAAA,GACAC,sBAAA,GACAC,QAAA,GACAC,SAAA,OACAC,qBAAAC,EACAC,UAAA,uOACAC,uBAAA,EACAC,WAAA,EACAC,QAAA,EACAC,WAAA,EACAC,aAAA,EACAC,MAAA,GAGAC,EAAA,CACAC,SAAA,CACAC,UAAA,4CACAC,SAAA,CACA,SACA,SACA,UACA,YACA,WACA,SACA,aAGAC,OAAA,CACAF,UAAA,CACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEAC,SAAA,CACA,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,aAGAE,YAAA,sCACAC,eAAA,EACAC,QAAA,SAAAC,GACA,IAAA5F,EAAA4F,EAAA,IACA,GAAA5F,EAAA,GAAAA,EAAA,GACA,WACA,OAAAA,EAAA,IACA,OACA,WACA,OACA,WACA,OACA,WACA,QACA,aAGA6F,eAAA,OACAC,iBAAA,KACAC,YAAA,sBACAC,YAAA,kBACAC,KAAA,YACAC,cAAA,OACAjB,WAAA,GAGAkB,EAAA,SAAAC,GAAiC,WAAAA,GAAAC,OAAA,IACjCC,EAAA,SAAAC,GAA+B,WAAAA,EAAA,KAE/B,SAAAC,EAAAC,EAAAC,EAAAC,GAEA,IAAAC,EACA,YAFA,IAAAD,IAAmCA,GAAA,GAEnC,WACA,IAAAE,EAAApG,KAAAqG,EAAAxG,UACA,OAAAsG,GAAAG,aAAAH,GACAA,EAAAzF,OAAA6F,WAAA,WACAJ,EAAA,KACAD,GACAF,EAAAjG,MAAAqG,EAAAC,IACaJ,GACbC,IAAAC,GACAH,EAAAjG,MAAAqG,EAAAC,IAGA,IAAAG,EAAA,SAAAC,GACA,OAAAA,aAAAC,MAAAD,EAAA,CAAAA,IAGA,SAAAE,EAAAC,EAAAC,EAAAf,GACA,QAAAA,EACA,OAAAc,EAAAE,UAAAC,IAAAF,GACAD,EAAAE,UAAAE,OAAAH,GAEA,SAAAI,EAAAC,EAAAL,EAAAM,GACA,IAAAC,EAAA1G,OAAA2G,SAAAJ,cAAAC,GAMA,OALAL,KAAA,GACAM,KAAA,GACAC,EAAAP,iBACA1C,IAAAgD,IACAC,EAAAE,YAAAH,GACAC,EAEA,SAAAG,EAAAC,GACA,KAAAA,EAAAC,YACAD,EAAAE,YAAAF,EAAAC,YASA,SAAAE,EAAAC,EAAAC,GACA,IAAAC,EAAAb,EAAA,yBAAAc,EAAAd,EAAA,oBAAAW,GAAAI,EAAAf,EAAA,kBAAAgB,EAAAhB,EAAA,oBAQA,IAPA,IAAAtG,UAAAC,UAAAC,QAAA,YACAkH,EAAAG,KAAA,UAGAH,EAAAG,KAAA,OACAH,EAAAI,QAAA,aAEAhE,IAAA0D,EACA,QAAA9I,KAAA8I,EACAE,EAAAK,aAAArJ,EAAA8I,EAAA9I,IAIA,OAHA+I,EAAAO,YAAAN,GACAD,EAAAO,YAAAL,GACAF,EAAAO,YAAAJ,GACAH,EAUA,IAAAQ,EAAA,aACAC,EAAA,SAAAC,EAAA3D,EAAA9B,GAAgE,OAAAA,EAAAgC,OAAAF,EAAA,wBAAA2D,IAChEC,EAAA,CACAC,EAAAJ,EACAK,EAAA,SAAAC,EAAAC,EAAA9F,GACA6F,EAAAE,SAAA/F,EAAAgC,OAAAD,SAAAjE,QAAAgI,KAEAE,EAAA,SAAAH,EAAAI,GACAJ,EAAAxG,SAAA6G,WAAAD,KAEAE,EAAA,SAAAN,EAAAI,GACAJ,EAAAxG,SAAA6G,WAAAD,KAEAG,EAAA,SAAAP,EAAAQ,GACAR,EAAAvG,QAAA4G,WAAAG,KAEAC,EAAA,SAAAT,EAAApD,EAAAzC,GACA6F,EAAAxG,SAAAwG,EAAAU,WAAA,GACA,GAAAzD,EAAA,IAAA0D,OAAAxG,EAAAyC,KAAA,QAAAgE,KAAAhE,MAEAiE,EAAA,SAAAb,EAAAc,EAAA3G,GACA6F,EAAAE,SAAA/F,EAAAgC,OAAAF,UAAAhE,QAAA6I,KAEAC,EAAA,SAAAf,EAAAgB,GACAhB,EAAAiB,WAAAZ,WAAAW,KAEAE,EAAA,SAAAC,EAAAC,GAAsC,WAAA9H,KAAA,IAAA+G,WAAAe,KACtCC,EAAA,SAAArB,EAAAsB,EAAAnH,GACA,IAAAoH,EAAAC,SAAAF,GACAjI,EAAA,IAAAC,KAAA0G,EAAAnG,cAAA,OAAA0H,EAAA,YAEA,OADAlI,EAAAI,QAAAJ,EAAAK,UAAAL,EAAAM,SAAAQ,EAAAkC,gBACAhD,GAEAoI,EAAA,SAAAzB,EAAA0B,GACA1B,EAAA2B,YAAAtB,WAAAqB,KAEAE,EAAA,SAAAT,EAAAU,GAAkC,WAAAvI,KAAAuI,IAClC3M,EAAA,SAAA8K,EAAAQ,GACAR,EAAAvG,QAAA4G,WAAAG,KAEAsB,EAAA,SAAA9B,EAAAI,GACAJ,EAAAxG,SAAA6G,WAAAD,KAEAxL,EAAA,SAAAoL,EAAA+B,GACA/B,EAAAgC,WAAA3B,WAAA0B,KAEAE,EAAA,SAAAjC,EAAAQ,GACAR,EAAAvG,QAAA4G,WAAAG,KAEA3L,EAAA6K,EACA1K,EAAA,SAAAgL,EAAAkC,GACAlC,EAAAE,SAAAG,WAAA6B,GAAA,IAEA7L,EAAA,SAAA2J,EAAAkC,GACAlC,EAAAE,SAAAG,WAAA6B,GAAA,IAEAvL,EAAA,SAAAqJ,EAAAgB,GACAhB,EAAAiB,WAAAZ,WAAAW,KAEAmB,EAAA,SAAAhB,EAAAiB,GACA,WAAA9I,KAAA+G,WAAA+B,KAEAC,EAAA3C,EACA4C,EAAA,SAAAtC,EAAA0B,GACA1B,EAAA2B,YAAA,IAAAtB,WAAAqB,MAGAa,EAAA,CACAzC,EAAA,SACAC,EAAA,SACAI,EAAA,eACAG,EAAA,eACAC,EAAA,mBACAE,EAAA,GACAI,EAAA,SACAE,EAAA,eACAG,EAAA,OACAG,EAAA,eACAI,EAAA,WACAG,EAAA,OACA1M,EAAA,eACA4M,EAAA,eACAlN,EAAA,eACAqN,EAAA,eACApN,EAAA,SACAG,EAAA,eACAqB,EAAA,eACAM,EAAA,eACAwL,EAAA,OACAE,EAAA,eACAC,EAAA,YAEAE,EAAA,CAEAZ,EAAA,SAAAvI,GAA4B,OAAAA,EAAAoJ,eAE5B3C,EAAA,SAAAzG,EAAAc,EAAAuI,GACA,OAAAvI,EAAA6B,SAAAC,UAAAuG,EAAAH,EAAAhJ,EAAAc,EAAAuI,KAGA3C,EAAA,SAAA1G,EAAAc,EAAAuI,GACA,OAAA/C,EAAA6C,EAAAnM,EAAAgD,EAAAc,EAAAuI,GAAA,KAAAvI,IAGAgG,EAAA,SAAA9G,EAAAc,EAAAuI,GACA,OAAA5F,EAAA0F,EAAAV,EAAAzI,EAAAc,EAAAuI,KAGApC,EAAA,SAAAjH,GAA4B,OAAAyD,EAAAzD,EAAAqH,aAE5BH,EAAA,SAAAlH,EAAAc,GACA,YAAAoB,IAAApB,EAAAmC,QACAjD,EAAAK,UAAAS,EAAAmC,QAAAjD,EAAAK,WACAL,EAAAK,WAGA+G,EAAA,SAAApH,EAAAc,GAAoC,OAAAA,EAAAyC,KAAAK,EAAA5D,EAAAqH,WAAA,MAEpCG,EAAA,SAAAxH,EAAAc,GACA,OAAAwF,EAAAtG,EAAAsJ,YAAA,EAAAxI,IAGA4G,EAAA,SAAA1H,GAA4B,OAAAyD,EAAAzD,EAAAuJ,eAE5B1B,EAAA,SAAA7H,GAA4B,OAAAA,EAAAE,UAAA,KAC5B8H,EAAA,SAAAhI,EAAA8H,EAAAuB,GACA,OAAAA,EAAAvJ,QAAAE,IAGAoI,EAAA,SAAApI,GAA4B,OAAAA,EAAAQ,eAE5B3E,EAAA,SAAAmE,GAA4B,OAAAyD,EAAAzD,EAAAK,YAE5BoI,EAAA,SAAAzI,GAA4B,OAAAA,EAAAqH,WAAA,GAAArH,EAAAqH,WAAA,OAE5B9L,EAAA,SAAAyE,GAA4B,OAAAyD,EAAAzD,EAAAwJ,eAE5BZ,EAAA,SAAA5I,GAA4B,OAAAA,EAAAK,WAE5B7E,EAAA,SAAAwE,EAAAc,GACA,OAAAA,EAAA6B,SAAAE,SAAA7C,EAAAM,WAGA3E,EAAA,SAAAqE,GAA4B,OAAAyD,EAAAzD,EAAAsJ,WAAA,IAE5BtM,EAAA,SAAAgD,GAA4B,OAAAA,EAAAsJ,WAAA,GAE5BhM,EAAA,SAAA0C,GAA4B,OAAAA,EAAAuJ,cAE5BT,EAAA,SAAA9I,GAA4B,OAAAA,EAAAE,WAE5B8I,EAAA,SAAAhJ,GAA4B,OAAAA,EAAAM,UAE5B2I,EAAA,SAAAjJ,GAA4B,OAAAyJ,OAAAzJ,EAAAQ,eAAAkJ,UAAA,KAG5BC,EAAA,SAAAC,GACA,IAAAC,EAAAD,EAAAE,cAAA,IAAAD,EAAA5L,EAAA4L,EAAAE,EAAAH,EAAAI,YAAA,IAAAD,EAAArH,EAAAqH,EACA,gBAAApD,EAAAsD,EAAAC,GACA,IAAApJ,EAAAoJ,GAAAF,EACA,YAAA9H,IAAA4H,EAAAK,WACAL,EAAAK,WAAAxD,EAAAsD,EAAAnJ,GAEAmJ,EACAG,MAAA,IACAC,IAAA,SAAAzO,EAAAL,EAAA+O,GACA,OAAAnB,EAAAvN,IAAA,OAAA0O,EAAA/O,EAAA,GACA4N,EAAAvN,GAAA+K,EAAA7F,EAAAgJ,GACA,OAAAlO,EACAA,EACA,KAEA2O,KAAA,MAGAC,EAAA,SAAAZ,GACA,IAAAC,EAAAD,EAAAE,cAAA,IAAAD,EAAA5L,EAAA4L,EAAAE,EAAAH,EAAAI,YAAA,IAAAD,EAAArH,EAAAqH,EACA,gBAAA/J,EAAAyK,EAAAC,EAAAC,GACA,OAAA3K,KAAA,CAEA,IACA4K,EADA9J,EAAA6J,GAAAX,EAEAa,EAAA7K,EACA,GAAAA,aAAAC,KACA2K,EAAA,IAAA3K,KAAAD,EAAAE,gBACA,oBAAAF,QACAkC,IAAAlC,EAAA8K,QAGAF,EAAA,IAAA3K,KAAAD,QACA,oBAAAA,EAAA,CAEA,IAAA+K,EAAAN,IAAAX,GAAA7L,GAAAgB,WACA+L,EAAAvB,OAAAzJ,GAAAiL,OACA,aAAAD,EACAJ,EAAA,IAAA3K,KACAyK,GAAA,OAEA,QAAAnD,KAAAyD,IACA,OAAAzD,KAAAyD,GAEAJ,EAAA,IAAA3K,KAAAD,QACA,GAAA8J,KAAAoB,UACAN,EAAAd,EAAAoB,UAAAlL,EAAA+K,OACA,CACAH,EACAd,KAAA7I,WAEA,IAAAhB,MAAA,IAAAA,MAAAE,SAAA,UADA,IAAAF,MAAA,IAAAA,MAAAO,cAAA,aAGA,IADA,IAAA2K,OAAA,EAAAC,EAAA,GACA7P,EAAA,EAAA8P,EAAA,EAAAC,EAAA,GAAkE/P,EAAAwP,EAAAlN,OAAmBtC,IAAA,CACrF,IAAAgQ,EAAAR,EAAAxP,GACAiQ,EAAA,OAAAD,EACAE,EAAA,OAAAV,EAAAxP,EAAA,IAAAiQ,EACA,GAAAtC,EAAAqC,KAAAE,EAAA,CACAH,GAAApC,EAAAqC,GACA,IAAAG,EAAA,IAAApE,OAAAgE,GAAAK,KAAA3L,GACA0L,IAAAP,GAAA,IACAC,EAAA,MAAAG,EAAA,mBACAK,GAAApF,EAAA+E,GACAM,IAAAH,IAAAL,UAIAG,IACAF,GAAA,KACAF,EAAAU,QAAA,SAAAlC,GACA,IAAAgC,EAAAhC,EAAAgC,GAAAC,EAAAjC,EAAAiC,IACA,OAAAjB,EAAAgB,EAAAhB,EAAAiB,EAAA/K,IAAA8J,IAGAA,EAAAO,EAAAP,OAAA1I,GAIA,GAAA0I,aAAA3K,OAAA8L,MAAAnB,EAAA1K,WAMA,OAFA,IAAAwK,GACAE,EAAAzK,SAAA,SACAyK,EALAd,EAAApK,aAAA,IAAAsM,MAAA,0BAAAnB,OAWA,SAAAoB,EAAAC,EAAAC,EAAAzB,GAEA,YADA,IAAAA,IAAkCA,GAAA,IAClC,IAAAA,EACA,IAAAzK,KAAAiM,EAAAhM,WAAAC,SAAA,SACA,IAAAF,KAAAkM,EAAAjM,WAAAC,SAAA,SAEA+L,EAAAhM,UAAAiM,EAAAjM,UAEA,IAAAkM,EAAA,SAAAC,EAAAC,EAAAC,GACA,OAAAF,EAAA5L,KAAA+L,IAAAF,EAAAC,IAAAF,EAAA5L,KAAAgM,IAAAH,EAAAC,IAEAG,EAAA,CACAC,IAAA,OAGA,mBAAA1Q,OAAA0B,SACA1B,OAAA0B,OAAA,SAAAiP,GAEA,IADA,IAAAxI,EAAA,GACAyI,EAAA,EAA4BA,EAAAjP,UAAAC,OAAuBgP,IACnDzI,EAAAyI,EAAA,GAAAjP,UAAAiP,GAEA,IAAAD,EACA,MAAAE,UAAA,8CAOA,IALA,IAAAC,EAAA,SAAAC,GACAA,GACA/Q,OAAAgR,KAAAD,GAAAlB,QAAA,SAAAhP,GAAgE,OAAA8P,EAAA9P,GAAAkQ,EAAAlQ,MAGhE8M,EAAA,EAAAsD,EAAA9I,EAA2CwF,EAAAsD,EAAArP,OAAoB+L,IAAA,CAC/D,IAAAoD,EAAAE,EAAAtD,GACAmD,EAAAC,GAEA,OAAAJ,IAIA,IAAAO,EAAA,IACA,SAAAC,EAAAC,EAAAC,GACA,IAAAC,EAAA,CACAzD,OAAApM,EAAA,GAA+BO,EAAAuP,EAAAC,eAC/BzD,KAAAtH,GAqEA,SAAAgL,EAAA9B,GACA,OAAAA,EAAA7O,KAAAwQ,GAEA,SAAAI,IACA,IAAA7D,EAAAyD,EAAAzD,QACA,IAAAA,EAAAtH,aAAA,IAAAsH,EAAAzH,aAEA,IAAAyH,EAAA7I,YACAxC,OAAAmP,sBAAA,WAKA,QAJA1L,IAAAqL,EAAAM,oBACAN,EAAAM,kBAAAC,MAAAC,WAAA,SACAR,EAAAM,kBAAAC,MAAAE,QAAA,cAEA9L,IAAAqL,EAAAU,cAAA,CACA,IAAAC,GAAAX,EAAAY,KAAAC,YAAA,GAAAtE,EAAAzH,WACAkL,EAAAU,cAAAH,MAAAO,MAAAH,EAAA,KACAX,EAAAM,kBAAAC,MAAAO,MACAH,QACAhM,IAAAqL,EAAAe,YACAf,EAAAe,YAAAF,YACA,GACA,KACAb,EAAAM,kBAAAC,MAAAS,eAAA,cACAhB,EAAAM,kBAAAC,MAAAS,eAAA,cAQA,SAAAC,EAAArJ,GACA,IAAAoI,EAAAkB,cAAA5Q,QACA6Q,UAEAxM,IAAAiD,GAAA,SAAAA,EAAAc,MAmxDA,SAAAd,GACAA,EAAAwJ,iBACA,IAAAC,EAAA,YAAAzJ,EAAAc,KAAA4I,EAAA1J,EAAAyH,YACA1K,IAAAqL,EAAAhK,MAAA4B,EAAAyH,SAAAW,EAAAhK,OACAgK,EAAAhK,KAAA8B,YACAkI,EAAAvD,KAAAzG,KAAAK,EAAA2J,EAAAhK,KAAA8B,cAAAkI,EAAAvD,KAAAzG,KAAA,MAEA,IAAAiJ,EAAAxF,WAAA6H,EAAAC,aAAA,QAAArC,EAAAzF,WAAA6H,EAAAC,aAAA,QAAAC,EAAA/H,WAAA6H,EAAAC,aAAA,SAAAE,EAAA7G,SAAA0G,EAAArS,MAAA,IAAAyS,EAAA9J,EAAA8J,QACAL,EAAA,KAAAzJ,EAAA+J,MAAA,QACAC,EAAAH,EAAAD,EAAAE,EACA,YAAAJ,EAAArS,OAAA,IAAAqS,EAAArS,MAAAqB,OAAA,CACA,IAAAuR,EAAAP,IAAAtB,EAAA8B,YAAAC,EAAAT,IAAAtB,EAAAgC,cACAJ,EAAA3C,GACA2C,EACA1C,EACA0C,EACAvL,GAAAwL,IACAxL,EAAAwL,IAAAxL,GAAA2J,EAAAhK,OACA+L,GACAE,OAAAtN,GAAA,EAAAqL,EAAA8B,cAEAF,EAAA1C,IACA0C,EACAN,IAAAtB,EAAA8B,YAAAF,EAAA1C,EAAA7I,GAAA2J,EAAAhK,MAAAiJ,EACA8C,GACAE,OAAAtN,EAAA,EAAAqL,EAAA8B,cAEA9B,EAAAhK,MACA6L,IACA,IAAAL,EACAI,EAAAH,IAAA,GACAvO,KAAAgP,IAAAN,EAAAH,GAAAD,KACAxB,EAAAhK,KAAA8B,YACAkI,EAAAvD,KAAAzG,KAAAK,EAAA2J,EAAAhK,KAAA8B,cAAAkI,EAAAvD,KAAAzG,KAAA,MAEAsL,EAAArS,MAAAiH,EAAA0L,IArzDAO,CAAAvK,GAEA,IAAAwK,EAAApC,EAAAqC,OAAApT,MACAqT,IACAC,KACAvC,EAAAqC,OAAApT,QAAAmT,GACApC,EAAAwC,mBAkBA,SAAAF,IACA,QAAA3N,IAAAqL,EAAA8B,kBAAAnN,IAAAqL,EAAAgC,cAAA,CAEA,IAlBAxI,EAAAxD,EAkBAyM,GAAA7H,SAAAoF,EAAA8B,YAAA7S,MAAAmH,OAAA,cAAA+E,GAAAP,SAAAoF,EAAAgC,cAAA/S,MAAA,WAAAmL,OAAAzF,IAAAqL,EAAA0C,eACA9H,SAAAoF,EAAA0C,cAAAzT,MAAA,WACA,OACA0F,IAAAqL,EAAAhK,OArBAwD,EAsBAiJ,EAtBAzM,EAsBAgK,EAAAhK,KAAA8B,YAAA2K,EArBAjJ,EAAA,MAAAnD,EAAAL,IAAAgK,EAAAvD,KAAAzG,KAAA,KAuBA,IAAA2M,OAAAhO,IAAAqL,EAAAzD,OAAAqG,SACA5C,EAAAzD,OAAAsG,SACA7C,EAAA8C,gBACA9C,EAAA+C,uBAEA,IADArE,EAAAsB,EAAA+C,sBAAA/C,EAAAzD,OAAAsG,SAAA,GAEAG,OAAArO,IAAAqL,EAAAzD,OAAA0G,SACAjD,EAAAzD,OAAA2G,SACAlD,EAAAmD,gBACAnD,EAAA+C,uBAEA,IADArE,EAAAsB,EAAA+C,sBAAA/C,EAAAzD,OAAA2G,SAAA,GAEA,GAAAF,EAAA,CACA,IAAAC,OAAAtO,IAAAqL,EAAAzD,OAAA0G,QACAjD,EAAAzD,OAAA0G,QACAjD,EAAAzD,OAAA2G,SACAT,EAAAvP,KAAA+L,IAAAwD,EAAAQ,EAAAnJ,eACAmJ,EAAAnJ,aACAqB,EAAAjI,KAAA+L,IAAA9D,EAAA8H,EAAAhH,eACAd,IAAA8H,EAAAhH,eACA7B,EAAAlH,KAAA+L,IAAA7E,EAAA6I,EAAAjH,eAEA,GAAA2G,EAAA,CACA,IAAAC,OAAAjO,IAAAqL,EAAAzD,OAAAqG,QACA5C,EAAAzD,OAAAqG,QACA5C,EAAAzD,OAAAsG,SACAJ,EAAAvP,KAAAgM,IAAAuD,EAAAG,EAAA9I,eACA8I,EAAA9I,aACAqB,EAAAjI,KAAAgM,IAAA/D,EAAAyH,EAAA3G,eACAd,IAAAyH,EAAA3G,eACA7B,EAAAlH,KAAAgM,IAAA9E,EAAAwI,EAAA5G,eAEApJ,EAAA6P,EAAAtH,EAAAf,IAKA,SAAAgJ,EAAAhK,GACA,IAAA3G,EAAA2G,GAAA4G,EAAA+C,sBACAtQ,GACAG,EAAAH,EAAAqH,WAAArH,EAAAwJ,aAAAxJ,EAAAuJ,cAEA,SAAAqH,IACA,IAAAZ,EAAAzC,EAAAzD,OAAA5K,YACAwJ,EAAA6E,EAAAzD,OAAA3K,cACAwI,EAAA4F,EAAAzD,OAAA1K,eACA,QAAA8C,IAAAqL,EAAAzD,OAAAsG,QAAA,CACA,IAAAS,EAAAtD,EAAAzD,OAAAsG,QAAA/I,WACAyJ,EAAAvD,EAAAzD,OAAAsG,QAAA5G,cACAwG,EAAAvP,KAAAgM,IAAAuD,EAAAa,MACAA,IACAnI,EAAAjI,KAAAgM,IAAAqE,EAAApI,IACAsH,IAAAa,GAAAnI,IAAAoI,IACAnJ,EAAA4F,EAAAzD,OAAAsG,QAAA7G,cAEA,QAAArH,IAAAqL,EAAAzD,OAAA2G,QAAA,CACA,IAAAM,EAAAxD,EAAAzD,OAAA2G,QAAApJ,WACA2J,EAAAzD,EAAAzD,OAAA2G,QAAAjH,cACAwG,EAAAvP,KAAA+L,IAAAwD,EAAAe,MACAA,IACArI,EAAAjI,KAAA+L,IAAAwE,EAAAtI,IACAsH,IAAAe,GAAArI,IAAAsI,IACArJ,EAAA4F,EAAAzD,OAAA2G,QAAAlH,cAEApJ,EAAA6P,EAAAtH,EAAAf,GAWA,SAAAxH,EAAA6P,EAAAtH,EAAAf,QACAzF,IAAAqL,EAAA+C,uBACA/C,EAAA+C,sBAAAnQ,SAAA6P,EAAA,GAAAtH,EAAAf,GAAA,KAEA4F,EAAA8B,aAAA9B,EAAAgC,gBAAAhC,EAAA0D,WAEA1D,EAAA8B,YAAA7S,MAAAiH,EAAA8J,EAAAzD,OAAAvH,UAEAyN,GADA,GAAAA,GAAA,MAAApM,EAAAoM,EAAA,QAEAzC,EAAAgC,cAAA/S,MAAAiH,EAAAiF,QACAxG,IAAAqL,EAAAhK,OACAgK,EAAAhK,KAAA8B,YAAAkI,EAAAvD,KAAAzG,KAAAK,EAAAoM,GAAA,WACA9N,IAAAqL,EAAA0C,gBACA1C,EAAA0C,cAAAzT,MAAAiH,EAAAkE,KAMA,SAAAuJ,EAAAC,GACA,IAAA9I,EAAAF,SAAAgJ,EAAAvE,OAAApQ,QAAA2U,EAAAlC,OAAA,IACA5G,EAAA,OACA,UAAA8I,EAAArU,MAAA,QAAAyK,KAAAc,EAAA+I,cACAC,GAAAhJ,GASA,SAAAtL,EAAAsQ,EAAA8D,EAAAG,EAAAjI,GACA,OAAA8H,aAAA1M,MACA0M,EAAArF,QAAA,SAAAyF,GAAoD,OAAAxU,EAAAsQ,EAAAkE,EAAAD,EAAAjI,KACpDgE,aAAA5I,MACA4I,EAAAvB,QAAA,SAAA0F,GAAsD,OAAAzU,EAAAyU,EAAAL,EAAAG,EAAAjI,MACtDgE,EAAAoE,iBAAAN,EAAAG,EAAAjI,QACAkE,EAAAmE,UAAAC,KAAA,CACAtE,UACA8D,QACAG,UACAjI,aAUA,SAAAuI,EAAAN,GACA,gBAAAO,GACA,IAAAA,EAAA3C,OAAAoC,EAAAO,IAGA,SAAAC,IACAC,GAAA,YAKA,SAAAC,IAQA,GAPAzE,EAAAzD,OAAArH,MACA,kCAAAqJ,QAAA,SAAA+F,GACApN,MAAAtH,UAAA2O,QAAApQ,KAAA6R,EAAAF,QAAA4E,iBAAA,SAAAJ,EAAA,cAAAL,GACA,OAAAzU,EAAAyU,EAAA,QAAAjE,EAAAsE,QAIAtE,EAAA0D,UAy8CA,WACA,IAAAiB,EAAA3E,EAAAzD,OAAArK,WACA8N,EAAAzD,OAAA7I,WACA,OACA,iBACA,OACAsM,EAAA4E,YAAAnN,EAAA,QAAAuI,EAAAsB,MAAAjK,UAAA,qBACA2I,EAAA4E,YAAApD,KAAAxB,EAAAsB,MAAAC,aAAA,eACAvB,EAAA4E,YAAAC,SAAA,EACA7E,EAAA4E,YAAAlM,KAAAiM,EACA3E,EAAA4E,YAAAE,SAAA9E,EAAAsB,MAAAwD,SACA9E,EAAA4E,YAAAG,SAAA/E,EAAAsB,MAAAyD,SACA/E,EAAA4E,YAAAI,YAAAhF,EAAAsB,MAAA0D,YACAhF,EAAAiF,gBACA,mBAAAN,EACA,gBACA,SAAAA,EACA,QACA,QACA3E,EAAAkB,cAAA5Q,OAAA,IACA0P,EAAA4E,YAAAM,aAAAlF,EAAA4E,YAAA3V,MAAA+Q,EAAApD,WAAAoD,EAAAkB,cAAA,GAAAlB,EAAAiF,kBAEAjF,EAAAzD,OAAAsG,UACA7C,EAAA4E,YAAA3F,IAAAe,EAAApD,WAAAoD,EAAAzD,OAAAsG,QAAA,UACA7C,EAAAzD,OAAA2G,UACAlD,EAAA4E,YAAA1F,IAAAc,EAAApD,WAAAoD,EAAAzD,OAAA2G,QAAA,UACAlD,EAAAsB,MAAA5I,KAAA,cACA/D,IAAAqL,EAAAjP,WACAiP,EAAAjP,SAAA2H,KAAA,UACA,IACAsH,EAAAsB,MAAA6D,YACAnF,EAAAsB,MAAA6D,WAAAC,aAAApF,EAAA4E,YAAA5E,EAAAsB,MAAA+D,aAEA,MAAAhJ,IACA7M,EAAAwQ,EAAA4E,YAAA,kBAAAhN,GACAoI,EAAAnN,QAAA+E,EAAAyH,OAAApQ,OAAA,EAAA+Q,EAAAiF,iBACAT,GAAA,YACAA,GAAA,aA7+CAc,OADA,CAIA,IAAAC,EAAAhP,EAAAiP,GAAA,IACAxF,EAAAwC,iBAAAjM,EAAAgO,EAAA3E,GACAI,EAAAU,gBAAA,oBAAA1G,KAAA7I,UAAAC,YACA5B,EAAAwQ,EAAAU,cAAA,qBAAA9I,GACA,UAAAoI,EAAAzD,OAAApN,MACAsW,GAAA7N,EAAAyH,UAEA7P,EAAA0B,OAAA2G,SAAA6N,KAAA,UAAA1R,IACAgM,EAAAzD,OAAAjJ,QAAA0M,EAAAzD,OAAAxH,QACAvF,EAAA0B,OAAA,SAAAqU,QACA5Q,IAAAzD,OAAAyU,aACAnW,EAAA0B,OAAA2G,SAAA,aAAA+N,GAEApW,EAAA0B,OAAA2G,SAAA,YAAAwM,EAAAuB,IACApW,EAAA0B,OAAA2G,SAAA,QAAA+N,EAAA,CAA2DC,SAAA,KAC3D,IAAA7F,EAAAzD,OAAAhL,aACA/B,EAAAwQ,EAAAqC,OAAA,QAAArC,EAAA8F,MACAtW,EAAAwQ,EAAAqC,OAAA,YAAAgC,EAAArE,EAAA8F,aAEAnR,IAAAqL,EAAAU,gBACAlR,EAAAwQ,EAAA+F,SAAA,YAAA1B,EAAA2B,KACAxW,EAAAwQ,EAAA+F,SAAA,sBAAApC,GACAnU,EAAAwQ,EAAAU,cAAA,YAAA2D,EAAA4B,WAEAtR,IAAAqL,EAAAkG,oBACAvR,IAAAqL,EAAAgC,oBACArN,IAAAqL,EAAA8B,cAIAtS,EAAAwQ,EAAAkG,cAAA,cAAAjF,GACAzR,EAAAwQ,EAAAkG,cAAA,OAAAjF,EAAA,CAA8D4E,SAAA,IAC9DrW,EAAAwQ,EAAAkG,cAAA,YAAA7B,EAAA8B,IACA3W,EAAA,CAAAwQ,EAAA8B,YAAA9B,EAAAgC,eAAA,kBANA,SAAApK,GACA,OAAAA,EAAAyH,OAAA+G,gBAMAzR,IAAAqL,EAAA0C,eACAlT,EAAAwQ,EAAA0C,cAAA,mBAAmE,OAAA1C,EAAA0C,eAAA1C,EAAA0C,cAAA0D,gBACnEzR,IAAAqL,EAAAhK,MACAxG,EAAAwQ,EAAAhK,KAAA,YAAAqO,EAAA,SAAAzM,GACAqJ,EAAArJ,GACA2M,SAUA,SAAA8B,EAAAC,EAAA/B,GACA,IAAAgC,OAAA5R,IAAA2R,EACAtG,EAAArC,UAAA2I,GACAtG,EAAA+C,wBACA/C,EAAAzD,OAAAsG,SAAA7C,EAAAzD,OAAAsG,QAAA7C,EAAArM,IACAqM,EAAAzD,OAAAsG,QACA7C,EAAAzD,OAAA2G,SAAAlD,EAAAzD,OAAA2G,QAAAlD,EAAArM,IACAqM,EAAAzD,OAAA2G,QACAlD,EAAArM,KACA6S,EAAAxG,EAAAyG,YACAC,EAAA1G,EAAA2G,aACA,SACAhS,IAAA4R,IACAvG,EAAAyG,YAAAF,EAAAtT,cACA+M,EAAA2G,aAAAJ,EAAAxK,YAGA,MAAAnE,GAEAA,EAAAgP,QAAA,0BAAAL,EACAvG,EAAAzD,OAAApK,aAAAyF,GAEA2M,GAAAvE,EAAAyG,cAAAD,IACAhC,GAAA,gBACAqC,MAEAtC,GACAvE,EAAAyG,cAAAD,GAAAxG,EAAA2G,eAAAD,GACAlC,GAAA,iBAEAxE,EAAA8G,SAMA,SAAAX,EAAAvO,IACAA,EAAAyH,OAAAhI,UAAAhG,QAAA,UACA4Q,EAAArK,IAAAyH,OAAA/H,UAAAyP,SAAA,iBAWA,SAAA9E,EAAArK,EAAA8J,EAAAsF,GACA,IAAA3H,EAAAzH,KAAAyH,OACAiC,EAAA0F,GACA3H,KAAA8F,YAAA9F,EAAA8F,WAAAlN,WACA2L,EAAAqD,GAAA,aACArD,EAAAlC,QACAJ,KAAA4F,cAAAtD,GAEA,SAAAuD,IACA,IAAAC,EAAAlW,OAAA2G,SAAAwP,yBAGA,GAFArH,EAAAM,kBAAA7I,EAAA,4BACAuI,EAAAM,kBAAAuE,UAAA,GACA7E,EAAAzD,OAAA7I,WAAA,CAGA,GAFA0T,EAAAvO,aA4RAmH,EAAA+F,SAAAtO,EAAA,0BACAuI,EAAAsH,aAAA,GACAtH,EAAAuH,cAAA,GACAvH,EAAAwH,aAAA/P,EAAA,+BACAuI,EAAAwH,aAAAC,UAAAzH,EAAAzD,OAAA3H,UACAoL,EAAA0H,aAAAjQ,EAAA,+BACAuI,EAAA0H,aAAAD,UAAAzH,EAAAzD,OAAA9I,UACAkU,IACAjZ,OAAAC,eAAAqR,EAAA,uBACAnR,IAAA,WAAkC,OAAAmR,EAAA4H,sBAClCC,IAAA,SAAAvR,GACA0J,EAAA4H,uBAAAtR,IACAa,EAAA6I,EAAAwH,aAAA,qBAAAlR,GACA0J,EAAA4H,qBAAAtR,MAIA5H,OAAAC,eAAAqR,EAAA,uBACAnR,IAAA,WAAkC,OAAAmR,EAAA8H,sBAClCD,IAAA,SAAAvR,GACA0J,EAAA8H,uBAAAxR,IACAa,EAAA6I,EAAA0H,aAAA,qBAAApR,GACA0J,EAAA8H,qBAAAxR,MAIA0J,EAAA+H,mBAAA/H,EAAAsH,aAAA,GACAU,KACAhI,EAAA+F,WAvTA/F,EAAAiI,eAAAxQ,EAAA,kCACAuI,EAAAzD,OAAAtH,YAAA,CACA,IAAAoH,EAqYA,WACA2D,EAAAM,kBAAAhJ,UAAAC,IAAA,YACA,IAAAwJ,EAAAtJ,EAAA,+BACAsJ,EAAAlI,YAAApB,EAAA,2BAAAuI,EAAAvD,KAAA5G,mBACA,IAAAZ,EAAAwC,EAAA,yBAEA,OADAsJ,EAAAlI,YAAA5D,GACA,CACA8L,cACA9L,eA7YAiT,GAAAnH,EAAA1E,EAAA0E,YAAA9L,EAAAoH,EAAApH,YACA+K,EAAAiI,eAAApP,YAAAkI,GACAf,EAAA/K,cACA+K,EAAAe,cAEAf,EAAAmI,WAAA1Q,EAAA,8BACAuI,EAAAmI,WAAAtP,YAAAuP,KACApI,EAAAU,gBACAV,EAAAU,cAAAjJ,EAAA,wBACAuI,EAAAU,cAAAmE,UAAA,GAEAwD,IACArI,EAAAmI,WAAAtP,YAAAmH,EAAAU,eACAV,EAAAiI,eAAApP,YAAAmH,EAAAmI,YACAf,EAAAvO,YAAAmH,EAAAiI,gBAEAjI,EAAAzD,OAAArK,YACAkV,EAAAvO,YAsSA,WACAmH,EAAAM,kBAAAhJ,UAAAC,IAAA,WACAyI,EAAAzD,OAAA7I,YACAsM,EAAAM,kBAAAhJ,UAAAC,IAAA,cACAyI,EAAAkG,cAAAzO,EAAA,wBACAuI,EAAAkG,cAAArB,UAAA,EACA,IAAAyD,EAAA7Q,EAAA,uCACA8Q,EAAApQ,EAAA,kBACA6H,EAAA8B,YAAAyG,EAAAC,qBAAA,YACA,IAAAC,EAAAtQ,EAAA,oBAsBA,GArBA6H,EAAAgC,cAAAyG,EAAAD,qBAAA,YACAxI,EAAA8B,YAAA+C,SAAA7E,EAAAgC,cAAA6C,UAAA,EACA7E,EAAA8B,YAAA7S,MAAAiH,EAAA8J,EAAA+C,sBACA/C,EAAA+C,sBAAAjJ,WACAkG,EAAAzD,OAAAvH,UACAgL,EAAAzD,OAAA5K,YAnmBA,SAAA6H,GACA,OAAAA,EAAA,IACA,OACA,QACA,UACA,QACA,OAAAA,EAAA,IA8lBAkP,CAAA1I,EAAAzD,OAAA5K,cACAqO,EAAAgC,cAAA/S,MAAAiH,EAAA8J,EAAA+C,sBACA/C,EAAA+C,sBAAA9G,aACA+D,EAAAzD,OAAA3K,eACAoO,EAAA8B,YAAAlJ,aAAA,OAAAoH,EAAAzD,OAAAnJ,cAAAyQ,YACA7D,EAAAgC,cAAApJ,aAAA,OAAAoH,EAAAzD,OAAA/I,gBAAAqQ,YACA7D,EAAA8B,YAAAlJ,aAAA,MAAAoH,EAAAzD,OAAAvH,UAAA,SACAgL,EAAA8B,YAAAlJ,aAAA,MAAAoH,EAAAzD,OAAAvH,UAAA,WACAgL,EAAAgC,cAAApJ,aAAA,WACAoH,EAAAgC,cAAApJ,aAAA,YACAoH,EAAAkG,cAAArN,YAAA0P,GACAvI,EAAAkG,cAAArN,YAAAyP,GACAtI,EAAAkG,cAAArN,YAAA4P,GACAzI,EAAAzD,OAAAvH,WACAgL,EAAAkG,cAAA5O,UAAAC,IAAA,YACAyI,EAAAzD,OAAAtK,cAAA,CACA+N,EAAAkG,cAAA5O,UAAAC,IAAA,cACA,IAAAoR,EAAAxQ,EAAA,oBACA6H,EAAA0C,cAAAiG,EAAAH,qBAAA,YACAxI,EAAA0C,cAAAzT,MAAAiH,EAAA8J,EAAA+C,sBACA/C,EAAA+C,sBAAA/G,aACAgE,EAAAzD,OAAA1K,gBACAmO,EAAA0C,cAAA9J,aAAA,OAAAoH,EAAAgC,cAAAT,aAAA,SACAvB,EAAA0C,cAAA9J,aAAA,WACAoH,EAAA0C,cAAA9J,aAAA,YACAoH,EAAAkG,cAAArN,YAAApB,EAAA,wCACAuI,EAAAkG,cAAArN,YAAA8P,GAWA,OATA3I,EAAAzD,OAAAvH,YAEAgL,EAAAhK,KAAAyB,EAAA,yBAAAuI,EAAAvD,KAAAzG,KAAAK,GAAA2J,EAAA+C,sBACA/C,EAAA8B,YAAA7S,MACA+Q,EAAAzD,OAAA5K,aAAA,MACAqO,EAAAhK,KAAA4S,MAAA5I,EAAAvD,KAAA1G,YACAiK,EAAAhK,KAAA6O,UAAA,EACA7E,EAAAkG,cAAArN,YAAAmH,EAAAhK,OAEAgK,EAAAkG,cA3VA2C,IAEA1R,EAAA6I,EAAAM,kBAAA,sBAAAN,EAAAzD,OAAApN,MACAgI,EAAA6I,EAAAM,kBAAA,eAAAN,EAAAzD,OAAAtL,SACAkG,EAAA6I,EAAAM,kBAAA,aAAAN,EAAAzD,OAAAzH,WAAA,GACAkL,EAAAM,kBAAAzH,YAAAuO,GACA,IAAA0B,OAAAnU,IAAAqL,EAAAzD,OAAAwM,eACApU,IAAAqL,EAAAzD,OAAAwM,SAAAC,SACA,IAAAhJ,EAAAzD,OAAAjJ,QAAA0M,EAAAzD,OAAAxH,UACAiL,EAAAM,kBAAAhJ,UAAAC,IAAAyI,EAAAzD,OAAAjJ,OAAA,mBACA0M,EAAAzD,OAAAjJ,UACAwV,GAAA9I,EAAAF,QAAAqF,WACAnF,EAAAF,QAAAqF,WAAAC,aAAApF,EAAAM,kBAAAN,EAAAqC,OAAAgD,kBACA1Q,IAAAqL,EAAAzD,OAAAwM,UACA/I,EAAAzD,OAAAwM,SAAAlQ,YAAAmH,EAAAM,oBAEAN,EAAAzD,OAAAxH,QAAA,CACA,IAAAuD,EAAAb,EAAA,2BACAuI,EAAAF,QAAAqF,YACAnF,EAAAF,QAAAqF,WAAAC,aAAA9M,EAAA0H,EAAAF,SACAxH,EAAAO,YAAAmH,EAAAF,SACAE,EAAAjP,UACAuH,EAAAO,YAAAmH,EAAAjP,UACAuH,EAAAO,YAAAmH,EAAAM,mBAGAN,EAAAzD,OAAAxH,QAAAiL,EAAAzD,OAAAjJ,cACAqB,IAAAqL,EAAAzD,OAAAwM,SACA/I,EAAAzD,OAAAwM,SACA7X,OAAA2G,SAAA6N,MAAA7M,YAAAmH,EAAAM,mBAEA,SAAA2I,EAAA5R,EAAA5E,EAAAyW,EAAAlb,GACA,IAAAmb,EAAAC,GAAA3W,GAAA,GAAA4W,EAAA5R,EAAA,wBAAAJ,EAAA5E,EAAAK,UAAA+Q,YAuCA,OAtCAwF,EAAAjQ,QAAA3G,EACA4W,EAAAC,GAAAtb,EACAqb,EAAAzQ,aAAA,aAAAoH,EAAApD,WAAAnK,EAAAuN,EAAAzD,OAAAjL,kBACA,IAAA+F,EAAAhG,QAAA,WACA,IAAAqN,EAAAjM,EAAAuN,EAAArM,OACAqM,EAAAuJ,cAAAF,EACAA,EAAA/R,UAAAC,IAAA,SACA8R,EAAAzQ,aAAA,wBAEAuQ,GACAE,EAAAxE,UAAA,EACA2E,GAAA/W,KACA4W,EAAA/R,UAAAC,IAAA,YACAyI,EAAAyJ,iBAAAJ,EACA,UAAArJ,EAAAzD,OAAApN,OACAgI,EAAAkS,EAAA,aAAArJ,EAAAkB,cAAA,IACA,IAAAxC,EAAAjM,EAAAuN,EAAAkB,cAAA,QACA/J,EAAAkS,EAAA,WAAArJ,EAAAkB,cAAA,IACA,IAAAxC,EAAAjM,EAAAuN,EAAAkB,cAAA,QACA,iBAAA7J,GACAgS,EAAA/R,UAAAC,IAAA,cAKA8R,EAAA/R,UAAAC,IAAA,sBAEA,UAAAyI,EAAAzD,OAAApN,MA80CA,SAAAsD,GACA,kBAAAuN,EAAAzD,OAAApN,MAAA6Q,EAAAkB,cAAA5Q,OAAA,IAEAoO,EAAAjM,EAAAuN,EAAAkB,cAAA,QACAxC,EAAAjM,EAAAuN,EAAAkB,cAAA,OAj1CAwI,CAAAjX,KAAA+W,GAAA/W,IACA4W,EAAA/R,UAAAC,IAAA,WAEAyI,EAAA/K,aACA,IAAA+K,EAAAzD,OAAAzH,YACA,iBAAAuC,GACA6R,EAAA,MACAlJ,EAAA/K,YAAA0U,mBAAA,2CAAA3J,EAAAzD,OAAAhK,QAAAE,GAAA,WAEA+R,GAAA,cAAA6E,GACAA,EAEA,SAAAO,EAAAC,GACAA,EAAAC,QACA,UAAA9J,EAAAzD,OAAApN,MACAsW,GAAAoE,GAEA,SAAAE,EAAArI,GAGA,IAFA,IAAAsI,EAAAtI,EAAA,IAAA1B,EAAAzD,OAAAzH,WAAA,EACAmV,EAAAvI,EAAA,EAAA1B,EAAAzD,OAAAzH,YAAA,EACA1G,EAAA4b,EAAoC5b,GAAA6b,EAAe7b,GAAAsT,EAInD,IAHA,IAAApG,EAAA0E,EAAAU,cAAAwJ,SAAA9b,GACA+b,EAAAzI,EAAA,IAAApG,EAAA4O,SAAA5Z,OAAA,EACA8Z,EAAA1I,EAAA,EAAApG,EAAA4O,SAAA5Z,QAAA,EACAtC,EAAAmc,EAAwCnc,GAAAoc,EAAepc,GAAA0T,EAAA,CACvD,IAAArT,EAAAiN,EAAA4O,SAAAlc,GACA,QAAAK,EAAAgJ,UAAAhG,QAAA,WAAA+X,GAAA/a,EAAA+K,SACA,OAAA/K,GA+BA,SAAAgc,EAAAC,EAAAC,GACA,IAAAC,EAAAC,GAAA5S,SAAA6S,eAAA7S,SAAA6N,MACAiF,OAAAhW,IAAA2V,EACAA,EACAE,EACA3S,SAAA6S,mBACA/V,IAAAqL,EAAAyJ,kBAAAgB,GAAAzK,EAAAyJ,kBACAzJ,EAAAyJ,sBACA9U,IAAAqL,EAAAuJ,eAAAkB,GAAAzK,EAAAuJ,eACAvJ,EAAAuJ,cACAQ,EAAAQ,EAAA,QACA,YAAA5V,IAAAgW,EACA3K,EAAAqC,OAAAyH,QACAU,OAvCA,SAAAF,EAAA5I,GAMA,IALA,IAAAkJ,GAAA,IAAAN,EAAAjT,UAAAhG,QAAA,SACAiZ,EAAAlR,QAAA2C,WACAiE,EAAA2G,aACAsD,EAAAvI,EAAA,EAAA1B,EAAAzD,OAAAzH,YAAA,EACA+V,EAAAnJ,EAAA,OACAtT,EAAAwc,EAAA5K,EAAA2G,aAAwDvY,GAAA6b,EAAe7b,GAAAyc,EAQvE,IAPA,IAAAvP,EAAA0E,EAAAU,cAAAwJ,SAAA9b,GACA+b,EAAAS,EAAA5K,EAAA2G,eAAAvY,EACAkc,EAAAhB,GAAA5H,EACAA,EAAA,EACApG,EAAA4O,SAAA5Z,OAAA,EACA,EACAwa,EAAAxP,EAAA4O,SAAA5Z,OACAtC,EAAAmc,EAAwCnc,GAAA,GAAAA,EAAA8c,GAAA9c,IAAA0T,EAAA,EAAAoJ,GAAA,GAAoE9c,GAAA6c,EAAA,CAC5G,IAAAxc,EAAAiN,EAAA4O,SAAAlc,GACA,QAAAK,EAAAgJ,UAAAhG,QAAA,WACA+X,GAAA/a,EAAA+K,UACAlG,KAAAgP,IAAAoI,EAAAhB,GAAAtb,IAAAkF,KAAAgP,IAAAR,GACA,OAAAkI,EAAAvb,GAGA2R,EAAA+K,YAAAF,GACAR,EAAAN,EAAAc,GAAA,GAkBAG,CAAAL,EAAAJ,GADAX,EAAAe,GAGA,SAAAM,EAAAnQ,EAAAQ,GAMA,IALA,IAAA4P,GAAA,IAAAxY,KAAAoI,EAAAQ,EAAA,GAAAvI,SAAAiN,EAAAvD,KAAAhH,eAAA,KACA0V,EAAAnL,EAAAoL,MAAAC,gBAAA/P,EAAA,UACA9F,EAAAwK,EAAAoL,MAAAC,eAAA/P,GAAAsF,EAAA1P,OAAA2G,SAAAwP,yBAAAiE,EAAAtL,EAAAzD,OAAAzH,WAAA,EAAAyW,EAAAD,EAAA,qCAAAE,EAAAF,EAAA,qCACApC,EAAAiC,EAAA,EAAAD,EAAAO,EAAA,EAEkBvC,GAAAiC,EAA4BjC,IAAAuC,IAC9C7K,EAAA/H,YAAAoQ,EAAAsC,EAAA,IAAA7Y,KAAAoI,EAAAQ,EAAA,EAAA4N,KAAAuC,IAGA,IAAAvC,EAAA,EAA+BA,GAAA1T,EAA0B0T,IAAAuC,IACzD7K,EAAA/H,YAAAoQ,EAAA,OAAAvW,KAAAoI,EAAAQ,EAAA4N,KAAAuC,IAGA,QAAAC,EAAAlW,EAAA,EAA8CkW,GAAA,GAAAR,IAC9C,IAAAlL,EAAAzD,OAAAzH,YAAA2W,EAAA,MAAqEC,IAAAD,IACrE7K,EAAA/H,YAAAoQ,EAAAuC,EAAA,IAAA9Y,KAAAoI,EAAAQ,EAAA,EAAAoQ,EAAAlW,GAAAkW,EAAAD,IAGA,IAAAE,EAAAlU,EAAA,sBAEA,OADAkU,EAAA9S,YAAA+H,GACA+K,EAEA,SAAAtD,IACA,QAAA1T,IAAAqL,EAAAU,cAAA,CAGA3I,EAAAiI,EAAAU,eAEAV,EAAA/K,aACA8C,EAAAiI,EAAA/K,aAEA,IADA,IAAA2W,EAAA/T,SAAAwP,yBACArZ,EAAA,EAA2BA,EAAAgS,EAAAzD,OAAAzH,WAA4B9G,IAAA,CACvD,IAAAM,EAAA,IAAAoE,KAAAsN,EAAAyG,YAAAzG,EAAA2G,aAAA,GACArY,EAAAgL,SAAA0G,EAAA2G,aAAA3Y,GACA4d,EAAA/S,YAAAoS,EAAA3c,EAAA2E,cAAA3E,EAAAyN,aAEAiE,EAAAU,cAAA7H,YAAA+S,GACA5L,EAAAY,KAAAZ,EAAAU,cAAAzI,WACA,UAAA+H,EAAAzD,OAAApN,MAAA,IAAA6Q,EAAAkB,cAAA5Q,QACAmV,MAGA,SAAAoB,IACA,KAAA7G,EAAAzD,OAAAzH,WAAA,IAEA,IAAA+W,EAAA,SAAAvQ,GACA,aAAA3G,IAAAqL,EAAAzD,OAAAsG,SACA7C,EAAAyG,cAAAzG,EAAAzD,OAAAsG,QAAA5P,eACAqI,EAAA0E,EAAAzD,OAAAsG,QAAA9G,iBAGApH,IAAAqL,EAAAzD,OAAA2G,SACAlD,EAAAyG,cAAAzG,EAAAzD,OAAA2G,QAAAjQ,eACAqI,EAAA0E,EAAAzD,OAAA2G,QAAAnH,aAEAiE,EAAA8L,wBAAAjH,UAAA,EACA7E,EAAA8L,wBAAArE,UAAA,GACA,QAAAzZ,EAAA,EAA2BA,EAAA,GAAQA,IACnC,GAAA6d,EAAA7d,GAAA,CAEA,IAAAsN,EAAA7D,EAAA,0CACA6D,EAAArM,MAAA,IAAAyD,KAAAsN,EAAAyG,YAAAzY,GAAA+N,WAAA8H,WACAvI,EAAAxD,YAAAiB,EAAA/K,GAAA,EAAAgS,EAAAvD,MACAnB,EAAAuJ,UAAA,EACA7E,EAAA2G,eAAA3Y,IACAsN,EAAAyQ,UAAA,GAEA/L,EAAA8L,wBAAAjT,YAAAyC,KAGA,SAAA0Q,IACA,IAEAC,EAFAC,EAAAzU,EAAA,yBACA0U,EAAAjb,OAAA2G,SAAAwP,yBAEArH,EAAAzD,OAAAzH,WAAA,EACAmX,EAAAxU,EAAA,qBAGAuI,EAAA8L,wBAAArU,EAAA,2CACAjI,EAAAwQ,EAAA8L,wBAAA,kBAAAlU,GACA,IAAAyH,EAAAzH,EAAAyH,OACA+M,EAAAxR,SAAAyE,EAAApQ,MAAA,IACA+Q,EAAA+K,YAAAqB,EAAApM,EAAA2G,cACAnC,GAAA,mBAEAqC,IACAoF,EAAAjM,EAAA8L,yBAEA,IAAAO,EAAAlU,EAAA,YAA2DmU,SAAA,OAC3DC,EAAAF,EAAA7D,qBAAA,YACA+D,EAAA3T,aAAA,aAAAoH,EAAAvD,KAAAxG,eACA+J,EAAAzD,OAAAsG,SACA0J,EAAA3T,aAAA,MAAAoH,EAAAzD,OAAAsG,QAAA5P,cAAA4Q,YAEA7D,EAAAzD,OAAA2G,UACAqJ,EAAA3T,aAAA,MAAAoH,EAAAzD,OAAA2G,QAAAjQ,cAAA4Q,YACA0I,EAAAzH,WACA9E,EAAAzD,OAAAsG,SACA7C,EAAAzD,OAAAsG,QAAA5P,gBAAA+M,EAAAzD,OAAA2G,QAAAjQ,eAEA,IAAA0T,EAAAlP,EAAA,iCAKA,OAJAkP,EAAA9N,YAAAoT,GACAtF,EAAA9N,YAAAwT,GACAF,EAAAtT,YAAA8N,GACAuF,EAAArT,YAAAsT,GACA,CACAD,YACAK,cACAN,gBAGA,SAAAtE,IACA5P,EAAAiI,EAAA+F,UACA/F,EAAA+F,SAAAlN,YAAAmH,EAAAwH,cACAxH,EAAAzD,OAAAzH,aACAkL,EAAAsH,aAAA,GACAtH,EAAAuH,cAAA,IAEA,QAAAnZ,EAAA4R,EAAAzD,OAAAzH,WAAgD1G,KAAK,CACrD,IAAAkN,EAAA0Q,IACAhM,EAAAsH,aAAAlD,KAAA9I,EAAAiR,aACAvM,EAAAuH,cAAAnD,KAAA9I,EAAA2Q,cACAjM,EAAA+F,SAAAlN,YAAAyC,EAAA4Q,WAEAlM,EAAA+F,SAAAlN,YAAAmH,EAAA0H,cAwFA,SAAAU,IACApI,EAAAwM,iBAGAzU,EAAAiI,EAAAwM,kBAFAxM,EAAAwM,iBAAA/U,EAAA,4BAGA,QAAAzJ,EAAAgS,EAAAzD,OAAAzH,WAAgD9G,KAAK,CACrD,IAAAke,EAAAzU,EAAA,oCACAuI,EAAAwM,iBAAA3T,YAAAqT,GAGA,OADAO,IACAzM,EAAAwM,iBAEA,SAAAC,IACA,IAAAhX,EAAAuK,EAAAvD,KAAAhH,eACAL,EAAA4K,EAAAvD,KAAArH,SAAAC,UAAAe,QACAX,EAAA,GAAAA,EAAAL,EAAA9E,SACA8E,IAAAsX,OAAAjX,EAAAL,EAAA9E,QAAAqc,OAAAvX,EAAAsX,OAAA,EAAAjX,KAEA,QAAAzH,EAAAgS,EAAAzD,OAAAzH,WAAgD9G,KAChDgS,EAAAwM,iBAAAtC,SAAAlc,GAAAyZ,UAAA,qDAAArS,EAAA4H,KAAA,qEAeA,SAAA+N,EAAA9b,EAAA2d,QACA,IAAAA,IAAsCA,GAAA,GACtC,IAAAlL,EAAAkL,EAAA3d,IAAA+Q,EAAA2G,aACAjF,EAAA,QAAA1B,EAAA6M,qBACAnL,EAAA,QAAA1B,EAAA8M,sBAEA9M,EAAA2G,cAAAjF,GACA1B,EAAA2G,aAAA,GAAA3G,EAAA2G,aAAA,MACA3G,EAAAyG,aAAAzG,EAAA2G,aAAA,QACA3G,EAAA2G,cAAA3G,EAAA2G,aAAA,OACAnC,GAAA,gBACAqC,KAEAwB,IACA7D,GAAA,iBACAwD,MAgHA,SAAA+E,EAAA3V,GACA,SAAA4I,EAAAzD,OAAAwM,WAAA/I,EAAAzD,OAAAwM,SAAAhC,SAAA3P,KAEA4I,EAAAM,kBAAAyG,SAAA3P,GAEA,SAAAwO,EAAAhO,GACA,GAAAoI,EAAAgN,SAAAhN,EAAAzD,OAAAjJ,OAAA,CACA,IAAA2Z,EAhtCA,SAAArJ,GACA,sBAAAA,EAAAsJ,aAAA,CACA,IAAAC,EAAAvJ,EAAAsJ,eACA,OAAAC,EAAA,GAEA,OAAAvJ,EAAAvE,OA2sCA+N,CAAAxV,GACAyV,EAAAN,EAAAE,GACAK,EAAAL,IAAAjN,EAAAsB,OACA2L,IAAAjN,EAAAjP,UACAiP,EAAAF,QAAAiH,SAAAkG,IAGArV,EAAAuV,MACAvV,EAAAuV,KAAA9b,WACAuG,EAAAuV,KAAA9b,QAAA2O,EAAAsB,SACA1J,EAAAuV,KAAA9b,QAAA2O,EAAAjP,WACAwc,EAAA,SAAA3V,EAAAc,KACA4U,GACA1V,EAAA4V,gBACAT,EAAAnV,EAAA4V,gBACAF,IACAD,IACAN,EAAAnV,EAAA4V,eACAC,GAAAzN,EAAAzD,OAAAlJ,qBAAAqa,KAAA,SAAAtW,GACA,OAAAA,EAAA2P,SAAAkG,KAEAM,GAAAE,IACAzN,EAAA2N,QACA,UAAA3N,EAAAzD,OAAApN,MAAA,IAAA6Q,EAAAkB,cAAA5Q,SACA0P,EAAA4N,OAAA,GACA5N,EAAA8G,YAKA,SAAAhD,GAAA+J,GACA,MAAAA,GACA7N,EAAAzD,OAAAsG,SAAAgL,EAAA7N,EAAAzD,OAAAsG,QAAA5P,eACA+M,EAAAzD,OAAA2G,SAAA2K,EAAA7N,EAAAzD,OAAA2G,QAAAjQ,eAFA,CAIA,IAAA6a,EAAAD,EAAAE,EAAA/N,EAAAyG,cAAAqH,EACA9N,EAAAyG,YAAAqH,GAAA9N,EAAAyG,YACAzG,EAAAzD,OAAA2G,SACAlD,EAAAyG,cAAAzG,EAAAzD,OAAA2G,QAAAjQ,cACA+M,EAAA2G,aAAAzT,KAAA+L,IAAAe,EAAAzD,OAAA2G,QAAAnH,WAAAiE,EAAA2G,cAEA3G,EAAAzD,OAAAsG,SACA7C,EAAAyG,cAAAzG,EAAAzD,OAAAsG,QAAA5P,gBACA+M,EAAA2G,aAAAzT,KAAAgM,IAAAc,EAAAzD,OAAAsG,QAAA9G,WAAAiE,EAAA2G,eAEAoH,IACA/N,EAAA8G,SACAtC,GAAA,gBACAqC,MAGA,SAAAuC,GAAA3W,EAAA0K,QACA,IAAAA,IAAsCA,GAAA,GACtC,IAAA6Q,EAAAhO,EAAArC,UAAAlL,OAAAkC,EAAAwI,GACA,GAAA6C,EAAAzD,OAAAsG,SACAmL,GACAtP,EAAAsP,EAAAhO,EAAAzD,OAAAsG,aAAAlO,IAAAwI,KAAA6C,EAAA8C,gBAAA,GACA9C,EAAAzD,OAAA2G,SACA8K,GACAtP,EAAAsP,EAAAhO,EAAAzD,OAAA2G,aAAAvO,IAAAwI,KAAA6C,EAAAmD,gBAAA,EACA,SACA,OAAAnD,EAAAzD,OAAAvK,OAAA1B,QAAA,IAAA0P,EAAAzD,OAAAzK,QAAAxB,OACA,SACA,QAAAqE,IAAAqZ,EACA,SAEA,IADA,IAAA1X,EAAA0J,EAAAzD,OAAAvK,OAAA1B,OAAA,EAAA2d,EAAA3X,EAAA0J,EAAAzD,OAAAvK,OAAAgO,EAAAzD,OAAAzK,QACA9D,EAAA,EAAAM,OAAA,EAAuCN,EAAAigB,EAAA3d,OAAkBtC,IAAA,CAEzD,sBADAM,EAAA2f,EAAAjgB,KAEAM,EAAA0f,GAEA,OAAA1X,EACA,GAAAhI,aAAAoE,WACAiC,IAAAqZ,GACA1f,EAAAqE,YAAAqb,EAAArb,UAEA,OAAA2D,EACA,oBAAAhI,QAAAqG,IAAAqZ,EAAA,CAEA,IAAAE,EAAAlO,EAAArC,UAAArP,OAAAqG,GAAA,GACA,OAAAuZ,KAAAvb,YAAAqb,EAAArb,UACA2D,GACAA,EAEA,GAEA,iBAAAhI,QACAqG,IAAAqZ,GACA1f,EAAA6f,MACA7f,EAAA8f,IACAJ,EAAArb,WAAArE,EAAA6f,KAAAxb,WACAqb,EAAArb,WAAArE,EAAA8f,GAAAzb,UACA,OAAA2D,EAEA,OAAAA,EAEA,SAAAmU,GAAArT,GACA,YAAAzC,IAAAqL,EAAAU,gBACA,IAAAtJ,EAAAC,UAAAhG,QAAA,WACA2O,EAAAU,cAAAqG,SAAA3P,GAGA,SAAApD,GAAA4D,GAWA,IAAA0V,EAAA1V,EAAAyH,SAAAW,EAAAqC,OACAxR,EAAAmP,EAAAzD,OAAA1L,WACAwd,EAAArO,EAAAgN,UAAAnc,IAAAyc,GACAgB,EAAAtO,EAAAzD,OAAAjJ,QAAAga,IAAAzc,EACA,QAAA+G,EAAA2W,SAAAjB,EAAA,CACA,GAAAzc,EAIA,OAHAmP,EAAAnN,QAAAmN,EAAAqC,OAAApT,OAAA,EAAA2I,EAAAyH,SAAAW,EAAAjP,SACAiP,EAAAzD,OAAAzL,UACAkP,EAAAzD,OAAA7K,YACAkG,EAAAyH,OAAAmP,OAGAxO,EAAA8F,YAGA,GAAAiH,EAAAnV,EAAAyH,SACAgP,GACAC,EAAA,CACA,IAAAG,IAAAzO,EAAAkG,eACAlG,EAAAkG,cAAAa,SAAAnP,EAAAyH,QACA,OAAAzH,EAAA2W,SACA,QACAE,GACA7W,EAAAwJ,iBACAH,IACAyN,MAGAzI,GAAArO,GACA,MACA,QACAA,EAAAwJ,iBACAsN,KACA,MACA,OACA,QACApB,IAAAtN,EAAAzD,OAAA1L,aACA+G,EAAAwJ,iBACApB,EAAA4N,SAEA,MACA,QACA,QACA,GAAAa,GAAAnB,EAeAtN,EAAA8B,aACA9B,EAAA8B,YAAAgI,aAdA,GADAlS,EAAAwJ,sBACAzM,IAAAqL,EAAAU,iBACA,IAAA7P,GACAgH,SAAA6S,eAAAD,GAAA5S,SAAA6S,gBAAA,CACA,IAAAiE,EAAA,KAAA/W,EAAA2W,QAAA,KACA3W,EAAAgX,SAGAhX,EAAAiX,kBACA9D,EAAA4D,GACAtE,EAAAN,EAAA,OAJAM,OAAA1V,EAAAga,GAUA,MACA,QACA,QACA/W,EAAAwJ,iBACA,IAAAM,EAAA,KAAA9J,EAAA2W,QAAA,KACAvO,EAAAU,oBAAA/L,IAAAiD,EAAAyH,OAAAiK,IACA1R,EAAAyH,SAAAW,EAAAsB,MACA1J,EAAAgX,SACAhX,EAAAiX,kBACA/K,GAAA9D,EAAAyG,YAAA/E,GACA2I,EAAAN,EAAA,OAEA0E,GACApE,OAAA1V,EAAA,EAAA+M,GAEA9J,EAAAyH,SAAAW,EAAA+H,mBACAjE,GAAA9D,EAAAyG,YAAA/E,GAEA1B,EAAAzD,OAAArK,cACAuc,GAAAzO,EAAA8B,aACA9B,EAAA8B,YAAAgI,QACA7I,EAAArJ,GACAoI,EAAAwC,oBAEA,MACA,OACA,GAAAiM,EAAA,CACA,IAAAK,EAAA,CACA9O,EAAA8B,YACA9B,EAAAgC,cACAhC,EAAA0C,cACA1C,EAAAhK,MAEA2W,OAAA3M,EAAA+O,gBACAC,OAAA,SAAAC,GAAsD,OAAAA,IACtDjhB,EAAA8gB,EAAAzd,QAAAuG,EAAAyH,QACA,QAAArR,EAAA,CACA,IAAAqR,EAAAyP,EAAA9gB,GAAA4J,EAAAsX,UAAA,MACAtX,EAAAwJ,kBACA/B,GAAAW,EAAAqC,QAAAyH,cAGA9J,EAAAzD,OAAA7I,YACAsM,EAAAU,eACAV,EAAAU,cAAAqG,SAAAnP,EAAAyH,SACAzH,EAAAsX,WACAtX,EAAAwJ,iBACApB,EAAAqC,OAAAyH,UAOA,QAAAnV,IAAAqL,EAAAhK,MAAA4B,EAAAyH,SAAAW,EAAAhK,KACA,OAAA4B,EAAArI,KACA,KAAAyQ,EAAAvD,KAAAzG,KAAA,GAAAmZ,OAAA,GACA,KAAAnP,EAAAvD,KAAAzG,KAAA,GAAAmZ,OAAA,GAAAC,cACApP,EAAAhK,KAAA8B,YAAAkI,EAAAvD,KAAAzG,KAAA,GACAsM,IACAC,KACA,MACA,KAAAvC,EAAAvD,KAAAzG,KAAA,GAAAmZ,OAAA,GACA,KAAAnP,EAAAvD,KAAAzG,KAAA,GAAAmZ,OAAA,GAAAC,cACApP,EAAAhK,KAAA8B,YAAAkI,EAAAvD,KAAAzG,KAAA,GACAsM,IACAC,MAIA+K,GAAAP,EAAAnV,EAAAyH,UACAmF,GAAA,YAAA5M,GAGA,SAAA6N,GAAArO,GACA,OAAA4I,EAAAkB,cAAA5Q,UACA8G,GACAA,EAAAE,UAAAyP,SAAA,mBACA3P,EAAAE,UAAAyP,SAAA,uBAHA,CAUA,IALA,IAAAsI,EAAAjY,EACAA,EAAAgC,QAAAzG,UACAqN,EAAAY,KAAA0O,kBAAAlW,QAAAzG,UAAA4c,EAAAvP,EAAArC,UAAAqC,EAAAkB,cAAA,QAAAvM,GAAA,GAAAhC,UAAA6c,EAAAtc,KAAA+L,IAAAoQ,EAAArP,EAAAkB,cAAA,GAAAvO,WAAA8c,EAAAvc,KAAAgM,IAAAmQ,EAAArP,EAAAkB,cAAA,GAAAvO,WACA+c,GAAA,EACAC,EAAA,EAAAC,EAAA,EACA1gB,EAAAsgB,EAAwCtgB,EAAAugB,EAAkBvgB,GAAAiQ,EAAAC,IAC1DgK,GAAA,IAAA1W,KAAAxD,IAAA,KACAwgB,EACAA,GAAAxgB,EAAAsgB,GAAAtgB,EAAAugB,EACAvgB,EAAAqgB,KAAAI,GAAAzgB,EAAAygB,GACAA,EAAAzgB,EACAA,EAAAqgB,KAAAK,GAAA1gB,EAAA0gB,KACAA,EAAA1gB,IAGA,QAAAd,EAAA,EAA2BA,EAAA4R,EAAAzD,OAAAzH,WAA4B1G,IAiCvD,IAhCA,IAAAkN,EAAA0E,EAAAU,cAAAwJ,SAAA9b,GACAoR,EAAA,SAAAxR,EAAAC,GACA,IAAA4hB,EAAAvU,EAAA4O,SAAAlc,GAAAyE,EAAAod,EAAAzW,QACA0W,EAAArd,EAAAE,UACAod,EAAAJ,EAAA,GAAAG,EAAAH,GACAC,EAAA,GAAAE,EAAAF,EACA,OAAAG,GACAF,EAAAvY,UAAAC,IAAA,cACA,oCAAAgH,QAAA,SAAAlQ,GACAwhB,EAAAvY,UAAAE,OAAAnJ,KAEA,YAEAqhB,IAAAK,EACA,YACA,iDAAAxR,QAAA,SAAAlQ,GACAwhB,EAAAvY,UAAAE,OAAAnJ,eAEAsG,IAAAyC,IACAA,EAAAE,UAAAC,IAAA8X,GAAArP,EAAAkB,cAAA,GAAAvO,UACA,aACA,YACA4c,EAAAF,GAAAS,IAAAP,EACAM,EAAAvY,UAAAC,IAAA,cACAgY,EAAAF,GAAAS,IAAAP,GACAM,EAAAvY,UAAAC,IAAA,YACAuY,GAAAH,IACA,IAAAC,GAAAE,GAAAF,IACA/Q,EAAAiR,EAAAP,EAAAF,IACAQ,EAAAvY,UAAAC,IAAA,eAGAvJ,EAAA,EAAAC,EAAAqN,EAAA4O,SAAA5Z,OAA0DtC,EAAAC,EAAOD,IACjEwR,EAAAxR,IAIA,SAAAwX,MACAxF,EAAAgN,QAAAhN,EAAAzD,OAAAxH,QAAAiL,EAAAzD,OAAAjJ,QACA0c,KAEA,SAAA7O,KACAnB,EAAAnN,aAAA8B,IAAAqL,EAAAzD,OAAAsG,QACA,IAAAnQ,KAAAsN,EAAAzD,OAAAsG,QAAAlQ,WACA,IAAAD,MAAA,GACA2Q,IACAd,KAqCA,SAAA0N,GAAAvX,GACA,gBAAAjG,GACA,IAAA2G,EAAA4G,EAAAzD,OAAA,IAAA7D,EAAA,QAAAsH,EAAArC,UAAAlL,EAAAuN,EAAAzD,OAAA7K,YACAwe,EAAAlQ,EAAAzD,OAAA,aAAA7D,EAAA,0BACA/D,IAAAyE,IACA4G,EAAA,QAAAtH,EAAA,mCACAU,EAAAU,WAAA,GACAV,EAAA6C,aAAA,GACA7C,EAAA4C,aAAA,GAEAgE,EAAAkB,gBACAlB,EAAAkB,cAAAlB,EAAAkB,cAAA8N,OAAA,SAAA1gB,GAAiF,OAAA8a,GAAA9a,KACjF0R,EAAAkB,cAAA5Q,QAAA,QAAAoI,GACA0K,EAAAhK,GACAmJ,MAEAvC,EAAAU,gBACAoG,UACAnS,IAAAyE,EACA4G,EAAA+H,mBAAArP,GAAAU,EAAAnG,cAAA4Q,WAEA7D,EAAA+H,mBAAAoI,gBAAAzX,GACAsH,EAAA+H,mBAAAjD,WACAoL,QACAvb,IAAAyE,GACA8W,EAAAjd,gBAAAmG,EAAAnG,gBA8GA,SAAAmd,KACA,iBAAApQ,EAAAzD,OAAAhJ,aACA,IAAA0M,EAAAoQ,MAAArQ,EAAAzD,OAAAhJ,SACAyM,EAAAzD,OAAApK,aAAA,IAAAsM,MAAA,6BAAAuB,EAAAzD,OAAAhJ,SACAyM,EAAAvD,KAAAtM,EAAA,GAAmC8P,EAAAoQ,MAAA,yBAAArQ,EAAAzD,OAAAhJ,OACnCyM,EAAAzD,OAAAhJ,OACA,YAAAyM,EAAAzD,OAAAhJ,OACA0M,EAAAoQ,MAAArQ,EAAAzD,OAAAhJ,aACAoB,GACAgH,EAAA9B,EAAA,IAAAmG,EAAAvD,KAAAzG,KAAA,OAAAgK,EAAAvD,KAAAzG,KAAA,OAAAgK,EAAAvD,KAAAzG,KAAA,GAAAoZ,cAAA,IAAApP,EAAAvD,KAAAzG,KAAA,GAAAoZ,cAAA,IACA,IAAAkB,EAAAngB,EAAA,GAAwC4P,EAAAwQ,KAAAC,MAAAD,KAAAE,UAAA3Q,EAAA4Q,SAAA,WACxC/b,IAAA2b,EAAAtb,gBACAL,IAAAsL,EAAAC,cAAAlL,YACAgL,EAAAzD,OAAAvH,UAAAgL,EAAAvD,KAAAzH,WAEAgL,EAAApD,WAAAR,EAAA4D,GACAA,EAAArC,UAAAV,EAAA,CAA+CV,OAAAyD,EAAAzD,OAAAE,KAAAuD,EAAAvD,OAE/C,SAAAuT,GAAAW,GACA,QAAAhc,IAAAqL,EAAAM,kBAAA,CAEAkE,GAAA,yBACA,IAAA9P,EAAAic,GAAA3Q,EAAA4Q,iBACAC,EAAA3Z,MAAAtH,UAAAkhB,OAAA3iB,KAAA6R,EAAAM,kBAAA4J,SAAA,SAAA6G,EAAAC,GAAsH,OAAAD,EAAAC,EAAAC,cAAmC,GAAAC,EAAAlR,EAAAM,kBAAAO,YAAAsQ,EAAAnR,EAAAzD,OAAA9H,SAAAoI,MAAA,KAAAuU,EAAAD,EAAA,GAAAE,EAAAF,EAAA7gB,OAAA,EAAA6gB,EAAA,QAAAG,EAAA5c,EAAA6c,wBAAAC,EAAAtgB,OAAAugB,YAAAH,EAAAI,OAAAC,EAAA,UAAAP,GACzJ,UAAAA,GACAI,EAAAX,GACAS,EAAAM,IAAAf,EACAe,EAAA1gB,OAAA2gB,YACAP,EAAAM,KACAD,GAAAd,EAAA,EAAAnc,EAAAuc,aAAA,GAGA,GAFA9Z,EAAA6I,EAAAM,kBAAA,YAAAqR,GACAxa,EAAA6I,EAAAM,kBAAA,cAAAqR,IACA3R,EAAAzD,OAAAjJ,OAAA,CAEA,IAAAwe,EAAA5gB,OAAA6gB,YACAT,EAAAQ,MACA,MAAAT,GAAA,WAAAA,GACAH,EAAAI,EAAAxQ,OAAA,EACA,GACAkR,EAAA9gB,OAAA2G,SAAA6N,KAAA7E,YAAAyQ,EAAAU,MACAC,EAAAH,EAAAZ,EAAAhgB,OAAA2G,SAAA6N,KAAA7E,YACAqR,EAAAF,EAAAd,EAAAhgB,OAAA2G,SAAA6N,KAAA7E,YAEA,GADA1J,EAAA6I,EAAAM,kBAAA,YAAA2R,IACAjS,EAAAzD,OAAAxH,OAGA,GADAiL,EAAAM,kBAAAC,MAAAqR,MAAA,KACAK,EAIA,GAAAC,EAIA,CACA,IAAAC,EAAAta,SAAAua,YAAA,GAEA,QAAAzd,IAAAwd,EACA,OACA,IAAAE,EAAAnhB,OAAA2G,SAAA6N,KAAA7E,YACAyR,EAAApf,KAAAgM,IAAA,EAAAmT,EAAA,EAAAnB,EAAA,GAGAqB,EAAAJ,EAAAK,SAAAliB,OACAmiB,EAAA,SAAoCnB,EAAAQ,KAAA,kBACpC3a,EAAA6I,EAAAM,kBAAA,gBACAnJ,EAAA6I,EAAAM,kBAAA,iBACA6R,EAAAO,WAAAC,6EAAAF,EAAAF,GACAvS,EAAAM,kBAAAC,MAAAuR,KAAAQ,EAAA,KACAtS,EAAAM,kBAAAC,MAAAyR,MAAA,YAlBAhS,EAAAM,kBAAAC,MAAAuR,KAAA,OACA9R,EAAAM,kBAAAC,MAAAyR,QAAA,UALAhS,EAAAM,kBAAAC,MAAAuR,OAAA,KACA9R,EAAAM,kBAAAC,MAAAyR,MAAA,SAwBA,SAAAlL,KACA9G,EAAAzD,OAAA7I,YAAAsM,EAAA0D,WAEAsE,KACAK,KAEA,SAAAqG,KACA1O,EAAAqC,OAAAyH,SACA,IAAA5Y,OAAAC,UAAAC,UAAAC,QAAA,cACAsD,IAAAxD,UAAAyhB,iBAEA7b,WAAAiJ,EAAA2N,MAAA,GAGA3N,EAAA2N,QAGA,SAAA1H,GAAArO,GACAA,EAAAwJ,iBACAxJ,EAAAiX,kBACA,IAMA3f,EAjzDA,SAAA2jB,EAAA7a,EAAA8a,GACA,OAAAA,EAAA9a,GACAA,EACAA,EAAAmN,WACA0N,EAAA7a,EAAAmN,WAAA2N,QADA,EA8yDAD,CAAAjb,EAAAyH,OANA,SAAAzF,GACA,OAAAA,EAAAtC,WACAsC,EAAAtC,UAAAyP,SAAA,mBACAnN,EAAAtC,UAAAyP,SAAA,wBACAnN,EAAAtC,UAAAyP,SAAA,gBAGA,QAAApS,IAAAzF,EAAA,CAEA,IAAAmQ,EAAAnQ,EACA6jB,EAAA/S,EAAA+C,sBAAA,IAAArQ,KAAA2M,EAAAjG,QAAAzG,WACAqgB,GAAAD,EAAAhX,WAAAiE,EAAA2G,cACAoM,EAAAhX,WACAiE,EAAA2G,aAAA3G,EAAAzD,OAAAzH,WAAA,IACA,UAAAkL,EAAAzD,OAAApN,KAEA,GADA6Q,EAAAyJ,iBAAApK,EACA,WAAAW,EAAAzD,OAAApN,KACA6Q,EAAAkB,cAAA,CAAA6R,QACA,gBAAA/S,EAAAzD,OAAApN,KAAA,CACA,IAAA8jB,EAAAzJ,GAAAuJ,GACAE,EACAjT,EAAAkB,cAAAwL,OAAA9R,SAAAqY,GAAA,GAEAjT,EAAAkB,cAAAkD,KAAA2O,OAEA,UAAA/S,EAAAzD,OAAApN,OACA,IAAA6Q,EAAAkB,cAAA5Q,QACA0P,EAAA4N,OAAA,MAEA5N,EAAA+C,sBAAAgQ,EACA/S,EAAAkB,cAAAkD,KAAA2O,GAEA,IAAArU,EAAAqU,EAAA/S,EAAAkB,cAAA,QACAlB,EAAAkB,cAAAgS,KAAA,SAAAC,EAAAC,GAA6D,OAAAD,EAAAxgB,UAAAygB,EAAAzgB,aAG7D,GADA2P,IACA0Q,EAAA,CACA,IAAAjF,EAAA/N,EAAAyG,cAAAsM,EAAA9f,cACA+M,EAAAyG,YAAAsM,EAAA9f,cACA+M,EAAA2G,aAAAoM,EAAAhX,WACAgS,IACAvJ,GAAA,gBACAqC,KAEArC,GAAA,iBAkBA,GAhBAwD,KACAK,IACA9F,KACAvC,EAAAzD,OAAArK,YACA6E,WAAA,WAAwC,OAAAiJ,EAAAqT,eAAA,GAAsC,IAE9EL,GACA,UAAAhT,EAAAzD,OAAApN,MACA,IAAA6Q,EAAAzD,OAAAzH,gBAEAH,IAAAqL,EAAAyJ,uBACA9U,IAAAqL,EAAA8B,aACA9B,EAAAyJ,kBAAAzJ,EAAAyJ,iBAAAK,QAHAF,EAAAvK,QAKA1K,IAAAqL,EAAA8B,kBACAnN,IAAAqL,EAAA8B,aAAA9B,EAAA8B,YAAAgI,QACA9J,EAAAzD,OAAA/K,cAAA,CACA,IAAA8hB,EAAA,WAAAtT,EAAAzD,OAAApN,OAAA6Q,EAAAzD,OAAArK,WACAqhB,EAAA,UAAAvT,EAAAzD,OAAApN,MACA,IAAA6Q,EAAAkB,cAAA5Q,SACA0P,EAAAzD,OAAArK,YACAohB,GAAAC,IACA7E,KAGAnK,KAhjDAvE,EAAArC,UAAAV,EAAA,CAA2CV,OAAAyD,EAAAzD,OAAAE,KAAAuD,EAAAvD,OAC3CuD,EAAAmE,UAAA,GACAnE,EAAA+O,eAAA,GACA/O,EAAAwT,cAAA,GACAxT,EAAAyT,MAAAjkB,EACAwQ,EAAA0T,kBAAAtQ,EACApD,EAAA2T,kBAAA3D,GACAhQ,EAAA+K,cACA/K,EAAA8D,cACA9D,EAAA4N,MAwyBA,SAAAgG,EAAAC,QACA,IAAAD,IAAgDA,GAAA,QAChD,IAAAC,IAAuCA,GAAA,GACvC7T,EAAAsB,MAAArS,MAAA,QACA0F,IAAAqL,EAAAjP,WACAiP,EAAAjP,SAAA9B,MAAA,SACA0F,IAAAqL,EAAA4E,cACA5E,EAAA4E,YAAA3V,MAAA,IACA+Q,EAAAkB,cAAA,GACAlB,EAAA+C,2BAAApO,GACA,IAAAkf,IACA7T,EAAAyG,YAAAzG,EAAA8T,aAAA7gB,cACA+M,EAAA2G,aAAA3G,EAAA8T,aAAA/X,YAEAiE,EAAAqT,eAAA,GACA,IAAArT,EAAAzD,OAAArK,YACAmR,IAEArD,EAAA8G,SACA8M,GAEApP,GAAA,aA5zBAxE,EAAA2N,MA8zBA,WACA3N,EAAAgN,QAAA,EACAhN,EAAA0D,gBACA/O,IAAAqL,EAAAM,mBACAN,EAAAM,kBAAAhJ,UAAAE,OAAA,aAEA7C,IAAAqL,EAAAqC,QACArC,EAAAqC,OAAA/K,UAAAE,OAAA,WAGAgN,GAAA,YAv0BAxE,EAAA+T,eAAAtc,EACAuI,EAAAgU,QAw0BA,gBACArf,IAAAqL,EAAAzD,QACAiI,GAAA,aACA,QAAAxW,EAAAgS,EAAAmE,UAAA7T,OAA+CtC,KAAK,CACpD,IAAAkN,EAAA8E,EAAAmE,UAAAnW,GACAkN,EAAA4E,QAAAmU,oBAAA/Y,EAAA0I,MAAA1I,EAAA6I,QAAA7I,EAAAY,SAGA,GADAkE,EAAAmE,UAAA,GACAnE,EAAA4E,YACA5E,EAAA4E,YAAAO,YACAnF,EAAA4E,YAAAO,WAAAjN,YAAA8H,EAAA4E,aACA5E,EAAA4E,iBAAAjQ,OAEA,GAAAqL,EAAAM,mBAAAN,EAAAM,kBAAA6E,WACA,GAAAnF,EAAAzD,OAAAxH,QAAAiL,EAAAM,kBAAA6E,WAAA,CACA,IAAA7M,EAAA0H,EAAAM,kBAAA6E,WAEA,GADA7M,EAAA4b,WAAA5b,EAAAJ,YAAAI,EAAA4b,WACA5b,EAAA6M,WAAA,CACA,KAAA7M,EAAAL,YACAK,EAAA6M,WAAAC,aAAA9M,EAAAL,WAAAK,GACAA,EAAA6M,WAAAjN,YAAAI,SAIA0H,EAAAM,kBAAA6E,WAAAjN,YAAA8H,EAAAM,mBAEAN,EAAAjP,WACAiP,EAAAsB,MAAA5I,KAAA,OACAsH,EAAAjP,SAAAoU,YACAnF,EAAAjP,SAAAoU,WAAAjN,YAAA8H,EAAAjP,iBACAiP,EAAAjP,UAEAiP,EAAAsB,QACAtB,EAAAsB,MAAA5I,KAAAsH,EAAAsB,MAAA6S,MACAnU,EAAAsB,MAAAhK,UAAAE,OAAA,mBACAwI,EAAAsB,MAAA6O,gBAAA,YACAnQ,EAAAsB,MAAArS,MAAA,IAEA,CACA,iBACA,wBACA,sBACA,sBACA,uBACA,uBACA,WACA,SACA,mBACA,iBACA,iBACA,OACA,gBACA,SACA,mBACA,iBACA,aACA,WACA,gBACA,oBACA,mBACA,eACA,eACA,0BACA,sBACA,qBACA,yBACA,mBACA,UACAsP,QAAA,SAAA6V,GACA,WACApU,EAAAoU,GAEA,MAAA7Z,QA/4BAyF,EAAAoJ,aACApJ,EAAAqG,aACArG,EAAA8F,KAotCA,SAAAlO,EAAAlD,GAEA,QADA,IAAAA,IAA6CA,EAAAsL,EAAA4Q,mBAC7C,IAAA5Q,EAAA0D,SAUA,OATA9L,IACAA,EAAAwJ,iBACAxJ,EAAAyH,QAAAzH,EAAAyH,OAAAmP,aAEA7Z,IAAAqL,EAAA4E,cACA5E,EAAA4E,YAAAkF,QACA9J,EAAA4E,YAAAyP,cAEA7P,GAAA,UAGA,IAAAxE,EAAAqC,OAAAyC,WAAA9E,EAAAzD,OAAAjJ,OAAA,CAEA,IAAAghB,EAAAtU,EAAAgN,OACAhN,EAAAgN,QAAA,EACAsH,IACAtU,EAAAM,kBAAAhJ,UAAAC,IAAA,QACAyI,EAAAqC,OAAA/K,UAAAC,IAAA,UACAiN,GAAA,UACAwL,GAAAtb,KAEA,IAAAsL,EAAAzD,OAAArK,aAAA,IAAA8N,EAAAzD,OAAA7I,aACA,IAAAsM,EAAAkB,cAAA5Q,QACA6Q,MAEA,IAAAnB,EAAAzD,OAAA1L,iBACA8D,IAAAiD,GACAoI,EAAAkG,cAAAa,SAAAnP,EAAA4V,gBACAzW,WAAA,WAA4C,OAAAiJ,EAAA8B,YAAAsE,UAAoC,OAlvChFpG,EAAA8G,UACA9G,EAAA6H,IAuiDA,SAAA0M,EAAAtlB,GACA,UAAAslB,GAAA,iBAAAA,EAEA,QAAAhlB,KADAb,OAAA0B,OAAA4P,EAAAzD,OAAAgY,GACAA,OACA5f,IAAA6f,GAAAjlB,IACAilB,GAAAjlB,GAAAgP,QAAA,SAAA0Q,GAA6D,OAAAA,WAI7DjP,EAAAzD,OAAAgY,GAAAtlB,OACA0F,IAAA6f,GAAAD,GACAC,GAAAD,GAAAhW,QAAA,SAAA0Q,GAA4D,OAAAA,MAC5Dxe,EAAAY,QAAAkjB,IAAA,IACAvU,EAAAzD,OAAAgY,GAAAvd,EAAA/H,IAEA+Q,EAAA8G,SACAvE,IAAA,IAtjDAvC,EAAAnN,QAwlDA,SAAAJ,EAAA8R,EAAA/G,GAGA,QAFA,IAAA+G,IAA2CA,GAAA,QAC3C,IAAA/G,IAAoCA,EAAAwC,EAAAzD,OAAA7K,YACpC,IAAAe,oBAAAyE,OAAA,IAAAzE,EAAAnC,OACA,OAAA0P,EAAA4N,MAAArJ,GACAkQ,GAAAhiB,EAAA+K,GACAwC,EAAAqT,cAAArT,EAAAkB,cAAA5Q,OAAA,EACA0P,EAAA+C,sBAAA/C,EAAAkB,cAAAlB,EAAAkB,cAAA5Q,OAAA,GACA0P,EAAA8G,SACAT,IACAjD,IACA,IAAApD,EAAAkB,cAAA5Q,QACA0P,EAAA4N,OAAA,GAEArL,GAAAgC,GACAA,GACAC,GAAA,aAvmDAxE,EAAA0U,OAwvDA,SAAA9c,GACA,QAAAoI,EAAAgN,OACA,OAAAhN,EAAA2N,QACA3N,EAAA8F,KAAAlO,IA5NA,IAAA4c,GAAA,CACAjhB,OAAA,CAAA6c,GAAA3D,GACA3X,WAAA,CAAA6S,EAAAvH,EAAAgI,GACAvF,QAAA,CAAAwD,GACAnD,QAAA,CAAAmD,IAoBA,SAAAoO,GAAAE,EAAAnX,GACA,IAAAoX,EAAA,GACA,GAAAD,aAAAzd,MACA0d,EAAAD,EAAA7X,IAAA,SAAAxO,GAAoD,OAAA0R,EAAArC,UAAArP,EAAAkP,UACpD,GAAAmX,aAAAjiB,MAAA,iBAAAiiB,EACAC,EAAA,CAAA5U,EAAArC,UAAAgX,EAAAnX,SACA,oBAAAmX,EACA,OAAA3U,EAAAzD,OAAApN,MACA,aACA,WACAylB,EAAA,CAAA5U,EAAArC,UAAAgX,EAAAnX,IACA,MACA,eACAoX,EAAAD,EACA9X,MAAAmD,EAAAzD,OAAA9K,aACAqL,IAAA,SAAArK,GAAkD,OAAAuN,EAAArC,UAAAlL,EAAA+K,KAClD,MACA,YACAoX,EAAAD,EACA9X,MAAAmD,EAAAvD,KAAA7G,gBACAkH,IAAA,SAAArK,GAAkD,OAAAuN,EAAArC,UAAAlL,EAAA+K,UAOlDwC,EAAAzD,OAAApK,aAAA,IAAAsM,MAAA,0BAAA8R,KAAAE,UAAAkE,KACA3U,EAAAkB,cAAA0T,EAAA5F,OAAA,SAAA1gB,GAA4D,OAAAA,aAAAoE,MAAA0W,GAAA9a,GAAA,KAC5D,UAAA0R,EAAAzD,OAAApN,MACA6Q,EAAAkB,cAAAgS,KAAA,SAAAC,EAAAC,GAAyD,OAAAD,EAAAxgB,UAAAygB,EAAAzgB,YAoBzD,SAAAkiB,GAAA9X,GACA,OAAAA,EACA3G,QACA0G,IAAA,SAAAgY,GACA,uBAAAA,GACA,iBAAAA,GACAA,aAAApiB,KACAsN,EAAArC,UAAAmX,OAAAngB,GAAA,GAEAmgB,GACA,iBAAAA,GACAA,EAAA3G,MACA2G,EAAA1G,GACA,CACAD,KAAAnO,EAAArC,UAAAmX,EAAA3G,UAAAxZ,GACAyZ,GAAApO,EAAArC,UAAAmX,EAAA1G,QAAAzZ,IAEAmgB,IAEA9F,OAAA,SAAAC,GAAsC,OAAAA,IAiItC,SAAAzK,GAAAZ,EAAAmR,GAEA,QAAApgB,IAAAqL,EAAAzD,OAAA,CAEA,IAAAyY,EAAAhV,EAAAzD,OAAAqH,GACA,QAAAjP,IAAAqgB,KAAA1kB,OAAA,EACA,QAAAtC,EAAA,EAA+BgnB,EAAAhnB,MAAAgnB,EAAA1kB,OAA8BtC,IAC7DgnB,EAAAhnB,GAAAgS,EAAAkB,cAAAlB,EAAAsB,MAAArS,MAAA+Q,EAAA+U,GAEA,aAAAnR,IACA5D,EAAAsB,MAAA4F,cAAAD,GAAA,WAEAjH,EAAAsB,MAAA4F,cAAAD,GAAA,YAGA,SAAAA,GAAA1Y,GACA,IAAAqJ,EAAAC,SAAAoP,YAAA,SAEA,OADArP,EAAAqd,UAAA1mB,GAAA,MACAqJ,EAEA,SAAA4R,GAAA/W,GACA,QAAAzE,EAAA,EAA2BA,EAAAgS,EAAAkB,cAAA5Q,OAA+BtC,IAC1D,OAAA0Q,EAAAsB,EAAAkB,cAAAlT,GAAAyE,GACA,SAAAzE,EAEA,SAQA,SAAAga,KACAhI,EAAAzD,OAAA7I,YAAAsM,EAAA0D,WAAA1D,EAAA+F,WAEA/F,EAAAsH,aAAA/I,QAAA,SAAAgO,EAAAve,GACA,IAAAM,EAAA,IAAAoE,KAAAsN,EAAAyG,YAAAzG,EAAA2G,aAAA,GACArY,EAAAgL,SAAA0G,EAAA2G,aAAA3Y,GACAgS,EAAAzD,OAAAzH,WAAA,EACAkL,EAAAuH,cAAAvZ,GAAA8J,YACAiB,EAAAzK,EAAAyN,WAAAiE,EAAAzD,OAAA1H,sBAAAmL,EAAAvD,MAAA,IAGAuD,EAAA8L,wBAAA7c,MAAAX,EAAAyN,WAAA8H,WAEA0I,EAAAtd,MAAAX,EAAA2E,cAAA4Q,aAEA7D,EAAA6M,yBACAlY,IAAAqL,EAAAzD,OAAAsG,UACA7C,EAAAyG,cAAAzG,EAAAzD,OAAAsG,QAAA5P,cACA+M,EAAA2G,cAAA3G,EAAAzD,OAAAsG,QAAA9G,WACAiE,EAAAyG,YAAAzG,EAAAzD,OAAAsG,QAAA5P,eACA+M,EAAA8M,yBACAnY,IAAAqL,EAAAzD,OAAA2G,UACAlD,EAAAyG,cAAAzG,EAAAzD,OAAA2G,QAAAjQ,cACA+M,EAAA2G,aAAA,EAAA3G,EAAAzD,OAAA2G,QAAAnH,WACAiE,EAAAyG,YAAAzG,EAAAzD,OAAA2G,QAAAjQ,gBAEA,SAAAiiB,GAAA1X,GACA,OAAAwC,EAAAkB,cACApE,IAAA,SAAAqY,GAAsC,OAAAnV,EAAApD,WAAAuY,EAAA3X,KACtCwR,OAAA,SAAA1gB,EAAAN,EAAA+O,GACA,gBAAAiD,EAAAzD,OAAApN,MACA6Q,EAAAzD,OAAArK,YACA6K,EAAA1L,QAAA/C,KAAAN,IAEAgP,KAAA,UAAAgD,EAAAzD,OAAApN,KACA6Q,EAAAzD,OAAA9K,YACAuO,EAAAvD,KAAA7G,gBAKA,SAAA2M,GAAAgC,QACA,IAAAA,IAA2CA,GAAA,QAC3C5P,IAAAqL,EAAA4E,aAAA5E,EAAAiF,kBACAjF,EAAA4E,YAAA3V,WACA0F,IAAAqL,EAAA+C,sBACA/C,EAAApD,WAAAoD,EAAA+C,sBAAA/C,EAAAiF,iBACA,IAEAjF,EAAAsB,MAAArS,MAAAimB,GAAAlV,EAAAzD,OAAA7K,iBACAiD,IAAAqL,EAAAjP,WACAiP,EAAAjP,SAAA9B,MAAAimB,GAAAlV,EAAAzD,OAAAzL,aAEA,IAAAyT,GACAC,GAAA,iBAEA,SAAAwB,GAAApO,GACA,IAAAwd,EAAApV,EAAAwH,aAAAT,SAAAnP,EAAAyH,QACAgW,EAAArV,EAAA0H,aAAAX,SAAAnP,EAAAyH,QACA+V,GAAAC,EACAtK,EAAAqK,GAAA,KAEApV,EAAAsH,aAAAjW,QAAAuG,EAAAyH,SAAA,EACAzH,EAAAyH,OAAA+G,SAEAxO,EAAAyH,OAAA/H,UAAAyP,SAAA,WACA/G,EAAA8D,WAAA9D,EAAAyG,YAAA,GAEA7O,EAAAyH,OAAA/H,UAAAyP,SAAA,cACA/G,EAAA8D,WAAA9D,EAAAyG,YAAA,GA0CA,OAj4DA,WACAzG,EAAAF,QAAAE,EAAAsB,MAAAxB,EACAE,EAAAgN,QAAA,EAkwCA,WACA,IAAAsI,EAAA,CACA,OACA,cACA,aACA,aACA,YACA,aACA,aACA,WACA,wBACA,SACA,SACA,gBACA,iBAEAhF,EAAAngB,EAAA,GAAwC4P,EAAAwQ,KAAAC,MAAAD,KAAAE,UAAA3Q,EAAA4Q,SAAA,MACxC9U,EAAA,GACAoE,EAAAzD,OAAAoB,UAAA2S,EAAA3S,UACAqC,EAAAzD,OAAAK,WAAA0T,EAAA1T,WACAlO,OAAAC,eAAAqR,EAAAzD,OAAA,UACA1N,IAAA,WAAkC,OAAAmR,EAAAzD,OAAA3L,SAClCiX,IAAA,SAAA+M,GACA5U,EAAAzD,OAAA3L,QAAAikB,GAAAD,MAGAlmB,OAAAC,eAAAqR,EAAAzD,OAAA,WACA1N,IAAA,WAAkC,OAAAmR,EAAAzD,OAAA5L,UAClCkX,IAAA,SAAA+M,GACA5U,EAAAzD,OAAA5L,SAAAkkB,GAAAD,MAGA,IAAAW,EAAA,SAAAjF,EAAAnhB,KACA,IAAAmhB,EAAA5e,aAAA4e,EAAApe,YAAAqjB,GAAA,CACA,IAAAC,EAAAvV,EAAAC,cAAAxO,YAAAhB,EAAAgB,WACAkK,EAAAlK,WACA4e,EAAA5c,YAAA6hB,EACA,OAAAjF,EAAAre,cAAA,SACAujB,EAAA,QAAAlF,EAAAre,cAAA,SAEA,GAAAqe,EAAAvf,WACAuf,EAAApe,YAAAqjB,KACAjF,EAAAxf,UAAA,CACA,IAAA2kB,EAAAxV,EAAAC,cAAApP,WAAAJ,EAAAI,UACA8K,EAAA9K,UACAwf,EAAA5c,YAAA6hB,EACA,OAAAjF,EAAAre,cAAA,aACAwjB,EAAA,QAAAnF,EAAAre,cAAA,cAEAqe,EAAAtf,gBACAgP,EAAAzD,OAAAvL,cACAgP,EAAAsB,MAAAjK,UAAA,IAAA2I,EAAAzD,OAAAvL,eAEAtC,OAAAC,eAAAqR,EAAAzD,OAAA,WACA1N,IAAA,WAAkC,OAAAmR,EAAAzD,OAAAmZ,UAClC7N,IAAAoI,GAAA,SAEAvhB,OAAAC,eAAAqR,EAAAzD,OAAA,WACA1N,IAAA,WAAkC,OAAAmR,EAAAzD,OAAAoZ,UAClC9N,IAAAoI,GAAA,SAEA,IAAA2F,EAAA,SAAAld,GAAoD,gBAAA4F,GACpD0B,EAAAzD,OAAA,QAAA7D,EAAA,uBAAAsH,EAAArC,UAAAW,EAAA,SAEA5P,OAAAC,eAAAqR,EAAAzD,OAAA,WACA1N,IAAA,WAAkC,OAAAmR,EAAAzD,OAAAsZ,UAClChO,IAAA+N,EAAA,SAEAlnB,OAAAC,eAAAqR,EAAAzD,OAAA,WACA1N,IAAA,WAAkC,OAAAmR,EAAAzD,OAAAuZ,UAClCjO,IAAA+N,EAAA,SAEA,SAAAtF,EAAAnhB,OACA6Q,EAAAzD,OAAA7I,YAAA,EACAsM,EAAAzD,OAAArK,YAAA,GAEAxD,OAAA0B,OAAA4P,EAAAzD,OAAAX,EAAA0U,GACA,QAAAtiB,EAAA,EAA2BA,EAAAsnB,EAAAhlB,OAAqBtC,IAChDgS,EAAAzD,OAAA+Y,EAAAtnB,KACA,IAAAgS,EAAAzD,OAAA+Y,EAAAtnB,KACA,SAAAgS,EAAAzD,OAAA+Y,EAAAtnB,IACAyC,EAAAue,OAAA,SAAA+G,GAA0C,YAAAphB,IAAAqL,EAAAzD,OAAAwZ,KAA0CxX,QAAA,SAAAwX,GACpF/V,EAAAzD,OAAAwZ,GAAA/e,EAAAgJ,EAAAzD,OAAAwZ,IAAA,IAAAjZ,IAAAqD,KAEAH,EAAA0D,UACA1D,EAAAzD,OAAAxK,gBACAiO,EAAAzD,OAAAjJ,QACA,WAAA0M,EAAAzD,OAAApN,OACA6Q,EAAAzD,OAAAzK,QAAAxB,SACA0P,EAAAzD,OAAAvK,OAAA1B,SACA0P,EAAAzD,OAAAtH,aACA,iEAAA+E,KAAA7I,UAAAC,WACA,QAAApD,EAAA,EAA2BA,EAAAgS,EAAAzD,OAAA/H,QAAAlE,OAAgCtC,IAAA,CAC3D,IAAAgoB,EAAAhW,EAAAzD,OAAA/H,QAAAxG,GAAAgS,IAAA,GACA,QAAAzQ,KAAAymB,EACAvlB,EAAAY,QAAA9B,IAAA,EACAyQ,EAAAzD,OAAAhN,GAAAyH,EAAAgf,EAAAzmB,IACAuN,IAAAqD,GACAwM,OAAA3M,EAAAzD,OAAAhN,SAEA,IAAA+gB,EAAA/gB,KACAyQ,EAAAzD,OAAAhN,GAAAymB,EAAAzmB,IAGAiV,GAAA,iBAz2CAyR,GACA7F,KAkqDApQ,EAAAsB,MAAAtB,EAAAzD,OAAArH,KACA4K,EAAAoW,cAAA,gBACApW,EAEAE,EAAAsB,OAKAtB,EAAAsB,MAAA6S,MAAAnU,EAAAsB,MAAA5I,KACAsH,EAAAsB,MAAA5I,KAAA,OACAsH,EAAAsB,MAAAhK,UAAAC,IAAA,mBACAyI,EAAAqC,OAAArC,EAAAsB,MACAtB,EAAAzD,OAAAxL,WAEAiP,EAAAjP,SAAA0G,EAAAuI,EAAAsB,MAAA6U,SAAAnW,EAAAzD,OAAAvL,eACAgP,EAAAqC,OAAArC,EAAAjP,SACAiP,EAAAjP,SAAAiU,YAAAhF,EAAAsB,MAAA0D,YACAhF,EAAAjP,SAAA+T,SAAA9E,EAAAsB,MAAAwD,SACA9E,EAAAjP,SAAAgU,SAAA/E,EAAAsB,MAAAyD,SACA/E,EAAAjP,SAAA8T,SAAA7E,EAAAsB,MAAAuD,SACA7E,EAAAjP,SAAA2H,KAAA,OACAsH,EAAAsB,MAAA1I,aAAA,kBACAoH,EAAAzD,OAAAxH,QAAAiL,EAAAsB,MAAA6D,YACAnF,EAAAsB,MAAA6D,WAAAC,aAAApF,EAAAjP,SAAAiP,EAAAsB,MAAA+D,cAEArF,EAAAzD,OAAA1L,YACAmP,EAAAqC,OAAAzJ,aAAA,uBACAoH,EAAA4Q,iBAAA5Q,EAAAzD,OAAA7H,iBAAAsL,EAAAqC,QAvBArC,EAAAzD,OAAApK,aAAA,IAAAsM,MAAA,oCAzDA,WACAuB,EAAAkB,cAAA,GACAlB,EAAArM,IAAAqM,EAAArC,UAAAqC,EAAAzD,OAAA5I,MAAA,IAAAjB,KAEA,IAAA0jB,EAAApW,EAAAzD,OAAA8Z,cACA,UAAArW,EAAAsB,MAAA6U,UACA,aAAAnW,EAAAsB,MAAA6U,WACAnW,EAAAsB,MAAA0D,aACAhF,EAAAsB,MAAArS,QAAA+Q,EAAAsB,MAAA0D,YAEAhF,EAAAsB,MAAArS,MADA,MAEAmnB,GACA3B,GAAA2B,EAAApW,EAAAzD,OAAA7K,YACAsO,EAAA8T,aACA9T,EAAAkB,cAAA5Q,OAAA,EACA0P,EAAAkB,cAAA,GACAlB,EAAAzD,OAAAsG,SACA7C,EAAAzD,OAAAsG,QAAAlQ,UAAAqN,EAAArM,IAAAhB,UACAqN,EAAAzD,OAAAsG,QACA7C,EAAAzD,OAAA2G,SACAlD,EAAAzD,OAAA2G,QAAAvQ,UAAAqN,EAAArM,IAAAhB,UACAqN,EAAAzD,OAAA2G,QACAlD,EAAArM,IACAqM,EAAAyG,YAAAzG,EAAA8T,aAAA7gB,cACA+M,EAAA2G,aAAA3G,EAAA8T,aAAA/X,WACAiE,EAAAkB,cAAA5Q,OAAA,IACA0P,EAAA+C,sBAAA/C,EAAAkB,cAAA,SACAvM,IAAAqL,EAAAzD,OAAAqG,UACA5C,EAAAzD,OAAAqG,QAAA5C,EAAArC,UAAAqC,EAAAzD,OAAAqG,QAAA,aACAjO,IAAAqL,EAAAzD,OAAA0G,UACAjD,EAAAzD,OAAA0G,QAAAjD,EAAArC,UAAAqC,EAAAzD,OAAA0G,QAAA,QACAjD,EAAA8C,iBACA9C,EAAAzD,OAAAsG,UACA7C,EAAAzD,OAAAsG,QAAA/I,WAAA,GACAkG,EAAAzD,OAAAsG,QAAA5G,aAAA,GACA+D,EAAAzD,OAAAsG,QAAA7G,aAAA,GACAgE,EAAAmD,iBACAnD,EAAAzD,OAAA2G,UACAlD,EAAAzD,OAAA2G,QAAApJ,WAAA,GACAkG,EAAAzD,OAAA2G,QAAAjH,aAAA,GACA+D,EAAAzD,OAAA2G,QAAAlH,aAAA,GACAtN,OAAAC,eAAAqR,EAAA,iBACAnR,IAAA,WAAkC,OAAAmR,EAAAsW,gBAClCzO,IAAA,SAAAvR,GACA0J,EAAAsW,eAAAhgB,EACA0J,EAAAM,mBACAnJ,EAAA6I,EAAAM,kBAAA,gBAAAhK,GACA0J,EAAAgN,QAAAgD,QA3pDAuG,GAhBAvW,EAAAoL,MAAA,CACAC,eAAA,SAAA/P,EAAAkb,GAGA,YAFA,IAAAlb,IAA2CA,EAAA0E,EAAA2G,mBAC3C,IAAA6P,IAAwCA,EAAAxW,EAAAyG,aACxC,IAAAnL,IAAAkb,EAAA,MAAAA,EAAA,QAAAA,EAAA,QACA,GACAxW,EAAAvD,KAAAjH,YAAA8F,KAYA0E,EAAA0D,UACAyD,IACA1C,KACAzE,EAAAkB,cAAA5Q,QAAA0P,EAAAzD,OAAA7I,cACAsM,EAAAzD,OAAArK,YACAkR,EAAApD,EAAAzD,OAAA7I,WACAsM,EAAA+C,uBAAA/C,EAAAzD,OAAAsG,aACAlO,GAEA4N,IAAA,IAEAnC,IACAJ,EAAAqT,cACArT,EAAAkB,cAAA5Q,OAAA,GAAA0P,EAAAzD,OAAA7I,WACA,IAAA+iB,EAAA,iCAAAzc,KAAA7I,UAAAC,YASA4O,EAAA0D,UAAA+S,GACAzG,KAEAxL,GAAA,WA81DAkS,GACA1W,EAGA,SAAA2W,EAAAC,EAAAra,GAMA,IAJA,IAAAsa,EAAA3f,MAAAtH,UAAAwG,MACAjI,KAAAyoB,GACA5H,OAAA,SAAAC,GAAkC,OAAAA,aAAA6H,cAClCC,EAAA,GACA/oB,EAAA,EAAuBA,EAAA6oB,EAAAvmB,OAAkBtC,IAAA,CACzC,IAAAgK,EAAA6e,EAAA7oB,GACA,IACA,UAAAgK,EAAAuJ,aAAA,gBACA,cACA5M,IAAAqD,EAAA2e,aACA3e,EAAA2e,WAAA3C,UACAhc,EAAA2e,gBAAAhiB,GAEAqD,EAAA2e,WAAA9W,EAAA7H,EAAAuE,GAAA,IACAwa,EAAA3S,KAAApM,EAAA2e,YAEA,MAAA/e,GACAvF,QAAA2kB,MAAApf,IAGA,WAAAmf,EAAAzmB,OAAAymB,EAAA,GAAAA,EAGA,oBAAAD,aACA,oBAAAG,gBACA,oBAAAC,WAEAD,eAAArnB,UAAAqQ,UAAAiX,SAAAtnB,UAAAqQ,UAAA,SAAA1D,GACA,OAAAoa,EAAAnmB,KAAA+L,IAEAua,YAAAlnB,UAAAqQ,UAAA,SAAA1D,GACA,OAAAoa,EAAA,CAAAnmB,MAAA+L,KAIA,IAAA0D,EAAA,SAAAkX,EAAA5a,GACA,uBAAA4a,EACAR,EAAAzlB,OAAA2G,SAAA6M,iBAAAyS,GAAA5a,GAEA4a,aAAAC,KACAT,EAAA,CAAAQ,GAAA5a,GAGAoa,EAAAQ,EAAA5a,IAgCA,OA5BA0D,EAAAC,cAAA,GACAD,EAAAoQ,MAAA,CACAgH,GAAAlnB,EAAA,GAAuBgF,GACvBmiB,QAAAnnB,EAAA,GAA8BgF,IAE9B8K,EAAAsX,SAAA,SAAA9a,GACAwD,EAAAoQ,MAAA,QAAAlgB,EAAA,GAAgD8P,EAAAoQ,MAAA,QAAA5T,IAEhDwD,EAAAuX,YAAA,SAAAjb,GACA0D,EAAAC,cAAA/P,EAAA,GAA6C8P,EAAAC,cAAA3D,IAE7C0D,EAAAtC,UAAAV,EAAA,IACAgD,EAAArD,WAAAR,EAAA,IACA6D,EAAAvB,eAEA,oBAAA+Y,aAAA,IAAAA,OAAApZ,KACAoZ,OAAApZ,GAAA4B,UAAA,SAAA1D,GACA,OAAAoa,EAAAnmB,KAAA+L,KAIA7J,KAAA9C,UAAA8nB,QAAA,SAAA9W,GACA,WAAAlO,KAAAlC,KAAAyC,cAAAzC,KAAAuL,WAAAvL,KAAAsC,WAAA,iBAAA8N,EAAAhG,SAAAgG,EAAA,IAAAA,KAEA,oBAAA1P,SACAA,OAAA+O,aAGAA,EAphFgE0X,kBCFhE5pB,EAAAD,QAAAkC,OAAAC,KAAAC,OAAA,yBCAAnC,EAAAD,QAAAkC,OAAAC,KAAAC,OAAA,wCCAAnC,EAAAD,QAAAkC,OAAAC,KAAAC,OAAA,iCCAAnC,EAAAD,QAAAkC,OAAAC,KAAAC,OAAA,mCCAAnC,EAAAD,QAAAkC,OAAAC,KAAAC,OAAA,+ECAe,SAAA0nB,EAAAC,EAAAC,GACfD,EAAAjoB,UAAAlB,OAAAY,OAAAwoB,EAAAloB,WACAioB,EAAAjoB,UAAAmoB,YAAAF,EACAA,EAAAG,UAAAF,sBCAqBG,0FASjBC,YAAA,WACI,oBAAoB1nB,KAAK2nB,OAAL,IAAkB3nB,KAAKukB,KAAKqD,GAAO,QAV7BC,IAAMC,IAAO,CAC3CC,SAAUD,IAAME,UAAU,YAC1BC,SAAUH,IAAME,UAAU,YAC1BE,QAASJ,IAAME,UAAU,WACzBG,WAAYL,IAAME,UAAU,cAE5B1c,QAASwc,IAAMM,QAAQ,WACvBC,MAAOP,IAAMM,QAAQ,YCPJE,0FAMjBZ,YAAA,WACI,4BAA4B1nB,KAAK2nB,OAAL,IAAkB3nB,KAAKukB,KAAKqD,GAAO,QAP/BC,IAAMC,IAAO,CACjDS,OAAQT,IAAME,UAAU,UAExBQ,KAAMV,IAAMW,OAAO,SACnBJ,MAAOP,IAAMM,QAAQ,YCJJM,0FAQjBhB,YAAA,WACI,oBAAqB1nB,KAAK2oB,SAA1B,YAT8Bd,IAAMC,IAAO,CAC/CU,KAAMV,IAAMW,OAAO,QACnB1E,OAAQ+D,IAAMW,OAAO,UACrBG,KAAMd,IAAMW,OAAO,QAEnBE,OAAQb,IAAME,UAAU,UACxBa,SAAUf,IAAME,UAAU,yJCHTc,kGACjB5C,KAAA,WAWI,GAVA6C,EAAA3pB,UAAM8mB,KAANvoB,KAAAqC,MAEAA,KAAKsL,QAAU,CAAC1N,EAAEorB,KAAK,IAAKprB,EAAEorB,KAAK,KAEnChpB,KAAK+nB,SAAWnqB,EAAEorB,KAAK,IAEvBhpB,KAAKkoB,QAAUtqB,EAAEorB,OAEjBhpB,KAAKmoB,WAAavqB,EAAEorB,MAAK,GAErBhpB,KAAKipB,MAAMT,KAAM,CACjB,IAAMA,EAAOxoB,KAAKipB,MAAMT,KAExBxoB,KAAKsL,QAAUkd,EAAKU,cAAc5d,QAAQgB,IAAI,SAAArO,GAAC,OAAIL,EAAEorB,KAAK/qB,KAC1D+B,KAAK+nB,SAASS,EAAKT,UACnB/nB,KAAKkoB,SAASM,EAAKN,SAAWla,MAAMwa,EAAKN,QAAQ/lB,WAAa,KAAOqmB,EAAKN,SAC1EloB,KAAKmoB,WAAWK,EAAKL,gBAI7B/P,MAAA,WACI,OAAO+Q,IAAIC,WAAWC,MAAM,sCAGhCxiB,UAAA,WACI,MAAO,sCAGXyiB,iBAAA,SAAiB7V,EAAI8V,GAAe,IAAAC,EAAAxpB,KAC5BupB,GAEJ9Z,IAAUgE,EAAI,CACV/R,YAAY,EACZ2Q,QAASrS,KAAKkoB,WAAa,QAC3BhnB,WAAY,YACZ2kB,YAAa7lB,KAAKkoB,UAClBxjB,MAAM,EAENtB,SAAU,SAAAghB,GAAK,OAAIoF,EAAKtB,QAAQ9D,EAAM,UAI9Cjd,QAAA,WACI,MAAO,CACHvJ,EAAA,OAAKiJ,UAAU,cACXjJ,EAAA,OAAKiJ,UAAU,4BACXjJ,EAAA,OAAKiJ,UAAU,cACXjJ,EAAA,SAAOiJ,UAAU,SAASsiB,IAAIC,WAAWC,MAAM,+CAE/CzrB,EAAA,SAAOsK,KAAK,OAAOnK,KAAK,WAAW8I,UAAU,cAAc4iB,KAAMzpB,KAAK+nB,YAG1EnqB,EAAA,OAAKiJ,UAAU,iCACXjJ,EAAA,SAAOiJ,UAAU,kCACbjJ,EAAA,YAAOurB,IAAIC,WAAWC,MAAM,wCAE3BK,IAAOC,UAAU,CACd9iB,UAAW,iCACX+iB,KAAM,cACNC,QAAS7pB,KAAK8pB,UAAU9qB,KAAKgB,SAIpCA,KAAK+pB,kBAGVnsB,EAAA,OAAKiJ,UAAU,cACXjJ,EAAA,SAAOiJ,UAAU,SAASsiB,IAAIC,WAAWC,MAAM,2CAE/CzrB,EAAA,OAAKiJ,UAAU,kBAAkBkF,OAAQ/L,KAAKspB,iBAAiBtqB,KAAKgB,OAChEpC,EAAA,SAAOmS,MAAM,6BAA6BlJ,UAAU,cAAcmjB,cAAA,IACjEN,IAAOC,UAAU,CACd9iB,UAAW,2BACX+iB,KAAM,eACNK,cAAc,MAK1BrsB,EAAA,OAAKiJ,UAAU,cACVqjB,IAAOP,UAAU,CACdQ,MAAOnqB,KAAKmoB,eAAgB,EAC5BzO,SAAUyP,IAAIC,WAAWC,MAAM,2CAC/Be,SAAUpqB,KAAKmoB,cAIvBvqB,EAAA,OAAKiJ,UAAU,cACV6iB,IAAOC,UAAU,CACdzhB,KAAM,SACNrB,UAAW,gDACX6S,SAAUyP,IAAIC,WAAWC,MAAM,gCAC/BgB,QAASrqB,KAAKqqB,iBAQtCN,eAAA,WAAiB,IAAAO,EAAAtqB,KACb,OAAO9B,OAAOgR,KAAKlP,KAAKsL,SAASgB,IAAI,SAACmH,EAAIjW,GAAL,OACjCI,EAAA,OAAKiJ,UAAmC,KAAxByjB,EAAKhf,QAAQ9N,EAAI,GAAY,kBAAoB,cAC7DI,EAAA,YAAUiJ,UAAU,qBAChBjJ,EAAA,SACIiJ,UAAU,cACVqB,KAAK,OACLnK,KAAM,UAAYP,EAAI,GACtBisB,KAAMa,EAAKhf,QAAQ9N,GACnBgX,YAAa2U,IAAIC,WAAWC,MAAM,4CAA8C,MAAQ7rB,EAAI,MAGnGA,GAAK,EACAksB,IAAOC,UAAU,CACbzhB,KAAM,SACNrB,UAAW,2CACX+iB,KAAM,eACNC,QAASrsB,GAAK,EAAI8sB,EAAKC,aAAavrB,KAAKsrB,EAAM9sB,GAAK,KAExD,SAKlBssB,UAAA,WACI,IAAMU,EAAUrB,IAAI5E,KAAK,yBACnB7V,EAAO8b,GAAWpgB,SAASogB,IAAa,GAE1CxqB,KAAKsL,QAAQxL,OAAS4O,EACtB1O,KAAKsL,QAAQsI,KAAKhW,EAAEorB,KAAK,KAEzByB,MAAMtB,IAAIC,WAAWC,MAAM,iCAInCkB,aAAA,SAAaxG,GACT/jB,KAAKsL,QAAQ4Q,OAAO6H,EAAQ,MAGhC2G,SAAA,SAAStjB,GACLA,EAAEwJ,iBAEF,IAAM4X,EAAO,CACTT,SAAU/nB,KAAK+nB,WACfG,QAASloB,KAAKkoB,UACdC,WAAYnoB,KAAKmoB,cAEf7c,EAAUtL,KAAKsL,QAAQgB,IAAI,SAAAqW,GAAC,OAAIA,MAAKnE,OAAOmM,SAE1B,KAApB3qB,KAAK+nB,WAMLzc,EAAQxL,OAAS,EACjB2qB,MAAMtB,IAAIC,WAAWC,MAAM,+BAK/Bb,EAAKU,cAAgB,CAAE5d,WAEvBtL,KAAKipB,MAAMyB,SAASlC,GAEpBW,IAAIyB,MAAMzN,SAfNsN,MAAMtB,IAAIC,WAAWC,MAAM,+CAxJMwB,qBCN9B,SAAAC,IAef,OAdAA,EAAA5sB,OAAA0B,QAAA,SAAAiP,GACA,QAAArR,EAAA,EAAmBA,EAAAqC,UAAAC,OAAsBtC,IAAA,CACzC,IAAAyR,EAAApP,UAAArC,GAEA,QAAAuB,KAAAkQ,EACA/Q,OAAAkB,UAAAC,eAAA1B,KAAAsR,EAAAlQ,KACA8P,EAAA9P,GAAAkQ,EAAAlQ,IAKA,OAAA8P,IAGA9O,MAAAC,KAAAH,mFCXqBkrB,kGACjBlkB,UAAA,WACI,MAAO,kBAGXuR,MAAA,WACI,OAAO+Q,IAAIC,WAAWC,MAAM,wCAGhCliB,QAAA,WAAU,IAAAqiB,EAAAxpB,KACN,OACIpC,EAAA,OAAKiJ,UAAU,cACXjJ,EAAA,MAAIiJ,UAAU,mBACT7G,KAAKipB,MAAMT,KAAKld,UAAUgB,IAAI,SAAA0e,GAC3B,IAAM3C,EAAQmB,EAAKP,MAAMT,KACpBH,QACA7J,OAAO,SAAAyM,GAAC,OAAID,EAAIpD,OAASqD,EAAElH,SAAS6D,OACpCtb,IAAI,SAAA2e,GAAC,OAAIA,EAAErC,SAEhB,OACIhrB,EAAA,WACIA,EAAA,UAAKotB,EAAIzC,SAAW,KAEnBF,EAAMvoB,OACHuoB,EAAM/b,IAAI,SAAAvB,GACN,IAAMmgB,EAAQngB,GAAK,CAAEogB,KAAMhC,IAAIiC,MAAMxC,KAAK7d,GAAIgB,OAAQnO,EAAEwtB,OAExD,OACIxtB,EAAA,UACIA,EAAA,IAAOstB,EACFG,IAAOtgB,GADZ,IACiBugB,IAASvgB,OAMtCnN,EAAA,MAAImS,MAAM,eAAeoZ,IAAIC,WAAWC,MAAM,6CApCrCwB,KCExBU,kGACjBrF,KAAA,WACIlmB,KAAKwoB,KAAOxoB,KAAKipB,MAAMT,KAEvBxoB,KAAKwrB,KAAO5tB,EAAEorB,OACdhpB,KAAKyrB,MAAQ7tB,EAAEorB,MAAK,GAEpBhpB,KAAK0rB,gBAGTC,KAAA,WAAO,IAAAnC,EAAAxpB,KACH,OACIpC,EAAA,WACIA,EAAA,UAAKoC,KAAKwoB,KAAKT,YAEd/nB,KAAKsL,QAAQgB,IAAI,SAAA0e,GACd,IAAMY,EAAWpC,EAAKiC,QAChBA,EACFjC,EAAKgC,QACLhC,EAAKgC,OACAzH,SACA6D,OAASoD,EAAIpD,KAChBS,EAAQmB,EAAKnB,MAAM7J,OAAO,SAAAyM,GAAC,OAAIA,EAAElH,SAAS6D,OAASoD,EAAIpD,OAAM9nB,OAC7D+rB,EAAUnpB,KAAKC,MAAO0lB,EAAQmB,EAAKhB,KAAKH,QAAQvoB,OAAU,KAE1DorB,EAAQO,EACR,CACIrT,MACIwT,GAAYzC,IAAIC,WAAW0C,YAAY,gCAAiCzD,EAAO,CAAE0D,MAAOrgB,OAAO2c,KAAU7b,KAAK,IAClHT,OAAQ,SAASuD,GACb0c,EAAE1c,GAAS2c,QAAQ,CAAEC,UAAW,YAGxC,GAEAC,EAAaV,EACb,CACIW,SAAS,GAEb,GAEN,OACIxuB,EAAA,OAAKiJ,UAAS,eAAgB+kB,GAAY,cACtChuB,EAAA,MAAAktB,EAAA,GAASI,EAAT,CAAgBrkB,UAAU,UAAUwlB,gBAAeZ,MAC3CjC,EAAKhB,KAAKP,YAAckB,IAAImD,QAAQ1D,MAAQO,IAAImD,QAAQ1D,KAAK2D,iBAAoBpD,IAAImD,QAAQ1D,OAC7FhrB,EAAA,SAAOiJ,UAAU,YACbjJ,EAAA,QAAAktB,EAAA,CAAOV,SAAUZ,EAAKgD,WAAWxtB,KAAKwqB,EAAMwB,GAAM9iB,KAAK,YAAeikB,IACtEvuB,EAAA,QAAMiJ,UAAU,eAIxBjJ,EAAA,OAAKmS,MAAO6b,GAAY,YAAcC,EAAU,IAAKhlB,UAAU,sBAC/DjJ,EAAA,SAAOmS,MAAQyZ,EAAKhB,KAAKP,WAAmC,GAAtB,oBAA0BphB,UAAU,cACtEjJ,EAAA,YAAOotB,EAAIzC,WAEdqD,GACGhuB,EAAA,aACIA,EAAA,QAAMiJ,UAAuB,MAAZglB,EAAkB,kCAAoC,eAAgBA,EAAvF,UAQxBjuB,EAAA,OAAKmS,MAAM,iBAEV/P,KAAKwoB,KAAKL,aACLuB,IAAOC,UAAU,CACb9iB,UAAW,0CACX6S,SAAUyP,IAAIC,WAAWC,MAAM,+BAC/BQ,QAAS,kBAAML,EAAKiD,gBAExB,GAELtD,IAAImD,QAAQ1D,OAASO,IAAImD,QAAQ1D,KAAK2D,eACnC3uB,EAAA,OAAKiJ,UAAU,yBAAyBsiB,IAAIC,WAAWC,MAAM,kCAC7DrpB,KAAKwoB,KAAKP,WACVrqB,EAAA,OAAKiJ,UAAU,yBAAyBsiB,IAAIC,WAAWC,MAAM,+BACrC,OAAxBrpB,KAAKwoB,KAAKN,UACVtqB,EAAA,OAAKiJ,UAAU,yBACXjJ,EAAA,KAAG8uB,MAAM,uBACRvD,IAAIC,WAAWC,MAAM,iCAAkC,CAAEsD,KAAMC,OAAO5sB,KAAKwoB,KAAKN,WAAW2E,aAGhG,OAMhBnB,WAAA,WACI1rB,KAAKwoB,KAAOW,IAAI2D,MAAMC,QAAQ,QAAS/sB,KAAKwoB,KAAKZ,MACjD5nB,KAAKsL,QAAUtL,KAAKwoB,KAAKld,WAAa,GACtCtL,KAAKqoB,MAAQroB,KAAKwoB,KAAKH,SAAW,GAElCroB,KAAKwrB,KAAKrC,IAAImD,QAAQ1D,KAAO5oB,KAAKqoB,MAAM2E,KAAK,SAAA/B,GAAC,OAAIA,EAAErC,QAAUqC,EAAErC,OAAOhB,OAASuB,IAAImD,QAAQ1D,KAAKhB,OAAQ,MAEzG5nB,KAAKyrB,QAAQzrB,KAAKwrB,WAGtByB,QAAA,SAAQnZ,EAAK0S,GACT1S,EAAIjF,OAAOud,SAAU,EAErBjD,IAAI+D,OAAOC,KAAK3G,EAAMiE,UAG1B+B,WAAA,SAAWzI,EAAQjQ,GAAK,IAAAwW,EAAAtqB,KACpB,IAAKmpB,IAAImD,QAAQ1D,KAGb,OAFAO,IAAIyB,MAAMuC,KAAK,IAAIC,UACnBtZ,EAAIjF,OAAOud,SAAU,GAKrBpsB,KAAKwrB,QACLzH,EAAO6D,OACH5nB,KAAKwrB,OACAzH,SACA6D,OAET7D,EAAS,MAER/jB,KAAKwrB,SACNxrB,KAAKwrB,KAAKrC,IAAI2D,MAAMO,aAAa,eAEjCrtB,KAAKwrB,OAAO7C,OAAO3oB,KAAKwoB,KAAKZ,OAGjChqB,EAAE0vB,mBAEFnE,IAAIoE,QAAQ,CACRC,OAAQ,QACRC,IAAQtE,IAAIuE,MAAM1F,UAAU,UAAzB,cAAgDhoB,KAAKwoB,KAAKZ,KAA1D,QACHjmB,aAAc3B,KAAKitB,QAAQjuB,KAAKgB,KAAM8T,GACtCyQ,KAAM,CACFA,KAAM,CACFsE,SAAU9E,EAASA,EAAO6D,KAAO,SAG1C+F,KAAK,SAAAC,GACJzE,IAAI2D,MAAMe,YAAYD,GAEjB7J,GAAQoF,IAAI2D,MAAM9lB,OAAOsjB,EAAKkB,QAEnClB,EAAKoB,aAEA3H,IACDnmB,EAAE0Y,OAAOwX,SAAS,OAClBlwB,EAAE0Y,SACF1Y,EAAE0Y,OAAOwX,SAAS,SAGtBlwB,EAAEmwB,sBAIVtB,WAAA,WACItD,IAAIyB,MAAMuC,KACN,IAAIpC,EAAgB,CAChBvC,KAAMxoB,KAAKwoB,YAhKiBwF,sBCFvBC,kGACjB/H,KAAA,WACIlmB,KAAKwoB,KAAOxoB,KAAKipB,MAAMT,KAEvBxoB,KAAKsL,QAAUtL,KAAKwoB,KAAKld,UACzBtL,KAAKkuB,cAAgBluB,KAAKsL,QAAQgB,IAAI,SAAArO,GAAC,OAAIL,EAAEorB,KAAK/qB,EAAEsqB,YACpDvoB,KAAK+nB,SAAWnqB,EAAEorB,KAAKhpB,KAAKwoB,KAAKT,YACjC/nB,KAAKkoB,QAAUtqB,EAAEorB,KAAKhpB,KAAKwoB,KAAKN,WAChCloB,KAAKmoB,WAAavqB,EAAEorB,KAAKhpB,KAAKwoB,KAAKL,iBAGvC/P,MAAA,WACI,OAAO+Q,IAAIC,WAAWC,MAAM,uCAGhCU,eAAA,WAAiB,IAAAP,EAAAxpB,KACb,OAAOA,KAAKsL,QAAQgB,IAAI,SAAC0e,EAAKxtB,GAAN,OACpBI,EAAA,OAAKiJ,UAAU,cACXjJ,EAAA,YAAUiJ,UAAU,qBAChBjJ,EAAA,SACIiJ,UAAU,cACVqB,KAAK,OACLnK,KAAM,UAAYP,EAAI,GACtBisB,KAAMD,EAAK0E,cAAc1wB,GACzBgX,YAAa2U,IAAIC,WAAWC,MAAM,4CAA8C,MAAQ7rB,EAAI,MAInGA,GAAK,EACAksB,IAAOC,UAAU,CACbzhB,KAAM,SACNrB,UAAW,2BACX+iB,KAAM,eACNC,QAASrsB,GAAK,EAAIgsB,EAAKe,aAAavrB,KAAKwqB,EAAMhsB,GAAK,KAExD,SAKlBssB,UAAA,WACI,IAAMU,EAAUrB,IAAI5E,KAAK,yBACnB7V,EAAO8b,GAAWpgB,SAASogB,IAAa,GAE1CxqB,KAAKsL,QAAQxL,OAAS4O,GACtB1O,KAAKsL,QAAQsI,KAAKuV,IAAI2D,MAAMO,aAAa,iBACzCrtB,KAAKkuB,cAActa,KAAKhW,EAAEorB,KAAK,MAE/ByB,MAAMtB,IAAIC,WAAWC,MAAM,iCAInCkB,aAAA,SAAa/sB,GACTwC,KAAKsL,QAAQ4Q,OAAO1e,EAAG,GACvBwC,KAAKkuB,cAAchS,OAAO1e,EAAG,MAGjCktB,SAAA,SAAStjB,GAAG,IAAAkjB,EAAAtqB,KAGR,GAFAoH,EAAEwJ,kBAEE5Q,KAAKqqB,QAAT,CAEArqB,KAAKqqB,SAAU,EAEf,IAAM/e,EAAUtL,KAAKsL,QAAQgB,IAAI,SAACrO,EAAGT,GAKjC,OAJKS,EAAEsmB,KAAK4J,aAAYlwB,EAAEsmB,KAAK4J,WAAa,IAE5ClwB,EAAEsmB,KAAK4J,WAAW5F,OAAS+B,EAAK4D,cAAc1wB,KAEvCS,EAAEsmB,OAGb,OAAOvkB,KAAKwoB,KACP4F,KAAK,CACFrG,SAAU/nB,KAAK+nB,WACfG,QAASloB,KAAKkoB,YAAa,EAC3BC,WAAYnoB,KAAKmoB,aACjB7c,YAEHqiB,KAAK,WACFtmB,SAASgnB,SAASC,WARnB,MAUI,SAAAlnB,GACHkjB,EAAKiE,SACLjE,EAAKkE,QAAQpnB,UApFc0hB,GCC9B2F,EAAa,CACxB3F,kBACAyC,iBACA0C,gBACAlD,mBCLW2D,EAAS,CACpBjH,OACAa,aACAI,YCOFS,IAAIwF,aAAa5nB,IAAI,YAAa,WAC9BoiB,IAAI2D,MAAM4B,OAAOE,MAAQnH,EACzB0B,IAAI2D,MAAM4B,OAAOG,aAAevG,EAChCa,IAAI2D,MAAM4B,OAAOI,WAAapG,EAE9BS,IAAI2D,MAAM4B,OAAOK,YAAY3vB,UAAUopB,KAAOV,IAAMW,OAAO,QAE3DU,IAAI2D,MAAM4B,OAAOM,MAAM5vB,UAAU6vB,aAAenH,IAAME,UAAU,gBAChEmB,IAAI2D,MAAM4B,OAAOM,MAAM5vB,UAAU8vB,cAAgBpH,IAAME,UAAU,iBACjEmB,IAAI2D,MAAM4B,OAAOM,MAAM5vB,UAAU+vB,iBAAmBrH,IAAME,UAAU,oBACpEmB,IAAI2D,MAAM4B,OAAOM,MAAM5vB,UAAUmtB,aAAezE,IAAME,UAAU,gBClBhEoH,iBAAOC,IAAejwB,UAAW,gBAAiB,SAAAkwB,GAC9CA,EAAOC,QAAQ3b,KAAK,UAGxBwb,iBAAOI,IAAWpwB,UAAW,SAAU,SAASqwB,GACxCzvB,KAAKwoB,QACLiH,EAAO1oB,IACH,OACA2oB,IAAM/F,UAAU,CACZzhB,KAAM,OACNynB,MAAOxG,IAAIC,WAAWC,MAAM,iCAC5BO,KAAM,iBAEV,KCZZwF,iBAAOQ,IAAc,qBAAsB,SAASC,EAAOC,GACvD,IACMtH,EADasH,EAAKC,aACAvH,OAClBI,EAAOO,IAAImD,QAAQ1D,KAEnBJ,IAAUI,GAAQA,EAAKqG,gBAAoBa,EAAKlH,QAAUkH,EAAKlH,OAAOuG,oBAAsBW,EAAKlH,OAAOhB,OAASgB,EAAKhB,OAA4B,IAAlBkI,EAAKnqB,WAItI6iB,EAAKP,YACN4H,EAAM9oB,IACF,iBACA2iB,IAAOC,UAAU,CACbC,KAAM,sBACNlQ,SAAUyP,IAAIC,WAAWC,MAAM,mCAC/BQ,QAAS,kBAAMV,IAAIyB,MAAMuC,KAAK,IAAIc,EAAc,CAAEzF,cAK9DqH,EAAM9oB,IACF,mBACA2iB,IAAOC,UAAU,CACbC,KAAM,eACNlQ,SAAUyP,IAAIC,WAAWC,MAAM,qCAC/BQ,QAAS,WACDmG,QAAQ7G,IAAIC,WAAWC,MAAM,+CAC7Bb,EAAI,SAAUmF,KAAK,WACf/vB,EAAE0Y,OAAOwX,SAAS,OAClBlwB,EAAE0Y,SACF1Y,EAAE0Y,OAAOwX,SAAS,iBC/B1CmC,IAAmB7wB,UAAU8wB,QAAU,WAAW,IAAA1G,EAAAxpB,KAC9CmpB,IAAIyB,MAAMuC,KACN,IAAIrE,EAAgB,CAChBN,KAAMxoB,KAAKwoB,KACXkC,SAAU,SAAAlC,GAAI,OAAKgB,EAAKhB,KAAOA,OAM3C4G,iBAAOa,IAAmB7wB,UAAW,cAAe,SAASywB,GACrD1G,IAAImD,QAAQ1D,MAAQO,IAAImD,QAAQ1D,KAAKsG,iBACrCW,EAAM9oB,IACF,QACAnJ,EAAA,KAAGiJ,UAAU,0BAA0BgjB,QAAS7pB,KAAKkwB,QAAQlxB,KAAKgB,OAC9DpC,EAAA,QAAMiJ,UAAS,cAAe7G,KAAKwoB,KAAO,GAAK,SAC1CW,IAAIC,WAAWC,MAAf,wCAA4DrpB,KAAKwoB,KAAO,OAAS,OAAjF,WAGT,KAKZ4G,iBAAOa,IAAmB7wB,UAAW,OAAQ,SAASmlB,GAC9CvkB,KAAKwoB,OACLjE,EAAKiE,KAAOxoB,KAAKwoB,QCxBzB4G,iBAAOe,IAAY/wB,UAAW,UAAW,SAAS+H,GAC9C,IAAM4oB,EAAa/vB,KAAKipB,MAAM6G,KAAKC,aAE/BA,EAAWvH,QAAuC,IAA7BxoB,KAAKipB,MAAM6G,KAAKnqB,UACrCwB,EAAQyM,KACJ2X,EAAe5B,UAAU,CACrBnB,KAAMuH,EAAWvH,YAMjC4G,iBAAOe,IAAY/wB,UAAW,SAAU,SAASqf,EAAG8K,EAAenjB,GAAS,IAAAojB,EAAAxpB,KACpEupB,GAEAJ,IAAIiH,QACJjH,IAAIiH,OAAOzC,KAAK,SAAA0C,GACZA,EAASC,KAAKtxB,KAAK,cAAe,SAAAulB,GAC9B,IAAIgM,EAASnmB,SAASma,EAAI,SAE1B,IAAI4E,IAAImD,QAAQ1D,MAAQ2H,GAAUpH,IAAImD,QAAQ1D,KAAKhB,KAAnD,CAEA,IAAIY,EAAOW,IAAI2D,MAAMC,QACjB,QACAvD,EAAKP,MAAM6G,KACNC,aACAvH,OACAZ,MAGT,GAAIxd,SAASoe,EAAKZ,QAAUxd,SAASma,EAAI,SAAc,CACnD3mB,EAAE0vB,mBAEF,IAAI9B,EAAO,GAEXttB,OAAOgR,KAAKqV,GAAMjY,IAAI,SAAAvN,GAClBysB,EAAKzsB,GAAOnB,EAAEorB,KAAKzE,EAAKxlB,MAG5BysB,EAAI,OAAa5tB,EAAEorB,KAAKG,IAAI2D,MAAMC,QAAQ,eAAgBxI,EAAI,YAC9DiH,EAAI,KAAW5tB,EAAEorB,KAAKG,IAAI2D,MAAMC,QAAQ,QAASxI,EAAI,UAErD,IAAIiM,EAAWhI,EAAKH,QAEpBmI,EAAStT,KAAK,SAACsO,EAAMhuB,GACbguB,EAAK5C,QAAUxe,SAASohB,EAAK5C,OAAOhB,QAAU2I,GAC9CC,EAAStU,OAAO1e,EAAG,KAI3BgzB,EAAS5c,KAAK4X,GAEdhD,EAAKH,MAAQzqB,EAAEorB,KAAKwH,GAEpB5yB,EAAE0Y,OAAOwX,SAAS,OAElBlwB,EAAEmwB,qBAIVqB,iBAAOhpB,EAAS,WAAY,kBAAMiqB,EAASC,KAAKG,OAAO,uBCpEvErzB,EAAAU,EAAA4yB,EAAA,+BAAAjC,IAAArxB,EAAAU,EAAA4yB,EAAA,2BAAAhC","file":"forum.js","sourcesContent":[" \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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = 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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 18);\n","module.exports = flarum.core.compat['Model'];","module.exports = flarum.core.compat['extend'];","module.exports = flarum.core.compat['components/Button'];","module.exports = flarum.core.compat['utils/mixin'];","module.exports = flarum.core.compat['components/Modal'];","module.exports = flarum.core.compat['components/DiscussionComposer'];","module.exports = flarum.core.compat['components/CommentPost'];","module.exports = flarum.core.compat['components/Badge'];","module.exports = flarum.core.compat['components/DiscussionList'];","module.exports = flarum.core.compat['models/Discussion'];","module.exports = flarum.core.compat['components/Switch'];","/* flatpickr v4.6.1, @license MIT */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.flatpickr = factory());\n}(this, function () { 'use strict';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation. All rights reserved.\r\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n this file except in compliance with the License. You may obtain a copy of the\r\n License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n See the Apache Version 2.0 License for specific language governing permissions\r\n and limitations under the License.\r\n ***************************************************************************** */\r\n\r\n var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n };\n\n var HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n ];\n var defaults = {\n _disable: [],\n _enable: [],\n allowInput: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enable: [],\n enableSeconds: false,\n enableTime: false,\n errorHandler: function (err) {\n return typeof console !== \"undefined\" && console.warn(err);\n },\n getWeek: function (givenDate) {\n var date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n // Thursday in current week decides the year.\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n // January 4 is always in week 1.\n var week1 = new Date(date.getFullYear(), 0, 4);\n // Adjust to Thursday in week 1 and count number of weeks from date to week1.\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n nextArrow: \"\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false\n };\n\n var english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ]\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ]\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: function (nth) {\n var s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n time_24hr: false\n };\n\n var pad = function (number) { return (\"0\" + number).slice(-2); };\n var int = function (bool) { return (bool === true ? 1 : 0); };\n /* istanbul ignore next */\n function debounce(func, wait, immediate) {\n if (immediate === void 0) { immediate = false; }\n var timeout;\n return function () {\n var context = this, args = arguments;\n timeout !== null && clearTimeout(timeout);\n timeout = window.setTimeout(function () {\n timeout = null;\n if (!immediate)\n func.apply(context, args);\n }, wait);\n if (immediate && !timeout)\n func.apply(context, args);\n };\n }\n var arrayify = function (obj) {\n return obj instanceof Array ? obj : [obj];\n };\n\n function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n }\n function createElement(tag, className, content) {\n var e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n }\n function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n }\n function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined; // nothing found\n }\n function createNumberInput(inputClassName, opts) {\n var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (var key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n }\n function getEventTarget(event) {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n\n var doNothing = function () { return undefined; };\n var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\n var revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n H: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n J: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n K: function (dateObj, amPM, locale) {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n W: function (dateObj, weekNum, locale) {\n var weekNumber = parseInt(weekNum);\n var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: function (dateObj, year) {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: function (_, ISODate) { return new Date(ISODate); },\n d: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n h: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n i: function (dateObj, minutes) {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: function (_, unixMillSeconds) {\n return new Date(parseFloat(unixMillSeconds));\n },\n w: doNothing,\n y: function (dateObj, year) {\n dateObj.setFullYear(2000 + parseFloat(year));\n }\n };\n var tokenRegex = {\n D: \"(\\\\w+)\",\n F: \"(\\\\w+)\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"(\\\\w+)\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"(\\\\w+)\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\"\n };\n var formats = {\n // get the date in UTC\n Z: function (date) { return date.toISOString(); },\n // weekday name, short, e.g. Thu\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n // full month name e.g. January\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n // padded hour 1-12\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n // hours with leading zero e.g. 03\n H: function (date) { return pad(date.getHours()); },\n // day (1-30) with ordinal suffix e.g. 1st, 2nd\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n // AM/PM\n K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n // shorthand month e.g. Jan, Sep, Oct, etc\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n // seconds 00-59\n S: function (date) { return pad(date.getSeconds()); },\n // unix timestamp\n U: function (date) { return date.getTime() / 1000; },\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n // full year e.g. 2016\n Y: function (date) { return date.getFullYear(); },\n // day in month, padded (01-30)\n d: function (date) { return pad(date.getDate()); },\n // hour from 1-12 (am/pm)\n h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n // minutes, padded with leading zero e.g. 09\n i: function (date) { return pad(date.getMinutes()); },\n // day in month (1-30)\n j: function (date) { return date.getDate(); },\n // weekday name, full, e.g. Thursday\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n // padded month number (01-12)\n m: function (date) { return pad(date.getMonth() + 1); },\n // the month number (1-12)\n n: function (date) { return date.getMonth() + 1; },\n // seconds 0-59\n s: function (date) { return date.getSeconds(); },\n // Unix Milliseconds\n u: function (date) { return date.getTime(); },\n // number of the day of the week\n w: function (date) { return date.getDay(); },\n // last two digits of year e.g. 16 for 2016\n y: function (date) { return String(date.getFullYear()).substring(2); }\n };\n\n var createDateFormatter = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (dateObj, frmt, overrideLocale) {\n var locale = overrideLocale || l10n;\n if (config.formatDate !== undefined) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map(function (c, i, arr) {\n return formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\";\n })\n .join(\"\");\n };\n };\n var createDateParser = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (date, givenFormat, timeless, customLocale) {\n if (date !== 0 && !date)\n return undefined;\n var locale = customLocale || l10n;\n var parsedDate;\n var dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined // timestamp\n )\n // create a copy\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n // date string\n var format = givenFormat || (config || defaults).dateFormat;\n var datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr) // datestrings w/ timezone\n )\n parsedDate = new Date(date);\n else if (config && config.parseDate)\n parsedDate = config.parseDate(date, format);\n else {\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n var matched = void 0, ops = [];\n for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n var token_1 = format[i];\n var isBackSlash = token_1 === \"\\\\\";\n var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token_1] && !escaped) {\n regexStr += tokenRegex[token_1];\n var match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token_1 !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token_1],\n val: match[++matchIndex]\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\"; // don't really care\n ops.forEach(function (_a) {\n var fn = _a.fn, val = _a.val;\n return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n });\n }\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n /* istanbul ignore next */\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n };\n };\n /**\n * Compute the difference in dates, measured in ms\n */\n function compareDates(date1, date2, timeless) {\n if (timeless === void 0) { timeless = true; }\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n }\n var isBetween = function (ts, ts1, ts2) {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n };\n var duration = {\n DAY: 86400000\n };\n\n if (typeof Object.assign !== \"function\") {\n Object.assign = function (target) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n var _loop_1 = function (source) {\n if (source) {\n Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n }\n };\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var source = args_1[_a];\n _loop_1(source);\n }\n return target;\n };\n }\n\n var DEBOUNCED_CHANGE_MS = 300;\n function FlatpickrInstance(element, instanceConfig) {\n var self = {\n config: __assign({}, defaults, flatpickr.defaultConfig),\n l10n: english\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self._createElement = createElement;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth: function (month, yr) {\n if (month === void 0) { month = self.currentMonth; }\n if (yr === void 0) { yr = self.currentYear; }\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n }\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar\n ? self.latestSelectedDateObj || self.config.minDate\n : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n self.showTimeInput =\n self.selectedDates.length > 0 || self.config.noCalendar;\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n /* TODO: investigate this further\n \n Currently, there is weird positioning behavior in safari causing pages\n to scroll up. https://github.com/chmln/flatpickr/issues/563\n \n However, most browsers are not Safari and positioning is expensive when used\n in scale. https://github.com/chmln/flatpickr/issues/1096\n */\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n var config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1)\n return;\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n /**\n * The handler for all events targeting the time inputs\n */\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n setDefaultTime();\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n var prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n /**\n * Syncs the selected date object time with user's time input\n */\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n var limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n var limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (limitMaxHours) {\n var maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n var minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours())\n minutes = Math.max(minutes, minTime.getMinutes());\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n setHours(hours, minutes, seconds);\n }\n /**\n * Syncs time input values with a date\n */\n function setHoursFromDate(dateObj) {\n var date = dateObj || self.latestSelectedDateObj;\n if (date)\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n function setDefaultHours() {\n var hours = self.config.defaultHour;\n var minutes = self.config.defaultMinute;\n var seconds = self.config.defaultSeconds;\n if (self.config.minDate !== undefined) {\n var minHr = self.config.minDate.getHours();\n var minMinutes = self.config.minDate.getMinutes();\n hours = Math.max(hours, minHr);\n if (hours === minHr)\n minutes = Math.max(minMinutes, minutes);\n if (hours === minHr && minutes === minMinutes)\n seconds = self.config.minDate.getSeconds();\n }\n if (self.config.maxDate !== undefined) {\n var maxHr = self.config.maxDate.getHours();\n var maxMinutes = self.config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = self.config.maxDate.getSeconds();\n }\n setHours(hours, minutes, seconds);\n }\n /**\n * Sets the hours, minutes, and optionally seconds\n * of the latest selected date object and the\n * corresponding time inputs\n * @param {Number} hours the hour. whether its military\n * or am-pm gets inferred from config\n * @param {Number} minutes the minutes\n * @param {Number} seconds the seconds (optional)\n */\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n /**\n * Handles the year input and incrementing events\n * @param {Event} event the keyup or increment event\n */\n function onYearInput(event) {\n var year = parseInt(event.target.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n /**\n * Essentially addEventListener + tracking\n * @param {Element} element the element to addEventListener to\n * @param {String} event the event name\n * @param {Function} handler the event handler\n */\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n if (element instanceof Array)\n return element.forEach(function (el) { return bind(el, event, handler, options); });\n element.addEventListener(event, handler, options);\n self._handlers.push({\n element: element,\n event: event,\n handler: handler,\n options: options\n });\n }\n /**\n * A mousedown handler which mimics click.\n * Minimizes latency, since we don't need to wait for mouseup in most cases.\n * Also, avoids handling right clicks.\n *\n * @param {Function} handler the event handler\n */\n function onClick(handler) {\n return function (evt) {\n evt.which === 1 && handler(evt);\n };\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n /**\n * Adds all the necessary event listeners\n */\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n return bind(el, \"click\", self[evt]);\n });\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n var debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", function (e) {\n if (self.config.mode === \"range\")\n onMouseOver(e.target);\n });\n bind(window.document.body, \"keydown\", onKeyDown);\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", onClick(documentClick));\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"mousedown\", onClick(self.open));\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"mousedown\", onClick(onMonthNavClick));\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"mousedown\", onClick(selectDate));\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n var selText = function (e) {\n return e.target.select();\n };\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"mousedown\", onClick(timeIncrement));\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n if (self.amPM !== undefined) {\n bind(self.amPM, \"mousedown\", onClick(function (e) {\n updateTime(e);\n triggerChange();\n }));\n }\n }\n }\n /**\n * Set the calendar view to a particular date.\n * @param {Date} jumpDate the date to set the view to\n * @param {boolean} triggerChange if change events should be triggered\n */\n function jumpToDate(jumpDate, triggerChange) {\n var jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n var oldYear = self.currentYear;\n var oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n /* istanbul ignore next */\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n /**\n * The up/down arrow handler for time inputs\n * @param {Event} e the click event\n */\n function timeIncrement(e) {\n if (~e.target.className.indexOf(\"arrow\"))\n incrementNumInput(e, e.target.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n /**\n * Increments/decrements the value of input associ-\n * ated with the up/down arrow by dispatching an\n * \"increment\" event on the input.\n *\n * @param {Event} e the click event\n * @param {Number} delta the diff (usually 1 or -1)\n * @param {Element} inputElem the input element\n */\n function incrementNumInput(e, delta, inputElem) {\n var target = e && e.target;\n var input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n var event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n var fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n var customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, dayNumber, i) {\n var dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", \"flatpickr-day \" + className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n dayNumber % 7 === 1) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"\" + self.config.getWeek(date) + \"\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n for (var m = startMonth; m != endMonth; m += delta) {\n var month = self.daysContainer.children[m];\n var startIndex = delta > 0 ? 0 : month.children.length - 1;\n var endIndex = delta > 0 ? month.children.length : -1;\n for (var i = startIndex; i != endIndex; i += delta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n var givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n var loopDelta = delta > 0 ? 1 : -1;\n for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n var month = self.daysContainer.children[m];\n var startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n var numMonthDays = month.children.length;\n for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n var dayFocused = isInView(document.activeElement || document.body);\n var startElem = current !== undefined\n ? current\n : dayFocused\n ? document.activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined)\n return self._input.focus();\n if (!dayFocused)\n return focusOnDayElem(startElem);\n getNextAvailableDay(startElem, offset);\n }\n function buildMonthDays(year, month) {\n var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12);\n var daysInMonth = self.utils.getDaysInMonth(month), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n // prepend days from the ending of previous month\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n // Start at 1 since there is no 0th day\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n // append days from the next month\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n //updateNavigationCurrentMonth();\n var dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n // TODO: week numbers for each month\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n var frag = document.createDocumentFragment();\n for (var i = 0; i < self.config.showMonths; i++) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1)\n return;\n var shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (var i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, false, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n var container = createElement(\"div\", \"flatpickr-month\");\n var monthNavFragment = window.document.createDocumentFragment();\n var monthElement;\n if (self.config.showMonths > 1) {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n bind(self.monthsDropdownContainer, \"change\", function (e) {\n var target = e.target;\n var selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n var yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container: container,\n yearElement: yearElement,\n monthElement: monthElement\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (var m = self.config.showMonths; m--;) {\n var month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: function () { return self.__hidePrevMonthArrow; },\n set: function (bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n }\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: function () { return self.__hideNextMonthArrow; },\n set: function (bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n }\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n var hourInput = createNumberInput(\"flatpickr-hour\");\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n var minuteInput = createNumberInput(\"flatpickr-minute\");\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? self.config.defaultHour\n : military2ampm(self.config.defaultHour));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : self.config.defaultMinute);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n var secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : self.config.defaultSeconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n // add self.amPM if appropriate\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (var i = self.config.showMonths; i--;) {\n var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n var firstDayOfWeek = self.l10n.firstDayOfWeek;\n var weekdays = self.l10n.weekdays.shorthand.slice();\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = weekdays.splice(firstDayOfWeek, weekdays.length).concat(weekdays.splice(0, firstDayOfWeek));\n }\n for (var i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = \"\\n \\n \" + weekdays.join(\"\") + \"\\n \\n \";\n }\n }\n /* istanbul ignore next */\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper: weekWrapper,\n weekNumbers: weekNumbers\n };\n }\n function changeMonth(value, isOffset) {\n if (isOffset === void 0) { isOffset = true; }\n var delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent, toInitial) {\n if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\n if (toInitial === void 0) { toInitial = true; }\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n self.showTimeInput = false;\n if (self.config.enableTime === true) {\n setDefaultHours();\n }\n self.redraw();\n if (triggerChangeEvent)\n // triggerChangeEvent is true (default) or an Event\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (var i = self._handlers.length; i--;) {\n var h = self._handlers[i];\n h.element.removeEventListener(h.event, h.handler, h.options);\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n var wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n self.input.value = \"\";\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach(function (k) {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n if (self.config.appendTo && self.config.appendTo.contains(elem))\n return true;\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n var eventTarget_1 = getEventTarget(e);\n var isCalendarElement = isCalendarElem(eventTarget_1);\n var isInput = eventTarget_1 === self.input ||\n eventTarget_1 === self.altInput ||\n self.element.contains(eventTarget_1) ||\n // web components\n // e.path is not present in all browsers. circumventing typechecks\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n var lostFocus = e.type === \"blur\"\n ? isInput &&\n e.relatedTarget &&\n !isCalendarElem(e.relatedTarget)\n : !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n return elem.contains(eventTarget_1);\n });\n if (lostFocus && isIgnored) {\n self.close();\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n self.clear(false);\n self.redraw();\n }\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless) {\n if (timeless === void 0) { timeless = true; }\n var dateToCheck = self.parseDate(date, undefined, timeless); // timeless\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (self.config.enable.length === 0 && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n var bool = self.config.enable.length > 0, array = bool ? self.config.enable : self.config.disable;\n for (var i = 0, d = void 0; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck) // disabled by function\n )\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n // disabled by date\n return bool;\n else if (typeof d === \"string\" && dateToCheck !== undefined) {\n // disabled by date string\n var parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (\n // disabled by range\n typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onKeyDown(e) {\n // e.key e.keyCode\n // \"Backspace\" 8\n // \"Tab\" 9\n // \"Enter\" 13\n // \"Escape\" (IE \"Esc\") 27\n // \"ArrowLeft\" (IE \"Left\") 37\n // \"ArrowUp\" (IE \"Up\") 38\n // \"ArrowRight\" (IE \"Right\") 39\n // \"ArrowDown\" (IE \"Down\") 40\n // \"Delete\" (IE \"Del\") 46\n var isInput = e.target === self._input;\n var allowInput = self.config.allowInput;\n var allowKeydown = self.isOpen && (!allowInput || !isInput);\n var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n return e.target.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(e.target) ||\n allowKeydown ||\n allowInlineKeydown) {\n var isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(e.target);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27: // escape\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (document.activeElement && isInView(document.activeElement)))) {\n var delta_1 = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta_1);\n else {\n e.stopPropagation();\n changeMonth(delta_1);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n var delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer && e.target.$i !== undefined) ||\n e.target === self.input) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (e.target === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n var elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter(function (x) { return x; });\n var i = elems.indexOf(e.target);\n if (i !== -1) {\n var target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(e.target) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && e.target === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(e.target)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem) {\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(\"flatpickr-day\") ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n var hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n var containsDisabled = false;\n var minRange = 0, maxRange = 0;\n for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n for (var m = 0; m < self.config.showMonths; m++) {\n var month = self.daysContainer.children[m];\n var _loop_1 = function (i, l) {\n var dayElem = month.children[i], date = dayElem.dateObj;\n var timestamp = date.getTime();\n var outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n return \"continue\";\n }\n else if (containsDisabled && !outOfRange)\n return \"continue\";\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n };\n for (var i = 0, l = month.children.length; i < l; i++) {\n _loop_1(i, l);\n }\n }\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function setDefaultTime() {\n self.setDate(self.config.minDate !== undefined\n ? new Date(self.config.minDate.getTime())\n : new Date(), true);\n setDefaultHours();\n updateValue();\n }\n function open(e, positionElement) {\n if (positionElement === void 0) { positionElement = self._positionElement; }\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n e.target && e.target.blur();\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n if (self._input.disabled || self.config.inline)\n return;\n var wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.selectedDates.length === 0) {\n setDefaultTime();\n }\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(function () { return self.hourElement.select(); }, 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return function (date) {\n var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n var boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n var userConfig = __assign({}, instanceConfig, JSON.parse(JSON.stringify(element.dataset || {})));\n var formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: function () { return self.config._enable; },\n set: function (dates) {\n self.config._enable = parseDateRules(dates);\n }\n });\n Object.defineProperty(self.config, \"disable\", {\n get: function () { return self.config._disable; },\n set: function (dates) {\n self.config._disable = parseDateRules(dates);\n }\n });\n var timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaults.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaults.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n self.input.className + \" \" + self.config.altInputClass;\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: function () { return self.config._minDate; },\n set: minMaxDateSetter(\"min\")\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: function () { return self.config._maxDate; },\n set: minMaxDateSetter(\"max\")\n });\n var minMaxTimeSetter = function (type) { return function (val) {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i\");\n }; };\n Object.defineProperty(self.config, \"minTime\", {\n get: function () { return self.config._minTime; },\n set: minMaxTimeSetter(\"min\")\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: function () { return self.config._maxTime; },\n set: minMaxTimeSetter(\"max\")\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (var i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable.length &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (var i = 0; i < self.config.plugins.length; i++) {\n var pluginConf = self.config.plugins[i](self) || {};\n for (var key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n triggerEvent(\"onParseConfig\");\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n self.l10n = __assign({}, flatpickr.l10ns[\"default\"], (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n var userConfig = __assign({}, instanceConfig, JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n var positionElement = customPositionElement || self._positionElement;\n var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n var top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n var left = window.pageXOffset +\n inputBounds.left -\n (configPosHorizontal != null && configPosHorizontal === \"center\"\n ? (calendarWidth - inputBounds.width) / 2\n : 0);\n var right = window.document.body.offsetWidth - inputBounds.right;\n var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = top + \"px\";\n if (!rightMost) {\n self.calendarContainer.style.left = left + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = right + \"px\";\n }\n else {\n var doc = document.styleSheets[0];\n // some testing environments don't have css support\n if (doc === undefined)\n return;\n var bodyWidth = window.document.body.offsetWidth;\n var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n var centerBefore = \".flatpickr-calendar.centerMost:before\";\n var centerAfter = \".flatpickr-calendar.centerMost:after\";\n var centerIndex = doc.cssRules.length;\n var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n self.calendarContainer.style.left = centerLeft + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n // hack - bugs in the way IE handles focus keeps the calendar open\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n var isSelectable = function (day) {\n return day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n };\n var t = findParent(e.target, isSelectable);\n if (t === undefined)\n return;\n var target = t;\n var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n var selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n // unless selecting same date twice, sort ascendingly\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n var isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (self.config.enableTime)\n setTimeout(function () { return (self.showTimeInput = true); }, 50);\n // maintain focus\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n var single = self.config.mode === \"single\" && !self.config.enableTime;\n var range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n var CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate]\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (var key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach(function (x) { return x(); });\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach(function (x) { return x(); });\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(false);\n }\n function setSelectedDate(inputDate, format) {\n var dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n self.selectedDates = dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); });\n if (self.config.mode === \"range\")\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n function setDate(date, triggerChange, format) {\n if (triggerChange === void 0) { triggerChange = false; }\n if (format === void 0) { format = self.config.dateFormat; }\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.showTimeInput = self.selectedDates.length > 0;\n self.latestSelectedDateObj = self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate();\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map(function (rule) {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined)\n };\n return rule;\n })\n .filter(function (x) { return x; }); // remove falsy values\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n // Workaround IE11 setting placeholder as the input's value\n var preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n Object.defineProperty(self, \"showTimeInput\", {\n get: function () { return self._showTimeInput; },\n set: function (bool) {\n self._showTimeInput = bool;\n if (self.calendarContainer)\n toggleClass(self.calendarContainer, \"showTimeInput\", bool);\n self.isOpen && positionCalendar();\n }\n });\n }\n function setupInputs() {\n self.input = self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n /* istanbul ignore next */\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n // hack: store previous type to restore it after destroy()\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n // replicate self.element\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n var inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.step = self.input.getAttribute(\"step\") || \"any\";\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", function (e) {\n self.setDate(e.target.value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n // If the instance has been destroyed already, all hooks have been removed\n if (self.config === undefined)\n return;\n var hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (var i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n // many front-end frameworks bind to the input event\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (var i = 0; i < self.selectedDates.length; i++) {\n if (compareDates(self.selectedDates[i], date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach(function (yearElement, i) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1) {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(format) {\n return self.selectedDates\n .map(function (dObj) { return self.formatDate(dObj, format); })\n .filter(function (d, i, arr) {\n return self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i;\n })\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n /**\n * Updates the values of inputs associated with the calendar\n */\n function updateValue(triggerChange) {\n if (triggerChange === void 0) { triggerChange = true; }\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n var isPrevMonth = self.prevMonthNav.contains(e.target);\n var isNextMonth = self.nextMonthNav.contains(e.target);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(e.target) >= 0) {\n e.target.select();\n }\n else if (e.target.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (e.target.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n var isKeyDown = e.type === \"keydown\", input = e.target;\n if (self.amPM !== undefined && e.target === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n var newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n }\n /* istanbul ignore next */\n function _flatpickr(nodeList, config) {\n // static list\n var nodes = Array.prototype.slice\n .call(nodeList)\n .filter(function (x) { return x instanceof HTMLElement; });\n var instances = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n }\n /* istanbul ignore next */\n if (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n // browser env\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n }\n /* istanbul ignore next */\n var flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n };\n /* istanbul ignore next */\n flatpickr.defaultConfig = {};\n flatpickr.l10ns = {\n en: __assign({}, english),\n \"default\": __assign({}, english)\n };\n flatpickr.localize = function (l10n) {\n flatpickr.l10ns[\"default\"] = __assign({}, flatpickr.l10ns[\"default\"], l10n);\n };\n flatpickr.setDefaults = function (config) {\n flatpickr.defaultConfig = __assign({}, flatpickr.defaultConfig, config);\n };\n flatpickr.parseDate = createDateParser({});\n flatpickr.formatDate = createDateFormatter({});\n flatpickr.compareDates = compareDates;\n /* istanbul ignore next */\n if (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n }\n // eslint-disable-next-line @typescript-eslint/camelcase\n Date.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n };\n if (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n }\n\n return flatpickr;\n\n}));\n","module.exports = flarum.core.compat['Component'];","module.exports = flarum.core.compat['components/LogInModal'];","module.exports = flarum.core.compat['helpers/avatar'];","module.exports = flarum.core.compat['helpers/username'];","module.exports = flarum.core.compat['utils/PostControls'];","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","import Model from 'flarum/Model';\nimport mixin from 'flarum/utils/mixin';\n\nexport default class Poll extends mixin(Model, {\n question: Model.attribute('question'),\n hasEnded: Model.attribute('hasEnded'),\n endDate: Model.attribute('endDate'),\n publicPoll: Model.attribute('publicPoll'),\n\n options: Model.hasMany('options'),\n votes: Model.hasMany('votes'),\n}) {\n apiEndpoint() {\n return `/fof/polls${this.exists ? `/${this.data.id}` : ''}`;\n }\n}\n","import Model from 'flarum/Model';\nimport mixin from 'flarum/utils/mixin';\n\nexport default class PollOption extends mixin(Model, {\n answer: Model.attribute('answer'),\n\n poll: Model.hasOne('polls'),\n votes: Model.hasMany('votes'),\n}) {\n apiEndpoint() {\n return `/fof/polls/answers${this.exists ? `/${this.data.id}` : ''}`;\n }\n}\n","import Model from 'flarum/Model';\nimport mixin from 'flarum/utils/mixin';\n\nexport default class PollVote extends mixin(Model, {\n poll: Model.hasOne('poll'),\n option: Model.hasOne('option'),\n user: Model.hasOne('user'),\n\n pollId: Model.attribute('pollId'),\n optionId: Model.attribute('optionId'),\n}) {\n apiEndpoint() {\n return `/fof/polls/${this.pollId()}/vote`;\n }\n}\n","import Button from 'flarum/components/Button';\nimport Modal from 'flarum/components/Modal';\nimport Switch from 'flarum/components/Switch';\n\nimport flatpickr from 'flatpickr';\n\nexport default class CreatePollModal extends Modal {\n init() {\n super.init();\n\n this.options = [m.prop(''), m.prop('')];\n\n this.question = m.prop('');\n\n this.endDate = m.prop();\n\n this.publicPoll = m.prop(false);\n\n if (this.props.poll) {\n const poll = this.props.poll;\n\n this.options = poll.relationships.options.map(o => m.prop(o));\n this.question(poll.question);\n this.endDate(!poll.endDate || isNaN(poll.endDate.getTime()) ? null : poll.endDate);\n this.publicPoll(poll.publicPoll);\n }\n }\n\n title() {\n return app.translator.trans('fof-polls.forum.modal.add_title');\n }\n\n className() {\n return 'PollDiscussionModal Modal--small';\n }\n\n configDatePicker(el, isInitialized) {\n if (isInitialized) return;\n\n flatpickr(el, {\n enableTime: true,\n minDate: this.endDate() || 'today',\n dateFormat: 'Y-m-d H:i',\n defaultDate: this.endDate(),\n wrap: true,\n\n onChange: dates => this.endDate(dates[0]),\n });\n }\n\n content() {\n return [\n
\n
\n
\n \n\n \n
\n\n
\n \n\n {this.displayOptions()}\n
\n\n
\n \n\n
\n \n {Button.component({\n className: 'Button PollModal--button',\n icon: 'fas fa-times',\n 'data-clear': true,\n })}\n
\n
\n\n
\n {Switch.component({\n state: this.publicPoll() || false,\n children: app.translator.trans('fof-polls.forum.modal.public_poll_label'),\n onchange: this.publicPoll,\n })}\n
\n\n
\n {Button.component({\n type: 'submit',\n className: 'Button Button--primary PollModal-SubmitButton',\n children: app.translator.trans('fof-polls.forum.modal.submit'),\n loading: this.loading,\n })}\n
\n
\n
,\n ];\n }\n\n displayOptions() {\n return Object.keys(this.options).map((el, i) => (\n
\n
\n \n
\n {i >= 2\n ? Button.component({\n type: 'button',\n className: 'Button Button--warning PollModal--button',\n icon: 'fas fa-minus',\n onclick: i >= 2 ? this.removeOption.bind(this, i) : '',\n })\n : ''}\n
\n ));\n }\n\n addOption() {\n const setting = app.data['fof-polls.options.max'];\n const max = (setting && parseInt(setting)) || 11;\n\n if (this.options.length < max) {\n this.options.push(m.prop(''));\n } else {\n alert(app.translator.trans('fof-polls.forum.modal.max'));\n }\n }\n\n removeOption(option) {\n this.options.splice(option, 1);\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n const poll = {\n question: this.question(),\n endDate: this.endDate(),\n publicPoll: this.publicPoll(),\n };\n const options = this.options.map(a => a()).filter(Boolean);\n\n if (this.question() === '') {\n alert(app.translator.trans('fof-polls.forum.modal.include_question'));\n\n return;\n }\n\n if (options.length < 2) {\n alert(app.translator.trans('fof-polls.forum.modal.min'));\n\n return;\n }\n\n poll.relationships = { options };\n\n this.props.onsubmit(poll);\n\n app.modal.close();\n }\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","import Modal from 'flarum/components/Modal';\nimport avatar from 'flarum/helpers/avatar';\nimport username from 'flarum/helpers/username';\n\nexport default class ListVotersModal extends Modal {\n className() {\n return 'Modal--small';\n }\n\n title() {\n return app.translator.trans('fof-polls.forum.votes_modal.title');\n }\n\n content() {\n return (\n
\n
    \n {this.props.poll.options().map(opt => {\n const votes = this.props.poll\n .votes()\n .filter(v => opt.id() === v.option().id())\n .map(v => v.user());\n\n return (\n
    \n

    {opt.answer() + ':'}

    \n\n {votes.length ? (\n votes.map(u => {\n const attrs = u && { href: app.route.user(u), config: m.route };\n\n return (\n
  • \n \n {avatar(u)} {username(u)}\n \n
  • \n );\n })\n ) : (\n

    {app.translator.trans('fof-polls.forum.modal.no_voters')}

    \n )}\n
    \n );\n })}\n
\n
\n );\n }\n}\n","import Component from 'flarum/Component';\nimport Button from 'flarum/components/Button';\nimport LogInModal from 'flarum/components/LogInModal';\n\nimport ListVotersModal from './ListVotersModal';\n\nexport default class DiscussionPoll extends Component {\n init() {\n this.poll = this.props.poll;\n\n this.vote = m.prop();\n this.voted = m.prop(false);\n\n this.updateData();\n }\n\n view() {\n return (\n
\n

{this.poll.question()}

\n\n {this.options.map(opt => {\n const hasVoted = this.voted();\n const voted =\n this.vote() &&\n this.vote()\n .option()\n .id() === opt.id();\n const votes = this.votes.filter(v => v.option().id() === opt.id()).length;\n const percent = Math.round((votes / this.poll.votes().length) * 100);\n\n const attrs = voted\n ? {\n title:\n hasVoted && app.translator.transChoice('fof-polls.forum.tooltip.votes', votes, { count: String(votes) }).join(''),\n config: function(element) {\n $(element).tooltip({ placement: 'right' });\n },\n }\n : {};\n\n const inputAttrs = voted\n ? {\n checked: true,\n }\n : {};\n\n return (\n
\n
\n {((!this.poll.hasEnded() && app.session.user && app.session.user.canVotePolls()) || !app.session.user) && (\n \n )}\n\n
\n \n {hasVoted && (\n \n )}\n
\n
\n );\n })}\n\n
\n\n {this.poll.publicPoll()\n ? Button.component({\n className: 'Button Button--primary PublicPollButton',\n children: app.translator.trans('fof-polls.forum.public_poll'),\n onclick: () => this.showVoters(),\n })\n : ''}\n\n {app.session.user && !app.session.user.canVotePolls() ? (\n
{app.translator.trans('fof-polls.forum.no_permission')}
\n ) : this.poll.hasEnded() ? (\n
{app.translator.trans('fof-polls.forum.poll_ended')}
\n ) : this.poll.endDate() !== null ? (\n
\n \n {app.translator.trans('fof-polls.forum.days_remaining', { time: moment(this.poll.endDate()).fromNow() })}\n
\n ) : (\n ''\n )}\n
\n );\n }\n\n updateData() {\n this.poll = app.store.getById('polls', this.poll.id());\n this.options = this.poll.options() || [];\n this.votes = this.poll.votes() || [];\n\n this.vote(app.session.user ? this.votes.find(v => v.user() && v.user().id() === app.session.user.id()) : null);\n\n this.voted(!!this.vote());\n }\n\n onError(evt, error) {\n evt.target.checked = false;\n\n app.alerts.show(error.alert);\n }\n\n changeVote(option, evt) {\n if (!app.session.user) {\n app.modal.show(new LogInModal());\n evt.target.checked = false;\n return;\n }\n\n if (\n this.vote() &&\n option.id() ===\n this.vote()\n .option()\n .id()\n )\n option = null;\n\n if (!this.vote()) {\n this.vote(app.store.createRecord('poll_votes'));\n\n this.vote().pollId(this.poll.id());\n }\n\n m.startComputation();\n\n app.request({\n method: 'PATCH',\n url: `${app.forum.attribute('apiUrl')}/fof/polls/${this.poll.id()}/vote`,\n errorHandler: this.onError.bind(this, evt),\n data: {\n data: {\n optionId: option ? option.id() : null,\n },\n },\n }).then(res => {\n app.store.pushPayload(res);\n\n if (!option) app.store.remove(this.vote());\n\n this.updateData();\n\n if (!option) {\n m.redraw.strategy('all');\n m.redraw();\n m.redraw.strategy('diff');\n }\n\n m.endComputation();\n });\n }\n\n showVoters() {\n app.modal.show(\n new ListVotersModal({\n poll: this.poll,\n })\n );\n }\n}\n","import Button from 'flarum/components/Button';\n\nimport CreatePollModal from './CreatePollModal';\n\nexport default class EditPollModal extends CreatePollModal {\n init() {\n this.poll = this.props.poll;\n\n this.options = this.poll.options();\n this.optionAnswers = this.options.map(o => m.prop(o.answer()));\n this.question = m.prop(this.poll.question());\n this.endDate = m.prop(this.poll.endDate());\n this.publicPoll = m.prop(this.poll.publicPoll());\n }\n\n title() {\n return app.translator.trans('fof-polls.forum.modal.edit_title');\n }\n\n displayOptions() {\n return this.options.map((opt, i) => (\n
\n
\n \n
\n\n {i >= 2\n ? Button.component({\n type: 'button',\n className: 'Button PollModal--button',\n icon: 'fas fa-minus',\n onclick: i >= 2 ? this.removeOption.bind(this, i) : '',\n })\n : ''}\n
\n ));\n }\n\n addOption() {\n const setting = app.data['fof-polls.options.max'];\n const max = (setting && parseInt(setting)) || 11;\n\n if (this.options.length < max) {\n this.options.push(app.store.createRecord('poll_options'));\n this.optionAnswers.push(m.prop(''));\n } else {\n alert(app.translator.trans('fof-polls.forum.modal.max'));\n }\n }\n\n removeOption(i) {\n this.options.splice(i, 1);\n this.optionAnswers.splice(i, 1);\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n if (this.loading) return;\n\n this.loading = true;\n\n const options = this.options.map((o, i) => {\n if (!o.data.attributes) o.data.attributes = {};\n\n o.data.attributes.answer = this.optionAnswers[i]();\n\n return o.data;\n });\n\n return this.poll\n .save({\n question: this.question(),\n endDate: this.endDate() || false,\n publicPoll: this.publicPoll(),\n options,\n })\n .then(() => {\n document.location.reload();\n })\n .catch(e => {\n this.loaded();\n this.onerror(e);\n });\n }\n}\n","import CreatePollModal from './CreatePollModal';\nimport DiscussionPoll from './DiscussionPoll';\nimport EditPollModal from './EditPollModal';\nimport ListVotersModal from './ListVotersModal';\n\nexport const components = {\n CreatePollModal,\n DiscussionPoll,\n EditPollModal,\n ListVotersModal,\n};\n","import Poll from './Poll';\nimport PollOption from './PollOption';\nimport PollVote from './PollVote';\n\nexport const models = {\n Poll,\n PollOption,\n PollVote,\n};\n","import Model from 'flarum/Model';\n\nimport Poll from './models/Poll';\nimport PollOption from './models/PollOption';\nimport PollVote from './models/PollVote';\n\nimport addDiscussionBadge from './addDiscussionBadge';\nimport addDiscussionComposerItem from './addDiscussionComposerItem';\nimport addPollToDiscussion from './addPollToDiscussion';\nimport addDiscussionControls from './addDiscussionControls';\n\nexport * from './components';\nexport * from './models';\n\napp.initializers.add('fof/polls', () => {\n app.store.models.polls = Poll;\n app.store.models.poll_options = PollOption;\n app.store.models.poll_votes = PollVote;\n\n app.store.models.discussions.prototype.poll = Model.hasOne('poll');\n\n app.store.models.users.prototype.canEditPolls = Model.attribute('canEditPolls');\n app.store.models.users.prototype.canStartPolls = Model.attribute('canStartPolls');\n app.store.models.users.prototype.canSelfEditPolls = Model.attribute('canSelfEditPolls');\n app.store.models.users.prototype.canVotePolls = Model.attribute('canVotePolls');\n\n addDiscussionBadge();\n addDiscussionControls();\n addDiscussionComposerItem();\n addPollToDiscussion();\n});\n","import { extend } from 'flarum/extend';\nimport Badge from 'flarum/components/Badge';\nimport DiscussionList from 'flarum/components/DiscussionList';\nimport Discussion from 'flarum/models/Discussion';\n\nexport default () => {\n extend(DiscussionList.prototype, 'requestParams', params => {\n params.include.push('poll');\n });\n\n extend(Discussion.prototype, 'badges', function(badges) {\n if (this.poll()) {\n badges.add(\n 'poll',\n Badge.component({\n type: 'poll',\n label: app.translator.trans('fof-polls.forum.tooltip.badge'),\n icon: 'fa fa-signal',\n }),\n 5\n );\n }\n });\n};\n","import { extend } from 'flarum/extend';\nimport PostControls from 'flarum/utils/PostControls';\nimport Button from 'flarum/components/Button';\n\nimport EditPollModal from './components/EditPollModal';\n\nexport default () => {\n extend(PostControls, 'moderationControls', function(items, post) {\n const discussion = post.discussion();\n const poll = discussion.poll();\n const user = app.session.user;\n\n if (!(poll && ((user && user.canEditPolls()) || (post.user() && post.user().canSelfEditPolls() && post.user().id() === user.id())) && post.number() === 1)) {\n return;\n }\n\n if (!poll.hasEnded()) {\n items.add(\n 'fof-polls-edit',\n Button.component({\n icon: 'fas fa-check-square',\n children: app.translator.trans('fof-polls.forum.moderation.edit'),\n onclick: () => app.modal.show(new EditPollModal({ poll })),\n })\n );\n }\n\n items.add(\n 'fof-polls-remove',\n Button.component({\n icon: 'fas fa-trash',\n children: app.translator.trans('fof-polls.forum.moderation.delete'),\n onclick: () => {\n if (confirm(app.translator.trans('fof-polls.forum.moderation.delete_confirm'))) {\n poll.delete().then(() => {\n m.redraw.strategy('all');\n m.redraw();\n m.redraw.strategy('diff');\n });\n }\n },\n })\n );\n });\n};\n","import { extend } from 'flarum/extend';\nimport DiscussionComposer from 'flarum/components/DiscussionComposer';\n\nimport CreatePollModal from './components/CreatePollModal';\n\nexport default () => {\n DiscussionComposer.prototype.addPoll = function() {\n app.modal.show(\n new CreatePollModal({\n poll: this.poll,\n onsubmit: poll => (this.poll = poll),\n })\n );\n };\n\n // Add button to DiscussionComposer header\n extend(DiscussionComposer.prototype, 'headerItems', function(items) {\n if (app.session.user && app.session.user.canStartPolls()) {\n items.add(\n 'polls',\n \n \n {app.translator.trans(`fof-polls.forum.composer_discussion.${this.poll ? 'edit' : 'add'}_poll`)}\n \n ,\n 1\n );\n }\n });\n\n extend(DiscussionComposer.prototype, 'data', function(data) {\n if (this.poll) {\n data.poll = this.poll;\n }\n });\n};\n","import { extend } from 'flarum/extend';\nimport CommentPost from 'flarum/components/CommentPost';\n\nimport DiscussionPoll from './components/DiscussionPoll';\n\n// import PollVote from './components/PollVote';\n\nexport default () => {\n extend(CommentPost.prototype, 'content', function(content) {\n const discussion = this.props.post.discussion();\n\n if (discussion.poll() && this.props.post.number() === 1) {\n content.push(\n DiscussionPoll.component({\n poll: discussion.poll(),\n })\n );\n }\n });\n\n extend(CommentPost.prototype, 'config', function(x, isInitialized, context) {\n if (isInitialized) return;\n\n if (app.pusher) {\n app.pusher.then(channels => {\n channels.main.bind('newPollVote', data => {\n var userId = parseInt(data['user_id']);\n\n if (app.session.user && userId == app.session.user.id()) return;\n\n let poll = app.store.getById(\n 'polls',\n this.props.post\n .discussion()\n .poll()\n .id()\n );\n\n if (parseInt(poll.id()) === parseInt(data['poll_id'])) {\n m.startComputation();\n\n let vote = {};\n\n Object.keys(data).map(key => {\n vote[key] = m.prop(data[key]);\n });\n\n vote['option'] = m.prop(app.store.getById('poll_options', data['option_id']));\n vote['user'] = m.prop(app.store.getById('users', data['user_id']));\n\n let newVotes = poll.votes();\n\n newVotes.some((vote, i) => {\n if (vote.user() && parseInt(vote.user().id()) === userId) {\n newVotes.splice(i, 1);\n }\n });\n\n newVotes.push(vote);\n\n poll.votes = m.prop(newVotes);\n\n m.redraw.strategy('all');\n\n m.endComputation();\n }\n });\n\n extend(context, 'onunload', () => channels.main.unbind('newPollVote'));\n });\n }\n });\n};\n","export * from './src/forum';\n"],"sourceRoot":""} \ No newline at end of file diff --git a/js/src/forum/components/DiscussionPoll.js b/js/src/forum/components/DiscussionPoll.js index c14b26c1..2072de2c 100755 --- a/js/src/forum/components/DiscussionPoll.js +++ b/js/src/forum/components/DiscussionPoll.js @@ -4,7 +4,7 @@ import LogInModal from 'flarum/components/LogInModal'; import ListVotersModal from './ListVotersModal'; -export default class PollVote extends Component { +export default class DiscussionPoll extends Component { init() { this.poll = this.props.poll; diff --git a/js/src/forum/components/ListVotersModal.js b/js/src/forum/components/ListVotersModal.js index bb7f8be1..36dd724f 100755 --- a/js/src/forum/components/ListVotersModal.js +++ b/js/src/forum/components/ListVotersModal.js @@ -2,7 +2,7 @@ import Modal from 'flarum/components/Modal'; import avatar from 'flarum/helpers/avatar'; import username from 'flarum/helpers/username'; -export default class ShowVotersModal extends Modal { +export default class ListVotersModal extends Modal { className() { return 'Modal--small'; } diff --git a/js/src/forum/components/index.js b/js/src/forum/components/index.js new file mode 100644 index 00000000..1221c0fb --- /dev/null +++ b/js/src/forum/components/index.js @@ -0,0 +1,11 @@ +import CreatePollModal from './CreatePollModal'; +import DiscussionPoll from './DiscussionPoll'; +import EditPollModal from './EditPollModal'; +import ListVotersModal from './ListVotersModal'; + +export const components = { + CreatePollModal, + DiscussionPoll, + EditPollModal, + ListVotersModal, +}; diff --git a/js/src/forum/index.js b/js/src/forum/index.js index 588d8efc..00351c93 100755 --- a/js/src/forum/index.js +++ b/js/src/forum/index.js @@ -1,6 +1,4 @@ -import { extend } from 'flarum/extend'; import Model from 'flarum/Model'; -import CommentPost from 'flarum/components/CommentPost'; import Poll from './models/Poll'; import PollOption from './models/PollOption'; @@ -11,6 +9,9 @@ import addDiscussionComposerItem from './addDiscussionComposerItem'; import addPollToDiscussion from './addPollToDiscussion'; import addDiscussionControls from './addDiscussionControls'; +export * from './components'; +export * from './models'; + app.initializers.add('fof/polls', () => { app.store.models.polls = Poll; app.store.models.poll_options = PollOption; diff --git a/js/src/forum/models/index.js b/js/src/forum/models/index.js new file mode 100644 index 00000000..b10f9cd3 --- /dev/null +++ b/js/src/forum/models/index.js @@ -0,0 +1,9 @@ +import Poll from './Poll'; +import PollOption from './PollOption'; +import PollVote from './PollVote'; + +export const models = { + Poll, + PollOption, + PollVote, +};