1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2741],{2296:(e,t,n)=>{n.d(t,{Fm:()=>a,Sk:()=>r,ps:()=>l,wX:()=>o});let r={has_internet:"wifi",has_meal:"meals",has_pool:"pool",has_spa:"spa",has_parking:"parking",has_fitness:"gym",air_conditioning:"air-conditioning",kitchen:"kitchen",has_jacuzzi:"hot-tub",beach:"beach",has_airport_transfer:"airport-shuttle",has_disabled_support:"wheelchair-accessible",has_kids:"kids-facilities",has_pets:"pets-allowed",has_business:"business-centre",has_ecar_charger:"ev-charging",has_ski:"ski",has_smoking:"smoking-allowed"},l=["wifi","meals","pool","spa","air-conditioning","parking","gym","kitchen","hot-tub","beach","airport-shuttle","wheelchair-accessible","kids-facilities","pets-allowed","business-centre","ev-charging","ski","smoking-allowed"],i=l.reduce((e,t,n)=>(e[t]=n,e),{});function u(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e&&e.trim().length>0):[]}function a(e){if(!e)return[];let t=[...u(e.feature_keys),...u(e.serp_filters)],n=new Set;for(let e of t){var l;let t=e.trim().toLowerCase(),u=null!=(l=r[t])?l:void 0!==i[t]?t:null;u&&n.add(u)}return Array.from(n).sort((e,t)=>{var n,r;return(null!=(n=i[e])?n:999)-(null!=(r=i[t])?r:999)})}function o(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:4,r=a(e);return r.length>0?r.slice(0,n).map(e=>({kind:"feature",value:e})):u(t).slice(0,n).map(e=>({kind:"supplier",value:e}))}},2575:(e,t,n)=>{n.d(t,{F7:()=>d,Ug:()=>s,WS:()=>c,l8:()=>u,mx:()=>r,tG:()=>o,uV:()=>l,v9:()=>a});let r={checkIn:["checkIn","checkin"],checkOut:["checkOut","checkout"],adults:["adults"],children:["children"],infants:["infants"],rooms:["rooms"],residency:["residency"],childrenStructure:["childrenStructure"],roomStructure:["roomStructure"]},l=Object.keys(r),i=new Map;for(let e of l)for(let t of r[e])i.set(t,e);function u(e){var t;return null!=(t=i.get(e))?t:null}function a(e,t){for(let n of r[t]){let t=function(e,t){if("function"==typeof e.get){var n;return null!=(n=e.get(t))?n:void 0}let r=e[t];return Array.isArray(r)?"string"==typeof r[0]?r[0]:void 0:"string"==typeof r?r:void 0}(e,n);if("string"==typeof t&&t.trim())return t}}function o(e,t){let n=a(e,t);if(void 0===n)return;let r=Number(n);return Number.isFinite(r)?r:void 0}function c(e){return l.some(t=>void 0!==a(e,t))}function s(e){let t=new URLSearchParams;for(let n of l){let r=e[n];if(null==r)continue;let l=String(r).trim();l&&t.set(n,l)}return t}function d(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",r=s(t).toString();return"".concat(n,"/hotels/").concat(e).concat(r?"?".concat(r):"")}},30106:(e,t,n)=>{n.d(t,{Z:()=>r});function r(e){if(null==e)return"";if("number"==typeof e)return Number.isFinite(e)?String(e):"";let t=String(e).trim();if(!t)return"";if(t.startsWith("am-")||/^\d+$/.test(t))return t;let n=t.match(/(\d+)$/);return n?n[1]:t}},39212:(e,t,n)=>{function r(e){var t;let n=null!=(t=null==e?void 0:e.review_score)?t:null==e?void 0:e.reviewScore,r="number"==typeof n?n:Number(n);return!Number.isFinite(r)||r<=0||r>10?null:Math.round(10*r)/10}function l(e){return e>=9?"exceptional":e>=8.5?"excellent":e>=8?"veryGood":e>=7?"good":e>=6?"pleasant":e>=5?"fair":"poor"}function i(e){return e>=8?"strong":e>=6?"neutral":"weak"}function u(e){var t,n;let r=null!=(n=null!=(t=null==e?void 0:e.review_count)?t:null==e?void 0:e.reviewCount)?n:null==e?void 0:e.numberOfReviews,l="number"==typeof r?r:Number(r);return!Number.isFinite(l)||l<=0?0:Math.trunc(l)}n.d(t,{Ce:()=>o,Ij:()=>l,P5:()=>s,S3:()=>a,SE:()=>u,dY:()=>i,q5:()=>c,z3:()=>r});let a=5;function o(e){let t=r(e),n=u(e);return null==t?{kind:"none",count:n}:n<a?{kind:"thin",score:t,count:n}:{kind:"rated",score:t,count:n,labelKey:l(t),tone:i(t)}}function c(e,t,n){var l;let i=e.filter(e=>Number.isFinite(e)&&e>0&&e<=10),u=i.length?Math.round(i.reduce((e,t)=>e+t,0)/i.length*10)/10:null;return o({review_score:null!=(l=r({review_score:t}))?l:u,review_count:"number"==typeof n&&n>0?Math.trunc(n):i.length})}function s(e){var t,n,r;let l=null!=(r=null!=(n=null!=(t=null==e?void 0:e.star_rating)?t:null==e?void 0:e.starRating)?n:null==e?void 0:e.stars)?r:null==e?void 0:e.rating,i="number"==typeof l?l:Number(l);return!Number.isFinite(i)||i<=0?0:Math.max(1,Math.min(5,Math.round(i)))}},50866:(e,t,n)=>{n.r(t),n.d(t,{getTravelDates:()=>u,setTravelDates:()=>a,subscribeTravelDates:()=>o,useTravelDates:()=>c});var r=n(7620);let l={checkIn:void 0,checkOut:void 0,adults:2,children:0,rooms:1},i=new Set;function u(){return l}function a(e){l={...l,...e}
1,i.forEach(e=>{try{e(l)}catch(e){}})}function o(e){return i.add(e),()=>i.delete(e)}function c(){let[e,t]=(0,r.useState)(l);return(0,r.useEffect)(()=>o(t),[]),[e,a]}},71881:(e,t,n)=>{n.d(t,{Bg:()=>d,Ze:()=>u,_d:()=>f,f$:()=>s,l1:()=>i});var r=n(59014),l=n(81570);function i(e){if(!e)return!1;let t=String(e).trim().toLowerCase().replace(/[\s_]+/g,"-");return"nomeal"!==t&&"no-meal"!==t&&"room-only"!==t&&"none"!==t}function u(e){let t=(0,l.SW)(e);switch(t.outcome){case"freeUntil":return{refundable:!0,deadline:t.deadline,labelKey:"rooms.freeCancellationUntil"};case"free":return{refundable:!0,deadline:null,labelKey:"rooms.freeCancellation"};default:return{refundable:!1,deadline:null,labelKey:"rooms.nonRefundable"}}}let a=e=>Math.round(100*e)/100,o=["class","quality","sex","bathroom","bedding","family","capacity","club","bedrooms","balcony","floor","view"];function c(e){return e&&"object"==typeof e?o.map(t=>{var n;return String(null!=(n=e[t])?n:"")}).join(":"):null}function s(e){var t,n,o,s,d,f,m,h,g,v,p;let y=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{roomGroups:b,fallbackOccupancy:_,imageSize:N="640x400"}=y,k=Array.isArray(null==e||null==(n=e.daily_prices)||null==(t=n[0])?void 0:t.amount)?e.daily_prices[0].amount.map(e=>Number(e)).filter(e=>!Number.isNaN(e)):[],w=k.length||1,S=(0,l.lZ)(e),A=Number(null==S?void 0:S.amount),C=Number.isFinite(A)&&A>0?a(A):k.length?a(k.reduce((e,t)=>e+t,0)):0,x=null!=(v=null!=(g=null==e||null==(o=e.meal_data)?void 0:o.value)?g:null==e?void 0:e.meal)?v:"nomeal",M=null==e||null==(s=e.room_data_trans)?void 0:s.bedding_type,I=(null!=(p=null==(d=function(e,t){var n;if(!Array.isArray(t)||0===t.length)return;let r=c(null==e?void 0:e.rg_ext);if(r){let e=t.find(e=>c(null==e?void 0:e.rg_ext)===r);if(e)return e}let l=null!=(n=null==e?void 0:e.room_data_trans)?n:{},i=l.main_name;if(!i)return;let u=t.filter(e=>{var t;return(null==e||null==(t=e.name_struct)?void 0:t.main_name)===i});return 0===u.length?void 0:1===u.length?u[0]:u.find(e=>{var t,n,r,i,u,a;return(null!=(r=null==e||null==(t=e.name_struct)?void 0:t.bedding_type)?r:null)===(null!=(i=l.bedding_type)?i:null)&&(null!=(u=null==e||null==(n=e.name_struct)?void 0:n.bathroom)?u:null)===(null!=(a=l.bathroom)?a:null)})}(e,b))?void 0:d.images)?p:[]).map(e=>"string"==typeof e?e.replace("{size}",N):e),F=(null==S?void 0:S.currency_code)||"USD";return{id:null==e?void 0:e.book_hash,book_hash:null==e?void 0:e.book_hash,name:(null==e?void 0:e.room_name)||"Standard Room",description:null==e||null==(f=e.room_data_trans)?void 0:f.main_name,beds:null!=M?M:"",bedType:M,surface:(null==e||null==(m=e.room_data_trans)?void 0:m.size)?String(e.room_data_trans.size):void 0,amenities:Array.isArray(null==e?void 0:e.amenities_data)?e.amenities_data:[],images:I,image:I[0],numberLeft:Number(null==e?void 0:e.allotment)||0,maxOccupancy:Number(null==e||null==(h=e.rg_ext)?void 0:h.capacity)||_||2,currency:F,mealType:x,mealIncluded:i(x),freeCancellationUntil:function(e){let{deadline:t}=u(e);if(!t)return;let n=new Date(t);if(Number.isNaN(n.getTime()))return;let l=(0,r.r6)()||r.a3;try{return n.toLocaleDateString(l,{month:"short",day:"numeric"})}catch(e){return n.toLocaleDateString(r.a3,{month:"short",day:"numeric"})}}(e),nights:w,pricePerNight:C/w,priceTotal:C,originalPrice:void 0,price:C,discountedPrice:C,currentPrice:C,totalPrice:C,daily_prices:null==e?void 0:e.daily_prices,meal:x,rg_ext:null==e?void 0:e.rg_ext,rate:e}}function d(e){var t,n,r;let l=null!=(n=null!=(t=null==e?void 0:e.mealType)?t:null==e?void 0:e.meal)?n:null,a=u(e);return{allFeesIncluded:!0,freeCancellation:a.refundable,freeCancellationUntil:(null==e?void 0:e.freeCancellationUntil)||void 0,cancellation:a,mealIncluded:null!=(r=null==e?void 0:e.mealIncluded)?r:i(l)}}function f(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Array.isArray(e)?e.map(e=>s(e,t)):[]}},74943:(e,t,n)=>{n.d(t,{Cy:()=>l,Ic:()=>h,Ur:()=>s,Y2:()=>o,hh:()=>u,sO:()=>c,yL:()=>a});var r=n(58149);let l="usd";function i(e){let t="string"==typeof e?parseFloat(e):Number(e);return Number.isFinite(t)&&t>0?t:null}function u(e){if(!e)return null;let t=function(e){let t=Number(e);if(!Number.isFinite(t))return 1;let n=Math.round(t);return n>=1?n:1}(e.nights),n=i(e.total),r=i(e.perNight),u=null!=n?n:null!=r?r*t:null;return null==u?null:{total:u,perNight:u/t,nights:t,currency:(e.currency||l).toLowerCase()}}function a(e,t){let n=null==e?void 0:e.price;return null==n?null:"number"==typeof n?u({perNight:n,nights:t}):u({total:n.total,perNight:n.per_night,nights:t,currency:n.currency})}function o(e,t){var n,r,l,i,a,o,c,s;if(!e)return null;let d=null!=(i=null!=(l=e.nights)?l:Array.isArray(null==(r=e.daily_prices)||null==(n=r[0])?void 0:n.amount)?e.daily_prices[0].amount.length:void 0)?i:t;return u({total:null!=(s=null!=(c=null!=(o=null!=(a=e.priceTotal)?a:e.totalPrice)?o:e.currentPrice)?c:e.price)?s:e.discountedPrice,perNight:e.pricePerNight,nights:d,currency:e.currency})}function c(e,t){if(!Array.isArray(e))return null;let n=null;for(let r of e){let e=o(r,t);e&&(!n||e.total<n.total)&&(n=e)}return n}function s(e,t){if(!Array.isArray(e))return null;let n=null,r=1/0;for(let l of e){if(!l)continue;let e=o(l,t);e&&e.total<r&&(r=e.total,n=l)}return n}function d(e){return(0,r.rx)(e)?1:100}function f(e,t){let n=d(t);return Math.round((e+Number.EPSILON)*n)/n}function m(e,t,n){let r=d(n),l=t>=1?t:1;return{perNight:Math.round(e/l)/r,exact:e%l==0}}function h(e,t){let n=(e.currency||l).toLowerCase(),i=(t.targetCurrency||l).toLowerCase(),u=n===l&&null!=t.usdRate?(0,r.$w)(e.total,t.usdRate):(0,r.g0)(e.total,n,i,t.rates);if(null===u){let l=f(e.total,n),i=m(Math.round(l*d(n)),e.nights,n);return{total:(0,r.V0)(l,n,t.locale),perNight:(0,r.V0)(i.perNight,n,t.locale),currency:n,perNightIsExact:i.exact}}let a=f(u,i),o=m(Math.round(a*d(i)),e.nights,i);return{total:(0,r.$g)(a,i,t.locale),perNight:(0,r.$g)(o.perNight,i,t.locale),currency:i,perNightIsExact:o.exact}}}
1,99183:(e,t,n)=>{n.d(t,{KO:()=>_,My:()=>i,OH:()=>m,Sw:()=>b,Xo:()=>u,YP:()=>y,b0:()=>h,bt:()=>f,bw:()=>d,f3:()=>w,ge:()=>c,s1:()=>v,u7:()=>k,v$:()=>s,zA:()=>g});var r=n(89813),l=n(8313);function i(e){return(0,r.u)(e)?"carry-selection":"create-entity"}function u(e){let{mounted:t,authStalled:n,bookingId:l,hasSelection:i,auth:u}=e;return t?u.isRestoringSession?n?"stalled":"loading":i&&!l?"guest-start":(0,r.u)(u)?"sign-in":l?"checkout":"invalid":"loading"}let a=/^[A-Z]{2}$/,o=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;function c(e){var t,n,r,l,i;let u=[];return(null==(t=e.firstName)?void 0:t.trim())||u.push("firstName"),(null==(n=e.lastName)?void 0:n.trim())||u.push("lastName"),o.test(null!=(l=null==(r=e.email)?void 0:r.trim())?l:"")||u.push("email"),a.test((null!=(i=e.country)?i:"").trim().toUpperCase())||u.push("country"),u}function s(e){return 0===c(e).length}function d(e){if(!e.needsAccount)return null;let t=(0,l.c5)({travellersRequired:!0,travellersConfirmed:s(e.draft),paymentMethodSelected:!0,termsConsentRequired:!0,termsAccepted:e.termsAccepted});return"travellers"===t?"account-fields":"termsConsent"===t?"termsConsent":null}function f(e){return null!==d(e)}function m(e){return!e||e.serverError?"attempt-register":e.available?"register":"existing-account"}function h(e,t){return 400===e&&/already (exists|registered)/i.test(null!=t?t:"")}function g(e,t,n){return{firstName:e.firstName.trim(),lastName:e.lastName.trim(),email:e.email.trim().toLowerCase(),country:e.country.trim().toUpperCase(),...t?{locale:t}:{},...(null==n?void 0:n.termsAccepted)?{termsAccepted:!0}:{}}}let v=["check-email","quick-register","establish-session","create-entity"],p={hotel:"vacabee_hotelSelection_",flight:"vacabee_flightSelection_",transfer:"vacabee_transferSelection_"};function y(e){return p[e]}function b(e){return"".concat(p[e]).concat(Date.now().toString(36),"_").concat(Math.random().toString(36).slice(2,8))}function _(e,t){return"string"==typeof e&&e.startsWith(p[t])}let N={hotel:["hotelSlug","hash"],flight:["offerId"],transfer:["rateKey","legs"]};function k(e,t){let n=t;if("string"==typeof n)try{n=JSON.parse(n)}catch(e){return null}if(!n||"object"!=typeof n)return null;let r=n;for(let t of N[e]){let e=r[t];if(!e||Array.isArray(e)&&0===e.length)return null}return n}function w(e){if(!e||"object"!=typeof e)return"";let t=e.booking;for(let n of[e.id,null==t?void 0:t.id,e.bookingId])if("string"==typeof n&&n)return n;return""}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.