{"version":3,"file":"static/chunks/2151-ab8f029d69f07d10.js","mappings":"iIAAA,aAAoR,OAA9P,6BAAgD,YAAgB,mBAAsB,KAAO,mBAA2B,eAA0B,4CAAyD,WAAiC,WAAkB,sBAKpR,kBACA,YACA,YACA,UACA,WACA,cACA,kBACA,aACA,iBACA,UACA,OAAsB,eAAmB,QACzC,OACA,6BACA,CACA,CAAG,eAA+C,eAAmB,oCACrE,OAAwB,eAAmB,CAAC,UAAQ,EACpD,KACA,CAAK,WAAgC,eAAmB,aACxD,CAAG,EAAgB,eAAmB,WAAmB,IACzD,iGACA,OACA,kFACA,CAAK,CACL,MACA,QACA,QACA,CAAG,IAAmB,eAAmB,WAAmB,IAC5D,iGACA,OACA,kFACA,CAAK,CACL,MACA,QACA,QACA,CAAG,GACH,EAEA,YASE,EATgB,CCvClB,KDuCuD,CCvCvD,EDuC0D,CASzD,CAAC,KChDF,GACA,YACA,iBACA,QACA,SACA,aACA,WACA,gBACA,cACA,YACA,cACA,OAAsB,eAAmB,CAAC,UAAQ,MAAqB,eAAmB,QAC1F,2DACA,OACA,MACA,OACA,8DACA,CAAK,CACL,MACA,SACA,eACA,aACA,cACA,YACA,kBACA,kBACA,MACA,CAAG,KAA2B,eAAmB,WACjD,8DACA,OACA,8DACA,CAAK,CACL,UACA,uBACA,CAAG,EACH,EAEA,YAWE,EAXoB,MAAqC,GAAG,CAW7D,CAAC,yBC/CF,cACA,iBAOA,EALkB,cAAQ,YAC1B,oCAEA,OADA,oCACA,CACA,CAAG,CACH,IAQA,MANE,eAAS,YAEX,OADA,6BACA,WACA,mCACA,CACA,CAAG,MACM,kBAAY,KACrB,EAEA,aACA,SAAY,WAAiB,ECxB7B,WAAY,EAQZ,OARgB,IAQhB,GACA,iBACA,qBACA,aACA,uBACA,QACA,YACA,UACA,WACA,cACA,kBAEA,YACA,cACA,iBACA,gBACA,iBACA,mBACA,uBACA,qBACA,mBACA,oBACA,aACA,cACA,gBACA,iBACA,EAAY,YAAM,OAClB,EAAgB,YAAM,OACtB,EAAiB,YAAM,GAAG,EAE1B,EAAkB,cAAQ,IAC1B,OACA,OAEA,EAAmB,cAAQ,KAC3B,OACA,OAEA,EAAmB,cAAQ,KAC3B,OACA,OAEA,EAAmB,cAAQ,KAC3B,OACA,OAEA,EAAmB,cAAQ,KAC3B,OACA,OAEA,EAAmB,cAAQ,KAC3B,OACA,OAEA,EAAmB,cAAQ,KAC3B,OACA,OAEA,GAAmB,cAAQ,IAC3B,SACA,SAEA,GAAmB,cAAQ,IAC3B,SACA,SAEA,GAAoB,cAAQ,IAC5B,SACA,SAcA,eACA,MACA,EACA,SAEA,QAGA,MACA,CAEA,SAEA,WACA,IACA,iBACO,EACP,qBAEA,mDAEA,EAEA,eACA,oBACA,oBACA,wCACA,0CACA,6BACA,kCACA,wCAEA,2BACA,2BACA,8BAEA,EAEA,eACA,kCACA,8BACA,iDACA,kDACA,4BACA,2BACA,EAgBA,GAAuB,iBAAW,aAClC,oBACA,iEACA,6DACA,wBACA,wBACA,yFACA,2FACA,MACA,KACA,CAAG,KAEH,eAGA,GAFA,MAEA,IACA,kDACA,8CACA,WACA,CACA,EAMA,eACA,gDACA,SAGA,MAFA,KAAwB,MAMxB,IACA,EAEA,iBACA,gEACA,aACA,eACA,eACA,OAGA,MACA,MACA,MACA,MAEA,EAEA,iBACA,yGACA,IACA,QACA,OACA,CAAK,CACL,EAEA,iBACA,2EACA,sEACA,oDACA,sDACA,iCACA,8BACA,IACA,iBACA,QACA,OACA,CAAO,EACP,2BAAkD,CAClD,4BACA,CAAK,CACL,EAEA,iBACA,MACA,4BACA,MACA,EAEA,cACA,MACA,MACA,EAEA,cACA,OACA,oBACA,SAAgB,CAChB,UAAiB,CACjB,SAAgB,CAChB,gBAAuB,CACvB,mBACA,CACA,EAEA,wBACA,EACA,CACA,wBACA,0BACA,OACA,KACA,EAGA,yBACA,EAEA,qBACA,OACA,MACA,KACA,CACA,EAEA,iBACA,OACA,4BACA,+BAEA,EAEA,iBACA,gFAGA,iBACA,OACA,uBACA,wBACA,CACA,EAEA,IACA,SACA,mBACA,OACA,QACA,WACA,UACA,wBA/JA,YACA,iEACA,4DACA,oEACA,MAEA,GACA,0BACA,UACA,UACA,CAEA,EAmJA,KACA,8BACA,+BACA,mBACA,EAsBA,MArBE,eAA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iBAEA,EAFmC,CAGnC,OAEA,YAAoB,KAAQ,IAC5B,YAGA,QACA,CAEA,OAAS,SDbF,MCaiB,CDVxB,8LCUwB,EACxB,sCCxBA,uCACA,SACA,0EACA,YACA,4DACA,8CAA6D,WAAc,IAC3E,uEACA,kBAEA,QACA,EACA,0CACA,0BAA6C,UAC7C,EACA,qCAA6C,CAAE,SAAa,EAC5D,cAAoB,QAUpB,QAAoC,EAAQ,KAAa,GACzD,EAAgB,EAAQ,KADmB,EAM3C,UALuB,IAKH,CAJpB,IACA,cACA,mCACA,2DC/BA,OAEA,aACA,2BACA,iBACA,EACA,GACA,gEACA,+DACA,oCAEA,IACA,yBACA,wCAEA,CAAE,SAEF,CAGA,cACA,KACA,UACA,UACA,UACA,UAmBO,4BACP,sBACA,mBACA,CAcA,mBACA,IACA,yBACA,iFACA,CAAI,SAEJ,CACA,CACA,8BA4BA,IA3BA,YACA,UACA,WACA,sBACA,yBAEA,YACA,KAIA,KAEA,QAEA,OAYA,EAZA,KAYA,EAZA,EAaA,gBACA,IACA,EADA,KAEA,MACA,IACA,KACA,mBACA,WACA,EACA,GACA,0BAEA,8BACA,CAAG,EAvBH,CACA,cACA,wBACA,uCACA,CAuBA,mBACA,OACA,KACA,IACA,mBACA,+CACA,MACA,oBACA,qBACA,cACA,WACA,SACA,KACA,2BACA,CAAa,CACb,CAAW,CAEX,CACA,CACA,CAAI,SAEJ,EACA,CAGA,gBAEA,wBACA,kCACA,WACA,wBACA,YACA,MACA,CAGA,SACA,OACA,UACA,SACA,CAAG,EAEH,IAGA,cACA,wBACA,CACA,sBACA,wIACA,CACA,oBACA,gBAEA,WAyBA,OAxBA,IACA,UAHA,sBAKA,SACA,4CACA,SAEA,WACK,SACL,OACA,KACA,YACA,IACK,UAML,YACA,kBAA+B,IAE/B,YAEA,OACA,CAIA,cACA,gBACA,8CACA,mBACA,OACA,sDACA,OACA,IACA,yBACA,OAEA,UACA,CAAU,SAMV,MACA,CACA,CAAO,CACP,QACA,EACA,WACA,wCACA,mBACA,MACA,CACA,CACA,CACA,gBACA,WACA,oCACA,MAEA,CACA,gBACA,mBACA,cACA,WACA,CCvOO,cACP,OAVA,YACA,iBACA,WACA,YAAkB,IAAO,IACzB,mBACA,uCAEA,YACA,EAEA,UACA,CCTA,SAGO,gBAEP,aACA,kBAEA,cACA,mBAEA,cACA,gBA4JA,KACA,YAAkB,WAAuB,IACzC,cACA,SAGA,QACA,EAnKA,UAEA,cACA,mBAIA,iCACA,IA4BA,gBAEA,sBACA,gBAEA,sBACA,aAEA,uBACA,cAEA,2BACA,6CAIA,eACA,aAqCA,OACA,UACA,UACA,YACA,WACA,YACA,WACA,UACA,YACA,WACA,WACA,UACA,YACA,WACA,eACA,0BACA,WACA,oBACA,YACA,oBACA,YACA,aACA,aACA,8BACA,oBACA,kBACA,gBAtCA,KACA,8BACA,+BACA,YAAkB,WAAmB,IACrC,iBACA,SAGA,QACA,EA6BA,IACA,YACA,8BACA,YAAsB,WAAqB,KAC3C,SACA,YAAwB,WAAmB,IAC3C,iBACA,KACA,KACA,CAEA,cACA,CACA,QACA,cACA,IACA,OAvGA,EAuGA,EAvGA,EACA,GAsGA,EAtGA,YAsGA,EAtGA,gCAEA,EAoGA,EApGA,EAoGA,OACA,CAAQ,SACR,QACA,CACA,YACA,OAtEA,YACA,yBACA,kCACA,qBACA,+DACA,EAEA,SACA,EA8DA,MACA,SAEA,OADA,sCACA,EACA,CACA,EAzFA,UACA,SAGA,QACA,EAlDA,EAMA,cACA,mBACA,IACA,YAAkB,WAAkB,KACpC,uCAGA,YAFA,UAKA,QACA,EAjBA,eAEA,QACA,CAkDA,cACA,qBACA,6DAkFA,gBACA,sBACA,YAAkB,WAAuB,IACzC,aACA,SAGA,QACA,CCpKA,+DACA,gDACO,OAAM,EAQb,eACA,IATuB,CASvB,GAGA,yBACA,oBACA,iCACA,yBACA,cACA,4BACA,iBACA,gBACA,cACA,uBACA,kCACA,4BACA,YACA,gBAEA,qBACA,wBACA,+CAEA,aACA,gBAAsB,OAEtB,CACA,sBACA,6BACA,kBHSO,YACP,YACA,oBACA,SACA,UACA,EGbe,KAEf,CACA,yBACA,4BACA,CACA,aACA,oGAEA,sBAEA,GADA,QACA,qBACA,gCAEA,OAAU,EAAe,wDACzB,CACA,UACA,gBACA,gBAEA,CACA,eACA,qBACA,cACA,cACA,CACA,kCAGA,GAFA,iCAEA,CADA,mDAEA,oDAEA,IACA,oCACA,eACA,UACA,CAAO,2BACP,mBACA,mBACA,eACA,OACA,CAAO,SACP,yDACA,CAAM,SACN,yCACA,CACA,CACA,iBACA,uBACA,cACA,CACA,yBACA,2BACA,cACA,CACA,uBACA,iCACA,cACA,CAEA,qBACA,4BACA,cACA,CACA,gBACA,OACA,wBACA,4BAEA,CACA,cACA,6BACA,CACA,aAEA,OADA,2BACA,KACA,6BACA,CACA,CACA,gBACA,8BACA,CACA,cHpEO,EGsEP,4BACA,uBACA,iCACA,yBACA,iBACA,eACA,4BH5EO,EG8EQ,KH7Ef,0BG8EA,8BACA,yBAEA,CACA,eACA,gBACA,CACA,oBACA,0DACA,gCACA,cACA,CACA,OACA,wBAEA,OADA,6BACA,CACA,CACA,wBACA,YAGA,wBAEA,kFACA,sBACA,aACA,QACA,CAAO,EACP,gCACA,IACA,MACA,CAAU,SACV,gBACA,CACA,CAAO,EAEP,CACA,wBAEA,gCAGA,8BACA,iCAIA,GAHA,2BAGA,yBACA,IACA,6BACA,CAAQ,SAER,CAIA,kBACA,oBACA,MACA,QACK,EACL,eACA,sCAEA,gBACA,yBACA,iBAGA,uBACA,sIACA,iBACA,cACA,CAAS,aAET,CAAS,CACT,CAAO,oCAEP,CACA,+BACA,OACA,QACA,OACA,OACA,SACA,YACA,EAMA,OALA,oBACA,0BAGA,6BACA,CACA,CACA,QACA,8BAEA,SACA,+BAEA,qBACA,MACA,2DACA,CAGA,WACA,0BACA,CAGA,eACA,MAEA,oCAKA,6EAIA,+CAIA,uDAIA,4BAGA,WACA,sBAEA,oDAKA,SAGA,gBAEA,mBACA,IACA,YACA,CAAc,wCACd,OAOsB,EAAI,KAC1B,WAHA,QAUA,CAKA,qDACA,CACA,iBAKA,SAGA,OACA,wBACA,YACA,CACA,yCACA,iCACA,mDACA,uCAGA,qBAEA,GADA,6BACA,eACA,8DAEA,CAQA,4FACA,CACA,oBACA,OAAW,EAAa,uBACxB,CACA,cACA,EAqHA,EApHA,YACA,sBAGA,QAQA,uBAJA,kCAYA,0BAGA,MFlSO,gBACP,MACA,YAEA,sBACA,MACA,YAEA,0BACA,WACA,kCACA,SACA,YACA,CAAG,EACH,QACA,UACA,kBACA,CAAG,GAAG,MAEN,iCACA,IACA,EE6Q6C,2BAC7C,YAKA,iCAIA,gEACA,oCAKA,gCACA,CAGA,qCAIA,kCAIA,IACA,YACA,CAAM,wCACN,OAQA,cFzYO,cACP,qBACA,wBEuY4C,gBAQ5C,YF3TO,YACP,IACA,UACA,CAAI,SAEJ,OADA,iBACA,EACA,CACA,EEoTyC,YAQzC,kDAQA,4CAQA,gCApCA,kCA4CA,MF5ZO,YACP,GE2ZkC,CF3ZlC,2DACA,wCAEA,KAIA,IACI,KAIJ,MAIA,SAzCA,KACA,MAwCA,GAxCA,OAwCA,EAEA,CADA,SACA,YAIA,MAIA,6BACA,iBAIA,MAIA,QACA,iBACA,QAEA,OADA,KACA,UACG,CACH,EEkXkC,mDAElC,EAAqB,SF/ad,KACP,CE8aoC,GF9apC,QAAkB,WAAmB,IACrC,yBACA,SAGA,SACA,EEuac,EAAI,KACkB,GAGpC,OAIA,kCAIA,eAMA,mEAIA,qBAQA,qBAJA,kCAYA,gCAUA,OAPA,iBAOA,CACA,CACA,SACA,aACA,iCAA+C,iBAC/C,CACA,YACA,sCACA,YAGA,8CACA,qCACA,gCACA,IACA,+BACA,CAAM,SACN,gBACA,EACA,CACA,mBACA,YACA,sBASA,OARA,SAEA,gBADA,mBAAmC,UACnC,KACA,OFhfO,YACP,IACA,sCACA,oBACA,CAAI,SACJ,iBACA,MACA,CACA,EE0eA,QAGA,CACA,CACA,qBACA,cACA,KAQA,OAPA,4BACA,8BACM,qBACN,8BACM,gBACN,0BAEA,CACA,gBACA,WACA,CACA,CACA,oBACA,SAEA,gCACA,IACA,MAEA,IACA,gBACA,YACA,CAAM,wCACN,OACA,YACA,eACA,WACA,cACA,sBACA,gBACA,WACA,CACA,CACA,iBACA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","sources":["webpack://_N_E/./node_modules/react-inner-image-zoom/es/InnerImageZoom/components/Image.js","webpack://_N_E/./node_modules/react-inner-image-zoom/es/InnerImageZoom/components/ZoomImage.js","webpack://_N_E/./node_modules/react-inner-image-zoom/es/InnerImageZoom/components/FullscreenPortal.js","webpack://_N_E/./node_modules/react-inner-image-zoom/es/InnerImageZoom/InnerImageZoom.js","webpack://_N_E/./node_modules/react-inner-image-zoom/es/InnerImageZoom/index.js","webpack://_N_E/./node_modules/react-inner-image-zoom/es/index.js","webpack://_N_E/./node_modules/third-party-capital/lib/cjs/third-parties/google-analytics/index.js","webpack://_N_E/./node_modules/keen-slider/keen-slider.min.css","webpack://_N_E/./node_modules/@next/third-parties/dist/google/ga.js","webpack://_N_E/./node_modules/next/dist/api/navigation.js","webpack://_N_E/./node_modules/react-inner-image-zoom/lib/InnerImageZoom/styles.min.css","webpack://_N_E/./node_modules/@next/third-parties/dist/google/youtube-embed.js","webpack://_N_E/./node_modules/third-party-capital/lib/cjs/index.js","webpack://_N_E/./node_modules/third-party-capital/lib/cjs/third-parties/google-maps-embed/index.js","webpack://_N_E/./node_modules/@next/third-parties/dist/ThirdPartyScriptEmbed.js","webpack://_N_E/./node_modules/next/dist/api/script.js","webpack://_N_E/./node_modules/@next/third-parties/dist/google/index.js","webpack://_N_E/./node_modules/third-party-capital/lib/cjs/utils/index.js","webpack://_N_E/./node_modules/uuid/dist/esm-browser/native.js","webpack://_N_E/./node_modules/uuid/dist/esm-browser/rng.js","webpack://_N_E/./node_modules/uuid/dist/esm-browser/stringify.js","webpack://_N_E/./node_modules/uuid/dist/esm-browser/v4.js","webpack://_N_E/./node_modules/third-party-capital/lib/cjs/third-parties/youtube-embed/index.js","webpack://_N_E/./node_modules/@growthbook/growthbook/dist/esm/feature-repository.js","webpack://_N_E/./node_modules/@growthbook/growthbook/dist/esm/util.js","webpack://_N_E/./node_modules/@growthbook/growthbook/dist/esm/mongrule.js","webpack://_N_E/./node_modules/@growthbook/growthbook/dist/esm/GrowthBook.js","webpack://_N_E/./node_modules/@growthbook/growthbook/dist/esm/index.js","webpack://_N_E/./node_modules/@growthbook/growthbook-react/dist/esm/index.js","webpack://_N_E/./node_modules/@next/third-parties/dist/google/google-maps-embed.js","webpack://_N_E/./node_modules/@next/third-parties/dist/google/gtm.js","webpack://_N_E/./node_modules/keen-slider/react.js"],"sourcesContent":["function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\n\nvar Image = function Image(_ref) {\n var src = _ref.src,\n sources = _ref.sources,\n width = _ref.width,\n height = _ref.height,\n hasSpacer = _ref.hasSpacer,\n imgAttributes = _ref.imgAttributes,\n isZoomed = _ref.isZoomed,\n fadeDuration = _ref.fadeDuration;\n var createSpacer = width && height && hasSpacer;\n return /*#__PURE__*/React.createElement(\"div\", {\n style: {\n paddingTop: createSpacer ? height / width * 100 + \"%\" : null\n }\n }, sources && sources.length > 0 ? /*#__PURE__*/React.createElement(\"picture\", null, sources.map(function (source, i) {\n return /*#__PURE__*/React.createElement(Fragment, {\n key: i\n }, source.srcSet && /*#__PURE__*/React.createElement(\"source\", source));\n }), /*#__PURE__*/React.createElement(\"img\", _extends({}, imgAttributes, {\n className: \"iiz__img \" + (imgAttributes.className || '') + \" \" + (isZoomed ? 'iiz__img--hidden' : '') + \" \" + (createSpacer ? 'iiz__img--abs' : ''),\n style: {\n transition: \"opacity 0ms linear \" + (isZoomed ? fadeDuration : 0) + \"ms, visibility 0ms linear \" + (isZoomed ? fadeDuration : 0) + \"ms\"\n },\n src: src,\n width: width,\n height: height\n }))) : /*#__PURE__*/React.createElement(\"img\", _extends({}, imgAttributes, {\n className: \"iiz__img \" + (imgAttributes.className || '') + \" \" + (isZoomed ? 'iiz__img--hidden' : '') + \" \" + (createSpacer ? 'iiz__img--abs' : ''),\n style: {\n transition: \"opacity 0ms linear \" + (isZoomed ? fadeDuration : 0) + \"ms, visibility 0ms linear \" + (isZoomed ? fadeDuration : 0) + \"ms\"\n },\n src: src,\n width: width,\n height: height\n })));\n};\n\nImage.propTypes = process.env.NODE_ENV !== \"production\" ? {\n src: PropTypes.string.isRequired,\n sources: PropTypes.array,\n width: PropTypes.number,\n height: PropTypes.number,\n hasSpacer: PropTypes.bool,\n imgAttributes: PropTypes.object,\n fadeDuration: PropTypes.number,\n isZoomed: PropTypes.bool\n} : {};\nexport default Image;","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\n\nvar ZoomImage = function ZoomImage(_ref) {\n var src = _ref.src,\n fadeDuration = _ref.fadeDuration,\n top = _ref.top,\n left = _ref.left,\n isZoomed = _ref.isZoomed,\n onLoad = _ref.onLoad,\n onDragStart = _ref.onDragStart,\n onDragEnd = _ref.onDragEnd,\n onClose = _ref.onClose,\n onFadeOut = _ref.onFadeOut;\n return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(\"img\", {\n className: \"iiz__zoom-img \" + (isZoomed ? 'iiz__zoom-img--visible' : ''),\n style: {\n top: top,\n left: left,\n transition: \"opacity \" + fadeDuration + \"ms linear, visibility \" + fadeDuration + \"ms linear\"\n },\n src: src,\n onLoad: onLoad,\n onTouchStart: onDragStart,\n onTouchEnd: onDragEnd,\n onMouseDown: onDragStart,\n onMouseUp: onDragEnd,\n onTransitionEnd: onFadeOut,\n draggable: \"false\",\n alt: \"\"\n }), onClose && /*#__PURE__*/React.createElement(\"button\", {\n className: \"iiz__btn iiz__close \" + (isZoomed ? 'iiz__close--visible' : ''),\n style: {\n transition: \"opacity \" + fadeDuration + \"ms linear, visibility \" + fadeDuration + \"ms linear\"\n },\n onClick: onClose,\n \"aria-label\": \"Zoom Out\"\n }));\n};\n\nZoomImage.propTypes = process.env.NODE_ENV !== \"production\" ? {\n src: PropTypes.string,\n fadeDuration: PropTypes.number,\n top: PropTypes.number,\n left: PropTypes.number,\n isZoomed: PropTypes.bool,\n onLoad: PropTypes.func,\n onDragStart: PropTypes.func,\n onDragEnd: PropTypes.func,\n onClose: PropTypes.func,\n onFadeOut: PropTypes.func\n} : {};\nexport default ZoomImage;","import { useEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport PropTypes from 'prop-types';\n\nvar FullscreenPortal = function FullscreenPortal(_ref) {\n var children = _ref.children;\n\n var _useState = useState(function () {\n var el = document.createElement('div');\n el.classList.add('iiz__zoom-portal');\n return el;\n }),\n portal = _useState[0];\n\n useEffect(function () {\n document.body.appendChild(portal);\n return function () {\n return document.body.removeChild(portal);\n };\n }, [portal]);\n return createPortal(children, portal);\n};\n\nFullscreenPortal.propTypes = {\n children: PropTypes.element\n};\nexport default FullscreenPortal;","var _this = this;\n\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Image from './components/Image';\nimport ZoomImage from './components/ZoomImage';\nimport FullscreenPortal from './components/FullscreenPortal';\n\nvar InnerImageZoom = function InnerImageZoom(_ref) {\n var _ref$moveType = _ref.moveType,\n moveType = _ref$moveType === void 0 ? 'pan' : _ref$moveType,\n _ref$zoomType = _ref.zoomType,\n zoomType = _ref$zoomType === void 0 ? 'click' : _ref$zoomType,\n src = _ref.src,\n sources = _ref.sources,\n width = _ref.width,\n height = _ref.height,\n hasSpacer = _ref.hasSpacer,\n _ref$imgAttributes = _ref.imgAttributes,\n imgAttributes = _ref$imgAttributes === void 0 ? {} : _ref$imgAttributes,\n zoomSrc = _ref.zoomSrc,\n _ref$zoomScale = _ref.zoomScale,\n zoomScale = _ref$zoomScale === void 0 ? 1 : _ref$zoomScale,\n zoomPreload = _ref.zoomPreload,\n _ref$fadeDuration = _ref.fadeDuration,\n fadeDuration = _ref$fadeDuration === void 0 ? 150 : _ref$fadeDuration,\n fullscreenOnMobile = _ref.fullscreenOnMobile,\n _ref$mobileBreakpoint = _ref.mobileBreakpoint,\n mobileBreakpoint = _ref$mobileBreakpoint === void 0 ? 640 : _ref$mobileBreakpoint,\n hideCloseButton = _ref.hideCloseButton,\n hideHint = _ref.hideHint,\n className = _ref.className,\n afterZoomIn = _ref.afterZoomIn,\n afterZoomOut = _ref.afterZoomOut;\n var img = useRef(null);\n var zoomImg = useRef(null);\n var imgProps = useRef({});\n\n var _useState = useState(zoomPreload),\n isActive = _useState[0],\n setIsActive = _useState[1];\n\n var _useState2 = useState(false),\n isTouch = _useState2[0],\n setIsTouch = _useState2[1];\n\n var _useState3 = useState(false),\n isZoomed = _useState3[0],\n setIsZoomed = _useState3[1];\n\n var _useState4 = useState(false),\n isFullscreen = _useState4[0],\n setIsFullscreen = _useState4[1];\n\n var _useState5 = useState(false),\n isDragging = _useState5[0],\n setIsDragging = _useState5[1];\n\n var _useState6 = useState(false),\n isValidDrag = _useState6[0],\n setIsValidDrag = _useState6[1];\n\n var _useState7 = useState(false),\n isFading = _useState7[0],\n setIsFading = _useState7[1];\n\n var _useState8 = useState(moveType),\n currentMoveType = _useState8[0],\n setCurrentMoveType = _useState8[1];\n\n var _useState9 = useState(0),\n left = _useState9[0],\n setLeft = _useState9[1];\n\n var _useState10 = useState(0),\n top = _useState10[0],\n setTop = _useState10[1];\n\n var handleMouseEnter = function handleMouseEnter(e) {\n setIsActive(true);\n setIsFading(false);\n zoomType === 'hover' && !isZoomed && handleClick(e);\n };\n\n var handleTouchStart = function handleTouchStart() {\n setIsTouch(true);\n setIsFullscreen(getFullscreenStatus(fullscreenOnMobile, mobileBreakpoint));\n setCurrentMoveType('drag');\n };\n\n var handleClick = function handleClick(e) {\n if (isZoomed) {\n if (isTouch) {\n hideCloseButton && handleClose(e);\n } else {\n !isValidDrag && zoomOut();\n }\n\n return;\n }\n\n isTouch && setIsActive(true);\n\n if (zoomImg.current) {\n handleLoad({\n target: zoomImg.current\n });\n zoomIn(e.pageX, e.pageY);\n } else {\n imgProps.current.onLoadCallback = zoomIn.bind(_this, e.pageX, e.pageY);\n }\n };\n\n var handleLoad = function handleLoad(e) {\n var scaledDimensions = getScaledDimensions(e.target, zoomScale);\n zoomImg.current = e.target;\n zoomImg.current.setAttribute('width', scaledDimensions.width);\n zoomImg.current.setAttribute('height', scaledDimensions.height);\n imgProps.current.scaledDimensions = scaledDimensions;\n imgProps.current.bounds = getBounds(img.current, false);\n imgProps.current.ratios = getRatios(imgProps.current.bounds, scaledDimensions);\n\n if (imgProps.current.onLoadCallback) {\n imgProps.current.onLoadCallback();\n imgProps.current.onLoadCallback = null;\n }\n };\n\n var handleMouseMove = function handleMouseMove(e) {\n var left = e.pageX - imgProps.current.offsets.x;\n var top = e.pageY - imgProps.current.offsets.y;\n left = Math.max(Math.min(left, imgProps.current.bounds.width), 0);\n top = Math.max(Math.min(top, imgProps.current.bounds.height), 0);\n setLeft(left * -imgProps.current.ratios.x);\n setTop(top * -imgProps.current.ratios.y);\n };\n\n var handleDragStart = function handleDragStart(e) {\n var pageX = typeof e.pageX === 'number' ? e.pageX : e.changedTouches[0].pageX;\n var pageY = typeof e.pageY === 'number' ? e.pageY : e.changedTouches[0].pageY;\n imgProps.current.offsets = getOffsets(pageX, pageY, zoomImg.current.offsetLeft, zoomImg.current.offsetTop);\n setIsDragging(true);\n\n if (!isTouch) {\n imgProps.current.eventPosition = {\n x: e.pageX,\n y: e.pageY\n };\n }\n };\n\n var handleDragMove = useCallback(function (e) {\n e.stopPropagation();\n var pageX = typeof e.pageX === 'number' ? e.pageX : e.changedTouches[0].pageX;\n var pageY = typeof e.pageY === 'number' ? e.pageY : e.changedTouches[0].pageY;\n var left = pageX - imgProps.current.offsets.x;\n var top = pageY - imgProps.current.offsets.y;\n left = Math.max(Math.min(left, 0), (imgProps.current.scaledDimensions.width - imgProps.current.bounds.width) * -1);\n top = Math.max(Math.min(top, 0), (imgProps.current.scaledDimensions.height - imgProps.current.bounds.height) * -1);\n setLeft(left);\n setTop(top);\n }, []);\n\n var handleDragEnd = function handleDragEnd(e) {\n setIsDragging(false);\n\n if (!isTouch) {\n var moveX = Math.abs(e.pageX - imgProps.current.eventPosition.x);\n var moveY = Math.abs(e.pageY - imgProps.current.eventPosition.y);\n setIsValidDrag(moveX > 5 || moveY > 5);\n }\n };\n\n var handleMouseLeave = function handleMouseLeave(e) {\n currentMoveType === 'drag' && isZoomed ? handleDragEnd(e) : handleClose(e);\n };\n\n var handleClose = function handleClose(e) {\n if (!(!isTouch && e.target.classList.contains('iiz__close'))) {\n if (!isZoomed || isFullscreen || !fadeDuration) {\n handleFadeOut({}, true);\n } else {\n setIsFading(true);\n }\n }\n\n zoomOut();\n };\n\n var handleFadeOut = function handleFadeOut(e, noTransition) {\n if (noTransition || e.propertyName === 'opacity' && img.current.contains(e.target)) {\n if (zoomPreload && isTouch || !zoomPreload) {\n zoomImg.current = null;\n imgProps.current = getDefaults();\n setIsActive(false);\n }\n\n setIsTouch(false);\n setIsFullscreen(false);\n setCurrentMoveType(moveType);\n setIsFading(false);\n }\n };\n\n var initialMove = function initialMove(pageX, pageY) {\n imgProps.current.offsets = getOffsets(window.pageXOffset, window.pageYOffset, -imgProps.current.bounds.left, -imgProps.current.bounds.top);\n handleMouseMove({\n pageX: pageX,\n pageY: pageY\n });\n };\n\n var initialDrag = function initialDrag(pageX, pageY) {\n var initialPageX = (pageX - (window.pageXOffset + imgProps.current.bounds.left)) * -imgProps.current.ratios.x;\n var initialPageY = (pageY - (window.pageYOffset + imgProps.current.bounds.top)) * -imgProps.current.ratios.y;\n initialPageX = initialPageX + (isFullscreen ? (window.innerWidth - imgProps.current.bounds.width) / 2 : 0);\n initialPageY = initialPageY + (isFullscreen ? (window.innerHeight - imgProps.current.bounds.height) / 2 : 0);\n imgProps.current.bounds = getBounds(img.current, isFullscreen);\n imgProps.current.offsets = getOffsets(0, 0, 0, 0);\n handleDragMove({\n changedTouches: [{\n pageX: initialPageX,\n pageY: initialPageY\n }],\n preventDefault: function preventDefault() {},\n stopPropagation: function stopPropagation() {}\n });\n };\n\n var zoomIn = function zoomIn(pageX, pageY) {\n setIsZoomed(true);\n currentMoveType === 'drag' ? initialDrag(pageX, pageY) : initialMove(pageX, pageY);\n afterZoomIn && afterZoomIn();\n };\n\n var zoomOut = function zoomOut() {\n setIsZoomed(false);\n afterZoomOut && afterZoomOut();\n };\n\n var getDefaults = function getDefaults() {\n return {\n onLoadCallback: null,\n bounds: {},\n offsets: {},\n ratios: {},\n eventPosition: {},\n scaledDimensions: {}\n };\n };\n\n var getBounds = function getBounds(img, isFullscreen) {\n if (isFullscreen) {\n return {\n width: window.innerWidth,\n height: window.innerHeight,\n left: 0,\n top: 0\n };\n }\n\n return img.getBoundingClientRect();\n };\n\n var getOffsets = function getOffsets(pageX, pageY, left, top) {\n return {\n x: pageX - left,\n y: pageY - top\n };\n };\n\n var getRatios = function getRatios(bounds, dimensions) {\n return {\n x: (dimensions.width - bounds.width) / bounds.width,\n y: (dimensions.height - bounds.height) / bounds.height\n };\n };\n\n var getFullscreenStatus = function getFullscreenStatus(fullscreenOnMobile, mobileBreakpoint) {\n return fullscreenOnMobile && window.matchMedia && window.matchMedia(\"(max-width: \" + mobileBreakpoint + \"px)\").matches;\n };\n\n var getScaledDimensions = function getScaledDimensions(zoomImg, zoomScale) {\n return {\n width: zoomImg.naturalWidth * zoomScale,\n height: zoomImg.naturalHeight * zoomScale\n };\n };\n\n var zoomImageProps = {\n src: zoomSrc || src,\n fadeDuration: isFullscreen ? 0 : fadeDuration,\n top: top,\n left: left,\n isZoomed: isZoomed,\n onLoad: handleLoad,\n onDragStart: currentMoveType === 'drag' ? handleDragStart : null,\n onDragEnd: currentMoveType === 'drag' ? handleDragEnd : null,\n onClose: !hideCloseButton && currentMoveType === 'drag' ? handleClose : null,\n onFadeOut: isFading ? handleFadeOut : null\n };\n useEffect(function () {\n imgProps.current = getDefaults();\n }, []);\n useEffect(function () {\n getFullscreenStatus(fullscreenOnMobile, mobileBreakpoint) && setIsActive(false);\n }, [fullscreenOnMobile, mobileBreakpoint]);\n useEffect(function () {\n if (!zoomImg.current) {\n return;\n }\n\n var eventType = isTouch ? 'touchmove' : 'mousemove';\n\n if (isDragging) {\n zoomImg.current.addEventListener(eventType, handleDragMove, {\n passive: true\n });\n } else {\n zoomImg.current.removeEventListener(eventType, handleDragMove);\n }\n }, [isDragging, isTouch, handleDragMove]);\n return /*#__PURE__*/React.createElement(\"figure\", {\n className: \"iiz \" + (currentMoveType === 'drag' ? 'iiz--drag' : '') + \" \" + (className ? className : ''),\n style: {\n width: width\n },\n ref: img,\n onTouchStart: isZoomed ? null : handleTouchStart,\n onClick: handleClick,\n onMouseEnter: isTouch ? null : handleMouseEnter,\n onMouseMove: currentMoveType === 'drag' || !isZoomed ? null : handleMouseMove,\n onMouseLeave: isTouch ? null : handleMouseLeave\n }, /*#__PURE__*/React.createElement(Image, {\n src: src,\n sources: sources,\n width: width,\n height: height,\n hasSpacer: hasSpacer,\n imgAttributes: imgAttributes,\n fadeDuration: fadeDuration,\n isZoomed: isZoomed\n }), isActive && /*#__PURE__*/React.createElement(Fragment, null, isFullscreen ? /*#__PURE__*/React.createElement(FullscreenPortal, null, /*#__PURE__*/React.createElement(ZoomImage, zoomImageProps)) : /*#__PURE__*/React.createElement(ZoomImage, zoomImageProps)), !hideHint && !isZoomed && /*#__PURE__*/React.createElement(\"span\", {\n className: \"iiz__btn iiz__hint\"\n }));\n};\n\nInnerImageZoom.propTypes = process.env.NODE_ENV !== \"production\" ? {\n moveType: PropTypes.string,\n zoomType: PropTypes.string,\n src: PropTypes.string.isRequired,\n sources: PropTypes.array,\n width: PropTypes.number,\n height: PropTypes.number,\n hasSpacer: PropTypes.bool,\n imgAttributes: PropTypes.object,\n zoomSrc: PropTypes.string,\n zoomScale: PropTypes.number,\n zoomPreload: PropTypes.bool,\n fadeDuration: PropTypes.number,\n fullscreenOnMobile: PropTypes.bool,\n mobileBreakpoint: PropTypes.number,\n hideCloseButton: PropTypes.bool,\n hideHint: PropTypes.bool,\n className: PropTypes.string,\n afterZoomIn: PropTypes.func,\n afterZoomOut: PropTypes.func\n} : {};\nexport default InnerImageZoom;","import InnerImageZoom from './InnerImageZoom';\nexport default InnerImageZoom;","import InnerImageZoom from './InnerImageZoom';\nexport default InnerImageZoom;\nexport { InnerImageZoom };","\"use strict\";\n// Copyright 2023 Google LLC\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GoogleAnalytics = void 0;\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// https://www.apache.org/licenses/LICENSE-2.0\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nconst data_json_1 = __importDefault(require(\"./data.json\"));\nconst utils_1 = require(\"../../utils\");\nconst GoogleAnalytics = (_a) => {\n var args = __rest(_a, []);\n return (0, utils_1.formatData)(data_json_1.default, args);\n};\nexports.GoogleAnalytics = GoogleAnalytics;\n","// extracted by mini-css-extract-plugin","\"use strict\";\n'use client';\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sendGAEvent = exports.GoogleAnalytics = void 0;\nconst jsx_runtime_1 = require(\"react/jsx-runtime\");\n// TODO: Evaluate import 'client only'\nconst react_1 = require(\"react\");\nconst script_1 = __importDefault(require(\"next/script\"));\nlet currDataLayerName = undefined;\nfunction GoogleAnalytics(props) {\n const { gaId, dataLayerName = 'dataLayer' } = props;\n if (currDataLayerName === undefined) {\n currDataLayerName = dataLayerName;\n }\n (0, react_1.useEffect)(() => {\n // performance.mark is being used as a feature use signal. While it is traditionally used for performance\n // benchmarking it is low overhead and thus considered safe to use in production and it is a widely available\n // existing API.\n // The performance measurement will be handled by Chrome Aurora\n performance.mark('mark_feature_usage', {\n detail: {\n feature: 'next-third-parties-ga',\n },\n });\n }, []);\n return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(script_1.default, { id: \"_next-ga-init\", dangerouslySetInnerHTML: {\n __html: `\n window['${dataLayerName}'] = window['${dataLayerName}'] || [];\n function gtag(){window['${dataLayerName}'].push(arguments);}\n gtag('js', new Date());\n\n gtag('config', '${gaId}');`,\n } }), (0, jsx_runtime_1.jsx)(script_1.default, { id: \"_next-ga\", src: `https://www.googletagmanager.com/gtag/js?id=${gaId}` })] }));\n}\nexports.GoogleAnalytics = GoogleAnalytics;\nfunction sendGAEvent(..._args) {\n if (currDataLayerName === undefined) {\n console.warn(`@next/third-parties: GA has not been initialized`);\n return;\n }\n if (window[currDataLayerName]) {\n window[currDataLayerName].push(arguments);\n }\n else {\n console.warn(`@next/third-parties: GA dataLayer ${currDataLayerName} does not exist`);\n }\n}\nexports.sendGAEvent = sendGAEvent;\n","export * from '../client/components/navigation';\n\n//# sourceMappingURL=navigation.js.map","// extracted by mini-css-extract-plugin","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst jsx_runtime_1 = require(\"react/jsx-runtime\");\nconst script_1 = __importDefault(require(\"next/script\"));\nconst third_party_capital_1 = require(\"third-party-capital\");\nconst ThirdPartyScriptEmbed_1 = __importDefault(require(\"../ThirdPartyScriptEmbed\"));\nconst scriptStrategy = {\n server: 'beforeInteractive',\n client: 'afterInteractive',\n idle: 'lazyOnload',\n worker: 'worker',\n};\nfunction YouTubeEmbed(props) {\n const { html, scripts, stylesheets } = (0, third_party_capital_1.YouTubeEmbed)(props);\n return ((0, jsx_runtime_1.jsx)(ThirdPartyScriptEmbed_1.default, { height: props.height || null, width: props.width || null, html: html, dataNtpc: \"YouTubeEmbed\", children: scripts === null || scripts === void 0 ? void 0 : scripts.map((script) => ((0, jsx_runtime_1.jsx)(script_1.default, { src: script.url, strategy: scriptStrategy[script.strategy], stylesheets: stylesheets }, script.url))) }));\n}\nexports.default = YouTubeEmbed;\n","\"use strict\";\n// Copyright 2023 Google LLC\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.YouTubeEmbed = exports.GoogleMapsEmbed = exports.GoogleAnalytics = void 0;\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// https://www.apache.org/licenses/LICENSE-2.0\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nvar google_analytics_1 = require(\"./third-parties/google-analytics\");\nObject.defineProperty(exports, \"GoogleAnalytics\", { enumerable: true, get: function () { return google_analytics_1.GoogleAnalytics; } });\nvar google_maps_embed_1 = require(\"./third-parties/google-maps-embed\");\nObject.defineProperty(exports, \"GoogleMapsEmbed\", { enumerable: true, get: function () { return google_maps_embed_1.GoogleMapsEmbed; } });\nvar youtube_embed_1 = require(\"./third-parties/youtube-embed\");\nObject.defineProperty(exports, \"YouTubeEmbed\", { enumerable: true, get: function () { return youtube_embed_1.YouTubeEmbed; } });\n","\"use strict\";\n// Copyright 2023 Google LLC\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GoogleMapsEmbed = void 0;\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// https://www.apache.org/licenses/LICENSE-2.0\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nconst data_json_1 = __importDefault(require(\"./data.json\"));\nconst utils_1 = require(\"../../utils\");\nconst GoogleMapsEmbed = (_a) => {\n var args = __rest(_a, []);\n return (0, utils_1.formatData)(data_json_1.default, args);\n};\nexports.GoogleMapsEmbed = GoogleMapsEmbed;\n","\"use strict\";\n'use client';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst jsx_runtime_1 = require(\"react/jsx-runtime\");\nconst react_1 = require(\"react\");\nfunction ThirdPartyScriptEmbed({ html, height = null, width = null, children, dataNtpc = '', }) {\n (0, react_1.useEffect)(() => {\n if (dataNtpc) {\n // performance.mark is being used as a feature use signal. While it is traditionally used for performance\n // benchmarking it is low overhead and thus considered safe to use in production and it is a widely available\n // existing API.\n performance.mark('mark_feature_usage', {\n detail: {\n feature: `next-third-parties-${dataNtpc}`,\n },\n });\n }\n }, [dataNtpc]);\n return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [children, html ? ((0, jsx_runtime_1.jsx)(\"div\", { style: {\n height: height != null ? `${height}px` : 'auto',\n width: width != null ? `${width}px` : 'auto',\n }, \"data-ntpc\": dataNtpc, dangerouslySetInnerHTML: { __html: html } })) : null] }));\n}\nexports.default = ThirdPartyScriptEmbed;\n","export { default } from '../client/script';\nexport * from '../client/script';\n\n//# sourceMappingURL=script.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sendGAEvent = exports.GoogleAnalytics = exports.sendGTMEvent = exports.GoogleTagManager = exports.YouTubeEmbed = exports.GoogleMapsEmbed = void 0;\nvar google_maps_embed_1 = require(\"./google-maps-embed\");\nObject.defineProperty(exports, \"GoogleMapsEmbed\", { enumerable: true, get: function () { return __importDefault(google_maps_embed_1).default; } });\nvar youtube_embed_1 = require(\"./youtube-embed\");\nObject.defineProperty(exports, \"YouTubeEmbed\", { enumerable: true, get: function () { return __importDefault(youtube_embed_1).default; } });\nvar gtm_1 = require(\"./gtm\");\nObject.defineProperty(exports, \"GoogleTagManager\", { enumerable: true, get: function () { return gtm_1.GoogleTagManager; } });\nObject.defineProperty(exports, \"sendGTMEvent\", { enumerable: true, get: function () { return gtm_1.sendGTMEvent; } });\nvar ga_1 = require(\"./ga\");\nObject.defineProperty(exports, \"GoogleAnalytics\", { enumerable: true, get: function () { return ga_1.GoogleAnalytics; } });\nObject.defineProperty(exports, \"sendGAEvent\", { enumerable: true, get: function () { return ga_1.sendGAEvent; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.formatData = exports.createHtml = exports.formatUrl = void 0;\nfunction filterArgs(args, selectedArgs, inverse = false) {\n if (!selectedArgs)\n return {};\n return Object.keys(args)\n .filter((key) => inverse ? !selectedArgs.includes(key) : selectedArgs.includes(key))\n .reduce((obj, key) => {\n obj[key] = args[key];\n return obj;\n }, {});\n}\n// Add all required search params with user inputs as values\nfunction formatUrl(url, params, args, slug) {\n const newUrl = slug && Object.keys(slug).length > 0\n ? new URL(Object.values(slug)[0], url) // If there's a user inputted param for the URL slug, replace the default existing slug or include it\n : new URL(url);\n if (params && args) {\n params.forEach((param) => {\n if (args[param])\n newUrl.searchParams.set(param, args[param]);\n });\n }\n return newUrl.toString();\n}\nexports.formatUrl = formatUrl;\n// Construct HTML element and include all default attributes and user-inputted attributes\nfunction createHtml(element, attributes, htmlAttrArgs, urlQueryParamArgs, slugParamArg) {\n var _a;\n if (!attributes)\n return `<${element}>`;\n const formattedAttributes = ((_a = attributes.src) === null || _a === void 0 ? void 0 : _a.url)\n ? Object.assign(Object.assign({}, attributes), { src: formatUrl(attributes.src.url, attributes.src.params, urlQueryParamArgs, slugParamArg) }) : attributes;\n const htmlAttributes = Object.keys(Object.assign(Object.assign({}, formattedAttributes), htmlAttrArgs)).reduce((acc, name) => {\n const userVal = htmlAttrArgs === null || htmlAttrArgs === void 0 ? void 0 : htmlAttrArgs[name];\n const defaultVal = formattedAttributes[name];\n const finalVal = userVal !== null && userVal !== void 0 ? userVal : defaultVal; // overwrite\n const attrString = finalVal === true ? name : `${name}=\"${finalVal}\"`;\n return finalVal ? acc + ` ${attrString}` : acc;\n }, '');\n return `<${element}${htmlAttributes}>`;\n}\nexports.createHtml = createHtml;\n// Format JSON by including all default and user-required parameters\nfunction formatData(data, args) {\n var _a, _b, _c, _d, _e;\n const allScriptParams = (_a = data.scripts) === null || _a === void 0 ? void 0 : _a.reduce((acc, script) => [\n ...acc,\n ...(Array.isArray(script.params) ? script.params : []),\n ], []);\n // First, find all input arguments that map to parameters passed to script URLs\n const scriptUrlParamInputs = filterArgs(args, allScriptParams);\n // Second, find all input arguments that map to parameters passed to the HTML src attribute\n const htmlUrlParamInputs = filterArgs(args, (_c = (_b = data.html) === null || _b === void 0 ? void 0 : _b.attributes.src) === null || _c === void 0 ? void 0 : _c.params);\n // Third, find the input argument that maps to the slug parameter passed to the HTML src attribute if present\n const htmlSlugParamInput = filterArgs(args, [\n (_e = (_d = data.html) === null || _d === void 0 ? void 0 : _d.attributes.src) === null || _e === void 0 ? void 0 : _e.slugParam,\n ]);\n // Lastly, all remaining arguments are forwarded as separate HTML attributes\n const htmlAttrInputs = filterArgs(args, [\n ...Object.keys(scriptUrlParamInputs),\n ...Object.keys(htmlUrlParamInputs),\n ...Object.keys(htmlSlugParamInput),\n ], true);\n return Object.assign(Object.assign({}, data), { \n // Pass any custom attributes to HTML content\n html: data.html\n ? createHtml(data.html.element, data.html.attributes, htmlAttrInputs, htmlUrlParamInputs, htmlSlugParamInput)\n : null, \n // Pass any required query params with user values for relevant scripts\n scripts: data.scripts\n ? data.scripts.map((script) => (Object.assign(Object.assign({}, script), { url: formatUrl(script.url, script.params, scriptUrlParamInputs) })))\n : null });\n}\nexports.formatData = formatData;\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","\"use strict\";\n// Copyright 2023 Google LLC\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.YouTubeEmbed = void 0;\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// https://www.apache.org/licenses/LICENSE-2.0\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nconst data_json_1 = __importDefault(require(\"./data.json\"));\nconst utils_1 = require(\"../../utils\");\nconst YouTubeEmbed = (_a) => {\n var args = __rest(_a, []);\n return (0, utils_1.formatData)(data_json_1.default, args);\n};\nexports.YouTubeEmbed = YouTubeEmbed;\n","// Config settings\nconst cacheSettings = {\n // Consider a fetch stale after 1 minute\n staleTTL: 1000 * 60,\n cacheKey: \"gbFeaturesCache\",\n backgroundSync: true\n};\nconst polyfills = {\n fetch: globalThis.fetch ? globalThis.fetch.bind(globalThis) : undefined,\n SubtleCrypto: globalThis.crypto ? globalThis.crypto.subtle : undefined,\n EventSource: globalThis.EventSource\n};\ntry {\n if (globalThis.localStorage) {\n polyfills.localStorage = globalThis.localStorage;\n }\n} catch (e) {\n // Ignore localStorage errors\n}\n\n// Global state\nconst subscribedInstances = new Map();\nlet cacheInitialized = false;\nconst cache = new Map();\nconst activeFetches = new Map();\nconst streams = new Map();\nconst supportsSSE = new Set();\n\n// Public functions\nexport function setPolyfills(overrides) {\n Object.assign(polyfills, overrides);\n}\nexport function configureCache(overrides) {\n Object.assign(cacheSettings, overrides);\n if (!cacheSettings.backgroundSync) {\n clearAutoRefresh();\n }\n}\nexport async function clearCache() {\n cache.clear();\n activeFetches.clear();\n clearAutoRefresh();\n cacheInitialized = false;\n await updatePersistentCache();\n}\nexport async function refreshFeatures(instance, timeout, skipCache, allowStale, updateInstance) {\n const data = await fetchFeaturesWithCache(instance, allowStale, timeout, skipCache);\n updateInstance && data && (await setFeaturesOnInstance(instance, data));\n}\n\n// Subscribe a GrowthBook instance to feature changes\nexport function subscribe(instance) {\n const [key] = getKey(instance);\n const subs = subscribedInstances.get(key) || new Set();\n subs.add(instance);\n subscribedInstances.set(key, subs);\n}\nexport function unsubscribe(instance) {\n subscribedInstances.forEach(s => s.delete(instance));\n}\n\n// Private functions\nasync function updatePersistentCache() {\n try {\n if (!polyfills.localStorage) return;\n await polyfills.localStorage.setItem(cacheSettings.cacheKey, JSON.stringify(Array.from(cache.entries())));\n } catch (e) {\n // Ignore localStorage errors\n }\n}\nasync function fetchFeaturesWithCache(instance, allowStale, timeout, skipCache) {\n const [key] = getKey(instance);\n const now = new Date();\n await initializeCache();\n const existing = cache.get(key);\n if (existing && !skipCache && (allowStale || existing.staleAt > now)) {\n // Reload features in the backgroud if stale\n if (existing.staleAt < now) {\n fetchFeatures(instance);\n }\n // Otherwise, if we don't need to refresh now, start a background sync\n else {\n startAutoRefresh(instance);\n }\n return existing.data;\n } else {\n const data = await promiseTimeout(fetchFeatures(instance), timeout);\n return data;\n }\n}\nfunction getKey(instance) {\n const [apiHost, clientKey] = instance.getApiInfo();\n return [\"\".concat(apiHost, \"||\").concat(clientKey), apiHost, clientKey];\n}\n\n// Guarantee the promise always resolves within {timeout} ms\n// Resolved value will be `null` when there's an error or it takes too long\n// Note: The promise will continue running in the background, even if the timeout is hit\nfunction promiseTimeout(promise, timeout) {\n return new Promise(resolve => {\n let resolved = false;\n let timer;\n const finish = data => {\n if (resolved) return;\n resolved = true;\n timer && clearTimeout(timer);\n resolve(data || null);\n };\n if (timeout) {\n timer = setTimeout(() => finish(), timeout);\n }\n promise.then(data => finish(data)).catch(() => finish());\n });\n}\n\n// Populate cache from localStorage (if available)\nasync function initializeCache() {\n if (cacheInitialized) return;\n cacheInitialized = true;\n try {\n if (polyfills.localStorage) {\n const value = await polyfills.localStorage.getItem(cacheSettings.cacheKey);\n if (value) {\n const parsed = JSON.parse(value);\n if (parsed && Array.isArray(parsed)) {\n parsed.forEach(_ref => {\n let [key, data] = _ref;\n cache.set(key, {\n ...data,\n staleAt: new Date(data.staleAt)\n });\n });\n }\n }\n }\n } catch (e) {\n // Ignore localStorage errors\n }\n}\n\n// Called whenever new features are fetched from the API\nfunction onNewFeatureData(key, data) {\n // If contents haven't changed, ignore the update, extend the stale TTL\n const version = data.dateUpdated || \"\";\n const staleAt = new Date(Date.now() + cacheSettings.staleTTL);\n const existing = cache.get(key);\n if (existing && version && existing.version === version) {\n existing.staleAt = staleAt;\n return;\n }\n\n // Update in-memory cache\n cache.set(key, {\n data,\n version,\n staleAt\n });\n // Update local storage (don't await this, just update asynchronously)\n updatePersistentCache();\n\n // Update features for all subscribed GrowthBook instances\n const instances = subscribedInstances.get(key);\n instances && instances.forEach(instance => setFeaturesOnInstance(instance, data));\n}\nasync function setFeaturesOnInstance(instance, data) {\n await (data.encryptedFeatures ? instance.setEncryptedFeatures(data.encryptedFeatures, undefined, polyfills.SubtleCrypto) : instance.setFeatures(data.features || instance.getFeatures()));\n}\nasync function fetchFeatures(instance) {\n const [key, apiHost, clientKey] = getKey(instance);\n const endpoint = apiHost + \"/api/features/\" + clientKey;\n let promise = activeFetches.get(key);\n if (!promise) {\n promise = polyfills.fetch(endpoint)\n // TODO: auto-retry if status code indicates a temporary error\n .then(res => {\n if (res.headers.get(\"x-sse-support\") === \"enabled\") {\n supportsSSE.add(key);\n }\n return res.json();\n }).then(data => {\n onNewFeatureData(key, data);\n startAutoRefresh(instance);\n activeFetches.delete(key);\n return data;\n }).catch(e => {\n process.env.NODE_ENV !== \"production\" && instance.log(\"Error fetching features\", {\n apiHost,\n clientKey,\n error: e ? e.message : null\n });\n activeFetches.delete(key);\n return Promise.resolve({});\n });\n activeFetches.set(key, promise);\n }\n return await promise;\n}\n\n// Watch a feature endpoint for changes\n// Will prefer SSE if enabled, otherwise fall back to cron\nfunction startAutoRefresh(instance) {\n const [key, apiHost, clientKey] = getKey(instance);\n if (cacheSettings.backgroundSync && supportsSSE.has(key) && polyfills.EventSource) {\n if (streams.has(key)) return;\n const channel = {\n src: new polyfills.EventSource(\"\".concat(apiHost, \"/sub/\").concat(clientKey)),\n cb: event => {\n try {\n const json = JSON.parse(event.data);\n onNewFeatureData(key, json);\n // Reset error count on success\n channel.errors = 0;\n } catch (e) {\n process.env.NODE_ENV !== \"production\" && instance.log(\"SSE Error\", {\n apiHost,\n clientKey,\n error: e ? e.message : null\n });\n onSSEError(channel, key);\n }\n },\n errors: 0\n };\n streams.set(key, channel);\n channel.src.addEventListener(\"features\", channel.cb);\n channel.src.onerror = () => {\n onSSEError(channel, key);\n };\n }\n}\nfunction onSSEError(channel, key) {\n channel.errors++;\n if (channel.errors > 3 || channel.src.readyState === 2) {\n destroyChannel(channel, key);\n }\n}\nfunction destroyChannel(channel, key) {\n channel.src.onerror = null;\n channel.src.close();\n streams.delete(key);\n}\nfunction clearAutoRefresh() {\n // Clear list of which keys are auto-updated\n supportsSSE.clear();\n\n // Stop listening for any SSE events\n streams.forEach(destroyChannel);\n\n // Remove all references to GrowthBook instances\n subscribedInstances.clear();\n}\n//# sourceMappingURL=feature-repository.js.map","function hashFnv32a(str) {\n let hval = 0x811c9dc5;\n const l = str.length;\n for (let i = 0; i < l; i++) {\n hval ^= str.charCodeAt(i);\n hval += (hval << 1) + (hval << 4) + (hval << 7) + (hval << 8) + (hval << 24);\n }\n return hval >>> 0;\n}\nexport function hash(str) {\n return hashFnv32a(str) % 1000 / 1000;\n}\nexport function getEqualWeights(n) {\n if (n <= 0) return [];\n return new Array(n).fill(1 / n);\n}\nexport function inNamespace(hashValue, namespace) {\n const n = hash(hashValue + \"__\" + namespace[0]);\n return n >= namespace[1] && n < namespace[2];\n}\nexport function chooseVariation(n, ranges) {\n for (let i = 0; i < ranges.length; i++) {\n if (n >= ranges[i][0] && n < ranges[i][1]) {\n return i;\n }\n }\n return -1;\n}\nexport function getUrlRegExp(regexString) {\n try {\n const escaped = regexString.replace(/([^\\\\])\\//g, \"$1\\\\/\");\n return new RegExp(escaped);\n } catch (e) {\n console.error(e);\n return undefined;\n }\n}\nexport function getBucketRanges(numVariations) {\n let coverage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n let weights = arguments.length > 2 ? arguments[2] : undefined;\n // Make sure coverage is within bounds\n if (coverage < 0) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(\"Experiment.coverage must be greater than or equal to 0\");\n }\n coverage = 0;\n } else if (coverage > 1) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(\"Experiment.coverage must be less than or equal to 1\");\n }\n coverage = 1;\n }\n\n // Default to equal weights if missing or invalid\n const equal = getEqualWeights(numVariations);\n weights = weights || equal;\n if (weights.length !== numVariations) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(\"Experiment.weights array must be the same length as Experiment.variations\");\n }\n weights = equal;\n }\n\n // If weights don't add up to 1 (or close to it), default to equal weights\n const totalWeight = weights.reduce((w, sum) => sum + w, 0);\n if (totalWeight < 0.99 || totalWeight > 1.01) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(\"Experiment.weights must add up to 1\");\n }\n weights = equal;\n }\n\n // Covert weights to ranges\n let cumulative = 0;\n return weights.map(w => {\n const start = cumulative;\n cumulative += w;\n return [start, start + coverage * w];\n });\n}\nexport function getQueryStringOverride(id, url, numVariations) {\n if (!url) {\n return null;\n }\n const search = url.split(\"?\")[1];\n if (!search) {\n return null;\n }\n const match = search.replace(/#.*/, \"\") // Get rid of anchor\n .split(\"&\") // Split into key/value pairs\n .map(kv => kv.split(\"=\", 2)).filter(_ref => {\n let [k] = _ref;\n return k === id;\n }) // Look for key that matches the experiment id\n .map(_ref2 => {\n let [, v] = _ref2;\n return parseInt(v);\n }); // Parse the value into an integer\n\n if (match.length > 0 && match[0] >= 0 && match[0] < numVariations) return match[0];\n return null;\n}\nexport function isIncluded(include) {\n try {\n return include();\n } catch (e) {\n console.error(e);\n return false;\n }\n}\n//# sourceMappingURL=util.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nconst _regexCache = {};\n\n// The top-level condition evaluation function\nexport function evalCondition(obj, condition) {\n // Recursive condition\n if (\"$or\" in condition) {\n return evalOr(obj, condition[\"$or\"]);\n }\n if (\"$nor\" in condition) {\n return !evalOr(obj, condition[\"$nor\"]);\n }\n if (\"$and\" in condition) {\n return evalAnd(obj, condition[\"$and\"]);\n }\n if (\"$not\" in condition) {\n return !evalCondition(obj, condition[\"$not\"]);\n }\n\n // Condition is an object, keys are object paths, values are the condition for that path\n for (const [k, v] of Object.entries(condition)) {\n if (!evalConditionValue(v, getPath(obj, k))) return false;\n }\n return true;\n}\n\n// Return value at dot-separated path of an object\nfunction getPath(obj, path) {\n const parts = path.split(\".\");\n let current = obj;\n for (let i = 0; i < parts.length; i++) {\n if (current && typeof current === \"object\" && parts[i] in current) {\n current = current[parts[i]];\n } else {\n return null;\n }\n }\n return current;\n}\n\n// Transform a regex string into a real RegExp object\nfunction getRegex(regex) {\n if (!_regexCache[regex]) {\n _regexCache[regex] = new RegExp(regex.replace(/([^\\\\])\\//g, \"$1\\\\/\"));\n }\n return _regexCache[regex];\n}\n\n// Evaluate a single value against a condition\nfunction evalConditionValue(condition, value) {\n // Simple equality comparisons\n if (typeof condition === \"string\") {\n return value + \"\" === condition;\n }\n if (typeof condition === \"number\") {\n return value * 1 === condition;\n }\n if (typeof condition === \"boolean\") {\n return !!value === condition;\n }\n if (Array.isArray(condition) || !isOperatorObject(condition)) {\n return JSON.stringify(value) === JSON.stringify(condition);\n }\n\n // This is a special operator condition and we should evaluate each one separately\n for (const op in condition) {\n if (!evalOperatorCondition(op, value, condition[op])) {\n return false;\n }\n }\n return true;\n}\n\n// If the object has only keys that start with '$'\nfunction isOperatorObject(obj) {\n const keys = Object.keys(obj);\n return keys.length > 0 && keys.filter(k => k[0] === \"$\").length === keys.length;\n}\n\n// Return the data type of a value\nfunction getType(v) {\n if (v === null) return \"null\";\n if (Array.isArray(v)) return \"array\";\n const t = typeof v;\n if ([\"string\", \"number\", \"boolean\", \"object\", \"undefined\"].includes(t)) {\n return t;\n }\n return \"unknown\";\n}\n\n// At least one element of actual must match the expected condition/value\nfunction elemMatch(actual, expected) {\n if (!Array.isArray(actual)) return false;\n const check = isOperatorObject(expected) ? v => evalConditionValue(expected, v) : v => evalCondition(v, expected);\n for (let i = 0; i < actual.length; i++) {\n if (actual[i] && check(actual[i])) {\n return true;\n }\n }\n return false;\n}\n\n// Evaluate a single operator condition\nfunction evalOperatorCondition(operator, actual, expected) {\n switch (operator) {\n case \"$eq\":\n return actual === expected;\n case \"$ne\":\n return actual !== expected;\n case \"$lt\":\n return actual < expected;\n case \"$lte\":\n return actual <= expected;\n case \"$gt\":\n return actual > expected;\n case \"$gte\":\n return actual >= expected;\n case \"$exists\":\n return expected ? actual !== null : actual === null;\n case \"$in\":\n return expected.includes(actual);\n case \"$nin\":\n return !expected.includes(actual);\n case \"$not\":\n return !evalConditionValue(expected, actual);\n case \"$size\":\n if (!Array.isArray(actual)) return false;\n return evalConditionValue(expected, actual.length);\n case \"$elemMatch\":\n return elemMatch(actual, expected);\n case \"$all\":\n if (!Array.isArray(actual)) return false;\n for (let i = 0; i < expected.length; i++) {\n let passed = false;\n for (let j = 0; j < actual.length; j++) {\n if (evalConditionValue(expected[i], actual[j])) {\n passed = true;\n break;\n }\n }\n if (!passed) return false;\n }\n return true;\n case \"$regex\":\n try {\n return getRegex(expected).test(actual);\n } catch (e) {\n return false;\n }\n case \"$type\":\n return getType(actual) === expected;\n default:\n console.error(\"Unknown operator: \" + operator);\n return false;\n }\n}\n\n// Recursive $or rule\nfunction evalOr(obj, conditions) {\n if (!conditions.length) return true;\n for (let i = 0; i < conditions.length; i++) {\n if (evalCondition(obj, conditions[i])) {\n return true;\n }\n }\n return false;\n}\n\n// Recursive $and rule\nfunction evalAnd(obj, conditions) {\n for (let i = 0; i < conditions.length; i++) {\n if (!evalCondition(obj, conditions[i])) {\n return false;\n }\n }\n return true;\n}\n//# sourceMappingURL=mongrule.js.map","import { getUrlRegExp, isIncluded, getBucketRanges, hash, chooseVariation, getQueryStringOverride, inNamespace } from \"./util\";\nimport { evalCondition } from \"./mongrule\";\nimport { refreshFeatures, subscribe, unsubscribe } from \"./feature-repository\";\nconst isBrowser = typeof window !== \"undefined\" && typeof document !== \"undefined\";\nconst base64ToBuf = b => Uint8Array.from(atob(b), c => c.charCodeAt(0));\nexport class GrowthBook {\n // context is technically private, but some tools depend on it so we can't mangle the name\n // _ctx below is a clone of this property that we use internally\n\n // Properties and methods that start with \"_\" are mangled by Terser (saves ~150 bytes)\n\n // eslint-disable-next-line\n\n constructor(context) {\n context = context || {};\n // These properties are all initialized in the constructor instead of above\n // This saves ~80 bytes in the final output\n this._ctx = this.context = context;\n this._renderer = null;\n this._trackedExperiments = new Set();\n this._trackedFeatures = {};\n this.debug = false;\n this._subscriptions = new Set();\n this._rtQueue = [];\n this._rtTimer = 0;\n this.ready = false;\n this._assigned = new Map();\n this._forcedFeatureValues = new Map();\n this._attributeOverrides = {};\n if (context.features) {\n this.ready = true;\n }\n if (isBrowser && context.enableDevMode) {\n window._growthbook = this;\n document.dispatchEvent(new Event(\"gbloaded\"));\n }\n if (context.clientKey) {\n this._refresh({}, true, false);\n }\n }\n async loadFeatures(options) {\n await this._refresh(options, true, true);\n if (options && options.autoRefresh) {\n subscribe(this);\n }\n }\n async refreshFeatures(options) {\n await this._refresh(options, false, true);\n }\n getApiInfo() {\n return [(this._ctx.apiHost || \"https://cdn.growthbook.io\").replace(/\\/*$/, \"\"), this._ctx.clientKey || \"\"];\n }\n async _refresh(options, allowStale, updateInstance) {\n options = options || {};\n if (!this._ctx.clientKey) {\n throw new Error(\"Missing clientKey\");\n }\n await refreshFeatures(this, options.timeout, options.skipCache || this._ctx.enableDevMode, allowStale, updateInstance);\n }\n _render() {\n if (this._renderer) {\n this._renderer();\n }\n }\n setFeatures(features) {\n this._ctx.features = features;\n this.ready = true;\n this._render();\n }\n async setEncryptedFeatures(encryptedString, decryptionKey, subtle) {\n decryptionKey = decryptionKey || this._ctx.decryptionKey || \"\";\n subtle = subtle || globalThis.crypto && globalThis.crypto.subtle;\n if (!subtle) {\n throw new Error(\"No SubtleCrypto implementation found\");\n }\n try {\n const key = await subtle.importKey(\"raw\", base64ToBuf(decryptionKey), {\n name: \"AES-CBC\",\n length: 128\n }, true, [\"encrypt\", \"decrypt\"]);\n const [iv, cipherText] = encryptedString.split(\".\");\n const plainTextBuffer = await subtle.decrypt({\n name: \"AES-CBC\",\n iv: base64ToBuf(iv)\n }, key, base64ToBuf(cipherText));\n this.setFeatures(JSON.parse(new TextDecoder().decode(plainTextBuffer)));\n } catch (e) {\n throw new Error(\"Failed to decrypt features\");\n }\n }\n setAttributes(attributes) {\n this._ctx.attributes = attributes;\n this._render();\n }\n setAttributeOverrides(overrides) {\n this._attributeOverrides = overrides;\n this._render();\n }\n setForcedVariations(vars) {\n this._ctx.forcedVariations = vars || {};\n this._render();\n }\n // eslint-disable-next-line\n setForcedFeatures(map) {\n this._forcedFeatureValues = map;\n this._render();\n }\n getAttributes() {\n return {\n ...this._ctx.attributes,\n ...this._attributeOverrides\n };\n }\n getFeatures() {\n return this._ctx.features || {};\n }\n subscribe(cb) {\n this._subscriptions.add(cb);\n return () => {\n this._subscriptions.delete(cb);\n };\n }\n getAllResults() {\n return new Map(this._assigned);\n }\n destroy() {\n // Release references to save memory\n this._subscriptions.clear();\n this._assigned.clear();\n this._trackedExperiments.clear();\n this._trackedFeatures = {};\n this._rtQueue = [];\n if (this._rtTimer) {\n clearTimeout(this._rtTimer);\n }\n unsubscribe(this);\n if (isBrowser && window._growthbook === this) {\n delete window._growthbook;\n }\n }\n setRenderer(renderer) {\n this._renderer = renderer;\n }\n forceVariation(key, variation) {\n this._ctx.forcedVariations = this._ctx.forcedVariations || {};\n this._ctx.forcedVariations[key] = variation;\n this._render();\n }\n run(experiment) {\n const result = this._run(experiment, null);\n this._fireSubscriptions(experiment, result);\n return result;\n }\n _fireSubscriptions(experiment, result) {\n const key = experiment.key;\n\n // If assigned variation has changed, fire subscriptions\n const prev = this._assigned.get(key);\n // TODO: what if the experiment definition has changed?\n if (!prev || prev.result.inExperiment !== result.inExperiment || prev.result.variationId !== result.variationId) {\n this._assigned.set(key, {\n experiment,\n result\n });\n this._subscriptions.forEach(cb => {\n try {\n cb(experiment, result);\n } catch (e) {\n console.error(e);\n }\n });\n }\n }\n _trackFeatureUsage(key, res) {\n // Don't track feature usage that was forced via an override\n if (res.source === \"override\") return;\n\n // Only track a feature once, unless the assigned value changed\n const stringifiedValue = JSON.stringify(res.value);\n if (this._trackedFeatures[key] === stringifiedValue) return;\n this._trackedFeatures[key] = stringifiedValue;\n\n // Fire user-supplied callback\n if (this._ctx.onFeatureUsage) {\n try {\n this._ctx.onFeatureUsage(key, res);\n } catch (e) {\n // Ignore feature usage callback errors\n }\n }\n\n // In browser environments, queue up feature usage to be tracked in batches\n if (!isBrowser || !window.fetch) return;\n this._rtQueue.push({\n key,\n on: res.on\n });\n if (!this._rtTimer) {\n this._rtTimer = window.setTimeout(() => {\n // Reset the queue\n this._rtTimer = 0;\n const q = [...this._rtQueue];\n this._rtQueue = [];\n\n // Skip logging if a real-time usage key is not configured\n if (!this._ctx.realtimeKey) return;\n window.fetch(\"https://rt.growthbook.io/?key=\".concat(this._ctx.realtimeKey, \"&events=\").concat(encodeURIComponent(JSON.stringify(q))), {\n cache: \"no-cache\",\n mode: \"no-cors\"\n }).catch(() => {\n // TODO: retry in case of network errors?\n });\n }, this._ctx.realtimeInterval || 2000);\n }\n }\n _getFeatureResult(key, value, source, ruleId, experiment, result) {\n const ret = {\n value,\n on: !!value,\n off: !value,\n source,\n ruleId: ruleId || \"\"\n };\n if (experiment) ret.experiment = experiment;\n if (result) ret.experimentResult = result;\n\n // Track the usage of this feature in real-time\n this._trackFeatureUsage(key, ret);\n return ret;\n }\n isOn(key) {\n return this.evalFeature(key).on;\n }\n isOff(key) {\n return this.evalFeature(key).off;\n }\n getFeatureValue(key, defaultValue) {\n var _this$evalFeature$val;\n return (_this$evalFeature$val = this.evalFeature(key).value) !== null && _this$evalFeature$val !== void 0 ? _this$evalFeature$val : defaultValue;\n }\n\n // eslint-disable-next-line\n feature(id) {\n return this.evalFeature(id);\n }\n\n // eslint-disable-next-line\n evalFeature(id) {\n var _feature$defaultValue, _feature$defaultValue2;\n // Global override\n if (this._forcedFeatureValues.has(id)) {\n process.env.NODE_ENV !== \"production\" && this.log(\"Global override\", {\n id,\n value: this._forcedFeatureValues.get(id)\n });\n return this._getFeatureResult(id, this._forcedFeatureValues.get(id), \"override\");\n }\n\n // Unknown feature id\n if (!this._ctx.features || !this._ctx.features[id]) {\n process.env.NODE_ENV !== \"production\" && this.log(\"Unknown feature\", {\n id\n });\n return this._getFeatureResult(id, null, \"unknownFeature\");\n }\n\n // Get the feature\n const feature = this._ctx.features[id];\n\n // Loop through the rules\n if (feature.rules) {\n for (const rule of feature.rules) {\n // If it's a conditional rule, skip if the condition doesn't pass\n if (rule.condition && !this._conditionPasses(rule.condition)) {\n process.env.NODE_ENV !== \"production\" && this.log(\"Skip rule because of condition\", {\n id,\n rule\n });\n continue;\n }\n // Feature value is being forced\n if (\"force\" in rule) {\n // Skip if coverage is reduced and user not included\n if (\"coverage\" in rule) {\n const {\n hashValue\n } = this._getHashAttribute(rule.hashAttribute);\n if (!hashValue) {\n process.env.NODE_ENV !== \"production\" && this.log(\"Skip rule because of missing hashAttribute\", {\n id,\n rule\n });\n continue;\n }\n const n = hash(hashValue + id);\n if (n > rule.coverage) {\n process.env.NODE_ENV !== \"production\" && this.log(\"Skip rule because of coverage\", {\n id,\n rule\n });\n continue;\n }\n }\n process.env.NODE_ENV !== \"production\" && this.log(\"Force value from rule\", {\n id,\n rule\n });\n return this._getFeatureResult(id, rule.force, \"force\", rule.id);\n }\n if (!rule.variations) {\n process.env.NODE_ENV !== \"production\" && this.log(\"Skip invalid rule\", {\n id,\n rule\n });\n continue;\n }\n // For experiment rules, run an experiment\n const exp = {\n variations: rule.variations,\n key: rule.key || id\n };\n if (\"coverage\" in rule) exp.coverage = rule.coverage;\n if (rule.weights) exp.weights = rule.weights;\n if (rule.hashAttribute) exp.hashAttribute = rule.hashAttribute;\n if (rule.namespace) exp.namespace = rule.namespace;\n\n // Only return a value if the user is part of the experiment\n const res = this._run(exp, id);\n this._fireSubscriptions(exp, res);\n if (res.inExperiment) {\n return this._getFeatureResult(id, res.value, \"experiment\", rule.id, exp, res);\n }\n }\n }\n process.env.NODE_ENV !== \"production\" && this.log(\"Use default value\", {\n id,\n value: (_feature$defaultValue = feature.defaultValue) !== null && _feature$defaultValue !== void 0 ? _feature$defaultValue : null\n });\n\n // Fall back to using the default value\n return this._getFeatureResult(id, (_feature$defaultValue2 = feature.defaultValue) !== null && _feature$defaultValue2 !== void 0 ? _feature$defaultValue2 : null, \"defaultValue\");\n }\n _conditionPasses(condition) {\n return evalCondition(this.getAttributes(), condition);\n }\n _run(experiment, featureId) {\n var _experiment$coverage;\n const key = experiment.key;\n const numVariations = experiment.variations.length;\n\n // 1. If experiment has less than 2 variations, return immediately\n if (numVariations < 2) {\n process.env.NODE_ENV !== \"production\" && this.log(\"Invalid experiment\", {\n id: key\n });\n return this._getResult(experiment, -1, false, featureId);\n }\n\n // 2. If the context is disabled, return immediately\n if (this._ctx.enabled === false) {\n process.env.NODE_ENV !== \"production\" && this.log(\"Context disabled\", {\n id: key\n });\n return this._getResult(experiment, -1, false, featureId);\n }\n\n // 2.5. Merge in experiment overrides from the context\n experiment = this._mergeOverrides(experiment);\n\n // 3. If a variation is forced from a querystring, return the forced variation\n const qsOverride = getQueryStringOverride(key, this._getContextUrl(), numVariations);\n if (qsOverride !== null) {\n process.env.NODE_ENV !== \"production\" && this.log(\"Force via querystring\", {\n id: key,\n variation: qsOverride\n });\n return this._getResult(experiment, qsOverride, false, featureId);\n }\n\n // 4. If a variation is forced in the context, return the forced variation\n if (this._ctx.forcedVariations && key in this._ctx.forcedVariations) {\n const variation = this._ctx.forcedVariations[key];\n process.env.NODE_ENV !== \"production\" && this.log(\"Force via dev tools\", {\n id: key,\n variation\n });\n return this._getResult(experiment, variation, false, featureId);\n }\n\n // 5. Exclude if a draft experiment or not active\n if (experiment.status === \"draft\" || experiment.active === false) {\n process.env.NODE_ENV !== \"production\" && this.log(\"Skip because inactive\", {\n id: key\n });\n return this._getResult(experiment, -1, false, featureId);\n }\n\n // 6. Get the hash attribute and return if empty\n const {\n hashValue\n } = this._getHashAttribute(experiment.hashAttribute);\n if (!hashValue) {\n process.env.NODE_ENV !== \"production\" && this.log(\"Skip because missing hashAttribute\", {\n id: key\n });\n return this._getResult(experiment, -1, false, featureId);\n }\n\n // 7. Exclude if user not in experiment.namespace\n if (experiment.namespace && !inNamespace(hashValue, experiment.namespace)) {\n process.env.NODE_ENV !== \"production\" && this.log(\"Skip because of namespace\", {\n id: key\n });\n return this._getResult(experiment, -1, false, featureId);\n }\n\n // 7.5. Exclude if experiment.include returns false or throws\n if (experiment.include && !isIncluded(experiment.include)) {\n process.env.NODE_ENV !== \"production\" && this.log(\"Skip because of include function\", {\n id: key\n });\n return this._getResult(experiment, -1, false, featureId);\n }\n\n // 8. Exclude if condition is false\n if (experiment.condition && !this._conditionPasses(experiment.condition)) {\n process.env.NODE_ENV !== \"production\" && this.log(\"Skip because of condition\", {\n id: key\n });\n return this._getResult(experiment, -1, false, featureId);\n }\n\n // 8.1. Exclude if user is not in a required group\n if (experiment.groups && !this._hasGroupOverlap(experiment.groups)) {\n process.env.NODE_ENV !== \"production\" && this.log(\"Skip because of groups\", {\n id: key\n });\n return this._getResult(experiment, -1, false, featureId);\n }\n\n // 8.2. Exclude if not on a targeted url\n if (experiment.url && !this._urlIsValid(experiment.url)) {\n process.env.NODE_ENV !== \"production\" && this.log(\"Skip because of url\", {\n id: key\n });\n return this._getResult(experiment, -1, false, featureId);\n }\n\n // 9. Get bucket ranges and choose variation\n const ranges = getBucketRanges(numVariations, (_experiment$coverage = experiment.coverage) !== null && _experiment$coverage !== void 0 ? _experiment$coverage : 1, experiment.weights);\n const n = hash(hashValue + key);\n const assigned = chooseVariation(n, ranges);\n\n // 10. Return if not in experiment\n if (assigned < 0) {\n process.env.NODE_ENV !== \"production\" && this.log(\"Skip because of coverage\", {\n id: key\n });\n return this._getResult(experiment, -1, false, featureId);\n }\n\n // 11. Experiment has a forced variation\n if (\"force\" in experiment) {\n var _experiment$force;\n process.env.NODE_ENV !== \"production\" && this.log(\"Force variation\", {\n id: key,\n variation: experiment.force\n });\n return this._getResult(experiment, (_experiment$force = experiment.force) !== null && _experiment$force !== void 0 ? _experiment$force : -1, false, featureId);\n }\n\n // 12. Exclude if in QA mode\n if (this._ctx.qaMode) {\n process.env.NODE_ENV !== \"production\" && this.log(\"Skip because QA mode\", {\n id: key\n });\n return this._getResult(experiment, -1, false, featureId);\n }\n\n // 12.5. Exclude if experiment is stopped\n if (experiment.status === \"stopped\") {\n process.env.NODE_ENV !== \"production\" && this.log(\"Skip because stopped\", {\n id: key\n });\n return this._getResult(experiment, -1, false, featureId);\n }\n\n // 13. Build the result object\n const result = this._getResult(experiment, assigned, true, featureId);\n\n // 14. Fire the tracking callback\n this._track(experiment, result);\n\n // 15. Return the result\n process.env.NODE_ENV !== \"production\" && this.log(\"In experiment\", {\n id: key,\n variation: result.variationId\n });\n return result;\n }\n log(msg, ctx) {\n if (!this.debug) return;\n if (this._ctx.log) this._ctx.log(msg, ctx);else console.log(msg, ctx);\n }\n _track(experiment, result) {\n if (!this._ctx.trackingCallback) return;\n const key = experiment.key;\n\n // Make sure a tracking callback is only fired once per unique experiment\n const k = result.hashAttribute + result.hashValue + key + result.variationId;\n if (this._trackedExperiments.has(k)) return;\n this._trackedExperiments.add(k);\n try {\n this._ctx.trackingCallback(experiment, result);\n } catch (e) {\n console.error(e);\n }\n }\n _mergeOverrides(experiment) {\n const key = experiment.key;\n const o = this._ctx.overrides;\n if (o && o[key]) {\n experiment = Object.assign({}, experiment, o[key]);\n if (typeof experiment.url === \"string\") {\n experiment.url = getUrlRegExp(\n // eslint-disable-next-line\n experiment.url);\n }\n }\n return experiment;\n }\n _getHashAttribute(attr) {\n const hashAttribute = attr || \"id\";\n let hashValue = \"\";\n if (this._attributeOverrides[hashAttribute]) {\n hashValue = this._attributeOverrides[hashAttribute];\n } else if (this._ctx.attributes) {\n hashValue = this._ctx.attributes[hashAttribute] || \"\";\n } else if (this._ctx.user) {\n hashValue = this._ctx.user[hashAttribute] || \"\";\n }\n return {\n hashAttribute,\n hashValue\n };\n }\n _getResult(experiment, variationIndex, hashUsed, featureId) {\n let inExperiment = true;\n // If assigned variation is not valid, use the baseline and mark the user as not in the experiment\n if (variationIndex < 0 || variationIndex >= experiment.variations.length) {\n variationIndex = 0;\n inExperiment = false;\n }\n const {\n hashAttribute,\n hashValue\n } = this._getHashAttribute(experiment.hashAttribute);\n return {\n featureId,\n inExperiment,\n hashUsed,\n variationId: variationIndex,\n value: experiment.variations[variationIndex],\n hashAttribute,\n hashValue\n };\n }\n _getContextUrl() {\n return this._ctx.url || (isBrowser ? window.location.href : \"\");\n }\n _urlIsValid(urlRegex) {\n const url = this._getContextUrl();\n if (!url) return false;\n const pathOnly = url.replace(/^https?:\\/\\//, \"\").replace(/^[^/]*\\//, \"/\");\n if (urlRegex.test(url)) return true;\n if (urlRegex.test(pathOnly)) return true;\n return false;\n }\n _hasGroupOverlap(expGroups) {\n const groups = this._ctx.groups || {};\n for (let i = 0; i < expGroups.length; i++) {\n if (groups[expGroups[i]]) return true;\n }\n return false;\n }\n}\n//# sourceMappingURL=GrowthBook.js.map","export { setPolyfills, clearCache, configureCache } from \"./feature-repository\";\nexport { GrowthBook } from \"./GrowthBook\";\n//# sourceMappingURL=index.js.map","import { GrowthBook } from '@growthbook/growthbook';\nexport { GrowthBook, clearCache, configureCache, setPolyfills } from '@growthbook/growthbook';\nimport * as React from 'react';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nconst GrowthBookContext = /*#__PURE__*/React.createContext({});\nfunction run(exp, growthbook) {\n if (!growthbook) {\n return {\n featureId: null,\n value: exp.variations[0],\n variationId: 0,\n inExperiment: false,\n hashUsed: false,\n hashAttribute: exp.hashAttribute || \"id\",\n hashValue: \"\"\n };\n }\n return growthbook.run(exp);\n}\nfunction feature(id, growthbook) {\n if (!growthbook) {\n return {\n value: null,\n on: false,\n off: true,\n source: \"unknownFeature\",\n ruleId: \"\"\n };\n }\n return growthbook.evalFeature(id);\n}\n\n// Get features from API and targeting attributes during SSR\nasync function getGrowthBookSSRData(context) {\n // Server-side GrowthBook instance\n const gb = new GrowthBook({\n ...context\n });\n\n // Load feature flags from network if needed\n if (context.clientKey) {\n await gb.loadFeatures();\n }\n const data = {\n attributes: gb.getAttributes(),\n features: gb.getFeatures()\n };\n gb.destroy();\n return data;\n}\n\n// Populate the GrowthBook instance in context from the SSR props\nfunction useGrowthBookSSR(data) {\n const gb = useGrowthBook();\n\n // Only do this once to avoid infinite loops\n const isFirst = React.useRef(true);\n if (gb && isFirst.current) {\n gb.setFeatures(data.features);\n gb.setAttributes(data.attributes);\n isFirst.current = false;\n }\n}\nfunction useExperiment(exp) {\n const {\n growthbook\n } = React.useContext(GrowthBookContext);\n return run(exp, growthbook);\n}\nfunction useFeature(id) {\n const growthbook = useGrowthBook();\n return feature(id, growthbook);\n}\nfunction useFeatureIsOn(id) {\n const growthbook = useGrowthBook();\n return growthbook ? growthbook.isOn(id) : false;\n}\nfunction useFeatureValue(id, fallback) {\n const growthbook = useGrowthBook();\n return growthbook ? growthbook.getFeatureValue(id, fallback) : fallback;\n}\nfunction useGrowthBook() {\n const {\n growthbook\n } = React.useContext(GrowthBookContext);\n return growthbook;\n}\nfunction FeaturesReady({\n children,\n timeout,\n fallback\n}) {\n const gb = useGrowthBook();\n const [ready, setReady] = React.useState(gb ? gb.ready : false);\n React.useEffect(() => {\n if (timeout && !ready) {\n const timer = setTimeout(() => {\n setReady(true);\n }, timeout);\n return () => clearTimeout(timer);\n }\n }, [timeout, ready]);\n return ready ? children : fallback || null;\n}\nfunction IfFeatureEnabled({\n children,\n feature\n}) {\n return useFeature(feature).on ? /*#__PURE__*/React.createElement(React.Fragment, null, children) : null;\n}\nfunction FeatureString(props) {\n const value = useFeature(props.feature).value;\n if (value !== null) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, value);\n }\n return /*#__PURE__*/React.createElement(React.Fragment, null, props.default);\n}\nconst withRunExperiment = Component => {\n // eslint-disable-next-line\n const withRunExperimentWrapper = props => /*#__PURE__*/React.createElement(GrowthBookContext.Consumer, null, ({\n growthbook\n }) => {\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n runExperiment: exp => run(exp, growthbook)\n }));\n });\n return withRunExperimentWrapper;\n};\nwithRunExperiment.displayName = \"WithRunExperiment\";\nconst GrowthBookProvider = ({\n children,\n growthbook\n}) => {\n // Tell growthbook how to re-render our app (for dev mode integration)\n // eslint-disable-next-line\n const [_, setRenderCount] = React.useState(0);\n React.useEffect(() => {\n if (!growthbook || !growthbook.setRenderer) return;\n growthbook.setRenderer(() => {\n setRenderCount(v => v + 1);\n });\n return () => {\n growthbook.setRenderer(() => {\n // do nothing\n });\n };\n }, [growthbook]);\n return /*#__PURE__*/React.createElement(GrowthBookContext.Provider, {\n value: {\n growthbook\n }\n }, children);\n};\n\nexport { FeatureString, FeaturesReady, GrowthBookContext, GrowthBookProvider, IfFeatureEnabled, getGrowthBookSSRData, useExperiment, useFeature, useFeatureIsOn, useFeatureValue, useGrowthBook, useGrowthBookSSR, withRunExperiment };\n//# sourceMappingURL=index.js.map\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst jsx_runtime_1 = require(\"react/jsx-runtime\");\nconst third_party_capital_1 = require(\"third-party-capital\");\nconst ThirdPartyScriptEmbed_1 = __importDefault(require(\"../ThirdPartyScriptEmbed\"));\nfunction GoogleMapsEmbed(props) {\n const { apiKey, ...restProps } = props;\n const formattedProps = { ...restProps, key: apiKey };\n const { html } = (0, third_party_capital_1.GoogleMapsEmbed)(formattedProps);\n return ((0, jsx_runtime_1.jsx)(ThirdPartyScriptEmbed_1.default, { height: formattedProps.height || null, width: formattedProps.width || null, html: html, dataNtpc: \"GoogleMapsEmbed\" }));\n}\nexports.default = GoogleMapsEmbed;\n","\"use strict\";\n'use client';\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sendGTMEvent = exports.GoogleTagManager = void 0;\nconst jsx_runtime_1 = require(\"react/jsx-runtime\");\n// TODO: Evaluate import 'client only'\nconst react_1 = require(\"react\");\nconst script_1 = __importDefault(require(\"next/script\"));\nlet currDataLayerName = undefined;\nfunction GoogleTagManager(props) {\n const { gtmId, dataLayerName = 'dataLayer', auth, preview, dataLayer } = props;\n if (currDataLayerName === undefined) {\n currDataLayerName = dataLayerName;\n }\n const gtmLayer = dataLayerName !== 'dataLayer' ? `&l=${dataLayerName}` : '';\n const gtmAuth = auth ? `>m_auth=${auth}` : '';\n const gtmPreview = preview ? `>m_preview=${preview}>m_cookies_win=x` : '';\n (0, react_1.useEffect)(() => {\n // performance.mark is being used as a feature use signal. While it is traditionally used for performance\n // benchmarking it is low overhead and thus considered safe to use in production and it is a widely available\n // existing API.\n // The performance measurement will be handled by Chrome Aurora\n performance.mark('mark_feature_usage', {\n detail: {\n feature: 'next-third-parties-gtm',\n },\n });\n }, []);\n return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(script_1.default, { id: \"_next-gtm-init\", dangerouslySetInnerHTML: {\n __html: `\n (function(w,l){\n w[l]=w[l]||[];\n w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});\n ${dataLayer ? `w[l].push(${JSON.stringify(dataLayer)})` : ''}\n })(window,'${dataLayerName}');`,\n } }), (0, jsx_runtime_1.jsx)(script_1.default, { id: \"_next-gtm\", \"data-ntpc\": \"GTM\", src: `https://www.googletagmanager.com/gtm.js?id=${gtmId}${gtmLayer}${gtmAuth}${gtmPreview}` })] }));\n}\nexports.GoogleTagManager = GoogleTagManager;\nconst sendGTMEvent = (data) => {\n if (currDataLayerName === undefined) {\n console.warn(`@next/third-parties: GTM has not been initialized`);\n return;\n }\n if (window[currDataLayerName]) {\n window[currDataLayerName].push(data);\n }\n else {\n console.warn(`@next/third-parties: GTM dataLayer ${currDataLayerName} does not exist`);\n }\n};\nexports.sendGTMEvent = sendGTMEvent;\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0});var n=require(\"react\");function t(n){return Array.prototype.slice.call(n)}function e(n,t){var e=Math.floor(n);return e===t||e+1===t?n:t}function i(){return Date.now()}function r(n,t,e){if(t=\"data-keen-slider-\"+t,null===e)return n.removeAttribute(t);n.setAttribute(t,e||\"\")}function a(n,e){return e=e||document,\"function\"==typeof n&&(n=n(e)),Array.isArray(n)?n:\"string\"==typeof n?t(e.querySelectorAll(n)):n instanceof HTMLElement?[n]:n instanceof NodeList?t(n):[]}function o(n){n.raw&&(n=n.raw),n.cancelable&&!n.defaultPrevented&&n.preventDefault()}function u(n){n.raw&&(n=n.raw),n.stopPropagation&&n.stopPropagation()}function c(){var n=[];return{add:function(t,e,i,r){t.addListener?t.addListener(i):t.addEventListener(e,i,r),n.push([t,e,i,r])},input:function(n,t,e,i){this.add(n,t,function(n){return function(t){t.nativeEvent&&(t=t.nativeEvent);var e=t.changedTouches||[],i=t.targetTouches||[],r=t.detail&&t.detail.x?t.detail:null;return n({id:r?r.identifier?r.identifier:\"i\":i[0]?i[0]?i[0].identifier:\"e\":\"d\",idChanged:r?r.identifier?r.identifier:\"i\":e[0]?e[0]?e[0].identifier:\"e\":\"d\",raw:t,x:r&&r.x?r.x:i[0]?i[0].screenX:r?r.x:t.pageX,y:r&&r.y?r.y:i[0]?i[0].screenY:r?r.y:t.pageY})}}(e),i)},purge:function(){n.forEach((function(n){n[0].removeListener?n[0].removeListener(n[2]):n[0].removeEventListener(n[1],n[2],n[3])})),n=[]}}}function s(n,t,e){return Math.min(Math.max(n,t),e)}function d(n){return(n>0?1:0)-(n<0?1:0)||+n}function l(n){var t=n.getBoundingClientRect();return{height:e(t.height,n.offsetHeight),width:e(t.width,n.offsetWidth)}}function f(n,t,e,i){var r=n&&n[t];return null==r?e:i&&\"function\"==typeof r?r():r}function p(n){return Math.round(1e6*n)/1e6}function v(n,t){if(n===t)return!0;var e=typeof n;if(e!==typeof t)return!1;if(\"object\"!==e||null===n||null===t)return\"function\"===e&&n.toString()===t.toString();if(n.length!==t.length||Object.getOwnPropertyNames(n).length!==Object.getOwnPropertyNames(t).length)return!1;for(var i in n)if(!v(n[i],t[i]))return!1;return!0}var h=function(){return h=Object.assign||function(n){for(var t,e=1,i=arguments.length;ei&&(a=i);var l=r[e];if(l[3]0?1:-1),{abs:o+t*u*r,origin:a,rel:o}}function I(n,t,e){var i;if(t||!S())return A(n,e);if(!O(n))return null;var r=z(null!=e?e:T),a=r.abs,o=n-r.rel,c=a+o;i=A(c);var s=A(c-u*d(o));return(null!==s&&Math.abs(s)6&&(w=w.slice(-6)),T=p(t);var r=_().abs;if(r!==M){var a=null!==M;M=r,a&&n.emit(\"slideChanged\")}}function _(i){var c=i?null:function(){if(u){var n=S(),t=n?(T%e+e)%e:T,i=(n?T%e:T)-o[0][2],c=0-(i<0&&n?e-Math.abs(i):i),s=0,l=z(T),f=l.abs,p=l.rel,m=o[p][2],k=o.map((function(t,i){var r=c+s;(r<0-t[0]||r>1)&&(r+=(Math.abs(r)>e-1&&n?e:0)*d(-r));var o=i-p,l=d(o),v=o+f;n&&(-1===l&&r>m&&(v+=u),1===l&&rb&&(r-=e));var h=r+t[0]+t[1],y=Math.max(r>=0&&h<=1?1:h<0||r>1?0:r<0?Math.min(1,(t[0]+r)/t[0]):(1-r)/t[0],0);return s+=t[0]+t[1],{abs:v,distance:a.rtl?-1*r+1-t[0]:r,portion:y,size:t[0]}}));return f=D(f),p=L(f),{abs:D(f),length:r,max:x,maxIdx:h,min:y,minIdx:v,position:T,progress:n?t/e:T/r,rel:p,slides:k,slidesLength:e}}}();return t.details=c,n.emit(\"detailsChanged\"),c}return t={absToRel:L,add:C,details:null,distToIdx:E,idxToDist:I,init:function(t){if(function(){if(a=n.options,o=(a.trackConfig||[]).map((function(n){return[f(n,\"size\",1),f(n,\"spacing\",0),f(n,\"origin\",0)]})),u=o.length){e=p(o.reduce((function(n,t){return n+t[0]+t[1]}),0));var t,i=u-1;r=p(e+o[0][2]-o[i][0]-o[i][2]-o[i][1]),c=o.reduce((function(n,e){if(!n)return[0];var i=o[n.length-1],r=n[n.length-1]+(i[0]+i[2])+i[1];return r-=e[2],n[n.length-1]>r&&(r=n[n.length-1]),r=p(r),n.push(r),(!t||t200||(d(i)!==d(t.distance)&&t.distance&&(t={distance:0,lastTimestamp:0,time:0}),t.time&&(t.distance+=i),t.lastTimestamp&&(t.time+=r-t.lastTimestamp),t.lastTimestamp=r),t}),{distance:0,lastTimestamp:0,time:0});return t.distance/t.time||0}}}function y(n){var t,e,i,r,a,o,u,c;function l(n){return 2*n}function f(n){return s(n,u,c)}function p(n){return 1-Math.pow(1-n,3)}function v(){return i?n.track.velocity():0}function h(){b();var t=\"free-snap\"===n.options.mode,e=n.track,i=v();r=d(i);var u=n.track.details,c=[];if(i||!t){var s=m(i),h=s.dist,g=s.dur;if(g=l(g),h*=r,t){var y=e.idxToDist(e.distToIdx(h),!0);y&&(h=y)}c.push({distance:h,duration:g,easing:p});var x=u.position,k=x+h;if(ko){var w=ko||u=M)return t;if(o0||o>T&&e<0)return t;var c=(oM&&y0||y===T&&e<0)&&u(t),g+=c,!b&&Math.abs(g*r)>5&&(b=!0),n.track.add(c),m=a,n.emit(\"dragged\")}}function z(t){!f&&n.track.details&&n.track.details.length&&(g=0,f=!0,b=!1,h=!0,v=t.id,A(t),m=O(t),n.emit(\"dragStarted\"))}function I(t){f&&v===t.idChanged&&(f=!1,n.emit(\"dragEnded\"))}function A(n){var t=D(),e=t?n.y:n.x,i=t?n.x:n.y,r=void 0!==y&&void 0!==x&&Math.abs(x-i)<=Math.abs(y-e);return y=e,x=i,r}function O(n){return D()?n.y:n.x}function D(){return n.options.vertical}function S(){r=n.size,l=D()?window.innerHeight:window.innerWidth;var t=n.track.details;t&&(M=t.min,T=t.max)}function L(n){b&&(u(n),o(n))}function P(){if(C.purge(),n.options.drag&&!n.options.disabled){var e;e=n.options.dragSpeed||1,p=\"function\"==typeof e?e:function(n){return n*e},i=n.options.rtl?-1:1,S(),t=n.container,function(){var n=\"data-keen-slider-clickable\";a(\"[\".concat(n,\"]:not([\").concat(n,\"=false])\"),t).map((function(n){C.add(n,\"dragstart\",u),C.add(n,\"mousedown\",u),C.add(n,\"touchstart\",u)}))}(),C.add(t,\"dragstart\",(function(n){o(n)})),C.add(t,\"click\",L,{capture:!0}),C.input(t,\"ksDragStart\",z),C.input(t,\"ksDrag\",E),C.input(t,\"ksDragEnd\",I),C.input(t,\"mousedown\",z),C.input(t,\"mousemove\",E),C.input(t,\"mouseleave\",I),C.input(t,\"mouseup\",I),C.input(t,\"touchstart\",z,{passive:!0}),C.input(t,\"touchmove\",E,{passive:!1}),C.input(t,\"touchend\",I),C.input(t,\"touchcancel\",I),C.add(window,\"wheel\",(function(n){f&&o(n)}));var r=\"data-keen-slider-scrollable\";a(\"[\".concat(r,\"]:not([\").concat(r,\"=false])\"),n.container).map((function(n){return function(n){var t;C.input(n,\"touchstart\",(function(n){t=O(n),w=!0,k=!0}),{passive:!0}),C.input(n,\"touchmove\",(function(e){var i=D(),r=i?n.scrollHeight-n.clientHeight:n.scrollWidth-n.clientWidth,a=t-O(e),u=i?n.scrollTop:n.scrollLeft,c=i&&\"scroll\"===n.style.overflowY||!i&&\"scroll\"===n.style.overflowX;if(t=O(e),(a<0&&u>0||a>0&&u=1||(n.origin=1-t-(d>1?0:1-d)),n}))}e.options.trackConfig=a}function E(){I();var n=e.size;e.options.disabled||n===o||(o=n,T())}function z(){E(),setTimeout(E,500),setTimeout(E,2e3)}function I(){var n=l(e.container);e.size=(e.options.vertical?n.height:n.width)||1}function A(){e.slides=a(e.options.selector,e.container)}e.container=(p=a(n,d||document)).length?p[0]:null,e.destroy=function(){v.purge(),e.emit(\"destroyed\"),m(!0)},e.prev=function(){e.moveToIdx(e.track.details.abs-1,!0)},e.next=function(){e.moveToIdx(e.track.details.abs+1,!0)},e.update=T,k(e.options)}}var M=function(n,t,e){try{return function(n,t){var e,i={};return e={emit:function(n){i[n]&&i[n].forEach((function(n){n(e)}));var t=e.options&&e.options[n];t&&t(e)},moveToIdx:function(n,t,i){var r=e.track.idxToDist(n,t);if(r){var a=e.options.defaultAnimation;e.animator.start([{distance:r,duration:f(i||a,\"duration\",500),easing:f(i||a,\"easing\",(function(n){return 1+--n*n*n*n*n}))}])}},on:function(n,t,e){void 0===e&&(e=!1),i[n]||(i[n]=[]);var r=i[n].indexOf(t);r>-1?e&&delete i[n][r]:e||i[n].push(t)},options:n},function(){if(e.track=b(e),e.animator=g(e),t)for(var n=0,i=t;n