{"version":3,"sources":["webpack:///./src/app/search-results/qsm/age-select.tsx","webpack:///./node_modules/date-fns/esm/eachDayOfInterval/index.js","webpack:///./src/app/search-results/qsm/amount-input.tsx","webpack:///./node_modules/lodash/_baseAggregator.js","webpack:///./node_modules/date-fns/esm/getISODay/index.js","webpack:///./node_modules/date-fns/esm/differenceInDays/index.js","webpack:///./src/app/search-results/product-store/context.tsx","webpack:///./node_modules/lodash/_baseEach.js","webpack:///./node_modules/date-fns/esm/isToday/index.js","webpack:///./src/components/date-range-picker/calendar-day.tsx","webpack:///./src/components/date-range-picker/calendar.tsx","webpack:///./src/components/date-range-picker/index.tsx","webpack:///./src/app/search-results/qsm/date-picker.tsx","webpack:///./node_modules/lodash/_createAggregator.js","webpack:///./src/app/search-results/product-store/reducer.ts","webpack:///./node_modules/lodash/groupBy.js","webpack:///./node_modules/date-fns/esm/formatISO/index.js","webpack:///./node_modules/lodash/chunk.js","webpack:///./node_modules/lodash/_createBaseEach.js","webpack:///./node_modules/@qite/tide-booking-component/src/shared/utils/tide-api-utils.ts","webpack:///./node_modules/lodash/_arrayAggregator.js","webpack:///./src/app/search-results/utils/search-util.ts"],"names":["AgeSelect","props","_props$value","t","useI18next","React","createElement","className","onChange","event","target","selectedIndex","value","disabled","isLoading","_range","map","age","key","eachDayOfInterval","dirtyInterval","options","_options$step","arguments","interval","startDate","start","endDate","end","endTime","getTime","RangeError","dates","currentDate","setHours","step","Number","isNaN","push","setDate","getDate","AmountInput","label","type","title","onClick","_props$min","Math","max","min","_props$min2","_props$min3","valueAsNumber","baseEach","module","exports","collection","setter","iteratee","accumulator","getISODay","dirtyDate","date","day","getDay","compareLocalAsc","dateLeft","dateRight","diff","getFullYear","getMonth","getHours","getMinutes","getSeconds","getMilliseconds","differenceInDays","dirtyDateLeft","dirtyDateRight","sign","difference","abs","isLastDayNotFull","result","Store","createContext","displayName","useProductStore","useContext","ProductStoreProvider","_ref","children","initialState","reducer","state","dispatch","useReducer","Provider","baseForOwn","createBaseEach","isToday","Date","now","CalendarDay","isSelected","isDisabled","isOutsideMonth","extraClassNames","onMouseOver","classNames","buildClassName","concat","_toConsumableArray","handleClick","handleMouseOver","toString","padStart","Calendar","year","getYear","month","hasPreviousButton","hasNextButton","hasFixedHeight","weekStartsOn","disabledDaysFunction","selectedDaysFunction","extraClassNamesFunction","dayContentFunction","onDayClick","onDayMouseOver","onNextClick","onPreviousClick","language","locale","getLocale","handleDayClick","handleDayMouseOver","focusDate","firstDay","startOfWeek","startOfMonth","lastDay","endOfWeek","addWeeks","endOfMonth","calendarDays","mapDay","isoDay","_isFunction","isSameMonth","undefined","handlePreviousClick","previousMonth","Icon","name","format","handleNextClick","nextMonth","i","_chunk","weekDays","length","isoWeek","getISOWeek","isDayDisabled","today","startOfDay","addDays","DateRangePicker","_props$focusMonth","_props$fromDate","_props$toDate","_props$fromDate2","_props$locale","_props$locale2","qsmState","qsmDispatch","useQSMStore","fromDate","setFromDate","useState","toDate","setToDate","focusMonth","setFocusMonth","isWaitingForToDate","setWaitingForToDate","flexibleRangeDatePicker","setFlexibleRangeDatePicker","onSelectionChange","_isNil","isAfter","onToDateChange","duration","to","UTC","onFromDateChange","isEqual","firstCalendarYear","firstCalendarMonth","secondCalendarMonth","secondCalendarYear","checkIfDateIsSelected","isWithinInterval","endOfDay","checkIfDateIsInFlexibleRange","useEffect","_qsmState$flexibleRan","days","flexibleRange","newFromDate","newToDate","adjustedDays","checkDate","setFlexibleRange","valueOf","flexSearch","handleFlexSearchClick","newFocusMonth","onFocusMonthChange","classes","nlBE","Trans","DatePicker","panelActive","isProductIntro","flexsearch","onPanelToggle","mql","window","matchMedia","referenceElement","setReferenceElement","popperElement","setPopperElement","arrowElement","setArrowElement","styles","attributes","usePopper","placement","modifiers","offset","padding","element","handleDocumentClick","contains","document","addEventListener","removeEventListener","handleInputFocus","ref","readOnly","placeholder","Object","assign","style","matches","popper","isBefore","handleSelectionChange","arrow","arrayAggregator","baseAggregator","baseIteratee","isArray","initializer","func","setPrice","price","setEstimatedPrice","setHasFlight","hasFlight","setHasTransfer","hasTransfer","setIsUnavailable","isUnavailable","setRegimeFlyInIsOpen","flyInOpen","setFlightsFlyInIsOpen","initialProductState","productReducer","action","runReducer","estimatedPrice","hasTranfer","regimeFlyInIsOpen","flightsFlyInIsOpen","baseAssignValue","createAggregator","hasOwnProperty","prototype","groupBy","call","formatISO","_options$format","_options$representati","originalDate","String","representation","tzOffset","dateDelimiter","timeDelimiter","getTimezoneOffset","absoluteOffset","hourOffset","floor","minuteOffset","hour","minute","second","separator","time","join","baseSlice","isIterateeCall","toInteger","nativeCeil","ceil","nativeMax","array","size","guard","index","resIndex","Array","isArrayLike","eachFunc","fromRight","iterable","buildTideClientConfig","settings","HOST","apiUrl","process","API_KEY","apiKey","token","selectAgentToken","Error","host","_token","sessionStorage","getItem","localStorage","searchProducts","async","query","hotels","roundtrips","country","region","searchGlobal","from","rooms","Promise","reject","config","searchRequest","getPackageSearchRequest","regimeCodes","minPrice","maxPrice","earliestFromOffset","latestToOffset","countryOrRegionHotels","countryOrRegionRoundtrips","filter","x","_x$parentItem","_x$parentItem2","_x$parentItem2$conten","_x$parentItem2$conten2","_x$parentItem2$conten3","parentItem","templateName","content","general","tideId","_x$parentItem3","_x$parentItem4","_x$parentItem4$conten","_x$parentItem4$conten2","_x$parentItem4$conten3","_x$parentItem5","_x$parentItem6","_x$parentItem6$conten","_x$parentItem6$conten2","_x$parentItem6$conten3","_x$parentItem7","_x$parentItem7$parent","_x$parentItem8","_x$parentItem8$parent","_x$parentItem8$parent2","_x$parentItem8$parent3","_x$parentItem8$parent4","_x$parentItem9","_x$parentItem10","_x$parentItem10$conte","_x$parentItem10$conte2","_x$parentItem10$conte3","_x$parentItem11","_x$parentItem11$paren","_x$parentItem12","_x$parentItem12$paren","_x$parentItem12$paren2","_x$parentItem12$paren3","_x$parentItem12$paren4","searchResults","search","then","packageSearchResults","createSearchResults","_uniqBy","e","console","error","destinationId","destinationIsCountry","destinationIsRegion","officeId","payload","catalogueIds","searchType","destination","id","isCountry","isRegion","isOord","isLocation","getRequestRooms","includeFlights","getPackageDetails","productCode","signal","languageCode","request","catalogueId","details","packageItems","_compact","hotel","buildSearchResult","roundTrip","getParentItemWithTypename","typename","item","_get","items","roundtrip","_hotel$content","_hotel$content$genera","_roundtrip$content","_roundtrip$content$ge","_roundtrip$content2","_roundtrip$content2$g","_roundtrip$content3","_roundtrip$content3$g","_roundtrip$content3$g2","_roundtrip$content4","_roundtrip$content4$g","_roundtrip$content4$g2","_item$stayFromDate","_item$stayToDate","_item$type","_hotel$content$genera2","_hotel$content2","_hotel$content2$gener","_roundtrip$content5","_roundtrip$content5$g","_ref2","_hotel$content$genera3","_hotel$content3","_hotel$content3$gener","_roundtrip$content6","_roundtrip$content6$g","_hotel$content$genera4","_hotel$content4","_hotel$content4$gener","_item$stayFromDate2","_item$stayToDate2","_hotel$content5","_hotel$content5$gener","_hotel$content5$gener2","_hotel$content6","_hotel$content6$gener","_hotel$content6$gener2","_item$includedService","_item$includedService2","product","isRoundTrip","minNights","minDurationType","minDuration","find","code","queryDuration","outwardFlightEndDate","parse","onRequest","allotmentType","isNotAvailable","flightPrice","countryName","_content$general$titl","_getParentItemWithTyp","_getParentItemWithTyp2","_getParentItemWithTyp3","_content$general$titl2","_content","_content$general","stayFromDate","stayToDate","productType","subtitle","getMinStay","getSubtitle","image","thumbnailPicture","rating","stars","url","generateParameterizedProductPath","accommodationCode","regimeCode","uspIds","usps","usp","themeIds","themes","theme","includedServiceTypes","some","minStay","_hotel$content7","_hotel$content7$gener","_roundtrip$content7","_roundtrip$content7$g","_hotel$content8","_hotel$content8$gener","_roundtrip$content8","_roundtrip$content8$g","estimatedStay","removeTime","toDateString","_product$regimes","_regime$localizedName","_regime$localizedName2","_regime$localizedName3","regime","regimes","regimeName","localizedNames","numberOfNights","requestRooms","forEach","room","requestRoom","pax","a","adults","c","childAges"],"mappings":"uJA+BeA,IArB8BC,IAAU,IAAAC,EACrD,MAAM,EAAEC,GAAMC,uBAOd,OACEC,IAAAC,cAAA,OAAKC,UAAU,4BACbF,IAAAC,cAAA,UAAQE,SARuDC,IAC7DR,EAAMO,UACRP,EAAMO,SAASC,EAAMC,OAAOC,gBAMIC,MAAkB,QAAbV,EAAED,EAAMW,aAAK,IAAAV,IAAI,EAAGW,SAAUZ,EAAMa,WACtEC,IAAM,EAAG,IAAIC,IAAKC,GACjBZ,IAAAC,cAAA,UAAQY,IAAKD,EAAKL,MAAOK,GACtBd,EAAE,SAAU,CAAEc,c,oCCvB3B,8DAiCe,SAASE,EAAkBC,EAAeC,GACvD,IAAIC,EACJ,YAAa,EAAGC,WAChB,IAAIC,EAAWJ,GAAiB,GAC5BK,EAAY,kBAAOD,EAASE,OAC5BC,EAAU,kBAAOH,EAASI,KAC1BC,EAAUF,EAAQG,UAGtB,KAAML,EAAUK,WAAaD,GAC3B,MAAM,IAAIE,WAAW,oBAEvB,IAAIC,EAAQ,GACRC,EAAcR,EAClBQ,EAAYC,SAAS,EAAG,EAAG,EAAG,GAC9B,IAAIC,EAAOC,OAA4F,QAApFd,EAAgBD,aAAyC,EAASA,EAAQc,YAAoC,IAAlBb,EAA2BA,EAAgB,GAC1J,GAAIa,EAAO,GAAKE,MAAMF,GAAO,MAAM,IAAIJ,WAAW,kDAClD,KAAOE,EAAYH,WAAaD,GAC9BG,EAAMM,KAAK,kBAAOL,IAClBA,EAAYM,QAAQN,EAAYO,UAAYL,GAC5CF,EAAYC,SAAS,EAAG,EAAG,EAAG,GAEhC,OAAOF,I,kCCvDT,qCA+DeS,IApDkCxC,IAC/C,MAAM,EAAEE,GAAMC,uBAqBd,OACEC,IAAAC,cAAA,OAAKC,UAAU,uBACbF,IAAAC,cAAA,SAAOC,UAAU,8BAA8BN,EAAMyC,OACrDrC,IAAAC,cAAA,OAAKC,UAAU,2BACbF,IAAAC,cAAA,UACEqC,KAAK,SACLpC,UAAU,2BACVqC,MAAOzC,EAAE,YACTU,SAAUZ,EAAMa,UAChB+B,QAvBiEpC,IACnD,IAAAqC,EAAhB7C,EAAMO,UACRP,EAAMO,SAASuC,KAAKC,IAAI/C,EAAMW,MAAQ,EAAY,QAAXkC,EAAE7C,EAAMgD,WAAG,IAAAH,IAAI,OAuBpDzC,IAAAC,cAAA,SACEqC,KAAK,SACLM,IAAKhD,EAAMgD,IACXrC,MAAOX,EAAMW,MACbL,UAAU,6BACVC,SAxB+DC,IACrE,GAAIR,EAAMO,SAAU,KAAA0C,EAAAC,EAClB,MAAMvC,EACJH,EAAMC,OAAO0C,eAA0B,QAAbF,EAAIjD,EAAMgD,WAAG,IAAAC,IAAI,GAAc,QAAZC,EAAGlD,EAAMgD,WAAG,IAAAE,IAAI,EAAI1C,EAAMC,OAAO0C,cAChFnD,EAAMO,SAASI,OAsBbP,IAAAC,cAAA,UACEqC,KAAK,SACLpC,UAAU,2BACVqC,MAAOzC,EAAE,UACTU,SAAUZ,EAAMa,UAChB+B,QA3CiEpC,IACnER,EAAMO,UACRP,EAAMO,SAASP,EAAMW,MAAQ,U,qBCfnC,IAAIyC,EAAW,EAAQ,QAoBvBC,EAAOC,QAPP,SAAwBC,EAAYC,EAAQC,EAAUC,GAIpD,OAHAN,EAASG,GAAY,SAAS5C,EAAOM,EAAKsC,GACxCC,EAAOE,EAAa/C,EAAO8C,EAAS9C,GAAQ4C,MAEvCG,I,kCCjBT,8DAsBe,SAASC,EAAUC,GAChC,YAAa,EAAGtC,WAChB,IAAIuC,EAAO,kBAAOD,GACdE,EAAMD,EAAKE,SAIf,OAHY,IAARD,IACFA,EAAM,GAEDA,I,kCC7BT,0EAMA,SAASE,EAAgBC,EAAUC,GACjC,IAAIC,EAAOF,EAASG,cAAgBF,EAAUE,eAAiBH,EAASI,WAAaH,EAAUG,YAAcJ,EAAS1B,UAAY2B,EAAU3B,WAAa0B,EAASK,WAAaJ,EAAUI,YAAcL,EAASM,aAAeL,EAAUK,cAAgBN,EAASO,aAAeN,EAAUM,cAAgBP,EAASQ,kBAAoBP,EAAUO,kBAClV,OAAIN,EAAO,GACD,EACCA,EAAO,EACT,EAGAA,EAqDI,SAASO,EAAiBC,EAAeC,GACtD,YAAa,EAAGtD,WAChB,IAAI2C,EAAW,kBAAOU,GAClBT,EAAY,kBAAOU,GACnBC,EAAOb,EAAgBC,EAAUC,GACjCY,EAAahC,KAAKiC,IAAI,kBAAyBd,EAAUC,IAC7DD,EAAS3B,QAAQ2B,EAAS1B,UAAYsC,EAAOC,GAI7C,IAAIE,EAAmB7C,OAAO6B,EAAgBC,EAAUC,MAAgBW,GACpEI,EAASJ,GAAQC,EAAaE,GAElC,OAAkB,IAAXC,EAAe,EAAIA,I,kCChF5B,6FAQA,MAAMC,EAAQ9E,IAAM+E,cAA+D,IACnFD,EAAME,YAAc,eAEb,MAAMC,EAAkBA,IAAMC,qBAAWJ,GAEnCK,EAAgDC,IAIvD,IAJwD,SAC5DC,EAAQ,aACRC,EAAY,QACZC,GACDH,EACC,MAAM,EAACI,EAAK,EAAEC,GAAYC,qBAAWH,EAASD,GAE9C,OAAOtF,IAAAC,cAAC6E,EAAMa,SAAQ,CAACpF,MAAO,CAACiF,EAAOC,IAAYJ,K,qBCpBpD,IAAIO,EAAa,EAAQ,QAWrB5C,EAViB,EAAQ,OAUd6C,CAAeD,GAE9B3C,EAAOC,QAAUF,G,kCCbjB,8DAuBe,SAAS8C,EAAQtC,GAE9B,OADA,YAAa,EAAGtC,WACT,kBAAUsC,EAAWuC,KAAKC,S,mdC4BpBC,MAvCiCb,IAS1C,IAT2C,IAC/C1B,EAAG,WACHwC,EAAU,WACVC,EAAU,eACVC,EAAc,gBACdC,EAAkB,GAAE,SACpBhB,EAAQ,QACR7C,EAAO,YACP8D,GACDlB,EACC,MAYMmB,EAAaC,YAAe,CAChC,gBACAV,YAAQpC,IAAQ,uBAChByC,GAAc,0BACdC,GAAkB,+BAClBF,GAAc,2BAAyBO,OAAAC,YACpCL,KAGL,OACErG,IAAAC,cAAA,OAAKC,UAAWqG,EAAY/D,QAtBVmE,KACdnE,IAAY2D,GACd3D,EAAQkB,IAoBwC4C,YAhB5BM,KAClBN,GACFA,EAAY5C,KAeXvB,kBAAQuB,GAAKmD,WAAWC,SAAS,EAAG,KACpCzB,IC2HQ0B,MAnI2B3B,IAepC,IAfqC,KACzC4B,EAAOC,kBAAQ,IAAIlB,MAAO,MAC1BmB,EAAQjD,kBAAS,IAAI8B,MAAO,kBAC5BoB,GAAoB,EAAI,cACxBC,GAAgB,EAAI,eACpBC,GAAiB,EAAI,aACrBC,EAAe,EAAC,qBAChBC,EAAoB,qBACpBC,EAAoB,wBACpBC,EAAuB,mBACvBC,EAAkB,WAClBC,EAAU,eACVC,EAAc,YACdC,EAAW,gBACXC,GACD1C,EACC,MAAM,SAAE2C,GAAahI,uBACfiI,EAASC,YAAUF,GACnBG,EAAkBxE,IAClBiE,GACFA,EAAWjE,IAITyE,EAAsBzE,IACtBkE,GACFA,EAAelE,IAsBb0E,EAAY,IAAIrC,KAAKiB,EAAME,GAC3BmB,EAAWC,kBAAYC,kBAAaH,GAAY,CAAEd,iBAClDkB,EAAUnB,EACZoB,kBAAUC,kBAASL,EAAU,GAAI,CAAEf,iBACnCmB,kBAAUE,kBAAWP,GAAY,CAAEd,iBACjCsB,EAAe9H,YAAkB,CAAEO,MAAOgH,EAAU9G,IAAKiH,IAEzDK,EAAUnF,IACd,MAAMoF,EAASvF,YAAUG,GACnByC,EAAa4C,IAAWxB,IAAyBA,EAAqB7D,GACtEwC,EAAa6C,IAAWvB,IAAyBA,EAAqB9D,GACtE0C,GAAkB4C,kBAAYtF,EAAK0E,GACnC/B,EAAkB0C,IAAWtB,GAC/BA,EAAwB/D,QACxBuF,EAEJ,OACEjJ,IAAAC,cAACgG,EAAW,CACVpF,IAAK,OAAOiI,EACZpF,IAAKA,EACLwC,WAAYA,EACZC,WAAYA,EACZC,eAAgBA,EAChBC,gBAAiBA,EACjB7D,QAAS0F,EACT5B,YAAa6B,GAEZY,IAAWrB,GAAsBA,EAAmBhE,QAAOuF,IAiBlE,OACEjJ,IAAAC,cAAA,OAAKC,UAAU,YACbF,IAAAC,cAAA,OAAKC,UAAU,oBACbF,IAAAC,cAAA,OAAKC,UAAU,mBACbF,IAAAC,cAAA,OACEC,UAAWsG,YAAe,CACxB,sBACCW,GAAqB,iCAExB3E,QA9DkB0G,KAC1B,MAAMC,GAAiBjC,EAAQ,GAAK,GAGhCY,GACFA,EAHyBqB,EAAgBjC,EAAQF,EAAO,EAAIA,EAGxBmC,KA2D9BnJ,IAAAC,cAACmJ,IAAI,CAACC,KAAK,qBAEbrJ,IAAAC,cAAA,OAAKC,UAAU,2BACZoJ,kBAAOlB,EAAW,YAAa,CAAEJ,YAEpChI,IAAAC,cAAA,OACEC,UAAWsG,YAAe,CACxB,kBACCY,GAAiB,6BAEpB5E,QAnFc+G,KACtB,MAAMC,GAAatC,EAAQ,GAAK,GAG5BW,GACFA,EAHqB2B,EAAYtC,EAAQF,EAAO,EAAIA,EAGxBwC,KAgFtBxJ,IAAAC,cAACmJ,IAAI,CAACC,KAAK,uBAGfrJ,IAAAC,cAAA,OAAKC,UAAU,wBACZQ,IAAM,EAAG,GAAGC,IAAK8I,GAChBzJ,IAAAC,cAAA,OAAKC,UAAU,sBAAsBW,IAAK,OAAO4I,GAC9CH,kBAAOV,EAAaa,GAAI,SAAU,CAAEzB,OAAQA,QAKrDhI,IAAAC,cAAA,OAAKC,UAAU,kBAAkBwJ,IAAMd,EAAc,GAAGjI,IA9C3CgJ,IACf,GAAwB,IAApBA,EAASC,OACX,OAAO,KAET,MAAMC,EAAUC,kBAAWH,EAAS,IACpC,OACE3J,IAAAC,cAAA,OAAKC,UAAU,iBAAiBW,IAAK,QAAQgJ,GAC1CF,EAAShJ,IAAIkI,S,wBC3FtB,MAAMkB,EAAiBtG,IACrB,MAAMuG,EAAQC,kBAAW,IAAIlE,MAC7B,OAAOtC,GAAQuG,GAASvG,GAAQyG,kBAAQF,EAAO,IAsRlCG,MAnR0CvK,IAAU,IAAAwK,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACjE,MAAOC,EAAUC,GAAeC,eAC1B,EAACC,EAAQ,EAAEC,GAAeC,mBAA2BnL,EAAMiL,WAC3D,EAACG,EAAM,EAAEC,GAAaF,mBAA2BnL,EAAMoL,SACvD,EAACE,EAAU,EAAEC,GAAiBJ,mBAClB,QAD0BX,EAC1CxK,EAAMsL,kBAAU,IAAAd,IAAI,CAAEpD,KAAMC,kBAAQ,IAAIlB,MAASmB,MAAOjD,kBAAS,IAAI8B,SAEjE,EAACqF,EAAkB,EAAEC,GAAuBN,oBAAkB,IAC9D,EAACO,EAAuB,EAAEC,GAA8BR,mBAGpD,MAEJ7C,EAAkBxE,IACtB,MAAM,kBAAE8H,GAAsB5L,EAE9B,GAAIwL,IAAuBK,IAAMZ,IAAaa,kBAAQhI,EAAKmH,GACzDI,EAAUvH,GACV2H,GAAoB,GACpBE,EAA2B,MAEvB3L,EAAM+L,gBACR/L,EAAM+L,oBAAe1C,GAGnBuC,GACFA,EAAkBX,EAAUnH,OAEzB,CAIL,GAHAoH,EAAYpH,GACZ6H,EAA2B,MAEvB3L,EAAMgM,SAAU,CAClB,MAAMC,EAAK,IAAI9F,KACbA,KAAK+F,IAAIpI,EAAIM,cAAeN,EAAIO,WAAYP,EAAIvB,UAAYvC,EAAMgM,WAEpEX,EAAUY,GAENL,GACFA,EAAkB9H,EAAKmI,QAGzBZ,OAAUhC,GACVoC,GAAoB,GAGlBzL,EAAMmM,kBACRnM,EAAMmM,iBAAiBrI,KAKvByE,EAAsBzE,IAExB0H,IACCK,IAAMZ,IAAamB,kBAAQtI,EAAKmH,IAAaa,kBAAQhI,EAAKmH,KAE3DI,EAAUvH,IAkCRsG,EAAQC,kBAAW,IAAIlE,MAEvBkG,EAAoBf,EAAWlE,KAC/BkF,EAAqBhB,EAAWhE,MAEhCiF,GAAuBD,EAAqB,GAAK,GACjDE,EACJD,EAAsBD,EAAqBD,EAAoB,EAAIA,EAE/DI,EAAyB5I,IACVsG,EAActG,KAG7BgI,IAAMT,IACLS,IAAMZ,IAAamB,kBAAQvI,EAAMoH,IACjCY,IAAMZ,IACPyB,kBAAiB7I,EAAM,CAAEpC,MAAO4I,kBAAWY,GAAWtJ,IAAKgL,kBAASvB,MAGpEwB,EAAgC/I,GACpC6H,IACCgB,kBAAiB7I,EAAM,CAAEpC,MAAO4I,kBAAWY,GAAYtJ,IAAKgL,kBAASvB,MACtEsB,kBAAiB7I,EAAM,CACrBpC,MAAO4I,kBAAWqB,EAAwBjK,OAC1CE,IAAKgL,kBAASjB,EAAwB/J,OAG1CkL,oBAAU,KAIR,GAHA3B,EAAYlL,EAAMiL,UAClBI,EAAUrL,EAAMoL,QAEZH,GAAYG,EAAQ,KAAA0B,EACtB,MAAMC,EAA8B,QAA1BD,EAAGhC,aAAQ,EAARA,EAAUkC,qBAAa,IAAAF,IAAI,EACxC,IAAIG,EAAc,IAAI9G,KAAK8E,GACvBiC,EAAY,IAAI/G,KAAKiF,GAGrB+B,EAAeJ,EACnB,IAAK,IAAIlD,EAAI,EAAGA,GAAKkD,EAAMlD,IAAK,CAC9B,MAAMuD,EAAY,IAAIjH,KAAK8E,GAC3BmC,EAAU9K,QAAQ8K,EAAU7K,UAAYsH,GACpCM,EAAciD,IAChBD,IAIJF,EAAY3K,QAAQ2K,EAAY1K,UAAY4K,GAC5CD,EAAU5K,QAAQ4K,EAAU3K,UAAYwK,GAExCpB,EAA2B,CAAElK,MAAOwL,EAAatL,IAAKuL,IAElDlN,EAAM4L,mBACR5L,EAAM4L,kBAAkBX,EAAUG,GAGhCL,GACFA,EAAYsC,YAAiBN,MAGhC,CAAe,QAAftC,EAACzK,EAAMiL,gBAAQ,IAAAR,OAAA,EAAdA,EAAgB6C,UAAuB,QAAd5C,EAAE1K,EAAMoL,cAAM,IAAAV,OAAA,EAAZA,EAAc4C,UAAWxC,aAAQ,EAARA,EAAUkC,gBAElEH,oBAAU,KACJ7M,EAAMiL,UACRM,EAAc,CAAEjE,MAAOtH,EAAMiL,SAAS5G,WAAY+C,KAAMpH,EAAMiL,SAAS7G,iBAExE,CAAe,QAAfuG,EAAC3K,EAAMiL,gBAAQ,IAAAN,OAAA,EAAdA,EAAgB2C,YAEpBT,oBAAU,KACH/B,WAAUyC,aACb5B,EAA2B,MAC3B0B,YAAiB,KAElB,CAACvC,aAAQ,EAARA,EAAUyC,aAEd,MAAMC,EAAyBT,IACzBhC,GACFA,EAAYsC,YAAiBN,KAIjC,OACE3M,IAAAC,cAAA,OAAKC,UAAU,+BACbF,IAAAC,cAAA,OAAKC,UAAU,qBACbF,IAAAC,cAAA,OAAKC,UAAU,2BACbF,IAAAC,cAAC8G,EAAQ,CACPC,KAAMiF,EACN/E,MAAOgF,EACPvE,WAAYO,EACZN,eAAgBO,EAChBL,gBAvHkBoB,KAC1B,MAAM,MAAEhC,EAAK,KAAEF,GAASkE,EAElB/B,GAAiBjC,EAAQ,GAAK,GAG9BmG,EAAgB,CAAErG,KAFGmC,EAAgBjC,EAAQF,EAAO,EAAIA,EAEZE,MAAOiC,GAEzDgC,EAAckC,GAEVzN,EAAM0N,oBACR1N,EAAM0N,mBAAmBD,IA6GnBlG,kBAAmBuE,kBACjB,IAAI3F,KAAKkG,EAAmBC,GAC5BvD,kBAAWqB,IAEb5C,eAAe,EACfI,qBAAsB6E,EACtB9E,qBAAuB9D,GACrBsG,EAActG,IACb7D,EAAM2H,sBAAwB3H,EAAM2H,qBAAqB9D,GAE5DgE,wBAA0BhE,IACxB,MAAM8J,EAAU3N,EAAM6H,wBAClB7H,EAAM6H,wBAAwBhE,GAC9B,GAIJ,OAHI+I,EAA6B/I,IAC/B8J,EAAQtL,KAAK,qCAERsL,GAET7F,mBAAoB9H,EAAM8H,mBAC1BM,OAAoB,QAAdwC,EAAE5K,EAAMoI,cAAM,IAAAwC,IAAIgD,IACxBnG,gBAAgB,KAGpBrH,IAAAC,cAAA,OAAKC,UAAU,yBACbF,IAAAC,cAAC8G,EAAQ,CACPC,KAAMoF,EACNlF,MAAOiF,EACPxE,WAAYO,EACZN,eAAgBO,EAChBN,YAvIc0B,KACtB,MAAM,MAAErC,EAAK,KAAEF,GAASkE,EAElB1B,GAAatC,EAAQ,GAAK,GAG1BmG,EAAgB,CAAErG,KAFDwC,EAAYtC,EAAQF,EAAO,EAAIA,EAERE,MAAOsC,GAErD2B,EAAckC,GAEVzN,EAAM0N,oBACR1N,EAAM0N,mBAAmBD,IA6HnBlG,mBAAmB,EACnBK,qBAAsB6E,EACtB9E,qBAAuB9D,GACrBsG,EAActG,IACb7D,EAAM2H,sBAAwB3H,EAAM2H,qBAAqB9D,GAE5DgE,wBAA0BhE,IACxB,MAAM8J,EAAU3N,EAAM6H,wBAClB7H,EAAM6H,wBAAwBhE,GAC9B,GAIJ,OAHI+I,EAA6B/I,IAC/B8J,EAAQtL,KAAK,qCAERsL,GAET7F,mBAAoB9H,EAAM8H,mBAC1BM,OAAoB,QAAdyC,EAAE7K,EAAMoI,cAAM,IAAAyC,IAAI+C,IACxBnG,gBAAgB,OAMrBqD,aAAQ,EAARA,EAAUyC,aACTnN,IAAAC,cAAA,OAAKC,UAAU,+BACbF,IAAAC,cAAA,QACEC,UAAW,sCACkB,IAA3BwK,EAASkC,cAAsB,2CAA6C,IAE9EpK,QAASA,IAAM4K,EAAsB,IAErCpN,IAAAC,cAACwN,QAAK,KAAC,eAETzN,IAAAC,cAAA,QACEC,UAAW,qCACkB,IAA3BwK,EAASkC,cAAsB,2CAA6C,IAE9EpK,QAASA,IAAM4K,EAAsB,IACtC,OACUpN,IAAAC,cAACwN,QAAK,KAAC,QAElBzN,IAAAC,cAAA,QACEC,UAAW,qCACkB,IAA3BwK,EAASkC,cAAsB,2CAA6C,IAE9EpK,QAASA,IAAM4K,EAAsB,IACtC,OACUpN,IAAAC,cAACwN,QAAK,KAAC,SAElBzN,IAAAC,cAAA,QACEC,UAAW,qCACkB,IAA3BwK,EAASkC,cAAsB,2CAA6C,IAE9EpK,QAASA,IAAM4K,EAAsB,IACtC,OACUpN,IAAAC,cAACwN,QAAK,KAAC,Y,YCtKbC,IAtH+BtI,IAQxC,IARyC,MAC7C7E,EAAK,YACLoN,EAAW,SACX/B,EAAQ,eACRgC,EAAc,WACdC,EAAU,cACVC,EAAa,SACb3N,GACDiF,EACC,MAAM,EAAEtF,GAAMC,uBACRgO,EAAwB,oBAAXC,OAAyBA,OAAOC,WAAW,4BAAyBhF,GAEjF,EAACiF,EAAgB,EAAEC,GAAuBpD,mBAAgC,OAC1E,EAACqD,EAAa,EAAEC,GAAoBtD,mBAAgC,OACpE,EAACuD,EAAY,EAAEC,GAAmBxD,mBAAgC,OAElE,OAAEyD,EAAM,WAAEC,GAAeC,YAAUR,EAAkBE,EAAe,CACxEO,UAAW,MACXC,UAAW,CACT,CACEvF,KAAM,SACNrI,QAAS,CACP6N,OAAQ,CAAC,EAAG,MAGhB,CACExF,KAAM,kBACNrI,QAAS,CACP8N,QAAS,KAGb,CAAEzF,KAAM,QAASrI,QAAS,CAAE+N,QAAST,OAInCU,EAAsC5O,IACtC8N,IAAqBA,EAAiBe,SAAS7O,EAAMC,SACnDyN,GAAeA,GAAc,IAIrCrB,oBAAU,KACRyC,SAASC,iBAAiB,YAAaH,GAChC,KACLE,SAASE,oBAAoB,YAAaJ,MAI9C,MAAMK,EAA8DA,KAC9DvB,GACFA,GAAc,IAYlB,OACE9N,IAAAC,cAAA,OACEC,UAAU,wDACVoP,IAAKnB,GAELnO,IAAAC,cAAA,OAAKC,UAAU,sBACX0N,GAAkB5N,IAAAC,cAACmJ,IAAI,CAACC,KAAK,iBAC/BrJ,IAAAC,cAAA,SAAOC,UAAU,eAAeJ,EAAE,cAClCE,IAAAC,cAAA,SACEqC,KAAK,OACLiN,UAAQ,EACRhP,MAAOA,WAAOsK,SAAWvB,kBAAO/I,EAAMsK,SAAU,cAAgB,GAChE3K,UAAU,cACVsP,YAAa1P,EAAE,kBACf0C,QAAS6M,KAIbrP,IAAAC,cAAA,OAAKC,UAAU,qBACbF,IAAAC,cAAA,SAAOC,UAAU,eAAeJ,EAAE,WAClCE,IAAAC,cAAA,SACEqC,KAAK,OACLiN,UAAQ,EACRhP,MAAOA,WAAOyK,OAAS1B,kBAAO/I,EAAMyK,OAAQ,cAAgB,GAC5D9K,UAAU,cACVsP,YAAa1P,EAAE,eACf0C,QAAS6M,KAGbrP,IAAAC,cAAA,MAAAwP,OAAAC,OAAA,CACEJ,IAAKjB,EACLnO,UAAWsG,YAAe,CACxB,aACA,uBACA,4BACAmH,GAAe,uBAEjBgC,MAAO5B,WAAK6B,QAAUpB,EAAOqB,YAAS5G,GAClCwF,EAAWoB,QAEf7P,IAAAC,cAACkK,EAAe,CACdU,SAAUtK,aAAK,EAALA,EAAOsK,SACjBG,OAAQzK,aAAK,EAALA,EAAOyK,OACfY,SAAUA,EACViC,WAAYA,EACZtG,qBAAuB9D,GAASqM,kBAASrM,EAAMwG,kBAAW,IAAIlE,OAC9DyF,kBAtDsBuE,CAAClF,EAAiBG,KAC1C7K,IACFA,EAAS,CAAE0K,WAAUG,WAEjB8C,GAAeA,GAAc,QAoD9BC,aAAG,EAAHA,EAAK6B,UACJ5P,IAAAC,cAAA,OAAKC,UAAU,mBAAmBoP,IAAKf,EAAiBoB,MAAOnB,EAAOwB,Y,qBCvIhF,IAAIC,EAAkB,EAAQ,QAC1BC,EAAiB,EAAQ,QACzBC,EAAe,EAAQ,QACvBC,EAAU,EAAQ,QAmBtBnN,EAAOC,QATP,SAA0BE,EAAQiN,GAChC,OAAO,SAASlN,EAAYE,GAC1B,IAAIiN,EAAOF,EAAQjN,GAAc8M,EAAkBC,EAC/C5M,EAAc+M,EAAcA,IAAgB,GAEhD,OAAOC,EAAKnN,EAAYC,EAAQ+M,EAAa9M,EAAU,GAAIC,M,kCCL/D,wTAGaiN,EAAYC,IAAa,CACpClO,KAFuB,wBAGvBkO,UAIWC,EAAqBD,IAAa,CAC7ClO,KAFiC,kCAGjCkO,UAIWE,EAAgBC,IAAkB,CAC7CrO,KAF4B,6BAG5BqO,cAIWC,EAAkBC,IAAoB,CACjDvO,KAF8B,+BAG9BuO,gBAIWC,EAAoBC,IAAsB,CACrDzO,KAFgC,iCAGhCyO,kBAIWC,EAAwBC,IAAkB,CACrD3O,KAFsC,uCAGtC2O,cAIWC,EAAyBD,IAAkB,CACtD3O,KAFuC,wCAGvC2O,cAYWE,EAAoC,CAC/CX,WAAOvH,GAiCImI,EAAiB,SAC5B5L,EACA6L,QADmB,IAAnB7L,MAAsB2L,GAatB,MA5CiBG,EAAC9L,EAAqB6L,KACvC,OAAQA,EAAO/O,MACb,IAzDqB,wBA0DnB,MAAO,IAAKkD,EAAOgL,MAAQa,EAAuCb,OACpE,IArD+B,kCAsD7B,MAAO,IAAKhL,EAAO+L,eAAiBF,EAAgDb,OACtF,IAjD0B,6BAkDxB,MAAO,IAAKhL,EAAOmL,UAAYU,EAA2CV,WAC5E,IA7C4B,+BA8C1B,MAAO,IAAKnL,EAAOgM,WAAaH,EAA6CR,aAC/E,IAzC8B,iCA0C5B,MAAO,IACFrL,EACHuL,cAAgBM,EAA+CN,eAEnE,IAxCoC,uCAyClC,MAAO,IACFvL,EACHiM,kBAAoBJ,EAAmDJ,WAE3E,IAvCqC,wCAwCnC,MAAO,IACFzL,EACHkM,mBAAqBL,EAAoDJ,WAE7E,QACE,OAAOzL,IAQM8L,CAAW9L,EAAO6L,K,uBCxGrC,IAAIM,EAAkB,EAAQ,QAC1BC,EAAmB,EAAQ,QAM3BC,EAHcpC,OAAOqC,UAGQD,eAyB7BE,EAAUH,GAAiB,SAAS/M,EAAQtE,EAAOM,GACjDgR,EAAeG,KAAKnN,EAAQhE,GAC9BgE,EAAOhE,GAAKoB,KAAK1B,GAEjBoR,EAAgB9M,EAAQhE,EAAK,CAACN,OAIlC0C,EAAOC,QAAU6O,G,kCCxCjB,0EAyCe,SAASE,EAAUxO,EAAMzC,GACtC,IAAIkR,EAAiBC,EACrB,YAAa,EAAGjR,WAChB,IAAIkR,EAAe,kBAAO3O,GAC1B,GAAIzB,MAAMoQ,EAAa3Q,WACrB,MAAM,IAAIC,WAAW,sBAEvB,IAAI4H,EAAS+I,OAAgG,QAAxFH,EAAkBlR,aAAyC,EAASA,EAAQsI,cAAwC,IAApB4I,EAA6BA,EAAkB,YAChKI,EAAiBD,OAA8G,QAAtGF,EAAwBnR,aAAyC,EAASA,EAAQsR,sBAAsD,IAA1BH,EAAmCA,EAAwB,YACtM,GAAe,aAAX7I,GAAoC,UAAXA,EAC3B,MAAM,IAAI5H,WAAW,wCAEvB,GAAuB,SAAnB4Q,GAAgD,SAAnBA,GAAgD,aAAnBA,EAC5D,MAAM,IAAI5Q,WAAW,wDAEvB,IAAImD,EAAS,GACT0N,EAAW,GACXC,EAA2B,aAAXlJ,EAAwB,IAAM,GAC9CmJ,EAA2B,aAAXnJ,EAAwB,IAAM,GAGlD,GAAuB,SAAnBgJ,EAA2B,CAC7B,IAAI5O,EAAM,YAAgB0O,EAAajQ,UAAW,GAC9C+E,EAAQ,YAAgBkL,EAAanO,WAAa,EAAG,GACrD+C,EAAO,YAAgBoL,EAAapO,cAAe,GAGvDa,EAAS,GAAG4B,OAAOO,GAAMP,OAAO+L,GAAe/L,OAAOS,GAAOT,OAAO+L,GAAe/L,OAAO/C,GAI5F,GAAuB,SAAnB4O,EAA2B,CAE7B,IAAIzD,EAASuD,EAAaM,oBAC1B,GAAe,IAAX7D,EAAc,CAChB,IAAI8D,EAAiBjQ,KAAKiC,IAAIkK,GAC1B+D,EAAa,YAAgBlQ,KAAKmQ,MAAMF,EAAiB,IAAK,GAC9DG,EAAe,YAAgBH,EAAiB,GAAI,GAEpDlO,EAAOoK,EAAS,EAAI,IAAM,IAC9B0D,EAAW,GAAG9L,OAAOhC,GAAMgC,OAAOmM,EAAY,KAAKnM,OAAOqM,QAE1DP,EAAW,IAEb,IAAIQ,EAAO,YAAgBX,EAAalO,WAAY,GAChD8O,EAAS,YAAgBZ,EAAajO,aAAc,GACpD8O,EAAS,YAAgBb,EAAahO,aAAc,GAGpD8O,EAAuB,KAAXrO,EAAgB,GAAK,IAGjCsO,EAAO,CAACJ,EAAMC,EAAQC,GAAQG,KAAKX,GAGvC5N,EAAS,GAAG4B,OAAO5B,GAAQ4B,OAAOyM,GAAWzM,OAAO0M,GAAM1M,OAAO8L,GAEnE,OAAO1N,I,qBClGT,IAAIwO,EAAY,EAAQ,QACpBC,EAAiB,EAAQ,QACzBC,EAAY,EAAQ,QAGpBC,EAAa9Q,KAAK+Q,KAClBC,EAAYhR,KAAKC,IA2CrBM,EAAOC,QApBP,SAAeyQ,EAAOC,EAAMC,GAExBD,GADGC,EAAQP,EAAeK,EAAOC,EAAMC,QAAkB5K,IAAT2K,GACzC,EAEAF,EAAUH,EAAUK,GAAO,GAEpC,IAAIhK,EAAkB,MAAT+J,EAAgB,EAAIA,EAAM/J,OACvC,IAAKA,GAAUgK,EAAO,EACpB,MAAO,GAMT,IAJA,IAAIE,EAAQ,EACRC,EAAW,EACXlP,EAASmP,MAAMR,EAAW5J,EAASgK,IAEhCE,EAAQlK,GACb/E,EAAOkP,KAAcV,EAAUM,EAAOG,EAAQA,GAASF,GAEzD,OAAO/O,I,qBC9CT,IAAIoP,EAAc,EAAQ,QA+B1BhR,EAAOC,QArBP,SAAwBgR,EAAUC,GAChC,OAAO,SAAShR,EAAYE,GAC1B,GAAkB,MAAdF,EACF,OAAOA,EAET,IAAK8Q,EAAY9Q,GACf,OAAO+Q,EAAS/Q,EAAYE,GAM9B,IAJA,IAAIuG,EAASzG,EAAWyG,OACpBkK,EAAQK,EAAYvK,GAAU,EAC9BwK,EAAW3E,OAAOtM,IAEdgR,EAAYL,MAAYA,EAAQlK,KACa,IAA/CvG,EAAS+Q,EAASN,GAAQA,EAAOM,KAIvC,OAAOjR,K,6FCvBJ,SAASkR,EACdC,GAEA,MAAMC,GAAOD,aAAQ,EAARA,EAAUE,SAAUC,gDAC3BC,GAAUJ,aAAQ,EAARA,EAAUK,SAAUF,uCAC9BG,EAAQC,IAEd,GAAIpJ,IAAM8I,GACR,MAAMO,MAAM,4CAGd,GAAIrJ,IAAMiJ,GACR,MAAMI,MAAM,+CAGd,MAAO,CACLC,KAAMR,EACNI,OAAQD,EACRE,MAAOA,GAIX,MAAMC,EAAmBA,KAA0B,IAAAG,EACjD,IAAIJ,EAAuB,KAO3B,MAN8B,oBAAnBK,iBACTL,EAAQK,eAAeC,QAAQ,UAEnB,OAAVN,GAA0C,oBAAjBO,eAC3BP,EAAQO,aAAaD,QAAQ,UAEnB,QAAZF,EAAOJ,SAAK,IAAAI,SAAI/L,I,mBCblBhG,EAAOC,QAXP,SAAyByQ,EAAOvQ,EAAQC,EAAUC,GAIhD,IAHA,IAAIwQ,GAAS,EACTlK,EAAkB,MAAT+J,EAAgB,EAAIA,EAAM/J,SAE9BkK,EAAQlK,GAAQ,CACvB,IAAIrJ,EAAQoT,EAAMG,GAClB1Q,EAAOE,EAAa/C,EAAO8C,EAAS9C,GAAQoT,GAE9C,OAAOrQ,I,wSC8CF,MAAM8R,EAAiBC,MAC5BC,EACAC,EACAC,EACA1V,EACAiI,EACA6M,KAEA,MAAMG,EAAON,+CACPE,EAASF,uCAEf,MAGIa,EAAMG,SAAWH,EAAMI,QAAUJ,EAAMK,eACxCL,EAAMM,MACNN,EAAMzJ,IACNyJ,EAAMO,OAEP,OAAOC,QAAQC,SAEjB,MAAMC,EAA2B,CAC/BjB,OACAJ,SACAC,MAAOA,eAAS3L,GAEZgN,EAAoEC,EACxEZ,EAAMM,KACNN,EAAMzJ,GACNyJ,EAAMO,MACNP,EAAMG,QACNH,EAAMI,OACNJ,EAAMa,YACNb,EAAMc,SACNd,EAAMe,SACNf,EAAMgB,mBACNhB,EAAMiB,gBAGR,IACE,IAAIC,EAA4C,GAC5CC,EAAoD,GAEpDnB,EAAMI,QACRc,EAAwBjB,EAAOmB,OAC5BC,IAAC,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,MAC+B,YAAnB,QAAZJ,EAAAD,EAAEM,kBAAU,IAAAL,OAAA,EAAZA,EAAcM,gBACD,QAAbL,EAACF,EAAEM,kBAAU,IAAAJ,GAA+B,QAA/BC,EAAbD,EAAqCM,eAAO,IAAAL,GAAS,QAATC,EAA5CD,EAA8CM,eAAO,IAAAL,GAAQ,QAARC,EAArDD,EAAuDrB,cAAM,IAAAsB,OAAhD,EAAbA,EAA+DK,UAAW/B,EAAMI,SAEpFe,EAA4BjB,EAAWkB,OACpCC,IAAC,IAAAW,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,MAC+B,YAAnB,QAAZJ,EAAAX,EAAEM,kBAAU,IAAAK,OAAA,EAAZA,EAAcJ,gBACD,QAAbK,EAACZ,EAAEM,kBAAU,IAAAM,GAA+B,QAA/BC,EAAbD,EAAqCJ,eAAO,IAAAK,GAAS,QAATC,EAA5CD,EAA8CJ,eAAO,IAAAK,GAAQ,QAARC,EAArDD,EAAuD/B,cAAM,IAAAgC,OAAhD,EAAbA,EAA+DL,UAAW/B,EAAMI,UAE3EJ,EAAMG,SACfe,EAAwBjB,EAAOmB,OAC5BC,IAAC,IAAAgB,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,MACgC,aAAnB,QAAZX,EAAAhB,EAAEM,kBAAU,IAAAU,OAAA,EAAZA,EAAcT,gBACA,QAAbU,EAACjB,EAAEM,kBAAU,IAAAW,GAAgC,QAAhCC,EAAbD,EAAsCT,eAAO,IAAAU,GAAS,QAATC,EAA7CD,EAA+CT,eAAO,IAAAU,GAAS,QAATC,EAAtDD,EAAwDrC,eAAO,IAAAsC,OAAlD,EAAbA,EAAiEV,UAC/D/B,EAAMG,SACkC,aAA/B,QAAZuC,EAAArB,EAAEM,kBAAU,IAAAe,GAAY,QAAZC,EAAZD,EAAcf,kBAAU,IAAAgB,OAAZ,EAAZA,EAA0Bf,gBACZ,QAAbgB,EAACvB,EAAEM,kBAAU,IAAAiB,GAAY,QAAZC,EAAZD,EAAcjB,kBAAU,IAAAkB,GAAgC,QAAhCC,EAAzBD,EAAkDhB,eAAO,IAAAiB,GAAS,QAATC,EAAzDD,EAA2DhB,eAAO,IAAAiB,GAAS,QAATC,EAAlED,EAAoE5C,eAAO,IAAA6C,OAA9D,EAAbA,EAA6EjB,UAC3E/B,EAAMG,UAEdgB,EAA4BjB,EAAWkB,OACpCC,IAAC,IAAA4B,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,MACgC,aAAnB,QAAZX,EAAA5B,EAAEM,kBAAU,IAAAsB,OAAA,EAAZA,EAAcrB,gBACA,QAAbsB,EAAC7B,EAAEM,kBAAU,IAAAuB,GAAgC,QAAhCC,EAAbD,EAAsCrB,eAAO,IAAAsB,GAAS,QAATC,EAA7CD,EAA+CrB,eAAO,IAAAsB,GAAS,QAATC,EAAtDD,EAAwDjD,eAAO,IAAAkD,OAAlD,EAAbA,EAAiEtB,UAC/D/B,EAAMG,SACkC,aAA/B,QAAZmD,EAAAjC,EAAEM,kBAAU,IAAA2B,GAAY,QAAZC,EAAZD,EAAc3B,kBAAU,IAAA4B,OAAZ,EAAZA,EAA0B3B,gBACZ,QAAb4B,EAACnC,EAAEM,kBAAU,IAAA6B,GAAY,QAAZC,EAAZD,EAAc7B,kBAAU,IAAA8B,GAAgC,QAAhCC,EAAzBD,EAAkD5B,eAAO,IAAA6B,GAAS,QAATC,EAAzDD,EAA2D5B,eAAO,IAAA6B,GAAS,QAATC,EAAlED,EAAoExD,eAAO,IAAAyD,OAA9D,EAAbA,EAA6E7B,UAC3E/B,EAAMG,YAGde,EAAwBjB,EACxBkB,EAA4BjB,GAG9B,MAAM2D,QAAsBC,iBAAOpD,EAAQC,GAAeoD,KAAMC,GACzDhE,EAAMM,MAASN,EAAMzJ,IAAOyJ,EAAMO,MAGhC0D,EACL/C,EACAC,EACA6C,EACAhE,EAAMO,MACNP,EAAMM,KACNN,EAAMzJ,GACN/L,EACAiI,GAVO+N,QAAQC,UAcnB,OAAOyD,IAAOL,EAAgBxC,GAAMA,EAAE9V,KACtC,MAAO4Y,GAEP,OADAC,QAAQC,MAAMF,GACP3D,QAAQC,WAING,EAA0B,SACrCN,EACA/J,EACAgK,EACAJ,EACAC,EACAS,EACAC,EACAC,EACAC,EACAC,QAD0B,IAA1BD,MAA6B,QACP,IAAtBC,MAAyB,GAGzB,IAAIqD,OAAoC3Q,EACpC4Q,GAAuB,EACvBC,GAAsB,EAW1B,YATgB7Q,IAAZwM,GACFmE,EAAgBnE,EAChBoE,GAAuB,QACH5Q,IAAXyM,IACTkE,EAAgBlE,EAChBoE,GAAsB,GAIjB,CACLC,SAAU,EACVC,QAAS,CACPC,aAAc,CAAC,GACfC,WAAY,EACZC,YAAa,CACXC,GAAIrY,OAAO6X,GACXS,UAAWR,EACXS,SAAUR,EACVS,QAAQ,EACRC,YAAY,GAEd3E,MAAO4E,EAAgB5E,GACvBhL,SAAU+K,EACV5K,OAAQa,EACRyK,mBAAoBA,EACpBC,eAAgBA,EAChBmE,gBAAgB,EAChBvE,YAAaA,EACbC,SAAUA,EACVC,SAAUA,KAKHsE,EAAoBA,CAC/B9E,EACAD,EACA/J,EACA+O,EACAC,EACAC,KAEA,MAAM/F,EAAON,+CACPE,EAASF,uCAEf,KAAyBmG,GAAgBhF,GAAS/J,GAAOgK,GACvD,OAAOC,QAAQC,SAGjB,MAAMC,EAA2B,CAC/BjB,OACAJ,UAGIoG,EAAU,CACdhB,SAAU,EACVC,QAAS,CACPE,WAAY,EACZc,YAAa,EACbJ,YAAaA,EACb/P,SAAU+K,EACV5K,OAAQa,EACRgK,MAAO4E,EAAgB5E,GACvB6E,gBAAgB,IAIpB,OAAOO,kBAAQjF,EAAQ+E,EAASF,EAAQC,IAGpCvB,EAAsBA,CAC1BhE,EACAC,EACA0F,EACArF,EACAD,EACA/J,EACA/L,EACAiI,IAEOoT,IAAA,GAAA1U,OAAAC,YACF6O,EAAO5U,IAAKya,GAAUC,EAAkBvb,EAAGiI,EAAUmT,EAAcrF,EAAOD,EAAM/J,EAAIuP,KAAO1U,YAC3F8O,EAAW7U,IAAK2a,GACjBD,EAAkBvb,EAAGiI,EAAUmT,EAAcrF,EAAOD,EAAM/J,OAAI5C,EAAWqS,OAKlEC,EAA4BA,CACvCC,EACAC,KAEA,IAAIhQ,IAAMgQ,KAAShQ,IAAMgQ,EAAKxE,YAI9B,OAAIyE,IAAID,EAAKxE,WAAY,gBAAkBuE,EAClCD,EAA0B,qBAAsBE,EAAKxE,YAGvDwE,EAAKxE,YAGRoE,EAAoBA,CACxBvb,EACAiI,EACA4T,EACA9F,EACAD,EACA/J,EACAuP,EACAQ,KACG,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAvX,EAAAwX,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GAAAC,GACH,MAAMC,GAAUhD,EAAQA,SAAc,QAATS,EAALT,EAAOjE,eAAO,IAAA0E,GAAS,QAATC,EAAdD,EAAgBzE,eAAO,IAAA0E,OAAlB,EAALA,EAAyBsC,QAAUxC,SAAkB,QAATG,EAATH,EAAWzE,eAAO,IAAA4E,GAAS,QAATC,EAAlBD,EAAoB3E,eAAO,IAAA4E,OAAlB,EAATA,EAA6BoC,QAClFC,GAAczC,IAAcR,EAClC,IAAIkD,GAAY1C,SAAkB,QAATK,EAATL,EAAWzE,eAAO,IAAA8E,GAAS,QAATC,EAAlBD,EAAoB7E,eAAO,IAAA8E,OAAlB,EAATA,EAA6BtQ,SAC7C,MAAM2S,GAAkB3C,SAAkB,QAATO,EAATP,EAAWzE,eAAO,IAAAgF,GAAS,QAATC,EAAlBD,EAAoB/E,eAAO,IAAAgF,GAAS,QAATC,EAA3BD,EAA6BgC,eAAO,IAAA/B,OAA3B,EAATA,EAAsCkC,gBACxDC,GAAc5C,SAAkB,QAATU,EAATV,EAAWzE,eAAO,IAAAmF,GAAS,QAATC,EAAlBD,EAAoBlF,eAAO,IAAAmF,GAAS,QAATC,EAA3BD,EAA6B6B,eAAO,IAAA5B,OAA3B,EAATA,EAAsCgC,YAEtDD,IAAmBC,KACG,IAApBD,GACFD,GAAYE,GAAc,EACG,IAApBD,KACTD,GAAYE,KAGhB,MAAM/C,GAAOE,EAAM8C,KAAM9H,GAAMA,EAAE+H,QAASN,cAAO,EAAPA,GAASM,OAE7CC,GAAgBra,YACpB,IAAIyB,KAAK8F,GACT4P,IAAQA,GAAKmD,qBACT,IAAI7Y,KACFuD,kBACEuV,kBAAMpD,GAAKmD,qBAAsB,2BAA4B,IAAI7Y,MACjE,eAGJ,IAAIA,KAAK6P,IAIf,GAAKwI,cAASM,KACZ,OAGF,IAAII,GAAYT,GACZC,GAAaK,GAGa,IAA1BP,cAAO,EAAPA,GAASW,iBAAsB,EAC/BC,IAAkBvD,MAElB4C,IACAC,IAAcK,GAKdlD,aAAMjL,OAASiL,GAAKjL,OAASiL,GAAKwD,cACpCD,IAAiB,GAGnB,IAAIE,GAAczD,cAAI,EAAJA,GAAMyD,YACP,IAAAC,GAAAC,GAAAC,GAAAC,GAOVC,GAAAC,GAAAC,GAPP,GAAIpB,IAIF,GAHAa,GAEoB,QAFTC,GACkD,QADlDC,GACR7D,EAA0B,qBAAsBK,UAAU,IAAAwD,IAAgC,QAAhCC,GAA3DD,GAAoFjI,eAAO,IAAAkI,IAChF,QADgFC,GAA3FD,GACIjI,eAAO,IAAAkI,QADgD,EAA3DA,GACa/c,aAAK,IAAA4c,MAAI1D,cAAI,EAAJA,GAAMyD,aACzBZ,GACH,YAGFY,GAEoB,QAFTK,GAC6E,QAD7EC,GACRjE,EAA0B,qBAAsBH,GAA8BjE,eAAO,IAAAqI,IAC3E,QAD2EC,GAAtFD,GACIpI,eAAO,IAAAqI,QAD2E,EAAtFA,GACald,aAAK,IAAAgd,MAAI9D,cAAI,EAAJA,GAAMyD,YAoChC,MAjCmC,CACjCre,IAAKud,cAAO,EAAPA,GAASM,KACd9I,KAAM,IAAI7P,KAAuB,QAAnB0W,EAAChB,cAAI,EAAJA,GAAMiE,oBAAY,IAAAjD,IAAI7G,GACrC/J,GAAI,IAAI9F,KAAqB,QAAjB2W,EAACjB,cAAI,EAAJA,GAAMkE,kBAAU,IAAAjD,IAAI7Q,GACjC+T,YAAuB,QAAZjD,EAAElB,cAAI,EAAJA,GAAMnZ,YAAI,IAAAqa,IAAKvB,EAAQ,EAAI,EACxC7Y,MAA2E,QAAtE6C,EAAgC,QAAhCwX,EAAExB,SAAc,QAATyB,EAALzB,EAAOjE,eAAO,IAAA0F,GAAS,QAATC,EAAdD,EAAgBzF,eAAO,IAAA0F,OAAlB,EAALA,EAAyBva,aAAK,IAAAqa,IAAIhB,SAAkB,QAATmB,EAATnB,EAAWzE,eAAO,IAAA4F,GAAS,QAATC,EAAlBD,EAAoB3F,eAAO,IAAA4F,OAAlB,EAATA,EAA6Bza,aAAK,IAAA6C,SAAI6D,EAC/E4W,SACExB,IAAeW,GACX,QAAUc,EAAWhgB,EAAGsb,EAAOQ,GAC/BmE,EAAYjgB,EAAGiI,EAAU0T,GAAM2C,IACrC4B,MAE+C,QAF1C/C,EACsC,QADtCC,EACH9B,SAAc,QAAT+B,EAAL/B,EAAOjE,eAAO,IAAAgG,GAAS,QAATC,EAAdD,EAAgB/F,eAAO,IAAAgG,OAAlB,EAALA,EAAyB6C,wBAAgB,IAAA/C,IACzCtB,SAAkB,QAATyB,EAATzB,EAAWzE,eAAO,IAAAkG,GAAS,QAATC,EAAlBD,EAAoBjG,eAAO,IAAAkG,OAAlB,EAATA,EAA6B2C,wBAAgB,IAAAhD,SAC7ChU,EACFiX,OAAsC,QAAhC3C,EAAEnC,SAAc,QAAToC,EAALpC,EAAOjE,eAAO,IAAAqG,GAAS,QAATC,EAAdD,EAAgBpG,eAAO,IAAAqG,OAAlB,EAALA,EAAyB0C,aAAK,IAAA5C,SAAItU,EAC1CuH,MAAOiL,aAAMjL,OAASiL,GAAKjL,OAASiL,GAAKwD,YAAcxD,GAAKjL,MAAQ,EACpE4P,IAAKC,YACHjF,GAASQ,EACT/F,EACA,IAAI9P,KAAuB,QAAnB2X,EAACjC,cAAI,EAAJA,GAAMiE,oBAAY,IAAAhC,IAAI9H,GAC/B,IAAI7P,KAAqB,QAAjB4X,EAAClC,cAAI,EAAJA,GAAMkE,kBAAU,IAAAhC,IAAI9R,GAC7B4P,cAAI,EAAJA,GAAM6E,kBACN7E,cAAI,EAAJA,GAAM8E,YAERC,OAAQrF,IAAQC,SAAc,QAATwC,EAALxC,EAAOjE,eAAO,IAAAyG,GAAS,QAATC,EAAdD,EAAgBxG,eAAO,IAAAyG,GAAM,QAANC,EAAvBD,EAAyB4C,YAAI,IAAA3C,OAAxB,EAALA,EAA+Bnd,IAAK+f,GAAQA,aAAG,EAAHA,EAAKtG,KACjEuG,SAAUxF,IAAQC,SAAc,QAAT2C,EAAL3C,EAAOjE,eAAO,IAAA4G,GAAS,QAATC,EAAdD,EAAgB3G,eAAO,IAAA4G,GAAQ,QAARC,EAAvBD,EAAyB4C,cAAM,IAAA3C,OAA1B,EAALA,EAAiCtd,IAAKkgB,GAAUA,aAAK,EAALA,EAAOzG,KACzEzJ,WAAW8K,UAA0B,QAAtByC,GAAJzC,GAAMqF,4BAAoB,IAAA5C,QAAtB,EAAJA,GAA4B6C,KAAMpK,GAAY,IAANA,MAAY,EAC/D9F,aAAa4K,UAA0B,QAAtB0C,GAAJ1C,GAAMqF,4BAAoB,IAAA3C,QAAtB,EAAJA,GAA4B4C,KAAMpK,GAAY,KAANA,MAAa,EAClEmI,UAAWA,GACXE,eAAgBA,GAChBgC,QAASlB,EAAWhgB,EAAGsb,EAAOQ,GAC9BsD,YAAaA,KAKJY,EAAaA,CACxBhgB,EACAsb,EACAQ,KACG,IAAAqF,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACH,GAAIpG,SAAc,QAAT6F,EAAL7F,EAAOjE,eAAO,IAAA8J,GAAS,QAATC,EAAdD,EAAgB7J,eAAO,IAAA8J,GAAvBA,EAAyBO,cAAe,OAAOrG,EAAMjE,QAAQC,QAAQqK,cACzE,GAAI7F,SAAkB,QAATuF,EAATvF,EAAWzE,eAAO,IAAAgK,GAAS,QAATC,EAAlBD,EAAoB/J,eAAO,IAAAgK,GAA3BA,EAA6BK,cAAe,OAAO7F,EAAUzE,QAAQC,QAAQqK,cAEjF,MAAMrD,EAAUhD,EAAQA,SAAc,QAATiG,EAALjG,EAAOjE,eAAO,IAAAkK,GAAS,QAATC,EAAdD,EAAgBjK,eAAO,IAAAkK,OAAlB,EAALA,EAAyBlD,QAAUxC,SAAkB,QAAT2F,EAAT3F,EAAWzE,eAAO,IAAAoK,GAAS,QAATC,EAAlBD,EAAoBnK,eAAO,IAAAoK,OAAlB,EAATA,EAA6BpD,QACxF,GAAKA,EAEL,OAAQA,EAAQG,iBACd,KAAK,EACH,MAAO,GAAGH,EAAQI,eAAe1e,EAAE,UACrC,KAAK,EACH,MAAO,GAAGse,EAAQI,eAAsC,GAAvBJ,EAAQI,YAAmB1e,EAAE,OAASA,EAAE,UAC3E,KAAK,EACH,MAAO,GAAGse,EAAQI,eAAsC,GAAvBJ,EAAQI,YAAmB1e,EAAE,SAAWA,EAAE,cAI3E4hB,EAAa,SAACje,GAClB,YADsB,IAAJA,MAAO,IAAIsC,MACtB,IAAIA,KAAKtC,EAAKke,iBAGjB5B,EAAcA,CAClBjgB,EACAiI,EACA0T,EACA2C,KACG,IAAAwD,EAAAC,EAAAC,EAAAC,EACH,MAAMnM,EAAO6F,EAAOiG,EAAW,IAAI3b,KAAK0V,EAAK5Q,WAAa,KACpDgB,EAAK4P,EAAOiG,EAAW,IAAI3b,KAAK0V,EAAKzQ,SAAW,KAEtD,IAAK4K,IAAS/J,EACZ,OAGF,MAAMc,EAAOrI,YAAiBuH,EAAI+J,GAC5BoM,EAAS5D,SAAgB,QAATwD,EAAPxD,EAAS6D,eAAO,IAAAL,OAAT,EAAPA,EAAkBnD,KAAM9H,IAAMA,aAAC,EAADA,EAAG+H,QAAQjD,aAAI,EAAJA,EAAM8E,aACxD2B,EACmE,QADzDL,EACdG,SAAsB,QAAhBF,EAANE,EAAQG,sBAAc,IAAAL,GAA0C,QAA1CC,EAAtBD,EAAwBrD,KAAM9H,IAAMA,aAAC,EAADA,EAAGmE,eAAgB/S,UAAS,IAAAga,OAA1D,EAANA,EAAkExhB,aAAK,IAAAshB,IAAIG,aAAM,EAANA,EAAQ3Y,KAErF,OAAO8R,IAAQ,CACb7R,kBAAOsM,EAAM,aACbjJ,GAAQ,KAAK7M,EAAE,WAAY,CAAEsiB,eAAgBzV,IAC7CuV,GAAc,KAAKA,IAClB9O,KAAK,KAGGqH,EAAmB5E,IAC9B,IAAIwM,EAA4C,GAoBhD,OAnBAxM,EAAMyM,QAAQ,CAACC,EAAM9Y,KACnB,IAAI+Y,EAAc,CAChB1O,MAAOrK,EACPgZ,IAAK,IAGP,IAAK,IAAIC,EAAI,EAAGA,EAAIH,EAAKI,OAAQD,IAC/BF,EAAYC,IAAIxgB,KAAK,CACnBrB,IAAK,KAIT,IAAK,IAAIgiB,EAAI,EAAGA,EAAIL,EAAKld,SAAUud,IACjCJ,EAAYC,IAAIxgB,KAAK,CACnBrB,IAAK2hB,EAAKM,UAAUD,KAGxBP,EAAapgB,KAAKugB,KAEbH","file":"cc2bfb626f2cb9a80f82554d21e97ceae12791fd-617a1b2722a0b6596386.js","sourcesContent":["import React from \"react\";\nimport { range } from \"lodash\";\nimport { useI18next } from \"gatsby-plugin-react-i18next\";\n\ninterface AgeSelectProps {\n value?: number;\n isLoading?: boolean;\n onChange?: (value: number) => void;\n}\n\nconst AgeSelect: React.FC = (props) => {\n const { t } = useI18next();\n const handleChange: React.ChangeEventHandler = (event) => {\n if (props.onChange) {\n props.onChange(event.target.selectedIndex);\n }\n };\n\n return (\n
\n \n
\n );\n};\n\nexport default AgeSelect;\n","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachDayOfInterval\n * @category Interval Helpers\n * @summary Return the array of dates within the specified time interval.\n *\n * @description\n * Return the array of dates within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Object} [options] - an object with options.\n * @param {Number} [options.step=1] - the step to increment by. The value should be more than 1.\n * @returns {Date[]} the array with starts of days from the day of the interval start to the day of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.step` must be a number greater than 1\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each day between 6 October 2014 and 10 October 2014:\n * const result = eachDayOfInterval({\n * start: new Date(2014, 9, 6),\n * end: new Date(2014, 9, 10)\n * })\n * //=> [\n * // Mon Oct 06 2014 00:00:00,\n * // Tue Oct 07 2014 00:00:00,\n * // Wed Oct 08 2014 00:00:00,\n * // Thu Oct 09 2014 00:00:00,\n * // Fri Oct 10 2014 00:00:00\n * // ]\n */\nexport default function eachDayOfInterval(dirtyInterval, options) {\n var _options$step;\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime();\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n var dates = [];\n var currentDate = startDate;\n currentDate.setHours(0, 0, 0, 0);\n var step = Number((_options$step = options === null || options === void 0 ? void 0 : options.step) !== null && _options$step !== void 0 ? _options$step : 1);\n if (step < 1 || isNaN(step)) throw new RangeError('`options.step` must be a number greater than 1');\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate.setDate(currentDate.getDate() + step);\n currentDate.setHours(0, 0, 0, 0);\n }\n return dates;\n}","import { useI18next } from \"gatsby-plugin-react-i18next\";\nimport React from \"react\";\n\ninterface AmountInputProps {\n label: string;\n value: number;\n isLoading?: boolean;\n min?: number;\n onChange?: (value: number) => void;\n}\n\nconst AmountInput: React.FC = (props) => {\n const { t } = useI18next();\n const handleIncreaseClick: React.MouseEventHandler = (event) => {\n if (props.onChange) {\n props.onChange(props.value + 1);\n }\n };\n\n const handleDecreaseClick: React.MouseEventHandler = (event) => {\n if (props.onChange) {\n props.onChange(Math.max(props.value - 1, props.min ?? 0));\n }\n };\n\n const handleInputChange: React.ChangeEventHandler = (event) => {\n if (props.onChange) {\n const value =\n event.target.valueAsNumber < (props.min ?? 0) ? props.min ?? 0 : event.target.valueAsNumber;\n props.onChange(value);\n }\n };\n\n return (\n
\n \n
\n \n \n \n
\n
\n );\n};\n\nexport default AmountInput;\n","var baseEach = require('./_baseEach');\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseAggregator;\n","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getISODay\n * @category Weekday Helpers\n * @summary Get the day of the ISO week of the given date.\n *\n * @description\n * Get the day of the ISO week of the given date,\n * which is 7 for Sunday, 1 for Monday etc.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the ISO week is 26 February 2012?\n * const result = getISODay(new Date(2012, 1, 26))\n * //=> 7\n */\nexport default function getISODay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var day = date.getDay();\n if (day === 0) {\n day = 7;\n }\n return day;\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // Like `compareAsc` but uses local time not UTC, which is needed\n// for accurate equality comparisons of UTC timestamps that end up\n// having the same representation in local time, e.g. one hour before\n// DST ends vs. the instant that DST ends.\nfunction compareLocalAsc(dateLeft, dateRight) {\n var diff = dateLeft.getFullYear() - dateRight.getFullYear() || dateLeft.getMonth() - dateRight.getMonth() || dateLeft.getDate() - dateRight.getDate() || dateLeft.getHours() - dateRight.getHours() || dateLeft.getMinutes() - dateRight.getMinutes() || dateLeft.getSeconds() - dateRight.getSeconds() || dateLeft.getMilliseconds() - dateRight.getMilliseconds();\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1;\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}\n\n/**\n * @name differenceInDays\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full day periods between two dates. Fractional days are\n * truncated towards zero.\n *\n * One \"full day\" is the distance between a local time in one day to the same\n * local time on the next or previous day. A full day can sometimes be less than\n * or more than 24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 24-hour periods, use this instead:\n * `Math.floor(differenceInHours(dateLeft, dateRight)/24)|0`.\n *\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full days according to the local timezone\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n * // How many full days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 0\n * // How many full days are between\n * // 1 March 2020 0:00 and 1 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 92 days, even in\n * // time zones where DST starts and the\n * // period has only 92*24-1 hours.\n * const result = differenceInDays(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 1)\n * )\n//=> 92\n */\nexport default function differenceInDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareLocalAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarDays(dateLeft, dateRight));\n dateLeft.setDate(dateLeft.getDate() - sign * difference);\n\n // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastDayNotFull = Number(compareLocalAsc(dateLeft, dateRight) === -sign);\n var result = sign * (difference - isLastDayNotFull);\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}","import React, { useContext, useReducer } from \"react\";\nimport { Action, ProductState } from \"./reducer\";\n\ninterface ProviderProps {\n initialState: ProductState;\n reducer: (state: ProductState, action: Action) => ProductState;\n}\n\nconst Store = React.createContext]>>([]);\nStore.displayName = \"ProductStore\";\n\nexport const useProductStore = () => useContext(Store)!;\n\nexport const ProductStoreProvider: React.FC = ({\n children,\n initialState,\n reducer,\n}) => {\n const [state, dispatch] = useReducer(reducer, initialState);\n\n return {children};\n};\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","import isSameDay from \"../isSameDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isToday\n * @category Day Helpers\n * @summary Is the given date today?\n * @pure false\n *\n * @description\n * Is the given date today?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is today\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 6 October 14:00:00 today?\n * const result = isToday(new Date(2014, 9, 6, 14, 0))\n * //=> true\n */\nexport default function isToday(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameDay(dirtyDate, Date.now());\n}","import React from \"react\";\nimport { getDate, isToday } from \"date-fns\";\nimport { buildClassName } from \"../../utils\";\n\ninterface CalendarDayProps {\n day: Date;\n isSelected: boolean;\n isDisabled: boolean;\n isOutsideMonth: boolean;\n extraClassNames?: string[];\n onClick: (date: Date) => void;\n onMouseOver: (date: Date) => void;\n}\n\nconst CalendarDay: React.FC = ({\n day,\n isSelected,\n isDisabled,\n isOutsideMonth,\n extraClassNames = [],\n children,\n onClick,\n onMouseOver,\n}) => {\n const handleClick = () => {\n if (onClick && !isDisabled) {\n onClick(day);\n }\n };\n\n const handleMouseOver = () => {\n if (onMouseOver) {\n onMouseOver(day);\n }\n };\n\n const classNames = buildClassName([\n \"calendar__day\",\n isToday(day) && \"calendar__day--today\",\n isDisabled && \"calendar__day--disabled\",\n isOutsideMonth && \"calendar__day--outside-month\",\n isSelected && \"calendar__day--selected\",\n ...extraClassNames,\n ]);\n\n return (\n
\n {getDate(day).toString().padStart(2, \"0\")}\n {children}\n
\n );\n};\n\nexport default CalendarDay;\n","import {\n addWeeks,\n eachDayOfInterval,\n endOfMonth,\n endOfWeek,\n format,\n getISODay,\n getISOWeek,\n getMonth,\n getYear,\n isSameMonth,\n startOfMonth,\n startOfWeek,\n addDays,\n} from \"date-fns\";\nimport { useI18next } from \"gatsby-plugin-react-i18next\";\nimport { chunk, isFunction, range } from \"lodash\";\nimport React from \"react\";\nimport { getLocale } from \"../../i18n/languages\";\nimport { buildClassName } from \"../../utils\";\nimport Icon from \"../icon\";\nimport CalendarDay from \"./calendar-day\";\n\ninterface CalendarProps {\n year?: number;\n month?: number;\n hasPreviousButton?: boolean;\n hasNextButton?: boolean;\n hasFixedHeight?: boolean;\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n disabledDaysFunction?: (date: Date) => boolean;\n selectedDaysFunction?: (date: Date) => boolean;\n extraClassNamesFunction?: (date: Date) => string[];\n dayContentFunction?: (date: Date) => JSX.Element | null | undefined;\n onDayClick?: (date: Date) => void;\n onDayMouseOver?: (date: Date) => void;\n onNextClick?: (year: number, month: number) => void;\n onPreviousClick?: (year: number, month: number) => void;\n}\n\nconst Calendar: React.FC = ({\n year = getYear(new Date()),\n month = getMonth(new Date()),\n hasPreviousButton = true,\n hasNextButton = true,\n hasFixedHeight = true,\n weekStartsOn = 1,\n disabledDaysFunction,\n selectedDaysFunction,\n extraClassNamesFunction,\n dayContentFunction,\n onDayClick,\n onDayMouseOver,\n onNextClick,\n onPreviousClick,\n}) => {\n const { language } = useI18next();\n const locale = getLocale(language);\n const handleDayClick = (day: Date) => {\n if (onDayClick) {\n onDayClick(day);\n }\n };\n\n const handleDayMouseOver = (day: Date) => {\n if (onDayMouseOver) {\n onDayMouseOver(day);\n }\n };\n\n const handleNextClick = () => {\n const nextMonth = (month + 1) % 12;\n const nextMonthsYear = nextMonth < month ? year + 1 : year;\n\n if (onNextClick) {\n onNextClick(nextMonthsYear, nextMonth);\n }\n };\n\n const handlePreviousClick = () => {\n const previousMonth = (month - 1) % 12;\n const previousMonthsYear = previousMonth > month ? year - 1 : year;\n\n if (onPreviousClick) {\n onPreviousClick(previousMonthsYear, previousMonth);\n }\n };\n\n const focusDate = new Date(year, month);\n const firstDay = startOfWeek(startOfMonth(focusDate), { weekStartsOn });\n const lastDay = hasFixedHeight\n ? endOfWeek(addWeeks(firstDay, 5), { weekStartsOn })\n : endOfWeek(endOfMonth(focusDate), { weekStartsOn });\n const calendarDays = eachDayOfInterval({ start: firstDay, end: lastDay });\n\n const mapDay = (day: Date) => {\n const isoDay = getISODay(day);\n const isDisabled = isFunction(disabledDaysFunction) && disabledDaysFunction(day);\n const isSelected = isFunction(selectedDaysFunction) && selectedDaysFunction(day);\n const isOutsideMonth = !isSameMonth(day, focusDate);\n const extraClassNames = isFunction(extraClassNamesFunction)\n ? extraClassNamesFunction(day)\n : undefined;\n\n return (\n \n {isFunction(dayContentFunction) ? dayContentFunction(day) : undefined}\n \n );\n };\n\n const mapWeek = (weekDays: Date[]) => {\n if (weekDays.length === 0) {\n return null;\n }\n const isoWeek = getISOWeek(weekDays[0]);\n return (\n
\n {weekDays.map(mapDay)}\n
\n );\n };\n\n return (\n
\n
\n
\n \n \n
\n
\n {format(focusDate, \"MMMM yyyy\", { locale })}\n
\n \n \n
\n
\n
\n {range(0, 7).map((i) => (\n
\n {format(calendarDays[i], \"EEEEEE\", { locale: locale })}\n
\n ))}\n
\n \n
{chunk(calendarDays, 7).map(mapWeek)}
\n \n );\n};\n\nexport default Calendar;\n","import {\n endOfDay,\n endOfMonth,\n getMonth,\n getYear,\n isAfter,\n isEqual,\n isWithinInterval,\n startOfDay,\n addDays,\n} from \"date-fns\";\n\nimport { useQSMStore } from \"../../app/search-results/qsm-store/context\";\nimport Calendar from \"./calendar\";\nimport React, { useState, useEffect } from \"react\";\nimport { isNil, set } from \"lodash\";\nimport { nlBE } from \"date-fns/locale\";\nimport { setFlexibleRange } from \"../../app/search-results/qsm-store/reducer\";\nimport { Trans } from \"gatsby-plugin-react-i18next\";\n\ninterface DateRangePickerProps {\n fromDate?: Date;\n toDate?: Date;\n focusMonth?: { month: number; year: number };\n locale?: Locale;\n duration?: number;\n flexsearch: boolean;\n disabledDaysFunction?: (date: Date) => boolean;\n extraClassNamesFunction?: (date: Date) => string[];\n dayContentFunction?: (date: Date) => JSX.Element | null | undefined;\n onSelectionChange?: (fromDate: Date, toDate: Date) => void;\n onFromDateChange?: (date?: Date) => void;\n onToDateChange?: (date?: Date) => void;\n onFocusMonthChange?: (focusMonth: { month: number; year: number }) => void;\n}\n\nconst isDayDisabled = (date: Date) => {\n const today = startOfDay(new Date());\n return date >= today && date <= addDays(today, 3);\n};\n\nconst DateRangePicker: React.FC = (props) => {\n const [qsmState, qsmDispatch] = useQSMStore();\n const [fromDate, setFromDate] = useState(props.fromDate);\n const [toDate, setToDate] = useState(props.toDate);\n const [focusMonth, setFocusMonth] = useState<{ month: number; year: number }>(\n props.focusMonth ?? { year: getYear(new Date()), month: getMonth(new Date()) }\n );\n const [isWaitingForToDate, setWaitingForToDate] = useState(false);\n const [flexibleRangeDatePicker, setFlexibleRangeDatePicker] = useState<{\n start: Date;\n end: Date;\n } | null>(null);\n\n const handleDayClick = (day: Date) => {\n const { onSelectionChange } = props;\n\n if (isWaitingForToDate && !isNil(fromDate) && isAfter(day, fromDate)) {\n setToDate(day);\n setWaitingForToDate(false);\n setFlexibleRangeDatePicker(null);\n\n if (props.onToDateChange) {\n props.onToDateChange(undefined);\n }\n\n if (onSelectionChange) {\n onSelectionChange(fromDate, day);\n }\n } else {\n setFromDate(day);\n setFlexibleRangeDatePicker(null);\n\n if (props.duration) {\n const to = new Date(\n Date.UTC(day.getFullYear(), day.getMonth(), day.getDate() + props.duration)\n );\n setToDate(to);\n\n if (onSelectionChange) {\n onSelectionChange(day, to);\n }\n } else {\n setToDate(undefined);\n setWaitingForToDate(true);\n }\n\n if (props.onFromDateChange) {\n props.onFromDateChange(day);\n }\n }\n };\n\n const handleDayMouseOver = (day: Date) => {\n if (\n isWaitingForToDate &&\n (isNil(fromDate) || isEqual(day, fromDate) || isAfter(day, fromDate))\n ) {\n setToDate(day);\n }\n };\n\n const handlePreviousClick = () => {\n const { month, year } = focusMonth;\n\n const previousMonth = (month - 1) % 12;\n const previousMonthsYear = previousMonth > month ? year - 1 : year;\n\n const newFocusMonth = { year: previousMonthsYear, month: previousMonth };\n\n setFocusMonth(newFocusMonth);\n\n if (props.onFocusMonthChange) {\n props.onFocusMonthChange(newFocusMonth);\n }\n };\n\n const handleNextClick = () => {\n const { month, year } = focusMonth;\n\n const nextMonth = (month + 1) % 12;\n const nextMonthsYear = nextMonth < month ? year + 1 : year;\n\n const newFocusMonth = { year: nextMonthsYear, month: nextMonth };\n\n setFocusMonth(newFocusMonth);\n\n if (props.onFocusMonthChange) {\n props.onFocusMonthChange(newFocusMonth);\n }\n };\n\n const today = startOfDay(new Date());\n\n const firstCalendarYear = focusMonth.year;\n const firstCalendarMonth = focusMonth.month;\n\n const secondCalendarMonth = (firstCalendarMonth + 1) % 12;\n const secondCalendarYear =\n secondCalendarMonth < firstCalendarMonth ? firstCalendarYear + 1 : firstCalendarYear;\n\n const checkIfDateIsSelected = (date: Date) => {\n const isDisabled = isDayDisabled(date);\n return isDisabled\n ? false\n : isNil(toDate)\n ? !isNil(fromDate) && isEqual(date, fromDate)\n : !isNil(fromDate) &&\n isWithinInterval(date, { start: startOfDay(fromDate), end: endOfDay(toDate) });\n };\n\n const checkIfDateIsInFlexibleRange = (date: Date) =>\n flexibleRangeDatePicker &&\n !isWithinInterval(date, { start: startOfDay(fromDate!), end: endOfDay(toDate!) }) &&\n isWithinInterval(date, {\n start: startOfDay(flexibleRangeDatePicker.start),\n end: endOfDay(flexibleRangeDatePicker.end),\n });\n\n useEffect(() => {\n setFromDate(props.fromDate);\n setToDate(props.toDate);\n\n if (fromDate && toDate) {\n const days = qsmState?.flexibleRange ?? 0;\n let newFromDate = new Date(fromDate);\n let newToDate = new Date(toDate);\n\n // Calculate the number of days between the start date and the disabled days\n let adjustedDays = days;\n for (let i = 1; i <= days; i++) {\n const checkDate = new Date(fromDate);\n checkDate.setDate(checkDate.getDate() - i);\n if (isDayDisabled(checkDate)) {\n adjustedDays--;\n }\n }\n\n newFromDate.setDate(newFromDate.getDate() - adjustedDays);\n newToDate.setDate(newToDate.getDate() + days);\n\n setFlexibleRangeDatePicker({ start: newFromDate, end: newToDate });\n\n if (props.onSelectionChange) {\n props.onSelectionChange(fromDate, toDate);\n }\n\n if (qsmDispatch) {\n qsmDispatch(setFlexibleRange(days));\n }\n }\n }, [props.fromDate?.valueOf(), props.toDate?.valueOf(), qsmState?.flexibleRange]);\n\n useEffect(() => {\n if (props.fromDate) {\n setFocusMonth({ month: props.fromDate.getMonth(), year: props.fromDate.getFullYear() });\n }\n }, [props.fromDate?.valueOf()]);\n\n useEffect(() => {\n if (!qsmState?.flexSearch) {\n setFlexibleRangeDatePicker(null);\n setFlexibleRange(0);\n }\n }, [qsmState?.flexSearch]);\n\n const handleFlexSearchClick = (days: number) => {\n if (qsmDispatch) {\n qsmDispatch(setFlexibleRange(days));\n }\n };\n\n return (\n
\n
\n
\n \n isDayDisabled(date) ||\n (props.disabledDaysFunction && props.disabledDaysFunction(date))\n }\n extraClassNamesFunction={(date) => {\n const classes = props.extraClassNamesFunction\n ? props.extraClassNamesFunction(date)\n : [];\n if (checkIfDateIsInFlexibleRange(date)) {\n classes.push(\"date-range-picker__flexible-range\");\n }\n return classes;\n }}\n dayContentFunction={props.dayContentFunction}\n locale={props.locale ?? nlBE}\n hasFixedHeight={true}\n />\n
\n
\n \n isDayDisabled(date) ||\n (props.disabledDaysFunction && props.disabledDaysFunction(date))\n }\n extraClassNamesFunction={(date) => {\n const classes = props.extraClassNamesFunction\n ? props.extraClassNamesFunction(date)\n : [];\n if (checkIfDateIsInFlexibleRange(date)) {\n classes.push(\"date-range-picker__flexible-range\");\n }\n return classes;\n }}\n dayContentFunction={props.dayContentFunction}\n locale={props.locale ?? nlBE}\n hasFixedHeight={true}\n />\n
\n
\n {/* if flexsearch is enabled */}\n\n {qsmState?.flexSearch && (\n
\n handleFlexSearchClick(0)}\n >\n EXACT_DATE\n \n handleFlexSearchClick(1)}\n >\n ± 1 DAY\n \n handleFlexSearchClick(2)}\n >\n ± 2 DAYS\n \n handleFlexSearchClick(3)}\n >\n ± 3 DAYS\n \n
\n )}\n
\n );\n};\n\nexport default DateRangePicker;\n","import React, { useEffect, useState } from \"react\";\nimport { format, isBefore, startOfDay } from \"date-fns\";\n\nimport DateRangePicker from \"../../../components/date-range-picker\";\nimport Icon from \"../../../components/icon\";\nimport { buildClassName } from \"../../../utils\";\nimport { usePopper } from \"react-popper\";\nimport { useI18next } from \"gatsby-plugin-react-i18next\";\n\nexport interface DateRange {\n fromDate?: Date;\n toDate?: Date;\n}\n\ninterface DatePickerProps {\n value?: DateRange;\n panelActive?: boolean;\n duration?: number;\n isProductIntro?: boolean;\n flexsearch: boolean;\n onPanelToggle?: (state: boolean) => void;\n onChange?: (dateRange: DateRange) => void;\n}\n\nconst DatePicker: React.FC = ({\n value,\n panelActive,\n duration,\n isProductIntro,\n flexsearch,\n onPanelToggle,\n onChange,\n}) => {\n const { t } = useI18next();\n const mql = typeof window !== \"undefined\" ? window.matchMedia(\"(min-width: 1200px)\") : undefined;\n\n const [referenceElement, setReferenceElement] = useState(null);\n const [popperElement, setPopperElement] = useState(null);\n const [arrowElement, setArrowElement] = useState(null);\n\n const { styles, attributes } = usePopper(referenceElement, popperElement, {\n placement: \"top\",\n modifiers: [\n {\n name: \"offset\",\n options: {\n offset: [0, 20],\n },\n },\n {\n name: \"preventOverflow\",\n options: {\n padding: 40,\n },\n },\n { name: \"arrow\", options: { element: arrowElement } },\n ],\n });\n\n const handleDocumentClick: EventListener = (event) => {\n if (referenceElement && !referenceElement.contains(event.target as Node)) {\n if (onPanelToggle) onPanelToggle(false);\n }\n };\n\n useEffect(() => {\n document.addEventListener(\"mousedown\", handleDocumentClick);\n return () => {\n document.removeEventListener(\"mousedown\", handleDocumentClick);\n };\n });\n\n const handleInputFocus: React.MouseEventHandler = () => {\n if (onPanelToggle) {\n onPanelToggle(true);\n }\n };\n\n const handleSelectionChange = (fromDate?: Date, toDate?: Date) => {\n if (onChange) {\n onChange({ fromDate, toDate });\n\n if (onPanelToggle) onPanelToggle(false);\n }\n };\n\n return (\n \n
\n {!isProductIntro && }\n \n \n
\n\n
\n \n \n
\n \n isBefore(date, startOfDay(new Date()))}\n onSelectionChange={handleSelectionChange}\n />\n {mql?.matches && (\n
\n )}\n
\n \n );\n};\n\nexport default DatePicker;\n","var arrayAggregator = require('./_arrayAggregator'),\n baseAggregator = require('./_baseAggregator'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n };\n}\n\nmodule.exports = createAggregator;\n","import { BookingPackageFlight } from \"@qite/tide-client/build/types\";\nimport { Price } from \"../../../components/pricing\";\n\nexport interface ProductState {\n price?: Price;\n estimatedPrice?: Price;\n hasFlight?: boolean;\n hasTranfer?: boolean;\n isUnavailable?: boolean;\n regimeFlyInIsOpen?: boolean;\n flightsFlyInIsOpen?: boolean;\n}\n\nconst actionPrefix = \"APP/PRODUCT\";\n\nexport const SET_PRICE = `${actionPrefix}/SET_PRICE`;\nexport const setPrice = (price?: Price) => ({\n type: SET_PRICE,\n price,\n});\n\nexport const SET_ESTIMATED_PRICE = `${actionPrefix}/SET_ESTIMATED_PRICE`;\nexport const setEstimatedPrice = (price?: Price) => ({\n type: SET_ESTIMATED_PRICE,\n price,\n});\n\nexport const SET_HAS_FLIGHT = `${actionPrefix}/SET_HAS_FLIGHT`;\nexport const setHasFlight = (hasFlight: boolean) => ({\n type: SET_HAS_FLIGHT,\n hasFlight,\n});\n\nexport const SET_HAS_TRANSFER = `${actionPrefix}/SET_HAS_TRANSFER`;\nexport const setHasTransfer = (hasTransfer: boolean) => ({\n type: SET_HAS_TRANSFER,\n hasTransfer,\n});\n\nexport const SET_IS_UNAVAILABLE = `${actionPrefix}/SET_IS_UNAVAILABLE`;\nexport const setIsUnavailable = (isUnavailable: boolean) => ({\n type: SET_IS_UNAVAILABLE,\n isUnavailable,\n});\n\nexport const SET_REGIME_FLYIN_IS_OPEN = `${actionPrefix}/SET_REGIME_FLYIN_IS_OPEN`;\nexport const setRegimeFlyInIsOpen = (flyInOpen: boolean) => ({\n type: SET_REGIME_FLYIN_IS_OPEN,\n flyInOpen,\n});\n\nexport const SET_FLIGHTS_FLYIN_IS_OPEN = `${actionPrefix}/SET_FLIGHTS_FLYIN_IS_OPEN`;\nexport const setFlightsFlyInIsOpen = (flyInOpen: boolean) => ({\n type: SET_FLIGHTS_FLYIN_IS_OPEN,\n flyInOpen,\n});\n\nexport type Action =\n | ReturnType\n | ReturnType\n | ReturnType\n | ReturnType\n | ReturnType\n | ReturnType\n | ReturnType;\n\nexport const initialProductState: ProductState = {\n price: undefined,\n};\n\nconst runReducer = (state: ProductState, action: Action): ProductState => {\n switch (action.type) {\n case SET_PRICE:\n return { ...state, price: (action as ReturnType).price };\n case SET_ESTIMATED_PRICE:\n return { ...state, estimatedPrice: (action as ReturnType).price };\n case SET_HAS_FLIGHT:\n return { ...state, hasFlight: (action as ReturnType).hasFlight };\n case SET_HAS_TRANSFER:\n return { ...state, hasTranfer: (action as ReturnType).hasTransfer };\n case SET_IS_UNAVAILABLE:\n return {\n ...state,\n isUnavailable: (action as ReturnType).isUnavailable,\n };\n case SET_REGIME_FLYIN_IS_OPEN:\n return {\n ...state,\n regimeFlyInIsOpen: (action as ReturnType).flyInOpen,\n };\n case SET_FLIGHTS_FLYIN_IS_OPEN:\n return {\n ...state,\n flightsFlyInIsOpen: (action as ReturnType).flyInOpen,\n };\n default:\n return state;\n }\n};\n\nexport const productReducer = (\n state: ProductState = initialProductState,\n action: Action\n): ProductState => {\n const newState = runReducer(state, action);\n\n /*\n console.groupCollapsed(action.type);\n console.info(\"action:\", action);\n console.info(\"new state:\", newState);\n console.info(\"old state:\", state);\n console.groupEnd();\n */\n\n return newState;\n};\n","var baseAssignValue = require('./_baseAssignValue'),\n createAggregator = require('./_createAggregator');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\nvar groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n});\n\nmodule.exports = groupBy;\n","import toDate from \"../toDate/index.js\";\nimport addLeadingZeros from \"../_lib/addLeadingZeros/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatISO\n * @category Common Helpers\n * @summary Format the date according to the ISO 8601 standard (https://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a003169814.htm).\n *\n * @description\n * Return the formatted date string in ISO 8601 format. Options may be passed to control the parts and notations of the date.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {'extended'|'basic'} [options.format='extended'] - if 'basic', hide delimiters between date and time values.\n * @param {'complete'|'date'|'time'} [options.representation='complete'] - format date, time with local time zone, or both.\n * @returns {String} the formatted date string (in local time zone)\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.format` must be 'extended' or 'basic'\n * @throws {RangeError} `options.representation` must be 'date', 'time' or 'complete'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format (local time zone is UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52))\n * //=> '2019-09-18T19:00:52Z'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601, short format (local time zone is UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { format: 'basic' })\n * //=> '20190918T190052'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format, date only:\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { representation: 'date' })\n * //=> '2019-09-18'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format, time only (local time zone is UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { representation: 'time' })\n * //=> '19:00:52Z'\n */\nexport default function formatISO(date, options) {\n var _options$format, _options$representati;\n requiredArgs(1, arguments);\n var originalDate = toDate(date);\n if (isNaN(originalDate.getTime())) {\n throw new RangeError('Invalid time value');\n }\n var format = String((_options$format = options === null || options === void 0 ? void 0 : options.format) !== null && _options$format !== void 0 ? _options$format : 'extended');\n var representation = String((_options$representati = options === null || options === void 0 ? void 0 : options.representation) !== null && _options$representati !== void 0 ? _options$representati : 'complete');\n if (format !== 'extended' && format !== 'basic') {\n throw new RangeError(\"format must be 'extended' or 'basic'\");\n }\n if (representation !== 'date' && representation !== 'time' && representation !== 'complete') {\n throw new RangeError(\"representation must be 'date', 'time', or 'complete'\");\n }\n var result = '';\n var tzOffset = '';\n var dateDelimiter = format === 'extended' ? '-' : '';\n var timeDelimiter = format === 'extended' ? ':' : '';\n\n // Representation is either 'date' or 'complete'\n if (representation !== 'time') {\n var day = addLeadingZeros(originalDate.getDate(), 2);\n var month = addLeadingZeros(originalDate.getMonth() + 1, 2);\n var year = addLeadingZeros(originalDate.getFullYear(), 4);\n\n // yyyyMMdd or yyyy-MM-dd.\n result = \"\".concat(year).concat(dateDelimiter).concat(month).concat(dateDelimiter).concat(day);\n }\n\n // Representation is either 'time' or 'complete'\n if (representation !== 'date') {\n // Add the timezone.\n var offset = originalDate.getTimezoneOffset();\n if (offset !== 0) {\n var absoluteOffset = Math.abs(offset);\n var hourOffset = addLeadingZeros(Math.floor(absoluteOffset / 60), 2);\n var minuteOffset = addLeadingZeros(absoluteOffset % 60, 2);\n // If less than 0, the sign is +, because it is ahead of time.\n var sign = offset < 0 ? '+' : '-';\n tzOffset = \"\".concat(sign).concat(hourOffset, \":\").concat(minuteOffset);\n } else {\n tzOffset = 'Z';\n }\n var hour = addLeadingZeros(originalDate.getHours(), 2);\n var minute = addLeadingZeros(originalDate.getMinutes(), 2);\n var second = addLeadingZeros(originalDate.getSeconds(), 2);\n\n // If there's also date, separate it with time with 'T'\n var separator = result === '' ? '' : 'T';\n\n // Creates a time string consisting of hour, minute, and second, separated by delimiters, if defined.\n var time = [hour, minute, second].join(timeDelimiter);\n\n // HHmmss or HH:mm:ss.\n result = \"\".concat(result).concat(separator).concat(time).concat(tzOffset);\n }\n return result;\n}","var baseSlice = require('./_baseSlice'),\n isIterateeCall = require('./_isIterateeCall'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\nfunction chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n}\n\nmodule.exports = chunk;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","import { TideClientConfig } from \"@qite/tide-client\";\r\nimport { isNil } from \"lodash\";\r\nimport { ApiSettingsState } from \"../types\";\r\n\r\nexport function buildTideClientConfig(\r\n settings?: ApiSettingsState\r\n): TideClientConfig {\r\n const HOST = settings?.apiUrl || process.env.REACT_APP_BOOKING_HOST;\r\n const API_KEY = settings?.apiKey || process.env.REACT_APP_BOOKING_API_KEY;\r\n const token = selectAgentToken();\r\n\r\n if (isNil(HOST)) {\r\n throw Error(`Environment variable \"HOST\" was not set.`);\r\n }\r\n\r\n if (isNil(API_KEY)) {\r\n throw Error(`Environment variable \"API_KEY\" was not set.`);\r\n }\r\n\r\n return {\r\n host: HOST,\r\n apiKey: API_KEY,\r\n token: token,\r\n };\r\n}\r\n\r\nconst selectAgentToken = (): string | undefined => {\r\n let token: string | null = null;\r\n if (typeof sessionStorage !== \"undefined\") {\r\n token = sessionStorage.getItem(\"token\");\r\n }\r\n if (token === null && typeof localStorage !== \"undefined\") {\r\n token = localStorage.getItem(\"token\");\r\n }\r\n return token ?? undefined;\r\n};\r\n","/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayAggregator;\n","import { TideClientConfig, search, details } from \"@qite/tide-client\";\nimport {\n Image,\n Maybe,\n TideItem,\n TideItemForCountry,\n TideItemForHotel,\n TideItemForRegion,\n TideItemForRoundtrip,\n TideProduct,\n} from \"../../../types\";\nimport { compact, get, isNil, uniqBy } from \"lodash\";\nimport { differenceInDays, format, parse } from \"date-fns\";\n\nimport { Room } from \"../qsm/room-picker\";\nimport { generateParameterizedProductPath } from \"../../../utils\";\nimport {\n BookingPackage,\n BookingPackageDestination,\n BookingPackageDetailsRequest,\n BookingPackageItem,\n BookingPackagePax,\n BookingPackageRequest,\n BookingPackageRequestRoom,\n BookingPackageSearchRequest,\n TideResponse,\n} from \"@qite/tide-client/build/types\";\n\nexport interface SearchQuery {\n country?: number;\n region?: number;\n searchGlobal?: boolean;\n rooms?: Room[];\n from?: string;\n to?: string;\n earliestFromOffset: number;\n latestToOffset: number;\n regimeCodes?: string[];\n minPrice?: number;\n maxPrice?: number;\n}\n\nexport interface SearchResult {\n key: string;\n from: Date;\n to: Date;\n productType: number;\n title?: string;\n subtitle?: string;\n image?: Image;\n badges?: string[];\n rating?: number;\n price?: number;\n url?: string;\n uspIds: string[];\n themeIds: string[];\n hasFlight: boolean;\n hasTransfer: boolean;\n onRequest: boolean;\n isNotAvailable: boolean;\n minStay?: string;\n countryName?: string;\n}\n\nexport const searchProducts = async (\n query: SearchQuery,\n hotels: TideItemForHotel[],\n roundtrips: TideItemForRoundtrip[],\n t: Function,\n language: string,\n token: string | null\n): Promise => {\n const host = process.env.TIDE_HOST;\n const apiKey = process.env.API_KEY;\n\n if (\n !host ||\n !apiKey ||\n !(query.country || query.region || query.searchGlobal) ||\n !query.from ||\n !query.to ||\n !query.rooms\n ) {\n return Promise.reject();\n }\n const config: TideClientConfig = {\n host,\n apiKey,\n token: token ?? undefined,\n };\n const searchRequest: BookingPackageRequest = getPackageSearchRequest(\n query.from,\n query.to,\n query.rooms,\n query.country,\n query.region,\n query.regimeCodes,\n query.minPrice,\n query.maxPrice,\n query.earliestFromOffset,\n query.latestToOffset\n );\n\n try {\n var countryOrRegionHotels: TideItemForHotel[] = [];\n var countryOrRegionRoundtrips: TideItemForRoundtrip[] = [];\n\n if (query.region) {\n countryOrRegionHotels = hotels.filter(\n (x) =>\n x.parentItem?.templateName === \"Region\" &&\n (x.parentItem as TideItemForRegion)?.content?.general?.region?.tideId === query.region\n );\n countryOrRegionRoundtrips = roundtrips.filter(\n (x) =>\n x.parentItem?.templateName === \"Region\" &&\n (x.parentItem as TideItemForRegion)?.content?.general?.region?.tideId === query.region\n );\n } else if (query.country) {\n countryOrRegionHotels = hotels.filter(\n (x) =>\n (x.parentItem?.templateName === \"Country\" &&\n (x.parentItem as TideItemForCountry)?.content?.general?.country?.tideId ===\n query.country) ||\n (x.parentItem?.parentItem?.templateName === \"Country\" &&\n (x.parentItem?.parentItem as TideItemForCountry)?.content?.general?.country?.tideId ===\n query.country)\n );\n countryOrRegionRoundtrips = roundtrips.filter(\n (x) =>\n (x.parentItem?.templateName === \"Country\" &&\n (x.parentItem as TideItemForCountry)?.content?.general?.country?.tideId ===\n query.country) ||\n (x.parentItem?.parentItem?.templateName === \"Country\" &&\n (x.parentItem?.parentItem as TideItemForCountry)?.content?.general?.country?.tideId ===\n query.country)\n );\n } else {\n countryOrRegionHotels = hotels;\n countryOrRegionRoundtrips = roundtrips;\n }\n\n const searchResults = await search(config, searchRequest).then((packageSearchResults) => {\n if (!query.from || !query.to || !query.rooms) {\n return Promise.reject();\n }\n return createSearchResults(\n countryOrRegionHotels,\n countryOrRegionRoundtrips,\n packageSearchResults,\n query.rooms,\n query.from,\n query.to,\n t,\n language\n );\n });\n\n return uniqBy(searchResults, (x) => x.key);\n } catch (e) {\n console.error(e);\n return Promise.reject();\n }\n};\n\nexport const getPackageSearchRequest = (\n from: string,\n to: string,\n rooms: Room[],\n country?: number,\n region?: number,\n regimeCodes?: string[],\n minPrice?: number,\n maxPrice?: number,\n earliestFromOffset: number = 0,\n latestToOffset: number = 0\n): BookingPackageRequest => {\n // Determine destination\n let destinationId: number | undefined = undefined;\n let destinationIsCountry = false;\n let destinationIsRegion = false;\n\n if (country !== undefined) {\n destinationId = country;\n destinationIsCountry = true;\n } else if (region !== undefined) {\n destinationId = region;\n destinationIsRegion = true;\n }\n\n // Request\n return {\n officeId: 1,\n payload: {\n catalogueIds: [1],\n searchType: 0,\n destination: {\n id: Number(destinationId),\n isCountry: destinationIsCountry,\n isRegion: destinationIsRegion,\n isOord: false,\n isLocation: false,\n } as BookingPackageDestination,\n rooms: getRequestRooms(rooms),\n fromDate: from,\n toDate: to,\n earliestFromOffset: earliestFromOffset,\n latestToOffset: latestToOffset,\n includeFlights: true,\n regimeCodes: regimeCodes,\n minPrice: minPrice,\n maxPrice: maxPrice,\n } as BookingPackageSearchRequest,\n };\n};\n\nexport const getPackageDetails = (\n rooms: Room[],\n from: string,\n to: string,\n productCode?: Maybe,\n signal?: AbortSignal,\n languageCode?: string\n): Promise> => {\n const host = process.env.TIDE_HOST;\n const apiKey = process.env.API_KEY;\n\n if (!host || !apiKey || !productCode || !from || !to || !rooms) {\n return Promise.reject();\n }\n\n const config: TideClientConfig = {\n host,\n apiKey,\n };\n\n const request = {\n officeId: 1,\n payload: {\n searchType: 0,\n catalogueId: 1,\n productCode: productCode,\n fromDate: from,\n toDate: to,\n rooms: getRequestRooms(rooms),\n includeFlights: true,\n },\n } as BookingPackageRequest;\n\n return details(config, request, signal, languageCode);\n};\n\nconst createSearchResults = (\n hotels: TideItemForHotel[],\n roundtrips: TideItemForRoundtrip[],\n packageItems: BookingPackageItem[],\n rooms: Room[],\n from: string,\n to: string,\n t: Function,\n language: string\n): SearchResult[] => {\n return compact([\n ...hotels.map((hotel) => buildSearchResult(t, language, packageItems, rooms, from, to, hotel)),\n ...roundtrips.map((roundTrip) =>\n buildSearchResult(t, language, packageItems, rooms, from, to, undefined, roundTrip)\n ),\n ]);\n};\n\nexport const getParentItemWithTypename = (\n typename: string,\n item?: TideItem\n): T | undefined => {\n if (isNil(item) || isNil(item.parentItem)) {\n return undefined;\n }\n\n if (get(item.parentItem, \"__typename\") !== typename) {\n return getParentItemWithTypename(\"TideItemForCountry\", item.parentItem);\n }\n\n return item.parentItem as T;\n};\n\nconst buildSearchResult = (\n t: Function,\n language: string,\n items: BookingPackageItem[],\n rooms: Room[],\n from: string,\n to: string,\n hotel?: TideItemForHotel,\n roundtrip?: TideItemForRoundtrip\n) => {\n const product = hotel ? hotel?.content?.general?.product : roundtrip?.content?.general?.product;\n const isRoundTrip = roundtrip && !hotel;\n let minNights = roundtrip?.content?.general?.duration;\n const minDurationType = roundtrip?.content?.general?.product?.minDurationType;\n const minDuration = roundtrip?.content?.general?.product?.minDuration;\n\n if (minDurationType && minDuration) {\n if (minDurationType === 1) {\n minNights = minDuration - 1;\n } else if (minDurationType === 2) {\n minNights = minDuration;\n }\n }\n const item = items.find((x) => x.code === product?.code);\n\n const queryDuration = differenceInDays(\n new Date(to),\n item && item.outwardFlightEndDate\n ? new Date(\n format(\n parse(item.outwardFlightEndDate, \"yyyy-MM-dd'T'HH:mm:ss'Z'\", new Date()),\n \"yyyy-MM-dd\"\n )\n )\n : new Date(from)\n );\n //const queryDurationOld = differenceInDays(new Date(to), new Date(from));\n\n if (!product?.code) {\n return undefined;\n }\n\n let onRequest = isRoundTrip\n ? minNights! < queryDuration\n ? true\n : false\n : product?.allotmentType == 1 || false;\n let isNotAvailable = !item\n ? true\n : isRoundTrip\n ? minNights! != queryDuration\n ? true\n : false\n : false;\n\n if (item?.price && item.price == item.flightPrice) {\n isNotAvailable = true;\n }\n\n let countryName = item?.countryName;\n if (isRoundTrip) {\n countryName =\n (getParentItemWithTypename(\"TideItemForCountry\", roundtrip) as TideItemForCountry)?.content\n ?.general?.title ?? item?.countryName;\n if (!minNights) {\n return undefined;\n }\n } else {\n countryName =\n (getParentItemWithTypename(\"TideItemForCountry\", hotel) as TideItemForCountry).content\n ?.general?.title ?? item?.countryName;\n }\n\n const searchResult: SearchResult = {\n key: product?.code,\n from: new Date(item?.stayFromDate ?? from),\n to: new Date(item?.stayToDate ?? to),\n productType: item?.type ?? (hotel ? 3 : 1),\n title: hotel?.content?.general?.title ?? roundtrip?.content?.general?.title ?? undefined,\n subtitle:\n isRoundTrip && isNotAvailable\n ? \"Min. \" + getMinStay(t, hotel, roundtrip)\n : getSubtitle(t, language, item, product),\n image:\n hotel?.content?.general?.thumbnailPicture ??\n roundtrip?.content?.general?.thumbnailPicture ??\n undefined,\n rating: hotel?.content?.general?.stars ?? undefined,\n price: item?.price && item.price != item.flightPrice ? item.price : 0,\n url: generateParameterizedProductPath(\n hotel || roundtrip,\n rooms,\n new Date(item?.stayFromDate ?? from),\n new Date(item?.stayToDate ?? to),\n item?.accommodationCode,\n item?.regimeCode\n ),\n uspIds: compact(hotel?.content?.general?.usps?.map((usp) => usp?.id)),\n themeIds: compact(hotel?.content?.general?.themes?.map((theme) => theme?.id)),\n hasFlight: item?.includedServiceTypes?.some((x) => x === 7) || false,\n hasTransfer: item?.includedServiceTypes?.some((x) => x === 13) || false,\n onRequest: onRequest,\n isNotAvailable: isNotAvailable,\n minStay: getMinStay(t, hotel, roundtrip),\n countryName: countryName,\n };\n return searchResult;\n};\n\nexport const getMinStay = (\n t: Function,\n hotel?: TideItemForHotel,\n roundtrip?: TideItemForRoundtrip\n) => {\n if (hotel?.content?.general?.estimatedStay) return hotel.content.general.estimatedStay;\n if (roundtrip?.content?.general?.estimatedStay) return roundtrip.content.general.estimatedStay;\n\n const product = hotel ? hotel?.content?.general?.product : roundtrip?.content?.general?.product;\n if (!product) return undefined;\n\n switch (product.minDurationType) {\n case 0:\n return `${product.minDuration} ${t(\"HOUR\")}`;\n case 1:\n return `${product.minDuration} ${product.minDuration == 1 ? t(\"DAY\") : t(\"DAYS\")}`;\n case 2:\n return `${product.minDuration} ${product.minDuration == 1 ? t(\"NIGHT\") : t(\"NIGHTS\")}`;\n }\n};\n\nconst removeTime = (date = new Date()) => {\n return new Date(date.toDateString());\n};\n\nconst getSubtitle = (\n t: Function,\n language: string,\n item?: BookingPackageItem,\n product?: TideProduct\n) => {\n const from = item ? removeTime(new Date(item.fromDate)) : null;\n const to = item ? removeTime(new Date(item.toDate)) : null;\n\n if (!from || !to) {\n return undefined;\n }\n\n const days = differenceInDays(to, from);\n const regime = product?.regimes?.find((x) => x?.code == item?.regimeCode);\n const regimeName =\n regime?.localizedNames?.find((x) => x?.languageCode == language)?.value ?? regime?.name;\n\n return compact([\n format(from, \"dd/MM/yyy\"),\n days && `, ${t(\"X_NIGHTS\", { numberOfNights: days })}`,\n regimeName && `, ${regimeName}`,\n ]).join(\"\");\n};\n\nexport const getRequestRooms = (rooms: Room[]) => {\n let requestRooms: BookingPackageRequestRoom[] = [];\n rooms.forEach((room, i) => {\n let requestRoom = {\n index: i,\n pax: [],\n } as BookingPackageRequestRoom;\n\n for (var a = 0; a < room.adults; a++) {\n requestRoom.pax.push({\n age: 30,\n } as BookingPackagePax);\n }\n\n for (var c = 0; c < room.children; c++) {\n requestRoom.pax.push({\n age: room.childAges[c],\n } as BookingPackagePax);\n }\n requestRooms.push(requestRoom);\n });\n return requestRooms;\n};\n"],"sourceRoot":""}