{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///external \"react\"","webpack:///./src/feature-app/index.ts","webpack:///./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack:///./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack:///./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack:///./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack:///./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","webpack:///./src/components/AnteriorCTA.tsx","webpack:///./src/components/AvisoIslasCanarias.tsx","webpack:///./src/components/CanalDeContacto.tsx","webpack:///./src/components/Card.tsx","webpack:///./src/components/CarouselComponent.tsx","webpack:///./src/components/CloseButton.tsx","webpack:///./src/components/CodigoPostal.tsx","webpack:///./src/components/ConfirmacionLayers.tsx","webpack:///./src/components/Legales/CTALegalesSiNo.tsx","webpack:///./src/components/Legales/LegalFullScreenSinConsentimientos.tsx","webpack:///./src/components/Legales/LegalItem.tsx","webpack:///./src/components/Legales/Legales.tsx","webpack:///./src/components/Legales/LegalesFormatoLayer.tsx","webpack:///./src/components/Legales/LssiTkmQuestions.tsx","webpack:///./src/components/Legales/LssiTkmQuestionsComerciales.tsx","webpack:///./src/components/LastNavigationConfirmacion.tsx","webpack:///./src/components/Legales/LssiTkmQuestionsTurismos.tsx","webpack:///./src/components/DealerCard.tsx","webpack:///./src/components/DetalleMotivo.tsx","webpack:///./src/components/FechaCompra.tsx","webpack:///./src/components/Kilometros.tsx","webpack:///./src/components/LocateUserFullScreen.tsx","webpack:///./src/components/MatriculaYModelo.tsx","webpack:///./src/components/NoCliente.tsx","webpack:///./src/components/PantallaIntroduccionStars.tsx","webpack:///./src/components/SelectExtended.tsx","webpack:///./src/components/Trato.tsx","webpack:///./src/components/PantallaNombreApellido.tsx","webpack:///./src/components/PoliticaPrivacidad.tsx","webpack:///./src/components/Provincia.tsx","webpack:///./src/components/SlideEncuestas.tsx","webpack:///./src/components/SuggestMarca.tsx","webpack:///./src/components/SuggestModelo.tsx","webpack:///./src/components/VerticalLine.tsx","webpack:///./src/components/YaTienesVolkswagen.tsx","webpack:///./src/components/styleComponents/PaddingWrapper.tsx","webpack:///./src/components/styleComponents/InputWidthWrapper.tsx","webpack:///./src/components/styleComponents/GeneralInputWidthWrapper.tsx","webpack:///./src/components/styleComponents/ContactoInfoWrapper.tsx","webpack:///./src/components/styleComponents/GeneralConfirmacionLayerWrapper.tsx","webpack:///./src/components/CarlineSelect/hooks/use-format-CEMVenta.ts","webpack:///./src/components/CarlineSelect/hooks/use-format-carline-select-extended-list.ts","webpack:///./src/components/CarlineSelect/hooks/use-format-all-carlines.ts","webpack:///./src/components/CarlineSelect/hooks/use-format-alphabetical.ts","webpack:///./src/components/CarlineSelect/hooks/use-format-all-salesgroups.ts","webpack:///./src/components/CarlineSelect/hooks/use-format-salesgroups-select-extended-list.ts","webpack:///./src/components/CarlineSelect/hooks/use-filter-carline-flag.ts","webpack:///./src/components/CarlineSelect/hooks/use-get-salesgroups-from-carlines.ts","webpack:///./src/components/CarlineSelect/hooks/use-get-formated-salesgroups.ts","webpack:///./src/components/CarlineSelect/hooks/use-filter-preselected-fa-content.ts","webpack:///./src/components/CarlineSelect/hooks/use-filter-preselected-fa-content-salesgroups.ts","webpack:///./src/components/CarlineSelect/hooks/use-find-carline.ts","webpack:///./src/components/CarlineSelect/hooks/use-find-carline-from-salesgroup.ts","webpack:///./src/components/CarlineSelect/hooks/use-fa-content-modes.ts","webpack:///./src/components/CarlineSelect/CarlineSelect.tsx","webpack:///./src/components/LoadingEncuestas.tsx","webpack:///./src/components/ThankYouPage/ThankYouTitle.tsx","webpack:///./src/components/ThankYouPage/CTAThankYouPage.tsx","webpack:///./src/components/ThankYouPage/ThankYouFields.tsx","webpack:///./src/components/ThankYouPage/CTAThankYouPageAction.tsx","webpack:///./src/components/ThankYouPage/LeadsCTAs.tsx","webpack:///./node_modules/react-redux/es/components/Context.js","webpack:///./node_modules/react-redux/es/utils/batch.js","webpack:///./node_modules/react-redux/es/utils/Subscription.js","webpack:///./node_modules/react-redux/es/components/Provider.js","webpack:///./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","webpack:///./node_modules/react-redux/es/components/connectAdvanced.js","webpack:///./node_modules/react-redux/es/utils/shallowEqual.js","webpack:///./node_modules/react-redux/es/connect/wrapMapToProps.js","webpack:///./node_modules/react-redux/es/connect/mapDispatchToProps.js","webpack:///./node_modules/react-redux/es/connect/mapStateToProps.js","webpack:///./node_modules/react-redux/es/connect/mergeProps.js","webpack:///./node_modules/react-redux/es/connect/selectorFactory.js","webpack:///./node_modules/react-redux/es/connect/connect.js","webpack:///./node_modules/react-redux/es/hooks/useReduxContext.js","webpack:///./node_modules/react-redux/es/hooks/useStore.js","webpack:///./node_modules/react-redux/es/hooks/useDispatch.js","webpack:///./node_modules/react-redux/es/hooks/useSelector.js","webpack:///./node_modules/react-redux/es/index.js","webpack:///./node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","webpack:///./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack:///./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/theme-provider/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/helpers/breakpoint.js","webpack:///./src/feature-app/Screen/CloseComponent.tsx","webpack:///./src/feature-app/Screen/FullScreen.tsx","webpack:///./src/feature-app/Screen/LayerScreen.tsx","webpack:///./src/feature-app/Screen/Navigation.tsx","webpack:///./src/feature-app/Screen/PreviousStepFiles/getUpdatedField.tsx","webpack:///./src/feature-app/Screen/PreviousStep.tsx","webpack:///./src/feature-app/Screen/PreviousStepFiles/getRatingStarsOutput.tsx","webpack:///./src/feature-app/Screen/RenderController.tsx","webpack:///./src/feature-app/Screen/ScreenController.tsx","webpack:///./src/feature-app/Screen/TemplatesFullScreen.tsx","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/accordion/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/helpers/color.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/alert-layer/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/aspect-ratio-container/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/button-next-best-action/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/node_modules/@volkswagen-onehub/icons-core/dist-es/ArrowLeft/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/node_modules/@volkswagen-onehub/icons-core/dist-es/ArrowRight/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/button-next/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/button-previous/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/content-layer/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/content-layer-v2/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/demo/demo-blurred-image/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/language/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/demo/demo-integrator-root/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/demo/demo-placeholder-text/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/disclaimer-layer/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/disclaimers/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/dom-node-exposer/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/node_modules/@volkswagen-onehub/icons-core/dist-es/ExternalLink/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/external-link-indicator/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/figure/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/fixed-width-container/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/focus-layer/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/fullscreen-layer/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/gallery/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/gallery/arrow-buttons.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/gallery/navigation-bullets.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/gallery/navigation-images.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/helpers/a11y.js","webpack:///./node_modules/focus-lock/dist/es2015/constants.js","webpack:///./node_modules/use-callback-ref/dist/es2015/useMergeRef.js","webpack:///./node_modules/use-callback-ref/dist/es2015/useRef.js","webpack:///./node_modules/use-callback-ref/dist/es2015/assignRef.js","webpack:///./node_modules/react-focus-lock/dist/es2015/FocusGuard.js","webpack:///./node_modules/use-sidecar/dist/es2015/medium.js","webpack:///./node_modules/react-focus-lock/dist/es2015/medium.js","webpack:///./node_modules/react-focus-lock/dist/es2015/Lock.js","webpack:///./node_modules/react-clientside-effect/lib/index.es.js","webpack:///./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack:///./node_modules/focus-lock/dist/es2015/utils/array.js","webpack:///./node_modules/focus-lock/dist/es2015/utils/all-affected.js","webpack:///./node_modules/focus-lock/dist/es2015/focusInside.js","webpack:///./node_modules/focus-lock/dist/es2015/utils/correctFocus.js","webpack:///./node_modules/focus-lock/dist/es2015/utils/firstFocus.js","webpack:///./node_modules/focus-lock/dist/es2015/utils/is.js","webpack:///./node_modules/focus-lock/dist/es2015/solver.js","webpack:///./node_modules/focus-lock/dist/es2015/utils/tabOrder.js","webpack:///./node_modules/focus-lock/dist/es2015/utils/tabUtils.js","webpack:///./node_modules/focus-lock/dist/es2015/utils/tabbables.js","webpack:///./node_modules/focus-lock/dist/es2015/utils/DOMutils.js","webpack:///./node_modules/focus-lock/dist/es2015/utils/parenting.js","webpack:///./node_modules/focus-lock/dist/es2015/focusMerge.js","webpack:///./node_modules/focus-lock/dist/es2015/setFocus.js","webpack:///./node_modules/focus-lock/dist/es2015/index.js","webpack:///./node_modules/react-focus-lock/dist/es2015/util.js","webpack:///./node_modules/react-focus-lock/dist/es2015/Trap.js","webpack:///./node_modules/focus-lock/dist/es2015/focusIsHidden.js","webpack:///./node_modules/focus-lock/dist/es2015/focusables.js","webpack:///./node_modules/react-focus-lock/dist/es2015/Combination.js","webpack:///./node_modules/react-focus-lock/dist/es2015/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/hoc/with-focus-lock.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/infobox/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/node_modules/@volkswagen-onehub/icons-core/dist-es/Checkmark/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/node_modules/@volkswagen-onehub/icons-core/dist-es/Alert/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/interaction-layer/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/layer-wrapper/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/map-topography/styles.js","webpack:///./node_modules/@volkswagen-onehub/components-core/node_modules/@volkswagen-onehub/icons-core/dist-es/Menu/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/menu-button/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/node_modules/@volkswagen-onehub/icons-core/dist-es/Logo/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/moving-frame/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/multi-select/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/navigation-level-list/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/reference-badge/index.js","webpack:///./node_modules/markdown-to-jsx/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/richtext/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/shim-layer/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/skip-link/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/toggle/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/top-bar/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/picture/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/media/mediaContext.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/media/video.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/media/controls/control-container.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/media/controls/timeline.js","webpack:///./node_modules/@volkswagen-onehub/components-core/node_modules/@volkswagen-onehub/icons-core/dist-es/Pause/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/node_modules/@volkswagen-onehub/icons-core/dist-es/Play/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/media/controls/play-button.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/media/controls/play-button-center.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/media/controls/time-display.js","webpack:///./node_modules/@volkswagen-onehub/components-core/node_modules/@volkswagen-onehub/icons-core/dist-es/ExitFullscreen/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/node_modules/@volkswagen-onehub/icons-core/dist-es/EnterFullscreen/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/media/controls/fullscreen-button.js","webpack:///./node_modules/@volkswagen-onehub/components-core/node_modules/@volkswagen-onehub/icons-core/dist-es/VolumeMute/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/node_modules/@volkswagen-onehub/icons-core/dist-es/VolumeMaximum/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/node_modules/@volkswagen-onehub/icons-core/dist-es/VolumeMedium/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/media/controls/volume-slider.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/index.js","webpack:///./node_modules/tslib/tslib.es6.js","webpack:///./src/bff/api/appadap-appointment-create.ts","webpack:///./src/bff/api/dps-send.ts","webpack:///./src/bff/get-molecular-cdn-url.ts","webpack:///./src/bff/api/fetch-domains.ts","webpack:///./src/bff/api/get-carlines-cita.ts","webpack:///./src/bff/api/get-carlines.ts","webpack:///./src/bff/api/get-colors.ts","webpack:///./src/bff/api/get-dealers.ts","webpack:///./src/bff/api/get-installations.ts","webpack:///./src/bff/get-molecular-url.ts","webpack:///./src/bff/api/get-pincode.ts","webpack:///./src/bff/api/get-salesgroups.ts","webpack:///./src/bff/api/get-vehiculos-modelo.ts","webpack:///./src/bff/api/get-vicci-data.ts","webpack:///./src/bff/get-google-api-key.ts","webpack:///./src/bff/report-error-sentry.ts","webpack:///./src/forms/helpers/add-remove-steps.ts","webpack:///./src/icons-core-imports.ts","webpack:///external \"styled-components\"","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/text/index.js","webpack:///./node_modules/react-hook-form/dist/react-hook-form.es.js","webpack:///./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack:///./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack:///./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack:///./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/helpers/grid.js","webpack:///./src/feature-app/hooks/use-dropdown-position.ts","webpack:///./src/feature-app/hooks/use-fa-content.ts","webpack:///./src/feature-app/hooks/use-feature-app-config.ts","webpack:///./src/feature-app/hooks/use-get-bounding-client-rect.ts","webpack:///./src/feature-app/hooks/use-get-dealer.ts","webpack:///./src/feature-app/hooks/use-get-dealers.ts","webpack:///./src/feature-app/hooks/use-get-instalaciones.ts","webpack:///./src/feature-app/hooks/use-initiate-match-triggers.ts","webpack:///./src/feature-app/hooks/use-initiate-bonos-triggers.ts","webpack:///./src/feature-app/hooks/use-is-dev-stage.ts","webpack:///./src/feature-app/hooks/use-loaded.ts","webpack:///./src/feature-app/hooks/use-locate-user.tsx","webpack:///./src/feature-app/hooks/use-navigate.ts","webpack:///./src/feature-app/hooks/use-on-screen.ts","webpack:///./src/feature-app/hooks/use-show-overflow.ts","webpack:///./src/feature-app/hooks/use-transform-to-html.ts","webpack:///./src/feature-app/hooks/use-get-brand.ts","webpack:///./src/feature-app/hooks/use-is-comerciales.ts","webpack:///./src/feature-app/hooks/use-get-tracking-form.ts","webpack:///./src/forms/format-fields.ts","webpack:///./src/globals.ts","webpack:///./src/feature-app/InputsValues/CTAsObjects.tsx","webpack:///./node_modules/prop-types/index.js","webpack:///./src/feature-app/NewMap/usePinState.tsx","webpack:///./src/feature-app/NewMap/usePredictions.ts","webpack:///./src/feature-app/NewMap/use-get-franja-and-day-from.ts","webpack:///./src/feature-app/NewMap/use-create-nop-dms-slot-and-asessor.ts","webpack:///./src/feature-app/NewMap/components/NewDealerCard.tsx","webpack:///./src/feature-app/NewMap/components/SeleccionDealerTabs.tsx","webpack:///./src/feature-app/NewMap/components/SuggestStyles.tsx","webpack:///./node_modules/google-map-react/node_modules/@googlemaps/js-api-loader/node_modules/fast-deep-equal/index.js","webpack:///./node_modules/google-map-react/node_modules/@googlemaps/js-api-loader/src/index.ts","webpack:///./node_modules/google-map-react/src/google_map_map.js","webpack:///./node_modules/google-map-react/src/marker_dispatcher.js","webpack:///./node_modules/google-map-react/src/utils/omit.js","webpack:///./node_modules/google-map-react/src/utils/shallowEqual.js","webpack:///./node_modules/google-map-react/src/google_map_markers.js","webpack:///./node_modules/google-map-react/src/google_map_markers_prerender.js","webpack:///./node_modules/google-map-react/src/loaders/google_map_loader.js","webpack:///./node_modules/google-map-react/src/lib/geo/wrap.js","webpack:///./node_modules/google-map-react/src/lib/geo/lat_lng.js","webpack:///./node_modules/google-map-react/src/lib/geo/transform.js","webpack:///./node_modules/google-map-react/src/lib/geo/index.js","webpack:///./node_modules/google-map-react/src/utils/raf.js","webpack:///./node_modules/google-map-react/src/utils/log2.js","webpack:///./node_modules/google-map-react/src/utils/pick.js","webpack:///./node_modules/google-map-react/src/utils/isEmpty.js","webpack:///./node_modules/google-map-react/src/utils/isNumber.js","webpack:///./node_modules/google-map-react/src/utils/detect.js","webpack:///./node_modules/google-map-react/src/utils/isPlainObject.js","webpack:///./node_modules/google-map-react/src/utils/passiveEvents.js","webpack:///./node_modules/google-map-react/src/utils/detectElementResize.js","webpack:///./node_modules/google-map-react/src/google_map.js","webpack:///./node_modules/google-map-react/src/google_heatmap.js","webpack:///./node_modules/google-map-react/src/utils/isArraysEqualEps.js","webpack:///./src/feature-app/NewMap/components/CommonStyledComponents.tsx","webpack:///./src/feature-app/NewMap/components/CenterMarker.tsx","webpack:///./src/feature-app/NewMap/components/ClusterMarker.tsx","webpack:///./src/feature-app/NewMap/components/DealerMarker.tsx","webpack:///./src/feature-app/NewMap/components/Map.tsx","webpack:///./src/feature-app/NewMap/components/Carousel.tsx","webpack:///./src/feature-app/NewMap/components/Filtros.tsx","webpack:///./src/feature-app/NewMap/components/suggest.tsx","webpack:///./src/feature-app/NewMap/components/map-styles.ts","webpack:///./src/feature-app/NewMap/views/GenericStylesDesktop.tsx","webpack:///./src/feature-app/NewMap/views/LayerDesktopView.tsx","webpack:///./src/feature-app/NewMap/views/LayerMobileView.tsx","webpack:///./src/feature-app/NewMap/views/helpers/serviceManagment.ts","webpack:///./src/forms/index.ts","webpack:///./node_modules/dayjs/dayjs.min.js","webpack:///./src/feature-app/tracking-helpers.ts","webpack:///./src/feature-app/get-params-form.ts","webpack:///./src/feature-app/OneForm.tsx","webpack:///./node_modules/axios/index.js","webpack:///./src/feature-app/hooks/use-tracking-manager.ts","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/theme-provider/definitions.js","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist-es/ChevronUp/index.js","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist-es/ChevronDown/index.js","webpack:///./src/forms/CitaPosventa/NuevaCitaPosventa/ConfirmacionCita.tsx","webpack:///./src/forms/CitaPosventa/NuevaCitaPosventa/LoadingLayer.tsx","webpack:///./src/forms/CitaPosventa/NuevaCitaPosventa/LocateUser.tsx","webpack:///./src/forms/CitaPosventa/NuevaCitaPosventa/NuevaCitaPosventaFormController.tsx","webpack:///./src/forms/CitaPosventa/NuevaCitaPosventa/ThankYouNuevaCita.tsx","webpack:///./src/forms/CitaPosventa/NuevaCitaPosventa/NuevaCitaPosventaFormDefault.tsx","webpack:///./src/forms/CitaPosventa/NuevaCitaPosventa/NuevaCitaPosventaFormLogged.tsx","webpack:///./src/forms/CitaPosventa/NuevaCitaPosventa/ReservaCita.tsx","webpack:///./src/forms/CitaPosventa/NuevaCitaPosventa/SeleccionDealer.tsx","webpack:///./node_modules/libphonenumber-js/source/constants.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/helpers/input.js","webpack:///./src/forms/dps-utils.ts","webpack:///./node_modules/libphonenumber-js/source/tools/semver-compare.js","webpack:///./node_modules/libphonenumber-js/source/metadata.js","webpack:///./src/components/layers/AvailabilityErrorLayer.tsx","webpack:///./src/components/layers/AreYouSureLayer.tsx","webpack:///./src/components/layers/GenericErrorLayer.tsx","webpack:///./src/forms/Leads/index.ts","webpack:///./src/feature-app/InputsValues/index.ts","webpack:///./src/feature-app/tracking-objects.ts","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/call-to-action/index.js","webpack:///./src/triggers/BajaComunicacionesTrigger.tsx","webpack:///./src/triggers/CallMeOfertasTrigger.tsx","webpack:///./src/triggers/CallMeEmbeddedTrigger.tsx","webpack:///./src/triggers/CitaPosventaDealerTrigger.tsx","webpack:///./src/triggers/RaceTrigger.tsx","webpack:///./src/triggers/CitaPosventaDefaultTrigger.tsx","webpack:///./src/triggers/CitaPosventaEmbeddedTrigger.tsx","webpack:///./src/triggers/CitaPosventaStageTrigger.tsx","webpack:///./src/triggers/CitaPosventaTrigger.tsx","webpack:///./src/triggers/EmpresasTrigger.tsx","webpack:///./src/forms/Cem/CEM OneShop/LastNavigationCEMOneShop.tsx","webpack:///./src/forms/Cem/CEM OneShop/CEMOneShopForm.tsx","webpack:///./src/forms/Cem/CEM OneShop/use-initialize-lem-form.tsx","webpack:///./src/forms/Cem/CEM OneShop/CEMOneShopController.tsx","webpack:///./src/forms/Cem/CEM OneShop/CEMOneShopLastScreenFields.tsx","webpack:///./src/forms/Cem/CEM OneShop/ConfirmacionCEMOneShop.tsx","webpack:///./src/forms/Cem/CEM OneShop/ThankYouCEMOneShop.tsx","webpack:///./src/triggers/EncuestasTrigger.tsx","webpack:///./src/triggers/LeadBonoTrigger.tsx","webpack:///./src/triggers/LeadMatchTrigger.tsx","webpack:///./src/triggers/LeadOfertasTrigger.tsx","webpack:///./src/triggers/LeadStockTrigger.tsx","webpack:///./src/triggers/LeadEmbededTrigger.tsx","webpack:///./src/triggers/LeadTrigger.tsx","webpack:///./src/triggers/MGMTrigger.tsx","webpack:///./src/triggers/NewsletterTrigger.tsx","webpack:///./src/triggers/OneFormTrigger.tsx","webpack:///./src/triggers/ProspectEmbeddedTrigger.tsx","webpack:///./src/triggers/ProspectPosventaEmbedded.tsx","webpack:///./src/triggers/ProspectsTrigger.tsx","webpack:///./src/triggers/SACTrigger.tsx","webpack:///./src/widgets/Mapa/CTAMapa.tsx","webpack:///./src/widgets/Mapa/CTAServices.tsx","webpack:///./src/widgets/Mapa/CarouselWidget.tsx","webpack:///./src/widgets/Mapa/DealerCardWidget.tsx","webpack:///./src/widgets/Mapa/MapaScreen.tsx","webpack:///./src/widgets/Mapa/SuggestionScreen.tsx","webpack:///./src/widgets/Mapa/ViewDesktopWidgetMapa.tsx","webpack:///./src/widgets/Mapa/ViewMobileWidgetMapa.tsx","webpack:///./src/widgets/Mapa/WidgetMapa.tsx","webpack:///./src/triggers/WidgetTrigger.tsx","webpack:///./src/triggers/adhoc/DiaDeLaMadreTrigger.tsx","webpack:///./src/triggers/adhoc/EurocopaTrigger.tsx","webpack:///./src/triggers/adhoc/FidelizacionTrigger.tsx","webpack:///./src/triggers/adhoc/NuevoTaigo/GlobalStyle.ts","webpack:///./node_modules/three/build/three.module.js","webpack:///./node_modules/postprocessing/build/postprocessing.esm.js","webpack:///./src/triggers/adhoc/NuevoTaigo/InfiniteLights.js","webpack:///./src/triggers/adhoc/NuevoTaigo/Distorsions.js","webpack:///./src/triggers/adhoc/NuevoTaigo/options.js","webpack:///./src/triggers/adhoc/NuevoTaigo/Texts.tsx","webpack:///./src/triggers/adhoc/NuevoTaigo/Slides/FirstSlide.tsx","webpack:///./src/triggers/adhoc/NuevoTaigo/Slides/FourthSlide.tsx","webpack:///./src/triggers/adhoc/NuevoTaigo/Slides/FourthSlideDesktop.tsx","webpack:///./src/triggers/adhoc/NuevoTaigo/Slides/FourthSlideMobile.tsx","webpack:///./src/triggers/adhoc/NuevoTaigo/Slides/SecondSlide.tsx","webpack:///./src/triggers/adhoc/NuevoTaigo/Slides/ThirdSlide.tsx","webpack:///./src/triggers/adhoc/LanzamientoTaigoTrigger.tsx","webpack:///./src/forms/FormsAdhoc/NavidadForm/ConfirmacionNavidad.tsx","webpack:///./src/forms/FormsAdhoc/NavidadForm/ComponentsAndViews/FriendsName.tsx","webpack:///./src/forms/FormsAdhoc/NavidadForm/ThankYouNavidad.tsx","webpack:///./src/forms/FormsAdhoc/NavidadForm/NavidadForm.tsx","webpack:///./src/forms/FormsAdhoc/NavidadForm/assets/Svgs.tsx","webpack:///./src/triggers/adhoc/NavidadTrigger.tsx","webpack:///./src/triggers/LeadInPageTrigger.tsx","webpack:///./src/forms/CitaPosventa/NuevaCitaPosventa/ConfirmarCitaLayer.tsx","webpack:///./src/types.ts","webpack:///./node_modules/@sentry/utils/src/is.ts","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/container/definitions.js","webpack:///./node_modules/@volkswagen-onehub/components-core/node_modules/react-transition-group/index.js","webpack:///./node_modules/@googlemaps/js-api-loader/node_modules/fast-deep-equal/index.js","webpack:///./node_modules/@googlemaps/js-api-loader/src/index.ts","webpack:///./src/feature-app/NewMap/Loadscript.tsx","webpack:///./node_modules/@react-hook/latest/dist/module/index.js","webpack:///./node_modules/@react-hook/debounce/dist/module/index.js","webpack:///./node_modules/@react-hook/passive-layout-effect/dist/module/index.js","webpack:///./node_modules/@react-hook/event/dist/module/index.js","webpack:///./node_modules/@react-hook/window-size/dist/module/index.js","webpack:///external \"react-dom\"","webpack:///./node_modules/@volkswagen-onehub/library-services-common/dist-es/error-handling.js","webpack:///./src/feature-app/NewMap/utils.ts","webpack:///./src/forms/LeadsInPage/Cita/PartialDataCitaConfgurador.tsx","webpack:///./src/forms/LeadsInPage/ConfirmacionLeadInPage.tsx","webpack:///./src/forms/LeadsInPage/ImageCar.tsx","webpack:///./src/forms/LeadsInPage/LeadInPageGenericoForm.tsx","webpack:///./src/forms/LeadsInPage/LocateUserLeadsInPage.tsx","webpack:///./src/forms/LeadsInPage/MapaLeadsInPage/MapaLeadsInPage.tsx","webpack:///./src/forms/LeadsInPage/MapaLeadsInPage/JorneyLeadsInPageController.tsx","webpack:///./src/forms/LeadsInPage/MapaLeadsInPage/JourneyLeadsInPageWrapper.tsx","webpack:///./src/forms/LeadsInPage/MasInformacion/PartialDataMasInformacionConfigurador.tsx","webpack:///./src/forms/LeadsInPage/Presupuesto/PresupuestoPartialDataConfigurador.tsx","webpack:///./src/forms/LeadsInPage/TestDrive/PartialDataTestDriveConfigurador.tsx","webpack:///./src/forms/LeadsInPage/get-color-info.tsx","webpack:///./src/feature-app/NewMap/MapGeneralController.tsx","webpack:///./node_modules/@sentry/utils/src/global.ts","webpack:///./node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./src/bff/get-marketing-code.ts","webpack:///./node_modules/libphonenumber-js/source/helpers/matchesEntirely.js","webpack:///./src/bff/get-data-url.ts","webpack:///./src/components/inputs/TextInputExtended.tsx","webpack:///./src/components/inputs/Apellido.tsx","webpack:///./src/components/inputs/EdadInputText.tsx","webpack:///./src/components/inputs/Email.tsx","webpack:///./src/components/inputs/InputError.tsx","webpack:///./src/components/inputs/Nombre.tsx","webpack:///./node_modules/libphonenumber-js/min/exports/Metadata.js","webpack:///./node_modules/libphonenumber-js/source/AsYouTypeState.js","webpack:///./node_modules/libphonenumber-js/source/AsYouTypeFormatter.util.js","webpack:///./node_modules/libphonenumber-js/source/AsYouTypeFormatter.complete.js","webpack:///./node_modules/libphonenumber-js/source/AsYouTypeFormatter.js","webpack:///./node_modules/libphonenumber-js/source/AsYouTypeParser.js","webpack:///./node_modules/libphonenumber-js/source/AsYouType.js","webpack:///./node_modules/libphonenumber-js/min/exports/AsYouType.js","webpack:///./node_modules/libphonenumber-js/source/validatePhoneNumberLength.js","webpack:///./node_modules/libphonenumber-js/min/exports/validatePhoneNumberLength.js","webpack:///./src/components/inputs/Telefono.tsx","webpack:///./src/components/inputs/TextAreaExtended.tsx","webpack:///./src/components/inputs/calling-countries.ts","webpack:///./src/components/inputs/CustomRadioButton.tsx","webpack:///./src/components/inputs/CustomSelect.tsx","webpack:///./src/components/inputs/MultipleOptionsCTAs.tsx","webpack:///./src/components/inputs/MultipleCTASelection.tsx","webpack:///./src/components/inputs/RatingStars.tsx","webpack:///./src/components/inputs/CustomSlider.tsx","webpack:///./src/components/inputs/CustomSwitch.tsx","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/node_modules/axios/lib/utils.js","webpack:///./src/feature-app/hooks/use-feature-services.ts","webpack:///./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/helpers/logger.js","webpack:///./src/forms/Leads/use-initialize-lead-form.ts","webpack:///./src/forms/Leads/ConfirmacionLeads.tsx","webpack:///./src/forms/Leads/helpers/append-json-key.ts","webpack:///./src/forms/Leads/helpers/get-calculadora-data.ts","webpack:///./src/forms/Leads/helpers/get-cod-interest-carline.ts","webpack:///./src/forms/Leads/helpers/get-desc-interest-carline.ts","webpack:///./src/forms/Leads/helpers/get-match-data.ts","webpack:///./src/forms/Leads/helpers/get-salesgroup.ts","webpack:///./node_modules/libphonenumber-js/source/ParseError.js","webpack:///./node_modules/@sentry/utils/src/object.ts","webpack:///./src/components/inputs/use-only-letters-control.tsx","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/container/helpers.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/container/container.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/container/index.js","webpack:///./node_modules/libphonenumber-js/metadata.min.json.js","webpack:///./node_modules/libphonenumber-js/min/metadata.js","webpack:///./node_modules/libphonenumber-js/source/helpers/checkNumberLength.js","webpack:///./node_modules/libphonenumber-js/source/helpers/mergeArrays.js","webpack:///./node_modules/@sentry/core/src/integrations/functiontostring.ts","webpack:///./node_modules/@sentry/utils/src/syncpromise.ts","webpack:///./node_modules/@sentry/hub/src/scope.ts","webpack:///./node_modules/@sentry/utils/src/misc.ts","webpack:///./node_modules/@sentry/utils/src/logger.ts","webpack:///./node_modules/@sentry/hub/src/session.ts","webpack:///./node_modules/@sentry/hub/src/hub.ts","webpack:///./node_modules/@sentry/types/src/severity.ts","webpack:///./node_modules/@sentry/core/src/integrations/inboundfilters.ts","webpack:///./node_modules/@sentry/utils/src/supports.ts","webpack:///./node_modules/@sentry/utils/src/instrument.ts","webpack:///./node_modules/@sentry/browser/src/tracekit.ts","webpack:///./node_modules/@sentry/browser/src/parsers.ts","webpack:///./node_modules/@sentry/browser/src/eventbuilder.ts","webpack:///./node_modules/@sentry/minimal/src/index.ts","webpack:///./node_modules/@sentry/utils/src/polyfill.ts","webpack:///./node_modules/@sentry/utils/src/error.ts","webpack:///./node_modules/@sentry/utils/src/dsn.ts","webpack:///./node_modules/@sentry/core/src/api.ts","webpack:///./node_modules/@sentry/browser/src/helpers.ts","webpack:///./node_modules/@sentry/browser/src/integrations/globalhandlers.ts","webpack:///./node_modules/@sentry/browser/src/integrations/trycatch.ts","webpack:///./node_modules/@sentry/utils/src/enums.ts","webpack:///./node_modules/@sentry/utils/src/severity.ts","webpack:///./node_modules/@sentry/browser/src/integrations/breadcrumbs.ts","webpack:///./node_modules/@sentry/browser/src/integrations/linkederrors.ts","webpack:///./node_modules/@sentry/browser/src/integrations/useragent.ts","webpack:///./node_modules/@sentry/browser/src/integrations/dedupe.ts","webpack:///./node_modules/@sentry/browser/src/index.ts","webpack:///./node_modules/@sentry/core/src/version.ts","webpack:///./node_modules/@sentry/core/src/integration.ts","webpack:///./node_modules/@sentry/core/src/baseclient.ts","webpack:///./node_modules/@sentry/core/src/transports/noop.ts","webpack:///./node_modules/@sentry/core/src/basebackend.ts","webpack:///./node_modules/@sentry/core/src/request.ts","webpack:///./node_modules/@sentry/utils/src/promisebuffer.ts","webpack:///./node_modules/@sentry/browser/src/transports/utils.ts","webpack:///./node_modules/@sentry/utils/src/async.ts","webpack:///./node_modules/@sentry/browser/src/transports/base.ts","webpack:///./node_modules/@sentry/utils/src/status.ts","webpack:///./node_modules/@sentry/browser/src/transports/fetch.ts","webpack:///./node_modules/@sentry/browser/src/transports/xhr.ts","webpack:///./node_modules/@sentry/browser/src/backend.ts","webpack:///./node_modules/@sentry/browser/src/client.ts","webpack:///./src/feature-app/sentry/sentry.ts","webpack:///./node_modules/@volkswagen-onehub/library-services-common/node_modules/setprototypeof/index.js","webpack:///(webpack)/buildin/global.js","webpack:///./src/forms/Leads/LeadGenericoForm.tsx","webpack:///./node_modules/redux/es/redux.js","webpack:///./node_modules/libphonenumber-js/source/helpers/parseDigits.js","webpack:///./src/feature-app/InputsValues/OtherInputTypesObjects.tsx","webpack:///./src/feature-app/Screen/Templates.tsx","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/theme-provider/create-css-var-name.js","webpack:///./node_modules/invariant/browser.js","webpack:///./node_modules/geolib/es/constants.js","webpack:///./src/bff/api/get-dealer-kvps.ts","webpack:///./src/feature-app/sentry/ErrorBoundary.ts","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/deprecated/index.js","webpack:///./src/forms/Prospects/ConfirmacionProspects.tsx","webpack:///./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack:///./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js","webpack:///./node_modules/@sentry/utils/src/env.ts","webpack:///./src/forms/Leads/LeadGenericoController.tsx","webpack:///./src/feature-app/redux/dealers-types.ts","webpack:///./src/feature-app/redux/dealers-reducer.ts","webpack:///./src/feature-app/redux/types.ts","webpack:///./src/feature-app/redux/form-data-types.ts","webpack:///./src/feature-app/redux/form-data-reducer.ts","webpack:///./src/feature-app/redux/form-info-types.ts","webpack:///./src/feature-app/redux/form-info-reducer.ts","webpack:///./src/feature-app/redux/reducer.ts","webpack:///./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack:///./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createSuper.js","webpack:///./node_modules/@redux-devtools/extension/lib/esm/index.js","webpack:///./src/feature-app/App.tsx","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/layout/layout.js","webpack:///./node_modules/@mapbox/point-geometry/index.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/@volkswagen-onehub/library-services-common/dist-es/fetch.js","webpack:///./node_modules/@volkswagen-onehub/library-services-common/dist-es/setup.js","webpack:///./src/components/inputs/InputButton.tsx","webpack:///./src/feature-app/NewMap/sort-points.ts","webpack:///./src/forms/CitaPosventa/index.ts","webpack:///./src/feature-app/CalendarioCita/CalandarioStyles.tsx","webpack:///./src/feature-app/CalendarioCita/CalendarioCita.tsx","webpack:///./src/feature-app/CalendarioCita/FranjaHoraria.tsx","webpack:///./src/feature-app/CalendarioCita/SlotsHorario.tsx","webpack:///./src/feature-app/CalendarioCita/TabsHorario.tsx","webpack:///./src/feature-app/CalendarioCita/get-slots.tsx","webpack:///./src/feature-app/CalendarioCita/CloseInDealerCalendar.tsx","webpack:///./src/feature-app/remove-configuration-hash.ts","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/image/index.js","webpack:///./node_modules/reselect/es/index.js","webpack:///./src/feature-app/redux/selectors.ts","webpack:///./node_modules/@sentry/utils/src/string.ts","webpack:///./src/forms/FormsAdhoc/DiaDeLaMadre/componentsAndViews/CajaCTATrigger.tsx","webpack:///./src/forms/FormsAdhoc/DiaDeLaMadre/componentsAndViews/ConfirmacionDiaDeLaMadre.tsx","webpack:///./src/forms/FormsAdhoc/DiaDeLaMadre/componentsAndViews/DisplayImagenesYCTATrigger.tsx","webpack:///./src/forms/FormsAdhoc/DiaDeLaMadre/componentsAndViews/Mensaje.tsx","webpack:///./src/forms/FormsAdhoc/DiaDeLaMadre/componentsAndViews/MensajesCards.tsx","webpack:///./src/forms/FormsAdhoc/DiaDeLaMadre/componentsAndViews/SectionMensajes.tsx","webpack:///./src/forms/FormsAdhoc/DiaDeLaMadre/assets/Svgs.tsx","webpack:///./src/forms/FormsAdhoc/DiaDeLaMadre/componentsAndViews/ThankYouDiaDeLaMadre.tsx","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/@volkswagen-onehub/library-services-common/dist-es/utils/mocks.js","webpack:///./node_modules/isomorphic-proxy-config/client.js","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist/Close/index.js","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist/Phone/index.js","webpack:///./src/feature-app/hooks/use-feature-app-environment.ts","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/theme-provider/example-design-tokens.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/character-counter/index.js","webpack:///./src/forms/Prospects/ProspectsVentaForm.tsx","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/theme-provider/dynamic-tokens.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/integrator-root/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/theme-provider/get-media-query-vars.js","webpack:///./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack:///./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./node_modules/react-slick/lib/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/notification-message/index.js","webpack:///./node_modules/libphonenumber-js/source/parsePhoneNumber.js","webpack:///./node_modules/libphonenumber-js/source/helpers/getNumberType.js","webpack:///./node_modules/libphonenumber-js/source/helpers/formatNationalNumberUsingFormat.js","webpack:///./node_modules/react-autosuggest/dist/index.js","webpack:///./node_modules/libphonenumber-js/source/helpers/extension/extractExtension.js","webpack:///./node_modules/libphonenumber-js/source/parseIncompletePhoneNumber.js","webpack:///./node_modules/libphonenumber-js/source/parse_.js","webpack:///./node_modules/libphonenumber-js/source/parsePhoneNumber_.js","webpack:///./node_modules/react-device-detect/main.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/react-slick/lib/utils/innerSliderUtils.js","webpack:///./node_modules/@volkswagen-onehub/library-services-common/dist-es/api.js","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist/Checkmark/index.js","webpack:///./src/feature-app/NewMap/handle-location.ts","webpack:///./node_modules/libphonenumber-js/source/helpers/stripIddPrefix.js","webpack:///./node_modules/libphonenumber-js/source/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js","webpack:///./src/feature-app/InputsValues/CTAsObjectsFormsAdhoc.tsx","webpack:///./src/forms/SAC/SACform.tsx","webpack:///./src/forms/SAC/PantallaMotivoSAC.tsx","webpack:///./src/forms/SAC/PantallaDireccionPostal.tsx","webpack:///./src/forms/SAC/PantallaMunicipio.tsx","webpack:///./src/forms/SAC/ConfirmacionSAC.tsx","webpack:///./src/forms/SAC/ThankYouSAC.tsx","webpack:///./src/forms/CitaPosventa/MapaCita/MapaCita.tsx","webpack:///./src/forms/CitaPosventa/MapaCita/JourneyCitaPosventaController.tsx","webpack:///./src/forms/CitaPosventa/MapaCita/JourneyCitaPosventaDealerController.tsx","webpack:///./src/forms/CitaPosventa/MapaCita/JourneyCitaPosventaDealerWrapper.tsx","webpack:///./src/forms/CitaPosventa/MapaCita/JourneyCitaPosventaWrapper.tsx","webpack:///./src/forms/CitaPosventa/MapaCita/MapaCitaDealer.tsx","webpack:///./node_modules/kdbush/src/sort.js","webpack:///./node_modules/kdbush/src/within.js","webpack:///./node_modules/kdbush/src/index.js","webpack:///./node_modules/kdbush/src/range.js","webpack:///./node_modules/supercluster/index.js","webpack:///./src/feature-app/NewMap/generate-clusters.ts","webpack:///./src/forms/CitaPosventa/CitaPosventaEmbedded/CitaPosventaCalculadoraForm.tsx","webpack:///./src/forms/CitaPosventa/CitaPosventaEmbedded/CitaPosventaBonosForm.tsx","webpack:///./src/forms/Newsletter/NewsletterForm.tsx","webpack:///./src/forms/Newsletter/ConfirmacionNewsletter.tsx","webpack:///./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:///./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack:///./node_modules/@sentry/utils/src/node.ts","webpack:///./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/breakpoint-wrapper/index.js","webpack:///./node_modules/libphonenumber-js/source/helpers/isViablePhoneNumber.js","webpack:///./node_modules/libphonenumber-js/source/helpers/extractNationalNumber.js","webpack:///./node_modules/libphonenumber-js/source/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js","webpack:///./node_modules/lodash/merge.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/lodash/_ListCache.js","webpack:///./node_modules/lodash/_assocIndexOf.js","webpack:///./node_modules/lodash/eq.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/_nativeCreate.js","webpack:///./node_modules/lodash/_getMapData.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/classnames/index.js","webpack:///./node_modules/@volkswagen-onehub/library-services-common/dist-es/utils/auth.js","webpack:///./node_modules/@volkswagen-onehub/library-services-common/dist-es/utils/timeout.js","webpack:///./node_modules/@volkswagen-onehub/library-services-common/dist-es/utils/get-proxy-agent.js","webpack:///./src/bff/api/race-send.ts","webpack:///./src/feature-app/hooks/use-get-auth-service.ts","webpack:///./src/feature-app/hooks/use-get-waid-litera.ts","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/helpers/animation.js","webpack:///./src/components/PeriodoContacto.tsx","webpack:///./src/feature-app/LayerManagerWrapper.tsx","webpack:///./src/feature-app/ThankYouComponent.tsx","webpack:///./src/forms/Leads/helpers/get-ofertas-data.ts","webpack:///./src/forms/Leads/LeadGenericoComercialesForm.tsx","webpack:///./src/forms/Leads/Stock/StockForm.tsx","webpack:///./src/feature-app/save-feature-app.ts","webpack:///./src/forms/MGM/MGMLayout.tsx","webpack:///./src/forms/MGM/BonoClienteFields.tsx","webpack:///./src/forms/MGM/LegalMGM.tsx","webpack:///./src/forms/MGM/BonoClienteForm.tsx","webpack:///./src/forms/MGM/BonoRegaloFields.tsx","webpack:///./src/forms/MGM/BonoRegaloForm.tsx","webpack:///./src/forms/MGM/EnvioRegaloFields.tsx","webpack:///./src/forms/MGM/EnvioRegaloForm.tsx","webpack:///./src/forms/MGM/MGMController.tsx","webpack:///./src/forms/MGM/ThankYouMGM.tsx","webpack:///./src/forms/FormsAdhoc/Eurocopa/ComponentsAndViews/Portada.tsx","webpack:///./src/forms/FormsAdhoc/Eurocopa/ComponentsAndViews/Experiencia.tsx","webpack:///./src/forms/FormsAdhoc/Eurocopa/EurocopaForm.tsx","webpack:///./src/forms/FormsAdhoc/Eurocopa/ThankYouEurocopa.tsx","webpack:///./src/forms/FormsAdhoc/Eurocopa/ConfirmacionEurocopa.tsx","webpack:///./src/forms/FormsAdhoc/Fidelizacion/LastNavigationFidelizacion.tsx","webpack:///./src/forms/FormsAdhoc/Fidelizacion/FidelizacionLastScreenFields.tsx","webpack:///./src/forms/FormsAdhoc/Fidelizacion/use-initialize-fidelizacion-form.tsx","webpack:///./src/forms/FormsAdhoc/Fidelizacion/FidelizacionForm.tsx","webpack:///./src/forms/FormsAdhoc/Fidelizacion/FidelizacionController.tsx","webpack:///./src/forms/FormsAdhoc/Fidelizacion/ThankYouFidelizacion.tsx","webpack:///./src/forms/SAC/SACOneShop/SACOneShopForm.tsx","webpack:///./src/forms/SAC/SACOneShop/ThankYouOneShop.tsx","webpack:///./src/forms/SAC/SACOneShop/SACOneShopFields.tsx","webpack:///./src/components/HeaderImage.tsx","webpack:///./src/forms/SAC/SACOneShop/SACOneShopController.tsx","webpack:///./src/forms/BajaComunicaciones/BajaComunicacionesForm.tsx","webpack:///./src/forms/BajaComunicaciones/ThankYouBaja.tsx","webpack:///./src/forms/BajaComunicaciones/BajaComunicacionesFields.tsx","webpack:///./src/forms/BajaComunicaciones/BajaComunicacionesController.tsx","webpack:///./src/forms/Leads/MapaLeads/MapaLeads.tsx","webpack:///./src/forms/Leads/MapaLeads/JourneyLeadsController.tsx","webpack:///./src/forms/Leads/MapaLeads/JourneyLeadsWrapper.tsx","webpack:///./src/forms/Prospects/MatchProspectForm.tsx","webpack:///./src/forms/Prospects/ProspectsPosventa.tsx","webpack:///./src/forms/Prospects/ThankYouProspects.tsx","webpack:///./node_modules/@volkswagen-onehub/components-core/node_modules/@volkswagen-onehub/icons-core/dist-es/CheckboxCheckmark/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/node_modules/@volkswagen-onehub/icons-core/dist-es/CheckboxBorder/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/checkbox/index.js","webpack:///./src/forms/Leads/MasInformacion/MasInformacionForm.tsx","webpack:///./src/forms/Leads/MasInformacion/LeadsMasInformacionPartialData.tsx","webpack:///./src/forms/Leads/Stock/LeadsStockFormPartialData.tsx","webpack:///./src/forms/Newsletter/ThankYouNewsletter.tsx","webpack:///./src/forms/FormsAdhoc/DiaDeLaMadre/DiaDeLaMadreForm.tsx","webpack:///./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack:///./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./node_modules/@sentry/utils/src/stacktrace.ts","webpack:///./node_modules/libphonenumber-js/source/isPossibleNumber_.js","webpack:///./node_modules/libphonenumber-js/source/helpers/RFC3966.js","webpack:///./node_modules/libphonenumber-js/source/helpers/extension/createExtensionPattern.js","webpack:///./node_modules/libphonenumber-js/source/helpers/applyInternationalSeparatorStyle.js","webpack:///./node_modules/libphonenumber-js/source/helpers/extractCountryCallingCode.js","webpack:///./node_modules/libphonenumber-js/source/helpers/getCountryByCallingCode.js","webpack:///./node_modules/libphonenumber-js/source/parsePhoneNumberFromString_.js","webpack:///./node_modules/@volkswagen-onehub/library-services-common/dist-es/const.js","webpack:///./node_modules/@volkswagen-onehub/library-services-common/dist-es/utils/url.js","webpack:///./node_modules/@volkswagen-onehub/library-services-common/dist-es/configuration.js","webpack:///./node_modules/@volkswagen-onehub/library-services-common/dist-es/vicci/error-handling.js","webpack:///./node_modules/@volkswagen-onehub/library-services-marketingcode/dist-es/save-storage-dataset.js","webpack:///./node_modules/@volkswagen-onehub/library-services-common/dist-es/vicci/raw/vcs/utils.js","webpack:///./node_modules/@volkswagen-onehub/library-services-marketingcode/dist-es/vgs.js","webpack:///./node_modules/@volkswagen-onehub/library-services-marketingcode/dist-es/load-storage-dataset.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/theme-provider/deprecations.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/helpers/get.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/theme-provider/example-theme-definitions.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/theme-provider/get-theme.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/theme-provider/get-design-token-value.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/theme-provider/theme-provider.js","webpack:///./node_modules/libphonenumber-js/source/helpers/getIddPrefix.js","webpack:///./node_modules/libphonenumber-js/source/format_.js","webpack:///./node_modules/libphonenumber-js/source/PhoneNumber.js","webpack:///./node_modules/libphonenumber-js/source/validate_.js","webpack:///./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/construct.js","webpack:///./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","webpack:///./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/lodash/_getNative.js","webpack:///./node_modules/lodash/isFunction.js","webpack:///./node_modules/lodash/_baseAssignValue.js","webpack:///./node_modules/lodash/isArrayLike.js","webpack:///./node_modules/react-autosuggest/dist/compareObjects.js","webpack:///./node_modules/geolib/es/getCoordinateKey.js","webpack:///./node_modules/geolib/es/isDecimal.js","webpack:///./node_modules/geolib/es/isSexagesimal.js","webpack:///./node_modules/geolib/es/sexagesimalToDecimal.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/node_modules/axios/lib/defaults.js","webpack:///./node_modules/libphonenumber-js/source/parsePhoneNumberFromString.js","webpack:///./node_modules/libphonenumber-js/min/exports/parsePhoneNumberFromString.js","webpack:///./src/feature-service/es-oneform-core-feature-service/pincode-data/dealer.ts","webpack:///./src/feature-service/es-oneform-core-feature-service/pincode-data/get-test-pincode.ts","webpack:///./src/feature-service/es-oneform-core-feature-service/pincode-data/lead.ts","webpack:///./src/feature-service/es-oneform-core-feature-service/pincode-data/order.ts","webpack:///./src/feature-service/es-oneform-core-feature-service/pincode-data/person.ts","webpack:///./src/feature-service/es-oneform-core-feature-service/pincode-data/pincode-person-lead.ts","webpack:///./src/feature-service/es-oneform-core-feature-service/pincode-data/vehicle.ts","webpack:///./src/feature-service/es-oneform-core-feature-service/pincode-data/pincode-person-vehicle-order-dealer.ts","webpack:///./src/feature-service/es-oneform-core-feature-service/pincode-data/pincode-person-vehicle.ts","webpack:///./src/feature-service/es-oneform-core-feature-service/pincode-data/pincode-person.ts","webpack:///./src/feature-service/es-oneform-core-feature-service/index.ts","webpack:///./src/feature-app/feature-app.tsx","webpack:///./node_modules/react-is/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/spinner/index.js","webpack:///./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack:///./node_modules/symbol-observable/es/index.js","webpack:///./node_modules/@sentry/utils/src/browser.ts","webpack:///./node_modules/geolib/es/getDistance.js","webpack:///./node_modules/@fullpage/react-fullpage/dist/react-fullpage.js","webpack:///./node_modules/@volkswagen-onehub/myvw-shared-components/dist/dashboard/dashboardTile/index.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/lodash/_Map.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/_assignMergeValue.js","webpack:///./node_modules/lodash/_defineProperty.js","webpack:///./node_modules/lodash/_getPrototype.js","webpack:///./node_modules/lodash/_isPrototype.js","webpack:///./node_modules/lodash/isArguments.js","webpack:///./node_modules/lodash/isArray.js","webpack:///./node_modules/lodash/isLength.js","webpack:///./node_modules/lodash/isBuffer.js","webpack:///./node_modules/lodash/isTypedArray.js","webpack:///./node_modules/lodash/_safeGet.js","webpack:///./node_modules/lodash/keysIn.js","webpack:///./node_modules/lodash/_isIndex.js","webpack:///./node_modules/lodash/identity.js","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist/ChevronDown/index.js","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist/ChevronUp/index.js","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist/Alert/index.js","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist/ArrowUp/index.js","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist/ArrowDown/index.js","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist/ChevronLeft/index.js","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist/ChevronRight/index.js","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist/ContactDealer/index.js","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist/Route/index.js","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist/Magnifier/index.js","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist/Add/index.js","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist/Remove/index.js","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist/ArrowLeft/index.js","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist/Locate/index.js","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist/Calc/index.js","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist/Calendar/index.js","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist/Interior/index.js","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist/Info/index.js","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist/Mail/index.js","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist/FleetServicePrivate/index.js","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist/CarPickupService/index.js","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist/StarOutline/index.js","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist/StarFilled/index.js","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist/Reload/index.js","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist/Edit/index.js","webpack:///./node_modules/enquire.js/src/Util.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/text-input/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/text-area/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/select/index.js","webpack:///./node_modules/geolib/es/toDecimal.js","webpack:///./node_modules/geolib/es/getCoordinateKeys.js","webpack:///./src/feature-app/NewMap/assets/filter-ic_list.svg","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/switch/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/fieldset/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/tabs/index.js","webpack:///./src/forms/Leads/ThankYouLeads.tsx","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/divider/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/list/list.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/list/list-item.js","webpack:///./node_modules/@redux-devtools/extension/node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack:///./node_modules/@volkswagen-onehub/components-core/node_modules/react-transition-group/Transition.js","webpack:///./node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","webpack:///./node_modules/@volkswagen-onehub/components-core/node_modules/react-transition-group/utils/PropTypes.js","webpack:///./node_modules/@volkswagen-onehub/components-core/node_modules/react-transition-group/TransitionGroup.js","webpack:///./node_modules/react-reveal/globals.js","webpack:///./src/feature-app/FormController.tsx","webpack:///./src/feature-app/format-dates.ts","webpack:///./node_modules/dayjs/locale/es.js","webpack:///./src/feature-app/get-trigger.tsx","webpack:///./src/feature-app/lodash-functions.ts","webpack:///./src/feature-app/set-object-values.ts","webpack:///./src/feature-app/tracking-context.ts","webpack:///./node_modules/@volkswagen-onehub/myvw_services/node_modules/jwt-decode/lib/index.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/node_modules/axios/lib/core/createError.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/node_modules/axios/lib/cancel/Cancel.js","webpack:///./src/forms/Cem/CEMLegal.tsx","webpack:///./src/forms/Cem/CTASinRespuesta.tsx","webpack:///./src/forms/Cem/CemController.tsx","webpack:///./src/forms/Cem/helpers.ts","webpack:///./src/forms/Cem/CustomLegalCem.tsx","webpack:///./src/forms/Cem/ChecksEnvio.tsx","webpack:///./src/forms/Cem/ChecksPublicacion.tsx","webpack:///./src/forms/Cem/ConfirmacionCem.tsx","webpack:///./src/forms/Cem/CemStepsPosventa.tsx","webpack:///./src/forms/Cem/ThankYouCem.tsx","webpack:///./src/forms/Cem/CemPosventa.tsx","webpack:///./src/forms/Cem/CemSteps.tsx","webpack:///./src/forms/Cem/CemVenta.tsx","webpack:///./src/forms/NoRenovacion/use-initialize-no-renovacion-form.tsx","webpack:///./src/forms/NoRenovacion/NoRenovacionController.tsx","webpack:///./src/forms/NoRenovacion/NoRenovacionYaTengo.tsx","webpack:///./src/forms/NoRenovacion/ConfirmacionNoRenovacion.tsx","webpack:///./src/forms/NoRenovacion/MapaNoRenovacion/MapaNoRenovacion.tsx","webpack:///./src/forms/NoRenovacion/ThankYouNoRenovacion.tsx","webpack:///./src/forms/NoRenovacion/MapaNoRenovacion/JourneyNoRenovacionController.tsx","webpack:///./src/forms/NoRenovacion/MapaNoRenovacion/JourneyNoRenovacionWrapper.tsx","webpack:///./src/forms/NoRenovacion/NoRenovacionNoTengo.tsx","webpack:///./src/forms/NoRenovacion/NoRenovacionNoQuiero.tsx","webpack:///./src/forms/NoRenovacion/PantallaMarcaModelo.tsx","webpack:///./src/forms/NoRenovacion/FakeTriggerCTA.tsx","webpack:///./src/forms/NoCompra/use-initialize-no-compra-form.tsx","webpack:///./src/forms/NoCompra/NoCompraController.tsx","webpack:///./src/forms/NoCompra/NoCompraYaTengo.tsx","webpack:///./src/forms/NoCompra/ConfirmacionNoCompra.tsx","webpack:///./src/forms/NoCompra/MapaNoCompra/MapaNoCompra.tsx","webpack:///./src/forms/NoCompra/ThankYouNoCompra.tsx","webpack:///./src/forms/NoCompra/MapaNoCompra/JourneyNoCompraController.tsx","webpack:///./src/forms/NoCompra/MapaNoCompra/JourneyNoCompraWrapper.tsx","webpack:///./src/forms/NoCompra/NoCompraNoTengo.tsx","webpack:///./src/forms/NoCompra/PantallaOtrosModelos.tsx","webpack:///./src/forms/NoCompra/NoCompraNoQuiero.tsx","webpack:///./src/forms/Empresa/ConfirmacionEmpresas.tsx","webpack:///./src/forms/Empresa/EmpresaInfoComponent.tsx","webpack:///./src/forms/Empresa/EmpresasForm.tsx","webpack:///./src/forms/Empresa/Fleet.tsx","webpack:///./src/forms/Empresa/ThankYouEmpresas.tsx","webpack:///./src/forms/Empresa/MapaEmpresa/MapaEmpresas.tsx","webpack:///./src/forms/Empresa/MapaEmpresa/JourneyEmpresasController.tsx","webpack:///./src/forms/Empresa/MapaEmpresa/JourneyEmpresasWrapper.tsx","webpack:///./src/forms/LEM/LastNavigationLEM.tsx","webpack:///./src/forms/LEM/use-initialize-lem-form.tsx","webpack:///./src/forms/LEM/LEMContactadoForm.tsx","webpack:///./src/forms/LEM/LEMNoContactadoForm.tsx","webpack:///./src/forms/LEM/LEMController.tsx","webpack:///./src/forms/LEM/LEMLastScreenFields.tsx","webpack:///./src/forms/LEM/ThankYouLEM.tsx","webpack:///./src/forms/CallMe/Oferta/ConfirmarCallMeLayer.tsx","webpack:///./src/forms/CallMe/Oferta/ConfirmacionCallMeOferta.tsx","webpack:///./src/forms/CallMe/Oferta/CallMeOfertaForm.tsx","webpack:///./src/forms/CallMe/Oferta/ThankYouCallMeOferta.tsx","webpack:///./src/forms/FormsAdhoc/LanzamientoTaigo/ConfirmacionTaigo.tsx","webpack:///./src/forms/FormsAdhoc/LanzamientoTaigo/ThankYouTaigo.tsx","webpack:///./src/forms/FormsAdhoc/LanzamientoTaigo/LanzamientoTaigoForm.tsx","webpack:///./node_modules/@volkswagen-onehub/components-core/node_modules/@volkswagen-onehub/icons-core/dist-es/RadioButtonInner/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/node_modules/@volkswagen-onehub/icons-core/dist-es/RadioButtonBorder/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/dist-es/radio-button/index.js","webpack:///./src/feature-app/CitaPreviaTile/CitaPreviaTile.tsx","webpack:///./src/feature-app/CitaPreviaTile/CitaPreviaTileGrid.tsx","webpack:///./src/forms/Leads/CitaVenta/CitaVentaForm.tsx","webpack:///./src/forms/Leads/CitaVenta/LeadsCitaVentaPartialData.tsx","webpack:///./src/forms/Leads/Presupuesto/PresupuestoForm.tsx","webpack:///./src/forms/Leads/Presupuesto/LeadsPresupuestoPartialData.tsx","webpack:///./src/forms/Leads/TestDrive/TestDriveForm.tsx","webpack:///./src/forms/Leads/TestDrive/LeadsTestDrivePartialData.tsx","webpack:///./src/forms/Race/RaceForm.tsx","webpack:///./src/forms/Race/use-race-form-controller.ts","webpack:///./src/forms/Leads/Oferta/OfertaForm.tsx","webpack:///./src/forms/helpers/transform-millage.ts","webpack:///./node_modules/symbol-observable/es/ponyfill.js","webpack:///./node_modules/isomorphic-fetch/fetch-npm-browserify.js","webpack:///./node_modules/btoa-lite/btoa-browser.js","webpack:///./node_modules/url/url.js","webpack:///./node_modules/@sentry/utils/src/memo.ts","webpack:///./node_modules/eventemitter3/index.js","webpack:///./node_modules/styled-normalize/dist/index.js","webpack:///./node_modules/js-file-download/file-download.js","webpack:///./src/forms/LeadsInPage/car_3-4.png","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist/ArrowRight/index.js","webpack:///./node_modules/@n8tb1t/use-scroll-position/lib/index.js","webpack:///./node_modules/@redux-devtools/extension/node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack:///./node_modules/@redux-devtools/extension/node_modules/@babel/runtime/helpers/typeof.js","webpack:///./node_modules/lodash.throttle/index.js","webpack:///./node_modules/react-reveal/Fade.js","webpack:///./node_modules/unquote/index.js","webpack:///./node_modules/@volkswagen-onehub/myvw-shared-components/dist/dashboard/tileGridContainer/index.js","webpack:///./node_modules/@volkswagen-onehub/myvw-shared-components/dist/dashboard/tileGridLayout/index.js","webpack:///./node_modules/dayjs/plugin/utc.js","webpack:///./node_modules/dayjs/plugin/isSameOrBefore.js","webpack:///./node_modules/dayjs/plugin/isBetween.js","webpack:///./node_modules/dayjs/plugin/advancedFormat.js","webpack:///./node_modules/dayjs/plugin/customParseFormat.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/src/profileService/ProfileServiceV1.ts","webpack:///./node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/react-is/cjs/react-is.production.min.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/lodash/_baseMerge.js","webpack:///./node_modules/lodash/_Stack.js","webpack:///./node_modules/lodash/_listCacheClear.js","webpack:///./node_modules/lodash/_listCacheDelete.js","webpack:///./node_modules/lodash/_listCacheGet.js","webpack:///./node_modules/lodash/_listCacheHas.js","webpack:///./node_modules/lodash/_listCacheSet.js","webpack:///./node_modules/lodash/_stackClear.js","webpack:///./node_modules/lodash/_stackDelete.js","webpack:///./node_modules/lodash/_stackGet.js","webpack:///./node_modules/lodash/_stackHas.js","webpack:///./node_modules/lodash/_stackSet.js","webpack:///./node_modules/lodash/_baseIsNative.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_isMasked.js","webpack:///./node_modules/lodash/_coreJsData.js","webpack:///./node_modules/lodash/_toSource.js","webpack:///./node_modules/lodash/_getValue.js","webpack:///./node_modules/lodash/_MapCache.js","webpack:///./node_modules/lodash/_mapCacheClear.js","webpack:///./node_modules/lodash/_Hash.js","webpack:///./node_modules/lodash/_hashClear.js","webpack:///./node_modules/lodash/_hashDelete.js","webpack:///./node_modules/lodash/_hashGet.js","webpack:///./node_modules/lodash/_hashHas.js","webpack:///./node_modules/lodash/_hashSet.js","webpack:///./node_modules/lodash/_mapCacheDelete.js","webpack:///./node_modules/lodash/_isKeyable.js","webpack:///./node_modules/lodash/_mapCacheGet.js","webpack:///./node_modules/lodash/_mapCacheHas.js","webpack:///./node_modules/lodash/_mapCacheSet.js","webpack:///./node_modules/lodash/_baseFor.js","webpack:///./node_modules/lodash/_createBaseFor.js","webpack:///./node_modules/lodash/_baseMergeDeep.js","webpack:///./node_modules/lodash/_cloneBuffer.js","webpack:///./node_modules/lodash/_cloneTypedArray.js","webpack:///./node_modules/lodash/_cloneArrayBuffer.js","webpack:///./node_modules/lodash/_Uint8Array.js","webpack:///./node_modules/lodash/_copyArray.js","webpack:///./node_modules/lodash/_initCloneObject.js","webpack:///./node_modules/lodash/_baseCreate.js","webpack:///./node_modules/lodash/_overArg.js","webpack:///./node_modules/lodash/_baseIsArguments.js","webpack:///./node_modules/lodash/isArrayLikeObject.js","webpack:///./node_modules/lodash/stubFalse.js","webpack:///./node_modules/lodash/isPlainObject.js","webpack:///./node_modules/lodash/_baseIsTypedArray.js","webpack:///./node_modules/lodash/_baseUnary.js","webpack:///./node_modules/lodash/_nodeUtil.js","webpack:///./node_modules/lodash/toPlainObject.js","webpack:///./node_modules/lodash/_copyObject.js","webpack:///./node_modules/lodash/_assignValue.js","webpack:///./node_modules/lodash/_arrayLikeKeys.js","webpack:///./node_modules/lodash/_baseTimes.js","webpack:///./node_modules/lodash/_baseKeysIn.js","webpack:///./node_modules/lodash/_nativeKeysIn.js","webpack:///./node_modules/lodash/_createAssigner.js","webpack:///./node_modules/lodash/_baseRest.js","webpack:///./node_modules/lodash/_overRest.js","webpack:///./node_modules/lodash/_apply.js","webpack:///./node_modules/lodash/_setToString.js","webpack:///./node_modules/lodash/_baseSetToString.js","webpack:///./node_modules/lodash/constant.js","webpack:///./node_modules/lodash/_shortOut.js","webpack:///./node_modules/lodash/_isIterateeCall.js","webpack:///./node_modules/whatwg-fetch/fetch.js","webpack:///./node_modules/node-libs-browser/node_modules/punycode/punycode.js","webpack:///./node_modules/url/util.js","webpack:///./node_modules/querystring-es3/index.js","webpack:///./node_modules/querystring-es3/decode.js","webpack:///./node_modules/querystring-es3/encode.js","webpack:///./node_modules/ua-parser-js/dist/ua-parser.min.js","webpack:///./node_modules/react-slick/lib/slider.js","webpack:///./node_modules/react-slick/lib/inner-slider.js","webpack:///./node_modules/react-slick/lib/initial-state.js","webpack:///./node_modules/lodash.debounce/index.js","webpack:///./node_modules/react-slick/lib/track.js","webpack:///./node_modules/react-slick/lib/dots.js","webpack:///./node_modules/react-slick/lib/arrows.js","webpack:///./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","webpack:///./node_modules/json2mq/index.js","webpack:///./node_modules/string-convert/camel2hyphen.js","webpack:///./node_modules/react-slick/lib/default-props.js","webpack:///./node_modules/enquire.js/src/index.js","webpack:///./node_modules/enquire.js/src/MediaQueryDispatch.js","webpack:///./node_modules/enquire.js/src/MediaQuery.js","webpack:///./node_modules/enquire.js/src/QueryHandler.js","webpack:///./node_modules/react-autosuggest/dist/Autosuggest.js","webpack:///./node_modules/shallow-equal/arrays/index.js","webpack:///./node_modules/react-autosuggest/dist/Autowhatever.js","webpack:///./node_modules/section-iterator/dist/index.js","webpack:///./node_modules/react-themeable/dist/index.js","webpack:///./node_modules/react-themeable/node_modules/object-assign/index.js","webpack:///./node_modules/react-autosuggest/dist/SectionTitle.js","webpack:///./node_modules/react-autosuggest/dist/ItemList.js","webpack:///./node_modules/react-autosuggest/dist/Item.js","webpack:///./node_modules/react-autosuggest/dist/theme.js","webpack:///./node_modules/geolib/es/getLatitude.js","webpack:///./node_modules/geolib/es/isValidCoordinate.js","webpack:///./node_modules/geolib/es/isValidLatitude.js","webpack:///./node_modules/geolib/es/isValidLongitude.js","webpack:///./node_modules/geolib/es/getLongitude.js","webpack:///./node_modules/geolib/es/toRad.js","webpack:///./node_modules/geolib/es/robustAcos.js","webpack:///./src/feature-app/NewMap/assets/selected_marker.png","webpack:///./src/feature-app/NewMap/assets/marker.png","webpack:///./src/feature-app/NewMap/assets/dealer_marker_grey.png","webpack:///./src/feature-app/NewMap/assets/favourite_dealer.png","webpack:///./src/feature-app/NewMap/assets/dealer_marker_selected.png","webpack:///./src/feature-app/NewMap/assets/dealer_marker.png","webpack:///./node_modules/@n8tb1t/use-scroll-position/lib/useScrollPosition.js","webpack:///./node_modules/@n8tb1t/use-scroll-position/lib/useIsomorphicLayoutEffect.js","webpack:///./src/triggers/adhoc/NuevoTaigo/fullpage.extensions.min.js","webpack:///./src/triggers/adhoc/NuevoTaigo/fullpage.scrollHorizontally.min.js","webpack:///./node_modules/@redux-devtools/extension/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack:///./node_modules/@redux-devtools/extension/node_modules/@babel/runtime/helpers/iterableToArray.js","webpack:///./node_modules/@redux-devtools/extension/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack:///./node_modules/@redux-devtools/extension/node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack:///./node_modules/@volkswagen-onehub/components-core/node_modules/react-transition-group/CSSTransition.js","webpack:///./node_modules/@volkswagen-onehub/components-core/node_modules/dom-helpers/class/addClass.js","webpack:///./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack:///./node_modules/@volkswagen-onehub/components-core/node_modules/dom-helpers/class/hasClass.js","webpack:///./node_modules/@volkswagen-onehub/components-core/node_modules/dom-helpers/class/removeClass.js","webpack:///./node_modules/@volkswagen-onehub/components-core/node_modules/react-transition-group/ReplaceTransition.js","webpack:///./node_modules/@volkswagen-onehub/components-core/node_modules/react-transition-group/utils/ChildMapping.js","webpack:///./node_modules/react-reveal/wrap.js","webpack:///./node_modules/react-reveal/RevealBase.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/node_modules/jwt-decode/lib/base64_url_decode.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/node_modules/jwt-decode/lib/atob.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/src/profileService/WeProfileFacade.ts","webpack:///./node_modules/@volkswagen-onehub/myvw_services/node_modules/axios/index.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/node_modules/axios/lib/axios.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/node_modules/axios/lib/core/settle.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/node_modules/axios/lib/helpers/validator.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/node_modules/axios/lib/helpers/isAxiosError.js","webpack:///./node_modules/@volkswagen-onehub/myvw_services/src/shared/AccessTokenExtractor.ts","webpack:///./node_modules/@volkswagen-onehub/components-core/node_modules/@volkswagen-onehub/icons-core/dist-es/Close/index.js","webpack:///./node_modules/@volkswagen-onehub/components-core/node_modules/@volkswagen-onehub/icons-core/dist-es/ChevronDown/index.js","webpack:///./node_modules/rxjs/src/internal/util/isFunction.ts","webpack:///./node_modules/rxjs/src/internal/config.ts","webpack:///./node_modules/rxjs/src/internal/util/hostReportError.ts","webpack:///./node_modules/rxjs/src/internal/Observer.ts","webpack:///./node_modules/rxjs/src/internal/util/UnsubscriptionError.ts","webpack:///./node_modules/rxjs/src/internal/Subscription.ts","webpack:///./node_modules/rxjs/src/internal/util/isObject.ts","webpack:///./node_modules/rxjs/src/internal/symbol/rxSubscriber.ts","webpack:///./node_modules/rxjs/src/internal/Subscriber.ts","webpack:///./node_modules/rxjs/src/internal/util/identity.ts","webpack:///./node_modules/rxjs/src/internal/util/pipe.ts","webpack:///./node_modules/rxjs/src/internal/Observable.ts","webpack:///./node_modules/rxjs/src/internal/util/toSubscriber.ts","webpack:///./node_modules/rxjs/src/internal/util/canReportError.ts","webpack:///./node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts","webpack:///./node_modules/rxjs/src/internal/SubjectSubscription.ts","webpack:///./node_modules/rxjs/src/internal/Subject.ts","webpack:///./node_modules/rxjs/src/internal/BehaviorSubject.ts","webpack:///./node_modules/@sentry/utils/src/time.ts","webpack:///./node_modules/@volkswagen-onehub/layer-manager/src/v2/types.ts","webpack:///./node_modules/@volkswagen-onehub/icons-core/dist-es/Close/index.js","webpack:///./node_modules/dom-helpers/esm/removeClass.js","webpack:///./node_modules/react-transition-group/esm/config.js","webpack:///./node_modules/react-transition-group/esm/TransitionGroupContext.js","webpack:///./node_modules/react-transition-group/esm/Transition.js","webpack:///./node_modules/react-transition-group/esm/CSSTransition.js","webpack:///./node_modules/dom-helpers/esm/addClass.js","webpack:///./node_modules/dom-helpers/esm/hasClass.js","webpack:///./node_modules/libphonenumber-js/source/isValidPhoneNumber.js","webpack:///./node_modules/libphonenumber-js/min/exports/isValidPhoneNumber.js"],"names":["root","factory","exports","module","require","define","amd","a","i","self","this","__WEBPACK_EXTERNAL_MODULE__0__","__WEBPACK_EXTERNAL_MODULE__18__","__WEBPACK_EXTERNAL_MODULE__57__","installedModules","__webpack_require__","moduleId","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","_slicedToArray","arr","Array","isArray","iterator","_arr","_n","_d","_e","undefined","_s","_i","next","done","push","length","err","unsupportedIterableToArray","TypeError","_taggedTemplateLiteral","strings","raw","slice","freeze","defineProperties","handlePreviousStep","trackingManager","onClick","e","trackFormStepButtonClick","contentId","tag","emphasis","size","icon","variant","close","href","setHref","copy","setCopy","formData","getState","fields","formName","stretchContent","padding","top","0","grid002","960","grid001","bottom","left","right","wrap","always","gutter","static200","static350","bold","appearance","headline0300","copy200","never","static300","preventDefault","store","env","layerManager","openFocusLayer","state","B","userCloseable","CanalDeContacto","errors","register","setErrorContacto","contacto","setContacto","error","isComerciales","setError","ctaValues","nextOnClick","div","button","props","translateY","handleAreYouSureLayer","screenIndex","formInfo","trackFormCloseClick","FormStart","Wrapper","inputValuePostalCode","setInputValuePostalCode","pristinePostalCode","setPristinePostalCode","errorPostalCode","setErrorPostalCode","regExpPostalCode","match","label","isFloating","innerRef","required","message","pattern","onChange","target","handleChangePostalCode","maxLength","className","Content","CTAWrapper","notSavedField","closeLayerCallback","headline300","textAlign","static500","horizontalAlign","flexStart","dynamic0100","retrySubmit","title","bodyCopy","isLEM","hideSecondCTA","style","max","b560","min","marginLeft","setDmsFailed","dispatch","config","day","setDay","franjaHoraria","setFranjaHoraria","setName","setSelectedPoint","horario","sendDmsFailed","slot","dealer","from","toLowerCase","handleShowSlots","finalSlot","getFinalSlot","momentSlot","charAt","toUpperCase","replace","concat","createNoDmsSlot","dmsInfo","dmsAvailable","newSlot","assessor","type","payload","textTransform","trigger","CTAsWrapper","currentValue","setCurrentValue","setValue","isSelected","setIsSelected","getValue","map","cta","index","ref","checkCurrentValue","setSelected","color","primary","PaddingWrapper","TextColor","span","hideLegal","customLegal","copy0200","copy0150","showBasesLegales","staticSize","noCompra","QuestionWrapper","ItemWrapper","InfoWrapper","themeColor","CTAlinkWhithe","noPadding","promocion","hrefBasesLegales","LssiTkmQuestions","getLssiText","isOfertas","whiteSpace","fontSize","isOfertasForm","handleInfoLayer","renderFn","body","A","renderInfo","static450","dangerouslySetInnerHTML","__html","b1600","headline0350","paddingTop","PositionWrapper","KoTitle","KoBody","loadingCopy","setCompartirError","compartir","ContentID","checkNotSavedFields","ActivarCheckNotSavedFields","handleShowFinalScreen","handleSubmit","triggerValidation","layerVisible","setLayerVisible","setNotSavedField","koLayer","setKoLayer","koScreen","setKoScreen","setIntermitenciaLayerLayer","handleKoLayer","layer","renderKoLayer","handleLoadingScreenLayer","renderLoadingScreen","isleads","handleIntermitenciaDMSKoLayer","renderIntermitenciaDMSKoLayer","handleInvalidFormLayer","renderInvalidFormLayer","handleConfirmar","quieroContacto","trackFormCTAClick","loadingLayer","someNotSavedField","copies","first","second","third","permite","includes","showDataEnrichment","point","center","properties","markerInfo","dealerInfo","address","city","zipCode","distanceFromCenter","default","columns","headline0250","static100","copy150","flexEnd","trackFormButtonClick","slots","handleShowCalendarOnClick","handleSeleccionarOnClick","DetalleMotivo","hideCTA","CTALabel","limitedCharacters","numberOfMaxLength","showRecomendation","handleNextStep","showButton","setShowButton","document","getElementsByTagName","setAttribute","static400","aux","currentTarget","handleChange","Default","alternateCTAText","height","FechaCompraWrapper","MarginDiv","notALayer","fecha","month","setMonth","actualYear","yearsArray","setYearsArray","previousYear","subtract","locale","format","year","setYear","split","auxMonth","find","number","finalDate","setFinalDate","SelectExtended","options","isRequired","setOption","KilContentWrapper","Kilometros","isCommerciales","jumpRange","maxValue","numberOfSteps","millageValue","setMillageValue","formatNumber","rangoKilometros","setRangoKilometros","num","toString","stringRange","lowValue","highValue","trackFormFilterSelect","lowerbound","String","upperbound","values","FormFieldName","kilometros","handleInputChange","event","ariaLabel","LocateWrapper","LocationDisabledWrapper","paddingTopLocation","LocateUserFullScreen","isFiltrosSuggest","onSuggestionSelectedFnAlternative","theme","autoWidth","nextStep","suggestion","setSuggestion","locationSuccess","setLocationSuccess","handleLocate","loading","locationDisabled","isLocating","onSuggestionSelectedFn","formTheme","position","overflow","disabled","noTengoDudasButton","TXT_V_Installation_Data_Name__c","getSuggestionValue","arrCountries","code","regex","errorMessage","ContentWrapper","paginaConfirmacion","MatriculaAndCountriesWrapper","MatriculaWrapper","CoutryWrapper","InputErrorWrapper","AnoMatriculacionWrapper","InputWidthWrapper","noPaddingTop","ConnectedComponent","inputValueAno","setInputValueAno","pristineMatricula","setPristineMatricula","pristineAno","setPristineAno","setInputValueMatricula","errorMatricula","setErrorMatricula","errorAno","setErrorAno","setErrorCountry","country","setCountry","countryObject","setCountryObject","regExpAno","regExCounty","setRegExCounty","countryPlate","matricula","anoMatriculacion","updateFields","validate","input","some","regEx","test","validateMatricula","handleChangeMatricula","handleChangeAno","CarlineSelect","closeLayer","selectedValue","setSelectedValue","InputButton","allowOverflowingContent","b960","b1280","b1920","b2560","dynamic0050","SelectWrapper","SelectOption","option","forwardRef","setSelItem","setShowOptions","keyValuePair","setKeyValuePair","wrapperRef","handleClickOutside","current","contains","setItem","dealerName","children","setFormValue","addEventListener","removeEventListener","setTimeout","trackFormFieldClick","autoFocus","setOptions","response","content","att","indx","attributes","trato","getTreatment","LabelInputWidthWrapper","WhiteLinkWrapper","clearError","checked","setChecked","display","paddingBottom","flexDirection","gap","politicaPrivacidad","maxWidth","Provincia","errorProvincia","setErrorProvincia","dealersInfo","list","setList","provincia","setProvincia","formatProvinciaExtendedList","updateProvinceValues","provinceCode","provinceName","handleUpdateList","provincias","provinciasFormatted","requestProvincias","GeneralInputWidthWrapper","newProvinciaValue","newProvincia","province","hidden","marginTop","getSuggestions","escapedValue","trim","RegExp","filter","car","inherit","fieldsName","suggestions","setSuggestions","suggestRef","inputFocus","setInputFocus","setDisableIntroNextStep","then","modelos","modeloSuggestion","model","goUp","getAndUpdateState","onSuggestionsFetchRequested","inputProps","placeholder","newValue","onBlur","onFocus","isModeloSuggest","onSuggestionsClearRequested","renderSuggestion","onSuggestionSelected","suggestionValue","ModeloInteresWrapper","alternatCTA","ButtonWidth","outputsSeparados","filterVW","isNotAnswered","setIsNotAnswered","buttonEmphasis","setButtonEmphasis","setIsValueSelected","modelosToSet","modelo","brand","handleDispatch","id","lineKeyframe","VerticalLine","ctaWidth","ContactInfoWrapper","GeneralConfirmacionLayerWrapper","formatCEMVenta","carlines","carline","sort","b","localeCompare","sensitivity","findIndex","formatCarlineSelectExtendedList","nuevo","alphabetical","formatSalesgroupsSelectExtendedList","filterCarlineFlag","formularioFlag","formularios","getSalesgroupsFromCarlines","salesGroups","flat","salesgroups","filterPreselectedFaContent","faContentCarlines","carlineCode","faContentSalesgroups","salesgroupCode","salesgroup","salesgroupId","findCarlineFromSalesgroup","thereIsKeyInFaContent","faContent","thereIsCarlinesInFaContent","thereIsSalesgroupsInFaContent","isCarlineMode","isSalesGroupMode","isMixedMode","useCarline","isCEMVenta","errorModelo","setErrorModelo","setModelo","screenIndexRef","dispatchEmptySalesgroup","dispatchSetSalesgroup","dispatchSalesgroup","salesGroupId","salesGroupName","updateCarlineCode","salesgroupName","modeloInList","listValue","changeModeloFields","Number","initializeSelectWithCarline","filteredCarlines","carlinesFromFaContent","carlinesFormatted","newCarlines","newfilteredCarlines","initializeSelectWithSalesgroup","salesgroupsFromFaContent","formatedSalesgroups","initializeSelectWithMixed","result","initializeSelectWithCEMVenta","modeloList","element","newModelo","CenterContent","setHeight","viewportHeight","window","innerHeight","viewportWidth","innerWidth","regularCopyFirst","boldCopyFirst","regularCopySecond","boldCopySecond","CtasWrapper","firstCTA","secondCTA","secondCTACopies","url","copyBook","CTAFields","copyBookSecond","CTAAction","ctaFunction","ctaUrl","width","static0","ctaInfo","ReactReduxContext","createContext","callback","nullListeners","notify","createListenerCollection","batch","last","clear","listener","listeners","subscribe","isSubscribed","prev","Subscription","parentSub","unsubscribe","handleChangeWrapper","_proto","addNestedSub","trySubscribe","notifyNestedSubs","onStateChange","Boolean","tryUnsubscribe","_ref","context","contextValue","subscription","previousState","Context","createElement","Provider","useIsomorphicLayoutEffect","EMPTY_ARRAY","NO_SUBSCRIPTION_ARRAY","storeStateUpdatesReducer","action","updateCount","useIsomorphicLayoutEffectWithArgs","effectFunc","effectArgs","dependencies","apply","captureWrapperProps","lastWrapperProps","lastChildProps","renderIsScheduled","wrapperProps","actualChildProps","childPropsFromStoreUpdate","subscribeUpdates","shouldHandleStateChanges","childPropsSelector","forceComponentUpdateDispatch","didUnsubscribe","lastThrownError","checkForUpdates","newChildProps","latestStoreState","initStateUpdates","connectAdvanced","selectorFactory","_ref2","_ref2$getDisplayName","getDisplayName","_ref2$methodName","methodName","_ref2$renderCountProp","renderCountProp","_ref2$shouldHandleSta","_ref2$storeKey","storeKey","_ref2$forwardRef","withRef","_ref2$context","connectOptions","WrappedComponent","wrappedComponentName","displayName","selectorFactoryOptions","pure","usePureOnlyMemo","ConnectFunction","_useMemo","reactReduxForwardedRef","propsContext","ContextToUse","Consumer","didStoreComeFromProps","createChildSelector","_useMemo2","overriddenContextValue","_useReducer","previousStateUpdateResult","renderedWrappedComponent","Connect","memo","forwarded","is","x","y","shallowEqual","objA","objB","keysA","keys","keysB","wrapMapToPropsConstant","getConstant","constant","constantSelector","dependsOnOwnProps","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","proxy","stateOrDispatch","ownProps","mapDispatchToProps","mapStateToProps","defaultMergeProps","stateProps","dispatchProps","mergeProps","mergedProps","areMergedPropsEqual","hasRunOnce","nextMergedProps","wrapMergePropsFunc","impureFinalPropsSelectorFactory","pureFinalPropsSelectorFactory","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","hasRunAtLeastOnce","handleSubsequentCalls","nextState","nextOwnProps","nextStateProps","statePropsChanged","propsChanged","stateChanged","finalPropsSelectorFactory","initMapStateToProps","initMapDispatchToProps","initMergeProps","arg","factories","Error","strictEqual","createConnect","_temp","_ref$connectHOC","connectHOC","_ref$mapStateToPropsF","mapStateToPropsFactories","_ref$mapDispatchToPro","mapDispatchToPropsFactories","_ref$mergePropsFactor","mergePropsFactories","_ref$selectorFactory","_ref3","_ref3$pure","_ref3$areStatesEqual","_ref3$areOwnPropsEqua","_ref3$areStatePropsEq","_ref3$areMergedPropsE","extraOptions","createStoreHook","useReduxContext","createDispatchHook","useStore","useDispatch","refEquality","createSelectorHook","selector","equalityFn","_useReduxContext","selectedState","contextSub","forceRender","latestSubscriptionCallbackError","latestSelector","latestSelectedState","storeState","stack","newSelectedState","useSelectorWithStoreAndSubscription","newBatch","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread2","arguments","source","forEach","getOwnPropertyDescriptors","_defineProperty","obj","configurable","writable","asyncGeneratorStep","gen","resolve","reject","_next","_throw","info","Promise","_asyncToGenerator","fn","args","styled","css","Breakpoints","Infinity","breakpoints","isBreakpointConfig","prop","every","parseInt","compareBreakpoints","createStylesForBreakpoints","breakpoint","styles","mediaQueryTemplate","join","closeInMap","fullScreen","colorTheme","CloseDiv","text","CloseComponent","formMin","stepsHistory","multiStepScreenIndex","formSubmitted","isFirstScreen","setIsFirstScreen","loaded","isFullScreen","CSSTransition","timeout","in","classNames","getLayers","closeThankYou","AnimatedCheckmark","ContentCotroller","isTrigger","alingItemsCenter","FakePreviousStep","FakeClose","PrevStepWrapper","showPreviousStep","moveForward","distanceToMove","TitleWrapper","distanceToTop","MobileTitleWrapper","FieldsWrapper","opacity","defaultLayout","FullScreen","avoidTrackFormStepLoad","thankYouPage","triggerExitAnimation","showFinalScreen","numberOfScreens","formEnded","deleteCloseAndPrevious","setDistanceToMove","nextScreenIndex","nextMultiStepScreenIndex","showOverflow","setShowBasesLegales","isConfiracionPage","setIsConfirmacionPage","prevStep","showFields","setShowFields","showTitle","setShowTitle","setOpacity","setDistanceToTop","titleRef","contentRef","formClicked","scrollTop","documentElement","titleLength","innerText","matchMedia","matches","extraHeight","offsetTop","getBoundingClientRect","arrDistances","step","isFirstStep","trackFormStepLoad","scrollTo","stopAnimation","setStopAnimation","hideCloseAndPrevious","setHideCloseAndPrevious","alingContentCenter","setAlingContentCenter","PreviousStep","onEntered","onExited","isDealerCalendar","LayerScreen","lastStep","setIsDealerCalendar","NavigationWrapper","isLastScreen","ProgressWrapper","BarWrapper","UpperBar","LowerBar","TextWrapper","DisplayWrapper","BackgroundPositionWrapper","BackgroundColorNotALayer","SVGColorWrapper","isValid","NextButtonWrapper","NextButton","InnerNavigation","setFormClicked","soloProgreso","steps","getValues","setShowPreviousStep","isValueSelected","setIsValid","checkIfValid","valid","checkValidity","currentStep","multiStep","hidePreviousStep","multiSteps","getPercentage","percentage","toFixed","parseFloat","interaction","recipe250","hover","active","Navigation","setIsLastScreen","changeValueForLabel","ctas","field","formatMultipleOptionText","item","selectedInstallation","tipoVisita","selectedMotivo","CTA","motivo","formatedSlot","detallesPrevStep","horarioTranslate","h","dayMoment","selInst","TXT_V_Address__c","userSuggestion","prefix","mes","PreviousStepWrapper","TextPreviousAnswerWrapper","PreviousStepComponent","setTitle","setText","hideText","setHideText","textAppear","setTextAppear","setOutputs","getTitleAndOutputs","stepsToIterate","screenIndexToGet","previousStep","outputsText","updatedOutputsTexts","outputs","output","alternateTitle","outputsIsStars","preSelectedRate","isPrevStep","trueOrFalseQuestion","handleStep","indexInHistory","history","isSeleccionDealer","hasError","errorInfo","console","Component","screenType","ThankYouWrapper","ScreenController","selectedJourney","formType","setTheme","formStarted","setFormStarted","isMap","setIsMap","setSoloProgreso","isConfirmacion","setIsConfirmacion","navPositon","setNavPosition","topNavigation","getAndUpdateStateNavigation","bottomContent","getAndUpdateStateContent","handlePosition","ThankYouComponent","OneElementTemplateFullScreen","rowGap","StyledIcon","ChevronDown","withConfig","componentId","recipe450","isOpen","StyledIconWrapper","textAppearances","lineHeight","StyledAccordion","line","border","secondary","StyledAccordionHead","dynamic0040","focus","foreground","background","hoverIndicatorColor","outlinedElement","StyledAccordionBody","fullWidthBody","StyledHeadWrapper","Accordion","headline","headId","bodyId","tabIndex","ariaHidden","role","isHexColorToRgbaOptions","alphaOrOptions","isValidAlpha","alpha","hexColorToRgba","rgb","startsWith","parts","substr","digit","isNaN","g","r1","r2","g1","g2","b1","b2","getRGBfromHexColor","rgbaFallback","alphaFallback","rgbFallback","animationClassName","StyledLayer","recipe370","createCssBoxShadow","themeShadowColor","shadowColor","duration","animation","timingFunction","AlertLayer","visible","ariaDescribedBy","ariaLabelledBy","scrollElementRef","AspectRatio","StyledWrapper","ratio","calcAspectRatio","AspectRatioContainer","keyframesCollapse","direction","keyframesExpand","keyframesInitializing","StyledOverflowWrapper","StyledTextWrapper","expanded","nba","cubicOut","backgroundColor","transitionState","nextBestAction","transition","StyledDecorativeIconWrapper","StyledInnerIconWrapper","StyledButton","recipe300","show","fullWidth","dynamic0200","filledElement","StyledCloseButton","recipe200","StyledSubNextBestActionButton","static150","endIndex","percents","pixels","collapsible","keyframesSubActionsHide","StyledNextBestActionButtonWrapper","isLink","StyledBadge","recipe750","heavy","StyledBadgeText","NextBestActionButtonInternal","closeButtonAriaLabel","displaySubActions","expandContent","hideIcon","subActions","internalDisplaySubActions","setInternalDisplaySubActions","CloseButtonRef","_a","NBAContent","label0200","exit","additionalProps","handleOnClick","evt","mainNBAB","assign","as","actions","actionItem","actionIndex","renderSubActions","Close","NextBestActionButton","__assign","ArrowLeft","viewBox","xmlns","fill","ArrowRight","__rest","indexOf","propertyIsEnumerable","Arrow","super","rest","iconPosition","StyledScrollWrapper","dynamic0350","global","preventClickCapture","pointerEvents","newTarget","elementFromPoint","clientX","clientY","click","ContentLayer","stopPropagation","StyledContentContainer","disableDefaultPadding","dynamic0300","StyledHeaderContainer","header","static515","navigation","backgroundTransparency","StyledTitleContainer","h3","StyledCloseButtonContainer","ContentLayerV2","onClose","closeButtonLabel","contentHeadline","headline0200","blurredSrc","language","lang","dir","StyledDemoIntegratorRoot","hasBackgroundImage","StyledDemoGrid","DemoIntegratorRoot","showGrid","ko","zh","ja","vi","ar","en","DemoPlaceholderText","ShortDemoPlaceholderText","substring","animationTimeout","animationTimingFunction","StyledDisclaimerLayer","grid020","DisclaimerLayer","StyledDL","dl","StyledDisclaimerFocusWrapper","recipe400","StyledDD","dd","StyledDT","dt","StyledUL","ul","StyledLI","li","getIndexWithPrefix","getMappedDisclaimers","disclaimerArray","reduce","accumulatedDisclaimers","currentDisclaimer","disclaimerWrapperRef","mappedDisclaimers","disclaimers","disclaimerKey","prevProps","setState","disclaimer","reference","hasReferences","key1","element1","key2","element2","domNode","containedRefs","entry","typedWindow","elementRefs","entries","elementKey","elementGroup","elementRef","crossLinkElements","indexOfElement","child","splice","newDomNode","elementReference","ExternalLink","StyledExternalLinkIndicator","StyledFigure","figure","Figure","caption","captionAboveMedia","dynamic0020","StyledContainer","sortedBreakpointsWithConfiguration","maxConfiguredBreakpoint","maxBreakpoint","maxWidthStyles","FixedWidthContainer","breakpointConfig","FocusLayerSize","baseTransform","calcLayerHeight","spacing","static510","FocusLayer","StyledFullscreenLayer","InternalFullscreenLayer","FullscreenLayer","StyledCarousel","section","StyledSlide","StyledSlides","StyledContainedImageWrapper","GallerySlide","ariaLabelledby","GalleryContext","activeIndex","hasNavigation","getSlideId","getTabId","GallerySlideContext","ariaProps","noop","triggerChange","triggerNext","triggerPrevious","slides","isSlidingAutomatically","changeSlide","nextIndex","animate","endlessScrolling","count","shouldOverscroll","effectiveIndex","targetPosition","behavior","slideToNextSlide","slideToPreviousSlide","newIndex","childrenLength","handleScroll","slideContainer","scrollStart","scrollLeft","slideWidth","scrollIndex","Math","round","arrowButtons","onScroll","toArray","Gallery","StyledArrowWrapper","ArrowButtons","buttonNextAriaLabel","buttonPreviousAriaLabel","StyledBullets","VisuallyHidden","StyledBullet","isActive","carouselRefs","focusElement","el","createKeyHandler","createClickHandler","elementId","bulletIndex","createCarouselRef","onKeyDown","NavigationBullets","StyledImages","StyledImage","NavigationImages","createA11yOutlineStyles","recipe100","FOCUS_GROUP","FOCUS_DISABLED","useMergeRefs","refs","defaultValue","initialValue","assignRef","facade","hiddenGuard","propTypes","defaultProps","ItoI","innerCreateMedium","defaults","middleware","buffer","assigned","read","useMedium","data","assignSyncMedium","cb","cbs","assignMedium","pendingQueue","executeQueue","cycle","createMedium","mediumFocus","mediumBlur","mediumEffect","mediumSidecar","medium","async","ssr","createSidecarMedium","emptyArray","FocusLock","parentRef","_extends2","_React$useState","realObserved","setObserved","observed","originalFocusedElement","noFocusGuards","persistentFocus","crossFrame","group","allowTextSelection","whiteList","_props$shards","shards","_props$as","Container","_props$lockProps","lockProps","containerProps","SideCar","sideCar","shouldReturnFocus","returnFocus","onActivationCallback","onActivation","onDeactivationCallback","onDeactivation","activeElement","allowDefer","focusOptions","setObserveNode","newObserved","hasLeadingGuards","hasTailingGuards","mergedRef","reducePropsToState","handleStateChangeOnClient","mountedInstances","emitChange","instance","SideEffect","_PureComponent","peek","componentDidMount","componentDidUpdate","componentWillUnmount","render","ret","asArray","getTopParent","node","parentNode","getAllAffectedNodes","acc","currentNode","getAttribute","nodes","contained","Set","j","compareDocumentPosition","Node","DOCUMENT_POSITION_CONTAINED_BY","add","DOCUMENT_POSITION_CONTAINS","_","has","filterNested","querySelectorAll","focusInsideIframe","topNode","focusInside","dataset","focusGuard","isRadio","tagName","correctNode","findSelectedRadio","pickFirstFocus","pickFocusable","isVisible","nodeType","DOCUMENT_NODE","computedStyle","getComputedStyle","getPropertyValue","DOCUMENT_FRAGMENT_NODE","host","isGuard","isNotAGuard","isDefined","NEW_FOCUS","newFocus","innerNodes","outerNodes","lastNode","cnt","firstFocus","lastFocus","isOnGuard","resultSet","lastIndex","lastNodeInside","indexDiff","firstNodeIndex","lastNodeIndex","correctedNodes","correctedIndexDiff","returnFirstNode","returnLastNode","abs","tabSort","tabDiff","orderByTabIndex","filterNegative","keepGuards","queryTabbables","queryGuardTabbables","getFocusables","parents","withGuards","parent","filterFocusable","notHiddenInput","getTabbableNodes","topNodes","getAllTabbableNodes","parentAutofocusables","parentFocus","getParents","getCommonParent","nodeA","nodeB","parentsA","parentsB","currentParent","getTopCommonParent","baseActiveElement","leftEntry","rightEntries","activeElements","leftEntries","topCommon","subEntry","common","getFocusMerge","commonParent","anyFocusable","innerElements","srcNodes","dstNodes","remap","autoFocusables","orderedInnerElements","Map","entity","set","newId","autoFocusable","allParentAutofocusables","autofocus","guardCount","lockDisabled","focusable","contentWindow","deferAction","setImmediate","lastActiveTrap","lastActiveFocus","lastPortaledElement","focusWasOutsideWindow","defaultWhitelist","autoGuard","startIndex","end","allNodes","lastGuard","guard","focusAutoGuard","lockItem","extractRef","_lastActiveTrap","workingNode","portaledElement","workingArea","focusWhitelisted","blur","newActiveElement","focusedIndex","removeAttribute","onTrap","observerNode","onWindowBlur","moveFocusInside","propsList","_ref5","traps","trap","lastTrap","sameTrap","_ref6","FocusLockCombination","withFocusLock","handleKeyUp","onEscKeyUp","disableReturnFocus","wrappedComponentProps","onKeyUp","InfoboxAppearance","Checkmark","Alert","cx","cy","rx","ry","getBackgroundColor","recipe360","Success","recipe350","getIcon","StyledInfobox","Infobox","ariaLive","shrinkContent","InteractionLayerSize","LayerScrollContainer","windowHeight","UnanimatedInteractionLayer","getWindowHeight","resizeInteractionLayer","InteractionLayer","StyledLayerWrapper","contentCentered","LayerWrapper","appear","MapTopographyStyles","elementType","stylers","visibility","featureType","weight","Menu","MenuButton","deprecated","Logo","static520","hasClaim","grid016","MovingFrame","claim","logo","logoTitle","StyledOverlay","static250","StyledLegend","legend","StyledCountAndIconWrapper","StyledInteractionWrapper","StyledCount","copy0100","StyledMultiSelect","fieldset","handleCheckboxOnMouseDown","handleOverlayOnMouseDown","handleMouseDown","internalValue","firstOption","multiSelect","handleClick","elementWithFocus","querySelector","onOptionClick","optionsElement","elementLabel","defaultChecked","onLabelMouseDown","newInternalValue","optionKey","handleNewValue","onMouseDown","StyledNavigationLevelList","StyledNavigationLevelListItem","StyledText","LinkStyle","StyledLink","StyledSecondLevelList","StyledSecondLevelListInner","NavigationLevelListItem","subItems","firstLevelId","secondLevelId","spaceBetween","verticalAlign","NavigationLevelList","StyledReferenceBadge","label0100","static","label0150","referenceBadge","textColor","outlineColor","ReferenceBadge","ATTRIBUTE_TO_JSX_PROP_MAP","accesskey","allowfullscreen","allowtransparency","autocomplete","autoplay","cellpadding","cellspacing","charset","class","classid","colspan","contenteditable","contextmenu","crossorigin","enctype","for","formaction","formenctype","formmethod","formnovalidate","formtarget","frameborder","hreflang","inputmode","keyparams","keytype","marginheight","marginwidth","maxlength","mediagroup","minlength","novalidate","radiogroup","readonly","rowspan","spellcheck","srcdoc","srclang","srcset","tabindex","usemap","namedCodesToUnicode","amp","apos","gt","lt","nbsp","quot","DO_NOT_PROCESS_HTML_ELEMENTS","ATTR_EXTRACTOR_R","AUTOLINK_MAILTO_CHECK_R","BLOCK_END_R","BLOCKQUOTE_R","BLOCKQUOTE_TRIM_LEFT_MULTILINE_R","BREAK_LINE_R","BREAK_THEMATIC_R","CODE_BLOCK_FENCED_R","CODE_BLOCK_R","CODE_INLINE_R","CONSECUTIVE_NEWLINE_R","CR_NEWLINE_R","FOOTNOTE_R","FOOTNOTE_REFERENCE_R","FORMFEED_R","GFM_TASK_R","HEADING_R","HEADING_SETEXT_R","HTML_BLOCK_ELEMENT_R","HTML_CHAR_CODE_R","HTML_COMMENT_R","HTML_CUSTOM_ATTR_R","HTML_SELF_CLOSING_ELEMENT_R","INTERPOLATION_R","LINK_AUTOLINK_BARE_URL_R","LINK_AUTOLINK_MAILTO_R","LINK_AUTOLINK_R","LIST_ITEM_END_R","LIST_LOOKBEHIND_R","CAPTURE_LETTER_AFTER_HYPHEN","NP_TABLE_R","PARAGRAPH_R","REFERENCE_IMAGE_OR_LINK","REFERENCE_IMAGE_R","REFERENCE_LINK_R","SQUARE_BRACKETS_R","SHOULD_RENDER_AS_BLOCK_R","TAB_R","TABLE_SEPARATOR_R","TABLE_TRIM_PIPES","TABLE_CELL_END_TRIM","TABLE_CENTER_ALIGN","TABLE_LEFT_ALIGN","TABLE_RIGHT_ALIGN","TEXT_BOLD_R","TEXT_EMPHASIZED_R","TEXT_STRIKETHROUGHED_R","TEXT_ESCAPED_R","TEXT_PLAIN_R","TRIM_NEWLINES_AND_TRAILING_WHITESPACE_R","HTML_LEFT_TRIM_AMOUNT_R","UNESCAPE_URL_R","LIST_ITEM_PREFIX_R","LIST_ITEM_R","LIST_R","LINK_R","IMAGE_R","BLOCK_SYNTAXES","slugify","parseTableAlignCapture","parseTableRow","inTable","parseTable","inline","parseTableAlign","parseTableCells","align","cells","getTableStyle","parserFor","parse","order","normalizeWhitespace","inlineRegex","exec","simpleInlineRegex","simple","blockRegex","anyScopeRegex","sanitizeUrl","decodeURIComponent","unescapeUrl","parseInline","parseSimpleInline","parseBlock","parseCaptureInline","captureNothing","renderNothing","shift","getTag","compiler","overrides","forceInline","forceBlock","normalizeAttributeKey","attributeValueToJSXPropValue","cloneElement","blockQuote","react","breakLine","breakThematic","codeBlock","codeFenced","codeInline","footnote","identifier","footnoteReference","gfmTask","completed","readOnly","heading","level","headingSetext","htmlComment","image","alt","src","link","linkAngleBraceStyleDetector","linkBareUrlDetector","linkMailtoDetector","_list","items","ordered","start","newlineCoalescer","paragraph","refImage","refLink","fallbackContent","table","tableSeparator","textBolded","textEmphasized","textEscaped","textStrikethroughed","disableParsingRawHTML","htmlBlock","containsBlockSyntax","attrs","noInnerParse","htmlSelfClosing","reactFor","ruleOutput","Markdown","headline0400","h1","h2","h4","strong","allowedHTMLTags","createTagOverride","component","RichtextLink","createDefaultMdOverrides","ol","isOrdered","Richtext","markdown","dangerouslyParseRawHTML","mdOptions","elementProps","ShimBackgroundType","StyledShimLayer","backgroundType","TRANSPARENT","shim","hideContext","InternalShimLayer","OPAQUE","ShimLayer","overrideHideStyles","StyledSkipWrapper","SkipLink","isLeft","StyledIndicator","static530","StyledInput","StyledLabel","Toggle","setCurrent","isControlled","value1","value2","onRadioChecked","val1Checked","val2Checked","StyledTopBar","hideLogo","StyledLogoLayer","TopBar","LazyPicture","newChildren","isSourceElement","contentEditable","srcSet","isImageComponent","_disableNoScript","isDecorativeImageComponent","MediaContext","SetMediaContext","MediaContextProvider","media","setMedia","VideoControlAreaContext","StyledVideo","video","StyledVideoWrapper","StyledControlArea","Video","videoChildren","others","VideoRef","mediaElement","setMediaElement","ControlAreaRef","controlAreaElement","setControlAreaElement","paused","play","pause","StyledControlContainer","ControlContainer","videoControlAreaElement","isPlaying","setIsPlaying","isPlayed","setIsPlayed","isHovering","setIsHovering","timeoutId","handlePlay","handlePause","handleEnded","handleInteraction","clearTimeout","hideInitially","StyledTimestamp","StyledTimeline","progress","hoverPosition","StyledTimelineWrapper","Timeline","timelineWrapperRef","timeStamp","setTimeStamp","setProgress","setHoverPosition","setActive","handleTimeupdate","currentTime","_b","handleHover","buttons","handleTouchMove","seekable","targetTouches","handleClickStart","load","handleClickEnd","handleKeyDown","multiplier","shiftKey","timeString","roundedTimeStamp","floor","padStart","onMouseMove","onTouchMove","onTouchStart","onTouchEnd","onMouseUp","label100","Pause","Play","StyledPlayButton","PlayButton","pauseTitle","playTitle","StyledPlayButtonCenter","PlayButtonCenter","TimeDisplay","setTimeString","minutes","seconds","label150","ExitFullscreen","EnterFullscreen","StyledFullscreenButton","FullscreenButton","fullscreen","setFullscreen","fullscreenElement","webkitFullscreenElement","handleFullscreenChange","parentElement","exitFullscreen","webkitExitFullscreen","requestFullscreen","webkitEnterFullscreen","closeTitle","openTitle","VolumeMute","VolumeMaximum","VolumeMedium","StyledVolumeSlider","volume","StyledVolumeSliderWrapper","StyledVolumeWrapper","static650","VolumeSlider","muteTitle","unmuteTitle","volumeSliderRef","volumeSliderWrapperRef","setVolume","muted","setMuted","volumeCanBeSet","setVolumeCanBeSet","passive","handleVolumechange","factor","newVolume","handleVolumeCTAClick","volumeSliderWrapper","volumeString","VolumeIcon","COMPONENTS_CORE_VERSION","extendStatics","setPrototypeOf","__proto__","__extends","__","constructor","__values","__read","__spread","appadapAppointmentCreate","MOLECULAR_URL","post","dpsSend","molecularCdn","urlOrigin","urlPath","fetchProvince","token","requestToken","fetchTreatment","getCarlinesCita","groupBrand","getCarlines","dataUrl","getColors","getDealers","dealers","getInstallations","molecularCdnUrl","installations","molecular","getPincode","pincode","pincodeData","pincodeUsed","pincodeError","status","pincodeDecoded","atob","getSalesgroups","getVehiculosModelo","vehiculos","getPriceDataWithMarketingCode","marketingCode","tenantDataVersion","vehicleConfiguration","priceAdapter","googleApiKeyService","customConfig","apiKey","run","currentHub","withScope","scope","captureException","getIndexInSteps","stepName","addRemovedStep","initialSteps","actualSteps","addedStep","removeStep","indexToSplice","removeMultipleSteps","stepNames","indexesToSplice","removeMultipleStepsAndResetScreenIndex","newSteps","resetStepsScreenIndex","getArrayOfStepsNames","firstStep","indexOfFirstStep","indexOfLastStep","TextAppearance","TextTag","TextAlignment","WhiteSpace","headAppearanceList","headline600","headline550","headline500","headline450","headline400","headline350","headline250","headline200","headline0600","headline0550","headline0500","headline0450","createFontStyles","sub","sup","textAppearance","fontFamily","letterSpacing","reducedFontSize","isHeadline","fontWeight","light","regular","marginValue","StyledTextComponent","wordBreak","strikethrough","TextContext","Text","innerContextValue","isNullOrUndefined","isObjectType","isObject","isHTMLElement","ELEMENT_NODE","VALIDATION_MODE","onSubmit","VALUE","UNDEFINED","EVENTS","INPUT_VALIDATION_RULES","REGEX_IS_DEEP_PROP","REGEX_IS_PLAIN_PROP","REGEX_PROP_NAME","REGEX_ESCAPE_CHAR","isKey","stringToPath","string","quote","path","tempPath","objValue","transformToNestObject","previous","isUndefined","val","removeAllEventListeners","validateWithStateUpdate","isRadioInput","isCheckBoxInput","isDetached","HTMLElement","isEmptyObject","castPath","updatePath","baseGet","array","baseSlice","unset","paths","childObject","previousObjRef","k","objectRef","currentPaths","currentPathsLength","baseUnset","isSameRef","fieldValue","defaultReturn","getRadioValue","isFileInput","isMultipleSelect","isEmptyString","defaultResult","validResult","getCheckboxValue","getFieldValue","files","selected","isString","getFieldsValues","search","nest","isSameError","types","objectA","objectB","objectAKeys","objectBKeys","compareObject","isRegex","getValueAndMessage","validationData","isFunction","isBoolean","isMessage","getValidateError","appendErrors","validateAllFieldCriteria","validateField","fieldsRef","minLength","isCheckBox","isRadioOrCheckbox","isEmpty","appendErrorsCurry","getMinMaxMessage","exceedMax","maxLengthMessage","minLengthMessage","maxType","minType","requiredValue","requiredMessage","exceedMin","maxMessage","minValue","minMessage","valueNumber","valueAsNumber","valueDate","valueAsDate","Date","maxLengthValue","minLengthValue","inputLength","patternValue","patternMessage","validateRef","validateError","validationResult","validateFunction","parseErrorSchema","inner","validateWithSchema","validationSchema","validationResolver","abortEarly","isPrimitive","getPath","getInnerPath","pathWithIndex","assignWatchFields","fieldValues","fieldName","watchFields","inputValue","isSingleField","parentPath","getPath$1","skipValidation","isOnChange","isBlurEvent","isOnSubmit","isReValidateOnSubmit","isOnBlur","isReValidateOnBlur","isSubmitted","getFieldArrayParentName","getFieldValueByName","results","getIsFieldsDifferent","referenceArray","differenceArray","isMatch","dataA","dataB","isMatchFieldArrayName","searchName","isNameInFieldArray","names","modeChecker","isRadioOrCheckboxFunction","useForm","reValidateMode","validationContext","defaultValues","submitFocusError","validateCriteriaMode","errorsRef","touchedFieldsRef","fieldArrayDefaultValues","watchFieldsRef","dirtyFieldsRef","fieldsWithValidationRef","validFieldsRef","isValidRef","defaultValuesRef","defaultValuesAtRenderRef","isUnMount","isWatchAllRef","isSubmittedRef","isDirtyRef","submitCountRef","isSubmittingRef","handleChangeRef","resetFieldArrayFunctionRef","validationContextRef","fieldArrayNamesRef","isWindowUndefined","shouldValidateSchemaOrResolver","isWeb","isProxyEnabled","Proxy","readFormStateRef","dirty","dirtyFields","submitCount","touched","isSubmitting","reRender","shouldRenderBaseOnError","shouldRender","shouldReRender","validFields","fieldsWithValidation","isFieldValid","isFormValid","currentFieldError","existFieldError","isManual","shouldRenderBasedOnError","previousError","delete","setFieldValue","rawValue","radioRef","selectRef","checkboxRef","setDirty","isFieldDirty","isFieldArray","previousDirtyFieldsLength","fieldArrayName","isDirtyChanged","setInternalValues","parentFieldName","isValueArray","setInternalValue","executeValidation","skipReRender","executeSchemaOrResolverValidation","previousFormIsValid","all","isFieldWatched","currentError","shouldSkipValidation","shouldUpdateDirty","validateSchemaOrResolver","removeFieldEventListener","forceDelete","mutationWatcher","disconnect","findRemovedFieldAndRemoveListener","removeFieldEventListenerAndRef","setInternalError","registerFieldsRef","validateOptions","warn","fieldRefAndValidationOptions","isEmptyDefaultValue","onDetachCallback","observer","MutationObserver","observe","childList","subtree","onDomRemove","attachEventListeners","persist","fieldErrors","fieldError","focusOnErrorField","formState","commonProps","valueOrShouldValidate","shouldValidate","isArrayValue","isStringFieldName","refOrValidationOptions","validationOptions","unregister","outputValues","control","validateSchemaIsValid","watch","fieldNames","isDefaultValueUndefined","combinedDefaultValues","reset","omitResetState","inputRef","closest","resetFieldArray","resetRefs","FormGlobalContext","useFormContext","FormContext","restMethods","Controller","rules","InnerComponent","onChangeName","onBlurName","valueName","methods","setInputStateValue","valueRef","isCheckboxInput","shouldReValidateOnBlur","rulesRef","onFocusRef","isNotFieldArray","commonTask","getInputValue","registerField","_toConsumableArray","arrayLikeToArray","iter","assertCountGridColumn","getGridColumn","getColumnsWidthForBreakpoint","windowWidth","boundingObject","setBoundingObject","setBottom","setTop","setLeft","setRight","setGoUp","getBoundingObject","useFaContent","useFeatureAppConfig","setY","useGetDealer","setDealerName","selectedDealer","setSelectedDealer","setLoading","location","URLSearchParams","svcLocation","longitude","latitude","points","cluster","concesionId","geometry","coordinates","catch","useGetDealers","kvps","setDealers","handleDealer","requestDealers","useGetInstalaciones","installationsResponse","installationsDomainAtt","inst","installation","newInstallation","Id","FRML_TXT_codVentaProvincia__c","TXT_V_Location__c","TXT_V_Postal_Code__c","TXT_V_Installation_Code__c","MPCK_Instalation_Type__c","TXT_V_KVPS_code__c","TXT_Code_Concession__c","Longitude__c","Latitude__c","requestInstallations","useInitiateMatchTriggers","setSelectedJourney","Form","res","matchMarketingCodeData","argumentatives","useInitiateBonosTriggers","stageCustomConfig","configs","stage","useLoaded","setLoaded","useLocateUser","setIcon","setIsLocating","setLocationDisabled","isGooglePlace","skipSearch","isGeoLocated","handleLocateFilters","suggestionIsInCanaryIslands","useNavigate","navigationService","navigateToCita","navigateTo","useOnScreen","isIntersecting","setIntersecting","IntersectionObserver","isLayerScreen","selectedStep","setShowOverflow","handleShowOverflow","actualStep","useTransformToHtml","getTrackingForm","formResponse","LeadID","leadField","FormFields","formDataBuilder","FormData","append","formatFormData","accum","v","formatFields","formatHeaders","headers","formatFlags","flags","getDpsFields","dpsFields","TIME_FOR_TRANSFORM","TIME_FOR_TRANSFORM_MS","TIME_FOR_OPACITY_MS","TOKEN_LEADS_COMERCIALES","TOKEN_LEADS_TURISMOS","CTAsSiNo","contactoOptionsTurismos","contactoOptionsComerciales","CTAsHorario","CTAsMotivo","detalles","CTAsTipoVisita","CTAsTipoVisitaNo","periodoContactoOptions","CTAsMotivoNoQuiero","CTAsDudas","contactoOptionsSAC","ctaTestDrive","ctaDatosIncorrectos","ctaDatosIncorrectosPosventa","ctaAlternativaTransporte","ctaContactoSatisfaccion","ctaMotivoVisita","ctaEnviarRespuesta","extraInfo","ctaEnvioCEM","CTAsMotivoRenovadorYaTengo","CTAsMotivoRenovadorNoTengo","CTAsMotivoRenovadorNoTengoExclusivo","CTAsUsadoNuevo","CTAsLugarCompra","CTAsNuevoOcasión","CTAsFormasMovilidad","CTAsFormasMovilidadExclusive","CTAsRazones","questionTwoOptions","selectedPoint","hoverPoint","setIsActive","isHover","setIsHover","isCluster","sameClusterId","sameKvps","parent_cluster_id","useAddressPredictions","predictions","setPredictions","getPlacePredictions","componentRestrictions","prediction","description","google","maps","places","AutocompleteService","debouncedGetPlacePredictions","hour","normalizdedDate","utc","to","replacementCarServiceAvailable","assessorCode","BoxCard","isCarousel","isFirstDesktop","greyCard","CTAVerMasHorasWrapper","EllipsisTextWrapper","GreyText","SVGSize","CustomCTA","CustomTerciayCTA","NewDealerCard","isCitaPosventa","carPickupSelected","replacementCarSelected","suggestionIsAddress","dealerCompletAdress","centerToCalculateDistance","handlePointClickAndCarouselMove","handleHoverPoint","userIsGeoLocated","handleClusterClick","setGreyCard","pickupCarServiceAvailabe","onMouseEnter","onMouseLeave","copy100","maxHeight","marginBottom","justifyContent","paddingLeft","WidthWrapper","SeleccionDealerTabs","pointsByDistance","pointsByTime","isTimeSelected","setIsTimeSelected","renderPoints","preSelectedOrderValue","setPreSelectedOrderValue","pointsToList","clusters","setDefaultIndex","MagnifierLabel","CloseButton","SuggestionWrapper","equal","valueOf","DEFAULT_ID","Loader","channel","client","libraries","region","version","mapIds","nonce","retries","CALLBACK","callbacks","isEqual","JSON","stringify","loadPromise","loadCallback","execute","getElementById","createUrl","script","onerror","loadErrorCallback","defer","head","appendChild","remove","possibleAttempts","deleteScript","delay","log","setScript","onerrorEvent","__googleMapsCallback","resetIfRetryingFailed","setCallback","margin","GoogleMapMap","shouldComponentUpdate","React","registerChild","MarkerDispatcher","gmapInstance","_this","getChildren","getMousePosition","mouse_","getUpdateCounter","updateCounter_","dispose","removeAllListeners","EventEmitter","omit","mainStyle","GoogleMapMarkers","_getState","dispatcher","updateCounter","_onChangeHandler","dimensionsCache_","prevChildCount","_onMouseChangeHandler","_onChildClick","onChildClick","hoverChildProps_","hoverKey_","_onChildMouseDown","onChildMouseDown","_onChildMouseEnter","hoverKey","childProps","onChildMouseEnter","_onChildMouseLeave","onChildMouseLeave","_onMouseAllow","allowMouse_","_onMouseChangeHandlerRaf","mp","distances","hoverDistance","getHoverDistance","Children","childIndex","latLng","lat","lng","childKey","dist","distanceToMouse","_getDimensions","on","nextProps","experimental","removeListener","mainElementStyle","markers","$geoService","_this2","geoService","$onMouseAllow","$prerender","prerender","pt","insideMapPanes","fromLatLngToDivPixel","fromLatLngToCenterPixel","stylePtPos","seLatLng","seLat","seLng","sePt","containerPt","fromLatLngToContainerPixel","$markerHolderClassName","$hover","$getDimensions","$dimensionKey","PropTypes","any","func","bool","loader_","loadPromise_","resolveCustomPromise_","_customPromise","bootstrapURLKeys","heatmapLibrary","restKeys","LatLng","convert","Transform","tileSize","minZoom","maxZoom","_minZoom","_maxZoom","latRange","zoom","angle","zoomScale","pow","scaleZoom","scale","LN2","project","latlng","worldSize","Point","lngX","latY","unproject","yLat","xLng","lon","PI","tan","atan","exp","locationPoint","centerPoint","_sub","_rotate","pointLocation","p2","bearing","_zoom","zoomV","tileZoom","zoomFraction","Geo","hasSize_","hasView_","transform_","setView","setViewSize","setMapCanvasProjection","mapCanvasProjection","maps_","mapCanvasProjection_","canProject","hasSize","ptLatLng","fromContainerPixelToLatLng","ptXY","ptxy","ptRes","getWidth","getHeight","getZoom","getCenter","getBounds","margins","roundFactor","bndT","bndR","bndB","bndL","topLeftCorner","bottomRightCorner","raf","requestAnimationFrame","nativeRaf","webkitRequestAnimationFrame","mozRequestAnimationFrame","log2","pick","objectToString","isNumber","detectBrowserResult_","detectBrowser","navigator","isExplorer","userAgent","isFirefox","isOpera","isChrome","isSafari","fnToString","Function","isPlainObject","proto","getPrototypeOf","addPassiveEventListener","eventName","capture","passiveSupported","_window","canUseDOM","cancel","attachEvent","stylesCreated","requestFrame","cancelFrame","cancelAnimationFrame","mozCancelAnimationFrame","webkitCancelAnimationFrame","resetTriggers","triggers","__resizeTriggers__","expand","firstElementChild","contract","lastElementChild","expandChild","scrollWidth","scrollHeight","offsetWidth","offsetHeight","scrollListener","__resizeRAF__","__resizeLast__","__resizeListeners__","keyframeprefix","animationstartevent","domPrefixes","startEvents","elm","animationName","animationstring","animationKeyframes","animationStyle","IS_REACT_16","ReactDOM","createPortal","unstable_renderSubtreeIntoContainer","latLng2Obj","_checkMinZoom","GoogleMap","_getMinZoom","geoService_","tilesPerWidth","ceil","tilesPerHeight","maxTilesPerDim","_computeMinZoom","_mapDomResizeCallback","resetSizeOnIdle_","originalCenter","defaultCenter","currentCenter","map_","setCenter","resetBoundsOnResize","_setLayers","layerTypes","layerType","layers_","setMap","_renderPortal","_getHoverDistance","markersDispatcher_","_initMap","initialized_","propsCenter","defaultZoom","_onBoundsChanged","googleMapLoader","mounted_","centerLatLng","propsOptions","heatmap","positions","visualization","HeatmapLayer","mapPlainObjects","draggableOptions","draggable","minZoom_","preMapOptions","overviewMapControl","streetViewControl","rotateControl","mapTypeControl","defaultDraggableOption_","mapOptions","findDOMNode","googleMapDom_","versionMatch","mapsVersion","this_","overlay","OverlayView","onAdd","K_MAX_WIDTH","screen","K_MAX_HEIGHT","overlayViewDivStyle","getPanes","overlayMouseTarget","getProjection","onRemove","renderedOverlay","unmountComponentAtNode","draw","debounced","googleApiLoadedCalled_","_onGoogleApiLoaded","_onChildMouseMove","emit","fireMouseEventOnIdle_","overlay_","onTilesLoaded","addListener","_onTilesLoaded","zoomAnimationInProgress_","_onZoomAnimationStart","getTime","zoomControlClickTime_","_setViewSize","currMinZoom","_onZoomAnimationEnd","dragTime_","mouseInMap_","_onDrag","idleListener","_onDragEnd","_onMapTypeIdChange","getMapTypeId","onGoogleApiLoaded","onDrag","onDragEnd","onMapTypeIdChange","onZoomAnimationStart","onZoomAnimationEnd","childMouseDownArgs_","_onChildMouseUp","onChildMouseUp","childMouseUpTime_","onChildMouseMove","webkitIsFullScreen","mozFullScreen","msFullscreenElement","mapDom","clientWidth","clientHeight","_onWindowResize","_onMapMouseMove","currTime","mouseMoveTime_","boundingRect_","mousePosX","mousePosY","_onClick","_onMapClick","_onMapMouseDownNative","_onMapMouseDown","_onMapMouseDownCapture","_onKeyDownCapture","_isCenterDefined","callExtBoundsChange","gmC","onBoundsChange","bounds","arrayA","arrayB","eps","prevBounds_","marginBounds","centerIsObject_","nw","se","sw","ne","_registerChild","tempParentDiv","styleSheet","cssText","createTextNode","innerHTML","_this3","prevCenter","panTo","setZoom","layerKey","setData","detachEvent","removeChild","shouldUnregisterMapOnUnmount","scrollwheel","clearInstanceListeners","mapMarkerPrerender","GoogleMapMarkersPrerender","onMouseDownCapture","oneOfType","shape","yesIWantToUseGoogleMapApiInternals","arrayOf","mousePos","sqrt","beatKeyframe","onTop","Img","img","markerDimensions","CenterMarker","ClusterMarker","pointCount","mouseEntered","setMouseEntered","Dot","isDealerGrey","pickupSelectedAndDealerHasIt","replacementCarSelectedAndDealerHasIt","isDealerActive","isDealerFavourite","favouriteDealer","isDealerHovered","DealerMarker","isGrey","isFavouriteDealer","RecalcularWrapper","isPosventa","GoogleMaps","MapHeigthWrapper","isWidget","NewMap","centerRef","handleApiLoaded","geoLocatedCenterRef","getNewClusters","mapMaxZoom","searchMoreDealers","handleMapMovement","setSearchIsDealer","mapHasMoved","dealersOrInstallationsMode","searchIsDealer","setTranslateCarousel","gelocalizationActive","setGelocalizationActive","mapStyles","clickableIcons","fullscreenControl","point_count","ControllerBackground","ControllersWrapper","ZoomWrapper","handleChangeInMapZoom","centerInGeoLocatedCenter","centerMap","CSSDiv","BackgroundCard","handleSelectedPoint","sliderRef","childrenRef","firstPoint","handleCarouselMovement","handleSelectedCard","slickGoTo","settings","infinite","centerMode","centerPadding","slidesToShow","swipe","speed","arrows","beforeChange","FiltrosWrapper","onlySuggest","ActionButtonsWrapper","onMapLoad","closeFiltros","showFiltros","setShowFiltros","concesionario","citaPosventa","aplicarDisabled","setAplicarDisabled","tabsOrder","setTabsOrder","setCurrentHorario","selectedSuggestion","setSelectedSuggestion","filtrosRef","userSuggest","moreDealersSearched","setMoreDealersSearched","validateSubmission","handleFiltrosSubmit","selectedSuggestionFromClick","checkGeocode","Suggest","inputPlaceholder","setInputPlaceHolder","dealerSuggestions","placeHolder","setPlaceHolder","predictionsFormatted","MapAndTabsWrapper","showFilters","FilterButton","FiltrosWrapperLayer","ListWrapper","SmallerSVG","FilterMobileNavbar","CTAsNavigationWrapper","services","VerMasYCarouselPosition","SoloCardWrapper","CTASwrapper","VerMasTalleresCTA","CloseButtonWrapper","isTabsClose","isFiltrosClose","MoblieListWrapper","renderCalendar","showCalendar","paddingBottomList","preselectedDealerForm","setPreselectedDealerForm","sustitucionRef","recogidaRef","handleShowFiltros","setCarPickupSelected","setReplacementCarSelected","handleClickReplacementCar","handleClickCarPickup","listIcon","paddingTopList","showTalleres","setShowTalleres","showMap","setShowMap","translateCarousel","setTranselateCarousel","sustitucionMapRef","recogidaMapRef","handleShowTalleres","marginRight","minHeight","u","f","weekdays","months","$","z","utcOffset","date","clone","M","w","D","ms","Q","S","$L","$u","$x","$offset","$d","NaN","UTC","init","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isSame","startOf","endOf","isAfter","isBefore","$g","unix","toDate","$locale","weekStart","$set","daysInMonth","meridiem","YY","YYYY","MM","MMM","monthsShort","MMMM","DD","weekdaysMin","ddd","weekdaysShort","dddd","H","HH","hh","mm","ss","SSS","Z","getTimezoneOffset","diff","toJSON","toISOString","toUTCString","extend","$i","isDayjs","Ls","createTrackingLink","createPartner","dealerData","dealerToUse","informationBnr","informationDepartment","informationZIP","informationName","createPartnerWithSearch","basePartner","SearchType","suggestionIsDealer","SearchSearchTerm","SearchNumberOfResults","createTrackingProcess","processInfo","StepName","getStepName","StepNumber","getStepNumber","getFormAppointments","Appointments","NumberOfAppointments","getMarketingConsent","lssi","tmk","MarketingConsent","comunicaciones","perfilado","getBaseEventInfo","pageCategory","sectionName","templateType","getCompleteConfigurationFromVicci","vicciData","consolidatedData","featuresData","vehicleCatalogue","features","COD_VEH_WHEELS","DESC_VEH_WHEELS","ModelId","modelKey","ModelModelVersion","modelVersion","ModelName","modelName","ModelYear","modelYear","ExteriorColorCode","exterior","ExteriorColorName","InteriorColorCode","interior","InteriorColorName","WheelsBasicId","WheelsBasicName","getCarlineConfiguration","selectedCarline","oferta","salesGroup","marketingCodeResponse","CarlineId","carlineKey","CarlineName","carlineName","SalesgroupId","salesgroupKey","SalesgroupName","EquipmentlineName","modelFilters","getCarlineConfigurationFromVicci","getCarlineConfigurationFromMkc","configuration","carlineTitle","getDataFromMarketingCode","marketingCodeData","getParamsForm","tc","persCmp","today","toLocaleString","referalUrl","referrer","origin","pathname","device","form","ErrorMessage","OneFormContext","useOneFormContext","useContext","OneFormProvider","sendFormCallback","nextStepCallback","waitForPreviousStep","setWaitForPreviousStep","nextMultiStep","setNextMultiStep","setIsFullScreen","previousMultiStep","setPreviousMultiStep","setNextScreenIndex","setNextMultiStepScreenIndex","setMoveForward","debug","setDebug","disableIntroNextStep","closed","setClosed","nextStepEventEmitter","OneForm","toggleDebugMode","handleMapFullScreenLayer","isNext","isLastStep","waitForNextStep","errorFields","trackFormErrorMessageLoad","nextStepNumber","handleStepChange","indexActualScreen","newScreenIndex","indexInSteps","isMovingForward","handleScreenChange","newNumber","sendForm","responseIsValid","initializeForm","initialFormInfo","initialFormData","skipLayerInit","trackFormLayerLoad","keyCode","getDeviceType","getTrackingCode","defaultTrackingEvent","personalization","useTrackingManager","tracking","useMemo","track","trackingIsDisabled","eventInfo","FormType","FormName","PrefContactChannels","FormVersion","NewsletterType","Questionnaire","PriceType","PriceTypeParameter","partner","ownership","environment","featureAppIdAppVersion","emptyConfigStep","PriceTotalTotal","WheelsAdditionalExternalRollingNoise","process","Name","baseEventInfoForLoad","emptyConfigLoad","contentLabels","user","trackButtonClick","questionnaire","QuestionAnswerSet","SC","ResultsRecommendationPosition","ResultsRecommendationFirst","ResultsRecommendationSecond","trackFormSubmissionSuccessMessageLoad","ErrorFormFields","SourceID","OpportunityUID","CycleID","trackFormLoad","trackFormLoadRace","FieldNameandID","ErrorAdressValidationFields","referringUrl","baseEventInfoCloseClick","DesignTokenSizeEnum","DesignTokenFontSizes","ChevronUp","AllWrapper","TopInfoBox","boxItem","showOperacionesMantenimiento","showEdit","MotivoCalculadora","isCalculadoraForm","userIsAuthenticated","tmkData","lssiData","userVehicles","kilometrosValues","millageValues","fechaHora","setFechaHora","cocheAlTaller","setCocheAlTaller","cocheSustitucion","setCocheSustitucion","showEditServicios","setShowEditServicios","showEditSobreVW","setShowEditSobreVW","showEditSobreTi","setShowEditSobreTi","inputValueMatricula","setIrConOtroCoche","setLssiError","setTmkError","useLoggedJourney","plateDate","layerName","renderAreYouSureLayer","onClickProp","stepNumber","showLegales","indexOfMillage","getKmInitialValue","setKilometros","updateValues","fromFormatted","selectedSlot","showCTAEditVW","newMillVal","newValues","updateKilometros","surname","secondSurname","cellphone","email","paddingRight","OperacionDiv","isLast","OperacionesDiv","setShowOperacionesMantenimiento","formatPvp","pvp","quotePvp","motivoLabel","quoteOperations","operation","LoadingLayer","LoadingComponent","LocateUser","CitaPosventaSteps","spliceSteps","getFormName","isCitaPosventaDealer","isCitaPosventaEmbeddedCalculadora","isCitaPosventaEmbeddedBonos","isCitaPosventaEmbeddedBeneficios","updatedFormData","setSteps","setFirstStep","setStepsHistory","waid","CitaPosventaData","DESC_BRAND","DESC_CAMPAIGNBLOCK","DESC_FORMOBJECTIVE","DESC_ID_CAMPAIGN","DESC_TOKEN","DESC_VN_VO","DESC_GDPR_ADAPTED","citaPosventaData","setCitaPosventaData","ctaMotivo","formSteps","masInformacionIndex","defaultSteps","Motivo","getMotivoTitle","MasInformacion","Mapa","MapaCita","NombreApellido","Matricula","Telefono","Email","CocheSustitucion","CocheAlTaller","Confirmacion","getLssiTmk","getModelo","citaCarlines","group_brand","cod_instalacion","codInstalacion","appointment","comments","masInformacion","customer","contactPhone","customerType","documentNumber","documentType","gender","owner","surname2","vehicle","vehicleForCalculadora","frame","millage","plate","tmaimg","appointmentDealer","intervention","lopd","pickupServiceRequired","replacementCarServiceRequired","survey","deviceType","formId","formVersion","deepLink","budget","customFormData","contentNDPS","repeatKvpsRequest","newSelectedDealer","getFirstStepAndStepsHistory","observaciones","stepsWithoutMap","finalSteps","urlParams","CTAmotivo","getFinalSteps","defaultFirstStep","motivoData","masInformacionData","handleStepsOfCitaDealer","getSteps","Fields","handleGuardar","setCopyBook","formattedSlot","dmsFailed","NuevaCitaPosventaFormDefault","CitaPosventaInfo","thankYouComponent","NuevaCitaPosventaFormLogged","person","getLoggedSteps","vehicleDataSteps","mainVehicle","isMainVehicle","userHasVehicleData","personalDataSteps","userHasPersonalData","userHasFavouriteDealer","ReservaCitaLayer","ReservaCita","handleDmsMapExit","handleNoDmsMapExit","getAvailability","assessorName","setAssessorName","DMSError","setDMSError","slotNotAvailable","setSlotNotAvailable","slotHorarioRef","checkSlot","getAssessorName","assessors","findAssessor","time","earliestSlot","handleCitaNoDisponible","availability","calendar","checkCita","selectedDay","continueWithoutDms","oneCard","MIN_LENGTH_FOR_NSN","MAX_LENGTH_FOR_NSN","MAX_LENGTH_COUNTRY_CODE","VALID_DIGITS","VALID_PUNCTUATION","PLUS_CHARS","InputAppearance","getMainColor","ReadOnly","Disabled","recipe500","getLabelColor","getAuxillaryColor","getAuxillaryTextColor","getNotificationColor","createPincodeEntity","dpsData","stringToFind","pincodeResponse","atts","pa","pb","na","nb","DEFAULT_EXT_PREFIX","CALLING_CODE_REG_EXP","Metadata","metadata","is_object","countries","type_of","validateMetadata","setVersion","countryCode","v1","v2","v3","nonGeographic","nonGeographical","getCountryMetadata","callingCode","getCountryCodesForCallingCode","countryCodes","countryCallingCodes","selectNumberingPlan","hasCountry","numberingPlan","NumberingPlan","hasCallingCode","getNumberingPlanMetadata","getCountryCodeForCallingCode","IDDPrefix","defaultIDDPrefix","nationalNumberPattern","possibleLengths","formats","nationalPrefixForParsing","nationalPrefixTransformRule","leadingDigits","hasTypes","ext","country_phone_code_to_countries","country_calling_codes","globalMetadataObject","_getFormats","getDefaultCountryMetadataForRegion","Format","_getNationalPrefixFormattingRule","_nationalPrefixForParsing","nationalPrefix","_getNationalPrefixIsOptionalWhenFormatting","getType","Type","_format","nationalPrefixFormattingRule","nationalPrefixIsOptionalWhenFormattingInNationalFormat","usesNationalPrefix","FIRST_GROUP_ONLY_PREFIX_PATTERN","getCountryCallingCode","countryCallingCode","isSupportedCountry","v4","compare","AvailabilityErrorLayer","AvailabilityError","copys","pregunta","closeOneForm","layerInfo","setLayerInfo","GenericErrorLayer","bodycopy","ctaLayer","notShowCTA","ctaType","urlHref","ctaTextAlign","secondCta","formHeight","setFormHeight","contentHeight","emptyPersonalization","placeholderId","activityId","personalizable","activityName","experienceId","experienceName","offerId","offerName","emptyPriceConfiguration","PriceRateCurrency","PriceRateBasic","PriceRateAdditional","PriceRateTotal","PriceRateType","PriceTotalCurrency","PriceTotalBasic","PriceTotalAdditional","emptyCarlineConfig","emptyLatLongZip","locationLatitude","locationLongitude","locationZIP","emptyConfig","emptyOwnership","emptyConfigurationFromVicci","CarlineIsRecommendation","SalesgroupIsRecommendation","BodyTypeName","ModelTrimFeatures","ModelIsRecommendation","ModelDriveType","ModelGearType","EnginePowerHPKW","EngineFuelTypePrimary","EngineFuelTypeNonPrimary","ConsumptionCombinedPrimary","ConsumptionCombinedNonPrimary","EmissionConsumptionEfficiencyClass","EmissionConsumptionTestingMethod","ExteriorColorIsRecommendation","InteriorColorIsRecommendation","WheelsBasicIsRecommendation","PriceCurrency","PriceBasis","PriceExterior","PriceOptions","PriceTotalConfiguration","PriceCampaignID","PriceCampaignDescription","PriceCampaignValue","PriceCustomerType","OptionsNumber","OptionsList","colorStyle","textRecipe","backgroundRecipe","borderRecipe","focusStyle","focusStyleBoxShadow","StyledLinkIcon","StyledButtonIcon","StyledLinkText","StyledButtonWrapper","templateColumns","StyledLinkWrapper","createStretchContentForBreakpoints","circular","CTALink","hasChildren","CTAButton","BajaComunicacionesTrigger","BajaComunicaciones","CallMeOfertasTrigger","CallMeEmbeddedTrigger","featureApp","setDealerInfo","dealerDmsInfo","setDealerDmsInfo","pointsLodaded","setPointsLoaded","renderErrorScreen","initializeState","dynamic0250","NuevaCitaPosventa","phone","mail","skipMapMovementOnClick","alignItems","RaceDiv","RaceTrigger","Box","ImageWrapper","ImageAndContentWrapper","raceCellphone","isSent","isSending","isPristine","disabledButton","setIsPristine","successful","retry","containerRef","copyWidth","setCopyWidth","firstView","handleErrorLayer","2560","560","setSelectedFocusJourney","setCTALabel","selectedFocusJourney","ctaDisabled","setCtaDisabled","Phone","TitleDiv","TitleInside","LegalWrapper","CenterCTA","CitaPosventaDefaultTrigger","getTitle","getBodyCopy","getCtaLabel","getCtaRegister","dynamic0150","race","CitaPosventaEmbeddedTrigger","MediaWrapper","scrollY","ContentStage","ContainerNew","getIntro","setScrollY","prevPos","currPos","stageCitaImgSrc","gridArea","copy0250","CitaPosventaTrigger","userInteractionService","authService","intro","textAlignment","nowrap","login","modo","userInteraction","isCitaPosventaStageOrDefault","EmpresasTrigger","CEMOneShopSteps","CEMOneShopForm","idLead","idPerson","handleError","presubmit","loadingPresubmit","setLoadingPresubmit","stepsWithModel","textUnderStars","starsText","Atencion","Planificacion","Organizacion","ExplicacionConfiguracion","ExplicacionPersonalizacion","VehiculoProbado","CEMOneShopData","sendPresubmit","generateData","params","ID_Person_DIM_IMP__c","FirstName","LastName","TXT_2_Surname__c","TXT_Email__c","NUM_Phone_mobile__c","LSSI__c","rating","generatePresubmitData","isPresubmit","dataStringified","dataParsed","getLastItemOfSteps","setLastStep","removeModelFromSteps","updatedSteps","indexOfModelo","updatedStepsWithIndex","requestCarlines","checkIdLeadHasCarline","useInitializeLEMForm","CEMOneShopInfo","propertyHasValue","NUM_COD_INTEREST_CARLINE__c","DESC_Model__c","CEMOneShopController","usado","setUsado","showPantallaModelo","setShowPantallaModelo","dpsDataRef","idLeadRef","idPersonRef","oneFormService","handleComplete","getDpsData","noPincodeFound","getLoadedState","complete","customDealer","TXT_DESC_DEALER_CODE__c","DESC_Dealer_Code__c","TXT_Postal_Code__c","GeneralconfirmacionWrapper","tkm","EncuestasTrigger","renderTrigger","encuesta","leadBonoPartialData","formFields","LeadBonoTrigger","leadMatchPartialData","LeadMatchTrigger","isOfertasOrMatch","LeadOfertasTrigger","LeadStockTrigger","StockForm","LeadEmbededTrigger","centerGradient","thereIsOnlyOneForm","forms","LeadTrigger","firstCta","setFirstCta","setSecondCta","thirdCta","setThirdCta","fourthCta","setFourthCta","fiveCta","setFiveCta","openTestDriveLayer","handleLayerOpen","openPresupuestoLayer","openMasInformacionLayer","openCitaVentaLayer","openStockLayer","journey","handleFaContent","strechContent","renderOrder","renderPideCitaCta","renderMasInformacionCta","renderTestDriveCta","renderPidePresupuestoCta","renderStockCta","MGMTrigger","MGM","NewsletterTrigger","NewsletterForm","BackgroundOneForm","OneFormTrigger","genericError","oneFormLayer","oneFormLayerFocus","genericErrorLayer","selectedJourneyElement","setSelectedJourneyElement","skipTrackButtonClick","setSkipTrackButtonClick","triggerLoaded","isDevStage","handleOneFormLayer","handleOneFormFocusLayer","handleGenericErrorLayer","word","getConfigFormattedName","renderOneForm","Screen","renderOneFormFocus","renderGenericErrorLayer","openInteractionLayer","ProspectEmbeddedTrigger","ProspectPosventaEmbedded","ProspectPosventaCalculadora","renderForm","mileage","familyDesc","operations","ProspectsTrigger","ProspectsVentaForm","SACTrigger","triggerCase","SAC","SACOneShop","CTAMapa","handleSearchArea","handleSearchAgain","CTAServices","DealerCardWidget","isInverted","superClusterRef","cardsDistanceRef","resetMap","calculadoraFeatureService","setPointsToList","setInstallation","CTAServicesProps","CTAMapaProps","searchDisabled","setSearchDisabled","WrapperCTAMapa","WidgetMapa","renderLoadingLayer","closeLoadingLayer","getCalculatorData","openLoadingLayer","WidgetTrigger","widget","DiaDeLaMadreTrigger","EurocopaTrigger","Eurocopa","FidelizacionTrigger","Fidelizacion","GlobalStyle","EventDispatcher","EPSILON","isInteger","isFinite","sign","nextKey","_listeners","hasEventListener","listenerArray","dispatchEvent","quaternion","_vector","_canvas","AddEquation","RepeatWrapping","ClampToEdgeWrapping","MirroredRepeatWrapping","NearestFilter","NearestMipmapNearestFilter","NearestMipmapLinearFilter","LinearFilter","LinearMipmapLinearFilter","UnsignedByteType","UnsignedShortType","FloatType","HalfFloatType","UnsignedInt248Type","RGBFormat","RGBAFormat","DepthFormat","DepthStencilFormat","InterpolateDiscrete","InterpolateLinear","InterpolateSmooth","ZeroCurvatureEnding","ZeroSlopeEnding","WrapAroundEnding","LinearEncoding","KeepStencilOp","_Math","DEG2RAD","RAD2DEG","generateUUID","lut","d0","random","d1","d2","d3","clamp","euclideanModulo","mapLinear","a1","a2","lerp","smoothstep","smootherstep","randInt","low","high","randFloat","randFloatSpread","range","degToRad","degrees","radToDeg","radians","isPowerOfTwo","ceilPowerOfTwo","floorPowerOfTwo","Vector2","Quaternion","_x","_y","_z","_w","Vector3","Matrix3","elements","isVector2","setScalar","scalar","setX","setComponent","getComponent","addVectors","addScalar","addScaledVector","subVectors","subScalar","multiply","multiplyScalar","divide","divideScalar","applyMatrix3","clampScalar","minVal","maxVal","clampLength","roundToZero","negate","dot","cross","lengthSq","manhattanLength","normalize","atan2","distanceTo","distanceToSquared","dx","dy","manhattanDistanceTo","setLength","lerpVectors","equals","fromArray","offset","fromBufferAttribute","attribute","getX","getY","rotateAround","cos","sin","slerp","qa","qb","qm","slerpFlat","dst","dstOffset","src0","srcOffset0","src1","srcOffset1","x0","y0","z0","w0","x1","y1","z1","w1","sqrSin","len","tDir","_onChangeCallback","isQuaternion","setFromEuler","euler","update","isEuler","c1","c2","c3","s1","s2","s3","setFromAxisAngle","axis","halfAngle","setFromRotationMatrix","te","m11","m12","m13","m21","m22","m23","m31","m32","m33","trace","setFromUnitVectors","vFrom","vTo","angleTo","q","acos","rotateTowards","inverse","conjugate","multiplyQuaternions","premultiply","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","ratioA","ratioB","_onChange","isVector3","setZ","multiplyVectors","applyEuler","applyQuaternion","applyAxisAngle","applyMatrix4","qx","qy","qz","qw","ix","iy","iz","iw","camera","matrixWorldInverse","projectionMatrix","projectionMatrixInverse","matrixWorld","transformDirection","crossVectors","ax","ay","az","bx","by","bz","projectOnVector","vector","projectOnPlane","planeNormal","reflect","normal","theta","dz","setFromSpherical","setFromSphericalCoords","radius","phi","sinPhiRadius","setFromCylindrical","setFromCylindricalCoords","setFromMatrixPosition","setFromMatrixScale","sx","setFromMatrixColumn","sy","sz","getZ","isMatrix3","n11","n12","n13","n21","n22","n23","n31","n32","n33","identity","me","setFromMatrix4","applyToBufferAttribute","setXYZ","multiplyMatrices","ae","be","a11","a12","a13","a21","a22","a23","a31","a32","a33","b11","b12","b13","b21","b22","b23","b31","b32","b33","determinant","getInverse","matrix","throwOnDegenerate","isMatrix4","t11","t12","t13","det","msg","detInv","transpose","tmp","getNormalMatrix","matrix4","transposeIntoArray","setUvTransform","tx","ty","rotation","rotate","translate","zero","one","_matrix","_quaternion","ImageUtils","getDataURL","canvas","HTMLCanvasElement","createElementNS","getContext","ImageData","putImageData","drawImage","toDataURL","textureId","Texture","mapping","wrapS","wrapT","magFilter","minFilter","anisotropy","encoding","uuid","DEFAULT_IMAGE","mipmaps","DEFAULT_MAPPING","repeat","matrixAutoUpdate","generateMipmaps","premultiplyAlpha","flipY","unpackAlignment","onUpdate","Vector4","WebGLRenderTarget","scissor","scissorTest","viewport","texture","depthBuffer","stencilBuffer","depthTexture","WebGLMultisampleRenderTarget","samples","Matrix4","Euler","_order","DefaultOrder","Layers","mask","isTexture","updateMatrix","meta","isRootObject","textures","generator","images","transformUv","uv","isVector4","setW","setAxisAngleFromQuaternion","setAxisAngleFromRotationMatrix","epsilon","epsilon2","xx","yy","zz","xy","xz","yz","getW","isWebGLRenderTarget","setSize","isWebGLMultisampleRenderTarget","n14","n24","n34","n41","n42","n43","n44","copyPosition","extractBasis","xAxis","yAxis","zAxis","makeBasis","extractRotation","scaleX","scaleY","scaleZ","makeRotationFromEuler","af","bf","ce","cf","de","df","ac","ad","bc","bd","makeRotationFromQuaternion","compose","lookAt","eye","up","a14","a24","a34","a41","a42","a43","a44","b14","b24","b34","b41","b42","b43","b44","setPosition","t14","getMaxScaleOnAxis","scaleXSq","scaleYSq","scaleZSq","makeTranslation","makeRotationX","makeRotationY","makeRotationZ","makeRotationAxis","makeScale","makeShear","x2","y2","z2","wx","wy","wz","decompose","invSX","invSY","invSZ","makePerspective","near","far","makeOrthographic","RotationOrders","asin","setFromQuaternion","setFromVector3","reorder","newOrder","toVector3","optionalResult","enable","toggle","disable","layers","m1","q1","closestPoint","_box","segCenter","segDir","barycoord","v0","vab","vac","vbc","vap","vbp","vcp","object3DId","Object3D","DefaultUp","modelViewMatrix","normalMatrix","DefaultMatrixAutoUpdate","matrixWorldNeedsUpdate","castShadow","receiveShadow","frustumCulled","userData","Scene","fog","overrideMaterial","autoUpdate","__THREE_DEVTOOLS__","CustomEvent","detail","Box3","Sphere","Ray","Triangle","isObject3D","onBeforeRender","onAfterRender","applyMatrix","setRotationFromAxisAngle","setRotationFromEuler","setRotationFromMatrix","setRotationFromQuaternion","rotateOnAxis","rotateOnWorldAxis","rotateX","rotateY","rotateZ","translateOnAxis","distance","translateX","translateZ","localToWorld","worldToLocal","updateWorldMatrix","isCamera","isLight","attach","getObjectById","getObjectByProperty","getObjectByName","getWorldPosition","updateMatrixWorld","getWorldQuaternion","getWorldScale","getWorldDirection","raycast","traverse","traverseVisible","traverseAncestors","force","updateParents","updateChildren","geometries","materials","shapes","serialize","library","isMesh","drawMode","isLine","isPoints","parameters","material","uuids","extractFromCache","cache","recursive","isScene","isBox3","setFromArray","minX","minY","minZ","maxX","maxY","maxZ","setFromBufferAttribute","setFromPoints","makeEmpty","il","expandByPoint","setFromCenterAndSize","halfSize","setFromObject","expandByObject","box","getSize","expandByVector","expandByScalar","isGeometry","vertices","isBufferGeometry","containsPoint","containsBox","getParameter","intersectsBox","intersectsSphere","sphere","clampPoint","intersectsPlane","plane","intersectsTriangle","f0","f1","f2","testAxis","extents","triangleNormal","satForAxes","axes","p0","p1","triangle","distanceToPoint","getBoundingSphere","intersect","union","optionalCenter","maxRadiusSq","empty","radiusSum","deltaLengthSq","getBoundingBox","ray","at","recast","closestPointToPoint","directionDistance","distanceSqToPoint","distanceSqToSegment","optionalPointOnRay","optionalPointOnSegment","s0","sqrDist","extDet","segExtent","a01","b0","invDet","intersectSphere","tca","radius2","thc","t0","t1","distanceToPlane","denominator","intersectPlane","distToPoint","intersectBox","tmin","tmax","tymin","tymax","tzmin","tzmax","invdirx","invdiry","invdirz","intersectTriangle","edge1","edge2","backfaceCulling","DdN","DdQxE2","DdE1xQ","QdN","getNormal","targetLengthSq","getBarycoord","dot00","dot01","dot02","dot11","dot12","denom","invDenom","getUV","p3","uv1","uv2","uv3","isFrontFacing","setFromPointsAndIndices","i0","i1","i2","getArea","getMidpoint","getPlane","setFromCoplanarPoints","d4","vc","d5","d6","vb","va","hslA","hslB","hsl","ColorKeywords","Color","setRGB","hue2rgb","SRGBToLinear","LinearToSRGB","Face3","materialIndex","vertexNormals","isColor","vertexColors","setHex","setStyle","hex","setHSL","handleAlpha","components","copyGammaToLinear","gammaFactor","copyLinearToGamma","safeInverse","convertGammaToLinear","convertLinearToGamma","copySRGBToLinear","copyLinearToSRGB","convertSRGBToLinear","convertLinearToSRGB","getHex","getHexString","getHSL","hue","saturation","lightness","delta","getStyle","offsetHSL","addColors","color1","color2","lerpHSL","materialId","Material","lights","blending","side","flatShading","vertexTangents","transparent","blendSrc","blendDst","blendEquation","blendSrcAlpha","blendDstAlpha","blendEquationAlpha","depthFunc","depthTest","depthWrite","stencilFunc","stencilRef","stencilMask","stencilFail","stencilZFail","stencilZPass","stencilWrite","clippingPlanes","clipIntersection","clipShadows","shadowSide","colorWrite","precision","polygonOffset","polygonOffsetFactor","polygonOffsetUnits","dithering","alphaTest","premultipliedAlpha","needsUpdate","MeshBasicMaterial","lightMap","lightMapIntensity","aoMap","aoMapIntensity","specularMap","alphaMap","envMap","combine","reflectivity","refractionRatio","wireframe","wireframeLinewidth","wireframeLinecap","wireframeLinejoin","skinning","morphTargets","setValues","BufferAttribute","itemSize","normalized","dynamic","updateRange","Int8BufferAttribute","Int8Array","Uint8BufferAttribute","Uint8Array","Uint8ClampedBufferAttribute","Uint8ClampedArray","Int16BufferAttribute","Int16Array","Uint16BufferAttribute","Uint16Array","Int32BufferAttribute","Int32Array","Uint32BufferAttribute","Uint32Array","Float32BufferAttribute","Float32Array","Float64BufferAttribute","Float64Array","DirectGeometry","normals","colors","uvs","uvs2","groups","skinWeights","skinIndices","boundingBox","boundingSphere","verticesNeedUpdate","normalsNeedUpdate","colorsNeedUpdate","uvsNeedUpdate","groupsNeedUpdate","arrayMax","isMaterial","onBeforeCompile","isRoot","roughness","metalness","emissive","emissiveIntensity","specular","shininess","clearCoat","clearCoatRoughness","matcap","bumpMap","bumpScale","normalMap","normalMapType","normalScale","displacementMap","displacementScale","displacementBias","roughnessMap","metalnessMap","emissiveMap","envMapIntensity","gradientMap","sizeAttenuation","linewidth","dashSize","gapSize","morphNormals","srcPlanes","dstPlanes","isMeshBasicMaterial","isBufferAttribute","onUploadCallback","setArray","setDynamic","copyAt","index1","index2","copyArray","copyColorsArray","copyVector2sArray","vectors","copyVector3sArray","copyVector4sArray","setXY","setXYZW","onUpload","computeGroups","faces","face","fromGeometry","morphTargetsPosition","faceVertexUvs","hasFaceVertexUv","hasFaceVertexUv2","morphTargetsLength","morphTargetsNormal","morphNormalsLength","hasSkinIndices","hasSkinWeights","vertexUvs","morphTarget","morphNormal","bufferGeometryId","BufferGeometry","morphAttributes","drawRange","Mesh","updateMorphTargets","getIndex","setIndex","addAttribute","isInterleavedBufferAttribute","addGroup","clearGroups","setDrawRange","tangent","computeBoundingBox","computeBoundingSphere","lineDistances","updateFromObject","direct","__directGeometry","elementsNeedUpdate","lineDistancesNeedUpdate","lineDistance","fromDirectGeometry","morphAttributesPosition","morphAttribute","boxMorphTargets","jl","computeFaceNormals","computeVertexNormals","vA","vB","vC","pA","pB","pC","ab","indices","normalizeNormals","merge","attributeArray1","attribute2","attributeArray2","attributeOffset","toNonIndexed","convertBufferAttribute","array2","geometry2","newAttribute","morphArray","attributeData","hasMorphAttributes","attributeArray","setDrawMode","morphTargetInfluences","morphTargetDictionary","ml","inverseMatrix","tempA","tempB","tempC","morphA","morphB","morphC","uvA","uvB","uvC","intersectionPoint","intersectionPointWorld","checkIntersection","raycaster","checkBufferGeometryIntersection","morphPosition","morphInfluences","influence","intersection","intersects","groupMaterial","faceIndex","fvA","fvB","fvC","isMultiMaterial","fl","faceMaterial","uvs_f","geometryId","Geometry","BoxGeometry","depth","widthSegments","heightSegments","depthSegments","fromBufferGeometry","BoxBufferGeometry","mergeVertices","numberOfVertices","groupStart","buildPlane","udir","vdir","gridX","gridY","segmentWidth","segmentHeight","widthHalf","heightHalf","depthHalf","gridX1","gridY1","vertexCounter","groupCount","cloneUniforms","mergeUniforms","uniforms","merged","addFace","areaWeighted","vl","computeFlatVertexNormals","computeMorphNormals","__originalFaceNormal","__originalVertexNormals","tmpGeo","faceNormals","dstNormalsFace","dstNormalsVertex","faceNormal","materialIndexOffset","vertexOffset","vertices1","vertices2","faces1","faces2","colors1","colors2","vertexCopy","faceCopy","faceVertexNormals","faceVertexColors","faceVertexUvs2","uvsCopy","kl","mergeMesh","mesh","verticesMap","unique","changes","faceIndicesToRemove","idx","sortFacesByMaterialIndex","_id","newUvs1","newUvs2","uvs1","vertex","normalsHash","colorsHash","uvsHash","hasFaceNormal","hasFaceVertexNormal","hasFaceColor","hasFaceVertexColor","faceType","setBit","getUvIndex","getNormalIndex","getColorIndex","enabled","hash","srcVertexNormal","destVertexNormal","ShaderMaterial","defines","vertexShader","fragmentShader","clipping","extensions","derivatives","fragDepth","drawBuffers","shaderTextureLOD","defaultAttributeValues","index0AttributeName","uniformsNeedUpdate","Camera","PerspectiveCamera","fov","aspect","view","filmGauge","filmOffset","updateProjectionMatrix","isShaderMaterial","isPerspectiveCamera","setFocalLength","focalLength","vExtentSlope","getFilmHeight","getFocalLength","getEffectiveFOV","getFilmWidth","setViewOffset","fullHeight","offsetX","offsetY","clearViewOffset","skew","CubeCamera","cubeResolution","cameraPX","cameraNX","cameraPY","cameraNY","cameraPZ","cameraNZ","renderTarget","WebGLRenderTargetCube","renderer","scene","currentRenderTarget","getRenderTarget","setRenderTarget","stencil","DataTexture","Plane","Frustum","p4","p5","planes","isWebGLRenderTargetCube","fromEquirectangularTexture","shader","tEquirect","isDataTexture","isPlane","setComponents","setFromNormalAndCoplanarPoint","inverseNormalLength","distanceToSphere","projectPoint","intersectLine","intersectsLine","startSign","endSign","coplanarPoint","optionalNormalMatrix","referencePoint","frustum","setFromMatrix","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","intersectsObject","intersectsSprite","sprite","negRadius","ShaderChunk","alphamap_fragment","alphamap_pars_fragment","alphatest_fragment","aomap_fragment","aomap_pars_fragment","begin_vertex","beginnormal_vertex","bsdfs","bumpmap_pars_fragment","clipping_planes_fragment","clipping_planes_pars_fragment","clipping_planes_pars_vertex","clipping_planes_vertex","color_fragment","color_pars_fragment","color_pars_vertex","color_vertex","cube_uv_reflection_fragment","defaultnormal_vertex","displacementmap_pars_vertex","displacementmap_vertex","emissivemap_fragment","emissivemap_pars_fragment","encodings_fragment","encodings_pars_fragment","envmap_fragment","envmap_pars_fragment","envmap_pars_vertex","envmap_physical_pars_fragment","envmap_vertex","fog_vertex","fog_pars_vertex","fog_fragment","fog_pars_fragment","gradientmap_pars_fragment","lightmap_fragment","lightmap_pars_fragment","lights_lambert_vertex","lights_pars_begin","lights_phong_fragment","lights_phong_pars_fragment","lights_physical_fragment","lights_physical_pars_fragment","lights_fragment_begin","lights_fragment_maps","lights_fragment_end","logdepthbuf_fragment","logdepthbuf_pars_fragment","logdepthbuf_pars_vertex","logdepthbuf_vertex","map_fragment","map_pars_fragment","map_particle_fragment","map_particle_pars_fragment","metalnessmap_fragment","metalnessmap_pars_fragment","morphnormal_vertex","morphtarget_pars_vertex","morphtarget_vertex","normal_fragment_begin","normal_fragment_maps","normalmap_pars_fragment","packing","premultiplied_alpha_fragment","project_vertex","dithering_fragment","dithering_pars_fragment","roughnessmap_fragment","roughnessmap_pars_fragment","shadowmap_pars_fragment","shadowmap_pars_vertex","shadowmap_vertex","shadowmask_pars_fragment","skinbase_vertex","skinning_pars_vertex","skinning_vertex","skinnormal_vertex","specularmap_fragment","specularmap_pars_fragment","tonemapping_fragment","tonemapping_pars_fragment","uv_pars_fragment","uv_pars_vertex","uv_vertex","uv2_pars_fragment","uv2_pars_vertex","uv2_vertex","worldpos_vertex","background_frag","background_vert","cube_frag","cube_vert","depth_frag","depth_vert","distanceRGBA_frag","distanceRGBA_vert","equirect_frag","equirect_vert","linedashed_frag","linedashed_vert","meshbasic_frag","meshbasic_vert","meshlambert_frag","meshlambert_vert","meshmatcap_frag","meshmatcap_vert","meshphong_frag","meshphong_vert","meshphysical_frag","meshphysical_vert","normal_frag","normal_vert","points_frag","points_vert","shadow_frag","shadow_vert","sprite_frag","sprite_vert","UniformsLib","diffuse","uvTransform","specularmap","envmap","flipEnvMap","maxMipLevel","aomap","lightmap","emissivemap","bumpmap","normalmap","displacementmap","roughnessmap","metalnessmap","gradientmap","fogDensity","fogNear","fogFar","fogColor","ambientLightColor","lightProbe","directionalLights","shadow","shadowBias","shadowRadius","shadowMapSize","directionalShadowMap","directionalShadowMatrix","spotLights","coneCos","penumbraCos","decay","spotShadowMap","spotShadowMatrix","pointLights","shadowCameraNear","shadowCameraFar","pointShadowMap","pointShadowMatrix","hemisphereLights","skyColor","groundColor","rectAreaLights","ShaderLib","basic","lambert","phong","standard","dashed","totalSize","t2D","cube","tCube","tFlip","equirect","distanceRGBA","referencePosition","nearDistance","farDistance","WebGLAnimation","isAnimating","animationLoop","onAnimationFrame","stop","setAnimationLoop","setContext","WebGLAttributes","gl","buffers","WeakMap","deleteBuffer","bufferType","usage","createBuffer","bindBuffer","bufferData","bytesPerElement","BYTES_PER_ELEMENT","bufferSubData","subarray","updateBuffer","PlaneGeometry","PlaneBufferGeometry","width_half","height_half","segment_width","segment_height","WebGLBackground","objects","planeMesh","boxMesh","clearColor","clearAlpha","currentBackground","currentBackgroundVersion","setClear","getClearColor","setClearColor","getClearAlpha","setClearAlpha","renderList","forceClear","vr","session","getSession","environmentBlendMode","autoClear","autoClearColor","autoClearDepth","autoClearStencil","isCubeTexture","unshift","WebGLBufferRenderer","capabilities","setMode","drawArrays","renderInstances","extension","isWebGL2","maxInstancedCount","WebGLCapabilities","maxAnisotropy","getMaxPrecision","getShaderPrecisionFormat","WebGL2RenderingContext","maxPrecision","logarithmicDepthBuffer","maxTextures","maxVertexTextures","maxTextureSize","maxCubemapSize","maxAttributes","maxVertexUniforms","maxVaryings","maxFragmentUniforms","vertexTextures","floatFragmentTextures","getMaxAnisotropy","MAX_TEXTURE_MAX_ANISOTROPY_EXT","floatVertexTextures","maxSamples","WebGLClipping","globalState","numGlobalPlanes","localClippingEnabled","renderingShadows","viewNormalMatrix","uniform","resetGlobalState","numPlanes","numIntersection","projectPlanes","skipTransform","nPlanes","dstArray","flatSize","viewMatrix","i4","enableLocalClipping","beginShadows","endShadows","fromCache","nGlobal","lGlobal","clippingState","WebGLExtensions","getExtension","WebGLGeometries","wireframeAttributes","onGeometryDispose","buffergeometry","memory","updateWireframeAttribute","geometryIndex","geometryPosition","previousAttribute","_bufferGeometry","geometryAttributes","getWireframeAttribute","currentAttribute","WebGLIndexedBufferRenderer","drawElements","WebGLInfo","calls","triangles","lines","programs","autoReset","instanceCount","absNumericalSort","WebGLMorphtargets","influencesList","program","objectInfluences","influences","getUniforms","WebGLObjects","updateList","CubeTexture","DataTexture2DArray","wrapR","DataTexture3D","physical","isDataTexture2DArray","isDataTexture3D","emptyTexture","emptyTexture2dArray","emptyTexture3d","emptyCubeTexture","arrayCacheF32","arrayCacheI32","mat4array","mat3array","mat2array","flatten","nBlocks","blockSize","firstElem","arraysEqual","allocTexUnits","allocateTextureUnit","setValueV1f","uniform1f","addr","setValueV2f","uniform2f","uniform2fv","setValueV3f","uniform3f","uniform3fv","setValueV4f","uniform4f","uniform4fv","setValueM2","uniformMatrix2fv","setValueM3","uniformMatrix3fv","setValueM4","uniformMatrix4fv","setValueT1","unit","uniform1i","safeSetTexture2D","setValueT2DArray1","setTexture2DArray","setValueT3D1","setTexture3D","setValueT6","safeSetTextureCube","setValueV1i","setValueV2i","uniform2iv","setValueV3i","uniform3iv","setValueV4i","uniform4iv","setValueV1fArray","uniform1fv","setValueV1iArray","uniform1iv","setValueV2iArray","setValueV3iArray","setValueV4iArray","setValueV2fArray","setValueV3fArray","setValueV4fArray","setValueM2Array","setValueM3Array","setValueM4Array","setValueT1Array","units","setValueT6Array","SingleUniform","activeInfo","getSingularSetter","PureArrayUniform","getPureArraySetter","StructuredUniform","seq","updateCache","RePathPart","addUniform","container","uniformObject","parseUniform","pathLength","matchEnd","idIsIndex","subscript","WebGLUniforms","getProgramParameter","getActiveUniform","getUniformLocation","WebGLShader","createShader","shaderSource","compileShader","setOptional","upload","seqWithValue","programIdCount","getEncodingComponents","getShaderErrors","getShaderParameter","getShaderInfoLog","addLineNumbers","getShaderSource","getTexelDecodingFunction","functionName","getTexelEncodingFunction","getToneMappingFunction","toneMapping","toneMappingName","filterEmptyLine","replaceLightNums","numDirLights","numSpotLights","numRectAreaLights","numPointLights","numHemiLights","replaceClippingPlaneNums","numClippingPlanes","numClipIntersection","parseIncludes","include","unrollLoops","snippet","unroll","WebGLProgram","shadowMapTypeDefine","shadowMapType","envMapTypeDefine","envMapModeDefine","envMapBlendingDefine","prefixVertex","prefixFragment","gammaFactorDefine","customExtensions","rendererExtensions","envMapCubeUV","objectSpaceNormalMap","generateExtensions","customDefines","chunks","generateDefines","createProgram","isRawShaderMaterial","supportsVertexTextures","maxBones","useFog","fogExp","useVertexTexture","doubleSided","flipSided","shadowMapEnabled","physicallyCorrectLights","outputEncoding","mapEncoding","matcapEncoding","envMapEncoding","emissiveMapEncoding","depthPacking","isGLSL3ShaderMaterial","versionRegex","cachedUniforms","cachedAttributes","fragmentGlsl","glVertexShader","glFragmentShader","attachShader","bindAttribLocation","linkProgram","checkShaderErrors","programLog","getProgramInfoLog","vertexLog","fragmentLog","runnable","haveDiagnostics","vertexErrors","fragmentErrors","getError","diagnostics","deleteShader","getAttributes","getActiveAttrib","getAttribLocation","fetchAttributeLocations","destroy","deleteProgram","usedTimes","WebGLPrograms","shaderIDs","MeshDepthMaterial","MeshDistanceMaterial","MeshNormalMaterial","MeshLambertMaterial","MeshPhongMaterial","MeshToonMaterial","MeshStandardMaterial","MeshPhysicalMaterial","MeshMatcapMaterial","LineBasicMaterial","LineDashedMaterial","PointsMaterial","ShadowMaterial","SpriteMaterial","parameterNames","getTextureEncodingFromMap","gammaOverrideLinear","getParameters","shadows","nClipPlanes","nClipIntersection","shaderID","isSkinnedMesh","bones","skeleton","nVertexUniforms","nVertexMatrices","allocateBones","gammaOutput","gammaInput","envMapMode","isFogExp2","maxMorphTargets","maxMorphNormals","directional","spot","rectArea","hemi","shadowMap","getProgramCode","acquireProgram","pl","programInfo","releaseProgram","pop","WebGLProperties","painterSortStable","groupOrder","reversePainterSortStable","WebGLRenderList","renderItems","renderItemsIndex","opaque","defaultProgram","getNextRenderItem","renderItem","WebGLRenderLists","lists","onSceneDispose","cameras","UniformsCache","halfWidth","halfHeight","nextVersion","WebGLLights","directionalLength","pointLength","spotLength","rectAreaLength","hemiLength","shadowsLength","ambient","probe","vector3","matrix42","setup","intensity","isAmbientLight","isLightProbe","sh","coefficients","isDirectionalLight","bias","mapSize","isSpotLight","penumbra","isRectAreaLight","isPointLight","isHemisphereLight","WebGLRenderState","lightsArray","shadowsArray","setupLights","pushLight","pushShadow","shadowLight","WebGLRenderStates","renderStates","renderState","WebGLShadowMap","_renderer","_objects","_frustum","_projScreenMatrix","_shadowMapSize","_maxShadowMapSize","_lookTarget","_lightPositionWorld","_depthMaterials","_distanceMaterials","_materialCache","1","2","cubeDirections","cubeUps","cube2DViewPorts","useMorphing","useSkinning","depthMaterial","distanceMaterial","getDepthMaterial","lightPositionWorld","materialVariants","customMaterial","customDepthMaterial","customDistanceMaterial","variantIndex","keyA","keyB","materialsForVariant","cachedMaterial","isMeshDistanceMaterial","renderObject","shadowCamera","renderBufferDirect","faceCount","activeCubeFace","getActiveCubeFace","activeMipmapLevel","getActiveMipmapLevel","_state","setBlending","setTest","setScissorTest","vpWidth","vpHeight","pars","isSpotLightShadow","shadowMatrix","vpDimensions","WebGLState","utils","colorBuffer","locked","currentColorMask","currentColorClear","setMask","colorMask","setLocked","lock","currentDepthMask","currentDepthFunc","currentDepthClear","depthMask","setFunc","clearDepth","currentStencilMask","currentStencilFunc","currentStencilRef","currentStencilFuncMask","currentStencilFail","currentStencilZFail","currentStencilZPass","currentStencilClear","stencilTest","setOp","stencilOp","clearStencil","maxVertexAttributes","newAttributes","enabledAttributes","attributeDivisors","enabledCapabilities","compressedTextureFormats","currentProgram","currentBlendingEnabled","currentBlending","currentBlendEquation","currentBlendSrc","currentBlendDst","currentBlendEquationAlpha","currentBlendSrcAlpha","currentBlendDstAlpha","currentPremultipledAlpha","currentFlipSided","currentCullFace","currentLineWidth","currentPolygonOffsetFactor","currentPolygonOffsetUnits","lineWidthAvailable","glVersion","currentTextureSlot","currentBoundTextures","currentScissor","currentViewport","createTexture","bindTexture","texParameteri","texImage2D","emptyTextures","enableAttributeAndDivisor","meshPerAttribute","enableVertexAttribArray","blendEquationSeparate","blendFuncSeparate","blendFunc","setFlipSided","frontFace","setCullFace","cullFace","setPolygonOffset","activeTexture","webglSlot","initAttributes","enableAttribute","disableUnusedAttributes","disableVertexAttribArray","getCompressedTextureFormats","useProgram","setMaterial","frontFaceCW","setLineWidth","lineWidth","webglType","webglTexture","boundTexture","compressedTexImage2D","texImage3D","WebGLTextures","_gl","_videoTextures","useOffscreenCanvas","OffscreenCanvas","createCanvas","resizeImage","needsPowerOfTwo","needsNewCanvas","maxSize","HTMLImageElement","ImageBitmap","textureNeedsGenerateMipmaps","supportsMips","generateMipmap","__maxMipLevel","LOG2E","getInternalFormat","glFormat","glType","internalFormat","filterFallback","onTextureDispose","textureProperties","__webglInit","deleteTexture","__webglTexture","deallocateTexture","isVideoTexture","onRenderTargetDispose","renderTargetProperties","deleteFramebuffer","__webglFramebuffer","__webglDepthbuffer","deleteRenderbuffer","deallocateRenderTarget","textureUnits","setTexture2D","updateVideoTexture","__version","uploadTexture","setTextureCube","initTexture","pixelStorei","isCompressed","isCompressedTexture","cubeImage","glInternalFormat","setTextureParameters","mipmap","setTextureCubeDynamic","textureType","__currentAnisotropy","texParameterf","TEXTURE_MAX_ANISOTROPY_EXT","textureNeedsPowerOfTwo","isDepthTexture","setupFrameBufferTexture","framebuffer","attachment","textureTarget","bindFramebuffer","framebufferTexture2D","setupRenderBufferStorage","renderbuffer","isMultisample","bindRenderbuffer","getRenderTargetSamples","renderbufferStorageMultisample","renderbufferStorage","framebufferRenderbuffer","setupDepthRenderbuffer","isCube","webglDepthTexture","setupDepthTexture","createRenderbuffer","warnedTexture2D","warnedTextureCube","textureUnit","resetTextureUnits","setupRenderTarget","createFramebuffer","__webglMultisampledFramebuffer","__webglColorRenderbuffer","__webglDepthRenderbuffer","updateRenderTargetMipmap","updateMultisampleRenderTarget","blitFramebuffer","WebGLUtils","HALF_FLOAT_OES","COMPRESSED_RGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_ETC1_WEBGL","MIN_EXT","MAX_EXT","UNSIGNED_INT_24_8_WEBGL","Group","ArrayCamera","isMeshDepthMaterial","isGroup","isArrayCamera","matrixPosition","offsetMatrix","identityMatrix","cameraLPos","cameraRPos","setProjectionFromUnion","cameraL","cameraR","ipd","projL","projR","topFov","bottomFov","leftFov","rightFov","zOffset","xOffset","near2","far2","left2","right2","top2","bottom2","WebVRManager","renderWidth","renderHeight","frameData","poseTarget","controllers","standingMatrix","standingMatrixInverse","framebufferScaleFactor","referenceSpaceType","VRFrameData","onVRDisplayPresentChange","tempQuaternion","tempPosition","cameraVR","isPresenting","currentPixelRatio","currentSize","eyeParameters","getEyeParameters","getPixelRatio","setDrawingBufferSize","findGamepad","gamepads","getGamepads","gamepad","updateViewportFromBounds","getController","controller","getDevice","setDevice","setFramebufferScaleFactor","setReferenceSpaceType","setPoseTarget","getCamera","userHeight","depthNear","depthFar","getFrameData","stageParameters","sittingToStandingTransform","pose","poseObject","orientation","leftViewMatrix","rightViewMatrix","leftProjectionMatrix","rightProjectionMatrix","leftBounds","rightBounds","hasPosition","buttonId","pressed","updateControllers","getStandingMatrix","submitFrame","setFrameOfReferenceType","WebXRManager","referenceSpace","inputSources","onSessionEvent","inputSource","onSessionEnd","setFramebuffer","onRequestReferenceSpace","updateCamera","setSession","updateRenderState","baseLayer","XRWebGLLayer","requestReferenceSpace","onAnimationFrameCallback","getViewerPose","views","getViewport","transform","inputPose","getPose","targetRaySpace","WebGLRenderer","_context","_alpha","_depth","_stencil","_antialias","antialias","_premultipliedAlpha","_preserveDrawingBuffer","preserveDrawingBuffer","_powerPreference","powerPreference","_failIfMajorPerformanceCaveat","failIfMajorPerformanceCaveat","currentRenderList","currentRenderState","domElement","sortObjects","toneMappingExposure","toneMappingWhitePoint","programCache","renderLists","morphtargets","bufferRenderer","indexedBufferRenderer","_isContextLost","_framebuffer","_currentActiveCubeFace","_currentActiveMipmapLevel","_currentRenderTarget","_currentFramebuffer","_currentMaterialId","_currentGeometryProgram","_currentCamera","_currentArrayCamera","_currentViewport","_currentScissor","_currentScissorTest","_width","_height","_pixelRatio","_viewport","_scissor","_scissorTest","_clipping","_clippingEnabled","_localClippingEnabled","_vector3","getTargetPixelRatio","contextAttributes","xrCompatible","onContextLost","onContextRestore","initGLContext","xr","onMaterialDispose","releaseMaterialProgramReference","deallocateMaterial","getContextAttributes","forceContextLoss","loseContext","forceContextRestore","restoreContext","setPixelRatio","updateStyle","setViewport","getDrawingBufferSize","pixelRatio","getCurrentViewport","getScissor","setScissor","getScissorTest","boolean","bits","renderBufferImmediate","hasPositions","hasNormals","hasUvs","hasColors","programAttributes","positionArray","vertexAttribPointer","normalArray","uvArray","colorArray","setProgram","updateBuffers","rangeFactor","isInstancedBufferGeometry","materialDefaultAttributeValues","programAttribute","geometryAttribute","stride","isInstancedInterleavedBuffer","isInstancedBufferAttribute","vertexAttrib2fv","vertexAttrib3fv","vertexAttrib4fv","vertexAttrib1fv","setupVertexAttributes","dataCount","rangeStart","rangeCount","drawStart","drawEnd","drawCount","isLineSegments","isLineLoop","isSprite","compile","initMaterial","projectObject","isLOD","isImmediateRenderObject","renderObjects","camera2","renderObjectImmediate","materialProperties","lightsStateVersion","programChange","numSupportedMorphTargets","numSupportedMorphNormals","progUniforms","uniformsList","useCache","refreshProgram","refreshMaterial","refreshLights","p_uniforms","m_uniforms","isMeshPhongMaterial","isMeshStandardMaterial","uCamPos","cameraPosition","isMeshLambertMaterial","boneTexture","boneMatrices","boneTextureSize","isFog","density","refreshUniformsFog","refreshUniformsCommon","refreshUniformsLambert","isMeshToonMaterial","refreshUniformsPhong","refreshUniformsToon","isMeshPhysicalMaterial","refreshUniformsStandard","refreshUniformsPhysical","isMeshMatcapMaterial","refreshUniformsMatcap","refreshUniformsDepth","refreshUniformsDistance","isMeshNormalMaterial","refreshUniformsNormal","isLineBasicMaterial","refreshUniformsLine","isLineDashedMaterial","refreshUniformsDash","isPointsMaterial","refreshUniformsPoints","isSpriteMaterial","refreshUniformsSprites","isShadowMaterial","ltc_1","LTC_1","ltc_2","LTC_2","uvScaleMap","opaqueObjects","transparentObjects","readRenderTargetPixels","activeCubeFaceIndex","restore","textureFormat","checkFramebufferStatus","readPixels","copyFramebufferToTexture","copyTexImage2D","copyTextureToTexture","srcTexture","dstTexture","texSubImage2D","FogExp2","Fog","InterleavedBuffer","InterleavedBufferAttribute","interleavedBuffer","Sprite","LOD","levels","SkinnedMesh","bindMode","bindMatrix","bindMatrixInverse","Skeleton","boneInverses","calculateInverses","Bone","linecap","linejoin","Line","LineSegments","LineLoop","Points","VideoTexture","CompressedTexture","CanvasTexture","DepthTexture","WireframeGeometry","edge","edges","ParametricGeometry","slices","stacks","ParametricBufferGeometry","EPS","pu","pv","sliceCount","PolyhedronGeometry","PolyhedronBufferGeometry","vertexBuffer","uvBuffer","subdivideFace","cols","aj","bj","rows","pushVertex","getVertexByIndex","correctUV","azimuth","inclination","subdivide","applyRadius","centroid","azi","correctUVs","correctSeam","generateUVs","TetrahedronGeometry","TetrahedronBufferGeometry","OctahedronGeometry","OctahedronBufferGeometry","IcosahedronGeometry","IcosahedronBufferGeometry","DodecahedronGeometry","DodecahedronBufferGeometry","TubeGeometry","tubularSegments","radialSegments","taper","bufferGeometry","TubeBufferGeometry","tangents","binormals","frames","computeFrenetFrames","P","generateSegment","getPointAt","N","generateIndices","generateBufferData","TorusKnotGeometry","tube","heightScale","TorusKnotBufferGeometry","P1","P2","T","calculatePositionOnCurve","cu","su","quOverP","cs","TorusGeometry","arc","TorusBufferGeometry","isInterleavedBuffer","intersectPoint","worldScale","mvPosition","alignedPosition","rotatedPosition","viewWorldMatrix","transformVertex","vertexPosition","_camera","addLevel","getObjectForDistance","normalizeSkinWeights","skinWeight","bone","isBone","getBoneByName","computeLineDistances","positionAttribute","linePrecision","localPrecision","localPrecisionSq","vStart","vEnd","interSegment","interRay","nbVertices","threshold","localThreshold","localThresholdSq","testPoint","rayPointDistanceSq","distanceToRay","readyState","HAVE_CURRENT_DATA","isCanvasTexture","Earcut","holeIndices","dim","invSize","hasHoles","outerLen","outerNode","linkedList","queue","steiner","getLeftmost","compareX","eliminateHole","filterPoints","eliminateHoles","earcutLinked","clockwise","sum","signedArea","insertNode","removeNode","again","ear","pass","zOrder","prevZ","nextZ","tail","numMerges","pSize","qSize","inSize","sortLinked","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","locallyInside","isValidDiagonal","splitPolygon","hole","hx","hy","mx","my","tanMin","findHoleBridge","leftmost","px","py","intersectsPolygon","inside","middleInside","q2","an","bp","ShapeUtils","area","contour","isClockWise","pts","triangulateShape","holes","removeDupEndPts","addContour","holeIndex","ExtrudeGeometry","ExtrudeBufferGeometry","verticesArray","addShape","curveSegments","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","extrudePath","uvgen","UVGenerator","WorldUVGenerator","amount","extrudePts","splineTube","binormal","position2","ahole","hl","extrudeByPath","getSpacedPoints","shapePoints","extractPoints","reverse","scalePt2","vec","bs","vert","vlen","flen","getBevelVec","inPt","inPrev","inNext","v_trans_x","v_trans_y","shrink_by","v_prev_x","v_prev_y","v_next_x","v_next_y","v_prev_lensq","collinear0","v_prev_len","v_next_len","ptPrevShift_x","ptPrevShift_y","sf","v_trans_lensq","direction_eq","contourMovements","oneHoleMovements","holesMovements","verticesMovements","sidewalls","layeroffset","sl","slen1","slen2","f4","f3","addVertex","generateTopUV","addUV","generateSideWallUV","vector2","buildLidFaces","buildSideFaces","indexA","indexB","indexC","a_x","a_y","b_x","b_y","c_x","c_y","indexD","a_z","b_z","c_z","d_x","d_y","d_z","TextGeometry","TextBufferGeometry","font","isFont","generateShapes","SphereGeometry","phiStart","phiLength","thetaStart","thetaLength","SphereBufferGeometry","thetaEnd","grid","verticesRow","uOffset","RingGeometry","innerRadius","outerRadius","thetaSegments","phiSegments","RingBufferGeometry","segment","radiusStep","thetaSegmentLevel","LatheGeometry","segments","LatheBufferGeometry","base","inverseSegments","n1","n2","ShapeGeometry","ShapeBufferGeometry","shapeHole","indexOffset","shapeVertices","shapeHoles","toJSON$1","EdgesGeometry","thresholdAngle","thresholdDot","sourceVertices","face1","face2","CylinderGeometry","radiusTop","radiusBottom","openEnded","CylinderBufferGeometry","indexArray","generateCap","centerIndexStart","centerIndexEnd","cosTheta","sinTheta","slope","indexRow","generateTorso","ConeGeometry","ConeBufferGeometry","CircleGeometry","CircleBufferGeometry","Geometries","RawShaderMaterial","Materials","AnimationUtils","arraySlice","isTypedArray","convertArray","forceClone","ArrayBuffer","isView","DataView","getKeyframeOrder","times","sortedArray","nValues","srcOffset","flattenJSON","jsonKeys","valuePropertyName","Interpolant","parameterPositions","sampleValues","sampleSize","resultBuffer","_cachedIndex","valueSize","CubicInterpolant","_weightPrev","_offsetPrev","_weightNext","_offsetNext","LinearInterpolant","DiscreteInterpolant","KeyframeTrack","interpolation","TimeBufferType","ValueBufferType","setInterpolation","DefaultInterpolation","BooleanKeyframeTrack","ColorKeyframeTrack","NumberKeyframeTrack","QuaternionLinearInterpolant","QuaternionKeyframeTrack","StringKeyframeTrack","VectorKeyframeTrack","AnimationClip","tracks","resetDuration","parseKeyframeTrack","json","trackType","typeName","getTrackTypeForValueTypeName","evaluate","pp","validate_interval","seek","linear_scan","forward_scan","giveUpAt","afterEnd_","t1global","beforeStart_","mid","intervalChanged_","interpolate_","DefaultSettings_","getSettings_","copySampleValue_","endingStart","endingEnd","iPrev","iNext","tPrev","tNext","halfDt","o1","o0","oP","oN","wP","wN","ppp","sP","sN","offset1","offset0","weight1","weight0","getInterpolation","ValueTypeName","InterpolantFactoryMethodDiscrete","getValueSize","InterpolantFactoryMethodLinear","InterpolantFactoryMethodSmooth","factoryMethod","createInterpolant","timeOffset","timeScale","startTime","endTime","nKeys","prevTime","optimize","smoothInterpolation","writeIndex","keep","offsetP","offsetN","readOffset","writeOffset","TypedKeyframeTrack","jsonTracks","frameTime","fps","clip","clipTracks","CreateFromMorphTargetSequence","morphTargetSequence","noLoop","numMorphTargets","findByName","objectOrClipArray","clipArray","animations","CreateClipsFromMorphTargetSequences","animationToMorphTargets","animationMorphTargets","clips","parseAnimation","addNonemptyTrack","trackName","animationKeys","propertyName","destTracks","clipName","hierarchyTracks","hierarchy","morphTargetNames","morphTargetName","animationKey","boneName","Cache","file","LoadingManager","onLoad","onProgress","onError","isLoading","itemsLoaded","itemsTotal","urlModifier","onStart","itemStart","itemEnd","itemError","resolveURL","setURLModifier","DefaultLoadingManager","FileLoader","manager","DataTextureLoader","_parser","ImageLoader","CubeTextureLoader","TextureLoader","Curve","arcLengthDivisions","EllipseCurve","aX","aY","xRadius","yRadius","aStartAngle","aEndAngle","aClockwise","aRotation","ArcCurve","aRadius","CubicPoly","c0","initCatmullRom","x3","tension","initNonuniformCatmullRom","dt0","dt1","dt2","t2","calc","cached","dataUriRegexResult","mimeType","isBase64","responseType","charCodeAt","Blob","parser","DOMParser","parseFromString","request","XMLHttpRequest","open","withCredentials","overrideMimeType","requestHeader","setRequestHeader","send","setPath","setResponseType","setWithCredentials","setMimeType","loader","loadTexture","texDatas","mipmapCount","isCubemap","texData","crossOrigin","onImageLoad","onImageError","setCrossOrigin","urls","isJPEG","getPoint","optionalTarget","getUtoTmapping","getPoints","divisions","getLength","lengths","getLengths","cacheArcLengths","updateArcLengths","targetArcLength","arcLengths","comparison","lengthBefore","getTangent","pt1","getTangentAt","mat","MAX_VALUE","tz","fromJSON","isEllipseCurve","twoPi","deltaAngle","samePoints","isArcCurve","pz","CatmullRomCurve3","curveType","CatmullRom","QuadraticBezier","QuadraticBezierP0","QuadraticBezierP1","QuadraticBezierP2","CubicBezier","CubicBezierP0","CubicBezierP1","CubicBezierP2","CubicBezierP3","CubicBezierCurve","CubicBezierCurve3","LineCurve","LineCurve3","QuadraticBezierCurve","QuadraticBezierCurve3","SplineCurve","isCatmullRomCurve3","intPoint","isCubicBezierCurve","isCubicBezierCurve3","isLineCurve","isLineCurve3","isQuadraticBezierCurve","isQuadraticBezierCurve3","isSplineCurve","Curves","CurvePath","curves","autoClose","Path","currentPoint","Shape","Light","HemisphereLight","LightShadow","SpotLightShadow","SpotLight","power","PointLight","OrthographicCamera","DirectionalLightShadow","DirectionalLight","AmbientLight","RectAreaLight","MaterialLoader","curve","closePath","startPoint","endPoint","curveLengths","getCurveLengths","segmentLength","lens","cacheLengths","sums","resolution","moveTo","lineTo","quadraticCurveTo","aCPx","aCPy","bezierCurveTo","aCP1x","aCP1y","aCP2x","aCP2y","splineThru","absarc","absellipse","ellipse","lastPoint","getPointsHoles","holesPts","isOrthographicCamera","zoomW","zoomH","scaleW","scaleH","getTexture","shading","setTextures","LoaderUtils","lastIndexOf","InstancedBufferGeometry","InstancedBufferAttribute","BufferGeometryLoader","typedArray","TYPED_ARRAYS","bufferAttribute","drawcalls","offsets","ObjectLoader","resourcePath","setResourcePath","parseShape","parseGeometries","parseImages","parseTextures","parseMaterials","parseObject","parseAnimations","bufferGeometryLoader","details","geometryShapes","THREE","LegacyJSONLoader","loadImage","currentUrl","parseConstant","TEXTURE_MAPPING","TEXTURE_WRAPPING","TEXTURE_FILTER","getGeometry","getMaterial","UVMapping","CubeReflectionMapping","CubeRefractionMapping","EquirectangularReflectionMapping","EquirectangularRefractionMapping","SphericalReflectionMapping","CubeUVReflectionMapping","CubeUVRefractionMapping","LinearMipmapNearestFilter","ImageBitmapLoader","createImageBitmap","fetch","ShapePath","subPaths","currentPath","Font","createPath","char","glyph","glyphs","cpx","cpy","cpx1","cpy1","cpx2","cpy2","outline","_cachedOutline","ha","familyName","blob","imageBitmap","toShapes","isCCW","noHoles","toShapesNoHoles","inSubpaths","tmpPath","tmpShape","isPointInsidePolygon","inPolygon","polyLen","edgeLowPt","edgeHighPt","edgeDx","edgeDy","perpEdge","solid","holesFirst","tmpPoints","tmpHoles","betterShapeHoles","newShapes","newShapeHoles","mainIdx","ambiguous","toChange","sIdx","sLen","sho","hIdx","ho","hole_unassigned","s2Idx","froms","tos","chars","line_height","yMax","yMin","underlineThickness","createPaths","Handlers","handlers","onLoadStart","onLoadProgress","onLoadComplete","initMaterials","texturePath","createMaterial","BlendingMode","NoBlending","NormalBlending","AdditiveBlending","SubtractiveBlending","MultiplyBlending","CustomBlending","textureLoader","materialLoader","fullPath","mapDiffuseRepeat","mapDiffuseOffset","mapDiffuseWrap","mapDiffuseAnisotropy","mapEmissiveRepeat","mapEmissiveOffset","mapEmissiveWrap","mapEmissiveAnisotropy","mapLightRepeat","mapLightOffset","mapLightWrap","mapLightAnisotropy","mapAORepeat","mapAOOffset","mapAOWrap","mapAOAnisotropy","mapBumpRepeat","mapBumpOffset","mapBumpWrap","mapBumpAnisotropy","mapNormalRepeat","mapNormalOffset","mapNormalWrap","mapNormalAnisotropy","mapSpecularRepeat","mapSpecularOffset","mapSpecularWrap","mapSpecularAnisotropy","mapMetalnessRepeat","mapMetalnessOffset","mapMetalnessWrap","mapMetalnessAnisotropy","mapRoughnessRepeat","mapRoughnessOffset","mapRoughnessWrap","mapRoughnessAnisotropy","mapAlphaRepeat","mapAlphaOffset","mapAlphaWrap","mapAlphaAnisotropy","AudioContext","webkitAudioContext","AudioLoader","SphericalHarmonics3","LightProbe","HemisphereLightProbe","sky","ground","AmbientLightProbe","Clock","autoStart","oldTime","elapsedTime","running","AudioListener","gain","createGain","connect","destination","timeDelta","Audio","getInput","detune","loop","playbackRate","hasPlaybackControl","sourceType","filters","PositionalAudio","panner","createPanner","panningModel","AudioAnalyser","audio","fftSize","analyser","createAnalyser","frequencyBinCount","getOutput","PropertyMixer","binding","mixFunction","_slerp","_select","_lerp","_mixBufferRegion","cumulativeWeight","useCount","referenceCount","bufferCopy","decodeAudioData","audioBuffer","isSphericalHarmonics3","getAt","coeff","addScale","getIrradianceAt","getBasisAt","shBasis","isHemisphereLightProbe","isAmbientLightProbe","eyeSep","eyeRight","eyeLeft","xmin","xmax","eyeSepOnProjection","ymax","performance","now","getElapsedTime","getDelta","newTime","removeFilter","getFilter","setFilter","getMasterVolume","setMasterVolume","setTargetAtTime","clock","positionX","linearRampToValueAtTime","positionY","positionZ","forwardX","forwardY","forwardZ","upX","upY","upZ","setOrientation","setNodeSource","audioNode","setMediaElementSource","createMediaElementSource","setBuffer","createBufferSource","onended","onEnded","setDetune","setPlaybackRate","getFilters","setFilters","getDetune","getPlaybackRate","getLoop","setLoop","getVolume","getRefDistance","refDistance","setRefDistance","getRolloffFactor","rolloffFactor","setRolloffFactor","getDistanceModel","distanceModel","setDistanceModel","getMaxDistance","maxDistance","setMaxDistance","setDirectionalCone","coneInnerAngle","coneOuterAngle","coneOuterGain","orientationX","orientationY","orientationZ","getFrequencyData","getByteFrequencyData","getAverageFrequency","accumulate","accuIndex","currentWeight","mix","originalValueOffset","saveOriginalState","restoreOriginalState","wordChar","wordCharOrDot","directoryRe","nodeRe","objectRe","propertyRe","trackRe","supportedObjectNames","reservedRe","_startP","_startEnd","lineGeometry","coneGeometry","RESERVED_CHARS_RE","Composite","targetGroup","optionalParsedPath","parsedPath","PropertyBinding","parseTrackName","_targetGroup","_bindings","subscribe_","rootNode","findNode","nodeName","AnimationAction","mixer","localRoot","_mixer","_clip","_localRoot","nTracks","interpolants","interpolantSettings","interpolant","_interpolantSettings","_interpolants","_propertyBindings","_cacheIndex","_byClipCacheIndex","_timeScaleInterpolant","_weightInterpolant","_loopCount","_startTime","_effectiveTimeScale","_effectiveWeight","repetitions","clampWhenFinished","zeroSlopeAtStart","zeroSlopeAtEnd","AnimationMixer","_root","_initMemoryManager","_accuIndex","Uniform","InstancedInterleavedBuffer","ascSort","intersectObject","Box2","Line3","ImmediateRenderObject","VertexNormalsHelper","nNormals","objGeometry","SpotLightHelper","cone","getBoneList","boneList","SkeletonHelper","PointLightHelper","sphereSize","RectAreaLightHelper","HemisphereLightHelper","LightProbeHelper","GridHelper","PolarGridHelper","radials","circles","PositionalAudioHelper","divisionsInnerAngle","divisionsOuterAngle","materialInnerAngle","materialOuterAngle","FaceNormalsHelper","DirectionalLightHelper","lightPlane","targetLine","CameraHelper","pointMap","colorFrustum","colorCone","colorUp","colorTarget","colorCross","addLine","addPoint","BoxHelper","Box3Helper","PlaneHelper","ArrowHelper","headLength","headWidth","setDirection","AxesHelper","firstValidIndex","nCachedObjects_","bindings","unbind","isAnimationObjectGroup","sanitizeNodeName","objectName","objectIndex","propertyIndex","lastDot","searchNodeSubtree","childNode","subTreeNode","_getValue_unavailable","_setValue_unavailable","BindingType","Direct","EntireArray","ArrayElement","HasFromToArray","Versioning","None","NeedsUpdate","MatrixWorldNeedsUpdate","GetterByBindingType","resolvedProperty","SetterByBindingTypeAndVersioning","targetObject","dest","targetArray","sourceArray","nodeProperty","versioning","bindingType","_getValue_unbound","_setValue_unbound","_indicesByUUID","_paths","_parsedPaths","_bindingsIndicesByPath","stats","total","nObjects","nCachedObjects","indicesByUUID","parsedPaths","nBindings","knownObject","firstActiveIndex","lastCachedObject","bindingsForPath","lastCached","lastCachedIndex","firstActiveObject","firstActive","uncache","lastObject","indicesByPath","unsubscribe_","lastBindingsIndex","lastBindings","_activateAction","_deactivateAction","stopFading","stopWarping","isRunning","_isActiveAction","isScheduled","startAt","setEffectiveWeight","getEffectiveWeight","fadeIn","_scheduleFading","fadeOut","crossFadeFrom","fadeOutAction","warp","fadeInDuration","fadeOutDuration","startEndRatio","endStartRatio","crossFadeTo","fadeInAction","weightInterpolant","_takeBackControlInterpolant","setEffectiveTimeScale","getEffectiveTimeScale","setDuration","syncWith","halt","startTimeScale","endTimeScale","_lendControlInterpolant","timeScaleInterpolant","getMixer","getClip","getRoot","_update","deltaTime","timeDirection","timeRunning","_updateTimeScale","clipTime","_updateTime","_updateWeight","propertyMixers","interpolantValue","loopCount","pingPong","_setEndings","handle_stop","loopDelta","pending","atStart","atEnd","weightNow","weightThen","_bindAction","prototypeAction","rootUuid","bindingsByRoot","_bindingsByRootAndName","bindingsByName","_addInactiveBinding","clipUuid","actionsForClip","_actionsByClip","knownActions","_addInactiveAction","_lendBinding","_lendAction","_takeBackBinding","_takeBackAction","_actions","_nActiveActions","_nActiveBindings","_controlInterpolants","_nActiveControlInterpolants","controlInterpolants","actionsByClip","actionByRoot","_removeInactiveAction","lastInactiveAction","cacheIndex","knownActionsForClip","lastKnownAction","byClipCacheIndex","_removeInactiveBindingsForAction","_removeInactiveBinding","prevIndex","lastActiveIndex","firstInactiveAction","firstInactiveIndex","lastActiveAction","bindingByName","propBinding","lastInactiveBinding","firstInactiveBinding","lastActiveBinding","_controlInterpolantsResultBuffer","__cacheIndex","lastActiveInterpolant","clipAction","optionalRoot","clipObject","existingAction","newAction","stopAllAction","nActions","uncacheClip","actionsToRemove","uncacheRoot","uncacheAction","PointCloud","setFromCamera","coords","intersectObjects","other","makeSafe","setFromCartesianCoords","distanceSq","closestPointToPointParameter","clampToLine","startEnd2","objPos","objNorm","coneLength","coneWidth","boneMatrix","matrixWorldInv","halfConeInnerAngle","halfConeOuterAngle","setPoint","setColor","Spline","construct","createPointsGeometry","createGeometry","createSpacedPointsGeometry","fromPoints","initFromArray","getControlPointsArray","reparametrizeByArcLength","setColors","extractUrlBase","setTexturePath","isIntersectionBox","isIntersectionSphere","random16","nearestPowerOfTwo","nextPowerOfTwo","flattenToArrayOffset","multiplyVector3","multiplyVector3Array","applyToBuffer","applyToVector3Array","extractPosition","getPosition","multiplyToArray","multiplyVector4","rotateAxis","crossVector","rotateByAxis","makeFrustum","isIntersectionLine","isIntersectionPlane","barycoordFromPoint","midpoint","extractAllPoints","extrude","makeGeometry","fromAttribute","distanceToManhattan","lengthManhattan","setEulerFromRotationMatrix","setEulerFromQuaternion","getPositionFromMatrix","getScaleFromMatrix","getColumnFromMatrix","applyProjection","computeTangents","getChildByName","renderDepth","getWorldRotation","eulerOrder","useQuaternion","initBones","setLens","onlyShadow","shadowCameraFov","shadowCameraLeft","shadowCameraRight","shadowCameraTop","shadowCameraBottom","shadowCameraVisible","shadowDarkness","shadowMapWidth","shadowMapHeight","copyIndicesArray","addIndex","addDrawCall","clearDrawCalls","computeOffsets","getArrays","addShapeList","wrapAround","overdraw","wrapRGB","metal","clearTarget","getCurrentRenderTarget","getPrecision","resetGLState","supportsFloatTextures","supportsHalfFloatTextures","supportsStandardDerivatives","supportsCompressedTextureS3TC","supportsCompressedTexturePVRTC","supportsBlendMinMax","supportsInstancedArrays","enableScissorTest","addPrePlugin","addPostPlugin","updateShadowMap","setFaceCulling","allocTextureUnit","setTexture","getActiveMipMapLevel","shadowMapCullFace","renderReverseSided","renderSingleSided","activeMipMapLevel","standing","getData","updateCubeMap","loadTextureCube","loadCompressedTexture","loadCompressedTextureCube","texelSize","LOCAL_CONTRAST_ADAPTATION_FACTOR","EDGE_THRESHOLD","inputBuffer","halfTexelSize","kernel","setTexelSize","kernelSize","KernelSize","LARGE","kernelPresets","VERY_SMALL","SMALL","MEDIUM","VERY_LARGE","HUGE","shaderParts","DEPTH_PACKING","cameraNear","cameraFar","setShaderParts","setDefines","setUniforms","adoptCameraSettings","Section","FRAGMENT_HEAD","FRAGMENT_MAIN_UV","FRAGMENT_MAIN_IMAGE","VERTEX_HEAD","VERTEX_MAIN_SUPPORT","PERSPECTIVE_CAMERA","colorOutput","luminanceRange","useRange","smoothing","useThreshold","THRESHOLD","COLOR","RANGE","MAX_SEARCH_STEPS_INT","MAX_SEARCH_STEPS_FLOAT","MAX_SEARCH_STEPS_DIAG_INT","MAX_SEARCH_STEPS_DIAG_FLOAT","CORNER_ROUNDING","CORNER_ROUNDING_NORM","AREATEX_MAX_DISTANCE","AREATEX_MAX_DISTANCE_DIAG","AREATEX_PIXEL_SIZE","AREATEX_SUBTEX_SIZE","SEARCHTEX_SIZE","SEARCHTEX_PACKED_SIZE","areaTexture","searchTexture","rounding","DISABLE_DIAG_DETECTION","DISABLE_CORNER_DETECTION","needsSwap","needsDepthTexture","renderToScreen","getFullscreenTriangle","outputBuffer","getFullscreenMaterial","AUTO_SIZE","resolutionScale","renderTargetX","renderTargetY","originalSize","convolutionMaterial","ditheredConvolutionMaterial","getKernel","destRT","lastRT","setFullscreenMaterial","ClearMaskPass","ClearPass","overrideClearColor","overrideClearAlpha","hasOverrideClearColor","hasOverrideClearAlpha","RenderPass","clearPass","BlendFunction","blendFunctions","blendFunction","Effect","EffectAttribute","NONE","blendMode","CONVOLUTION","DEPTH","findSubstrings","regExp","substrings","prefixSubstrings","prefixed","integrateEffect","effect","blendModes","functionRegExp","varyingRegExp","shaders","mainImageExists","mainUvExists","varyings","transformedUv","readDepth","blendOpacity","EffectPass","effects","skipRendering","minTime","maxTime","blendRegExp","getShaderCode","getDepthTexture","updateMaterial","setDepthTexture","initialize","MaskPass","writeValue","clearValue","REPLACE","ALWAYS","EQUAL","KEEP","ShaderPass","setInput","copyPass","passes","updateDOM","oldRenderer","oldSize","newSize","drawingBufferSize","createDepthTexture","reducer","NOTEQUAL","fragmentShader$a","luminanceThreshold","luminanceSmoothing","blurPass","luminancePass","luminanceMaterial","getResolutionScale","setResolutionScale","searchImage","areaImage","preset","SMAAPreset","HIGH","renderTargetColorEdges","renderTargetWeights","colorEdgesPass","weightsPass","applyPreset","setEdgeDetectionThreshold","setOrthogonalSearchSteps","colorEdgesMaterial","weightsMaterial","LOW","diagonalDetection","cornerRounding","setDiagonalSearchSteps","setCornerRounding","ULTRA","bilinear","lerp$1","distortion","distortion_uniforms","getDistortion","distortion_vertex","devicePixelRatio","composer","fogUniforms","assets","disposed","road","leftCarLights","leftCars","movingAwaySpeed","carLightsFade","rightCarLights","rightCars","movingCloserSpeed","leftSticks","fovTarget","speedUpTarget","speedUp","tick","renderPass","bloomPass","smaaPass","smaa","addPass","Image","searchImageDataURL","areaImageDataURL","initPasses","roadWidth","islandWidth","ev","onSpeedUp","fovSpeedUp","onSlowDown","lerpPercentage","fovChange","getJS","updateStyles","needResize","resizeRendererToDisplaySize","uDistortionX","uDistortionY","pickRandom","limit","change","webgl","fade","instanced","lightPairsPerRoadWay","laneWidth","lanesPerRoad","aOffset","aMetrics","aColor","carLightsRadius","carLightsLength","laneX","carWidth","carWidthPercentage","carShiftX","carFloorSeparation","offsetZ","carLightsFragment","carLightsVertex","uTime","uTravelLength","uFade","totalSticks","totalSideLightSticks","stickoffset","sticks","lightStickWidth","lightStickHeight","sideSticksFragment","sideSticksVertex","isRoad","uColor","roadColor","islandColor","uLanes","uBrokenLinesColor","brokenLines","uShoulderLinesColor","shoulderLines","uShoulderLinesWidthPercentage","shoulderLinesWidthPercentage","uBrokenLinesLengthPercentage","brokenLinesLengthPercentage","uBrokenLinesWidthPercentage","brokenLinesWidthPercentage","roadFragment","islandFragment","roadVertex","leftRoadWay","createPlane","rightRoadWay","island","roadBaseFragment","LongRaceUniforms","uFreq","uAmp","LongRaceDistortion","camProgress","lookAtAmp","lookAtOffset","LatinoBlackTitle","LatinoTitleBold","Div","BodyWrapper","FirstSlide","loadAnimation","divRef","useRef","useEffect","app","loadAssets","copy0300","slidesConfig","firstDivision","subtitle","preButton","secondDivision","FourthSlide","fullPageApi","blueSelected","setBlueSelected","redSelected","setRedSelected","FourthSlideMobile","slideConfig","FourthSlideDesktop","CTATaigo","otherIsSelected","OptionsContainer","OptionsWrapper","Option","RadioInput","Radio","ctaCopy","estilo","checkedOption","setCheckedOption","errorExcusa","setErrorExcusa","excusa","estiloExcusa","copy250","copy300","BlueDiv","RedDiv","BodyBlue","BodyRed","MaxWidthTextWrapper","SecondSlide","autoPlay","playsinline","backgroundMob","LineHeight","Position","BackgroundImage","renderLayer","copyNumber","bodyText","shimBackgroundType","setAllowScrolling","ThirdSlide","pluginWrapper","VerticalWrapper","appendLinkToHead","linkUrl","rel","LanzamientoTaigoTrigger","fullpageApiRef","setNumber","setLoadAnimation","showScrollLine","setShowScrollLine","licenseKey","scrollHorizontallyKey","scrollingSpeed","scrollHorizontally","fitToSection","controlArrows","normalScrollElements","onLeave","onSlideLeave","afterLoad","setAutoScrolling","scroll","fullpageApi","setLssi","setTmk","lssiError","tmkError","nameNombre","labelMail","labelNombre","nameMail","setInputValue","pristine","setPristine","cliente","NavidadSteps","setBodyCopy","NavidadForm","multipleChoice","Cliente","NoCliente","EnviarA","NoClienteContacto","EmailTelefono","minSelected","maxSelected","ignoreHandleClick","MultipleChoice","ImaginarExperiencia","NuevoFormData","DESC_FORM_DETAIL","noClienteName","wishlist","friendName","friendMail","imaginarExperiencia","NuevoFormInfo","handleStepsCliente","newStepsWithIndex","handleMasInformacion","Svg","svg","SvgWrapper","xmlnsXlink","fx","fy","gradientTransform","stopColor","filterUnits","stdDeviation","stroke","strokeWidth","fillRule","fillOpacity","xlinkHref","strokeLinecap","BorderSection","backColor","DisplayBorder","SobrePosition","FakeInputWrapper","CheckWrapper","TipoDos","ContainerTitle","InputTitleWrapper","BulletLine","ListItemWrapper","formatListElement","listUno","setListUno","listDos","setListDos","listTres","setListTres","navidadImgSrc","InputTextWrapper","InputText","IconWrapper","overflowX","LeadInPageTrigger","lead_type","inPage","isConfigurador","LoadingScreen","KoScreen","isDealerData","isError","wat","isInstanceOf","isBuiltin","isErrorEvent","isDOMError","isDOMException","isEvent","Event","isElement","Element","isRegExp","isThenable","isSyntheticEvent","ContainerWrap","ContainerHorizontalAlignment","ContainerVerticalAlignment","_CSSTransition","_interopRequireDefault","_ReplaceTransition","_TransitionGroup","_Transition","Transition","TransitionGroup","ReplaceTransition","LoadScriptInstance","isLoaded","setIsLoaded","useLoader","storedValue","useDebounceCallback","wait","leading","storedCallback","deps","cleanup","storedListener","storedCleanup","targetEl","emptyObj","win","useWindowSize","initialWidth","initialHeight","setDebouncedSize","initialState","useDebounce","useWindowHeight","useWindowWidth","ServiceError","service","ServiceTimeoutError","NotFoundError","BadGatewayError","DataversionInvalidError","ResponseParsingError","dataversionUpdateHandler","callApi","getLocationOfDealer","LatLngBounds","getLocationOfDealerWithoutLoadInstance","latlngBounds","north","getNorthEast","east","south","getSouthWest","west","getGeometryFromGoogleResult","getGeocode","geocode","Geocoder","isAddress","isCanaryIslands","getCanaryBounds","resultType","resultIsAddress","getReverseGeocode","formatted_address","getLocationOfGooglePlace","getDistanceFromCenter","getDistanceFromLatLngCenter","updateMapVariables","geometryData","isDealer","removeWhiteSpace","formatPrefix","checkIfMorning","slotHour","getNormalizedDate","checkIfMidDay","morningHour","eveningHour","checkIfEvening","partialDataCitaConfigurador","M_OBSERVATION_BRAND","LeadGenerico","SectionWrapper","CarlineColorCard","showColorCard","setShowColorCard","loadingImage","setLoadingImage","MapaLeadsInPageSteps","LayoutWrapper","imageSrc","setImageSrc","colorInfo","setColorInfo","colorCode","mediaAssets","getColorInfo","D6MOFASideview","D6Explore1","pointsByDistanceRef","cardsTimeRef","isTime","isCarouselCard","prov","handleLoadingLayer","MapaLeadsInPage","showHorario","firstMapLoad","navigationMovingForward","mapStep","stepsHorario","Dealer","Horario","SeleccionCita","multiStepLastScreen","stepsWithoutHorario","setSelectedStep","layerRef","handleFirstLoad","initializeMultiStep","newWaitForNextStep","newWaitForPreviousStep","updateWaitForNextAndPreviousStep","updateScreenChangeVariables","nextMapaNoCompra","previousMapaNoCompra","newMultiStepScreenIndex","renderElement","onCloseMap","PartialDataMasInformacionConfigurador","PresupuestoPartialDataConfigurador","PartialDataTestDriveConfigurador","colores","MapGeneralControllerContext","useMapGeneralController","MapGeneralController","userGeolocation","boundsRef","zoomRef","mapRef","mapsRef","setHoverPoint","setClusters","setMapHasMoved","setUserIsGeoLocated","zoomListenerRef","setMounted","selectedCluster","initializeMapWithBounds","initalizeMapWithCenter","getCardinalPoints","createLatLng","newBounds","fitBounds","clusterBounds","transformGoogleBoundsToClusterBounds","setMapClusters","setZoomListener","removeZoomListener","param","supercluster","getPointCount","zoomOutMapForSearch","changeMapVariables","drawRectangle","googleBounds","transformClusterBoundsToGoogleBounds","getLatLngFromPoint","card","scrollIntoView","block","checkIfPointIsInsideBounds","moveMapIfIsSlightlyOutBounds","resetCardReferences","pointLatLng","northPoint","eastPoint","southPoint","westPoint","northDistance","distanceInPx","eastDistance","southDistance","westDistance","calculateY","calculateEastDistance","panBy","calculateSouthDistance","calculateNorthDistance","position1","fromLatLngToPoint","pixelSize","Rectangle","strokeColor","strokeOpacity","strokeWeight","fillColor","newCenter","zoomIn","newZoom","recalculateClusters","parentCluster","expansionZoom","getClusterExpansionZoom","fallbackGlobalObject","getGlobalObject","_extends","marketingCodeHistory","getMarketingCode","offerInHistory","offer","marketingCodeConfig","receiveMarketingCode","getFeatures","feature","getEquipmentlineName","modelFilter","getWheelsParams","wheel","getWheels","ErrorLoadStorageDataset","expandedConfiguration","errorMkc","matchesEntirely","regular_expression","handleErrorInRetrievingExternalConfig","isCommercial","dataService","isPrivate","checkTenant","tenant","tenantPrivate","tenantCommercial","getTenant","getDataUrl","getDataUrlWithoutTenant","TextInputExtended","oneFormFeatureService","setField","Apellido","setAgeError","setErrorMessage","isLegalAge","age","checkAgeError","ignoreValidation","emailError","setEmailError","checkEmailError","InputError","Nombre","AsYouTypeState","onCountryChange","onCallingCodeChange","defaultCountry","defaultCallingCode","international","missingPlus","digits","resetNationalSignificantNumber","initCountryAndCallingCode","nationalSignificantNumber","getNationalDigits","nationalSignificantNumberMatchesInput","carrierCode","complexPrefixBeforeNationalSignificantNumber","setCallingCode","nextDigits","DIGIT_PLACEHOLDER","DIGIT_PLACEHOLDER_MATCHER","cutAndStripNonPairedParens","cutBeforeIndex","dangling_braces","cleared_string","stripNonPairedParens","formatCompleteNumber","shouldTryNationalPrefixFormattingRule","getSeparatorAfterNationalPrefix","formattedNumber","formatNationalNumber","useNationalPrefixFormattingRule","formatNationalNumberWithAndWithoutNationalPrefixFormattingRule","formattedNationalNumber","formatNationalNumberUsingFormat","useInternationalFormat","withNationalPrefix","parseDigits","isValidFormattedNationalNumber","LONGEST_DUMMY_PHONE_NUMBER","NATIONAL_PREFIX_SEPARATORS_PATTERN","CREATE_CHARACTER_CLASS_PATTERN","CREATE_STANDALONE_DIGIT_PATTERN","NON_ALTERING_FORMAT_REG_EXP","AsYouTypeFormatter","isNANP","resetFormat","chosenFormat","template","nationalNumberTemplate","populatedNationalNumberTemplate","populatedNationalNumberTemplatePosition","matchingFormats","narrowDownMatchingFormats","checkNumberLength","formattedCompleteNumber","setNationalNumberTemplate","formatNationalNumberWithNextDigits","previouslyChosenFormat","newlyChosenFormat","chooseFormat","formatNextNationalNumberDigits","leadingDigitsPatternIndex","formatSuits","formatMatches","nationalPrefixIsMandatoryWhenFormattingInNationalFormat","leadingDigitsPatternsCount","leadingDigitsPatterns","leadingDigitsPattern","internationalFormat","getFormatFormat","createTemplateForFormat","getTemplateForFormat","internationalPrefix","getInternationalPrefixBeforeCountryCallingCode","getDigitsWithoutInternationalPrefix","strictPattern","nationalNumberDummyDigits","nationalPrefixIncludedInTemplate","numberFormat","numberFormatWithNationalPrefix","FIRST_GROUP_PATTERN","applyInternationalSeparatorStyle","populateTemplateWithDigits","VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART","VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN","VALID_FORMATTED_PHONE_NUMBER_PART","AFTER_PHONE_NUMBER_DIGITS_END_PATTERN","COMPLEX_NATIONAL_PREFIX","AsYouTypeParser","onNationalSignificantNumberChange","justLeadingPlus","extractedNumber","hasPlus","startsAt","extractFormattedPhoneNumber","_extractFormattedDigitsAndPlus","formattedDigits","extractFormattedDigitsAndPlus","startInternationalNumber","inputDigits","hasReceivedThreeLeadingDigits","appendDigits","extractIddPrefix","isWaitingForCountryCallingCode","extractCountryCallingCode","appendNationalSignificantNumberDigits","hasExtractedNationalSignificantNumber","extractNationalSignificantNumber","hasSelectedNumberingPlan","couldPossiblyExtractAnotherNationalSignificantNumber","nationalDigits","extractNationalNumberFromPossiblyIncompleteNumber","nationalNumber","onExtractedNationalNumber","prevNationalSignificantNumber","nationalSignificantNumberIndex","prefixBeforeNationalNumber","extractAnotherNationalSignificantNumber","fixMissingPlus","extractCallingCodeAndNationalSignificantNumber","numberWithoutIDD","stripIddPrefix","extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","newCallingCode","AsYouType","optionsOrDefaultCountry","getCountryAndCallingCode","formattedOutput","determineTheCountryIfNeeded","formatter","reExtractNationalSignificantNumber","getFullNumber","getNonFormattedNumber","getCallingCode","isCountryCallingCodeAmbiguous","determineTheCountry","isInternational","getNonFormattedNationalNumberWithPrefix","getCountryByCallingCode","getCountry","phoneNumber","PhoneNumber","getNumber","isPossible","getTemplate","getNonFormattedTemplate","validatePhoneNumberLength","normalizeArguments","extract","parsePhoneNumber","ParseError","PrefWrapper","TelfWrapper","hidePrefijo","TelefonoFlex","regExpNonDigit","cellphoneIsInvalid","onFocusHandler","onChangeHandler","telefonoError","setTelefonoError","telephone","setTelephone","setMinLength","setMaxLength","inputName","setInputName","isValidPhoneNumber","asYouType","prefixFromData","racePrefixFromData","racePrefix","setPrefix","prefixData","setPrefixData","callingCountriesOwn","elem","newPrefix","TelefonoPrefijo","TextAreaExtended","Mark","itemWidth","showOptions","selectY","atTheBottom","wrapperWidth","MultipleOptionCTAs","exclusiveCTA","exclusiveCTAValues","selectedLabel","setSelectedLabel","disabledAll","setDisabledAll","disabledExclusiveCTA","setDisabledExclusiveCTA","setAux","ctaRefs","selectedVal","auxDos","auxTwo","MultipleCTASelection","preSelectedValue","selectedCtaValue","StarWrapper","StarText","TextMini","stars","textBad","textGood","CTASinRespuesta","rateValue","setRateValue","numberOfStars","renderStarsText","handleField","onMouseOut","auxArr","renderStars","CustomInputRange","MarksPosition","SliderPosition","SlideLabelsPosition","SliderAndMarksPosition","sliderMarks","classList","Switch","Slider","Input","setToggle","isArrayBuffer","isBuffer","isFormData","isArrayBufferView","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","isStandardBrowserEnv","product","assignValue","deepMerge","thisArg","str","stripBOM","useFeatureServices","featureServices","_objectWithoutPropertiesLoose","excluded","sourceKeys","warnWithTrace","messages","findSalesgroup","updateSteps","createSalesgroup","useInitializeLeadForm","configRef","carConfigurationService","dispatchLead","getCarlineAndSalesgroup","carlineId","offerOrPreconfiguration","salesgroupCarline","carlineInFaContent","salesgroupInFaContent","removeStepAndReset","getAsset","assetName","assetUrl","asset","mpsId","findAsset","useLeadsWithMarketingCode","ConfirmacionLeads","static550","legal","appendJsonKey","calculadoraFields","dealerId","getAddress","getCodInterestCarline","getDescInterestCarline","getMatchHash","getMatchData","marketingCodeFields","matchFields","createOfferPrice","affinity","precio","etiquetaDGT","matchOptions","getPassengers","passengers","luggage","highlights","fuel","adult","kids","kid","lugagge","unaMaleta","escapada","unaSemana","unMes","mascota","bici","surf","snow","urban","interurban","long","allterrain","atrevido","comodo","deportivo","sostenible","elegante","seguro","sonido","tecnologico","getSalesGroup","salesGroupInfo","replacementFactory","original","wrapped","markFunctionWrapped","_Oo","addNonEnumerableProperty","getOriginalFunction","__sentry_original__","urlEncode","encodeURIComponent","getWalkSource","_oO","attr","jsonSize","encodeURI","utf8Length","normalizeToSize","serialized","normalizeValue","_events","walk","serializeValue","innerKey","extractExceptionKeysForMessage","exception","includedKeys","dropUndefinedKeys","rv","useOnlyLettersControl","directions","isDirectionalConfig","createCSSVariablesForSizes","configOrSize","cssVar","createSpacing","wrapStyles","spacingBetweenElementsStyles","createPaddings","createSpacingAroundElementsStyles","directionalPadding","createDirectionalSpacings","StyledChildWrapper","auto","breakpointWrap","createWrapStyles","wrapChildren","breakpointHorizontalAlign","animateChange","childElements","withMetadata","_arguments","checkNumberLengthForType","type_info","possible_lengths","mobile_type","mergeArrays","actual_length","minimum_length","originalFunctionToString","FunctionToString","setupOnce","resolvedSyncPromise","rejectedSyncPromise","reason","executor","_handlers","_resolve","_setResult","_reject","_value","_executeHandlers","cachedHandlers","handler","onfulfilled","onrejected","SyncPromise","finally","onfinally","isRejected","_notifyingListeners","_scopeListeners","_eventProcessors","_breadcrumbs","_user","_tags","_extra","_contexts","_sdkProcessingMetadata","newScope","Scope","_level","_span","_session","_transactionName","_fingerprint","_requestSession","addScopeListener","addEventProcessor","setUser","_notifyScopeListeners","getUser","getRequestSession","setRequestSession","requestSession","setTags","tags","setTag","setExtras","extras","setExtra","extra","setFingerprint","fingerprint","setLevel","setTransactionName","setTransaction","setSpan","getSpan","getTransaction","transaction","captureContext","updatedScope","contexts","addBreadcrumb","breadcrumb","maxBreadcrumbs","maxCrumbs","mergedBreadcrumb","timestamp","clearBreadcrumbs","applyToEvent","hint","getTraceContext","transactionName","_applyFingerprint","breadcrumbs","sdkProcessingMetadata","_notifyEventProcessors","getGlobalEventProcessors","setSDKProcessingMetadata","newData","processors","processor","final","__SENTRY__","globalEventProcessors","uuid4","crypto","msCrypto","getRandomValues","pad","parseUrl","query","fragment","protocol","relative","getFirstException","getEventDescription","event_id","firstException","eventId","addExceptionTypeValue","addExceptionMechanism","newMechanism","currentMechanism","mechanism","handled","mergedData","checkOrSetAlreadyCaught","__sentry_captured__","PREFIX","consoleSandbox","originalConsole","wrappedLevels","_enabled","logger","Logger","sid","ignoreDuration","startingTime","started","ipAddress","ip_address","did","username","release","user_agent","_version","_stack","getStackTop","bindClient","isOlderThan","setupIntegrations","pushScope","getScope","getStack","getClient","popScope","_lastEventId","finalHint","syntheticException","originalException","_invokeClient","captureMessage","captureEvent","lastEventId","beforeBreadcrumb","finalBreadcrumb","configureScope","oldHub","makeMain","getIntegration","integration","startSpan","_callExtensionMethod","startTransaction","customSamplingContext","traceHeaders","captureSession","endSession","_sendSessionUpdate","startSession","currentSession","method","carrier","getMainCarrier","sentry","hub","registry","getHubFromCarrier","setHubOnCarrier","hasHubOnCarrier","activeDomain","domain","registryHubTopStack","getHubFromActiveDomain","Severity","DEFAULT_IGNORE_ERRORS","_options","InboundFilters","clientOptions","getOptions","_mergeOptions","_shouldDropEvent","_isSentryError","_isIgnoredError","_isDeniedUrl","_getEventFilterUrl","_isAllowedUrl","ignoreInternal","ignoreErrors","_getPossibleEventMessages","denyUrls","allowUrls","whitelistUrls","blacklistUrls","oO","_getLastValidUrl","filename","stacktrace","supportsFetch","Headers","Request","Response","isNativeFetch","supportsReferrerPolicy","referrerPolicy","lastHref","instrumented","instrument","originalConsoleLevel","triggerHandlers","instrumentConsole","triggerDOMHandler","globalDOMEventHandler","makeDOMEventHandler","originalAddEventListener","__sentry_instrumentation_handlers__","handlerForType","refCount","originalRemoveEventListener","instrumentDOM","xhrproto","originalOpen","xhr","xhrInfo","__sentry_xhr__","__sentry_own_request__","onreadystatechangeHandler","status_code","endTimestamp","startTimestamp","onreadystatechange","readyStateArgs","originalSend","instrumentXHR","doc","sandbox","supportsNativeFetch","originalFetch","handlerData","fetchData","getFetchMethod","getFetchUrl","instrumentFetch","chrome","isChromePackagedApp","runtime","hasHistoryApi","pushState","replaceState","oldOnPopState","onpopstate","historyReplacementFunction","originalHistoryFunction","instrumentHistory","_oldOnErrorHandler","column","_oldOnUnhandledRejectionHandler","onunhandledrejection","addInstrumentationHandler","fetchArgs","debounceTimerID","lastCapturedEvent","globalListener","isContentEditable","shouldSkipDOMEvent","shouldShortcircuitPreviousDebounce","UNKNOWN_FUNCTION","gecko","winjs","geckoEval","chromeEval","reactMinifiedRegexp","computeStackTrace","ex","popSize","framesToPop","opera10Regex","opera11Regex","extractMessage","computeStackTraceFromStacktraceProp","popFrames","submatch","isNative","columnNumber","computeStackTraceFromStackProp","failed","extractSafariExtensionDetails","isSafariExtension","isSafariWebExtension","exceptionFromStacktrace","prepareFramesForEvent","eventFromStacktrace","localStack","firstFrameFunction","lastFrameFunction","colno","function","in_app","lineno","eventFromUnknownInput","domException","eventFromString","rejection","__serialized__","eventFromPlainObject","isRejection","synthetic","attachStacktrace","callOnHub","DSN_REGEX","dsnToString","dsn","withPassword","port","projectId","publicKey","dsnFromComponents","makeDsn","projectMatch","dsnFromString","isValidProtocol","validateDsn","tunnel","_dsnObject","_tunnel","getDsn","forceEnvelope","getBaseApiEndpoint","getStoreEndpoint","getStoreEndpointWithUrlEncodedAuth","getEnvelopeEndpointWithUrlEncodedAuth","_getIngestEndpoint","_encodedAuth","sentry_key","sentry_version","_getEnvelopeEndpoint","ignoreOnError","shouldIgnoreOnError","ignoreNextOnError","before","wrapper","__sentry_wrapped__","sentryWrapped","wrappedArguments","injectReportDialog","dsnLike","dialogOptions","endpoint","encodedOptions","getReportDialogEndpoint","onload","injectionPoint","GlobalHandlers","_installFunc","_installGlobalOnErrorHandler","_installGlobalOnUnhandledRejectionHandler","stackTraceLimit","installFunc","globalHandlerLog","ERROR_TYPES_RE","_enhanceEventWithInitialFrame","_eventFromIncompleteOnError","addMechanismAndCapture","ev0","ev0s","ev0sf","getHubAndAttachStacktrace","DEFAULT_EVENT_TARGET","TryCatch","eventTarget","setInterval","_wrapTimeFunction","_wrapRAF","_wrapXHR","eventTargetOption","_wrapEventTarget","originalCallback","xmlHttpRequestProps","wrapOptions","originalFunction","handleEvent","wrappedEventHandler","originalEventHandler","severityFromString","Warning","isSupportedSeverity","Log","Breadcrumbs","dom","addSentryBreadcrumb","category","_consoleBreadcrumb","_innerDomBreadcrumb","keyAttrs","serializeAttribute","_domBreadcrumb","_xhrBreadcrumb","_fetchBreadcrumb","_historyBreadcrumb","parsedLoc","parsedFrom","parsedTo","LinkedErrors","_key","_limit","linkedErrors","_walkErrorTree","_handler","UserAgent","Referer","Dedupe","addGlobalEventProcessor","getCurrentHub","currentEvent","previousEvent","currentMessage","previousMessage","_isSameFingerprint","_isSameStacktrace","_isSameMessageEvent","previousException","_getExceptionFromEvent","currentException","_isSameExceptionEvent","_previousEvent","currentFrames","_getFramesFromEvent","previousFrames","frameA","frameB","currentFingerprint","previousFingerprint","windowIntegrations","Sentry","Integrations","INTEGRATIONS","SDK_VERSION","installedIntegrations","filterDuplicates","integrations","accIntegration","defaultIntegrations","userIntegrations","userIntegration","integrationsNames","alwaysLastToRun","getIntegrationsToSetup","setupIntegration","ALREADY_SEEN_ERROR","backendClass","_integrations","_numProcessing","_backend","_dsn","_process","_getBackend","eventFromException","_captureEvent","promisedEvent","eventFromMessage","_isEnabled","_sendSession","getTransport","flush","_isClientDoneProcessing","clientFinished","transportFlushed","initialized","_updateSessionFromEvent","crashed","errored","exceptions","sessionNonTerminal","sendSession","ticked","interval","clearInterval","_prepareEvent","normalizeDepth","prepared","_applyClientOptions","_applyIntegrationsMetadata","finalScope","_normalizeEvent","baseClientNormalized","maxValueLength","integrationsArray","sdk","_sendEvent","sendEvent","_processEvent","finalEvent","beforeSend","sampleRate","transport","recordLostEvent","outcome","isTransaction","__sentry__","nullErr","_ensureBeforeSendRv","processedEvent","promise","_transport","_setupTransport","_exception","_hint","_message","getSdkMetadataForEnvelopeHeader","api","eventToSentryRequest","sdkInfo","eventType","useEnvelope","transactionSampling","rate","packages","enhanceEventWithSdkInfo","skippedNormalization","JSONStringifyError","newErr","innerErr","req","envelope","sent_at","sample_rates","samplingMethod","makePromiseBuffer","task","taskProducer","drain","counter","capturedSetTimeout","cachedFetchImpl","getNativeFetchImplementation","fetchImpl","sendReport","sendBeacon","credentials","keepalive","requestTypeToCategory","_buffer","_rateLimits","_outcomes","_api","_metadata","initDsn","sendClientReports","visibilityState","_flushOutcomes","_sendRequest","sessionToSentryRequest","outcomes","discarded_events","quantity","_handleResponse","requestType","_handleRateLimit","_disabledUntil","_isRateLimited","rlHeader","raHeader","headerDelay","headerDate","parseRetryAfterHeader","_fetch","sentryRequest","originalPayload","fetchParameters","getResponseHeader","Info","transportOptions","showReportDialog","platform","tracesSampleRate","setSentryHub","getSentryHub","setSentryTag","newHub","getDescFormObjective","campaign","dfo","ofertas","LeadGenericoForm","leadData","leadInfo","getHorario","horarioField","getConfiguradorData","price","leadGenericoData","DESC_WAID_LITERA","FLAG_MAILRECEPCIONLEAD","FLAG_ISQUALIFIED","REQUIERE_CONTACTO_DEALER","leadGenericoInfo","salesforce","dataEnrichment","formDataInfo","randomString","ActionTypes","INIT","PROBE_UNKNOWN_ACTION","createStore","preloadedState","enhancer","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","replaceReducer","nextReducer","observable","outerSubscribe","observeState","getUndefinedStateErrorMessage","actionType","combineReducers","reducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","previousStateForKey","nextStateForKey","bindActionCreator","actionCreator","bindActionCreators","actionCreators","boundActionCreators","_len","funcs","DIGITS","parseDigit","character","kilometrosComercialesValues","millageComercialesValues","getKilometrosInfo","meses","OneElementTemplate","TwoElementsTemplate","firstElement","secondElement","createCSSVarName","condition","argIndex","areaConversion","timeConversion","distanceConversion","altitudeKeys","latitudeKeys","longitudeKeys","MAXLON","MINLON","MAXLAT","MINLAT","earthRadius","sexagesimalPattern","km","cm","mi","sm","ft","yd","m2","km2","ft2","yd2","in2","sqm","sqkm","sqft","sqyd","sqin","getDealerKvps","dealerResponse","ErrorBoundary","NO_NAME","REACT_STATICS","childContextTypes","contextTypes","getDefaultProps","getDerivedStateFromProps","mixins","KNOWN_STATICS","caller","callee","arity","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","inheritedComponent","getOwnPropertyNames","descriptor","createComponentMessage","createComponentPropsMessage","deprecationMessage","getBaseMessage","createDeprecatedFunction","sfc","getMessageFactory","propertyDescriptor","createDeprecatedComponent","Deprecated","vargs","createDeprecatedMethodDescriptor","ConfirmacionProspects","_classCallCheck","Constructor","_inherits","subClass","superClass","isDebugBuild","__SENTRY_NO_DEBUG__","__SENTRY_BROWSER_BUNDLE__","isBrowserBundle","LeadGenericoController","SET_DEALERS","SET_POINTS","SET_SELECTED_DEALER","SET_FAVOURITE_DEALER","SET_SELECTED_INSTALLATION","SET_INSTALLATIONS","DEALERS_OR_INSTALLATIONS_MODE","SET_CARLINES","SET_SELECTED_CARLINE","SET_OFERTA","SET_SALESGROUP","SET_URL_DEALER","SET_MATCH","SET_CITA_CARLINES","dealersReducer","urlDealer","RESET_STATE","UPDATE_FORM","UPDATE_FIELDS","formDataReducer","SET_FORM_INFO","SET_FORM_RESPONSE","HIDE_LEGAL","SET_CUSTOM_LEGAL","SET_SHOW_CALENDAR_ON_LOAD","SET_DELETE_CLOSE_AND_PREVIOUS","SET_FORM_SUBMITTED","SET_INITIAL_STEPS","SET_NUMBER_OF_SCREENS","SET_SEND_DMS_FAILED","SET_STEPS_HISTORY","SET_NAVIGATION_MOVING_FORWARD","SHOW_FINAL_SCREEN","SUGGESTION_IS_DEALER","SUGGESTION_IS_ADDRESS","SUGGESTION_IS_IN_CANARY_ISLANDS","TRIGGER_EXIT_ANIMATION","UPDATE_FIRST_MAP_LOAD","UPDATE_FORM_ENDED","UPDATE_FULLSCREEN","UPDATE_GENERIC_ERROR","UPDATE_GEOMETRY","DISABLE_TRACKING","UPDATE_INITIAL_ZOOM","UPDATE_LAST_STEP","UPDATE_MULTISTEP_SCREENINDEX","UPDATE_MULTISTEPS","UPDATE_NEXT_STEP","UPDATE_SCREEN","UPDATE_SEND_FORM","UPDATE_STEP","UPDATE_STEPS","UPDATE_STEPS_HISTORY","UPDATE_SUGGESTION","UPDATE_USER_CENTER","UPDATE_USER_GEOLOCATION","UPDATE_WAIT_FOR_NEXT_STEP","formInfoReducer","previousSteps","showCalendarOnLoad","userCenter","userGeoLocation","initialZoom","formInfoInitialState","oneFormReducer","_typeof","_possibleConstructorReturn","ReferenceError","_createSuper","Derived","Super","isNativeReflectConstruct","NewTarget","Reflect","composeWithDevTools","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","__REDUX_DEVTOOLS_EXTENSION__","App","initializeService","LayoutConfigurations","full","half","areaConfigIsPlaceholder","areaConfig","rule","newAreas","createLayoutConfigurationLines","configWithoutEmptySpaces","_ignore","createFullLayoutConfiguration","configForBreakpoint","getGridAreaForConfigAndChild","Layout","filteredChildren","wrappedChildren","_add","multByPoint","_multByPoint","divByPoint","_divByPoint","mult","_mult","_div","_rotateAround","matMult","_matMult","_unit","perp","_perp","_round","mag","distSqr","angleWith","angleWithSep","getFetchOptions","serviceOptions","mockConfig","authorizationHeader","Authorization","availableHeaders","startFetching","serviceName","fetchFn","isNodeFetchRequestTimeoutError","isNetworkTimeoutError","defaultConfiguration","createLogger","getFetchWithTracing","recordOutgoingMetrics","getLogger","loggers","apparence","setApparence","sortPoints","getLeaves","sortByTime","pointsWithDms","pointsWithoutDms","pointsWithoutDmsSorted","pointsWithSlots","pointsWithDmsAndAvailableSlots","pointsWithDmsAndWithoutAvailableSlots","pointsWithoutSlots","pointsWithAtLeastOneSlot","morning","evening","afternon","pointsWithEarliestSlot","slotsFiltered","sortPointsByDistance","getEarliestSlot","filteredSlots","Background","calendarIsStep","AllContentWrapper","DealerInfoWrapper","GoBackWrapper","CalendarHandlerWrapper","AllDaysWrapper","TabsWitdh","DividerC","DayPositionWrapper","DayWrapper","presentDay","Capitalize","isDisabled","hasTitle","checkDmsAvailableInAvailability","delerHasError","CalendarioCita","setSelectedSlot","handleHideCalendarOnClick","isCalculadoraFirstStep","setIsCalculadoraFirstStep","nextMonth","setNextMonth","previousMonth","setPreviousMonth","setMonthNumber","monthOffset","setMonthOffset","monthDays","setMonthDays","yearNumber","setYearNumber","setSelectedDay","selectedFranjaHoraria","setSelectedFranjaHoraria","pastMonthBlocked","setPastMonthBlocked","setCalendar","horarios","setHorarios","tabsRef","availabilityRef","setDmsAvailable","handleChangeOfMonth","newMonthOffset","getDates","currentMonthNumber","currentMonth","firstDayOfMonth","lastDayOfMonth","calendarHasNoProblems","buildCalendar","updatedMonthDays","setVariables","monthNumber","days","createMonthDays","updatedDays","getDisabledDays","firstAvailableDay","getFirstAvailableDay","handleChangeActiveDay","handleChangeInSelectedDay","firstDayInweek","newDay","dayNumber","dayOfTheWeek","availableDates","calendarDay","foundDate","checkIfDayIsDisabled","actualDay","isSameOrBefore","msForReference","dateInMs","firstDay","dayCalendar","sortSlotsByHour","manana","setFirstDay","mediodia","tarde","monthDay","isClick","calendarDate","getSelectedSlot","selectedCalendar","handleNextMonthYear","handlePreviousMonthYear","TabsHorario","handleSelectedSlot","FranjaHoraria","handleFranjaHoraria","HourWrapper","avaiableHours","checkIfHourIsSelected","TabsWrapper","defaultIndex","handleDefaultTabIndex","idPrefix","getSlots","citaTo","removeConfigurationHash","objectFit","reduceBrightness","DecorativeImage","LazyImage","srcPlaceholder","sizes","DecorativeLazyImage","defaultEqualityCheck","areArgumentsShallowlyEqual","equalityCheck","getDependencies","dep","dependencyTypes","createSelector","memoize","memoizeOptions","_len2","_key2","recomputations","resultFunc","memoizedResultFunc","resetRecomputations","createSelectorCreator","lastArgs","lastResult","getGeometryProperty","getUserSuggestion","getUserSuggestionProperty","getUserGeolocation","getUserGeolocationProperty","truncate","snipLine","newLine","lineLength","safeJoin","delimiter","isMatchingPattern","MarginWrapper","DiaDeLaMadre","LastNavigation","handleConfirmarCita","BackgroundBlue","ImageOneAndTextWrapper","ImageTwoWrapper","ImageThreeWrapper","BottomImagesWrapper","RelativeWrapper","MovileImageWrapper","Mensaje","CardsWrapper","Card","article","bgColor","mensajes","mensajesPosition","MensajesCards","showMessages","showCard1","setShowCard1","showCard2","setShowCard2","showCard3","setShowCard3","showCard4","setShowCard4","showCard5","setShowCard5","positionsArray","setPositionsArray","activateTriggers","changeCardsPosition","mediaQueryListObject1188","mediaQueryListObject959","mediaQueryListObject654","mediaQueryListObject420","mensaje","spinnerKeyframe","Spinner","animateNumber","increment","stepTime","timer","SectionMensajes","setShowMessages","madres","setMadres","porcentaje","setPorcentaje","intersectionRatio","strokeDasharray","Anchor","freeGlobal","freeSelf","useMocks","mockId","HttpProxy","HttpsProxy","FeatureAppEnvironmentContext","useFeatureAppEnvironment","featureAppEnvironment","fontSizes","size0100","size0150","size0200","size0250","size0300","size0350","size0400","size0450","size0500","size0550","size0600","FontStyles","generateBreakpoints","generateFontType","lineHeightFactor","Copy","lineHeightCalculation","letterSpacingCalculation","reducedFontSizeCalculation","Headline","static370","static535","static565","static575","static600","static625","static750","static800","static900","static1000","static1100","static1200","grid003","grid004","grid005","grid006","grid007","grid008","grid009","grid010","grid011","grid012","grid013","grid014","grid015","grid017","grid018","grid019","grid021","grid022","grid023","grid024","dynamic0120","dynamic0130","dynamic0140","dynamic0270","dynamic0450","line100","line200","designTokens","duration300","duration400","duration500","duration600","duration2000","timing100","timing200","timing300","timing400","Label","label200","label250","label300","StyledCharacterCounter","CharacterCounter","ProspectsSteps","customSteps","Modelo","DESC_LOPD","DESC_TRANF_DATA_THIRD","getFormInfo","getFormDataWithCarline","carlineFromFaContent","COD_INTEREST_CARLINE","DESC_INTEREST_CARLINE","getFormDataAndInfo","getDynamicTokens","tokens","newPath","currentToken","subtreeResults","_fontFamilyStyles","StyledIntegratorRoot","optionsOverride","dynamicTokens","cssVars","getMediaQueryVars","_unsupportedIterableToArray","minLen","_setPrototypeOf","_inheritsLoose","_default","StyledNotificationMessage","NotificationMessage","arg_1","arg_2","arg_3","arg_4","NON_FIXED_LINE_PHONE_TYPES","getNumberType","isNumberTypeEqualTo","EXTN_PATTERN","createExtensionPattern","parseIncompletePhoneNumber","parsePhoneNumberCharacter","prevParsedCharacters","PHONE_NUMBER_START_PATTERN","AFTER_PHONE_NUMBER_END_PATTERN","parseRFC3966","throwOnError","isViablePhoneNumber","isViablePhoneNumberStart","withExtensionStripped","numberWithoutExtension","extractExtension","parseInput","formattedPhoneNumber","extractNationalNumber","exactCountry","extended","possible","isPossibleNumber","parseNumber","React__default","UA","browser","getBrowser","getCPU","engine","getEngine","os","getOS","ua","getUA","setDefaults","getNavigatorInstance","isIOS13Check","nav","maxTouchPoints","MSStream","_defineProperties","_getPrototypeOf","_assertThisInitialized","DEVICE_TYPES","BROWSER_TYPES","OS_TYPES","initialData","isMobile","isTablet","isBrowser","isSmartTV","isConsole","isWearable","mobilePayload","vendor","osVersion","checkType","isEdgeChromiumType","isEdgeType","getIPad13","isMobileSafari","isChromium","isMobileAndTabletType","isMobileOnly","isAndroid","isWinPhone","isIOS","isIE","osName","fullBrowserVersion","browserVersion","major","browserName","mobileVendor","mobileModel","engineName","engineVersion","isEdge","isYandex","isIOS13","isIPad13","isIPhone13","isIPod13","isElectron","isElectronType","isEdgeChromium","isLegacyEdge","isWindows","isMacOs","isMIUI","AndroidView","renderWithFragment","viewClassName","Fragment","BrowserView","ConsoleView","_ref10","CustomView","_ref12","IEView","IOSView","_ref4","MobileOnlyView","_ref8","MobileView","SmartTVView","_ref9","TabletView","WearableView","_ref11","WinPhoneView","_ref7","deviceDetect","browserMajorVersion","browserFullVersion","broPayload","stvPayload","consolePayload","wearPayload","withOrientationChange","_React$Component","_class","isEventListenerAdded","handleOrientationChange","onOrientationChange","onPageLoad","isLandscape","isPortrait","protoProps","staticProps","slidesOnLeft","slidesOnRight","siblingDirection","getTotalSlides","getPostClones","getPreClones","getTrackLeft","getTrackAnimateCSS","getTrackCSS","checkSpecKeys","getSlideCount","checkNavigable","getNavigableIndexes","swipeEnd","swipeMove","swipeStart","keyHandler","slideHandler","initializedState","extractObject","canGoNext","getSwipeDirection","lazySlidesOnRight","lazySlidesOnLeft","lazyEndIndex","lazyStartIndex","getRequiredLazySlides","getOnDemandLazySlides","_react","_objectSpread","lowerBound","upperBound","spec","onDemandSlides","slideIndex","lazyLoadedList","requiredSlides","currentSlide","touchObject","xDist","yDist","swipeAngle","verticalSwiping","startX","curX","startY","curY","canGo","slideCount","newObject","listNode","listRef","listWidth","trackNode","trackRef","trackWidth","vertical","centerPaddingAdj","slideHeight","listHeight","initialSlide","rtl","slidesToLoad","autoplaying","waitForAnimate","animating","lazyLoad","slidesToScroll","useCSS","finalSlide","animationLeft","finalLeft","animationSlide","targetSlide","trackStyle","swipeLeft","previousInt","slideOffset","previousTargetSlide","accessibility","dragging","touches","pageX","pageY","scrolling","swipeToSlide","edgeFriction","edgeDragged","onEdge","swiped","swiping","swipeEvent","curLeft","swipeLength","verticalSwipeLength","positionOffset","dotCount","swipeDirection","touchSwipeLength","touchThreshold","onSwipe","minSwipe","newSlide","activeSlide","currentLeft","indexes","navigables","prevNavigable","centerOffset","swipedSlide","slide","offsetLeft","currentIndex","keysArray","trackHeight","trackChildren","WebkitTransition","useTransform","WebkitTransform","msTransform","cssEase","unslick","targetLeft","variableWidth","slidesToOffset","targetSlideIndex","trackElem","childNodes","__filename","txId","handleJsonResponse","handleJsonResponseWithEmpty","handleResponse","stopRecordingMetrics","logFields","agent","totalTime","getMethodDefaults","Accept","getApi","postMethodDefaults","postApi","getCurrentPosition","geolocation","handleLocation","CAPTURING_DIGIT_PATTERN","countryMetadata","IDDPrefixPattern","matchedGroups","possibleShorterNumber","possibleShorterNationalNumber","CTAsDisfrutarID4","CTAsDesplazamientoTaigo","CTAsMotivacionCompraTaigo","CTAsOtroModeloTaigo","SACFormSteps","Contacto","SACFormData","contactoSAC","SACFormInfo","InputsWrapper","motivoOptions","setRequestType","newMotivo","MapaCitaSteps","setShowCalendar","availabilityHistory","skipHandleAvailability","cachedAvailability","checkIfAvailabilityIsInCache","saveAvailabilityInCache","dealerHistory","dealerkvps","availabiliyDealer","dealerAv","dealerInAvailability","availabilityHistoryDealer","dealerHistoryIndex","dealerAvailability","dealerFromDms","getRandomInt","createAppointmentDealer","handleDealerFlags","overhaulingServiceAvialable","pastDealer","tallerIndex","sustitucionIndex","newCocheAlTaller","newCocheSustitucion","handleReservaCitaLayer","renderReservaCita","dealerKvps","loadingPoint","setLoadingPoint","SaltoDeLinea","NewMapaCita","timeoutPreviousStep","nextMapaCita","previousMapaCita","MapaCitaDealer","navigateMultiStep","sortKD","ids","nodeSize","inc","sd","swapItem","swap","sqDist","defaultGetX","defaultGetY","ArrayType","IndexArrayType","nextAxis","within","defaultOptions","minPoints","extent","generateId","trees","timerId","createPointCluster","timeEnd","_cluster","bbox","minLng","minLat","maxLng","maxLat","easternHem","getClusters","westernHem","tree","_limitZoom","numPoints","getClusterJSON","clusterId","originId","_getOriginId","originZoom","_getOriginZoom","errorMsg","parentId","leaves","_appendLeaves","tile","_addTileFeatures","cluster_id","skipped","getClusterProperties","neighborIds","numPointsOrigin","neighborId","clusterProperties","_map","numPoints2","createCluster","abbrev","point_count_abbreviated","zoomInt","CitaPosventaCalculadoraForm","vin","modelDescr","familyCode","CitaPosventaBonosForm","bono","desc","NewsletterSteps","_arrayLikeToArray","arr2","isNodeEnv","dynamicRequire","mod","_createForOfIteratorHelper","F","it","normalCompletion","didErr","_e2","BreakpointWrapperRenderingContext","BreakpointWrapperRenderingConfig","notHydrating","ssrViewportWidth","outerContextValue","combinedMediaQuery","minSize","StyledBreakpointWrapper","BreakpointWrapper","ssrBreakpoint","ownSsrViewportWidth","contextSsrViewportWidth","isClientButNotHydrating","setIsClientButNotHydrating","useIsClientButNotHydrating","breakpointMatches","mql","setMatches","handleMediaQueryListener","useMediaQueryListener","breakpointMatchesForSsr","isBreakpointRangeReached","MIN_LENGTH_PHONE_NUMBER_PATTERN","VALID_PHONE_NUMBER","VALID_PHONE_NUMBER_START_REG_EXP","VALID_PHONE_NUMBER_WITH_EXTENSION","VALID_PHONE_NUMBER_PATTERN","shouldExtractNationalPrefix","prefixPattern","prefixMatch","capturedGroupsCount","hasCapturedGroups","possiblePositionOfTheFirstCapturedGroup","baseMerge","createAssigner","srcIndex","noGlobal","getProto","class2type","hasOwn","ObjectFunctionString","support","isWindow","preservedScriptAttributes","noModule","DOMEval","toType","jQuery","isArrayLike","jquery","pushStack","elems","prevObject","each","eq","even","grep","_elem","odd","copyIsArray","deep","expando","isReady","Ctor","globalEval","makeArray","inArray","invert","callbackExpect","guid","Sizzle","Expr","getText","isXML","tokenize","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","pushNative","booleans","whitespace","pseudos","rwhitespace","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escape","nonHex","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","unloadHandler","inDisabledFieldset","addCombinator","els","seed","nid","newSelector","newContext","ownerDocument","getElementsByClassName","qsa","testContext","toSelector","qsaError","cacheLength","markFunction","assert","addHandle","attrHandle","siblingCheck","cur","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","hasCompare","subWindow","defaultView","createComment","getById","getElementsByName","attrId","getAttributeNode","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","adown","bup","sortDetached","aup","ap","expr","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","preFilter","excess","unquoted","nodeNameSelector","operator","check","what","_argument","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","lastChild","uniqueID","pseudo","matched","matcher","unmatched","elemLang","hasFocus","selectedIndex","_matchIndexes","radio","checkbox","password","submit","combinator","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","parseOnly","soFar","preFilters","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","compiled","_name","isXMLDoc","escapeSelector","until","siblings","rneedsContext","needsContext","rsingleTag","winnow","qualifier","not","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","contents","sibling","targets","prevAll","addBack","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","rnothtmlwhite","Identity","Thrower","adoptValue","noValue","fail","Callbacks","flag","createOptions","firing","fired","firingIndex","fire","once","stopOnFalse","fireWith","Deferred","tuples","deferred","fns","newDefer","tuple","returned","onFulfilled","onRejected","maxDepth","special","that","mightThrow","notifyWith","resolveWith","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","updateFunc","rerrorNames","readyException","readyList","readyWait","doScroll","access","chainable","emptyGet","bulk","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","camelCase","acceptData","Data","uid","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","setter","clearQueue","pnum","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","adjustCSS","valueParts","tween","adjusted","maxIterations","initial","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","hide","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","cloneNode","noCloneChecked","wrapMap","thead","col","tr","td","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","th","optgroup","buildFragment","scripts","selection","ignored","attached","htmlPrefilter","rtypenamespace","returnTrue","returnFalse","expectSync","safeActiveElement","origFn","off","leverageNative","notAsync","saved","delegateType","stopImmediatePropagation","handleObjIn","eventHandle","events","handleObj","namespaces","origType","elemData","handle","triggered","bindType","delegateCount","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","originalEvent","noBubble","beforeunload","returnValue","isDefaultPrevented","defaultPrevented","relatedTarget","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","eventPhase","metaKey","charCode","pointerId","pointerType","screenX","screenY","toElement","which","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","detach","prepend","insertBefore","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","insert","rnumnonpx","getStyles","opener","old","rboxStyle","curCSS","computed","minWidth","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","trChild","trStyle","borderTopWidth","borderBottomWidth","cssPrefixes","emptyStyle","vendorProps","finalPropName","cssProps","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","cssNormalTransform","setPositiveNumber","boxModelAdjustment","dimension","isBorderBox","computedVal","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","origName","isCustomProp","setProperty","scrollboxSizeBuggy","suffix","propHooks","percent","eased","pos","linear","swing","fxNow","inProgress","rfxtypes","rrun","schedule","createFxNow","genFx","includeWidth","createTween","Animation","tweeners","stopped","prefilters","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflowY","prefilter","opt","speeds","fadeTo","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeToggle","slow","fast","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","isValidValue","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","parserErrorElem","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","lastModified","etag","isLocal","processData","contentType","accepts","responseFields","converters","ajaxSetup","ajaxPrefilter","ajaxTransport","ajax","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","abort","statusText","finalText","crossDomain","hasContent","ifModified","success","nativeStatusText","responses","isSuccess","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","wrapAll","wrapInner","htmlIsFunction","unwrap","xhrSuccessStatus","1223","xhrSupported","cors","errorCallback","xhrFields","onabort","ontimeout","responseText","binary","scriptAttrs","scriptCharset","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","animated","setOffset","curPosition","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","pageYOffset","pageXOffset","offsetParent","parentOffset","Height","Width","defaultExtra","funcName","delegate","undelegate","fnOver","fnOut","holdReady","hold","parseJSON","isNumeric","_jQuery","_$","noConflict","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","getRawTag","symToStringTag","nativeCreate","getNative","isKeyable","__data__","webpackPolyfill","deprecate","argType","appAuthentication","getAuthorizationHeader","authentication","getAuthentication","startServiceTimeout","rejectMessage","proxyCreators","proxyConfigurations","HTTP_PROXY","HTTPS_PROXY","proxyIsConfigured","getProxyAgent","ProxyCreator","raceSend","getAuthService","serviceConfig","authServiceProvider","useGetAuthService","useGetWaidLitera","DEFAULT_ANIMATION_DURATION","createTransitionForProperty","normalizeTransitionProps","createElectricTransition","transitions","PeriodoContacto","setErrorPeriodoContacto","periodoContacto","LayerManagerWrapper","sentryHub","getOfertasData","COD_FORM_ID","ofertaFields","carlineNuevo","financiacionText","getObservationBrand","getOfertasComercialesData","modalidad","cuotaText","cuota","cuotaTipo","ncuotas","entrada","cuotaFinal","tin","tae","promociones","promo","stepHorario","LeadGenericoComercialesForm","indexOfContacto","FLAG_ISPROSPECT","FLAG_ISLEAD","FLAG_SENDIMAWEB","FLAG_SENDTOSELLBYTEL","FLAG_SENDTOSCORE","FLAG_GENERATELEM","FLAG_ISCOMPANY","postalCode","horarioContacto","featureServicesMirror","saveFeatureServices","saveEnvironment","getDataServiceConfig","getMolecularCdnServiceConfig","getMolecularServiceConfig","getVicciServiceConfig","vicci","getGoogleApiKeyServiceConfig","TitleTextWrapper","MGMLayout","mgmImgSrc","BonoClienteFields","LegalMGM","isFriendForm","bonoClienteCopies","BonoClienteForm","BonoClienteData","generateSubmitData","Robinson__c","BonoClienteInfo","ThankYouMGM","BonoRegaloFields","bonoRegaloCopies","BonoRegaloForm","BonoRegaloData","BonoRegaloInfo","EnvioRegaloFields","envioRegaloCopies","EnvioRegaloForm","EnvioRegaloData","EnvioRegaloInfo","friend","MGMController","caducado","bonoCliente","setBonoCliente","envioRegalo","setEnvioRegalo","bonoRegalo","setBonoRegalo","mgm","HeaderContentPosition","EurocopaSteps","CTAsSiNoNsNc","CTASCarga","CTAsConduccion","CTAsGusta","EurocopaForm","formError","setFormError","formCaducado","setFormCaducado","idOrder","setIdOrder","carga","updateExperienciaStep","conCoche","auxSteps","entregado","experienciIndex","handleDetalle","detalleStepIndex","Trigger","Carga","Coduccion","MultipleChoiceDetalle","Recomendacion","Experiencia","idClimapro","experiencia","enCurso","conduccion","multipleChoiceDetalle","recomendacion","enCursoAux","SLI_State__c","indexFinalCorte","setShowError","handleConfirmarEnvio","otrosServicios","refProps","showError","enviarInformacion","FidelizacionLastScreenFields","useInitializeFidelizacionForm","FidelizacionSteps","CTAsListadoVentajas","FidelizacionForm","obtenerNuevas","stepsForm","QuieroTener","MasConoces","ListadoVentajas","Valoracion","ServicioPosventa","ProcesoCompra","OpcionesFinanciacion","VentajasBeneficions","InformacionExclusiva","InformacionTecnologia","OtrosServicios","FidelizacionFormData","quieroTener","masConoces","listadoVentajas","servicioPosventa","procesoCompra","opcionesFinanciacion","ventajasBeneficions","informacionExclusiva","informacionTecnologia","FidelizacionFormInfo","FidelizacionController","splittedParams","DESC_ID_CLIMAPRO","NameLastNameWrapper","setMotivoError","masInfoValue","nameError","setNameError","question","motivoError","LogoCenter","imageSmall","imageLogo","imageBig","SACOneShopController","imagesUrl","motivoBaja","TextAreaWrapper","setMasInfoValue","BajaComunicacionesController","setCampaign","MapaLeadsSteps","MapaLeads","nextMapaLeads","previousMapaLeads","MatchProspectForm","ProspectsPosventaSteps","ProspectsPosventaForm","copiesThankYou","titleCopyRegular","titleCopyBold","completeInfo","setCompletInfo","CheckboxCheckmark","CheckboxBorder","StyledCheckboxWrapper","StyledCheckboxCheckmark","StyledFocusWrapper","StyledErrorText","handleBlur","handleFocus","Checkbox","MasInformacionSteps","MasInformacionForm","partialData","setPartialData","leadsMasInformacionPartialData","CodigoPostal","citaVentaInfo","leadsStockPartialData","DiaDeLaMadreSteps","CTAsTipoVehiculo","DiaDeLaMadreForm","setNotAClient","MotherEmail","TipoVehiculo","messageText","otherEmail","tipoVehiculo","handleNotAClient","_isNativeReflectConstruct","sham","_createClass","defaultFunctionName","getFunctionName","isPossiblePhoneNumber","isNonGeographicCallingCode","formatRFC3966","getExtensionDigitsPattern","purpose","optionalExtnSuffix","possibleSeparatorsBetweenNumberAndExtLabel","possibleSeparatorsNumberExtLabelNoComma","shorterNumber","nationalPhoneNumber","possibleCountries","selectCountryFromList","parsePhoneNumberFromString","Services","hasLeadingSlash","hasTrailingSlash","getUrl","basePath","getMockBaseUrl","queryString","getQueryString","VICCI_DATAVERSION_INVALID_CODES","handleVicciDataversionUpdate","vicciPostDataversionUpdateHandler","saveStorageDataset","financeParameters","dataversion","ruleDate","ttl","configurationBody","modelId","exteriorId","interiorId","featureIds","financing","financingProductUID","financingDetails","mapToVicciConfiguration","resolveMarketingCode","marketingcode","loadStorageDataset","deprecations","generateTextAppearance","main","out","scrollIndicator","tabIndicator","shimColor","eyeCatcherColor","transparentColor","decoratorColor","focusColor","separatorColor","backgroundGradient","darkColor","lightColor","validation","keepContext","enhanceContrast","recipe150","recipe380","recipe550","recipe600","recipe700","recipe800","recipe850","recipe925","recipe950","label0250","label0300","primaryHover","inverted","addProxy","getFallbackTheme","deprecation","warnIfDeprecated","fallbackTheme","recursivelyAddProxies","resolveDesignTokenValues","themeSubTree","tokensOverride","resolvedTheme","propertyPath","designTokenValue","getDesignTokenValue","getTheme","currentTheme","newTheme","themeSet","parentTheme","addLanguageAndDirectionToTheme","ThemeProviderContext","ThemeProvider","themeContextOptions","validChildren","SINGLE_IDD_PREFIX_REG_EXP","DEFAULT_OPTIONS","formatExtension","addExtension","fromCountry","iddPrefix","getIddPrefix","formatIDD","formatAs","availableFormats","nationalNnumber","lastLeadingDigitsPattern","chooseFormatForNumber","isCountryCode","national_number","isValidNumber","Parent","Class","_cache","originalModule","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","nextTick","argv","versions","prependListener","prependOnceListener","cwd","chdir","umask","baseIsNative","baseGetTag","isLength","aKeys","bKeys","keysMap","aValue","bValue","aValueKeys","bValueKeys","aValueKey","keysToLookup","foundKey","checkedValue","_constants","sexagesimal","sec","decimal","normalizeHeaderName","enhanceError","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","adapter","transitional","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","transformRequest","encoder","stringifySafely","transformResponse","strictJSONParsing","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","parsePhoneNumberFromString_","dealerAttributes","checkIfIsTestPincode","testPincodePersonData","testPincodePersonLeadDataPermite","testPincodePersonLeadDataNoPermite","testPincodePersonVehicleDataPermite","testPincodePersonVehicleDataNoPermite","testPincodePersonVehiclePedidoDealerDataPermite","testPincodePersonVehiclePedidoDealerDataNoPermite","leadAttributes","orderAttributes","getPersonAttributes","permiteLssi","vehicleAttributes","oneformCoreServiceDefinition","optionalDependencies","oneFormData","oneFormCoreDpsIsLoaded","BehaviorSubject","provider","featureService","updatedData","setDpsData","useAuth","checkData","checkLogin","profileService","ProfileServiceV1","isAuthenticated","getUserProfile","profile","getUserEmail","parsedPhone","firstName","lastName","checkPincode","isRetry","getUrlParams","checkUrl","contactado","estado","cem","adviser","or","dat","retryPincodeLoad","updatedPerson","updatedOneFormData","subscribeToFields","featureAppDefinition","ownFeatureServiceDefinitions","asyncSsrManager","serializedStateManager","scheduleRerender","serializedState","getSerializedState","circumference","spin","growth","StyledSpinner","BackgroundPath","ForegroundPath","circlePathData","reactIs","contextType","getDerivedStateFromError","MEMO_STATICS","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","blacklist","targetStatics","sourceStatics","htmlTreeAsString","currentElem","sepLength","nextStr","_htmlElementAsString","keyAttrPairs","keyAttr","keyAttrPair","allowedAttrs","getLocationHref","_getLatitude","_getLongitude","_toRad","_robustAcos","accuracy","fromLat","fromLon","toLat","toLon","USE_SYMBOL","__g","dP","createDesc","__webpack_exports__","MAIN_SELECTOR","ID_SELECTOR","DEFAULT_SECTION","DEFAULT_SLIDE","IObject","defined","core","redefine","ctx","$export","own","IS_FORCED","IS_GLOBAL","G","IS_STATIC","IS_PROTO","IS_BIND","expProto","U","W","R","anObject","IE8_DOM_DEFINE","toPrimitive","O","Attributes","$keys","enumBugKeys","__e","SRC","TO_STRING","$toString","TPL","inspectSource","safe","bitmap","compName","_console","UNSCOPABLES","ArrayProto","shared","def","TAG","stat","SHARED","copyright","addToUnscopables","Iterators","toIObject","iterated","kind","_t","_k","Arguments","hiddenKeys","dPs","IE_PROTO","Empty","createDict","iframeDocument","iframe","write","Properties","cof","toInteger","toLength","toAbsoluteIndex","IS_INCLUDES","$this","fromIndex","arrayIndexOf","aFunction","DESCRIPTORS","META","KEY","$fails","setToStringTag","wks","wksExt","wksDefine","enumKeys","_create","gOPNExt","$GOPD","$DP","gOPD","gOPN","$Symbol","$JSON","_stringify","HIDDEN","TO_PRIMITIVE","isEnum","SymbolRegistry","AllSymbols","OPSymbols","ObjectProto","USE_NATIVE","QObject","findChild","setSymbolDesc","protoDesc","isSymbol","$defineProperty","$defineProperties","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","es6Symbols","wellKnownSymbols","keyFor","useSetter","useSimple","replacer","$replacer","LIBRARY","exported","external_react_","external_react_default","components_Wrapper","windowExists","react__WEBPACK_IMPORTED_MODULE_2__","react__WEBPACK_IMPORTED_MODULE_2___default","_Logger__WEBPACK_IMPORTED_MODULE_3__","_selectors__WEBPACK_IMPORTED_MODULE_4__","ReactFullpageShell","fp_easings","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","__WEBPACK_AMD_DEFINE_RESULT__","oRequestAnimationFrame","msRequestAnimationFrame","addEvent","prefixPointerEvent","MSPointerEvent","momentum","hasTransform","hasPerspective","hasTouch","hasPointer","PointerEvent","hasTransition","isBadAndroid","appVersion","transitionTimingFunction","transitionDuration","transitionDelay","transformOrigin","preventDefaultException","touchstart","touchmove","touchend","mousedown","mousemove","mouseup","pointerdown","pointermove","pointerup","MSPointerDown","MSPointerMove","MSPointerUp","ease","quadratic","back","bounce","elastic","tap","createEvent","initEvent","MouseEvent","_constructed","scroller","scrollerStyle","resizeScrollbars","mouseWheelSpeed","snapThreshold","disablePointer","disableTouch","disableMouse","directionLockThreshold","bounceTime","bounceEasing","HWCompositing","useTransition","bindToWrapper","onmousedown","eventPassthrough","scrollX","freeScroll","resizePolling","shrinkScrollbars","invertWheelDirection","directionX","directionY","_init","refresh","wrapperStyle","indicator","indicatorStyle","listenX","listenY","interactive","resize","defaultScrollbars","shrink","speedRatioX","speedRatioY","sizeRatioX","sizeRatioY","maxPosX","maxPosY","_initEvents","scrollbars","indicators","_initIndicators","mouseWheel","_initWheel","snap","_initSnap","keyBindings","_initKeys","resizeTimeout","_execEvent","_transitionEnd","isInTransition","_transitionTime","resetPosition","_start","initiated","moved","distX","distY","directionLocked","getComputedPosition","_translate","absStartX","absStartY","pointX","pointY","_move","hasHorizontalScroll","hasVerticalScroll","maxScrollX","maxScrollY","_end","flick","deceleration","wrapperHeight","_nearestSnap","currentPage","snapSpeed","_resize","scrollerWidth","scrollerHeight","wrapperOffset","scrollBy","_transitionTimingFunction","_animate","scrollToElement","transitionTime","updatePosition","interactiveScrollbars","customStyle","fadeScrollbars","wheelTimeout","_wheel","deltaMode","deltaX","deltaY","wheelDeltaX","wheelDeltaY","wheelDelta","goToPage","snapStepX","snapStepY","pages","snapThresholdX","snapThresholdY","pageUp","pageDown","home","down","keyTime","keyAcceleration","fadeTimeout","lastPointX","lastPointY","_pos","indicatorWidth","minBoundaryX","maxBoundaryX","indicatorHeight","minBoundaryY","maxBoundaryY","ignoreBoundaries","IScroll","fp_scrolloverflow","fp_utils","scrollOverflowHandler","wrapContent","scrollable","verticalCentered","iscrollOptions","fullpage_api","afterRenderActions","createScrollBarForAll","createScrollBar","wheelOn","wheelOff","refreshId","iScrollInstances","lastScrollY","hasBeenInit","hideScrollbars","msMaxTouchPoints","deepExtend","scrollOverflowOptions","toggleWheel","fp_iscrollInstance","setIscroll","beforeLeave","isScrolled","getScrollTop","silentMoveTo","iscrollHandler","fullpage","cn","sn","un","dn","vn","pn","hn","gn","mn","Sn","bn","wn","yn","En","xn","Ln","An","Mn","Tn","On","kn","Cn","Hn","zn","Rn","In","Nn","Bn","jn","Pn","Yn","Wn","Dn","Vn","Zn","Xn","Gn","Un","Fn","Qn","Jn","yo","Kn","$n","qn","previousElementSibling","eo","nextElementSibling","no","io","oo","ro","lo","ao","co","so","uo","xo","fo","vo","po","go","clientTop","mo","So","bo","wo","initCustomEvent","Eo","Lo","Ao","Mo","To","NodeList","getList","isArrayOrList","createElementFromHTML","untilAll","menu","anchors","lockAnchors","navigationPosition","navigationTooltips","showActiveTooltip","slidesNavigation","slidesNavPosition","scrollBar","hybrid","css3","autoScrolling","fitToSectionDelay","easingcss3","loopBottom","loopTop","loopHorizontal","continuousVertical","continuousHorizontal","interlockedSlides","dragAndMove","offsetSections","resetSliders","fadingEffect","scrollOverflow","scrollOverflowReset","touchSensitivity","touchWrapper","bigSectionsDestination","keyboardScrolling","animateAnchor","recordHistory","controlArrowColor","sectionsColor","fixedElements","responsive","responsiveWidth","responsiveHeight","responsiveSlides","parallax","parallaxOptions","cards","cardsOptions","perspective","fadeContent","fadeBackground","sectionSelector","slideSelector","v2compatible","afterRender","afterResize","afterReBuild","afterSlideLoad","afterResponsive","lazyLoading","L","C","Vt","move","I","ot","Y","V","X","re","setRecordHistory","ie","setScrollingSpeed","le","setFitToSection","setLockAnchors","setMouseWheelScrolling","setKeyboardScrolling","fe","moveSectionUp","moveSectionDown","ve","pe","he","moveSlideRight","ge","moveSlideLeft","ze","reBuild","Se","setResponsive","we","getFullpageData","internals","canScroll","isScrollAllowed","getDestinationPosition","Ve","isTouch","getXmovement","Ht","removeAnimation","Ot","getTransforms","Ut","Ke","addAnimation","Tt","performHorizontalMove","xt","landscapeScroll","wt","silentLandscapeScroll","Xt","keepSlidesPosition","De","silentScroll","Gt","styleSlides","Me","styleSection","Oe","scrollHandler","He","getEventsPage","Zt","getMSPointer","isReallyTouch","Be","usingExtension","Qt","toggleControlArrows","yt","touchStartHandler","je","touchMoveHandler","Ne","ue","ut","Lt","vt","ye","xe","Jt","Qe","getActiveSection","rn","getActiveSlide","Ue","translate3d","translate3dH","Ce","isNormalScrollElement","fullpage_extensions","Ae","webkitTransform","OTransform","MozTransform","kt","zt","ke","Mt","Dt","st","Le","mt","St","Ee","J","K","ee","oe","qt","Fe","onmousewheel","Ye","ht","Ft","Ie","Ze","Nt","Bt","We","Rt","Te","Je","qe","Xe","activeSection","anchorLink","sectionIndex","$t","getCurrentScroll","getDocumentHeight","Ct","leavingSection","localIsResizing","tt","Pt","Re","getScrollSection","Pe","Kt","isTesting","isGrabbing","isScrollingDown","getSectionPosition","isMovementUp","dtop","yMovement","fp_dropEffectExtension","dropEffect","wrapAroundElements","setPrevious","It","tn","destiny","slideAnchor","prevSlide","prevSlideIndex","Ge","ln","nt","$e","onloadeddata","hasAttribute","et","postMessage","rt","removedNodes","isEqualNode","bt","destinyPos","slidesNav","Wt","xMovement","Et","afterSlideLoads","isInterlockedSlide","At","jt","Yt","nn","anchor","isFirst","baseUrl","currentDir","fullMatch","origUrl","newUrl","unquotedOrigUrl","$1","stylesInDom","isOldIE","getTarget","getElement","styleTarget","HTMLIFrameElement","singleton","singletonCounter","stylesInsertedAtTop","fixUrls","addStylesToDom","domStyle","addStyle","listToStyles","newStyles","part","sourceMap","insertStyleElement","insertInto","lastStyleElementInsertedAtTop","insertAt","removeStyleElement","createStyleElement","addAttrs","styleIndex","applyToSingletonTag","URL","createObjectURL","revokeObjectURL","btoa","createLinkElement","updateLink","applyToTag","newObj","DEBUG","newList","mayRemove","textStore","replaceText","replacement","cssNode","autoFixUrls","convertToAbsoluteUrls","unescape","oldSrc","useSourceMap","cssMapping","sourceMapping","sourceURLs","sources","sourceRoot","cssWithMappingToString","mediaQuery","alreadyImportedModules","locals","SPECIES","speciesConstructor","toObject","asc","TYPE","$create","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","callbackfn","$find","forced","MATCH","searchString","NAME","INCLUDES","$includes","fails","IteratorPrototype","$iterCreate","ITERATOR","BUGGY","KEYS","VALUES","returnThis","Base","DEFAULT","IS_SET","FORCED","getMethod","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","$iterators","getKeys","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","Collection","pIE","windowNames","getWindowNames","gOPS","getSymbols","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","NEED","fastKey","getWeak","onFreeze","Fullpage","react__WEBPACK_IMPORTED_MODULE_8__","react__WEBPACK_IMPORTED_MODULE_8___default","_Logger__WEBPACK_IMPORTED_MODULE_10__","_selectors__WEBPACK_IMPORTED_MODULE_11__","fullpageCallbacks","ReactFullpage","_this$props","importVendors","sectionCount","buildOptions","markInitialized","firstArr","secondArr","newSectionCount","getSectionCount","newSlideCount","_this$state","_this$props$sectionSe","_this$props$slideSele","_this$props2","fpUtils","fpEasings","lastEvent","_this$props3","makeState","callbackParameters","fromArgs","argList","SYMBOL","strfn","rxfn","$match","regexp","__createBinding","k2","__setModuleDefault","__importStar","__importDefault","DashboardTile","Border","TileSize","styled_components_1","components_core_1","tileAreaStyle","gridRowEnd","gridColumnEnd","encode","paramsSerializer","serializedParams","hashmarkIndex","__CANCEL__","settle","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","requestData","auth","baseURL","responseURL","timeoutErrorMessage","cookies","xsrfValue","onDownloadProgress","onUploadProgress","cancelToken","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","axiosKeys","otherKeys","Cancel","baseAssignValue","getPrototype","overArg","objectProto","baseIsArguments","isObjectLike","isArguments","stubFalse","freeExports","freeModule","Buffer","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","arrayLikeKeys","baseKeysIn","reIsUint","ArrowUp","ArrowDown","ChevronLeft","ChevronRight","ContactDealer","Route","Magnifier","Add","Remove","Locate","Calc","Calendar","Interior","Mail","FleetServicePrivate","CarPickupService","StarOutline","StarFilled","Reload","Edit","iconTransitionDuration","StyledLabelText","hasIcon","hasValue","hasClearButton","StyledAdditionalInfo","StyledClearButton","StyledClearButtonWrapper","TextInputInner","validateInputField","prevState","additionalFeedback","clearIconLabel","isClearButtonVisible","onClear","autoComplete","TextInput","StyledTextArea","textarea","TextArea","validateTextArea","StyledSelect","Select","propAppearance","_isDecimal","_isSexagesimal","_sexagesimalToDecimal","_isValidCoordinate","_getCoordinateKeys","toDecimal","_getCoordinateKey","altitude","StyledDescription","StyledFieldset","errorShouldBeVisible","Fieldset","Tabs","indicatorLeft","tabRefs","activeTabDOMNode","activeTabRect","tabsDOMNode","tabsRect","updateIndicatorBoundaries","previousActiveIndex","updateFocus","StyledTabBar","tab","StyledTab","StyledTabAnchor","StyledInteractionIndicator","copysThankYou","nombre","completarBold","setCompletarBold","setbodyCopy","setCtaUrl","StyledDivider","hr","isVertical","Divider","StyledList","noMargins","List","childrenArr","markerSize","childrenElements","StyledListItem","ListItem","EXITING","ENTERED","ENTERING","EXITED","UNMOUNTED","_interopRequireWildcard","_reactDom","_reactLifecyclesCompat","initialStatus","parentGroup","transitionGroup","isMounting","enter","appearStatus","unmountOnExit","mountOnEnter","nextCallback","getChildContext","updateStatus","nextStatus","cancelNextCallback","getTimeouts","mounting","performEnter","performExit","appearing","timeouts","enterTimeout","onEnter","safeSetState","onEntering","onTransitionEnd","onExit","onExiting","setNextCallback","_this4","doesNotHaveTimeoutOrListener","addEndListener","only","polyfill","componentWillMount","componentWillReceiveProps","componentWillUpdate","__reactInternalSnapshotFlag","__reactInternalSnapshot","getSnapshotBeforeUpdate","isReactComponent","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","componentName","newApiName","maybeSnapshot","snapshot","__suppressDeprecationWarning","classNamesShape","timeoutsShape","_propTypes","_ChildMapping","handleExited","firstRender","appeared","mounted","prevChildMapping","getInitialChildMapping","getNextChildMapping","currentChildMapping","getChildMapping","childFactory","insertRule","sheet","cssRules","hideAll","globalHide","cascade","effectMap","ssrFadeout","fadeOutEnabled","observerMode","disableSsr","collapseend","ie10","IntersectionObserverEntry","timing","domLoading","FormControllerWrapper","FormController","newStep","newstep","weekDay_Day_Hour","hourAndMinute","weekDay_DayNumber_Month_Hour","weekDay_DayNumber_Month","weekDay_DayNumber_De_Month","year_MonthNumber_DayNumber","getYYYYMMDD","getYYYYMMDDx","getActualMonth","getNextActualMonth","getPreviousActualMonth","getActualMonthNumber","getActualYearNumber","LT","LTS","LL","LLL","LLLL","relativeTime","future","past","ordinal","getTrigger","isNull","freeGlobalThis","globalThis","debounce","lastThis","maxWait","lastCallTime","lastInvokeTime","maxing","trailing","useRAF","invokeFunc","startTimer","pendingFunc","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeSinceLastInvoke","timeWaiting","remainingWait","isInvoking","cancelTimer","setObjectValues","base64_url_decode","InvalidTokenError","isAxiosError","fileName","lineNumber","onloadend","directMergeKeys","getMergedValue","mergeDeepProperties","CemController","posventa","setPosventa","venta","setVenta","setDealer","setInstallations","dealerCode","setDealerCode","setCaducado","idVehicleRef","idDealerRef","idOrderRef","ok","ele","idVehicle","idDealer","formDate","Dealer_Code_Vaesa__c","dealerGet","handleDescWrongData","datosIncorrectos","handleDescVehObservations","satisfaccionVehiculo","satisfaccionVehiculoMotivo","handleDescAssessmentTerm","satisfaccionTrato","satisfaccionTratoMotivo","handleDescAssessmentOrgDealer","satisfaccionOrganizacion","satisfaccionOrganizacionMotivo","handleDescAssessmentQuaDealer","satisfaccionTrabajoRealizado","satisfaccionTrabajoRealizadoMotivo","handleDescAssessmentAdvDealer","satisfaccionAsesor","satisfaccionAsesorMotivo","handleDescExperienceVwde","satisfaccionConcesion","satisfaccionConcesionMotivo","LabelInfoWrapper","firstOpen","setFirstOpen","secondOpen","setSecondOpen","checkedOne","setCheckedOne","checkedTwo","setCheckedTwo","checkedThree","setCheckedThree","enviarConcesion","concesion","publicarRespuestas","CemSteps","lssiPincode","setLssiPincode","stepsPosventa","DatosCorrectos","DatosIncorrectos","Explicacion","SatisfaccionTrato","SatisfaccionTratoMotivo","SatisfaccionOrganizacion","SatisfaccionOrganizacionMotivo","SatisfaccionTrabajoRealizado","SatisfaccionTrabajoRealizadoMotivo","SatisfaccionConcesion","SatisfaccionConcesionMotivo","AspectoSatisfaccionMotivo","Informado","AlternativaTransporte","TiempoSatisfaccion","MotivoVisita","MasPreguntas","SatisfaccionVehiculo","SatisfaccionVehiculoMotivo","EnviarConcesion","DatosPersonales","PublicarRespuestas","ThankYouCEM","betweenOneAndThreeStars","fourOrFiveStars","noRatingStars","showSatisfaccionConcesion","satisfaccionConcesionFirstRequisite","satisfaccionConcesionSecondRequisite","showOtroAspecto","otroAspectoFirstRequisite","otroAspectoSecondRequisite","CemPosventa","datosCorrectos","datosIncorrectosPosventa","masPreguntas","modeloRef","IDClimapro__c","aspectoSatisfaccionMotivo","informado","alternativaTransporte","tiempoSatisfaccion","motivoVisita","FORM_Full_Address__c","TXT_Location__c","Frame__c","addingStepsLogic","stepsToAdd","alternativeSteps","stepsToUse","indexesInSteps","addSteps","removeSteps","stepsToDelete","replaceWithLeadInfo","PKL_order_brand__c","replaceModelo","modifyTitleSteps","replaceCallback","getOrderStep","sc4","sc5","sc6","randomizeSteps","sc4Motivo","sc5Motivo","sc6Motivo","secondStep","thirdStep","handleRatingStars","nameOfMotivoStep","pastSteps","newsteps","removeAndAddStepAtTheSameTime","stepToRemove","stepToAdd","removedSteps","addedSteps","removeSatisfaccionConcesion","removeAspectoSatisfaccion","randomizedSteps","stepsVenta","SatisfaccionAsesor","SatisfaccionAsesorMotivo","TestDrive","ContactoSatisfaccion","CemVenta","DAT_delivery__c","testDrive","contactoSatisfaccion","useInitializeNoRenovacionForm","NoRenovacionController","setEstado","yaTengo","setYaTengo","noTengo","setNoTengo","noQuiero","setNoQuiero","NoRenovacionYaTengo","NoRenovacionNoTengo","NoRenovacionNoQuiero","NoRenovacionNewCar","Introduccion","UsadoNuevo","LugarCompra","usadoNuevo","lugarCompra","multipleChoide","handleMotivo","handleDetalleMotivo","MapaNoRenovacionSteps","InputErrorLegales","compartirError","NoRenovacionSigueBuscando","NoRenovacionNoBuscaSteps","nextMapaNoRenovacion","previousMapaNoRenovacion","quieroVolkswagen","updateModeloInteresStep","getModeloInteresOutputs","getModeloInteresOutputsText","modeloIndex","mapaIndex","QuieroVolkswagen","TipoCoche","OtraMarca","tipoCoche","handleStepsNoVolkswagen","loadingForm","setLoadingForm","razones","formasMovilidad","FormasMovilidad","Razones","MasInformacionRazones","masInformacionRazones","handleSteps","handleDetalleFormasMovilidad","handleDetalleRazones","useInitializeNoCompraForm","NoCompraController","NoCompraYaTengo","NoCompraNoTengo","NoCompraNoQuiero","NewCarFormSteps","FechaCompra","Plazos","Visita","Precio","Equipamiento","Consumo","Garantia","Financiacion","External_Id_Climapro__c","plazos","visita","equipamiento","consumo","garantia","financiacion","MapaNoCompraSteps","ctasNoCompra","MapaNoCompra","SigueBuscandoFormSteps","modeloUno","modeloDos","NoCompraNoBuscaSteps","MarginTop","EmpresasFormSteps","inputValueName","setInputValueName","pristineName","setPristineName","errorName","setErrorName","regExpName","inputValueCIF","setInputValueCIF","pristineCIF","setPristineCIF","errorCIF","setErrorCIF","regExpCIF","handleChangeName","handleChangeCIF","fleetOptions","EmpresasForm","Empresa","Fleet","EmpresasFormData","businessName","CIF","fleet","EmpresasFormInfo","MapaEmpresasSteps","MapaEmpresas","nextMapaEmpresas","previousMapaEmpresas","LEMContactadoSteps","contactIsYes","LEMContactadoForm","modeloPrecargado","proximoContacto","ProximoContacto","TipoVisita","LEMLastScreenFields","EnviarInformacion","LEMContactadoData","modifyStepsNextContact","indexOfVisita","getCarlineFields","LEMContactadoInfo","LEMNoContactadoSteps","LEMNoContactadoForm","LEMNoContactadoData","indexOfEmailTelefono","checkIfDataChanged","LEMNoContactadoInfo","LEMController","setPresubmit","setContactado","leadCreatedDate","CreatedDate","handleConfirmarCallMe","CallMeOfertaSteps","CallMeOfertaForm","NombreTelefono","dataPro","DESC_LSSI","DESC_LOPD_GDPR_PERFILADO","motorizacion","modelo_code","dataPre","PRE","hostname","LanzamientoTaigoSteps","LanzamientoTaigoForm","otroModelo","Desplazamiento","Edad","MotivacionCompra","OtroModelo","desplazamiento","edad","motivacionCompra","RadioButtonInner","RadioButtonBorder","StyledRadioWrapper","StyledRadioInner","BlueBackground","startColumn","Grid","CitaVentaSteps","CitaVentaForm","citaVentaSteps","leadsCitaVentaData","PresupuestoSteps","PresupuestoForm","leadsPresupuestoPartialData","TestDriveSteps","TestDriveForm","leadsTestDrivePartialData","moveLeft","RaceFormWrapper","showFullWidth","PrefijoWrapper","CTAWrapperFullScreen","showFullCta","initialSizeRef","containerWidth","setContainerWidth","setIsSent","setIsSending","setSuccessful","setDisabledButton","canal","telefono","OfertaSteps","OfertaForm","citaVentaData","transformMillage","kmCalculadora","symbolObservablePonyfill","punycode","util","Url","slashes","urlParse","resolveObject","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","querystring","parseQueryString","slashesDenoteHost","queryIndex","splitter","uSplit","simplePath","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","toASCII","esc","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","isAbsolute","memoBuilder","hasWeakSet","WeakSet","Events","EE","emitter","_eventsCount","clearEvent","eventNames","listenerCount","a3","a4","a5","Normalize","_styledComponents","createGlobalStyle","mime","bom","msSaveBlob","blobURL","webkitURL","tempLink","download","useScrollPosition_1","useScrollPosition","arrayWithoutHoles","iterableToArray","nonIterableSpread","FUNC_ERROR_TEXT","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","nativeMax","nativeMin","toNumber","isBinary","_objectWithoutProperties","make","big","mirror","opposite","lookup","_globals","Fade","forever","animationFillMode","_wrap2","_wrap","reg","TileGridContainer","containerAreaStyle","gridColumn","gridRow","startRow","TileGridLayout","local","getUTCFullYear","getUTCMonth","getUTCDate","getUTCDay","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","$localOffset","isUTC","isBetween","weekYear","week","offsetName","zone","afternoon","milliseconds","SS","Do","ZZ","hours","customParseFormat","weProfileEndpoint","weProfileFacade","WeProfileFacade","userProfile","isNotBlank","salutation","personalDataResponse","convertPersonalDataResponse","patchOperations","op","patch","decodedIdToken","getIdToken","responseData","addresses","phoneNumbers","primaryPhoneNumber","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","propName","propFullName","secret","getShim","ReactPropTypes","symbol","instanceOf","objectOf","oneOf","exact","checkPropTypes","$$typeof","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","Op","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","mark","awrap","skipTempReset","rootRecord","rval","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","Axios","mergeConfig","createInstance","defaultConfig","axios","instanceConfig","CancelToken","isCancel","promises","spread","InterceptorManager","dispatchRequest","interceptors","chain","interceptor","fulfilled","rejected","getUri","use","eject","transformData","throwIfCancellationRequested","throwIfRequested","normalizedName","isAbsoluteURL","combineURLs","requestedURL","relativeURL","ignoreDuplicateOf","originURL","msie","urlParsingNode","requestURL","expires","secure","cookie","toGMTString","resolvePromise","Stack","assignMergeValue","baseFor","baseMergeDeep","keysIn","safeGet","customizer","srcValue","stackClear","stackDelete","stackGet","stackHas","stackSet","assocIndexOf","MapCache","pairs","LARGE_ARRAY_SIZE","isMasked","toSource","reIsHostCtor","funcProto","funcToString","reIsNative","nativeObjectToString","isOwn","unmasked","coreJsData","maskSrcKey","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","Hash","hashClear","hashDelete","hashGet","hashHas","hashSet","getMapData","createBaseFor","fromRight","iteratee","keysFunc","cloneBuffer","cloneTypedArray","initCloneObject","isArrayLikeObject","toPlainObject","mergeFunc","stacked","isCommon","isArr","isBuff","isTyped","allocUnsafe","isDeep","cloneArrayBuffer","byteOffset","arrayBuffer","byteLength","baseCreate","isPrototype","objectCreate","objectCtorString","typedArrayTags","freeProcess","copyObject","isNew","baseTimes","isIndex","inherited","isArg","isType","skipIndexes","nativeKeysIn","isProto","baseRest","isIterateeCall","assigner","overRest","setToString","otherArgs","baseSetToString","shortOut","nativeNow","lastCalled","stamp","viewClasses","normalizeName","iteratorFor","consumed","bodyUsed","fileReaderReady","reader","readBlobAsArrayBuffer","FileReader","readAsArrayBuffer","bufferClone","buf","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","_bodyFormData","_bodyArrayBuffer","isConsumed","readAsText","readArrayBufferAsText","decode","oldValue","upcased","signal","reParamSearch","bytes","bodyInit","redirectStatuses","redirect","RangeError","DOMException","aborted","abortXhr","rawHeaders","fixUrl","maxInt","regexPunycode","regexNonASCII","regexSeparators","stringFromCharCode","mapDomain","ucs2decode","ucs2encode","digitToBasic","adapt","firstTime","baseMinusTMin","oldi","baseMinusT","codePoint","handledCPCount","basicLength","handledCPCountPlusOne","qMinusT","qs","sep","maxKeys","kstr","vstr","xs","stringifyPrimitive","objectKeys","ks","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","MODEL","VENDOR","VERSION","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","regexes","mergedRegexes","str1","str2","lowerize","mapper","rgx","arrays","oldsafari","1.2","1.3","amazon","sprint","HTC","Sprint","windows","ME","2000","XP","Vista","7","8","8.1","10","RT","cpu","UAParser","uastring","getResult","rgxmap","architecture","setUA","BROWSER","MAJOR","CPU","DEVICE","EMBEDDED","ENGINE","OS","Zepto","_innerSlider","_json2mq","_defaultProps","_innerSliderUtils","hasNativeReflectConstruct","enquire","_super","innerSlider","slickPrev","slickNext","dontAnimate","_responsiveMediaHandlers","breakpt","bQuery","newProps","resp","slidesPerRow","currentWidth","row","InnerSlider","innerSliderRefHandler","_initialState","_lodash","_classnames","_track","_dots","_arrows","_resizeObserverPolyfill","sourceSymbolKeys","adaptiveHeight","onInit","onLazyLoad","updateState","adaptHeight","lazyLoadTimer","progressiveLazyLoad","onWindowResized","callbackTimers","onfocus","pauseOnFocus","onSlideFocus","onblur","onSlideBlur","animationEndCallback","autoplayTimer","checkImagesLoad","onReInit","setTrackStyle","didPropsChange","debouncedResize","resizeWindow","isTrackMounted","updatedState","_trackWidth","_trackLeft","childrenWidths","preClones","postClones","_i2","_trackStyle","childrenCount","trackLeft","imagesCount","loadedCount","onclick","prevClickHandler","onLazyLoadError","_index","asNavFor","afterChange","_slideHandler","asNavForIndex","firstBatch","focusOnSelect","clickable","ontouchmove","disableBodyScroll","triggerSlideHandler","enableBodyScroll","playType","autoplaySpeed","pauseType","dots","prevArrow","nextArrow","trackProps","pauseOnHover","onTrackOver","onTrackLeave","onMouseOver","selectHandler","dotProps","pauseOnDotsHover","clickHandler","onDotsLeave","onDotsOver","Dots","arrowProps","PrevArrow","NextArrow","verticalHeightStyle","centerPaddingStyle","listStyle","touchMove","listProps","touchEnd","onTouchCancel","innerSliderProps","listRefHandler","Track","trackRefHandler","ssrState","ssrInit","_i3","_Object$keys","currentDirection","getSlideClasses","slickActive","slickCenter","slickCloned","getKey","fallbackKey","renderSlides","preCloneSlides","postCloneSlides","childOnClickOptions","childStyle","getSlideStyle","slideClass","slideClasses","preCloneNo","_React$PureComponent","mouseEvents","handleRef","PureComponent","_rightBound","rightBound","_leftBound","leftBound","dotOptions","customPaging","appendDots","dotsClass","prevClasses","prevHandler","prevArrowProps","customProps","_React$PureComponent2","_super2","nextClasses","nextHandler","nextArrowProps","MapShim","class_1","__entries__","global$1","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","leadingCall","trailingCall","resolvePending","timeoutCallback","throttle","addObserver","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","characterData","getInstance","instance_","defineConfigurable","getWindowOf","emptyRect","createRectInit","toFloat","getBordersSize","getHTMLElementContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","boxSizing","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getBBox","getContentRect","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","broadcastRect","ResizeObserverEntry","rectInit","Constr","contentRect","DOMRectReadOnly","ResizeObserverSPI","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","unobserve","clearActive","observation","ResizeObserver","camel2hyphen","obj2mq","mq","isDimension","MediaQueryDispatch","MediaQuery","Util","queries","browserIsIncapable","shouldDegrade","isUnconditional","addHandler","removeHandler","QueryHandler","assess","constuctor","qh","deferSetup","initialised","unmatch","_getRequireWildcardCache","hasPropertyDescriptor","_arrays","_Autowhatever","_theme","alwaysTrue","REASON_SUGGESTIONS_REVEALED","REASON_INPUT_FOCUSED","REASON_INPUT_CHANGED","REASON_ESCAPE_PRESSED","Autosuggest","_Component","_alwaysRenderSuggestions","alwaysRenderSuggestions","justClickedOnSuggestionsContainer","suggestionsContainer","autowhatever","itemIndex","updateHighlightedSuggestion","pressedSuggestion","justSelectedSuggestion","justMouseEntered","multiSection","resetHighlightedSuggestion","focusInputOnSuggestionClick","_this$getSuggestionIn","getSuggestionIndices","findSuggestionElement","suggestionIndex","clickedSuggestion","getSuggestion","clickedSuggestionValue","maybeCallOnChange","closeSuggestions","shouldRenderSuggestions","highlightedSuggestion","getHighlightedSuggestion","isFocused","highlightedSectionIndex","highlightedSuggestionIndex","valueBeforeUpDown","isCollapsed","blurEvent","onSuggestionMouseEnter","onSuggestionMouseLeave","onSuggestionMouseDown","onSuggestionTouchStart","onSuggestionTouchMove","onSuggestionClick","renderSuggestionsContainer","getQuery","justPressedUpDown","onDocumentMouseDown","onDocumentMouseUp","itemsContainer","shouldResetHighlighting","highlightFirstSuggestion","willRenderSuggestions","revealSuggestions","_this$props4","onSuggestionHighlighted","prevValue","shouldResetValueBeforeUpDown","_this$props5","getSectionSuggestions","suggestionElement","startNode","_this$props$inputProp","_this$props6","renderInputComponent","renderSectionTitle","_this$state2","_onFocus","_onKeyDown","autowhateverInputProps","newHighlightedSectionIndex","newHighlightedItemIndex","getSuggestionValueByIndex","_newValue","willCloseSuggestions","renderSuggestionData","renderItemsContainer","renderItemData","getSectionItems","highlightedItemIndex","itemProps","mapToAutowhateverTheme","storeAutowhateverRef","defaultTheme","arrA","arrB","_sectionIterator","_reactThemeable","_SectionTitle","_ItemList","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","emptyObject","Autowhatever","userRef","highlightedItem","isInputFocused","nextPrev","_this$sectionIterator2","sectionIterator","setSectionsItems","setSectionIterator","ensureHighlightedItemIsVisible","sectionsItems","sectionsLengths","allSectionsAreEmpty","itemsCount","keyPrefix","sectionKeyPrefix","isFirstSection","onHighlightedItemChange","getItemId","storeItemsListReference","itemOffsetRelativeToContainer","renderedItems","renderSections","ariaActivedescendant","itemsContainerId","inputComponent","storeInputReference","storeItemsContainerReference","containerOpen","inputOpen","inputFocused","itemsContainerOpen","itemsList","itemFirst","itemHighlighted","sectionContainer","sectionContainerFirst","sectionTitle","sliceIterator","_position","nextNonEmptySectionIndex","_position2","prevNonEmptySectionIndex","_objectAssign","_objectAssign2","truthy","classNameDecorator","propIsEnumerable","ToObject","ownEnumerableKeys","_compareObjects","SectionTitle","_Item","ItemsList","sectionPrefix","isItemPropsFunction","isHighlighted","itemKey","itemPropsObj","allItemProps","storeHighlightedItemReference","restProps","storeItemReference","suggestionsContainerOpen","suggestionsList","suggestionFirst","suggestionHighlighted","_toDecimal","latKey","_getCoordinateKeys2","_isValidLatitude","_isValidLongitude","isValidLatitude","isValidLongitude","react_1","useIsomorphicLayoutEffect_1","zeroPosition","getClientRect","getScrollPosition","useWindow","boundingElement","containerPosition","throttleTimeout","callBack","useLayoutEffect","Oo","nullOrSection","waterEffect","fp_scrollHorizontallyExtension","_addClass","_removeClass","getClassNames","removeClasses","activeClassName","reflowAndAddClass","appearClassName","doneClassName","enterClassName","isStringClassNames","_this$getClassNames6","_hasClass","baseVal","replaceClassName","origClass","classToRemove","_args","handleEnter","handleLifecycle","handleEntering","_len3","_key3","handleEntered","_len4","_key4","handleExit","_len5","_key5","handleExiting","_len6","_key6","_len7","_key7","originalArgs","_child$props","inProp","_React$Children$toArr","mergeChildMappings","getProp","nextChildMapping","isValidElement","hasPrev","hasNext","prevChild","isLeaving","mapFn","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","pendingNextKey","_react2","_RevealBase2","inEffect","outEffect","return","inOut","collapse","collapseEl","fraction","refProp","onReveal","ssrReveal","collapseOnly","RevealBase","isOn","getInitialCollapseStyle","savedChild","isShown","handleObserve","revealHandler","makeHandler","reveal","resizeHandler","saveRef","childRef","hasExited","animationEndTimeout","getDimensionValue","animationDuration","animationDelay","unlisten","hasAppeared","animationIterationCount","getChild","animationEnd","invisible","onRevealTimeout","spy","inViewport","listen","getTop","ticking","isListener","b64DecodeUnicode","InvalidCharacterError","etagVersions","weProfileFolder","accessToken","getAccessToken","userId","AccessTokenExtractor","extractUserId","jsonPatch","validator","validators","assertOptions","requestInterceptorChain","synchronousRequestInterceptors","runWhen","synchronous","responseInterceptorChain","newConfig","pkg","thing","deprecatedWarnings","currentVerArr","isOlderVersion","thanVersion","pkgVersionArr","destVer","isDeprecated","formatMessage","schema","allowUnknown","aud","_parentOrParents","subscriptions","subscriptionIndex","destinationOrNext","subscriber","isStopped","observerOrNext","_parentSubscriber","sink","syncErrorThrowable","promiseCtor","subject","subscriberIndex","dateTimestampSource","nowSeconds","platformPerformance","getNodePerformance","timeOrigin","getBrowserPerformance","timestampSource","dateTimestampInSeconds","timestampInSeconds","performanceNow","dateNow","timeOriginDelta","timeOriginIsReliable","navigationStart","navigationStartDelta","FocusLayerSizeV2","InteractionLayerSizeV2","ShimBackgroundTypeV2","nodeRef","maybeNode","maybeAppearing","maybeNextCallback","TransitionGroupContext","appliedClasses","_this$resolveArgument","resolveArguments","_this$resolveArgument2","_this$resolveArgument3","baseClassName","phase","_this$appliedClasses$"],"mappings":"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,CACIv9C,MAAO,aAInB,CACIs9C,YAAa,qBACbC,QAAS,CACL,CACIv9C,MAAO,aAInB,CACIy9C,YAAa,6BACbH,YAAa,SACbC,QAAS,CACL,CACIC,WAAY,SAIxB,CACIC,YAAa,6BACbH,YAAa,mBACbC,QAAS,CACL,CACIv9C,MAAO,aAInB,CACIy9C,YAAa,YACbF,QAAS,CACL,CACIv9C,MAAO,aAInB,CACIy9C,YAAa,oBACbH,YAAa,SACbC,QAAS,CACL,CACIv9C,MAAO,WAEX,CACIw9C,WAAY,cAEhB,CACIE,OAAQ,MAIpB,CACID,YAAa,MACbH,YAAa,WACbC,QAAS,CACL,CACIv9C,MAAO,aAInB,CACIy9C,YAAa,MACbH,YAAa,cACbC,QAAS,CACL,CACIC,WAAY,SAIxB,CACIC,YAAa,MACbH,YAAa,mBACbC,QAAS,CACL,CACIv9C,MAAO,aAInB,CACIy9C,YAAa,eACbF,QAAS,CACL,CACIC,WAAY,SAIxB,CACIC,YAAa,WACbH,YAAa,WACbC,QAAS,CACL,CACIv9C,MAAO,aAInB,CACIy9C,YAAa,WACbH,YAAa,gBACbC,QAAS,CACL,CACIv9C,MAAO,aAInB,CACIy9C,YAAa,WACbH,YAAa,SACbC,QAAS,CACL,CACIC,WAAY,QAIxB,CACIC,YAAa,WACbH,YAAa,mBACbC,QAAS,CACL,CACIv9C,MAAO,aAInB,CACIy9C,YAAa,WACbH,YAAa,qBACbC,QAAS,CACL,CACIC,WAAY,SAIxB,CACIC,YAAa,OACbH,YAAa,WACbC,QAAS,CACL,CACIv9C,MAAO,aAInB,CACIy9C,YAAa,OACbH,YAAa,SACbC,QAAS,CACL,CACIC,WAAY,QAIxB,CACIC,YAAa,OACbH,YAAa,cACbC,QAAS,CACL,CACIC,WAAY,SAIxB,CACIC,YAAa,gBACbH,YAAa,SACbC,QAAS,CACL,CACIC,WAAY,QAIxB,CACIC,YAAa,gBACbH,YAAa,cACbC,QAAS,CACL,CACIC,WAAY,QAIxB,CACIC,YAAa,gBACbH,YAAa,mBACbC,QAAS,CACL,CACIv9C,MAAO,aAInB,CACIy9C,YAAa,eACbH,YAAa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Aa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,YACzB,kBAACD,GAAa,CAACC,UAAU,e,SCnc3B,SAAUsB,KACd,IAAMnlP,EAAY,yBAEZm8G,EAAgB,SAACljD,GACrB,OACE,oCACE,kBAAC,mBAAgB,CACft7C,gBAAiBs7C,EACjBr1E,mBAAoBjF,MACpBqD,sBAAuB,kBAAM,MAC7BiN,WAAS,EACT2uB,SAAW,aAMnB,OAAQ5d,aAAS,EAATA,EAAWolP,WACjB,IAAK,aACH,OAAOjpI,EAAc,kBAAC,iBAAa,CAACkpI,QAAM,EAACC,gBAAc,KAC3D,IAAK,cACH,OAAOnpI,EAAc,kBAAC,mBAAe,CAACkpI,QAAM,EAACC,gBAAc,KAC7D,IAAK,kBACH,OAAOnpI,EAAc,kBAAC,sBAAkB,CAACkpI,QAAM,EAACC,gBAAc,KAChE,IAAK,OACH,OAAOnpI,EAAc,kBAAC,iBAAa,CAACkpI,QAAM,EAACC,gBAAc,KAE3D,QACE,MAAM,IAAIl4O,MAAM,2C,0zBCHtB,IAAM3pB,EAAU,IAAO7B,IAAV,KAcM,IAAOA,IAAV,KA0DV,SAAU2jQ,EAAczjQ,GAC5B,OACE,kBAAC2B,EAAO,KACN,kBAAC,IAAO,CAAC/E,QAAQ,UAChBoD,EAAMhD,KAAO,kBAAC,IAAI,KAAEgD,EAAMhD,MAAe,kBAAC,IAAI,8BAc/C,SAAU0mQ,EAAS1jQ,GAAoB,IACnCqC,EAA2ErC,EAA3EqC,YAAaP,EAA8D9B,EAA9D8B,mBAAoBQ,EAA0CtC,EAA1CsC,MAAOC,EAAmCvC,EAAnCuC,SAAUC,EAAyBxC,EAAzBwC,MAAOC,EAAkBzC,EAAlByC,cAEjE,OACE,kBAACd,EAAO,KACN,kBAAC,IAAS,CACRzD,OAAQ,IAAgBkE,YACxBpE,KAAM,IAAcC,OACpBiE,gBAAiB,IAA6BC,WAE9C,yBAAKO,MAAO,CAAEV,UAAW,SACvB,kBAAC,IAAK,CAACpF,QAAQ,WAEjB,kBAAC,IAAI,CAAC0B,WAAY,IAAeyD,YAAa1D,MAAI,EAAC2D,UAAW,IAAclE,MACzEwE,GAAe,sBAElB,kBAAC,IAAS,CACRpE,OAAQ,IAAgB+D,UACxBjE,KAAM,IAAcC,OACpBiE,gBAAiB,IAA6BC,WAE9C,kBAAC,IAAI,CAACH,UAAW,IAAclE,MAC5ByE,GAAqB,gFAGxB,kBAAC,IAAiB,CAACI,IAAK,IAAYC,MAClC,kBAAC,IAAS,CAAC1E,OAAQ,IAAgBE,UAAWJ,KAAM,IAAcC,QAChE,kBAAC,IAAG,CACFzB,IAAI,SACJC,SAAS,UACTL,QAAS,SAACC,GACRA,EAAEsC,iBACF0D,EAAYhG,GACZyF,EAAmB,GAAI,GAAI,KAE7BxE,gBAAc,iBAIdmF,EAAgB,KAChBD,EACE,kBAAC,IAAG,CACFhG,IAAI,IACJC,SAAS,YACTK,KAAK,oCACLQ,gBAAc,kBAKhB,kBAAC,IAAG,CACFd,IAAI,SACJC,SAAS,YACTL,QAAS,SAACC,GACRA,EAAEsC,iBACFmD,EAAmB,GAAI,GAAI,KAE7BxE,gBAAc,yBAQxB,kBAAC,IAAiB,CAACuF,IAAK,IAAYD,MAClC,kBAAC,IAAS,CAAC1E,OAAQ,IAAgBE,UAAW8D,gBAAiB,IAA6BC,WAC1F,kBAAC,IAAG,CACF3F,IAAI,SACJC,SAAS,UACTL,QAAS,SAACC,GACRA,EAAEsC,iBACF0D,EAAYhG,GACZyF,EAAmB,GAAI,GAAI,MAC5B,cAIDW,EAAgB,KAChBD,EACE,yBAAKE,MAAO,CAACI,WAAW,SACtB,kBAAC,IAAG,CACFtG,IAAI,IACJC,SAAS,YACTK,KAAK,oCACLQ,gBAAc,mBAMlB,yBAAKoF,MAAO,CAACI,WAAW,SACtB,kBAAC,IAAG,CACFtG,IAAI,SACJC,SAAS,YACTL,QAAS,SAACC,GACRA,EAAEsC,iBACFmD,EAAmB,GAAI,GAAI,MAC5B,4B,6BC9JvB,kCAAO,IAAM6hQ,EAAe,SAAC9yP,GAC3B,OAAKA,OAC0C3V,IAAvC2V,EAA2BtM,QADX,O,6BC9D1B,0bAMA,IAAMsuF,EAAiB15F,OAAOkB,UAAUiV,SASjC,SAASs0P,EAAQC,GACtB,OAAQhxK,EAAej6F,KAAKirQ,IAC1B,IAAK,iBACL,IAAK,qBACL,IAAK,wBACH,OAAO,EACT,QACE,OAAOC,EAAaD,EAAKv4O,QAI/B,SAASy4O,EAAUF,EAAc5vH,GAC/B,OAAOphD,EAAej6F,KAAKirQ,KAAS,WAAW5vH,EAAE,IAU5C,SAAS+vH,EAAaH,GAC3B,OAAOE,EAAUF,EAAK,cAUjB,SAASI,EAAWJ,GACzB,OAAOE,EAAUF,EAAK,YAUjB,SAASK,EAAeL,GAC7B,OAAOE,EAAUF,EAAK,gBAUjB,SAASt6L,EAASs6L,GACvB,OAAOE,EAAUF,EAAK,UAUjB,SAAS32L,EAAY22L,GAC1B,OAAe,OAARA,GAAgC,iBAARA,GAAmC,mBAARA,EAUrD,SAASnwK,EAAcmwK,GAC5B,OAAOE,EAAUF,EAAK,UAUjB,SAASM,EAAQN,GACtB,MAAwB,oBAAVO,OAAyBN,EAAaD,EAAKO,OAUpD,SAASC,EAAUR,GACxB,MAA0B,oBAAZS,SAA2BR,EAAaD,EAAKS,SAUtD,SAASC,EAASV,GACvB,OAAOE,EAAUF,EAAK,UAOjB,SAASW,EAAWX,GAEzB,OAAOrgP,QAAQqgP,GAAOA,EAAI5pP,MAA4B,mBAAb4pP,EAAI5pP,MAUxC,SAASwqP,EAAiBZ,GAC/B,OAAOnwK,EAAcmwK,IAAQ,gBAAiBA,GAAO,mBAAoBA,GAAO,oBAAqBA,EAUhG,SAASC,EAAaD,EAAU9+C,GACrC,IACE,OAAO8+C,aAAe9+C,EACtB,MAAO9pN,GACP,OAAO,K,6BChKX,0GAEWypQ,EAOAC,EAOAC,EAhBX,gFAGA,SAAWF,GACPA,EAAqB,MAAI,QACzBA,EAAsB,OAAI,SAC1BA,EAAoB,KAAI,OAH5B,CAIGA,IAAkBA,EAAgB,KAGrC,SAAWC,GACPA,EAAwC,UAAI,aAC5CA,EAAqC,OAAI,SACzCA,EAAsC,QAAI,WAC1CA,EAA2C,aAAI,gBAJnD,CAKGA,IAAiCA,EAA+B,KAEnE,SAAWC,GACPA,EAAsC,UAAI,aAC1CA,EAAmC,OAAI,SACvCA,EAAoC,QAAI,WAH5C,CAIGA,IAA+BA,EAA6B,M,6BCnB/D,IAAIC,EAAiBC,EAAuB,EAAQ,MAEhDC,EAAqBD,EAAuB,EAAQ,MAEpDE,EAAmBF,EAAuB,EAAQ,MAElDG,EAAcH,EAAuB,EAAQ,MAEjD,SAASA,EAAuBn2O,GAAO,OAAOA,GAAOA,EAAI90B,WAAa80B,EAAM,CAAEvjB,QAASujB,GAEvF/2B,EAAOD,QAAU,CACfutQ,WAAYD,EAAY75P,QACxB+5P,gBAAiBH,EAAiB55P,QAClCg6P,kBAAmBL,EAAmB35P,QACtCkmB,cAAeuzO,EAAez5P,U,wGCVhC,EAAiB,SAASy6E,EAAM7tF,EAAG0kB,GACjC,GAAI1kB,IAAM0kB,EAAG,OAAO,EAEpB,GAAI1kB,GAAK0kB,GAAiB,iBAAL1kB,GAA6B,iBAAL0kB,EAAe,CAC1D,GAAI1kB,EAAEonE,cAAgB1iD,EAAE0iD,YAAa,OAAO,EAE5C,IAAI5jE,EAAQvD,EAAG0wB,EACf,GAAIhuB,MAAMC,QAAQ5C,GAAI,CAEpB,IADAwD,EAASxD,EAAEwD,SACGkhB,EAAElhB,OAAQ,OAAO,EAC/B,IAAKvD,EAAIuD,EAAgB,GAARvD,KACf,IAAK4tF,EAAM7tF,EAAEC,GAAIykB,EAAEzkB,IAAK,OAAO,EACjC,OAAO,EAKT,GAAID,EAAEonE,cAAgB9lD,OAAQ,OAAOthB,EAAEu2B,SAAW7R,EAAE6R,QAAUv2B,EAAE8mF,QAAUpiE,EAAEoiE,MAC5E,GAAI9mF,EAAE8tF,UAAY3sF,OAAOkB,UAAUyrF,QAAS,OAAO9tF,EAAE8tF,YAAcppE,EAAEopE,UACrE,GAAI9tF,EAAEsX,WAAanW,OAAOkB,UAAUiV,SAAU,OAAOtX,EAAEsX,aAAeoN,EAAEpN,WAIxE,IADA9T,GADAmtB,EAAOxvB,OAAOwvB,KAAK3wB,IACLwD,UACCrC,OAAOwvB,KAAKjM,GAAGlhB,OAAQ,OAAO,EAE7C,IAAKvD,EAAIuD,EAAgB,GAARvD,KACf,IAAKkB,OAAOkB,UAAUC,eAAe1B,KAAK8jB,EAAGiM,EAAK1wB,IAAK,OAAO,EAEhE,IAAKA,EAAIuD,EAAgB,GAARvD,KAAY,CAC3B,IAAI+B,EAAM2uB,EAAK1wB,GAEf,IAAK4tF,EAAM7tF,EAAEgC,GAAM0iB,EAAE1iB,IAAO,OAAO,EAGrC,OAAO,EAIT,OAAOhC,GAAIA,GAAK0kB,GAAIA,G,MCjBTqpE,EAAa,uB,MAgKbC,EAwEX,aAAY,OACVhkB,EAAM,QACNikB,EAAO,OACPC,EAAM,GACNlqE,EAAK+pE,EAAU,UACfI,EAAY,GAAE,SACdp+C,EAAQ,OACRq+C,EAAM,QACNC,EAAO,OACPC,EAAM,MACNC,EAAK,QACLC,EAAU,EAAC,IACXjlE,EAAM,4CAeN,GA5CM,KAAAklE,SAAW,uBACX,KAAAC,UAAoC,GACpC,KAAAprF,MAAO,EACP,KAAA4V,SAAU,EAGV,KAAA9R,OAAuB,GAyB7BjH,KAAKkuF,QAAUA,EACfluF,KAAK6pE,OAASA,EACd7pE,KAAK8tF,QAAUA,EACf9tF,KAAK+tF,OAASA,EACd/tF,KAAK6jB,GAAKA,GAAM+pE,EAChB5tF,KAAKguF,UAAYA,EACjBhuF,KAAK4vC,SAAWA,EAChB5vC,KAAKiuF,OAASA,EACdjuF,KAAKmuF,OAASA,EACdnuF,KAAKouF,MAAQA,EACbpuF,KAAKquF,QAAUA,EACfruF,KAAKopB,IAAMA,EAEPykE,EAAOnvC,SAAU,CACnB,IAAK8vC,EAAQxuF,KAAKoW,QAASy3E,EAAOnvC,SAAStoC,SACzC,MAAM,IAAI+c,MACR,2DAA2Ds7D,KAAKC,UAC9D1uF,KAAKoW,gBACEq4E,KAAKC,UAAUb,EAAOnvC,SAAStoC,YAI5C,OAAOy3E,EAAOnvC,SAGhBmvC,EAAOnvC,SAAW1+C,KAGpB,cACE,MAAO,CACLkuF,QAASluF,KAAKkuF,QACdrkB,OAAQ7pE,KAAK6pE,OACbikB,QAAS9tF,KAAK8tF,QACdC,OAAQ/tF,KAAK+tF,OACblqE,GAAI7jB,KAAK6jB,GACTmqE,UAAWhuF,KAAKguF,UAChBp+C,SAAU5vC,KAAK4vC,SACfq+C,OAAQjuF,KAAKiuF,OACbE,OAAQnuF,KAAKmuF,OACbC,MAAOpuF,KAAKouF,MACZhlE,IAAKppB,KAAKopB,KASd,YACE,IAAIA,EAAMppB,KAAKopB,IAoCf,OAlCAA,GAAO,aAAappB,KAAKsuF,WAErBtuF,KAAK6pE,SACPzgD,GAAO,QAAQppB,KAAK6pE,UAGlB7pE,KAAK8tF,UACP1kE,GAAO,YAAYppB,KAAK8tF,WAGtB9tF,KAAK+tF,SACP3kE,GAAO,WAAWppB,KAAK+tF,UAGrB/tF,KAAKguF,UAAU3qF,OAAS,IAC1B+lB,GAAO,cAAcppB,KAAKguF,UAAU51D,KAAK,QAGvCp4B,KAAK4vC,WACPxmB,GAAO,aAAappB,KAAK4vC,YAGvB5vC,KAAKiuF,SACP7kE,GAAO,WAAWppB,KAAKiuF,UAGrBjuF,KAAKkuF,UACP9kE,GAAO,MAAMppB,KAAKkuF,WAGhBluF,KAAKmuF,SACP/kE,GAAO,YAAYppB,KAAKmuF,OAAO/1D,KAAK,QAG/BhP,EAMT,OACE,OAAOppB,KAAK2uF,cAQd,cACE,OAAO,IAAIz3D,SAAQ,CAACL,EAASC,KAC3B92B,KAAK4uF,cAActrF,IACZA,EAGHwzB,EAAOxzB,GAFPuzB,UAWR,aAAaO,GACXp3B,KAAKuuF,UAAUnrF,KAAKg0B,GACpBp3B,KAAK6uF,UAMC,YACN,GAAIz6E,SAAS06E,eAAe9uF,KAAK6jB,IAG/B,YADA7jB,KAAKgqB,WAIP,MAAMZ,EAAMppB,KAAK+uF,YACXC,EAAS56E,SAASyX,cAAc,UACtCmjE,EAAOnrE,GAAK7jB,KAAK6jB,GACjBmrE,EAAOxiF,KAAO,kBACdwiF,EAAOz1B,IAAMnwC,EACb4lE,EAAOC,QAAUjvF,KAAKkvF,kBAAkBptF,KAAK9B,MAC7CgvF,EAAOG,OAAQ,EACfH,EAAOnzC,OAAQ,EAEX77C,KAAKouF,QACPY,EAAOZ,MAAQpuF,KAAKouF,OAGtBh6E,SAASg7E,KAAKC,YAAYL,GAG5B,eACE,MAAMA,EAAS56E,SAAS06E,eAAe9uF,KAAK6jB,IACxCmrE,GACFA,EAAOM,SAIH,wBACN,MAAMC,EAAmBvvF,KAAKquF,QAAU,EACpCruF,KAAKmD,OAASnD,KAAK+Y,SAAW/Y,KAAKiH,OAAO5D,QAAUksF,IACtDvvF,KAAKwvF,eACLxvF,KAAKmD,MAAO,EACZnD,KAAK+Y,SAAU,EACf/Y,KAAKiH,OAAS,GACdjH,KAAK4vF,aAAe,MAIhB,kBAAkB1rF,GAGxB,GAFAlE,KAAKiH,OAAO7D,KAAKc,GAEblE,KAAKiH,OAAO5D,QAAUrD,KAAKquF,QAAS,CACtC,MAAMoB,EAAQzvF,KAAKiH,OAAO5D,OAAS,WAAKrD,KAAKiH,OAAO5D,QAEpDggC,QAAQqsD,IACN,kDAAkDD,SAGpDrxE,YAAW,KACTpe,KAAKwvF,eACLxvF,KAAK2vF,cACJF,QAEHzvF,KAAK4vF,aAAe1rF,EACpBlE,KAAKgqB,WAID,cACNxB,OAAOqnE,qBAAuB7vF,KAAKgqB,SAASloB,KAAK9B,MAG3C,WACNA,KAAKmD,MAAO,EACZnD,KAAK+Y,SAAU,EAEf/Y,KAAKuuF,UAAUl4D,SAAS4kB,IACtBA,EAAGj7C,KAAK4vF,iBAGV5vF,KAAKuuF,UAAY,GAGX,UACF/lE,OAAO0hE,QAAU1hE,OAAO0hE,OAAOC,MAAQ3hE,OAAO0hE,OAAOC,KAAK+D,UAC5D7qD,QAAQk5C,KACN,wJAGFv8E,KAAKgqB,YAGPhqB,KAAK8vF,wBACD9vF,KAAKmD,KACPnD,KAAKgqB,WAEDhqB,KAAK+Y,UAGP/Y,KAAK+Y,SAAU,EACf/Y,KAAK+vF,cACL/vF,KAAK2vF,c,YCreC,SAAUu9K,EAAmBrlQ,GAAU,MACnB,oBAAS,GADU,mBAC5CslQ,EAD4C,KAClCC,EADkC,KAG7ChxC,EAAS,IAAIvuI,EAAO,CACxBhkB,OAAQ,cACRmkB,UAAW,CAAC,UACZp+C,SAAU,OAYZ,OATA,qBAAU,YACO,uCAAG,sBAAA/vC,EAAA,sEACGu8N,EAAO/5J,OADV,cAEhB+qM,GAAY,GACZvlQ,EAAMolG,YAHU,2CAAH,qDAKfogK,KACC,IAEIF,EAAWtlQ,EAAMmW,SAAW,O,4GCdtB,MARGJ,IAChB,MAAM0vP,EAAc,SAAa1vP,GAIjC,OAHA,aAAgB,KACd0vP,EAAY1vP,QAAUA,KAEjB0vP,GCLF,MAAMC,EAAsB,CAACvjP,EAAUwjP,EAAO,IAAKC,GAAU,KAClE,MAAMC,EAAiB,EAAU1jP,GAC3BoP,EAAU,WACVu0O,EAAO,CAACH,EAAMC,EAASC,GAE7B,SAASniP,IACP6N,EAAQxb,SAAWkjD,aAAa1nC,EAAQxb,SACxCwb,EAAQxb,aAAU,EAKpB,SAASiQ,IACPuL,EAAQxb,aAAU,EAGpB,OANA,aAAgB,IAAM2N,GAAMoiP,GAMrB,eAAkB,WAEvB,MAAMt2O,EAAOlB,WACP,QACJvY,GACEwb,EAEJ,QAAgB,IAAZxb,GAAsB6vP,EAGxB,OAFAr0O,EAAQxb,QAAUQ,WAAWyP,EAAO2/O,GAE7BE,EAAe9vP,QAAQ6O,MAAM,KAAM4K,GAI5CzZ,GAAWkjD,aAAaljD,GAExBwb,EAAQxb,QAAUQ,YAAW,KAC3Bgb,EAAQxb,aAAU,EAClB8vP,EAAe9vP,QAAQ6O,MAAM,KAAM4K,KAClCm2O,KACFG,ICpCU,M,OADgB,EAA0B,oBAAbv5P,eAAuD,IAA3BA,SAASyX,cAA2B,kBAAoB,aC6BjH,MA3Bf,SAAkBziB,EAAQoD,EAAM+d,EAAUqjP,GACxC,MAAMC,EAAiB,SAAatjP,GAC9BujP,EAAgB,SAAaF,GACnC,GAAgB,KACdC,EAAejwP,QAAU2M,EACzBujP,EAAclwP,QAAUgwP,KAE1B,GAAgB,KACd,MAAMG,EAAW3kQ,GAAU,YAAaA,EAASA,EAAOwU,QAAUxU,EAClE,IAAK2kQ,EAAU,OACf,IAAI1gP,EAAiB,EAErB,SAAS9C,KAAY8M,GACfhK,GACJwgP,EAAejwP,QAAQ6O,MAAMzsB,KAAMq3B,GAGrC02O,EAAS7vP,iBAAiB1R,EAAM+d,GAChC,MAAMqjP,EAAUE,EAAclwP,QAC9B,MAAO,KACLyP,EAAiB,EACjB0gP,EAAS5vP,oBAAoB3R,EAAM+d,GACnCqjP,GAAWA,OAEZ,CAACxkQ,EAAQoD,KCzBd,MAAMwhQ,EAAW,GACXC,EAAwB,oBAAXzlP,OAAyB,KAAOA,OAE7CwkI,EAAU,IAAM,CAAC54I,SAAS+nB,gBAAgB8oE,YAAa7wF,SAAS+nB,gBAAgB+oE,cAEzEgpK,EAAgB,CAAC93P,EAAU43P,KACtC,MAAM,KACJR,EAAI,QACJC,EAAO,aACPU,EAAe,EAAC,cAChBC,EAAgB,GACdh4P,GACG7R,EAAM8pQ,GH0BY,EAACC,EAAcd,EAAMC,KAC9C,MAAM5mQ,EAAQ,WAAeynQ,GAC7B,MAAO,CAACznQ,EAAM,GAAI0mQ,EAAoB1mQ,EAAM,GAAI2mQ,EAAMC,KG5BrBc,CAEb,oBAAbn6P,SAA2B,CAAC+5P,EAAcC,GAAiBphH,EAASwgH,EAAMC,GAE3E7sH,EAAU,IAAMytH,EAAiBrhH,GAIvC,OAFA,EAASihH,EAAK,SAAUrtH,GACxB,EAASqtH,EAAK,oBAAqBrtH,GAC5Br8I,GAEIiqQ,EAAkBp4P,GAAW83P,EAAc93P,GAAS,GACpDq4P,EAAiBr4P,GAAW83P,EAAc93P,GAAS,I,cCzBhE3W,EAAOD,QAAUW,G,6BCAjB,mQAEO,MAAMuuQ,UAAqBv7O,MAC9B,YAAY61C,EAAQ2lM,EAAS1lQ,EAASuV,GAClCovB,MAAM3kC,GACN,IAAejJ,KAAM0uQ,EAAaxsQ,WAClClC,KAAKgpE,OAASA,EACdhpE,KAAK2uQ,QAAUA,EACf3uQ,KAAKwe,SAAWA,GAGjB,MAAMowP,UAA4BF,EACrC,YAAYC,EAAS1lQ,GACjB2kC,MAAM,IAAK+gO,EAAS1lQ,GACpB,IAAejJ,KAAM4uQ,EAAoB1sQ,YAG1C,MAAM2sQ,UAAsBH,EAC/B,YAAY1lM,EAAQ2lM,EAAS1lQ,EAASuV,GAClCovB,MAAMo7B,EAAQ2lM,EAAS1lQ,EAASuV,GAChC,IAAexe,KAAM6uQ,EAAc3sQ,YAGpC,MAAM4sQ,UAAwBJ,EACjC,YAAY1lM,EAAQ2lM,EAAS1lQ,EAASuV,GAClCovB,MAAMo7B,EAAQ2lM,EAAS1lQ,EAASuV,GAChC,IAAexe,KAAM8uQ,EAAgB5sQ,YAGtC,MAAM6sQ,UAAgCL,EACzC,YAAY1lM,EAAQ2lM,EAAS1lQ,GACzB2kC,MAAMo7B,EAAQ2lM,EAAS1lQ,GACvB,IAAejJ,KAAM+uQ,EAAwB7sQ,YAG9C,MAAM8sQ,UAA6BN,EACtC,YAAY1lM,EAAQ2lM,EAAS1lQ,EAASuV,GAClCovB,MAAMo7B,EAAQ2lM,EAAS1lQ,EAASuV,GAChC,IAAexe,KAAMgvQ,EAAqB9sQ,YAG3C25C,eAAeozN,EAAyBC,EAAS9lP,EAAKulP,EAASv4P,GAClE,IACI,aAAa84P,EAAQ9lP,EAAKulP,EAASv4P,GAEvC,MAAO9O,GACH,GAAIA,aAAiBunQ,EACjB,MAAM,IAAIE,EAAwBznQ,EAAM0hE,OAAQ1hE,EAAMqnQ,QAASrnQ,EAAM2B,SAEzE,MAAM3B,K,qhBC1CDm9E,EAAgB,SAAC/rE,GAC5B,OAAIA,OACmD3V,IAA7C2V,EAA2B+rE,cAE9B,MAiBI0qL,EAAsB,SAACz2P,GAClC,IACIs6E,EAAKC,EADHmT,EAAmC,IAAI59E,OAAO0hE,OAAOC,KAAKilL,aAAa,MAEzE,YAAa12P,IACfs6E,EAAMt6E,EAAW/F,WAAW+uE,YAAYE,SACxCqR,EAAMv6E,EAAW/F,WAAW+uE,YAAYC,YAExCqR,EAAM3rE,OAAQ3O,EAA4B6qE,aAC1C0P,EAAM5rE,OAAQ3O,EAA4B4qE,eAE5C,IAAM9wE,EAA4B,IAAIgW,OAAO0hE,OAAOC,KAAKyL,OAAO5C,EAAKC,GAErE,OADAmT,EAAO+P,OAAO3jG,GACP,CACLwgF,MACAC,MACAmT,OAAQ,KACRo4C,SAAU,OAID6wH,EAAyC,SAAC32P,EAAwByxE,GAC7E,IACI6I,EAAKC,EADHmT,EAAmC,IAAIjc,EAAKilL,aAAa,MAE3D,YAAa12P,IACfs6E,EAAMt6E,EAAW/F,WAAW+uE,YAAYE,SACxCqR,EAAMv6E,EAAW/F,WAAW+uE,YAAYC,YAExCqR,EAAM3rE,OAAQ3O,EAA4B6qE,aAC1C0P,EAAM5rE,OAAQ3O,EAA4B4qE,eAE5C,IAAM9wE,EAA4B,IAAI23E,EAAKyL,OAAO5C,EAAKC,GAEvD,OADAmT,EAAO+P,OAAO3jG,GACP,CACLwgF,MACAC,QAIEyG,EAAY,SAAC41K,GACjB,IAAMtnP,EAAmC,IAAIQ,OAAO0hE,OAAOC,KAAKilL,aAAa,MACvEG,EAAQD,EAAaE,eAAex8K,MACpCy8K,EAAOH,EAAaE,eAAev8K,MACnCy8K,EAAQJ,EAAaK,eAAe38K,MACpC48K,EAAON,EAAaK,eAAe18K,MACnC6T,EAAK,IAAIt+E,OAAO0hE,OAAOC,KAAKyL,OAAO25K,EAAOE,GAC1C5oK,EAAK,IAAIr+E,OAAO0hE,OAAOC,KAAKyL,OAAO85K,EAAOE,GAIhD,OAHA5nP,EAAOmuF,OAAOrP,GACd9+E,EAAOmuF,OAAOtP,GAEP7+E,GAGH6nP,EAA8B,SAAC7nP,GACnC,IAAIw2H,EAAW,KACXp4C,EAAS,KACb,OAAIp+E,EAAOg6D,UACLh6D,EAAOg6D,SAASw8D,SAClBA,EAAW9kD,EAAU1xE,EAAOg6D,SAASw8D,UAC5Bx2H,EAAOg6D,SAASokB,SACzBA,EAAS1M,EAAU1xE,EAAOg6D,SAASokB,SAM9B,CAAEpT,IAHGhrE,EAAOg6D,SAASR,SAASwR,MAGvBC,IAFFjrE,EAAOg6D,SAASR,SAASyR,MAElBmT,SAAQo4C,aAEpB,CAAExrD,IAAK,KAAMC,IAAK,OA+BhB68K,EAAa,SAACp3P,GAWzB,IAAMq3P,EAAU,IAAIvnP,OAAO0hE,OAAOC,KAAK6lL,SACvC,OAAO,IAAI94O,SAAQ,SAACL,EAASC,GAC3B,OAAOi5O,EAAQA,QACb,CAAEl9P,QAAS6F,EAAW7X,OACtB,SAAC2d,GACC,IAIIyxP,EACAC,EALEloP,EAAqCxJ,EAAS,GAC9CwjE,EAAW6tL,EAA4B7nP,GACvCxV,EAA4B,IAAIgW,OAAO0hE,OAAOC,KAAKyL,OAAO5T,EAASgR,IAAKhR,EAASiR,KACjFmT,EAnIU,WACtB,IAAMp+E,EAAmC,IAAIQ,OAAO0hE,OAAOC,KAAKilL,aAAa,MAKvEtoK,EAAK,IAAIt+E,OAAO0hE,OAAOC,KAAKyL,OAJpB,WACA,UAIRiR,EAAK,IAAIr+E,OAAO0hE,OAAOC,KAAKyL,OAHpB,WACA,WAMd,OAHA5tE,EAAOmuF,OAAOrP,GACd9+E,EAAOmuF,OAAOtP,GAEP7+E,EAwHwCmoP,GAGzCF,EAxCgB,SAACjoP,GACvB,IAYMooP,EAAapoP,EAAOypD,MAAM,GAEhC,MAdqB,CACnB,QACA,iBACA,eACA,eACA,UACA,aACA,OACA,oBACA,gBACA,sBAIkBn/D,SAAS89P,GAyBXC,CAAgBroP,GAC5BkoP,EAAkB9pK,EAAOvoF,SAASrL,GAElC,IAAM3H,SAAS,CAAE2B,KAAM,wBAAyBC,QAASwjQ,IACzD,IAAMplQ,SAAS,CAAE2B,KAAM,kCAAmCC,QAASyjQ,IACnE,IAAMrlQ,SAAS,CAAE2B,KAAM,0BAA2BC,QAAS,OAI3DoqB,EAAQmrD,MAEV,kBAAMlrD,EAAO,gCASNw5O,EAAoB,SAACz5K,GAIhC,IAAMk5K,EAAU,IAAIvnP,OAAO0hE,OAAOC,KAAK6lL,SAEvC,OAAO,IAAI94O,SAAQ,SAACL,EAASC,GAC3B,OAAOi5O,EAAQA,QACb,CAAEvuL,SAAUqV,IACZ,SAACr4E,GACC,IAAMwJ,EAASxJ,EAAS,GAClBwjE,EAAW6tL,EAA4B7nP,GACzCnnB,EAAe2d,EAASnb,OAAS,EAAImb,EAAS,GAAG+xP,kBAAoB,SACzE15O,EAAQ,CAAEmrD,WAAUnhF,YAEtB,kBAAMi2B,EAAO,gCAKN05O,EAAwB,uCAAG,WAAO93P,GAAP,eAAA7Y,EAAA,sEACfiwQ,EAAWp3P,GADI,cAChCspE,EADgC,yBAE/BA,GAF+B,2CAAH,sDAKxByuL,EAAwB,SAACh+P,EAAgBD,GACpD,IAAMygF,EAAMzgF,EAAMwvE,SAASC,YAAY,GACjC+Q,EAAMxgF,EAAMwvE,SAASC,YAAY,GAEvC,OADiB,IAAY,CAAE+Q,IAAKvgF,EAAOugF,IAAKC,IAAKxgF,EAAOwgF,KAAO,CAAED,MAAKC,QAAS,KACnErzD,QAAQ,IAGb8wO,EAA8B,SAACj+P,EAA4BD,GACtE,IAAKC,IAAWD,EACd,MAAO,IAET,IAAMygF,EAAMzgF,EAAMwvE,SAASC,YAAY,GACjC+Q,EAAMxgF,EAAMwvE,SAASC,YAAY,GACjCqnE,EAAW,IAAY,CAAEt2D,IAAKvgF,EAAOugF,MAAOC,IAAKxgF,EAAOwgF,OAAS,CAAED,MAAKC,QAAS,IACjFrzD,EAAUmY,KAAKC,MAAMsxG,GAAUnyI,WAAW9T,OAAS,EAAI,EAAI,EACjE,OAAOimJ,EAAS1pH,QAAQA,IAmBb+wO,EAAkB,uCAAG,WAAO9lQ,EAAyB6N,EAAwBk4P,GAAxD,iBAAA/wQ,EAAA,yDAC5BmiF,EAAqB4uL,GAA8B,KAElDpoP,OAAO0hE,QAAW1hE,OAAO0hE,OAAOC,KAHL,oDAM3BymL,EAN2B,qBAOnBnsL,EAAc/rE,GAPK,iCAOe83P,EAAyB93P,GAPxC,gDAOsDy2P,EAAoBz2P,GAP1E,QAO9BspE,EAP8B,aAShC6uL,GAAYpsL,EAAc/rE,GACrBA,EAA2BisE,cAC9B95E,EAAS,CAAE2B,KAAM,0BAA2BC,QAASiM,IAEvD7N,EAAS,CAAE2B,KAAM,kBAAmBC,QAASu1E,IAC7Cn3E,EAAS,CAAE2B,KAAM,oBAAqBC,QAASiM,GAA0B,OACzE7N,EAAS,CAAE2B,KAAM,uBAAwBC,QAASokQ,IAflB,4CAAH,0DAkBlBC,EAAmB,SAACzuQ,GAAD,OAAwBA,EAAIA,EAAE4J,QAAQ,MAAO,IAAM5J,GACtE0uQ,EAAe,SAAC1uQ,GAAD,OAAuBA,GAAQ,IAE9C2uQ,EAAiB,SAACC,GAE7B,OAAOA,GADaC,EAAkB,aAI3BC,EAAgB,SAACF,GAC5B,IAAMG,EAAcF,EAAkB,YAChCG,EAAcH,EAAkB,YAEtC,OAAOD,EAAWG,GAAeH,GAAYI,GAGlCC,EAAiB,SAACL,GAE7B,OAAOA,EADaC,EAAkB,aAQ3BA,EAAoB,SAAC3mL,GAAD,OAAkB,IAAIxW,KAAJ,mBAAqBwW,M,sXC3QjE,IAAMgnL,EAAsD,CACjE9qL,QAAS,CAAEwgC,mBAAoB,QAC/BhiH,OAAQ,CACNo9H,WAAY,CAAEmvI,oBAAqB,wDACnCxsP,eAAgB,WAChB9f,SAAU,sBACVy+B,SAAU,UACV00E,aAAc,S,gJCClB,IAAM0pB,EAA6B,IAAOp6H,IAAV,KAInB,EAAyB,WAAK,MAC3B,cAEd,OACE,kBAACo6H,EAA0B,KACzB,kBAAC,IAAM,CACLnlH,yBAAuB,EACvBzW,YAAU,mBACP,IAAY8M,QAAU,CACrB,CAAEpS,KAAM,IAAKqS,QAAS,GACtB,CAAErS,KAAM,IAAKqS,QAAS,IACtB,CAAErS,KAAM,IAAKqS,QAAS,KAJhB,cAMP,IAAY2J,KAAO,CAClB,CAAEhc,KAAM,IAAKqS,QAAS,GACtB,CAAErS,KAAM,IAAKqS,QAAS,IACtB,CAAErS,KAAM,IAAKqS,QAAS,KAThB,cAWP,IAAY4J,MAAQ,CACnB,CAAEjc,KAAM,IAAKqS,QAAS,GACtB,CAAErS,KAAM,IAAKqS,QAAS,IACtB,CAAErS,KAAM,IAAKqS,QAAS,KAdhB,cAgBP,IAAY6J,MAAQ,CACnB,CAAElc,KAAM,IAAKqS,QAAS,GACtB,CAAErS,KAAM,IAAKqS,QAAS,IACtB,CAAErS,KAAM,IAAKqS,QAAS,KAnBhB,cAqBP,IAAY8J,MAAQ,CACnB,CAAEnc,KAAM,IAAKqS,QAAS,GACtB,CAAErS,KAAM,IAAKqS,QAAS,IACtB,CAAErS,KAAM,IAAKqS,QAAS,KAxBhB,IA4BV,kBAAC,IAAgB,CAAC/I,OAAK,EAACqE,WAAW,SACnC,kBAAC,IAAkB,CAACf,MAAM,YAC1B,kBAAC,IAAc,CAACwC,YAAY,4B,+9CC9CpC,ICuBYwhQ,EDvBNC,EAAiB,IAAO/pQ,IAAV,KAkBdgqQ,EAAmB,IAAOhqQ,IAAV,KACA,SAACE,GAAD,OACjBA,EAAM+pQ,cAA4B/pQ,EAAM4F,MAAQ5F,EAAM4F,MAAQ,UAAxC,aAmBrB6sH,EAAe,IAAO3yH,IAAV,KAgCL,EAAW,SAACE,GAAqB,IACpCwxD,EAA4BxxD,EAA5BwxD,MAAO5rD,EAAqB5F,EAArB4F,MAAO4rG,EAAcxxG,EAAdwxG,UADsB,EAKF,oBAAS,GALP,mBAKrCu4J,EALqC,KAKtBC,EALsB,OAMF,oBAAS,GANP,mBAMpCC,EANoC,KAMtBC,EANsB,KAuB5C,OAfA,qBAAU,WACJ14M,GACF04M,GAAgB,GAEZ14M,EAAM/mD,SAAS,WACjBu/P,GAAiB,GAEjBA,GAAiB,KAGnBA,GAAiB,GACjBE,GAAgB,MAEjB,CAAC14M,IAGF,kBAACq4M,EAAc,CAACnoQ,UAAU,yBACxB,kBAACooQ,EAAgB,CACflkQ,MAAOA,EACPlE,UAAU,2BACVqoQ,cAAeA,IAEjB,kBAACt3I,EAAY,KACVjhE,EACC,oCACGy4M,EACC,yBAAKv4M,IAAK,IAAOD,IAAK+/C,IAEtB,yBAAK9/C,IAAKF,EAAOC,IAAK+/C,KAGxB,Q,wECvFZ,SAAYo4J,GACV,yBACA,mBACA,uBACA,uCACA,qCACA,2BACA,mCAPF,CAAYA,MAAY,K,q0BCZxB,IC2BKO,ED3BCC,EAAgB,IAAOtqQ,IAAV,KAMb4G,EAAc,IAAO5G,IAAV,KA6DJ,EAAwB,WAAK,MACnB,aAAY,SAACd,GAAD,OAAyBA,KAAlD9B,SACyCE,OAAzCk2G,EAFgC,EAEhCA,kBAAmBj2G,EAFa,EAEbA,SAFa,EAGR,mBAAS,MAHD,mBAGjCgtQ,EAHiC,KAGvBC,EAHuB,OAIhB,mBAAS,MAJO,mBAIjCtxQ,EAJiC,KAI3BsK,EAJ2B,OAKN,mBAAS,MALH,mBAKjCinQ,EALiC,KAKtBC,EALsB,KA2BxC,OApBA,qBAAU,WACR,GAAKl3J,EAAL,CADa,IAEL9B,EAAsC8B,EAAtC9B,UAAWi5J,EAA2Bn3J,EAA3Bm3J,UAAWC,EAAgBp3J,EAAhBo3J,YAC9BpnQ,EAAQkuG,GAEJi5J,EACFE,GAAaF,GAAWxwP,MAAK,SAACrU,GAC5B4kQ,EAAa5kQ,MAGf4kQ,EAAa,YAGXE,aAAW,EAAXA,EAAaE,gBACfN,EAAYI,aAAW,EAAXA,EAAaE,gBAEzBN,EAAYI,aAAW,EAAXA,EAAaG,eAE1B,CAACv3J,IAGF,kBAAC82J,EAAa,CAAC1oQ,UAAU,kBACvB,kBAAC,IAAiB,CAACiB,IAAK,IAAYqS,MAClC,kBAAC,EAAQ,CAACpP,MAAO2kQ,aAAS,EAATA,EAAWr9G,IAAK17F,MAAO64M,EAAU74J,UAAWx4G,KAE/D,kBAAC0N,EAAW,CAAChF,UAAU,gBACnB,kBAAC,IAAI,CAACpD,WAAY,IAAe6H,SAAUG,YAAU,EAACjI,MAAI,GACvDi1G,aAAiB,EAAjBA,EAAmB9B,UACf,KACT,kBAAC,IAAS,CAACj0G,QAAS,CAAEM,OAAQ,IAAiBO,YAC7C,kBAAC,IAAI,CAACE,WAAY,IAAeyJ,c,UACvB,IACP1K,EAASoN,SAAS,mBACjB,kBAAC,IAAI,CAACpM,MAAI,sCACRhB,EAASoN,SAAS,cACpB,kBAAC,IAAI,CAACpM,MAAI,iDACRhB,EAASoN,SAAS,eACpB,kBAAC,IAAI,CAACpM,MAAI,+CACRhB,EAASoN,SAAS,QACpB,kBAAC,IAAI,CAACpM,MAAI,wCAEV,kBAAC,IAAI,CAACA,MAAI,wCAIhB,kBAAC,IAAI,CAACC,WAAY,IAAeC,cAC9B,IACD,kBAAC,IAAI,CAACF,MAAI,yB,kBAA0C,IACpD,0BAAMqE,MAAO,CAAEyE,WAAY,W,YAChB,yBAAKzE,MAAO,CAAElF,IAAK,OAAQ4J,SAAU,SAAQ,OAG1D,kBAAC,IAAoB,CAACY,WAAW,OAAOsI,mBAAmB,OAAOK,WAAS,KAE7E,kBAAC,IAAiB,CAAC9N,IAAK,IAAYmS,MAClC,kBAAC,EAAQ,CAACpP,MAAO2kQ,aAAS,EAATA,EAAWr9G,IAAK17F,MAAO64M,EAAU74J,UAAWx4G,O,yCExHxD,EAA8B,WAAK,IAEtCwK,EADa,aAAY,SAACxE,GAAD,OAAyBA,KAAlD9B,SAC4CE,OAA5CoG,QACA4I,EAAmB,8BAAnBA,eACFtN,EAAe,+BAAqB,iBACpCF,EAAQ,cACRoE,EAAW,cACXnE,EAAM,qCAPkC,EAQhB,oBAAS,GARO,mBAQvCqS,EARuC,KASxC45P,GATwC,KASlB,iBAAO,OAC7BprQ,EAAgB,cAEhBwK,EAAe,iBAAO,MAZkB,EAmB1C,oCALFs7E,EAd4C,EAc5CA,SACAxB,EAf4C,EAe5CA,0BACA07C,EAhB4C,EAgB5CA,gBACAC,EAjB4C,EAiB5CA,iBAjB4C,KAkB5CorI,aAGsC,mBAAS,OArBH,mBAqBvCxlL,EArBuC,KAqBzBu6C,EArByB,KAuB9C,qBAAU,WACR,GAAIt6C,GAAYk6C,EAAgB3pH,QAAS,KAC/BivE,EAAqB,qBAC3BQ,EACAhiF,EACAwgF,EAA0BjuE,QAC1B2pH,EAAgB3pH,SAJVivE,iBAMR8lL,EAAoB/0P,QAAUivE,EAC9B86C,EAAgB96C,MAEjB,CAACQ,EAAUk6C,EAAgB3pH,UAE9B,IAAMqvE,EAAe,SAACpL,EAAkBgxL,EAAkBC,GAGxD,OAAOjxL,EAAO10E,KAAI,SAACqF,EAAenF,GAChC,IAAKmF,EAAME,WAAWovE,QAAS,KACrBt2E,EAAWgH,EAAME,WAAjBlH,OACFwH,EAAqB,YAA4B64E,EAA0BjuE,QAASpL,GAE1F,OACE,yBACE3Q,IAAG,UAAK2Q,EAAME,WAAWlH,OAAO42E,KAA7B,YAAqC/0E,GACxC9D,UAAS,UAAKiJ,EAAME,WAAWlH,OAAO42E,MACtC90E,IAAK,SAACyrC,GACJyuF,EAAiB5pH,QAAQvQ,GAAS0rC,IAGpC,kBAAC,gB,CAECl3C,IAAG,UAAK2Q,EAAME,WAAWlH,OAAO42E,KAA7B,YAAqC/0E,EAArC,SACH2F,mBAAoBA,EACpBU,yBAA0BA,EAC1Bo3E,YAAY,EACZt3E,MAAOhI,EAAOgI,MACdZ,WAAYpH,EACZgH,MAAOA,KAKf,OAAO,SAKLkB,EAA2B,uBAAY,SAAClB,GAE5C3H,EAAS,CAAE2B,KAAM,4BAA6BC,QAAS+F,EAAME,WAAWkwE,eAExE,YAAcr7E,EAAgB,IAA0B,KAAsBua,MAAK,SAACtD,GAClF,IAGM6B,EAHW7B,EAASC,QAAQ1I,MAAK,SAAC2I,GAAD,OACrCA,EAAIE,WAAW7I,MAAK,SAACg9P,GAAD,OAAUA,EAAKxxQ,QAAUiR,EAAME,WAAWkwE,aAAaG,oCAE/CnkE,WAAW,GAAGrd,MAE5CsJ,EAAS,CAAE2B,KAAM,gBAAiBC,QAAS,CAAE4T,qBAE/CpM,MACC,IAEGk0H,EAAqB,WACzB,OACE,kBAAC,sBAAmB,CAAC1hI,MAAOA,EAAOC,IAAKA,GACtC,kBAAC,IAAY,CAAC7B,KAAK,0BAuBzB,OANA,qBAAU,YAZiB,WACzB,GAAIkU,EAAS,CACX,IAAM5H,EAAQxK,EAAaC,eAAeuhI,EAAoB,GAAI,CAAE5jI,KAAM,IAAiB+K,IAC3FyC,EAAa6L,QAAUzM,OAEnBY,EAAa6L,UACf7L,EAAa6L,QAAQlZ,QACrBqN,EAAa6L,QAAU,MAM3Bo1P,KACC,CAACj6P,IAKF,yBAAKxP,UAAU,8BACb,kBAAC,IAAiB,CAACiB,IAAK,IAAYqS,MAClC,kBAAC,IAAe,CACdnJ,yBAA0BA,EAC1Bu5E,aAAcA,EACdG,aAAcA,EACdigB,eAAe,EACfN,aAAa,EACbhD,YAAY,KAIhB,kBAAC,IAAiB,CAACr/F,IAAK,IAAYmS,MAClC,kBAAC,IAAgB,CACfnJ,yBAA0BA,EAC1Bu5E,aAAcA,EACdG,aAAcA,EACd4iB,kBAAkB,OAClBjG,YAAY,OCpJT,EAA4B,WAEvC,OACE,kBAAC,uBAAoB,KACnB,kBAAC,EAA2B,Q,wBFQ5B,EAAW,SAACoR,GAChB,OAAIA,OACF,EAGE,kBAAC,IAAI,CAACh1G,WAAY,IAAeC,cAC5B,IACH,kBAAC,IAAI,CAACF,MAAI,yB,kBAA0C,IACpD,0BAAMqE,MAAO,CAAEyE,WAAY,W,YAChB,yBAAKzE,MAAO,CAAElF,IAAK,OAAQ4J,SAAU,SAAQ,QAO1D,EAAgB,SAACksG,GACrB,OAAIA,EACK,kBAAC,EAAqB,MAEtB,kBAAC,IAA4B,CAACv+F,yBAAuB,EAACuL,QAAS,kBAAC,IAAoB,CAAC3P,WAAS,QAIzG,SAAKw5P,GACH,uBACA,yBACA,qCACA,uCAJF,CAAKA,MAAoB,KAYzB,IAAMl0O,GAAe,SAACgB,EAAgBjG,GAAjB,OAAkDiG,EAAMz7B,OAAS,IAAMw1B,GACtFE,GAAgB,SAACF,GAAD,OAA2D,IAAzBA,GAElD,SAAUo6O,GAAgBprQ,GACIA,EAA1B3C,SADiD,IACvCguQ,EAAgBrrQ,EAAhBqrQ,YACZroQ,EAAW,cACXpE,EAAQ,cAH2C,EAI1B,aAAY,SAACI,GAAD,OAAyBA,KAA5D9B,EAJiD,EAIjDA,SAAUkD,EAJuC,EAIvCA,SACVkzG,EAAsBp2G,EAASE,OAA/Bk2G,kBACAg4J,EAAgElrQ,EAAhEkrQ,aAAct6O,EAAkD5wB,EAAlD4wB,qBAAsBu6O,EAA4BnrQ,EAA5BmrQ,wBACtCzsQ,EAAe,+BAAqB,iBACpCD,EAAM,qCAR6C,EAqBrD,8BAXF03G,EAVuD,EAUvDA,mBAEA3B,EAZuD,EAYvDA,iBACAK,EAbuD,EAavDA,4BACAF,EAduD,EAcvDA,qBACAL,EAfuD,EAevDA,uBACAD,EAhBuD,EAgBvDA,oBAEAI,EAlBuD,EAkBvDA,gBACA19E,EAnBuD,EAmBvDA,oBACAq+E,EApBuD,EAoBvDA,qBAGIg2J,EAAUH,EAAc,EAAI,EAE9BI,EAAwB,CAC1B,CACEnpQ,MAAO,EAASgxG,GAChBl2G,OAAQ,EAAck2G,GACtBnzG,YAAagqQ,EAAqBuB,OAClC1yQ,KAAM,YACN2hC,QAAS,CAAC,YACVF,YAAa,CAAC,YACdlH,cAAc,GAEhB,CACEpzB,YAAagqQ,EAAqBwB,QAClC3yQ,KAAM,cACNsJ,MACE,oCACE,kBAAC,IAAI,CAACjE,MAAI,c,0BAAuC,IACjD,0BAAMqE,MAAO,CAAEyE,WAAY,W,iBACX,yBAAKzE,MAAO,CAAElF,IAAK,OAAQ4J,SAAU,SAAQ,OAIjEhK,OACE,kBAAC,IAA4B,CAC3BkjB,QAAS,kBAAC,IAAoB,CAAC1gB,UAAW,IAAa5G,KAAK,UAAU6G,aAAW,MAGrF86B,QAAS,CAAC,WACVF,YAAa,CAAC,YAEhB,CACEt6B,YAAagqQ,EAAqByB,cAClC5yQ,KAAM,YACN6hC,eACE,kBAAC,IAAI,KACH,kBAAC,IAAI,CAACx8B,MAAI,yB,kBAA0C,IACpD,0BAAMqE,MAAO,CAAEyE,WAAY,W,YAChB,yBAAKzE,MAAO,CAAElF,IAAK,OAAQ4J,SAAU,SAAQ,OAI5D9E,MAAO,qCACPlF,OAAQ,kBAAC,EAAyB,MAClCu9B,QAAS,CAAC,gBACVF,YAAa,CAAC,gBACdhK,YAAY,EACZo7O,qBAAqB,EACrBl0O,kBAAkB,IAIlBm0O,EAA+B,CACjC,CACExpQ,MAAO,EAASgxG,GAChBl2G,OAAQ,EAAck2G,GACtBnzG,YAAagqQ,EAAqBuB,OAClC1yQ,KAAM,YACN2hC,QAAS,CAAC,YACVF,YAAa,CAAC,YACdlH,cAAc,GAEhB,CACEpzB,YAAa,EACbnH,KAAM,YACN6hC,eACE,kBAAC,IAAI,KACH,kBAAC,IAAI,CAACx8B,MAAI,yB,kBAA0C,IACpD,0BAAMqE,MAAO,CAAEyE,WAAY,W,YAChB,yBAAKzE,MAAO,CAAElF,IAAK,OAAQ4J,SAAU,SAAQ,OAI5D9E,MAAO,qCACPlF,OAAQ,kBAAC,EAAyB,MAClCu9B,QAAS,CAAC,gBACVF,YAAa,CAAC,gBACdhK,YAAY,EACZo7O,qBAAqB,EACrBl0O,kBAAkB,IAGhBV,EAAQo0O,EAAcI,EAAeK,EAzGc,EA2GjB,mBAAgB,MA3GC,mBA2GlDpuL,EA3GkD,KA2GpCquL,EA3GoC,KA4GnDC,EAAW,iBAAO,MAIlB5mK,EAAY,aAMZ6mK,EAAe,uCAAG,8BAAAj0Q,EAAA,sDAClBszQ,GAIEC,SAA2BA,EAF/BW,KAOQC,GAAsBl2O,GAAagB,EAAOjG,GAE1Co7O,GAA0Bl7O,GAAcF,GAE9Cq7O,EAAiCF,EAAoBC,GACrDE,GAA4Bt7O,IAGhC4jF,GAAiB,kBAAM23J,MACvBx3J,GAAqB,kBAAMy3J,MAnBL,2CAAH,qDAsBfN,EAAsB,WAC1BG,GAAiC,GAAM,GACvCC,GAA4B,IAGxBD,EAAmC,SAACv2J,EAA0BrB,GAC1C,OAApBqB,GACF9yG,EAAS,CAAE2B,KAAM,4BAA6BC,QAASkxG,IAE7B,OAAxBrB,GACFC,EAAuBD,IAIrB83J,GAAmB,WACvB,GAAKlB,EAAL,CAD4B,IAKpBr6O,EAAyBpyB,EAAMzB,WAAWiD,SAA1C4wB,qBAER,GAA6B,IAAzBA,EAGF,OAFA2rO,UACA2P,GAA4Bd,GAI9Bj1J,IAIK9B,GAAgD,IAAzBzjF,GAC1Bq7O,EAAiC,MAAM,GAGzC91P,YAAW,WACT+1P,GAA4Bt7O,EAAuB,GAG/CiG,EAAMjG,EAAuB,GAAG66O,sBAClCQ,GAAiC,EAAO,MAEtCl1O,EAD2B,IAAzBnG,MAML,UA/BD2rO,MAkCE6P,GAAuB,WAAK,MACkB5tQ,EAAMzB,WAAWiD,SAA3D4wB,EADwB,EACxBA,qBAAsB8kF,EADE,EACFA,gBAE9BS,IAI6B,IAAzBvlF,GACFq7O,EAAiC,MAAM,GAGpCv2J,GACHu2J,GAAiC,EAAM,MAKzC91P,YAAW,WACT+1P,GAA4Bt7O,EAAuB,KAClD,MAGCs7O,GAA8B,SAACG,GACnCx3J,EAA4Bw3J,GAC5BzpQ,EAAS,CAAE2B,KAAM,+BAAgCC,QAAS6nQ,IAC1DV,EAAgB90O,EAAMw1O,IACtB53J,EAAgB59E,EAAMw1O,GAAyBh8O,YAC/C0G,GAAqBF,EAAMw1O,GAAyB90O,mBAGtD,qBAAU,WAKR,OAJA30B,EAAS,CAAE2B,KAAM,oBAAqBC,QAASqyB,IAE/Cg1O,IAEO,WACLjpQ,EAAS,CAAE2B,KAAM,wBAAyBC,SAAS,IACnDuyB,GAAoB,GACpBk1O,GAAiC,GAAO,MAEzC,IAEH,IAAMK,GAAgB,SAAC1tQ,GAKrB,OAJIA,GACFqtQ,GAAiC,EAAO,MAIxC,kBAAC,sBAAmB,CAACztQ,MAAOA,EAAOC,IAAKA,GACtC,kBAAC,IAAkB,CAACumG,UAAWA,GAC7B,kBAAC,IAAgB,CACf1pE,WAAW,eACXp5B,MAAOtD,EAAQA,EAAM+1B,KAAKzyB,MAAQo7E,EAAap7E,MAC/ClF,OAAQ4B,EAAQA,EAAM+1B,KAAK33B,OAASsgF,EAAatgF,OACjDpD,IAAKgF,EAAQA,EAAM+1B,KAAK50B,YAAcu9E,EAAav9E,iBAUvDwsQ,GAAa,WACjBL,GAA4Bd,EAAU,GACtCa,GAAiC,GAAM,IAGnC1P,GAAc,WAClB,IAAMrzP,EAAQxK,EAAaw/H,qBACzBouI,GACA,CAAE33O,KAAMkC,EAAMu0O,GAAUh2J,wBACxB,CACE94G,KAAM,IAAuB2tG,EAC7BruF,GAAI,iBACJ8gP,mBAAoB,IAAqB/nM,OACzCrtB,QAASilO,KAIb,OADAX,EAASj2P,QAAUzM,EACZ,MAGT,OAAOo0E,EACLA,EAAav9E,cAAgBqrQ,EAAU,KACrC,kBAAC,IAAkB,CAACpmK,UAAWA,GAC7B,kBAAC,IAAgB,CACf1pE,WAAW,cACXp5B,MAAOo7E,EAAap7E,MACpBlF,OAAQsgF,EAAatgF,OACrBpD,IAAK0jF,EAAav9E,eAItB,KGrVC,IAAMysQ,GAAgE,CAC3EhuL,QAAS,CAAEwgC,mBAAoB,mBAC/BhiH,OAAQ,CACNo9H,WAAY,GACZr9G,eAAgB,iBAChB9f,SAAU,iCACVy+B,SAAU,UACV00E,aAAc,oBCPJq8J,GAA6D,CACzEjuL,QAAS,CAAEwgC,mBAAoB,eAC/BhiH,OAAQ,CACNo9H,WAAY,GACZr9G,eAAgB,cAChB9f,SAAU,6BACVy+B,SAAU,QACV00E,aAAc,gBCPLs8J,GAA2D,CACtEluL,QAAS,CAAEwgC,mBAAoB,cAC/BhiH,OAAQ,CACNo9H,WAAY,GACZr9G,eAAgB,YAChB9f,SAAU,4BACVy+B,SAAU,YACV00E,aAAc,eCNLm6J,GAAY,uCAAG,WAAOF,GAAP,mBAAAzyQ,EAAA,yDACrByyQ,EADqB,yCACH,MADG,uBAGL,cAHK,cAGpB52G,EAHoB,OAIpBlnJ,EAAM89P,EAAUz8P,MAAM,KACtBu8P,EAAY12G,EAAOk5G,QAAQ7+P,MAAK,SAAClW,GAAD,OAAOA,EAAE8Z,OAASnF,EAAI,MALlC,kBAOnB49P,GAPmB,2CAAH,uD,8KCOZyC,EAA8B,IAAM9qP,cAA2C,MAC/E+qP,EAA0B,kBACrC,IAAM54J,WAAW24J,IAsCbhsK,EAAqC,CAAEl/E,MAAO,GAAI9U,OAAQ,IAG1DkgQ,EAAuB,IAAMhlP,MACjC,SAACloB,GAQI,IACKg6E,EAAgGh6E,EAAhGg6E,OAAQG,EAAwFn6E,EAAxFm6E,SAAUhkE,EAA8EnW,EAA9EmW,SAAUqjB,EAAoEx5B,EAApEw5B,eAAgB2zO,EAAoDntQ,EAApDmtQ,gBAAiBxpQ,EAAmC3D,EAAnC2D,OAAQyuH,EAA2BpyH,EAA3BoyH,uBAEvEg7I,EAAY,iBAAa,MACzBC,EAAU,iBAAO,MACjB9qK,EAAY,iBAA2B,MACvCE,EAAsB,iBAA2B,MACjDze,EAA4B,iBAA2B,MACvDspL,EAAS,iBAAwB,MACjCC,EAAU,iBAAO,MATpB,EAUuC,mBAAiB,MAVxD,mBAUIlsL,EAVJ,KAUmB99E,EAVnB,OAWiC,mBAAiB,MAXlD,mBAWI+9E,EAXJ,KAWgBksL,EAXhB,OAY6B,mBAAmB,IAZhD,mBAYIhoL,EAZJ,KAYcioL,EAZd,KAaG/tI,EAAkB,iBAAO,MACzBqrI,EAAe,iBAAsB,IACrCprI,EAAmB,iBAAsB,IAf5C,EAgBmC,oBAAS,GAhB5C,mBAgBI58B,EAhBJ,KAgBiB2qK,EAhBjB,OAiByC,mBAAkB,MAjB3D,mBAiBIzqK,EAjBJ,KAiBoBH,EAjBpB,OAkB6C,mBAAkB,MAlB/D,mBAkBI3e,EAlBJ,KAkBsBwpL,EAlBtB,KAmBGC,EAAkB,iBAAO,MAnB5B,EAoBmD,mBAAkB,MApBrE,mBAoBIznK,GApBJ,KAoByBC,GApBzB,QAqB2B,oBAAS,GArBpC,qBAqBaynK,IArBb,aAuBH,qBAAU,WACR,GAAKr0O,EAAL,CAEA,GADAk0O,GAAe,GACX,YAAcl0O,GAChBspE,GAAkB,QAKlB,GAHAA,GAAkB,GAGd9oB,EAAQ,CACV,IAAM8zL,EAAkB9zL,EAAO9rE,MAAK,SAAC+rE,GACnC,GAAIA,EAAQpvE,WAAWlH,OAAQ,CAC7B,IACG,YAAc61B,IACf,YAAaA,IACbygD,EAAQpvE,WAAWlH,OAAO42E,OAAS/gD,EAAe+gD,KAElD,OAAON,EACF,IACJ,YAAczgD,KACd,YAAaA,IACdygD,EAAQpvE,WAAWlH,OAAO42E,OAAU/gD,EAAgC+hD,mBAEpE,OAAOtB,MAIT6zL,GACF7pK,GAAoB6pK,GAItBR,EAAOv3P,SAAWw3P,EAAQx3P,UACxB,YAAcyjB,GAChBu0O,GAAwB5zL,EAASw8D,UAE7Bx8D,GACF6zL,GAAuB7zL,EAASgR,IAAKhR,EAASiR,SAInD,CAAC5xD,EAAgBwgD,IAEpB,qBAAU,WAER,OADA6zL,IAAW,GACJ,WACLP,EAAOv3P,QAAU,KACjBw3P,EAAQx3P,QAAU,KAClB83P,IAAW,MAEZ,IAEH,qBAAU,WACJV,EACFQ,GAAoB,IAEpBA,GAAoB,GACpBlrK,EAAoB1sF,QAAU,QAE/B,CAACo3P,IAEJ,IA6CMY,GAA0B,SAACxvK,GAC/B0F,GAAoB,MAD+C,MAQ9BgqK,GAAkB1vK,GAA/CmpK,EAR2D,EAQ3DA,MAAOE,EARoD,EAQpDA,KAAMC,EAR8C,EAQ9CA,MAAOE,EARuC,EAQvCA,KACtB/oK,EAAKkvK,GAAarG,EAAOE,GACzB9oK,EAAKivK,GAAaxG,EAAOE,GACzBuG,EAAY,IAAIZ,EAAQx3P,QAAQwxP,aAAavoK,EAAIC,GACjDr0F,EAASujQ,EAAUv8K,YACnBzG,EAAMvgF,EAAOugF,MACbC,EAAMxgF,EAAOwgF,MACb4D,EAASk/K,GAAa/iL,EAAKC,GAEjCkiL,EAAOv3P,QAAQyhF,UAAUxI,GACzBs+K,EAAOv3P,QAAQq4P,UAAUD,EAAW,GACpC,IAAME,EAAsBC,GAAqCH,GAC7D,YAAc30O,IAAmBA,EAAesjD,eAClD2lB,EAAoB1sF,QAAUnL,GAE3B63F,EAAoB1sF,QAGvBiuE,EAA0BjuE,QAAU0sF,EAAoB1sF,QAFxDiuE,EAA0BjuE,QAAUnL,EAItC2L,YAAW,WACT+2P,EAAOv3P,QAAQ2pF,MAAM90F,KACpB,GACH2jQ,GAAev0L,EAAQszL,EAAOv3P,QAAQ47E,UAAW08K,EAAezjQ,IAG5DojQ,GAAyB,SAAC7iL,EAAaC,GAC3C,IACM4D,EAASk/K,GAAa/iL,EAAKC,GACjCkiL,EAAOv3P,QAAQyhF,UAAUxI,GACzBs+K,EAAOv3P,QAAQ4pF,QAHF,IAIb,IAAMpB,EAAS1M,KACTw8K,EAAgBC,GAAqC/vK,GAC3Dva,EAA0BjuE,QAAUi5E,EACpCu/K,GAAev0L,EAPF,GAOgBq0L,EAAer/K,IAGxCw/K,GAAkB,SAAClpQ,EAAsBg9E,GAC7C,GAAIA,EAAM,CACR,IAAM5/D,EAAW4/D,EAAKpyE,MAAMmrF,YAAY/1F,EAAK,gBAAgB,WAC3D,IAAMkpF,EAAOlpF,EAAIqsF,UAEjB07K,EAAQt3P,QAAUy4E,KAEpBo/K,EAAgB73P,QAAU2M,IAIxB+rP,GAAqB,SAACnsL,GAC1BA,EAAKpyE,MAAM07E,eAAegiL,EAAgB73P,UAGtCw4P,GAAiB,SAAjBA,EACJv0L,EACAwU,EACA+P,EACA3zF,EACA8jQ,GAIA,KAAIlgL,EAAO,GAAX,CAHE,MAM4E,YAC5ExU,EACAwU,EACA+P,GAHM/Y,EANN,EAMMA,SAAUmpL,EANhB,EAMgBA,aAKlBjvI,EAAgB3pH,QAAU44P,EAK1B,IAAIxtK,EAAaytK,GAAcppL,GAK/B,GAHI2b,EAAa,GAAM,YAAc3nE,GAGhC2nE,EAAa,GAAK,YAAc3nE,IAAoC,IAAf2nE,IAAqB,YAAc3nE,GAA7F,CAA+G,MAC3Eq1O,GAAoBrgL,GAA9C,EADqG,EACrG5jF,OACR2jQ,EAAev0L,EAAQwU,EAAO,EAF+E,EAC7F6/K,cACgC,QAOlD,GAHAS,GAAmBvwK,EAAQ/P,EAAM5jF,GACjCmkQ,KAEIv1O,IAAmBA,EAAeojD,eAAiBqmB,IAAmByrK,EAAO,CAC/E,IAAM/jQ,EAAQ66E,EAASt3E,MAAK,SAACvD,GAC3B,OAAI,YAAa6uB,GACR7uB,EAAME,WAAWlH,OAAO42E,OAAU/gD,EAA+B+gD,KAEjE5vE,EAAME,WAAWlH,OAAO42E,OAAU/gD,EAAgC+hD,sBAG7EkyL,EAAY,CAAC9iQ,SAEb8iQ,EAAYjoL,KAoBVqpL,GAAsB,SAACrgL,GAC3B8+K,EAAOv3P,QAAQ4pF,QAAQnR,EAAO,GAC9B,IAAM+P,EAAS+uK,EAAOv3P,QAAQ87E,YACxBjnF,EAAS2zF,EAAO3M,YAEtB,MAAO,CAAE2M,SAAQ3zF,SAAQyjQ,cADHC,GAAqC/vK,KAQvDqwK,GAAgB,SAACppL,GACrB,OAAOA,EAASp7C,QAAO,SAACuN,EAAKsiC,GAC3B,OAAIA,EAAQpvE,WAAWovE,QACdtiC,EAAMsiC,EAAQpvE,WAAW24F,YAEzB7rD,EAAM,IAEd,IA0BC22N,GAAuC,SAACU,GAAgD,MACvDf,GAAkBe,GAA/CtH,EADoF,EACpFA,MAAOE,EAD6E,EAC7EA,KAAMC,EADuE,EACvEA,MAErB,MAAO,CAHqF,EAChEE,KAEdF,EAAOD,EAAMF,IAGvBuH,GAAuC,SAAC1wK,GAC5C,IAAMS,EAAKkvK,GAAa3vK,EAAO,GAAIA,EAAO,IACpCU,EAAKivK,GAAa3vK,EAAO,GAAIA,EAAO,IAC1C,OAAO,IAAIgvK,EAAQx3P,QAAQwxP,aAAavoK,EAAIC,IAMxCgvK,GAAoB,SAAC1vK,GAMzB,MAAO,CAAEmpK,MALKnpK,EAAOopK,eAAex8K,MAKpBy8K,KAJHrpK,EAAOopK,eAAev8K,MAIby8K,MAHRtpK,EAAOupK,eAAe38K,MAGP48K,KAFhBxpK,EAAOupK,eAAe18K,QAK/ByG,GAAY,kBAAgCy7K,EAAOv3P,QAAQ87E,aAM3Dq9K,GAAqB,SAACvkQ,GAAD,OACzBujQ,GAAavjQ,EAAMwvE,SAASC,YAAY,GAAIzvE,EAAMwvE,SAASC,YAAY,KAEnE8zL,GAAe,SAAC/iL,EAAaC,GAAd,OAAkD,IAAImiL,EAAQx3P,QAAQg4E,OAAO5C,EAAKC,IAEjG0jL,GAAqB,SAACX,EAAiB3/K,EAAc5jF,GAGzDwiQ,EAAUr3P,QAAUo4P,EACpBd,EAAQt3P,QAAUy4E,EAClB+T,EAAUxsF,QAAUnL,EAChB,YAAc4uB,KAAoB2zO,IACpCnpL,EAA0BjuE,QAAUnL,IAYlCq5E,GAAkC,uBACtC,SAACt5E,EAAe4zP,EAAkBl5K,GAGhC,GAFA4e,GAAoBt5F,GAEhB4zP,EAAQ,CACV,IACM4Q,GADkC,YAA1B9pL,EAAsC0lL,EAAeprI,GAChD5pH,QAAQ7H,MAAK,SAACgjC,GAAD,OAAQA,EAAGxvC,UAAU+I,SAASE,EAAME,WAAWlH,OAAO42E,SAElF40L,GAEFA,EAAKC,eAAe,CAAEC,MAAO,SAAU9/N,SAAU,YAGhD6iF,GAA0Bk9I,GAA2B3kQ,GACxD4kQ,GAA6B5kQ,GAE7B2iQ,EAAOv3P,QAAQ2pF,MAAMwvK,GAAmBvkQ,MAG5C,IAGIs5F,GAAsB,uBAAY,SAACt5F,GACvCpH,EAAiBoH,KAChB,IAEGu5E,GAAmB,uBAAY,SAACv5E,GACpC6iQ,EAAc7iQ,KACb,IAyCG6kQ,GAAsB,WAC1B7vI,EAAiB5pH,QAAU,GAC3Bg1P,EAAah1P,QAAU,IAOnBu5P,GAA6B,SAAC3kQ,GAElC,QADeknF,KACJ77E,SAASk5P,GAAmBvkQ,KAUnC4kQ,GAA+B,SAAC5kQ,GACpC,IAAMwgF,EAAMxgF,EAAMwvE,SAASC,YAAY,GACjCgR,EAAMzgF,EAAMwvE,SAASC,YAAY,GAFc,EAGhB6zL,GAAkBp8K,MAA/C61K,EAH6C,EAG7CA,MAAOE,EAHsC,EAGtCA,KAAMC,EAHgC,EAGhCA,MAAOE,EAHyB,EAGzBA,KACtB0H,EAAcP,GAAmBvkQ,GACjC+kQ,EAAaxB,GAAaxG,EAAOt8K,GACjCukL,EAAYzB,GAAa/iL,EAAKy8K,GAC9BgI,EAAa1B,GAAarG,EAAOz8K,GACjCykL,EAAY3B,GAAa/iL,EAAK48K,GAE9B+H,EAAgBC,GAAaN,EAAaC,GAC1CM,EAAeD,GAAaN,EAAaE,GACzCM,EAAgBF,GAAaN,EAAaG,GAC1CM,EAAeH,GAAaN,EAAaI,GAE3CvnP,EAAI6nP,GAAWL,EAAeG,GAC9B5nP,EAAI,KAEJ2nP,EAAehvK,EAAiBl/E,QAClCuG,EAAI+nP,GAAsBJ,EAAcC,IAEtCC,EAAelvK,EAAiBl/E,QAClCuG,GAAK24E,EAAiBl/E,QAEpBuG,GAAKC,IACPglP,EAAOv3P,QAAQs6P,MAAMhoP,EAAGC,IAItB6nP,GAAa,SAACL,EAAuBG,GACzC,IAAMpI,EAAQyI,GAAuBL,GAC/BvI,GAAS6I,GAAuBT,GAEtC,OAAIjI,GAGGH,GAOH4I,GAAyB,SAACL,GAC9B,GAAItvP,OAAOG,WAAa,KACtB,GAAImvP,EAAgBjvK,EAAiBh0F,OAAS,IAC5C,OAAOg0F,EAAiBh0F,OAAS,SAGnC,GAAIijQ,EAAgBjvK,EAAiBh0F,OACnC,OAAOg0F,EAAiBh0F,OAG5B,OAAO,GAGHujQ,GAAyB,SAACT,GAC9B,OAAInvP,OAAOG,WAAa,IAClBgvP,EAAgB9uK,EAAiBh0F,OAAS,IACrCg0F,EAAiBh0F,OAAS,IAS9B,EAND8iQ,EAAgB9uK,EAAiBh0F,OAAS,GACrCg0F,EAAiBh0F,OAAS,GAE1B,GAMPojQ,GAAwB,SAACJ,EAAsBC,GACnD,OAAItvP,OAAOG,WAAa,IAClBkvP,EAAehvK,EAAiBl/E,MAAQ,IAAMmuP,EAAgBjvK,EAAiBh0F,OAAS,IACnFg0F,EAAiBl/E,MAAQ,GAEzBk/E,EAAiBh0F,OAGnBg0F,EAAiBl/E,OAStBiuP,GAAe,SAACS,EAA+BxxD,GACnD,IAAIp4D,EAAK0mH,EAAOv3P,QAAQykF,gBAAgBi2K,kBAAkBD,GACtDtgL,EAAKo9K,EAAOv3P,QAAQykF,gBAAgBi2K,kBAAkBzxD,GAEtD0xD,EAAYxgO,KAAKy+C,IAAI,GAAI2+K,EAAOv3P,QAAQ47E,WAI5C,OAFQzhD,KAAKywD,MAAMimD,EAAGv+H,EAAI6nE,EAAG7nE,IAAMu+H,EAAGv+H,EAAI6nE,EAAG7nE,IAAMu+H,EAAGt+H,EAAI4nE,EAAG5nE,IAAMs+H,EAAGt+H,EAAI4nE,EAAG5nE,IAAMooP,GAS/E3B,GAAgB,WACpB,IAAIxB,EAAQx3P,QAAQ46P,UAAU,CAC5BC,YAAa,UACbC,cAAe,EACfC,aAAc,EACdC,UAAW,UACXpP,YAAa,EACbr8P,IAAKgoQ,EAAOv3P,QACZwoF,OAAQ1M,QAINgS,GAA2B,uBAAY,WAC3CypK,EAAOv3P,QAAQyhF,UAAUiL,EAAoB1sF,WAC5C,IAEG+tF,GAAY,uBAAY,SAACktK,GAC7B1D,EAAOv3P,QAAQyhF,UAAUw5K,KACxB,IAEGnuK,GAAoB,WACnBE,GACH2qK,GAAe,IAInB,OACE,kBAACV,EAA4B/oP,SAAQ,CACnCvqB,MAAO,CACLimI,mBACAorI,eACAlnK,4BACAC,aACA9f,4BACAue,YACA/c,WACAid,sBACAC,eAzViB,WACrB8sK,KACA,IAAMjxK,EAAS1M,KACTjnF,EAASo5E,EAA0BjuE,QACnCy4E,EAAO8+K,EAAOv3P,QAAQ47E,UACtB08K,EAAgBC,GAAqC/vK,GAC3DuE,GAAkB,GAClByrK,GAAev0L,EAAQwU,EAAM6/K,EAAezjQ,GAAQ,GACpDw7F,IAAuB,GACvBsnK,GAAe,IAiVXlrK,gBAhfkB,SAACl9F,EAAsBg9E,GAI7C,GAAKgrL,EAAOv3P,SAAYw3P,EAAQx3P,QAwB9B04P,GAAmBlB,EAAQx3P,SAE3BzQ,EAAIkyF,UAAU+K,EAAUxsF,SACxBzQ,EAAI8oQ,UAAUa,GAAqC7B,EAAUr3P,UAC7DzQ,EAAIq6F,QAAQ0tK,EAAQt3P,SAEpBu3P,EAAOv3P,QAAUzQ,EACjBioQ,EAAQx3P,QAAUusE,EAClBksL,GAAgBlpQ,EAAKg9E,OAhCkB,CAOvC,GANAgrL,EAAOv3P,QAAUzQ,EACjBioQ,EAAQx3P,QAAUusE,EAElB3hE,OAAOrb,IAAMA,EACbqb,OAAO2hE,KAAOA,EACdorL,GAAe,GACXvzL,GAAYA,EAASokB,OAEvBwvK,GAAwB5zL,EAASokB,aAC5B,GAAIpkB,GAAYA,EAASw8D,SAE9Bo3H,GAAwB5zL,EAASw8D,eAC5B,GAAIx8D,GAAYA,EAASgR,KAAOhR,EAASiR,IAE9C4iL,GAAuB7zL,EAASgR,IAAKhR,EAASiR,SACzC,OAGgB,YAAuCznF,EAAQ2+E,GAA5D6I,EAHH,EAGGA,IAAKC,EAHR,EAGQA,IACb4iL,GAAuB7iL,EAAKC,GAE9BojL,GAAgBlpQ,EAAKg9E,KAudnBshB,sBAhPwB,SAACqtK,GAC7B,IAAMziL,EAAO8+K,EAAOv3P,QAAQ47E,UACtBu/K,EAAUD,EAASziL,EAAO,EAAIA,EAAO,EAC3C8+K,EAAOv3P,QAAQ4pF,QAAQuxK,GAEvBruK,MA4OIze,mBAjMqB,SAACz5E,EAAe+2E,EAAqByvL,GAE9D,IAAMC,EAAgB5rL,EAASt3E,MAC7B,SAAC+rE,GAAD,OACEA,EAAQpvE,WAAWovE,UAAYA,EAAQj+D,KAAOrR,EAAME,WAAWg3E,mBAAqB5H,EAAQj+D,KAAOrR,EAAMqR,OAE7G,GAAIo1P,EAAe,CACjBntK,GAAoBt5F,GAGpB,IAAM0mQ,EACJ3vL,GAAa0vL,EAAcvmQ,WAAW24F,YAAc,EAChDb,GACAzyD,KAAKrtC,IAAI68H,EAAgB3pH,QAAQu7P,wBAAwBF,EAAcp1P,IAlalE,IAoaLpR,EAASsjQ,GAAavjQ,EAAMwvE,SAASC,YAAY,GAAIzvE,EAAMwvE,SAASC,YAAY,IAEtFkzL,EAAOv3P,QAAQyhF,UAAU5sF,GACzB0iQ,EAAOv3P,QAAQ4pF,QAAQ0xK,GACvBhE,EAAQt3P,QAAUs7P,GAEdF,QAA+Cj2Q,IAAxBi2Q,IACzB5C,GAAev0L,EAAQq3L,EAAejE,EAAUr3P,QAASnL,QAG3Dq5E,GAAgCt5E,GAAO,IAyKrCu5E,oBACA2e,qBACA5e,mCACAggB,uBACA3iB,aACAs+C,SA7fW,WACf0tI,EAAOv3P,QAAU,KACjBw3P,EAAQx3P,QAAU,MA4fdgtF,cACAJ,WA9lBS,GA+lBT3B,mBACAiC,iBACAL,kBA9ToB,SAApBA,IACJE,GAAkB,GAClB4qK,GAAe,GAFc,MAGKmB,GAAoBxB,EAAQt3P,SAAtDnL,EAHqB,EAGrBA,OAAQyjQ,EAHa,EAGbA,cAER7oL,EAAa,YAAiBxL,EAAQqzL,EAAQt3P,QAASs4P,GAAvD7oL,SACR+oL,GAAev0L,EAAQqzL,EAAQt3P,QAASs4P,EAAezjQ,GAAQ,GAC/Dw7F,IAAuB,GAGJ,IAFFwoK,GAAcppL,IAG7Bod,KAoTEwD,0BACAD,uBACA9kB,gBACAyhB,oBACA48B,kBACAv7C,qBAGDhuE,MAeHzD,EAAqB,aATH,SAAC1T,GACvB,MAAO,CACLg7E,OAAQ,YAAUh7E,GAClBm7E,SAAU,YAAYn7E,GACtBw6B,eAAgB,YAAkBx6B,GAClCmuQ,gBAAiB,YAAmBnuQ,MAIb,CAAyBkuQ,I,8BC5qBpD,2DA4BMqE,EAAuB,GAOtB,SAASC,IACd,OACE,cACIprO,EACkB,oBAAXzlB,OACPA,OACgB,oBAATzoB,KACPA,KACAq5Q,K,+CC3CO,SAASE,IAetB,OAdAA,EAAWt4Q,OAAO0rC,QAAU,SAAUtjC,GACpC,IAAK,IAAItJ,EAAI,EAAGA,EAAIq2B,UAAU9yB,OAAQvD,IAAK,CACzC,IAAIs2B,EAASD,UAAUr2B,GAEvB,IAAK,IAAI+B,KAAOu0B,EACVp1B,OAAOkB,UAAUC,eAAe1B,KAAK21B,EAAQv0B,KAC/CuH,EAAOvH,GAAOu0B,EAAOv0B,IAK3B,OAAOuH,IAGOqjB,MAAMzsB,KAAMm2B,WAf9B,mC,8RC6BIojP,EAA+C,GAEtCC,EAAgB,uCAAG,WAC9BjwM,GAD8B,yBAAA1pE,EAAA,2DAQxB45Q,EAAiBF,EAAqBxjQ,MAAK,SAAC2jQ,GAAD,OAAWA,EAAMnwM,gBAAkBA,MARtD,yCAWrB,CACLowM,oBAAqBF,EAAeE,oBACpC10Q,OAAQw0Q,EAAex0Q,OACvBuZ,SAAUi7P,EAAej7P,WAdC,uBAiB4Bo7P,EAAqBrwM,GAjBjD,uBAiBpBowM,EAjBoB,EAiBpBA,oBAAqB10Q,EAjBD,EAiBCA,OAAQuZ,EAjBT,EAiBSA,SAC/BykB,EAAgC,CAAEsmC,gBAAeowM,sBAAqB10Q,SAAQuZ,YACpF+6P,EAAqBn2Q,KAAK6/B,GAnBE,kBAoBrB,CAAE02O,sBAAqB10Q,SAAQuZ,aApBV,4CAAH,sDAwBhBq7P,EAAc,SAAChhK,GAC1B,OAAKA,EACEA,EAAS1rG,KAAI,SAAC2sQ,GAAD,OAAaA,EAAQngQ,QADnB,IAIXogQ,EAAuB,SAACl/J,GACnC,IAAKA,EAAc,MAAO,GAC1B,IAAMm/J,EAA2Bn/J,EAAa9kG,MAAK,SAACikQ,GAClD,GAAyB,kBAArBA,EAAYxtQ,KAA0B,OAAOwtQ,KAGnD,OAAOA,EAAcA,EAAYvhP,UAAO11B,GAG7Bk3Q,EAAkB,SAACphK,GAC9B,IAAKA,EAAU,MAAO,CAAEC,eAAgB,GAAIC,gBAAiB,IAC7D,IAAMmhK,EAAQrhK,EAAS9iG,MAAK,SAAC+jQ,GAAD,OAAaA,EAAQngQ,KAAKutB,WAAW,WAIjE,MAAO,CAAE4xE,gBAFcohK,aAAK,EAALA,EAAOvgQ,MAAOugQ,EAAMvgQ,UAAO5W,EAEzBg2G,iBADDmhK,aAAK,EAALA,EAAOr5Q,MAAOq5Q,EAAMr5Q,UAAOkC,IAIxCo3Q,EAAY,SAACthK,GAA8C,MAC1BohK,EAAgBphK,GAE5D,MAAO,CAAE,yBAH6D,EAC9DC,eAE2C,0BAHmB,EAC9CC,gBAEsEn1G,MAAM,EAAG,MAGnGw2Q,E,kDACJ,WAAYnxQ,GAAY,kCACtB,cAAMA,IACDpI,KAAO,0BAFU,E,sBADYsyB,QAOzBymP,EAAoB,uCAAG,WAClCrwM,GADkC,iDAAA1pE,EAAA,+EAIT,YACrB,CAAEgB,KAAM,GAAI86G,OAAQ,+BAAgChtC,KAAM,QAC1D,GACApF,GAP8B,cAI1B/qD,EAJ0B,OAU1Bm7P,EAA6C,CACjDl/J,aAAcj8F,EAASirD,qBAAqBixC,cAC5CC,eAAgBn8F,EAASk6F,iBAAiBzxF,eAC1C2zF,kBAAmBm/J,EAAqBv7P,EAASk6F,iBAAiBmC,cAClE7B,QAASx6F,EAASirD,qBAAqBwvC,SAASpjG,MAAM,KAAK,GAC3DujG,UAAW56F,EAASk6F,iBAAiBW,UACrCC,UAAW96F,EAASirD,qBAAqB8vC,WAGrCt0G,EAnB0B,aAoB9B,6BAAuD,QAA3B,EAAEuZ,EAASk6F,wBAAgB,eAAEgC,cACzD,8BAAwD,QAA3B,EAAEl8F,EAASk6F,wBAAgB,eAAEzxF,eAC1D,yBAA0B8yP,EAA8C,QAA1B,EAACv7P,EAASk6F,wBAAgB,eAAEmC,cAC1E,yBAAmD,QAA3B,EAAEr8F,EAASk6F,wBAAgB,eAAEO,SAASpjG,MAAM,KAAK,GACzE,0BAAoD,QAA3B,EAAE2I,EAASk6F,wBAAgB,eAAEW,UAEtD,wBAA4D,QAArC,EAA2B,QAA3B,EAAE76F,EAASk6F,wBAAgB,eAAEe,gBAAQ,eAAE9/F,KAC9D,yBAA6D,QAArC,EAA2B,QAA3B,EAAE6E,EAASk6F,wBAAgB,eAAEe,gBAAQ,eAAE54G,KAC/D,4BAAgE,QAArC,EAA2B,QAA3B,EAAE2d,EAASk6F,wBAAgB,eAAEkB,gBAAQ,eAAEjgG,KAClE,6BAAiE,QAArC,EAA2B,QAA3B,EAAE6E,EAASk6F,wBAAgB,eAAEkB,gBAAQ,eAAE/4G,MAChEs5Q,EAAwC,QAA/B,EAAC37P,EAAS67P,6BAAqB,eAAExhK,WA9Bf,kBAiCzB,CAAE8gK,sBAAqB10Q,SAAQuZ,aAjCN,gCAmC1B87P,EAAW,IAAIF,EAAJ,MACjB,YAAkBE,GApCc,yDAAH,uD,6BCtFlB,SAASC,EAAgB9hP,EAAM+hP,GAI7C,OADA/hP,EAAOA,GAAQ,GACR,IAAItX,OAAO,OAASq5P,EAAqB,MAAMr+P,KAAKsc,GAT5D,mC,6BCCA,+EAEMgiP,EAAwC,WAE5C,OADAp3O,QAAQ/7B,MAAM,6DACP,MAWIozQ,EAAe,SAACC,GAAuC,MAAC,MAAoC,OAAZ,QAAxB,EAAAA,EAAY/wM,oBAAY,eAAEjmD,QAClFi3P,EAAY,SAACD,GAAuC,MAAC,MAAoC,OAAZ,QAAxB,EAAAA,EAAY/wM,oBAAY,eAAEjmD,QAE/Ek3P,EAAc,SAACF,GAC1B,IAAMG,EAZiB,SAACH,GACxB,OAAOC,EAAUD,GACbA,EAAYI,cACZL,EAAaC,GACXA,EAAYK,iBACZ,KAOSC,CAAUN,GAEzB,OAAOG,EAAS,IAAH,OAAOA,GAAW,IAGpBI,EAAa,WACxB,IAAMngO,EAAO,iCAEb,OAAKA,EAIL,UAAUA,EAAK2sB,WAAf,OAA2B3sB,EAAK4sB,SAAhC,OAA0CkzM,EAAY9/N,IAH7C0/N,KAMEU,EAA0B,WACrC,IAAMpgO,EAAO,iCAEb,OAAKA,EAIL,UAAUA,EAAK2sB,WAAf,OAA2B3sB,EAAK4sB,SAHvB8yM,M,2vBCnBL,SAAUW,EAAkBvzQ,GAA6B,IACrDkB,EAAiGlB,EAAjGkB,SAAUlI,EAAuFgH,EAAvFhH,KAAM,EAAiFgH,EAAjF2a,OAAkB5N,GAA+D/M,EAAzEmB,SAAyEnB,EAA/D+M,kBAAkB,EAA6C/M,EAA7CsB,SAAUN,EAAmChB,EAAnCgB,MAAO2D,EAA4B3E,EAA5B2E,KAAM,EAAsB3E,EAAtB4a,QAASnJ,EAAazR,EAAbyR,SAD/B,EAEtB,cAA/BrS,EAFqD,EAErDA,OAAQC,EAF6C,EAE7CA,SAAU6F,EAFmC,EAEnCA,SAEpB/I,GADqB,8BAAnBiQ,eACgB,gCAElBonQ,EAAwB,+BAAqB,mBAC3Ct2Q,EAAa,aAAY,SAAC8B,GAAD,OAAyBA,KAAlD9B,SAPqD,EAQrB,mBAAS,IARY,mBAQtD8H,EARsD,KAQxCC,EARwC,KAU7D,qBAAU,WACR,IAAMvL,EAAQwD,EAASE,OAAOpE,GAE1BU,GAASA,IAAUqT,GACrB9H,EAAgBvL,KAEjB,IAQH,OACE,kBAAC,IAAS,iBACJsG,EAAK,CACT1B,WAAYc,EAAOpG,GAAQ,IAAgBsyB,MAAQ7Z,EAAW,IAAgBw1G,SAAW,IAAgBn6G,QACzGrH,IAAKvE,GAAsB7B,EAC3BiC,SAAU,SAACjF,GACT4I,EAAgB5I,EAAEuQ,cAAclT,OAC5B,GACF,EAAS2C,IAGbse,OAAQ,SAACte,GACH,GAAQ,EAAOA,GACnB6I,EAASlM,EAAMqD,EAAEuQ,cAAclT,OAC/B85Q,EAAsBC,SAASz6Q,EAAMqD,EAAEuQ,cAAclT,QAEvDkhB,QAAS,SAACve,GAtBc,IAACkF,KAuBHlF,EAAEkF,SAtBZof,OAAOG,WAAa,KAChCvf,EAAO6tQ,eAAe,CAAEC,MAAO,WAsB7BlzQ,EAAgBqa,oBACd,CACEja,UAAWyE,GAEb,CACE+O,cAAe/W,IAGf,GACF,EAAQqD,IAGZsI,KAAMA,GAAc,OACpB1D,YAAa+D,EACbtL,MAAOsL,K,YChEP,SAAU0uQ,EAAS1zQ,GAAoB,MACd,cAArBX,EADmC,EACnCA,SACArG,GAFmC,EACzBoG,OACgBY,EAA1BhH,MAAMgI,EAAoBhB,EAApBgB,MAAOG,EAAanB,EAAbmB,SAFsB,EAGP,mBAAS,IAHF,mBAGpCusE,EAHoC,KAGxBuxL,EAHwB,OAIX,oBAAS,GAJE,mBAIpCC,EAJoC,KAI1BC,EAJ0B,OAKjB,YAAsBD,EAAUxxL,GAAlDjuE,EALmC,EAKnCA,MAAOmuP,EAL4B,EAK5BA,OAET1sP,EAAWC,EACb9B,EAAS,CACT8B,SAAU,CACRzH,OAAO,EACP0H,QAAS,aAEXC,QAAS,CACP3H,MAAOk0P,EACPxsP,QAAS,4BAGX/B,EAOJ,OACE,6BACE,kBAACk0Q,EAAiB,CAChBv6Q,KAAMA,GAAc,WACpBgI,MAAOA,GAAgB,WACvBC,YAAU,EACVC,SAAUA,EACVyD,KAAK,OACLrD,SAAU,SAACjF,GAAD,OAbK,SAACA,GACpB4iQ,EAAc5iQ,EAAEkF,OAAO7H,OACvBylQ,GAAY,GAWStyP,CAAaxQ,IAC9B8E,SAAUA,IAEX1B,GAAS,kBAAC,IAAU,CAACiC,UAAU,eAAa,2B,6DCxBtC,EAAgB,SAAC1B,GAAoB,MACf,cAAzBX,EADwC,EACxCA,SAAU+X,EAD8B,EAC9BA,WAD8B,EAEZ,mBAAS,IAFG,mBAEzCs2D,EAFyC,KAE7BuxL,EAF6B,OAGhB,oBAAS,GAHO,mBAGzCC,EAHyC,KAG/BC,EAH+B,KAI1CvR,EAAS,wBAJiC,EAKpB,cAApBnuP,EALwC,EAKxCA,MAAOE,EALiC,EAKjCA,SALiC,EAMhB,oBAAS,GANO,mBAM/Bg0Q,GAN+B,aAOR,mBAAS,IAPD,mBAO3BC,GAP2B,WAS1Ch1Q,EAAQ,cACRC,EAAM,qCACNC,EAAe,+BAAqB,iBAEpC+0Q,EAAa,SAACC,GAAD,OAAiBA,GAAO,IAErCC,EAAgB,SAACr6Q,GACrB,OAAQwlQ,IAAatR,EAAOt5O,KAAK5a,KAAUA,aAAK,EAALA,EAAO8B,QAAS,IAAMq4Q,EAAWr0P,OAAO9lB,KAgCrF,OAxBA,qBAAU,WACJq6Q,EAAcrmM,IACXmmM,EAAWr0P,OAAOkuD,IAGrBkmM,EAAgB,2BAFhBA,EAAgB,sBAIlBD,GAAY,KAEZv8P,IACAu8P,GAAY,GACZh0Q,GAAS,MAEV,CAAC+tE,EAAYwxL,IAEhB,qBAAU,YACFxxL,GAAcjuE,GAAWA,GAASs0Q,EAAcrmM,IACpDimM,GAAY,GACZ,EAAuB/0Q,EAAOC,EAAKC,IAEnC60Q,GAAY,KAEb,CAACl0Q,IAGF,kBAAC,IAAwB,CAAC0N,UAAWnN,EAAMmN,WACzC,yBAAKzK,MAAO,CAAE8U,cAAe,QAC3B,kBAAC,KAAiB,CAChBxe,KAAK,OACLgI,MAAM,OACNC,YAAU,EACVC,SAAU7B,EAAS,CACjB8B,SAAU,CACRzH,OAAO,EACP0H,QAAS,aAEXC,QAAS,CACP3H,MAAOk0P,EACPxsP,QAAS,6BAGbE,SAAU,SAACjF,GAAD,OA9CG,SAACA,GACpB4iQ,EAAc5iQ,EAAEkF,OAAO7H,OACvBylQ,GAAY,GA4CWtyP,CAAaxQ,IAC9B8E,UAAQ,OAUZ,EAAmB,SAAC,GAAiD,EAA/CtE,MAA+C,MACjD,mBAAS,MADwC,gCAEjD,mBAAS,OAFwC,6BAIzE,OACE,kBAAC,IAAS,CACRS,gBAAc,EACdC,QAAS,CAAEC,IAAK,CAAEC,EAAG,IAAiBC,QAASC,IAAK,IAAiBC,SAAWC,OAAQ,CAAEJ,EAAG,IAAiBC,QAASC,IAAK,IAAiBC,SAAWE,KAAM,CAAEL,EAAG,IAAiBC,QAASC,IAAK,IAAiBC,SAAWG,MAAO,CAAEN,EAAG,IAAiBC,QAASC,IAAK,IAAiBC,WAE1R,kBAAC,IAAS,CACRI,KAAM,IAAcC,OACpBX,gBAAc,EACdY,OAAQ,IAAgBC,UACxBZ,QAAS,CAAEM,OAAQ,IAAiBO,YAEpC,kBAAC,IAAI,CAACC,MAAI,EAACC,WAAY,IAAeC,cAAY,uCAGlD,kBAAC,IAAI,CAACD,WAAY,IAAeE,SAAO,gHAI1C,kBAAC,IAAS,CACRR,KAAM,CAAEP,EAAG,IAAcQ,OAAQN,IAAK,IAAcc,OACpDP,OAAQ,CAAET,EAAG,IAAgBiB,YAE7B,kBAAC,IAAG,CAAClC,IAAI,IAAIM,KAAK,kDAAkDL,SAAS,WAAS,kCAQxF,EAAyB,SAC7BmC,EACAC,EACAC,GAWAA,EAAaC,gBARE,SAACC,EAAYnC,GAC1B,OACE,kBAAC,sBAAmB,CAAC+B,MAAOA,EAAOC,IAAKA,GACpC,kBAAC,EAAgB,CAAChC,MAAOA,OAO/B,GACA,CAAEH,KAAM,IAAiBuC,EAAGC,eAAe,KCrIzC,SAAUqhH,EAAMvgH,GAAiB,IAC7BkS,EAAiGlS,EAAjGkS,mBAAoB8hQ,EAA6Eh0Q,EAA7Eg0Q,iBAAkB7yQ,EAA2DnB,EAA3DmB,SAAUgM,EAAiDnN,EAAjDmN,UAAWnU,EAAsCgH,EAAtChH,KAAMgI,EAAgChB,EAAhCgB,MAAOyQ,EAAyBzR,EAAzByR,SAAUzJ,EAAehI,EAAfgI,WADrD,EAGR,cAArB3I,EAH6B,EAG7BA,SAH6B,KAGnBD,OACkB,mBAAS,KAJR,mBAI9BsuE,EAJ8B,KAIlBuxL,EAJkB,OAKL,oBAAS,GALJ,mBAK9BC,EAL8B,KAKpBC,EALoB,OAMD,oBAAS,GANR,mBAM9B8U,EAN8B,KAMlBC,EANkB,KAO/BtmB,EACJ,uIARmC,EAST,cAApBnuP,EAT6B,EAS7BA,MAAOE,EATsB,EAStBA,SAETw0Q,EAAkB,SAACz6Q,GAAD,OAAoBwlQ,IAAatR,EAAOt5O,KAAK5a,KAAUA,aAAK,EAALA,EAAO8B,QAAS,GAuB/F,OAjBA,qBAAU,WACJ24Q,EAAgBzmM,GAClBwmM,GAAc,IAEdA,GAAc,GACdv0Q,GAAS,MAEV,CAAC+tE,EAAYwxL,IAEhB,qBAAU,YACFxxL,GAAcjuE,GAAWA,GAAS00Q,EAAgBzmM,GACtDwmM,GAAc,GAEdA,GAAc,KAEf,CAACz0Q,IAGF,kBAAC,IAAwB,CAACiC,UAAU,sBAAsBwQ,mBAAoBA,EAAoB/E,UAAWA,EAAWnF,WAAYA,GAClI,kBAAC,KAAiB,CAChBhP,KAAMA,GAAc,QACpBgI,MAAOA,GAAgB,QACvBC,YAAU,EACVC,SAAU7B,EAAS,CACjB8B,SAAU,CACRzH,OAAOs6Q,EACP5yQ,QAAS,aAEXC,QAAS,CACP3H,MAAOk0P,EACPxsP,QAAS,4BAGbE,SAAU,SAACjF,GAAD,OAtCK,SAACA,GACpB4iQ,EAAc5iQ,EAAEkF,OAAO7H,OACvBylQ,GAAY,GAoCStyP,CAAaxQ,IAC9B8E,SAAUA,EACVsQ,SAAUA,IAEXwiQ,GAAc,kBAAC,IAAU,CAACvyQ,UAAU,eAAa,8B,2eCjEjD,IAAM0yQ,EAAa,IAAO75Q,EAAV,KAOR,SAACyF,GAAD,OAAWA,EAAM4X,SAAW5X,EAAM4X,SAAW,WAO3C,SAAC5X,GAAD,OAAWA,EAAM4X,SAAW5X,EAAM4X,SAAW,WAG7C,SAAC5X,GAAD,OAAWA,EAAM4X,SAAW5X,EAAM4X,SAAW,WCnBxD,SAAUy8P,IAAM,IACZh1Q,EAAa,cAAbA,SADY,EAEgB,mBAAS,IAFzB,mBAEbquE,EAFa,KAEDuxL,EAFC,OAGY,oBAAS,GAHrB,mBAGbC,EAHa,KAGHC,EAHG,OAIM,YAAsBD,EAAUxxL,GAAlDjuE,EAJY,EAIZA,MAAOmuP,EAJK,EAILA,OAOf,OACE,6BACE,kBAAC,KAAiB,CAChB50P,KAAK,OACLgI,MAAM,SACNC,YAAU,EACVC,SAAU7B,EAAS,CACjB8B,SAAU,CACRzH,OAAO,EACP0H,QAAS,aAEXC,QAAS,CACP3H,MAAOk0P,EACPxsP,QAAS,4BAGbE,SAAU,SAACjF,GAAD,OArBK,SAACA,GACpB4iQ,EAAc5iQ,EAAEkF,OAAO7H,OACvBylQ,GAAY,GAmBStyP,CAAaxQ,IAC9B8E,UAAQ,IAET1B,GAAS,kBAAC,IAAU,CAACiC,UAAU,eAAa,2B,4CChC5C,SAASwmH,IACf,OAAO,IAAUtvH,KAAKT,KAAM,KAG7B+vH,EAAS7tH,UAAYlB,OAAOY,OAAO,IAAUM,UAAW,IACxD6tH,EAAS7tH,UAAU+kE,YAAc8oD,E,uLCRZosJ,E,WACpB,cAAsD,I,MAAA,OAAxCC,EAAwC,EAAxCA,gBAAiBC,EAAuB,EAAvBA,qB,4FAAuB,S,EAuB7C,SAAC3pQ,GACT,cAAkB1R,OAAOwvB,KAAK9d,GAA9B,eAA2C,CAAtC,IAAM7Q,EAAG,KACb,EAAKA,GAAO6Q,EAAW7Q,M,EAzB6B,Y,EAAA,M,sFACrD7B,KAAKo8Q,gBAAkBA,EACvBp8Q,KAAKq8Q,oBAAsBA,E,qDAGtBC,EAAgBC,GACrBv8Q,KAAKw8Q,eAAgB,EACrBx8Q,KAAKwxH,eAAYzuH,EACjB/C,KAAKy8Q,iBAAc15Q,EACnB/C,KAAK6wH,iBAAc9tH,EACnB/C,KAAK08Q,OAAS,GACd18Q,KAAK28Q,iCACL38Q,KAAK48Q,0BAA0BN,EAAgBC,K,uDAI/Cv8Q,KAAK68Q,0BAA4B78Q,KAAK88Q,oBACtC98Q,KAAK+8Q,uCAAwC,EAC7C/8Q,KAAK0yH,oBAAiB3vH,EACtB/C,KAAKg9Q,iBAAcj6Q,EACnB/C,KAAKi9Q,kDAA+Cl6Q,I,gDAS3BqY,EAASy1G,GAClC7wH,KAAKqb,WAAWD,GAChBpb,KAAKk9Q,eAAersJ,K,iCAGVz1G,GACVpb,KAAKob,QAAUA,EACfpb,KAAKo8Q,gBAAgBhhQ,K,qCAGPy1G,GAEd,OADA7wH,KAAK6wH,YAAcA,EACZ7wH,KAAKq8Q,oBAAoBr8Q,KAAKob,QAASy1G,K,iDAK9C7wH,KAAKw8Q,eAAgB,EAIrBx8Q,KAAK48Q,8B,mCAGOO,GACZn9Q,KAAK08Q,QAAUS,I,4DAGsBA,GACrCn9Q,KAAK68Q,2BAA6BM,I,0CAWlC,OAAIn9Q,KAAKw8Q,cACDx8Q,KAAK08Q,OAAO94Q,OACjB5D,KAAKwxH,UAAYxxH,KAAKwxH,UAAUnuH,OAAS,IACzCrD,KAAK6wH,YAAc7wH,KAAK6wH,YAAYxtH,OAAS,IAGzCrD,KAAK08Q,S,4DAIZ,OAAI18Q,KAAKw8Q,eACJx8Q,KAAKwxH,UACDxxH,KAAK08Q,OAAO94Q,MAAM5D,KAAKwxH,UAAUnuH,QAGnCrD,KAAK08Q,Y,gCCpFDU,EAAoB,IAC3BC,EAA4B,IAAIl8P,OAAOi8P,GAqBtC,SAASv/H,EAAOpvE,EAAQkhJ,GAC9B,GAAIA,EAAQ,EACX,MAAO,GAGR,IADA,IAAI3nM,EAAS,GACN2nM,EAAQ,GACF,EAARA,IACH3nM,GAAUymD,GAEXkhJ,IAAU,EACVlhJ,GAAUA,EAEX,OAAOzmD,EAASymD,EAGV,SAAS6uM,EAA2B7uM,EAAQ8uM,GAIlD,MAH+B,MAA3B9uM,EAAO8uM,IACVA,IAmBK,SAA8B9uM,GACpC,IAAM+uM,EAAiB,GACnB19Q,EAAI,EACR,KAAOA,EAAI2uE,EAAOprE,QACC,MAAdorE,EAAO3uE,GACV09Q,EAAgBp6Q,KAAKtD,GAEC,MAAd2uE,EAAO3uE,IACf09Q,EAAgBppF,MAEjBt0L,IAED,IAAIi6D,EAAQ,EACR0jN,EAAiB,GACrBD,EAAgBp6Q,KAAKqrE,EAAOprE,QAC5B,cAAoBm6Q,EAApB,eAAqC,CAAhC,IAAMnwQ,EAAK,KACfowQ,GAAkBhvM,EAAO7qE,MAAMm2D,EAAO1sD,GACtC0sD,EAAQ1sD,EAAQ,EAEjB,OAAOowQ,EApCAC,CAAqBjvM,EAAO7qE,MAAM,EAAG25Q,I,6BCtC9B,SAASI,EAAqB92Q,EAAO6O,EAArC,GAIZ,IAHFs6G,EAGE,EAHFA,SACA4tJ,EAEE,EAFFA,sCACAC,EACE,EADFA,gCAGA,GADgB,IAAI18P,OAAJ,cAAkBzL,EAAOxM,UAAzB,OACJiT,KAAKtV,EAAMg2Q,2BACtB,OAgBF,SAAwEh2Q,EAAO6O,EAA/E,GAIG,IAHFs6G,EAGE,EAHFA,SACA4tJ,EAEE,EAFFA,sCACAC,EACE,EADFA,gCASIh3Q,EAJHg2Q,0BAIGh2Q,EAHH21Q,cAGG31Q,EAFH6rH,eAEG7rH,EADHm2Q,YAaD,GAAIY,EAAsCloQ,GAAS,CAClD,IAAMooQ,EAAkBC,EAAqBl3Q,EAAO6O,EAAQ,CAC3DsoQ,iCAAiC,EACjCH,kCACA7tJ,aAED,GAAI8tJ,EACH,OAAOA,EAKT,OAAOC,EAAqBl3Q,EAAO6O,EAAQ,CAC1CsoQ,iCAAiC,EACjCH,kCACA7tJ,aAvDOiuJ,CACNp3Q,EACA6O,EACA,CACCs6G,WACA4tJ,wCACAC,oCAqDJ,SAASE,EAAqBl3Q,EAAO6O,EAArC,GAIG,IAHFs6G,EAGE,EAHFA,SACAguJ,EAEE,EAFFA,gCACAH,EACE,EADFA,gCAEIK,EAA0BC,YAC7Bt3Q,EAAMg2Q,0BACNnnQ,EACA,CACCsnQ,YAAan2Q,EAAMm2Q,YACnBoB,uBAAwBv3Q,EAAM21Q,cAC9B6B,mBAAoBL,EACpBhuJ,aAgBF,GAbKguJ,IACAn3Q,EAAM6rH,eAGTwrJ,EAA0Br3Q,EAAM6rH,eAC/BmrJ,EAAgCnoQ,GAChCwoQ,EACSr3Q,EAAMo2Q,+CAChBiB,EAA0Br3Q,EAAMo2Q,6CAC/B,IACAiB,IAqCJ,SAAwCA,EAAyBr3Q,GAChE,OAAOy3Q,YAAYJ,KAA6Br3Q,EAAMi2Q,oBAnClDyB,CAA+BL,EAAyBr3Q,GAC3D,OAAOq3Q,E,mTC7ET,IAKMM,GAA6B3gI,EALf,IAEyB,IAOvC4gI,GAAqC,OAYrCC,GAAwE,iBAAM,mBAO9EC,GAAyE,iBAAM,qBAoC/EC,GAA8B,IAAIz9P,OACvC,KACMstG,IADN,aAEaA,IAFb,SAWoBowJ,G,WACpB,cAGG,WADF7uJ,GACE,EAFFnpH,MAEE,EADFmpH,W,4FACE,mDAyR+B,SAACt6G,GAMlC,OAAI,EAAKopQ,QAOLppQ,GACHA,EAAOq9G,gCACP0rJ,GAAmCtiQ,KAAKzG,EAAOq9G,gCARxC,IAcD,MA9SL,gDAkhBqC,SAACr9G,EAAD,GAA+C,IAApC8mQ,EAAoC,EAApCA,cAAe9pJ,EAAqB,EAArBA,eACjE,GAAIh9G,EAAOq9G,+BAAgC,CAI1C,IAAME,EAAqBv9G,EAAOu9G,qBAClC,GAAKA,GAAsBP,IACxBO,IAAuBupJ,EACzB,OAAO,MAzhBTx8Q,KAAKgwH,SAAWA,EAChBhwH,KAAK++Q,c,6DAIL/+Q,KAAKg/Q,kBAAej8Q,EACpB/C,KAAKi/Q,cAAWl8Q,EAChB/C,KAAKk/Q,4BAAyBn8Q,EAC9B/C,KAAKm/Q,qCAAkCp8Q,EACvC/C,KAAKo/Q,yCAA2C,I,4BAG3CjuJ,EAAetqH,GACpB7G,KAAK++Q,cACD5tJ,GACHnxH,KAAK8+Q,OAAyC,MAAhC3tJ,EAAcN,cAC5B7wH,KAAKq/Q,gBAAkBluJ,EAAcS,UACjC/qH,EAAMg2Q,2BACT78Q,KAAKs/Q,0BAA0Bz4Q,KAGhC7G,KAAK8+Q,YAAS/7Q,EACd/C,KAAKq/Q,gBAAkB,M,6BAIlBlC,EAAYt2Q,GAAO,ID1Gag2Q,EAA2B7sJ,EC0GxC,OAezB,GDzHsC6sJ,ECyHVh2Q,EAAMg2Q,0BDzH+B7sJ,ECyHJhwH,KAAKgwH,SDxHD,gBAA3DuvJ,YAAkB1C,EAA2B7sJ,GCyHlD,OAAqBhwH,KAAKq/Q,gBAA1B,wDAA2C,yFAAhC3pQ,EAAgC,EACpC8pQ,EAA0B7B,EAC/B92Q,EACA6O,EACA,CACCs6G,SAAUhwH,KAAKgwH,SACf4tJ,sCAAuC,SAAAloQ,GAAM,OAAI,EAAKkoQ,sCAAsCloQ,EAAQ,CACnG8mQ,cAAe31Q,EAAM21Q,cACrB9pJ,eAAgB7rH,EAAM6rH,kBAEvBmrJ,gCAAiC79Q,KAAK69Q,kCAGxC,GAAI2B,EAQH,OAPAx/Q,KAAK++Q,cACL/+Q,KAAKg/Q,aAAetpQ,EACpB1V,KAAKy/Q,0BAA0BD,EAAwBvzQ,QAAQ,MAAOmxQ,GAAoBv2Q,GAC1F7G,KAAKm/Q,gCAAkCK,EAGvCx/Q,KAAKo/Q,wCAA0Cp/Q,KAAKi/Q,SAASj7C,YAAYo5C,GAClEoC,GAOV,OAAOx/Q,KAAK0/Q,mCAAmCvC,EAAYt2Q,K,yDAIzBs2Q,EAAYt2Q,GAC9C,IAAM84Q,EAAyB3/Q,KAAKg/Q,aAE9BY,EAAoB5/Q,KAAK6/Q,aAAah5Q,GAC5C,GAAI+4Q,EACH,OAAIA,IAAsBD,EAIlB3/Q,KAAK8/Q,+BAA+B3C,GAMpCn9Q,KAAK8/Q,+BAA+Bj5Q,EAAMi2Q,uB,mDASjD,WAHFD,EAGE,EAHFA,0BACAnqJ,EAEE,EAFFA,eACA8pJ,EACE,EADFA,cAEMzqJ,EAAgB8qJ,EAclBkD,EAA4BhuJ,EAAc1uH,OAxHd,EAyH5B08Q,EAA4B,IAC/BA,EAA4B,GAG7B//Q,KAAKq/Q,gBAAkBr/Q,KAAKq/Q,gBAAgBj+P,QAC3C,SAAA1L,GAAM,OAAI,EAAKsqQ,YAAYtqQ,EAAQ8mQ,EAAe9pJ,IAC9C,EAAKutJ,cAAcvqQ,EAAQq8G,EAAeguJ,MAU3C//Q,KAAKg/Q,eAAqE,IAArDh/Q,KAAKq/Q,gBAAgB5xO,QAAQztC,KAAKg/Q,eAC1Dh/Q,KAAK++Q,gB,kCAIKrpQ,EAAQ8mQ,EAAe9pJ,GAWlC,QAAIA,IACFh9G,EAAOu9G,uBAEPv9G,EAAOs9G,2DAQJwpJ,IACH9pJ,GACDh9G,EAAOwqQ,6D,oCAMKxqQ,EAAQq8G,EAAeguJ,GACpC,IAAMI,EAA6BzqQ,EAAO0qQ,wBAAwB/8Q,OAGlE,GAAmC,IAA/B88Q,EACH,OAAO,EASR,GAAIpuJ,EAAc1uH,OA1Lc,EA2L/B,OAAO,EAKR08Q,EAA4BhoO,KAAKrtC,IAAIq1Q,EAA2BI,EAA6B,GAC7F,IAAME,EAAuB3qQ,EAAO0qQ,wBAAwBL,GAG5D,OAAO,IAAI5+P,OAAJ,YAAgBk/P,EAAhB,MAAyClkQ,KAAK41G,K,sCAGtCr8G,EAAQ8mQ,GACvB,OAAOA,EAAgB9mQ,EAAO4qQ,sBAAwB5qQ,EAAOA,W,mCAGjD7O,GAAO,0HAGR6O,EAHQ,EAMlB,OAAI,EAAKspQ,eAAiBtpQ,EACzB,QAyCIkpQ,GAA4BziQ,KAAK,EAAKokQ,gBAAgB7qQ,EAAQ7O,EAAM21Q,gBAGpE,EAAKgE,wBAAwB9qQ,EAAQ7O,IAK1C,EAAKm4Q,aAAetpQ,EACpB,UAJC,EAAK2pQ,gBAAkB,EAAKA,gBAAgBj+P,QAAO,SAAAg/B,GAAC,OAAIA,IAAM1qC,KAC9D,YALA,YA9CF,EAAqB1V,KAAKq/Q,gBAAgBz7Q,QAA1C,uBAHmB,EAGnB,iCAAmD,+BAsDlD,QAtDkD,eAmDjD,UASF,OAJK5D,KAAKg/Q,cAETh/Q,KAAK++Q,cAEC/+Q,KAAKg/Q,e,8CAGWtpQ,EAAQ7O,GAK/B,KAA0C6O,EAAOxM,UAAUukC,QAAQ,MAAQ,GAA3E,CAIA,IAAMwxO,EAAWj/Q,KAAKygR,qBAAqB/qQ,EAAQ7O,GAGnD,OAAIo4Q,GACHj/Q,KAAKy/Q,0BAA0BR,EAAUp4Q,IAClC,QAFR,K,uEA8B0EuP,GAAS,IAAnCo7G,EAAmC,EAAnCA,UAAWirJ,EAAwB,EAAxBA,YAC3D,OAAIjrJ,EACIp7G,IAA+B,IAApBA,EAAQ8+B,QAAoBs8E,EAAYA,EAAY,IAEnEirJ,EACI,GAED,M,kCAGI51Q,GACX,GAAK7G,KAAKi/Q,SAAV,CASA,IAHA,IAAI5xQ,GAAS,EACTvN,EAAI,EACF4gR,EAAsB75Q,EAAM21Q,cAAgBx8Q,KAAK2gR,+CAA+C95Q,EAAO,CAAEquC,SAAS,IAAW,GAC5Hp1C,EAAI4gR,EAAoBr9Q,OAASwD,EAAM+5Q,sCAAsCv9Q,QACnFgK,EAAQrN,KAAKi/Q,SAASxxO,QAAQ2vO,EAAmB/vQ,EAAQ,GACzDvN,IAED,OAAOw9Q,EAA2Bt9Q,KAAKi/Q,SAAU5xQ,EAAQ,M,gDAGhC4xQ,EAAUp4Q,GACnC7G,KAAKk/Q,uBAAyBD,EAC9Bj/Q,KAAKm/Q,gCAAkCF,EAGvCj/Q,KAAKo/Q,yCAA2C,EAM5Cv4Q,EAAM21Q,cACTx8Q,KAAKi/Q,SACJj/Q,KAAK2gR,+CAA+C95Q,GAAOoF,QAAQ,UAAWmxQ,GAC9Ev/H,EAAOu/H,EAAmBv2Q,EAAMgqH,YAAYxtH,QAC5C,IACA47Q,EAEDj/Q,KAAKi/Q,SAAWA,I,2CAWGvpQ,E,GAKlB,IAJFmnQ,EAIE,EAJFA,0BACAL,EAGE,EAHFA,cACA9pJ,EAEE,EAFFA,eACAuqJ,EACE,EADFA,6CAEI/zQ,EAAUwM,EAAOxM,UAIpBA,EAAUA,EAER+C,QAAQyyQ,KAAkC,OAE1CzyQ,QAAQ0yQ,KAAmC,OAW9C,IAAIjC,EAAS8B,GAA2B51Q,MAAMM,GAAS,GAIvD,KAAI2zQ,EAA0Bx5Q,OAASq5Q,EAAOr5Q,QAA9C,CAmCA,IAAMw9Q,EAAgB,IAAI1/P,OAAO,IAAMjY,EAAU,KAC3C43Q,EAA4BjE,EAA0B5wQ,QAAQ,MA1flD,KA+fd40Q,EAAc1kQ,KAAK2kQ,KACtBpE,EAASoE,GAGV,IACIC,EADAC,EAAehhR,KAAKugR,gBAAgB7qQ,EAAQ8mQ,GAUhD,GAAIx8Q,KAAK49Q,sCAAsCloQ,EAAQ,CAAE8mQ,gBAAe9pJ,mBAAmB,CAC1F,IAAMuuJ,EAAiCD,EAAa/0Q,QACnDi1Q,IACAxrQ,EAAOq9G,gCAUR,GAAIurJ,YAAY5oQ,EAAOq9G,mCAAqCL,GAAkB,IAAM4rJ,YAAY,QAC/F0C,EAAeC,EACfF,GAAmC,EAG/BruJ,GAEH,IADA,IAAI5yH,EAAI4yH,EAAervH,OAChBvD,EAAI,GACVkhR,EAAeA,EAAa/0Q,QAAQ,KAAMmxQ,GAC1Ct9Q,IAOJ,IAAIm/Q,EAAWvC,EAEbzwQ,QAAQ,IAAIkV,OAAOjY,GAAU83Q,GAE7B/0Q,QAAQ,IAAIkV,OA9iBI,IA8iBgB,KAAMi8P,GAwBxC,OAlBK2D,IACA9D,EAEHgC,EAAWphI,EAAOu/H,EAAmBH,EAA6C55Q,QACjF,IACA47Q,EACSvsJ,IAEVusJ,EAAWphI,EAAOu/H,EAAmB1qJ,EAAervH,QACnDrD,KAAK69Q,gCAAgCnoQ,GACrCupQ,IAICzC,IACHyC,EAAWkC,YAAiClC,IAGtCA,K,qDAGuBvC,GAC9B,IAAM10P,EF/gBD,SAAoCi3P,EAAU7lQ,EAAUsjQ,GAM9D,MAAoBA,EAAO7mQ,MAAM,IAAjC,wDAAsC,yFAA3BwxB,EAA2B,EAKrC,GAAI43O,EAASr7Q,MAAMwV,EAAW,GAAGk4D,OAAO+rM,GAA6B,EACpE,OAEDjkQ,EAAW6lQ,EAAS3tM,OAAO+rM,GAC3B4B,EAAWA,EAAShzQ,QAAQoxQ,EAA2Bh2O,GAExD,MAAO,CAAC43O,EAAU7lQ,GE8fFgoQ,CACdphR,KAAKm/Q,gCACLn/Q,KAAKo/Q,wCACL1C,GAGD,GAAK10P,EAUL,OAJAhoB,KAAKm/Q,gCAAkCn3P,EAAO,GAC9ChoB,KAAKo/Q,wCAA0Cp3P,EAAO,GAG/Cs1P,EAA2Bt9Q,KAAKm/Q,gCAAiCn/Q,KAAKo/Q,wCAA0C,GARtHp/Q,KAAK++Q,mB,koBC5lBR,IAAMsC,GACL,IACC5yJ,IACAD,IACD,KAEK8yJ,GAAmD,IAAIngQ,OAAO,IAAMkgQ,GAA2C,IAAK,KAEpHE,GACL,OACO7yJ,IADP,KAGED,IACAD,IAJF,OAQEC,IACAD,IATF,MAaKgzJ,GAAwC,IAAIrgQ,OACjD,KACCstG,IACAD,IAFD,SAWKizJ,GAA0B,YAEXC,G,WACpB,cAKG,IAJFpF,EAIE,EAJFA,eACAC,EAGE,EAHFA,mBACAvsJ,EAEE,EAFFA,SACA2xJ,EACE,EADFA,mC,4FACE,SACF3hR,KAAKs8Q,eAAiBA,EACtBt8Q,KAAKu8Q,mBAAqBA,EAC1Bv8Q,KAAKgwH,SAAWA,EAChBhwH,KAAK2hR,kCAAoCA,E,qDAGpClpP,EAAM5xB,GAAO,IAId+6Q,EAJc,EAoab,SAAuCnpP,GAAM,SAfpD,SAAwCA,GAEvC,IAAMopP,EA9BP,SAAqCppP,GAEpC,IAOIqpP,EAPEC,EAAWtpP,EAAK64C,OAAOiwM,IAC7B,KAAIQ,EAAW,GAiBf,MAVgB,OAHhBtpP,EAAOA,EAAK70B,MAAMm+Q,IAGT,KACRD,GAAU,EACVrpP,EAAOA,EAAK70B,MAAM,IAAIP,SAGvBo1B,EAAOA,EAAKxsB,QAAQu1Q,GAAuC,IAEvDM,IACHrpP,EAAO,IAAMA,GAEPA,EAUiBupP,CAA4BvpP,IAAS,GAE7D,MAA2B,MAAvBopP,EAAgB,GACZ,CAACA,EAAgBj+Q,MAAM,IAAIP,SAAS,GAErC,CAACw+Q,GASyBI,CAA+BxpP,GADb,GAC9CypP,EAD8C,KAC7BJ,EAD6B,KAQnD,OAHKR,GAAiDnlQ,KAAK+lQ,KAC1DA,EAAkB,IAEZ,CAACA,EAAiBJ,GA3aWK,CAA8B1pP,GAD/C,UACXypP,EADW,KACMJ,EADN,KAEZpF,EAAS4B,YAAY4D,GAc3B,OAXIJ,IACEj7Q,EAAM61Q,SACV71Q,EAAMu7Q,2BACD1F,IACJkF,GAAkB,KAIjBlF,GACH18Q,KAAKqiR,YAAY3F,EAAQ71Q,GAEnB,CACN61Q,SACAkF,qB,kCASUzE,EAAYt2Q,GAAO,IACtB61Q,EAAW71Q,EAAX61Q,OACF4F,EAAgC5F,EAAOr5Q,OAAS,GAAKq5Q,EAAOr5Q,OAAS85Q,EAAW95Q,QAAU,EAuBhG,GApBAwD,EAAM07Q,aAAapF,GAgBfmF,GACHtiR,KAAKwiR,iBAAiB37Q,GAGnB7G,KAAKyiR,+BAA+B57Q,IACvC,IAAK7G,KAAK0iR,0BAA0B77Q,GACnC,YAGDA,EAAM87Q,sCAAsCxF,GAQxCt2Q,EAAM21Q,eACLx8Q,KAAK4iR,uCACT5iR,KAAK6iR,iCAAiCh8Q,EAAMi2Q,oBAAqBj2Q,EAAMwrI,U,wDAKX,IAA9BmqI,EAA8B,EAA9BA,cAAe3rJ,EAAe,EAAfA,YAC/C,OAAO2rJ,IAAkB3rJ,I,gDAKAhqH,GAAO,MACO67Q,aACtC,IAAM77Q,EAAM+5Q,sCACZ5gR,KAAKs8Q,eACLt8Q,KAAKu8Q,mBACLv8Q,KAAKgwH,SAASA,UAJPoD,EADwB,EACxBA,mBAAoBp9G,EADI,EACJA,OAM5B,GAAIo9G,EAKH,OAJAvsH,EAAMq2Q,eAAe9pJ,GACrBvsH,EAAMwrI,OAAO,CACZwqI,0BAA2B7mQ,KAErB,I,4BAIHm7G,GACL,GAAIA,EAAe,CAClBnxH,KAAK8iR,0BAA2B,EAChC,IAAMjxJ,EAA2BV,EAAcsB,4BAC/CzyH,KAAK+iR,qDAAuDlxJ,GAA4B4vJ,GAAwBtlQ,KAAK01G,QAErH7xH,KAAK8iR,8BAA2B//Q,EAChC/C,KAAK+iR,0DAAuDhgR,I,uDAW7BigR,EAAgBvwO,GAChD,GAAKzyC,KAAK8iR,yBAAV,CAD0D,MAQtDG,aACHD,EACAhjR,KAAKgwH,UALL0C,EALyD,EAKzDA,eACAwwJ,EANyD,EAMzDA,eACAlG,EAPyD,EAOzDA,YAKD,GAAIkG,IAAmBF,EAUvB,OAPAhjR,KAAKmjR,0BACJzwJ,EACAsqJ,EACAkG,EACAF,EACAvwO,IAEM,K,8DAQgCuwO,EAAgBI,EAA+B3wO,GACtF,IAAKzyC,KAAK4iR,sCACT,OAAO5iR,KAAK6iR,iCAAiCG,EAAgBvwO,GAE9D,GAAKzyC,KAAK+iR,qDAAV,CAJgG,MAW5FE,aACHD,EACAhjR,KAAKgwH,UALL0C,EAR+F,EAQ/FA,eACAwwJ,EAT+F,EAS/FA,eACAlG,EAV+F,EAU/FA,YAWD,GAAIkG,IAAmBE,EAUvB,OAPApjR,KAAKmjR,0BACJzwJ,EACAsqJ,EACAkG,EACAF,EACAvwO,IAEM,K,gDAIPigF,EACAsqJ,EACAH,EACAmG,EACAvwO,GAEA,IAAIwqO,EACAF,EAEEsG,EAAiCL,EAAeh/C,YAAY64C,GAMlE,GAAIwG,GAAkC,GACrCA,IAAmCL,EAAe3/Q,OAASw5Q,EAA0Bx5Q,OAAQ,CAC7F05Q,GAAwC,EAMxC,IAAMuG,EAA6BN,EAAep/Q,MAAM,EAAGy/Q,GAMvDC,IAA+B5wJ,IAClCuqJ,EAA+CqG,GAGjD7wO,EAAS,CACRigF,iBACAsqJ,cACAH,4BACAE,wCACAE,iDAIDj9Q,KAAK4iR,uCAAwC,EAC7C5iR,KAAK2hR,sC,yDAG6B96Q,GAkClC,QAAI7G,KAAKujR,wCACR18Q,EAAMi2Q,oBACNj2Q,EAAMg2Q,0BACNh2Q,EAAMwrI,UAkBHryI,KAAKwiR,iBAAiB37Q,IAWtB7G,KAAKwjR,eAAe38Q,IAVvB7G,KAAKyjR,+CAA+C58Q,IAC7C,QASR,K,uCAMgBA,GAAO,IAItB21Q,EAIG31Q,EAJH21Q,cACAhrJ,EAGG3qH,EAHH2qH,UACAkrJ,EAEG71Q,EAFH61Q,OAGD,GADI71Q,EADHg2Q,2BAEGL,IAAiBhrJ,EAArB,CAOA,IAAMkyJ,EAAmBC,aACxBjH,EACA18Q,KAAKs8Q,eACLt8Q,KAAKu8Q,mBACLv8Q,KAAKgwH,SAASA,UAEf,YAAyBjtH,IAArB2gR,GAAkCA,IAAqBhH,GAG1D71Q,EAAMwrI,OAAO,CACZ7gB,UAAWkrJ,EAAO94Q,MAAM,EAAG84Q,EAAOr5Q,OAASqgR,EAAiBrgR,UAE7DrD,KAAKoiR,yBAAyBv7Q,IACvB,QAPR,K,qCAWcA,GACd,IAAKA,EAAM21Q,cAAe,OAIrBoH,aACH/8Q,EAAM61Q,OACN18Q,KAAKs8Q,eACLt8Q,KAAKu8Q,mBACLv8Q,KAAKgwH,SAASA,UANM6zJ,EAFI,EAExBzwJ,mBAQD,GAVyB,EAGxBp9G,OAOG6tQ,EAKH,OAJAh9Q,EAAMwrI,OAAO,CACZoqI,aAAa,IAEdz8Q,KAAKoiR,yBAAyBv7Q,IACvB,K,+CAKeA,GACxBA,EAAMu7Q,2BAEFv7Q,EAAMg2Q,4BACTh2Q,EAAM81Q,iCACN38Q,KAAK2hR,oCACL3hR,KAAK4iR,2CAAwC7/Q,K,qEAIA8D,GAC1C7G,KAAK0iR,0BAA0B77Q,IAOlC7G,KAAK6iR,iCAAiCh8Q,EAAMi2Q,oBAAqBj2Q,EAAMwrI,a,i1BCra1E,IAEqByxI,G,WAKpB,WAAYC,EAAyB/zJ,I,4FAAU,SAC9ChwH,KAAKgwH,SAAW,IAAID,IAASC,GADiB,SAEDhwH,KAAKgkR,yBAAyBD,GAF7B,GAEvCzH,EAFuC,KAEvBC,EAFuB,KAG9Cv8Q,KAAKs8Q,eAAiBA,EACtBt8Q,KAAKu8Q,mBAAqBA,EAC1Bv8Q,KAAKs+E,Q,wEAGmBylM,GAExB,IAAIzH,EACAC,EAqBJ,OAnBIwH,IACoC,WAAnC,GAAOA,IACVzH,EAAiByH,EAAwBzH,eACzCC,EAAqBwH,EAAwBxH,oBAE7CD,EAAiByH,GAGfzH,IAAmBt8Q,KAAKgwH,SAASkB,WAAWorJ,KAC/CA,OAAiBv5Q,GAUX,CAACu5Q,EAAgBC,K,4BAQnB9jP,GAAM,MAIPz4B,KAAKq7N,OAAOr/M,MAAMyc,EAAMz4B,KAAK6G,OAFhC61Q,EAFU,EAEVA,OAGD,GALW,EAGVkF,gBAGA5hR,KAAKikR,gBAAkB,SACjB,GAAIvH,EAAQ,CAMlB,IAAIwB,EAIJ,GATAl+Q,KAAKkkR,8BAEDlkR,KAAK6G,MAAMg2Q,2BACd78Q,KAAKmkR,UAAU7E,0BAA0Bt/Q,KAAK6G,OAG3C7G,KAAKgwH,SAAS8yJ,6BACjB5E,EAA0Bl+Q,KAAKmkR,UAAUzuQ,OAAOgnQ,EAAQ18Q,KAAK6G,aAE9B9D,IAA5Bm7Q,GAECl+Q,KAAKq7N,OAAO+oD,mCAAmCpkR,KAAK6G,OAAQ,CAC/D7G,KAAKkkR,8BAEL,IAAMlB,EAAiBhjR,KAAK6G,MAAMi2Q,oBAC9BkG,IACH9E,EAA0Bl+Q,KAAKmkR,UAAUzuQ,OAAOstQ,EAAgBhjR,KAAK6G,QAIxE7G,KAAKikR,gBAAkB/F,EACpBl+Q,KAAKqkR,cAAcnG,GACnBl+Q,KAAKskR,wBAET,OAAOtkR,KAAKikR,kB,8BAGL,WAgCP,OA/BAjkR,KAAK6G,MAAQ,IAAIs1Q,EAAe,CAC/BC,gBAAiB,SAAChhQ,GAMjB,EAAKA,QAAUA,GAEhBihQ,oBAAqB,SAACjhQ,EAASy1G,GAC9B,EAAKb,SAASiB,oBAAoB71G,EAASy1G,GAC3C,EAAKszJ,UAAU7lM,MAAM,EAAK0xC,SAASmB,cAAe,EAAKtqH,OACvD,EAAKw0N,OAAO/8I,MAAM,EAAK0xC,SAASmB,kBAGlCnxH,KAAKmkR,UAAY,IAAItF,GAAmB,CACvCh4Q,MAAO7G,KAAK6G,MACZmpH,SAAUhwH,KAAKgwH,WAEhBhwH,KAAKq7N,OAAS,IAAIqmD,GAAgB,CACjCpF,eAAgBt8Q,KAAKs8Q,eACrBC,mBAAoBv8Q,KAAKu8Q,mBACzBvsJ,SAAUhwH,KAAKgwH,SACfnpH,MAAO7G,KAAK6G,MACZ86Q,kCAAmC,WAClC,EAAKuC,8BACL,EAAKC,UAAU7lM,MAAM,EAAK0xC,SAASmB,cAAe,EAAKtqH,UAGzD7G,KAAK6G,MAAMy3E,MAAMt+E,KAAKs8Q,eAAgBt8Q,KAAKu8Q,oBAC3Cv8Q,KAAKikR,gBAAkB,GAChBjkR,O,wCASP,OAAOA,KAAK6G,MAAM21Q,gB,uCAUlB,OAAOx8Q,KAAK6G,MAAMgqH,c,8CAKlB,OAAO7wH,KAAKukR,mB,mCASA,MACgBvkR,KAAK6G,MAAzB61Q,EADI,EACJA,OAAQthQ,EADJ,EACIA,QAIhB,GAAKshQ,EAYL,OATkBthQ,I,oDA6Bbpb,KAAK6G,MAAMuU,UAAWpb,KAAKwkR,iCAC/BxkR,KAAKykR,wB,oCAKOvG,GAAyB,WACtC,GAAIl+Q,KAAK0kR,kBAAmB,CAC3B,IAAMpjP,EAAS,SAAC7I,GAAD,OAAU,EAAK0rP,UAAUxD,+CAA+C,EAAK95Q,MAAO,CAClGquC,UAASzc,IACLA,GACGo4F,EAAgB7wH,KAAK6G,MAArBgqH,YACR,OAMOvvF,EANFuvF,EAGAqtJ,EAGS,GAAD,OAAIrtJ,EAAJ,YAAmBqtJ,GAFjBrtJ,EAHA,GAAD,OAAI7wH,KAAK6G,MAAM+5Q,wCAO9B,OAAO1C,I,gEAGkC,MAKrCl+Q,KAAK6G,MAHRg2Q,EAFwC,EAExCA,0BACAI,EAHwC,EAGxCA,6CACAvqJ,EAJwC,EAIxCA,eAEG18G,EAAS6mQ,EACPv7O,EAAS27O,GAAgDvqJ,EAI/D,OAHIpxF,IACHtrB,EAASsrB,EAAStrB,GAEZA,I,8CAGgB,IACf+mQ,EAA0C/8Q,KAAK6G,MAA/Ck2Q,sCACR,OAAO/8Q,KAAKqkR,cACXtH,EACG/8Q,KAAK2kR,0CACL3kR,KAAK6G,MAAMi2Q,uB,gDAKf,IAAM9mQ,EAAShW,KAAKskR,wBACpB,GAAItuQ,EACH,OAAOA,EAAO/J,QAAQ,UAAWmxQ,K,sDAIH,IACvBvsJ,EAAgB7wH,KAAK6G,MAArBgqH,YACFE,EAAe/wH,KAAKgwH,SAASc,8BAA8BD,GACjE,OAAOE,GAAgBA,EAAa1tH,OAAS,I,4CAO7CrD,KAAK6G,MAAMwU,WAAWupQ,aACrB5kR,KAAK0kR,kBAAoB1kR,KAAK6G,MAAMgqH,YAAc7wH,KAAKu8Q,mBACvDv8Q,KAAK6G,MAAMg2Q,0BACX78Q,KAAKgwH,a,kCAUK,MAIPhwH,KAAK6G,MAFRg2Q,EAFU,EAEVA,0BACAG,EAHU,EAGVA,YAED,GAAIh9Q,KAAK0kR,mBACR,IAAK1kR,KAAK6G,MAAMgqH,YACf,YAGD,IAAK7wH,KAAK6G,MAAMuU,UAAYpb,KAAKu8Q,mBAChC,OAGF,GAAKM,EAAL,CAGA,IAAMvsJ,EAActwH,KAAK6kR,aACnBh0J,EAAc7wH,KAAKmzH,yBAA2BnzH,KAAKu8Q,mBACnDuI,EAAc,IAAIC,IACvBz0J,GAAeO,EACfgsJ,EACA78Q,KAAKgwH,SAASA,UAMf,OAJIgtJ,IACH8H,EAAY9H,YAAcA,GAGpB8H,K,mCASP,IAAMA,EAAc9kR,KAAKglR,YACzB,QAAKF,GAGEA,EAAYG,e,gCASnB,IAAMH,EAAc9kR,KAAKglR,YACzB,QAAKF,GAGEA,EAAYtmP,Y,0CASnB,OAAOx+B,KAAK6G,MAAMg2Q,4B,iCAQlB,OAAQ78Q,KAAK6G,MAAM21Q,cAAgB,IAAM,IAAMx8Q,KAAK6G,MAAM61Q,S,oCAQ1D,OAAO18Q,KAAKmkR,UAAUe,YAAYllR,KAAK6G,QAAU7G,KAAKmlR,2BAA6B,Q,kCCvV9E,SAAS,GAAU/pQ,GACzB,OAAO,GAAW3a,KAAKT,KAAMob,EAAS,KAGvC,GAAUlZ,UAAYlB,OAAOY,OAAO,GAAWM,UAAW,IAC1D,GAAUA,UAAU+kE,YAAc,G,oeCFnB,SAASm+M,KAA4B,MACjBC,aAAmBlvP,WAA/CsC,EAD6C,EAC7CA,KAAMriB,EADuC,EACvCA,QAAS45G,EAD8B,EAC9BA,SACrB55G,EAAU,GAAH,GACHA,EADG,CAENkvQ,SAAS,IAIV,IACC,IAAMR,EAAcS,aAAiB9sP,EAAMriB,EAAS45G,IACpDA,EAAW,IAAID,IAASC,IACfiB,oBAAoB6zJ,EAAY1xJ,oBACzC,IAAMprG,EAASu3P,YAAkBuF,EAAY5B,eAAgBlzJ,GAC7D,GAAe,gBAAXhoG,EACH,OAAOA,EAEP,MAAO1gB,GAER,GAAIA,aAAiBk+Q,KACpB,OAAOl+Q,EAAM2B,QAEb,MAAM3B,GCxBF,SAAS,KACf,OAAO,YAAa,GAA4B6uB,W,4vCCyBjD,IAAMiI,GAAiB,IAAOz2B,IAAV,MAId89Q,GAAc,IAAO99Q,IAAV,MAIF,SAACE,GAAD,OAAYA,EAAMmN,UAAY,sBAAwB,WAGtD,SAACnN,GAAD,OAAYA,EAAMmN,UAAY,sBAAwB,WAGtD,SAACnN,GAAD,OAAYA,EAAMmN,UAAY,sBAAwB,WAMtD,SAACnN,GAAD,OAAYA,EAAMmN,UAAY,sBAAwB,WAGtD,SAACnN,GAAD,OAAYA,EAAMmN,UAAY,sBAAwB,WAI/D0wQ,GAAc,IAAO/9Q,IAAV,MAEC,SAACE,GAAD,OAAYA,EAAMmN,UAAY,OAAS,UAE5C,SAACnN,GAAD,OAAYA,EAAMmN,UAAY,sBAAwB,WAC/C,SAACnN,GAAD,OAAYA,EAAM89Q,YAAc,MAAQ99Q,EAAMmN,UAAY,OAAS,UAG1E,SAACnN,GAAD,OAAYA,EAAMmN,UAAY,sBAAwB,WAGtD,SAACnN,GAAD,OAAYA,EAAMmN,UAAY,sBAAwB,WAG/C,SAACnN,GAAD,OAAYA,EAAM89Q,YAAc,MAAQ99Q,EAAMmN,UAAY,OAAS,UAG1E,SAACnN,GAAD,OAAYA,EAAMmN,UAAY,sBAAwB,WAGtD,SAACnN,GAAD,OAAYA,EAAMmN,UAAY,sBAAwB,WAI7D4wQ,GAAe,IAAOj+Q,IAAV,MAMZk+Q,GAAiB,KACVC,GAAqB,SAACvkR,GAAD,OAChCskR,GAAe1pQ,KAAK5a,KAAW,sBAAsB4a,KAAK5a,IAAWA,EAAM8B,OAAS,GAAK9B,EAAM8B,OAAS,GAE7F,GAAgB,SAAC,GAAwF,IAAtFw4Q,EAAsF,EAAtFA,iBAAkB7yQ,EAAoE,EAApEA,SAAU+8Q,EAA0D,EAA1DA,eAAgBC,EAA0C,EAA1CA,gBAAiBnlR,EAAyB,EAAzBA,KAAyB,EAC7D,aAAY,SAACgG,GAAD,OAAyBA,EAAM9B,SAASE,UAAnGigH,EAD4G,EAC5GA,UAAW5jF,EADiG,EACjGA,OAAQk5F,EADyF,EACzFA,cAAet1H,EAD0E,EAC1EA,SAD0E,EAE1E,oBAAS,GAFiE,mBAE7G+gR,EAF6G,KAE9FC,EAF8F,OAGpF,oBAAS,GAH2E,mBAG7Gnf,EAH6G,KAGnGC,EAHmG,OAIlF,mBAAiB,MAJiE,mBAI7Gmf,EAJ6G,KAIlGC,EAJkG,OAKxF,cAApB9+Q,EAL4G,EAK5GA,MAL4G,KAKrGE,SACmB,mBAAS,IANyE,mBAM7GkrE,EAN6G,KAMlG2zM,EANkG,OAOlF,mBAAS,GAPyE,mBAO7G/8Q,EAP6G,KAOlGg9Q,EAPkG,OAQnD,cAAzDp/Q,EAR4G,EAQ5GA,SAEF2D,GAV8G,EAQlG5D,OARkG,EAQ1FO,SAR0F,EAQlEyX,WAEjC,eAVmG,EAYjF,mBAAS,aAZwE,mBAY7GsnQ,EAZ6G,KAYlGC,EAZkG,KAcpH,qBAAU,WACL3lR,GACD2lR,EAAa3lR,KAEd,CAACA,IAEJ,IAAM6T,EAAe,SAACxQ,GACpBkiR,EAAaliR,EAAEkF,OAAO7H,OACtBsJ,EAAS,CAAE2B,KAAM,gBAAiBC,QAAS,eAAG85Q,EAAYriR,EAAEkF,OAAO7H,SAE/D,OAAAklR,EAAA,GAAmB,GAAD,OAAInlP,GAAJ,OAAap9B,EAAEkF,OAAO7H,QAC1C2kR,GAAiB,GAEjBA,GAAiB,GAEnBlf,GAAY,IAuCd,OApCA,qBAAU,WAENkf,KADG5+Q,IAAUy/P,GAAcz/P,IAAU6+Q,MAKtC,CAAC7+Q,IAEJ,qBAAU,WACR,IAAM0oH,EAAW,IAAID,EACf22J,EAAY,IAAI,GACtBA,EAAUpoM,QACVooM,EAAU1qQ,MAAMslB,GAAkB,OAClC,IAAMqwF,EAAkB3B,EAASiB,oBAAoBy1J,EAAUtrQ,SAASu2G,kBAClEroH,EAAYyuC,KAAKvtC,IAAL,MAAAutC,KAAI,YAAQ45E,IACxBj/C,EAAY36B,KAAKrtC,IAAL,MAAAqtC,KAAI,YAAQ45E,IAC9B20J,EAAah9Q,GACb+8Q,EAAa3zM,GACbh+D,EAAa,CAAEtL,OAAQ,CAAE7H,MAAO4kR,OAC/B,CAAC7kP,IAEJ,qBAAU,WACQ,SAAbp8B,GAAuBs1H,EACxB4rJ,EAAa5rJ,GAETtV,GACJkhK,EAAalhK,GAIV5jF,GAEHz2B,EAAS,CAAE2B,KAAM,gBAAiBC,QAAS,CAAE60B,OAAQ,WAEtD,IAGD,kBAACskP,GAAY,KACX,kBAAC,KAAiB,CAChB/kR,KAAMA,GAAc,YACpBgI,MAAM,WACNC,YAAU,EACVQ,UAAWA,EACXP,SAAU7B,EAAS,CACjB8B,SAAU,CACRzH,OAAOs6Q,EACP5yQ,QAAS,aAEXK,UAAW,CAAE/H,MAAO+H,EAAWL,QAAS,UAAF,OAAYK,EAAZ,aACtCopE,UAAW,CAAEnxE,MAAOmxE,EAAWzpE,QAAS,kBACxC8S,SAAU,SAACxa,GAAD,OAAW,OAAAklR,EAAA,GAAmB,GAAD,OAAInlP,GAAJ,OAAa//B,OAMtD4H,SAAU,SAACjF,GACTwQ,EAAaxQ,GACT8hR,GACFA,KAGJvjQ,QAAS,WACHsjQ,GACFA,KAGJ/8Q,SAAUA,IAGXm9Q,GAAaA,EAAU9iR,OAAS,GAAK4iR,IAAkB,OAAAQ,EAAA,GAAmB,GAAD,OAAInlP,GAAJ,OAAa6kP,IACrF,kBAAClK,EAAU,CAAC1yQ,UAAU,eACoC,aAAvD,GAA0B,GAAD,OAAI+3B,GAAJ,OAAa6kP,IAAtC,iBACa78Q,EADb,YAE0D,cAAvD,GAA0B,GAAD,OAAIg4B,GAAJ,OAAa6kP,IACtC,iBACuD,iBAAvD,GAA0B,GAAD,OAAI7kP,GAAJ,OAAa6kP,IACtC,0BACA,OAAAM,EAAA,GAAmB,GAAD,OAAInlP,GAAJ,OAAa6kP,IAC/B,KACA,oBAEJ,OAKG,GAAe,SAAC,GAAqC,IAAnCn9Q,EAAmC,EAAnCA,SAAUnI,EAAyB,EAAzBA,KAAyB,EACa,aAAY,SAACgG,GAAD,OAAyBA,EAAM9B,SAASE,UAAhH0hR,EAD+C,EACxDrlP,OAAqCslP,EADmB,EAC/BC,WAAgC3hR,EADD,EACCA,SADD,EAEpC,mBAAiB,MAFmB,mBAEzDo8B,EAFyD,KAEjDwlP,EAFiD,OAG5B,mBAAgB,IAHY,mBAGzDC,EAHyD,KAG7CC,EAH6C,KAI1Dn8Q,EAAW,cAJ+C,EAM7B,mBAAS,UANoB,mBAMzD07Q,EANyD,KAM9CC,EAN8C,KA6ChE,OArCA,qBAAU,WACL3lR,GACD2lR,EAAa3lR,KAEd,CAACA,IAEJ,qBAAU,WACJygC,GACFz2B,EAAS,CAAE2B,KAAM,gBAAiBC,QAAS,CAAE60B,cAE9C,CAACA,IAEJ,qBAAU,WAAK,MACG,SAAbp8B,GAAuB0hR,EACxBE,EAAUF,GACDD,EACTG,EAAUH,IAEVG,EAAU,OACVj8Q,EAAS,CAAE2B,KAAM,gBAAiBC,QAAS,eAAG85Q,EAAY,UAG5D,IACMQ,GADS,MAAG76Q,OAAH,oBAAa+6Q,KAEzB95Q,KAAI,SAACwM,GAAD,OAAUA,EAAK1N,QAAQ,QAAS,OACpCmV,QAAO,SAAC8lQ,EAAM75Q,EAAOtN,GAAd,OAAuBsN,IAAUtN,EAAK0tC,QAAQy5O,MACrD5iQ,MAAK,SAACzkB,EAAQ0kB,GAAT,OAAoB1kB,EAAI0kB,KAC7BpX,KAAI,SAACwM,GAAD,iBAAcA,MAErBqtQ,EAAcD,KACb,IAQD,kBAAC,IAAc,CACblmR,KAAMA,GAAe,UACrBgI,MAAM,UACNtH,MAAO+/B,EACPt4B,UAAQ,EACRoN,QAAS2wQ,EACTryQ,aAZJ,SAA4BqD,GAC1B,IAAMovQ,EAAYpvQ,EAAMtD,cAAclT,MACtCulR,EAAUK,IAWRljR,QAAS,kBAAM,MACf6X,cAAY,EACZxF,UAAWwwQ,EACXzwQ,WAAYrN,KAKZ,SAAUo+Q,GAAgBv/Q,GAC9B,OACE,oCACGA,EAAM89Q,YAAc,KACnB,kBAACF,GAAW,CAACl8Q,UAAU,eAAeyL,UAAWnN,EAAMmN,WACrD,kBAAC,GAAY,iBAAKnN,KAGtB,kBAAC69Q,GAAW,CAACC,YAAa99Q,EAAM89Q,YAAa3wQ,UAAWnN,EAAMmN,WAC5D,kBAAC,GAAa,iBAAKnN,MAMrB,SAAUsgH,GAAStgH,GACvB,OACE,kBAAC,IAAc,CAACkS,mBAAoBlS,EAAMkS,oBACxC,kBAAC,IAAiB,CAACxQ,UAAU,eAAeyL,UAAWnN,EAAMmN,WAC3D,kBAACopB,GAAc,KACb,kBAACgpP,GAAe,iBAAKv/Q,O,uBC5QzB,SAAUw/Q,GAAiBx/Q,GAA4B,IACnDkB,EAAyFlB,EAAzFkB,SAAUlI,EAA+EgH,EAA/EhH,KAAM,EAAyEgH,EAAzE2a,OAAQ5N,EAAiE/M,EAAjE+M,iBAAkB,EAA+C/M,EAA/CsB,SAAUN,EAAqChB,EAArCgB,MAAO8yM,EAA8B9zM,EAA9B8zM,KAAM3yM,EAAwBnB,EAAxBmB,SAAUM,EAAczB,EAAdyB,UAC3EyD,EAAa,cAAbA,SAFmD,EAG/B,8BAAbvF,GAH4C,EAGnDF,MAHmD,EAG5CE,UACTxD,EAAkB,eAClBq3Q,EAAwB,+BAAqB,mBAC3Ct2Q,EAAa,aAAY,SAAC8B,GAAD,OAAyBA,KAAlD9B,SANmD,EAOnB,mBAAS,IAPU,mBAOpD8H,EAPoD,KAOtCC,EAPsC,KAwB3D,OAVA,qBAAU,WACJxD,GALQ8K,SAASC,qBAAqB,YACtC,GAAGC,aAAa,YAAahL,EAAU6N,YAK3C,IAAM5V,EAAQwD,EAASE,OAAOpE,GAE1BU,GAASA,IAAUqT,GACrB9H,EAAgBvL,KAGjB,IAGD,oCACE,kBAAC,KAAQ,iBACHsG,EAAK,CACTsB,SAAU,SAACjF,GACT4I,EAAgB5I,EAAEuQ,cAAclT,OAC7B2C,EAAEuQ,cAAclT,MAAM8B,OAAS,GAChCmE,GAAS,GAEP,GACF,EAAStD,IAGbse,OAAQ,SAACte,GACH,GAAQ,EAAOA,GACnB6I,EAASlM,EAAMqD,EAAEuQ,cAAclT,OAC/B85Q,EAAsBC,SAASz6Q,EAAMqD,EAAEuQ,cAAclT,QAEvDkhB,QAAS,WACPze,EAAgBqa,oBACd,CACEja,UAAWyE,GAEb,CACE+O,cAAe/W,KAIrBU,MAAOsL,EACP8uM,KAAMA,GAAc,EACpB3yM,SAAUA,IAAsB,EAChCM,UAAWA,KAEb,2BAAOkD,KAAK,SAAS3L,KAAMA,EAAMU,MAAOsL,EAAcS,IAAKvE,KC/E1D,IAAMk+Q,GAAsB,CACjC,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,OACD,CAAC,UACD,CAAC,UACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,OACD,CAAC,UACD,CAAC,OACD,CAAC,OACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,UACD,CAAC,QACD,CAAC,OACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,UACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,OACD,CAAC,UACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,MACD,CAAC,OACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,OACD,CAAC,QACD,CAAC,QACD,CAAC,OACD,CAAC,QACD,CAAC,OACD,CAAC,OACD,CAAC,QACD,CAAC,OACD,CAAC,QACD,CAAC,QACD,CAAC,OACD,CAAC,QACD,CAAC,QACD,CAAC,OACD,CAAC,QACD,CAAC,OACD,CAAC,UACD,CAAC,SAAU,SAAU,UACrB,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,OACD,CAAC,QACD,CAAC,QACD,CAAC,OACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,OACD,CAAC,QACD,CAAC,QACD,CAAC,OACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,OACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,OACD,CAAC,QACD,CAAC,UACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,OACD,CAAC,OACD,CAAC,QACD,CAAC,QACD,CAAC,OACD,CAAC,OACD,CAAC,QACD,CAAC,QACD,CAAC,OACD,CAAC,QACD,CAAC,OACD,CAAC,OACD,CAAC,UACD,CAAC,QACD,CAAC,OACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,UACD,CAAC,QACD,CAAC,OACD,CAAC,QACD,CAAC,UACD,CAAC,KAAM,OAAQ,QACf,CAAC,QACD,CAAC,QACD,CAAC,UACD,CAAC,QACD,CAAC,OACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,OACD,CAAC,QACD,CAAC,QACD,CAAC,UACD,CAAC,QACD,CAAC,QACD,CAAC,UACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,OACD,CAAC,OACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,OACD,CAAC,OACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,OACD,CAAC,QACD,CAAC,QACD,CAAC,OACD,CAAC,QACD,CAAC,QACD,CAAC,OACD,CAAC,OACD,CAAC,OACD,CAAC,QACD,CAAC,QACD,CAAC,SAAU,UACX,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,OACD,CAAC,QACD,CAAC,KAAM,OAAQ,OAAQ,QACvB,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,OACD,CAAC,OACD,CAAC,QACD,CAAC,QACD,CAAC,OACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,QACD,CAAC,UACD,CAAC,QACD,CAAC,QACD,CAAC,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AAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,EAAI,CAAC,KAAK,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,KAAK,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,KAAK,KAAK,KAAK,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,KAAK,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,KAAK,KAAK,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,I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UAAU,SAA+B+nQ,GACrE3jP,EAASgsC,QAAQ23M,GAAUrjG,EAAM/3B,MAAMqgN,MAGzC5jX,EAAOD,QAAUi7C,I,6LClIF,SAAS2/T,IAA6B,MAChB/0F,YAAmBlvP,WAA/CsC,EAD4C,EAC5CA,KAAMriB,EADsC,EACtCA,QAAS45G,EAD6B,EAC7BA,SACvB,OAAOs0P,YAA4B7rV,EAAMriB,EAAS45G,GCF5C,SAAS,IACf,OAAO,YAAa,EAA6B75F,W,eCJrCouV,EAAmB,CAC9B,CACE1jX,KAAM,KACNU,MAAO,UAET,CACEV,KAAM,aACNU,MACE,6IAEJ,CACEV,KAAM,KACNU,MAAO,sBAET,CACEV,KAAM,YACNU,MAAO,QAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,OACNU,MAAO,mCAET,CACEV,KAAM,WACNU,MAAO,QAET,CACEV,KAAM,YACNU,MAAO,QAET,CACEV,KAAM,aACNU,MAAO,QAET,CACEV,KAAM,aACNU,MAAO,QAET,CACEV,KAAM,SACNU,MAAO,QAET,CACEV,KAAM,OACNU,MAAO,QAET,CACEV,KAAM,eACNU,MAAO,QAET,CACEV,KAAM,WACNU,MAAO,QAET,CACEV,KAAM,gBACNU,MAAO,QAET,CACEV,KAAM,cACNU,MAAO,QAET,CACEV,KAAM,eACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,eACNU,MAAO,QAET,CACEV,KAAM,gBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,0BACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,QACNU,MAAO,QAET,CACEV,KAAM,MACNU,MAAO,QAET,CACEV,KAAM,gBACNU,MAAO,QAET,CACEV,KAAM,UACNU,MAAO,QAET,CACEV,KAAM,WACNU,MAAO,QAET,CACEV,KAAM,MACNU,MAAO,QAET,CACEV,KAAM,WACNU,MAAO,QAET,CACEV,KAAM,gBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,YACNU,MAAO,QAET,CACEV,KAAM,eACNU,MAAO,QAET,CACEV,KAAM,cACNU,MAAO,QAET,CACEV,KAAM,SACNU,MAAO,QAET,CACEV,KAAM,OACNU,MAAO,QAET,CACEV,KAAM,UACNU,MAAO,QAET,CACEV,KAAM,cACNU,MAAO,QAET,CACEV,KAAM,cACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,YACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,0BACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,+BACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,cACNU,MAAO,QAET,CACEV,KAAM,cACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,2BACNU,MAAO,QAET,CACEV,KAAM,0BACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,2BACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,SACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,gBACNU,MAAO,QAET,CACEV,KAAM,UACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,YACNU,MAAO,QAET,CACEV,KAAM,UACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,SACNU,MAAO,QAET,CACEV,KAAM,WACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,gBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,SAET,CACEV,KAAM,gBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,SACNU,MAAO,QAET,CACEV,KAAM,UACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,eACNU,MAAO,QAET,CACEV,KAAM,cACNU,MAAO,QAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,eACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,UAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,SAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,kBAET,CACEV,KAAM,oBACNU,MAAO,MAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,SAET,CACEV,KAAM,2BACNU,MAAO,QAET,CACEV,KAAM,2BACNU,MAAO,QAET,CACEV,KAAM,6BACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,0BACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,0BACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,+BACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,2BACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,2BACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,2BACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,oCACNU,MAAO,QAET,CACEV,KAAM,mCACNU,MAAO,QAET,CACEV,KAAM,mCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,6BACNU,MAAO,QAET,CACEV,KAAM,4BACNU,MAAO,QAET,CACEV,KAAM,4BACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,6BACNU,MAAO,QAET,CACEV,KAAM,4BACNU,MAAO,QAET,CACEV,KAAM,4BACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,6BACNU,MAAO,QAET,CACEV,KAAM,4BACNU,MAAO,QAET,CACEV,KAAM,4BACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,4BACNU,MAAO,QAET,CACEV,KAAM,2BACNU,MAAO,QAET,CACEV,KAAM,2BACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,6BACNU,MAAO,QAET,CACEV,KAAM,4BACNU,MAAO,QAET,CACEV,KAAM,4BACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,0BACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,2BACNU,MAAO,QAET,CACEV,KAAM,6BACNU,MAAO,QAET,CACEV,KAAM,0BACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,mCACNU,MAAO,QAET,CACEV,KAAM,kCACNU,MAAO,QAET,CACEV,KAAM,kCACNU,MAAO,QAET,CACEV,KAAM,+BACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,iCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,6BACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,MAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,SACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,6BACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,mCACNU,MAAO,QAET,CACEV,KAAM,kCACNU,MAAO,QAET,CACEV,KAAM,iCACNU,MAAO,QAET,CACEV,KAAM,iCACNU,MAAO,QAET,CACEV,KAAM,cACNU,MAAO,QAET,CACEV,KAAM,eACNU,MAAO,QAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,2CACNU,MAAO,QAET,CACEV,KAAM,0CACNU,MAAO,QAET,CACEV,KAAM,yCACNU,MAAO,QAET,CACEV,KAAM,yCACNU,MAAO,QAET,CACEV,KAAM,sCACNU,MAAO,QAET,CACEV,KAAM,qCACNU,MAAO,QAET,CACEV,KAAM,oCACNU,MAAO,QAET,CACEV,KAAM,oCACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,6BACNU,MAAO,QAET,CACEV,KAAM,eACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,4BACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,kCACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,4BACNU,MAAO,QAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,gBACNU,MAAO,QAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,+BACNU,MAAO,QAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,qCACNU,MAAO,QAET,CACEV,KAAM,oCACNU,MAAO,QAET,CACEV,KAAM,mCACNU,MAAO,QAET,CACEV,KAAM,mCACNU,MAAO,QAET,CACEV,KAAM,0BACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,4BACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,6BACNU,MAAO,QAET,CACEV,KAAM,2BACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,kCACNU,MAAO,QAET,CACEV,KAAM,2BACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,2BACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,eACNU,MAAO,QAET,CACEV,KAAM,4BACNU,MAAO,QAET,CACEV,KAAM,2BACNU,MAAO,QAET,CACEV,KAAM,kCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,+BACNU,MAAO,QAET,CACEV,KAAM,iCACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,sCACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,sCACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,mCACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,wCACNU,MAAO,QAET,CACEV,KAAM,0BACNU,MAAO,QAET,CACEV,KAAM,aACNU,MAAO,QAET,CACEV,KAAM,0BACNU,MAAO,QAET,CACEV,KAAM,2BACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,2BACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,+BACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,uCACNU,MAAO,QAET,CACEV,KAAM,aACNU,MAAO,QAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,yCACNU,MAAO,QAET,CACEV,KAAM,mCACNU,MAAO,QAET,CACEV,KAAM,cACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,sCACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,gBACNU,MAAO,QAET,CACEV,KAAM,6BACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,2BACNU,MAAO,QAET,CACEV,KAAM,0BACNU,MAAO,QAET,CACEV,KAAM,4BACNU,MAAO,QAET,CACEV,KAAM,mCACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,0BACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,kCACNU,MAAO,QAET,CACEV,KAAM,2BACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,eACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,2BACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,YACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,0BACNU,MAAO,QAET,CACEV,KAAM,2BACNU,MAAO,QAET,CACEV,KAAM,0BACNU,MAAO,QAET,CACEV,KAAM,0BACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,0BACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,6BACNU,MAAO,QAET,CACEV,KAAM,2BACNU,MAAO,QAET,CACEV,KAAM,4BACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,+BACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,mCACNU,MAAO,QAET,CACEV,KAAM,mCACNU,MAAO,QAET,CACEV,KAAM,mCACNU,MAAO,QAET,CACEV,KAAM,mCACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,qCACNU,MAAO,QAET,CACEV,KAAM,qCACNU,MAAO,QAET,CACEV,KAAM,qCACNU,MAAO,QAET,CACEV,KAAM,qCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,0BACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,qCACNU,MAAO,QAET,CACEV,KAAM,qCACNU,MAAO,QAET,CACEV,KAAM,qCACNU,MAAO,QAET,CACEV,KAAM,qCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,mCACNU,MAAO,QAET,CACEV,KAAM,mCACNU,MAAO,QAET,CACEV,KAAM,mCACNU,MAAO,QAET,CACEV,KAAM,mCACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,wCACNU,MAAO,QAET,CACEV,KAAM,gBACNU,MAAO,QAET,CACEV,KAAM,uCACNU,MAAO,QAET,CACEV,KAAM,yCACNU,MAAO,QAET,CACEV,KAAM,sCACNU,MAAO,QAET,CACEV,KAAM,mCACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,6BACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,4BACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,4BACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,qCACNU,MAAO,QAET,CACEV,KAAM,oCACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,qCACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,cACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,mCACNU,MAAO,QAET,CACEV,KAAM,iCACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,gBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,eACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,aACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,cACNU,MAAO,QAET,CACEV,KAAM,iCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,6BACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,kCACNU,MAAO,QAET,CACEV,KAAM,kCACNU,MAAO,QAET,CACEV,KAAM,iBACNU,MAAO,SCroEEijX,EAAuB,SAAC57S,GAAD,MACtB,mBAAZA,GACY,gCAAZA,GACY,mCAAZA,GACY,mCAAZA,GACY,sCAAZA,GACY,gDAAZA,GACY,mDAAZA,GAEW,EAAiB,SAACA,GAC7B,MAAgB,mBAAZA,EACK67S,EACc,gCAAZ77S,EACF87S,EACc,mCAAZ97S,EACF+7S,EACc,mCAAZ/7S,EACFg8S,EACc,sCAAZh8S,EACFi8S,EACc,gDAAZj8S,EACFk8S,EACc,mDAAZl8S,EACFm8S,EAEF,MClCIC,EAAiB,CAC1B,CACEnkX,KAAM,KACNU,MAAO,QAET,CACEV,KAAM,aACNU,MACE,mKAEJ,CACEV,KAAM,KACNU,MAAO,sBAET,CACEV,KAAM,UACNU,MAAO,sBAET,CACEV,KAAM,YACNU,MAAO,SAET,CACEV,KAAM,OACNU,MAAO,sCAET,CACEV,KAAM,cACNU,MAAO,uBAET,CACEV,KAAM,cACNU,MAAO,sBAET,CACEV,KAAM,mBACNU,MAAO,gCAET,CACEV,KAAM,mBACNU,MAAO,sBAET,CACEV,KAAM,iBACNU,MAAO,gCAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,WACNU,MAAO,cAET,CACEV,KAAM,sBACNU,MAAO,4BAET,CACEV,KAAM,gBACNU,MAAO,SAET,CACEV,KAAM,uBACNU,MAAO,WAET,CACEV,KAAM,iBACNU,MAAO,SAET,CACEV,KAAM,mBACNU,MAAO,SAET,CACEV,KAAM,gBACNU,MAAO,SAET,CACEV,KAAM,aACNU,MAAO,QAET,CACEV,KAAM,UACNU,MAAO,cAET,CACEV,KAAM,qBACNU,MAAO,gCAET,CACEV,KAAM,eACNU,MAAO,iBAET,CACEV,KAAM,qBACNU,MAAO,SAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,WACNU,MAAO,0BAET,CACEV,KAAM,WACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,WACNU,MAAO,MAET,CACEV,KAAM,uBACNU,MAAO,sBAET,CACEV,KAAM,0BACNU,MAAO,6BAET,CACEV,KAAM,8BACNU,MAAO,SAET,CACEV,KAAM,0BACNU,MAAO,SAET,CACEV,KAAM,iBACNU,MAAO,UC1JA0jX,EAAkB,CAC7B,CACEpkX,KAAM,KACNU,MAAO,SAET,CACEV,KAAM,aACNU,MACE,+IAEJ,CACEV,KAAM,KACNU,MAAO,sBAET,CACEV,KAAM,UACNU,MAAO,sBAET,CACEV,KAAM,YACNU,MAAO,SAET,CACEV,KAAM,OACNU,MAAO,gBAET,CACEV,KAAM,cACNU,MAAO,gCAET,CACEV,KAAM,cACNU,MAAO,sBAET,CACEV,KAAM,mBACNU,MAAO,gCAET,CACEV,KAAM,mBACNU,MAAO,sBAET,CACEV,KAAM,iBACNU,MAAO,gCAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,SAET,CACEV,KAAM,wCACNU,MAAO,SAET,CACEV,KAAM,+BACNU,MAAO,SAET,CACEV,KAAM,iCACNU,MAAO,SAET,CACEV,KAAM,8BACNU,MAAO,SAET,CACEV,KAAM,iBACNU,MAAO,SAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,SAET,CACEV,KAAM,2BACNU,MAAO,SAET,CACEV,KAAM,gBACNU,MAAO,SAET,CACEV,KAAM,gBACNU,MAAO,QAET,CACEV,KAAM,+BACNU,MAAO,SAET,CACEV,KAAM,0BACNU,MAAO,SAET,CACEV,KAAM,8BACNU,MAAO,KAET,CACEV,KAAM,kCACNU,MAAO,QAET,CACEV,KAAM,gBACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,+BACNU,MAAO,qBAET,CACEV,KAAM,iCACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,4BACNU,MAAO,SAET,CACEV,KAAM,wBACNU,MAAO,SAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,aACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,SAET,CACEV,KAAM,oBACNU,MAAO,qBAET,CACEV,KAAM,qBACNU,MAAO,MAET,CACEV,KAAM,qBACNU,MAAO,cAET,CACEV,KAAM,eACNU,MAAO,MAET,CACEV,KAAM,6BACNU,MAAO,MAET,CACEV,KAAM,4BACNU,MAAO,KAET,CACEV,KAAM,0BACNU,MAAO,sBAET,CACEV,KAAM,uBACNU,MAAO,KAET,CACEV,KAAM,gBACNU,MAAO,sBAET,CACEV,KAAM,0BACNU,MAAO,sBAET,CACEV,KAAM,wBACNU,MAAO,sBAET,CACEV,KAAM,eACNU,MAAO,sBAET,CACEV,KAAM,mBACNU,MAAO,yBAET,CACEV,KAAM,yBACNU,MAAO,cAET,CACEV,KAAM,eACNU,MAAO,cAET,CACEV,KAAM,kBACNU,MAAO,cAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,gBACNU,MAAO,gBAET,CACEV,KAAM,iBACNU,MAAO,uBCjRE2jX,EAAsB,SAACC,GACpC,MAAO,CACL,CACEtkX,KAAM,KACNU,MAAO,UAET,CACEV,KAAM,aACNU,MAAO,QAET,CACEV,KAAM,KACNU,MAAO,QAET,CACEV,KAAM,YACNU,MAAO,SAET,CACEV,KAAM,OACNU,MAAO,aAET,CACEV,KAAM,mBACNU,MAAO,gBAET,CACEV,KAAM,WACNU,MAAO,iBAET,CACEV,KAAM,YACNU,MAAO,kBAET,CACEV,KAAM,aACNU,MAAO,QAET,CACEV,KAAM,eACNU,MAAO,sBAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,WACNU,MAAO,QAET,CACEV,KAAM,UACNU,MAAO,sBAET,CACEV,KAAM,cACNU,MAAO,uBAET,CACEV,KAAM,cACNU,MAAO,sBAET,CACEV,KAAM,mBACNU,MAAO,uBAET,CACEV,KAAM,mBACNU,MAAO,sBAET,CACEV,KAAM,iBACNU,MAAO,uBAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,YACNU,MAAO,SAET,CACEV,KAAM,kBACNU,MAAO,sBAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,2BACNU,MAAO,SAET,CACEV,KAAM,yBACNU,MAAO,SAET,CACEV,KAAM,kBACNU,MAAO,SAET,CACEV,KAAM,UACNU,MAAO,SAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,WACNU,MAAO,SAET,CACEV,KAAM,gBACNU,MAAO,QAET,CACEV,KAAM,gBACNU,MAAO,KAET,CACEV,KAAM,uBACNU,MAAO,6BAET,CACEV,KAAM,SACNU,MAAO,SAET,CACEV,KAAM,UACNU,MAAO4jX,EAAc,UAAY,cAEnC,CACEtkX,KAAM,sBACNU,MAAO,aAET,CACEV,KAAM,cACNU,MAAO,WAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,eACNU,MAAO,iBAET,CACEV,KAAM,kBACNU,MAAO,6BAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,8BACNU,MAAO,UAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,4BAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,SAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,SAET,CACEV,KAAM,0BACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,SAET,CACEV,KAAM,0BACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,SAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,2BACNU,MAAO,QAET,CACEV,KAAM,6BACNU,MAAO,QAET,CACEV,KAAM,0BACNU,MAAO,SAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,mCACNU,MAAO,QAET,CACEV,KAAM,kCACNU,MAAO,QAET,CACEV,KAAM,kCACNU,MAAO,SAET,CACEV,KAAM,+BACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,SAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,SAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,SAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,SAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,iCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,SAET,CACEV,KAAM,6BACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,SAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,SAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,SAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,SAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,SAET,CACEV,KAAM,uBACNU,MAAO,SAET,CACEV,KAAM,gCACNU,MAAO,SAET,CACEV,KAAM,qBACNU,MAAO,SAET,CACEV,KAAM,2BACNU,MAAO,SAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,sCACNU,MAAO,QAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,mCACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,wCACNU,MAAO,QAET,CACEV,KAAM,0BACNU,MAAO,QAET,CACEV,KAAM,aACNU,MAAO,QAET,CACEV,KAAM,0BACNU,MAAO,QAET,CACEV,KAAM,2BACNU,MAAO,SAET,CACEV,KAAM,wBACNU,MAAO,SAET,CACEV,KAAM,uBACNU,MAAO,SAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,SAET,CACEV,KAAM,8BACNU,MAAO,QAET,CACEV,KAAM,2BACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,+BACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,uCACNU,MAAO,QAET,CACEV,KAAM,aACNU,MAAO,QAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,yCACNU,MAAO,QAET,CACEV,KAAM,mCACNU,MAAO,QAET,CACEV,KAAM,cACNU,MAAO,SAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,uBACNU,MAAO,QAET,CACEV,KAAM,wBACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,QAET,CACEV,KAAM,sCACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,6BACNU,MAAO,SAET,CACEV,KAAM,uBACNU,MAAO,SAET,CACEV,KAAM,oBACNU,MAAO,SAET,CACEV,KAAM,kCACNU,MAAO,SAET,CACEV,KAAM,2BACNU,MAAO,SAET,CACEV,KAAM,yBACNU,MAAO,SAET,CACEV,KAAM,eACNU,MAAO,SAET,CACEV,KAAM,yBACNU,MAAO,SAET,CACEV,KAAM,gCACNU,MAAO,SAET,CACEV,KAAM,sBACNU,MAAO,SAET,CACEV,KAAM,2BACNU,MAAO,SAET,CACEV,KAAM,sBACNU,MAAO,SAET,CACEV,KAAM,iBACNU,MAAO,SAET,CACEV,KAAM,sBACNU,MAAO,SAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,yBACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,SAET,CACEV,KAAM,iBACNU,MAAO,SAET,CACEV,KAAM,kBACNU,MAAO,SAET,CACEV,KAAM,iBACNU,MAAO,SAET,CACEV,KAAM,kBACNU,MAAO,SAET,CACEV,KAAM,kBACNU,MAAO,SAET,CACEV,KAAM,uCACNU,MAAO,QAET,CACEV,KAAM,yCACNU,MAAO,QAET,CACEV,KAAM,sCACNU,MAAO,SAET,CACEV,KAAM,mCACNU,MAAO,QAET,CACEV,KAAM,iBACNU,MAAO,SAET,CACEV,KAAM,iCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,QAET,CACEV,KAAM,gCACNU,MAAO,SAET,CACEV,KAAM,6BACNU,MAAO,SAET,CACEV,KAAM,oBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,sBACNU,MAAO,SAET,CACEV,KAAM,qBACNU,MAAO,SAET,CACEV,KAAM,sBACNU,MAAO,SAET,CACEV,KAAM,kCACNU,MAAO,QAET,CACEV,KAAM,kCACNU,MAAO,QAET,CACEV,KAAM,WACNU,MAAO,SAET,CACEV,KAAM,UACNU,MAAO,SAET,CACEV,KAAM,YACNU,MAAO,SAET,CACEV,KAAM,iBACNU,MAAO,U,QCpyBEmjX,EAAmC,CAC9C17S,OAAQ,CACNhhD,OAAQ,UACRqwQ,UAAW,sBACX1+Q,KAAM,EACNi0G,KAAM,mBAERuR,OAAQ,CACNv2D,QAAS,8BACTf,MAAO,wBAETppD,QAAS,CACP,CACEG,WAAY,YAAIsmW,GAAoB,KAEtC,CACEtmW,WAAY,YAAIomW,MAKTL,EAAqC,CAChD37S,OAAQ,CACNhhD,OAAQ,UACRqwQ,UAAW,sBACX1+Q,KAAM,EACNi0G,KAAM,mBAERuR,OAAQ,CACNv2D,QAAS,iCACTf,MAAO,wBAETppD,QAAS,CACP,CACEG,WAAY,YAAIsmW,GAAoB,KAEtC,CACEtmW,WAAY,YAAIomW,MCvCTI,EAAqB,CAC9B,CACEvkX,KAAM,KACNU,MAAO,WAET,CACEV,KAAM,aACNU,MACE,iJAEJ,CACEV,KAAM,KACNU,MAAO,sBAET,CACEV,KAAM,UACNU,MAAO,sBAET,CACEV,KAAM,YACNU,MAAO,SAET,CACEV,KAAM,OACNU,MAAO,mBAET,CACEV,KAAM,cACNU,MAAO,gCAET,CACEV,KAAM,cACNU,MAAO,sBAET,CACEV,KAAM,mBACNU,MAAO,gCAET,CACEV,KAAM,mBACNU,MAAO,sBAET,CACEV,KAAM,iBACNU,MAAO,gCAET,CACEV,KAAM,iBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,SAET,CACEV,KAAM,kBACNU,MAAO,QAET,CACEV,KAAM,YACNU,MAAO,SAET,CACEV,KAAM,YACNU,MAAO,UAET,CACEV,KAAM,wBACNU,MAAO,KAET,CACEV,KAAM,yBACNU,MAAO,KAET,CACEV,KAAM,+BACNU,MAAO,qBAET,CACEV,KAAM,qBACNU,MAAO,cAET,CACEV,KAAM,WACNU,MAAO,qBAET,CACEV,KAAM,UACNU,MAAO,YAET,CACEV,KAAM,eACNU,MAAO,gBAET,CACEV,KAAM,2BACNU,MACE,IAEJ,CACEV,KAAM,2BACNU,MAAO,KAET,CACEV,KAAM,sBACNU,MAAO,KAET,CACEV,KAAM,gBACNU,MAAO,QAET,CACEV,KAAM,kBACNU,MAAO,WAET,CACEV,KAAM,qBACNU,MAAO,SAET,CACEV,KAAM,qBACNU,MAAO,QAET,CACEV,KAAM,gBACNU,MAAO,QAET,CACEV,KAAM,4BACNU,MAAO,KAET,CACEV,KAAM,kBACNU,MAAO,mBAET,CACEV,KAAM,eACNU,MAAO,MAET,CACEV,KAAM,kBACNU,MAAO,SAET,CACEV,KAAM,sBACNU,MAAO,cAET,CACEV,KAAM,sBACNU,MAAO,gBAET,CACEV,KAAM,gBACNU,MAAO,sBAET,CACEV,KAAM,qBACNU,MAAO,SAET,CACEV,KAAM,mBACNU,MAAO,QAET,CACEV,KAAM,qBACNU,MAAO,SAET,CACEV,KAAM,6BACNU,MAAO,MAET,CACEV,KAAM,6BACNU,MAAO,KAET,CACEV,KAAM,8BACNU,MAAO,MChLAujX,EAAkD,CAC7D97S,OAAQ,CACNhhD,OAAQ,UACRqwQ,UAAW,sBACX1+Q,KAAM,EACNi0G,KAAM,mBAERuR,OAAQ,CACNv2D,QAAS,yBACTf,MAAO,wBAETppD,QAAS,CACP,CACEG,WAAY,YAAIsmW,GAAoB,KAEtC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","file":"vw-oneform-feature-app.umd.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"), require(\"styled-components\"), require(\"react-dom\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\", \"styled-components\", \"react-dom\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"react\"), require(\"styled-components\"), require(\"react-dom\")) : factory(root[\"react\"], root[\"styled-components\"], root[\"react-dom\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__0__, __WEBPACK_EXTERNAL_MODULE__18__, __WEBPACK_EXTERNAL_MODULE__57__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 228);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","export * from './App';\nexport * from './CalendarioCita';\nexport * from './CitaPreviaTile';\nexport * from './FormController';\nexport * from './LayerManagerWrapper';\nexport * from './NewMap';\nexport * from './OneForm';\nexport * from './Screen';\nexport * from './ThankYouComponent';\nexport * from './feature-app';\nexport * from './format-dates';\nexport * from './get-params-form';\nexport * from './get-trigger';\nexport * from './hooks';\nexport * from './lodash-functions';\nexport * from './redux';\nexport * from './remove-configuration-hash';\nexport * from './save-feature-app';\nexport * from './set-object-values';\nexport * from './tracking-context';\nexport * from './tracking-helpers';\nexport * from './tracking-objects';\nexport * from './tracking-types';\nexport * from './InputsValues';\n","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}","import { CTA } from '@volkswagen-onehub/components-core';\nimport { ArrowUp } from 'src/icons-core-imports';\nimport React from 'react';\nimport { useOneFormContext } from 'src/feature-app';\nimport { useTrackingManager } from 'src/feature-app/hooks/use-tracking-manager';\n\n\nexport const AnteriorCTA = () => {\n \n const { handlePreviousStep } = useOneFormContext();\n const trackingManager = useTrackingManager();\n\n return (\n \n {\n trackingManager.trackFormStepButtonClick({\n contentId: 'Anterior',\n });\n handlePreviousStep(e);\n }}\n tag=\"button\"\n emphasis=\"secondary\" \n size=\"small\"\n icon={}\n >\n Anterior\n \n\n );\n};\n","import { FeatureAppEnvironment } from '@feature-hub/core';\nimport { CloseHandleV2, FocusLayerSizeV2, LayerManagerV2 } from '@volkswagen-onehub/layer-manager';\nimport React, { useEffect, useState } from 'react';\nimport { useStore } from 'react-redux';\nimport { AnyAction, Store } from 'redux';\nimport { LayerManagerWrapper } from 'src/feature-app';\n\nimport {\n Container,\n ContainerGutter,\n ContainerPadding,\n ContainerWrap,\n CTA,\n Text,\n TextAppearance,\n} from '@volkswagen-onehub/components-core';\n\nexport const AvisoIslasCanarias = ({ close }: { close: CloseHandleV2 }) => {\n const [href, setHref] = useState(null);\n const [copy, setCopy] = useState(null);\n\n const store = useStore();\n\n const { formData } = store.getState();\n\n useEffect(() => {\n if (formData.fields.formName === 'cita-posventa') {\n setHref('https://www.vwcanarias.com/es/cita-previa.html');\n setCopy('Para pedir cita en un Servicio Oficial de las islas, visita la web de Volkswagen Canarias y haz la reserva desde ahí.');\n } else {\n setHref('https://cita.vwcanarias.com/');\n setCopy('Para pedir cita en un concesionario de las islas, visita la web de Volkswagen Canarias y haz la reserva desde ahí.');\n }\n }, []);\n\n return (\n \n \n \n ¿Estás en las Islas Canarias?\n \n \n {copy}\n \n \n \n \n Ir a Volkswagen Canarias\n \n {\n e.preventDefault();\n close({}, {}, {});\n }}\n >\n Seguir en esta página\n \n \n \n );\n};\n\nexport const renderAvisoIslasCanariasLayer = (\n store: Store,\n env: FeatureAppEnvironment,\n layerManager: LayerManagerV2\n) => {\n\n const render = (state: any, close: CloseHandleV2) => {\n return (\n \n \n \n );\n };\n\n layerManager.openFocusLayer(\n render,\n {},\n { size: FocusLayerSizeV2.B, userCloseable: true }\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { MultipleCTASelection } from '.';\nimport { useOneFormContext } from 'src/feature-app/OneForm';\nimport { useSelector } from 'react-redux';\nimport { OneFormState } from 'src/types';\nimport { contactoOptionsTurismos, contactoOptionsComerciales } from 'src/feature-app/InputsValues/CTAsObjects';\nimport { useIsComerciales } from 'src/feature-app/hooks';\n\nexport function CanalDeContacto() {\n const { register, errors } = useFormContext();\n const [errorContacto, setErrorContacto] = useState(false);\n const [contacto, setContacto] = useState('Arteon');\n const { fields } = useSelector((state: OneFormState) => state.formData);\n const { error, setError } = useOneFormContext();\n const isComerciales = useIsComerciales();\n\n useEffect(() => {\n if (fields.contacto) {\n setContacto(fields.contacto);\n }\n }, []);\n\n useEffect(() => {\n if (error) {\n !contacto ? setErrorContacto(true) : setErrorContacto(false);\n }\n }, [error]);\n\n useEffect(() => {\n if (errors.contacto) {\n setErrorContacto(true);\n } else {\n setErrorContacto(false);\n }\n }, [errors]);\n\n function handleChange(event: any) {\n const newContacto = event.currentTarget.value;\n setContacto(newContacto);\n if (newContacto !== '') setErrorContacto(false);\n }\n\n return ;\n}\n","import { Breakpoints, Layout, styled } from '@volkswagen-onehub/components-core';\nimport React, { useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport { Points } from 'src/types';\n\nconst InnerCardContainer = styled.div`\n background-color: rgba(0, 0, 0, 0.5);\n bottom: 0;\n height: 100%;\n left: 0;\n position: fixed;\n right: 0;\n width: 100%;\n z-index: 21;\n`;\n\nconst AnimatedCard = styled.div`\n height: 100%;\n width: 100%;\n &.alert-enter,\n &.alert-appear {\n transform: translateY(100%);\n }\n &.alert-enter-active,\n &.alert-appear-active {\n transform: translateY(0);\n transition: transform 400ms;\n }\n &.alert-exit {\n transform: translateY(0%);\n }\n &.alert-exit-active {\n transform: translateY(100%);\n transition: transform 400ms;\n }\n`;\n\nconst CloseDiv = styled.button`\n width: 100%;\n display: flex;\n justify-content: center;\n background: #001e50;\n height: 35px;\n border: none;\n cursor: pointer;\n left: 50%;\n outline: none;\n position: fixed;\n top: 0;\n transform: translate(-50%, 0) translateY(${(props) => props.translateY}px);\n z-index: 22;\n\n &.close-enter {\n top: 100%;\n }\n &.close-enter-active {\n top: 0%;\n transition: top 400ms;\n\n /* transform: translate(-50%, 0) translateY(${(props) => props.translateY}px);\n transition: transform 400ms; */\n }\n &.close-exit {\n transform: translateY(0%);\n }\n &.close-exit-active {\n transform: translateY(100%);\n transition: transform 400ms;\n }\n`;\n\nconst Marker = styled.div`\n height: 4px;\n width: 44px;\n border-radius: 2px;\n background-color: #ffffff;\n margin-top: 1.5vh;\n opacity: 0;\n &.marker-enter {\n opacity: 0.1;\n transform: scale(1.5);\n display: block;\n }\n &.marker-enter-active {\n opacity: 1;\n transform: scale(1);\n transition: transform 200ms, opacity 200ms ease-in;\n }\n &.marker-enter-done {\n opacity: 1;\n }\n`;\n\nconst TopBar = styled.div`\n height: 32px;\n width: 100%;\n background-color: #001e50;\n position: sticky;\n top: 0;\n z-index: 3;\n`;\n\ninterface translateYProps {\n translateY: number;\n showAllCardsMobile: boolean;\n}\n//max-height: 100vh;\n//overflow-y: scroll;\nconst InnerCard = styled.div`\n background-color: #001e50;\n border-radius: 12px 12px 0px;\n height: 100%;\n left: 50%;\n\n position: absolute;\n top: 53%;\n transform: translate(-50%, -50%) translateY(${(props) => props.translateY}px);\n width: 100%;\n z-index: 1000;\n`;\n\ninterface CardProps {\n children: React.ReactNode;\n closeCard: () => void;\n showCard: boolean;\n selectedPoint: Points;\n showAllCardsMobile: boolean;\n}\n\nconst fullLayout = [{ name: 'a', columns: 24 }];\nconst layoutWithMargins = [\n { name: '.', columns: 2 },\n { name: 'a', columns: 20 },\n { name: '.', columns: 2 },\n];\n\nexport function Card(props: CardProps) {\n const { closeCard, children, showCard, selectedPoint, showAllCardsMobile } = props;\n const [isCardOpen, setIsCardOpen] = useState(false);\n const [animateCarousell, setAnimateCarousell] = useState(false);\n const [initialValue, setInitialValue] = useState(null);\n const [translateY, setTranslateY] = useState(null);\n const [initialY, setInitialY] = useState(null);\n const cardRef = useRef(null);\n\n useEffect(() => {\n if (selectedPoint && !showAllCardsMobile) {\n if (window.innerHeight > 400) {\n setTranslateY(window ? window.innerHeight - 420 : 344);\n setInitialY(window ? window.innerHeight - 420 : 344);\n } else {\n setTranslateY(0);\n setInitialY(0);\n }\n } else {\n setTranslateY(0);\n setInitialY(0);\n }\n }, [selectedPoint, showAllCardsMobile]);\n\n useEffect(() => {\n setIsCardOpen(true);\n // document.body.style.overflow = 'hidden';\n return () => {\n // document.body.style.overflow = 'visible';\n };\n }, []);\n\n useLayoutEffect(() => {\n if (isCardOpen) setTimeout(() => setAnimateCarousell(true), 0);\n }, [isCardOpen]);\n\n const handleTouchStart = (e: React.TouchEvent) => {\n e.preventDefault();\n const x = e.nativeEvent.touches[0].clientY;\n setInitialValue(x);\n };\n\n const handleTouchEnd = (e: React.TouchEvent) => {\n e.preventDefault();\n const finalValue = e.nativeEvent.changedTouches[0].clientY;\n finalValue < (initialValue - initialY) * 6 ? more() : less();\n\n setInitialValue(null);\n };\n const handleMoveStartCard = (e: React.TouchEvent) => {\n e.preventDefault();\n if (!initialValue) {\n return;\n }\n\n const y = e.nativeEvent.changedTouches[0].clientY;\n const result = y - initialValue;\n\n result >= 0 ? setTranslateY(result + initialY) : setTranslateY(initialY);\n };\n\n const more = () => {\n setTranslateY(initialY);\n };\n\n const less = () => {\n closeCard();\n setIsCardOpen(false);\n setAnimateCarousell(false);\n };\n\n const handleOnClickMap = (e: any) => {\n const innerCard = document.getElementById('inner-card-container');\n\n if (e.target != innerCard && !innerCard.contains(e.target) && !showAllCardsMobile) {\n closeCard();\n setIsCardOpen(false);\n setAnimateCarousell(false);\n }\n };\n\n return (\n <>\n \n {\n handleTouchStart(e);\n }}\n onTouchEnd={(e) => {\n handleTouchEnd(e);\n }}\n onTouchMove={(e) => {\n handleMoveStartCard(e);\n }}\n translateY={translateY}\n showAllCardsMobile={showAllCardsMobile}\n >\n \n \n \n \n \n {\n e.preventDefault;\n handleOnClickMap(e);\n }}\n >\n \n \n \n {\n e.preventDefault();\n e.stopPropagation();\n }}\n onTouchStart={(e) => {\n handleTouchStart(e);\n }}\n onTouchEnd={(e) => {\n handleTouchEnd(e);\n }}\n onTouchMove={(e) => {\n handleMoveStartCard(e);\n }}\n />\n \n {children}\n \n \n \n \n \n \n );\n}\n","import { styled } from '@volkswagen-onehub/components-core';\nimport React, { useRef, ReactElement, useEffect, useState } from 'react';\nimport Slider from 'react-slick';\n\nconst CSSDiv = styled.div`\n /* Slider */\n .slick-slider {\n position: relative;\n\n display: block;\n box-sizing: border-box;\n\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n -webkit-touch-callout: none;\n -khtml-user-select: none;\n -ms-touch-action: pan-y;\n touch-action: pan-y;\n -webkit-tap-highlight-color: transparent;\n }\n\n .slick-list {\n position: relative;\n\n display: block;\n overflow: hidden;\n\n margin: 0;\n padding: 0;\n }\n .slick-list:focus {\n outline: none;\n }\n .slick-list.dragging {\n cursor: pointer;\n cursor: hand;\n }\n\n .slick-slider .slick-track,\n .slick-slider .slick-list {\n -webkit-transform: translate3d(0, 0, 0);\n -moz-transform: translate3d(0, 0, 0);\n -ms-transform: translate3d(0, 0, 0);\n -o-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n .slick-track {\n position: relative;\n top: 0;\n left: 0;\n\n display: block;\n }\n .slick-track:before,\n .slick-track:after {\n display: table;\n\n content: '';\n }\n .slick-track:after {\n clear: both;\n }\n .slick-loading .slick-track {\n visibility: hidden;\n }\n\n .slick-slide {\n display: none;\n float: left;\n\n height: 100%;\n min-height: 1px;\n }\n [dir='rtl'] .slick-slide {\n float: right;\n }\n .slick-slide img {\n display: block;\n }\n .slick-slide.slick-loading img {\n display: none;\n }\n .slick-slide.dragging img {\n pointer-events: none;\n }\n .slick-initialized .slick-slide {\n display: block;\n }\n .slick-loading .slick-slide {\n visibility: hidden;\n }\n .slick-vertical .slick-slide {\n display: block;\n\n height: auto;\n\n border: 1px solid transparent;\n }\n .slick-arrow.slick-hidden {\n display: none;\n }\n\n /* Slider */\n .slick-slider {\n position: relative;\n\n display: block;\n box-sizing: border-box;\n\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n -webkit-touch-callout: none;\n -khtml-user-select: none;\n -ms-touch-action: pan-y;\n touch-action: pan-y;\n -webkit-tap-highlight-color: transparent;\n }\n\n .slick-list {\n position: relative;\n\n display: block;\n overflow: hidden;\n\n margin: 0;\n padding: 0;\n }\n .slick-list:focus {\n outline: none;\n }\n .slick-list.dragging {\n cursor: pointer;\n cursor: hand;\n }\n\n .slick-slider .slick-track,\n .slick-slider .slick-list {\n -webkit-transform: translate3d(0, 0, 0);\n -moz-transform: translate3d(0, 0, 0);\n -ms-transform: translate3d(0, 0, 0);\n -o-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n .slick-track {\n position: relative;\n top: 0;\n left: 0;\n\n display: block;\n }\n .slick-track:before,\n .slick-track:after {\n display: table;\n\n content: '';\n }\n .slick-track:after {\n clear: both;\n }\n .slick-loading .slick-track {\n visibility: hidden;\n }\n\n .slick-slide {\n display: none;\n float: left;\n\n height: 100%;\n min-height: 1px;\n }\n [dir='rtl'] .slick-slide {\n float: right;\n }\n .slick-slide img {\n display: block;\n }\n .slick-slide.slick-loading img {\n display: none;\n }\n .slick-slide.dragging img {\n pointer-events: none;\n }\n .slick-initialized .slick-slide {\n display: block;\n }\n .slick-loading .slick-slide {\n visibility: hidden;\n }\n .slick-vertical .slick-slide {\n display: block;\n\n height: auto;\n\n border: 1px solid transparent;\n }\n .slick-arrow.slick-hidden {\n display: none;\n }\n`;\nconst OfferPadding = styled.div`\n padding: 0 16px;\n`;\ninterface CarouselProps {\n renderList: (list: any) => JSX.Element[];\n list: any;\n}\n\nexport const CarouselComponent = (props: CarouselProps) => {\n const { renderList, list } = props;\n\n //carousel thigs\n\n const sliderRef = useRef(null);\n const childrenRef = useRef(null);\n\n const settings = {\n className: 'center',\n infinite: false,\n centerMode: true,\n centerPadding: '6%',\n slidesToShow: 1,\n swipe: true,\n speed: 500,\n arrows: false,\n };\n\n return (\n \n \n {renderList(list)}\n \n \n );\n};\n","import { Close } from 'src/icons-core-imports';\nimport React from 'react';\nimport { useSelector } from 'react-redux';\nimport { OneFormState } from 'src/types';\nimport { useOneFormContext } from 'src/feature-app';\nimport { useTrackingManager } from 'src/feature-app/hooks/use-tracking-manager';\n\n\nexport const CloseButton = () => {\n const { handleAreYouSureLayer } = useOneFormContext();\n const { screenIndex } = useSelector(\n (state: OneFormState) => state.formInfo\n );\n\n const trackingManager = useTrackingManager();\n\n return (\n {\n e.preventDefault();\n trackingManager.trackFormCloseClick(\n {\n contentId: 'Cerrar',\n },\n { FormStart: screenIndex === 0 ? true : false }\n );\n handleAreYouSureLayer();\n }}\n >\n \n \n );\n};\n","import { styled } from '@volkswagen-onehub/components-core';\nimport React, { useEffect, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { InputError, TextInputExtended } from 'src/components';\n\n\nconst Wrapper = styled.div`\n width: 100%;\n margin-top: 12px;\n label {\n width: 100%;\n @media screen and (min-width: 960px) {\n width: 170px;\n }\n }\n`;\n\nexport const CodigoPostal = () => {\n const { register } = useFormContext();\n\n // PostalCode\n const [inputValuePostalCode, setInputValuePostalCode] = useState('');\n const [pristinePostalCode, setPristinePostalCode] = useState(true);\n const [errorPostalCode, setErrorPostalCode] = useState(false);\n const regExpPostalCode = /\\d{5}/gi;\n\n const handleChangePostalCode = (e: any) => {\n setInputValuePostalCode(e.target.value);\n setPristinePostalCode(false);\n };\n\n useEffect(() => {\n if (!pristinePostalCode && inputValuePostalCode.match(regExpPostalCode) === null) {\n setErrorPostalCode(true);\n } else {\n setErrorPostalCode(false);\n }\n }, [inputValuePostalCode, pristinePostalCode]);\n\n return (\n \n handleChangePostalCode(e)}\n required\n maxLength={5}\n />\n {errorPostalCode && Solo se aceptan números}\n \n );\n};\n","import {\n Breakpoints,\n BreakpointWrapper,\n Container,\n ContainerGutter,\n ContainerHorizontalAlignment,\n ContainerPadding,\n ContainerWrap,\n CTA,\n Spinner,\n styled,\n Text,\n TextAlignment,\n TextAppearance,\n} from '@volkswagen-onehub/components-core';\nimport { Alert } from 'src/icons-core-imports';\n\nimport { CloseHandleV2 } from '@volkswagen-onehub/layer-manager';\nimport React, { useEffect, useState, useCallback } from 'react';\nimport { useDispatch, useStore } from 'react-redux';\nimport { Store } from 'redux';\nimport {\n createNoDmsSlotAndAssessor,\n getFranjaAndDayFrom,\n weekDay_DayNumber_De_Month,\n useFeatureAppConfig,\n weekDay_Day_Hour,\n} from 'src/feature-app';\nimport { DealersData, OneFormState, Slot, Horario } from 'src/types';\n\nconst Content = styled.div`\n background-color: white;\n padding: 44px 31px;\n flex: auto;\n text-align: center;\n width: 100%;\n @media screen and (min-width: 560px) {\n padding: 52px 46px;\n }\n @media screen and (min-width: 960px) {\n padding: var(--size-grid001);\n }\n`;\n\nconst CTAWrapper = styled.div`\n display: flex;\n flex-wrap: wrap;\n text-align: left;\n > div {\n text-align: left;\n }\n > button {\n @media screen and (min-width: 560px) {\n width: auto;\n }\n }\n`;\n\ninterface InvalidFormProps {\n notSavedField?: string;\n closeLayerCallback?: CloseHandleV2;\n}\n\nexport const InvalidForm = (props: InvalidFormProps) => {\n const { notSavedField, closeLayerCallback } = props;\n return (\n \n \n ¿Quieres conservar estos últimos cambios?\n \n \n \n Si es así, necesitamos que guardes los cambios que has hecho {notSavedField} antes de confirmar tu cita.\n \n \n {\n e.preventDefault();\n closeLayerCallback({}, {}, {});\n }}\n stretchContent\n >\n Entendido\n \n \n \n \n );\n};\n\ninterface loadingSreenProps {\n isleads?: boolean;\n copy?: string;\n}\n\nexport const LoadingScreen = (props: loadingSreenProps) => {\n return (\n \n \n {props.copy ? {props.copy} : Enviando tu petición}\n \n );\n};\n\ninterface KoScreenProps {\n retrySubmit: (e: any) => void;\n closeLayerCallback?: CloseHandleV2;\n title?:string;\n bodyCopy?:string;\n isLEM?: boolean;\n hideSecondCTA?: boolean;\n}\n\nexport const KoScreen = (props: KoScreenProps) => {\n const { retrySubmit, closeLayerCallback, title, bodyCopy, isLEM, hideSecondCTA } = props;\n\n return (\n \n \n
\n \n
\n \n {title? title : 'Uy, algo ha pasado'}\n \n \n \n {bodyCopy? bodyCopy : 'Por alguna razón no hemos podido recoger tus datos. ¿Lo intentamos de nuevo?'}\n \n \n \n \n {\n e.preventDefault();\n retrySubmit(e);\n closeLayerCallback({}, {}, {});\n }}\n stretchContent\n >\n Reintentar\n \n { hideSecondCTA ? null :\n isLEM ? (\n \n Ir a la web\n \n ) : (\n {\n e.preventDefault();\n closeLayerCallback({}, {}, {});\n }}\n stretchContent\n >\n Seguir navegando\n \n )\n }\n \n \n \n \n {\n e.preventDefault();\n retrySubmit(e);\n closeLayerCallback({}, {}, {});\n }}\n >\n Reintentar\n \n { hideSecondCTA ? null :\n isLEM ? (\n
\n \n Ir a la web\n \n
\n ) : (\n
\n {\n e.preventDefault();\n closeLayerCallback({}, {}, {});\n }}\n >\n Seguir navegando\n \n
\n )\n }\n
\n
\n \n \n \n
\n );\n};\n\ninterface IntermitenciaDMSKoProps {\n retrySubmit: (e: any) => void;\n closeLayerCallback?: CloseHandleV2;\n}\n\nexport const IntermitenciaDMSKo = (props: IntermitenciaDMSKoProps) => {\n const { retrySubmit, closeLayerCallback } = props;\n const [dmsFailed, setDmsFailed] = useState(false);\n const store: Store = useStore();\n const dispatch = useDispatch();\n const config = useFeatureAppConfig();\n\n const [day, setDay] = useState(null);\n const [franjaHoraria, setFranjaHoraria] = useState(null);\n const [name, setName] = useState(null);\n const [selectedPoint, setSelectedPoint] = useState(null);\n const { horario }: { horario: Horario } = store.getState().formData.fields;\n\n useEffect(() => {\n const { sendDmsFailed } = store.getState().formInfo;\n let { slot, dealer }: { slot: Slot; dealer: DealersData } = store.getState().formData.fields;\n\n setDmsFailed(sendDmsFailed);\n const { franjaHoraria } = getFranjaAndDayFrom(slot.from);\n\n setDay(weekDay_DayNumber_De_Month(slot.from));\n setFranjaHoraria(franjaHoraria.toLowerCase());\n setName(dealer.name);\n setSelectedPoint(slot);\n }, []);\n\n const handleShowSlots = useCallback((): string | null => {\n let { slot }: { slot: Slot } = store.getState().formData.fields;\n\n const finalSlot = getFinalSlot(slot.from);\n\n return finalSlot ? finalSlot : null;\n }, []);\n\n const getFinalSlot = (from: number) => {\n const momentSlot = weekDay_Day_Hour(from);\n const capitalizedSlot = momentSlot.charAt(0).toUpperCase() + momentSlot.slice(1);\n return capitalizedSlot.replace('-', ' a las ').concat('h');\n };\n\n const createNoDmsSlot = async (e: any) => {\n let { slot, dealer }: { slot: Slot; dealer: DealersData } = store.getState().formData.fields;\n dealer = {\n ...dealer,\n dmsInfo: {\n ...dealer.dmsInfo,\n dmsAvailable: false,\n },\n };\n const { franjaHoraria, day } = getFranjaAndDayFrom(slot.from);\n const { slot: newSlot, assessor } = createNoDmsSlotAndAssessor(franjaHoraria, day);\n dispatch({ type: 'UPDATE_FIELDS', payload: { slot: newSlot, assessor, dealer } });\n\n retrySubmit(e);\n };\n return (\n \n \n \n No hemos podido confirmar tu cita para el{' '}\n {handleShowSlots()}\n \n \n \n ¿Quieres que {name} se ponga en contacto contigo para\n cerrar tu cita el {day} por la {franjaHoraria}?\n \n \n {\n e.preventDefault();\n await createNoDmsSlot(e);\n closeLayerCallback({}, {}, {});\n }}\n stretchContent\n >\n Consultar con mi taller\n \n {\n config.trigger === 'cita-posventa-dealer' ? null : (\n
\n {\n e.preventDefault();\n closeLayerCallback({}, {}, {});\n }}\n stretchContent\n >\n Buscar una nueva cita\n \n
\n )\n }\n
\n \n \n
\n );\n};\n","import {\n CTA,\n styled,\n Text,\n TextColor\n} from '@volkswagen-onehub/components-core';\nimport React, { useState, useEffect } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Dispatch } from 'redux';\nimport { InputError } from 'src/components';\nimport { CustomSwitch } from '../inputs';\nimport { useIsComerciales } from 'src/feature-app/hooks';\n\nconst CTAsWrapper = styled.div`\n .error-field {\n width: fit-content !important;\n }\n \n > button {\n width: 81px;\n height: 33px;\n &:first-of-type {\n margin-right: 44px;\n }\n }\n \n`;\n\ninterface CTALegalesProps {\n name: string;\n ctaValues: { value?: string; label: string }[];\n dispatch: Dispatch;\n}\n\nexport const CTALegalesSiNo = (props: CTALegalesProps) => {\n const { ctaValues, name, dispatch } = props;\n const [currentValue, setCurrentValue] = useState(null);\n const { register, setValue, errors } = useFormContext();\n const [isSelected, setIsSelected] = useState(false);\n const getValue = (isSelected: boolean) => isSelected ? 'PERMITE' : 'NO INFORMADO';\n const isComerciales = useIsComerciales();\n\n useEffect(() => {\n dispatch({ type: 'UPDATE_FIELDS', payload: { [name]: getValue(isSelected) } });\n }, [isSelected]);\n\n function checkCurrentValue(label: string, name: string) {\n const value = label === 'Sí' ? 'PERMITE' : 'NO PERMITE';\n setCurrentValue(label);\n dispatch({ type: 'UPDATE_FIELDS', payload: { [name]: value } });\n setValue(name, value);\n }\n\n return (\n isComerciales ? (\n \n {\n ctaValues.map((cta: { label: string }, index: number) => (\n {\n register(ref, { required: true });\n }}\n onClick={\n (e) => {\n e.preventDefault();\n checkCurrentValue(cta.label, name);\n }\n }\n size={'small'}\n >\n {cta.label}\n \n ))\n }\n {errors[name] ? Este campo es obligatorio : null}\n \n ) : (\n \n \n {isSelected ? 'Aceptado' : 'Aceptar'}\n \n )\n );\n};\n","import {\n Text,\n TextAppearance,\n styled,\n Container,\n ContainerGutter,\n ContainerWrap,\n CTA,\n} from '@volkswagen-onehub/components-core';\nimport React from 'react';\nimport { useSelector } from 'react-redux';\nimport { OneFormState } from 'src/types';\n\nconst PaddingWrapper = styled.div`\n padding-top: 32px;\n`;\n\nconst TextColor = styled.span`\n color: #6a767d;\n`;\n\nconst linkLegalesEurocopa = 'https://crm.volkswagen.es/cms/2021/legal_concurso_eurocopa_2021.pdf';\ninterface LegalesProps {\n showBasesLegales?: boolean;\n}\nexport const LegalFullScreenSinConsentmientos = (props: LegalesProps) => {\n const { hideLegal, customLegal } = useSelector((state: OneFormState) => state.formInfo);\n return (\n \n \n \n Texto legal de Volkswagen\n \n \n \n El responsable de tus datos es Volkswagen Group España Distribución, S.A.U. \n Vamos a utilizar tus datos para realizar un control de calidad sobre los productos \n y servicios contratados, mediante la realización de la presente encuesta de satisfacción, \n y contactarte para resolución de incidencias, reclamaciones o quejas. Tus datos podrán ser \n comunicados a las empresas del grupo para las finalidades de controlar la calidad de los productos \n y servicios, así como contactarte para resolución de incidencias, reclamaciones o quejas.\n \n \n \n \n En el supuesto de haber consentido, tus datos y las respuestas de la presente encuesta \n de satisfacción serán comunicadas al Concesionario. Tienes derecho a oponerte al tratamiento, \n limitar el mismo, acceder, rectificar, suprimir los datos y ejercer tu derecho a portabilidad, \n mediante el envío de un correo electrónico a:{' '}\n \n atencioncliente@volkswagen.es\n \n .\n \n \n \n \n Puedes consultar la información adicional en la{' '}\n \n política de privacidad\n \n .\n \n \n {props.showBasesLegales ? (\n \n \n Consulta las{' '}\n \n Bases Legales\n {' '}\n de la promoción.\n \n \n ) : null}\n \n \n );\n};\n","import {\n styled,\n Text,\n TextAppearance,\n} from '@volkswagen-onehub/components-core';\nimport React from 'react';\nimport { CTAsSiNo } from 'src/feature-app';\nimport { Info } from 'src/icons-core-imports';\nimport { CTALegalesSiNo } from '.';\n\nconst PaddingWrapper = styled.div<{ noCompra?: boolean }>`\n width: 100%;\n padding-bottom: ${(props) => (props.noCompra ? '20px' : '32px')};\n`;\n\nconst QuestionWrapper = styled.div`\n width: 100%;\n display: flex;\n justify-content: space-between;\n flex-wrap: nowrap;\n`;\n\nconst ItemWrapper = styled.div`\n padding-bottom: 44px;\n`;\n\ninterface InfoWrapperProps {\n themeColor?: 'main' | 'inverted';\n}\n\nconst InfoWrapper = styled.div`\n margin-left: 16px;\n cursor: pointer;\n svg {\n fill: ${(props) => (props.themeColor === 'main' ? '#001E50' : '#ffffff')};\n }\n`;\n\n\nexport const LegalItem = ({ title, onClick, themeColor, noCompra, name, dispatch }: any) => {\n return (\n \n \n \n {title}\n \n \n \n \n \n \n \n );\n};\n","import {\n Container,\n ContainerGutter,\n ContainerWrap,\n CTA,\n styled,\n Text,\n TextAppearance,\n} from '@volkswagen-onehub/components-core';\nimport React from 'react';\nimport { useSelector } from 'react-redux';\nimport { useIsComerciales } from 'src/feature-app/hooks';\nimport { OneFormState } from 'src/types';\n\nconst PaddingWrapper = styled.div`\n padding-top: 32px;\n`;\n\nconst TextColor = styled.span`\n color: #6a767d;\n`;\n\nconst linkLegalesEurocopa = 'https://crm.volkswagen.es/cms/2021/legal_concurso_eurocopa_2021.pdf';\ninterface LegalesProps {\n showBasesLegales?: boolean;\n}\nexport const Legales = (props: LegalesProps) => {\n const isComerciales = useIsComerciales();\n return isComerciales ? : ;\n};\n\nconst LegalesTurismos = (props: LegalesProps) => {\n const { hideLegal, customLegal } = useSelector((state: OneFormState) => state.formInfo);\n return (\n \n {customLegal ? customLegal : null}\n {hideLegal ? null : (\n \n \n Texto legal de Volkswagen\n \n \n \n Te informamos que el responsable del tratamiento de tus datos es la compañía VOLKSWAGEN GROUP ESPAÑA\n DISTRIBUCION, S.A.U., con la finalidad de atender tus consultas y solicitudes, realizar un control de\n calidad sobre los productos y servicios solicitados, realizar encuestas de opinión y estudios de mercado\n con fines estadísticos. En caso que nos hayas dado tu consentimiento, para las finalidades descritas en\n los consentimientos adicionales.\n \n \n \n \n Te informamos que tienes derecho a retirar tu consentimiento en cualquier momento, así como a oponerte al\n tratamiento, limitar el mismo, acceder, rectificar, suprimir los datos y ejercer tu derecho a la\n portabilidad, mediante petición escrita a{' '}\n \n atencioncliente@volkswagen.es\n \n .\n \n \n \n \n Puedes consultar con mayor detalle la información adicional sobre la política de privacidad{' '}\n \n aquí\n \n .\n \n \n {props.showBasesLegales ? (\n \n \n Consulta las{' '}\n \n Bases Legales\n {' '}\n de la promoción.\n \n \n ) : null}\n \n )}\n \n );\n};\nconst LegalesComerciales = (props: LegalesProps) => {\n const { hideLegal } = useSelector((state: OneFormState) => state.formInfo);\n return (\n \n {hideLegal ? null : (\n \n \n Texto legal de Volkswagen\n \n \n \n Vamos a utilizar tus datos para el mantenimiento, desarrollo y/o control de nuestra relación comercial;\n atender a tus consultas y solicitudes; realizar un control de calidad sobre los productos y servicios por\n los que te hayas interesado; realización de encuestas de opinión y estudios de mercado con fines\n estadísticos.\n \n \n Tus datos se enviarán al concesionario que hayas seleccionado, si has seleccionado alguno, para la\n prestación del servicio solicitado o dar respuesta a la petición que hayas realizado (por ejemplo la\n prueba de un vehículo o envío de un presupuesto solicitado).\n \n \n \n \n Tienes derecho a retirar tus consentimientos en cualquier momento, así como oponerte al tratamiento,\n limitar el mismo, acceder, rectificar, suprimir los datos y ejercer tu derecho a portabilidad, mediante el\n envío de un mail a{' '}\n \n atencioncliente@volkswagen-comerciales.es\n \n .\n \n \n \n \n Puedes consultar con mayor detalle la Información adicional sobre Protección de Datos{' '}\n \n aquí\n \n .\n \n \n \n )}\n \n );\n};\n","import React from 'react';\nimport {\n Container,\n ContainerPadding,\n ContainerGutter,\n ContainerWrap,\n CTA,\n styled,\n Text,\n TextAppearance,\n} from '@volkswagen-onehub/components-core';\nimport { useIsComerciales } from 'src/feature-app/hooks';\n\nconst CTAlinkWhithe = styled.span`\n a {\n color: #ffffff;\n }\n`;\n\ninterface legalesFormatoLayerProps {\n noPadding?: boolean;\n title?: boolean;\n showBasesLegales?: boolean;\n promocion?: boolean;\n hrefBasesLegales?: string;\n}\nconst Wrapper = styled.div`\n padding-top: ${(props) => (props.noPadding ? null : '72px')};\n padding-bottom: ${(props) => (props.noPadding ? null : '52px')};\n`;\n\nexport const LegalesFormatoLayer = (props: legalesFormatoLayerProps) => {\n const isComerciales = useIsComerciales();\n\n return isComerciales ? : ;\n};\nconst LegalesFormatoLayerTurismos = (props: legalesFormatoLayerProps) => {\n return (\n \n \n {props.title ? (\n \n Texto legal de Volkswagen\n \n ) : null}\n\n \n {!props.promocion ? (\n <>\n Te informamos que el responsable del tratamiento de tus datos es la compañía VOLKSWAGEN GROUP ESPAÑA\n DISTRIBUCION, S.A.U., con la finalidad de atender tus consultas y solicitudes, realizar un control de\n calidad sobre los productos y servicios solicitados, realizar encuestas de opinión y estudios de mercado\n con fines estadísticos. En caso que nos hayas dado tu consentimiento, para las finalidades descritas en\n los consentimientos adicionales.\n \n ) : (\n <>\n Te informamos que el responsable del tratamiento de tus datos es la compañía VOLKSWAGEN GROUP ESPAÑA\n DISTRIBUCION, S.A.U., con la finalidad de gestionar tu participación en la Promoción y, en el caso que lo\n consientas, para los fines comerciales y/o perfilado según lo indicado en el propio consentimiento.\n \n )}\n \n \n {!props.promocion ? (\n <>\n Te informamos que tienes derecho a retirar tu consentimiento en cualquier momento, así como a oponerte al\n tratamiento, limitar el mismo, acceder, rectificar, suprimir los datos y ejercer tu derecho a la\n portabilidad, mediante petición escrita a{' '}\n \n ) : (\n <>\n Te informamos que tienes derecho a retirar tu consentimiento en cualquier momento, así como a oponerte al\n tratamiento, limitar el mismo, acceder, rectificar, suprimir los datos y ejercer tu derecho a la\n portabilidad, enviando un correo electrónico a{' '}\n \n )}\n \n \n atencioncliente@volkswagen.es\n \n \n .\n \n \n Puedes consultar con mayor detalle la información adicional sobre la política de privacidad{' '}\n \n \n aquí\n \n \n .\n \n {props.showBasesLegales ? (\n \n Consulta las{' '}\n \n \n Bases Legales\n \n {' '}\n de la promoción.\n \n ) : null}\n \n \n );\n};\nconst LegalesFormatoLayerComerciales = (props: legalesFormatoLayerProps) => {\n return (\n \n \n {props.title ? (\n \n Texto legal de Volkswagen\n \n ) : null}\n\n \n Vamos a utilizar tus datos para el mantenimiento, desarrollo y/o control de nuestra relación comercial;\n atender a tus consultas y solicitudes; realizar un control de calidad sobre los productos y servicios por los\n que te hayas interesado; realización de encuestas de opinión y estudios de mercado con fines estadísticos.\n \n \n Tus datos se enviarán al concesionario que hayas seleccionado, si has seleccionado alguno, para la prestación\n del servicio solicitado o dar respuesta a la petición que hayas realizado (por ejemplo la prueba de un\n vehículo o envío de un presupuesto solicitado).\n \n \n Tienes derecho a retirar tus consentimientos en cualquier momento, así como oponerte al tratamiento, limitar\n el mismo, acceder, rectificar, suprimir los datos y ejercer tu derecho a portabilidad, mediante el envío de un\n mail a{' '}\n \n \n atencioncliente@volkswagen-comerciales.es\n \n \n .\n \n \n Puedes consultar con mayor detalle la Información adicional sobre Protección de Datos{' '}\n \n \n aquí\n \n \n .\n \n \n \n );\n};\n","import React from 'react';\nimport { useIsComerciales } from 'src/feature-app/hooks';\nimport { LssiTkmQuestionsComerciales, LssiTkmQuestionsTurismos } from '.';\n\nexport interface LssiTkmQuestionsProps {\n title: boolean;\n themeColor?: 'main' | 'inverted';\n noCompra?: boolean;\n permite?: string;\n}\n\nexport function LssiTkmQuestions(props: LssiTkmQuestionsProps) {\n const isComerciales = useIsComerciales();\n\n return isComerciales ? : ;\n}\n","import {\n Breakpoints,\n BreakpointWrapper,\n Container,\n ContainerGutter,\n ContainerPadding,\n ContainerWrap,\n CTA,\n Text,\n TextAppearance,\n} from '@volkswagen-onehub/components-core';\nimport { CloseHandleV2, FocusLayerSizeV2, LayerManagerV2 } from '@volkswagen-onehub/layer-manager';\nimport React from 'react';\nimport { useDispatch, useStore } from 'react-redux';\nimport { LayerManagerWrapper, useFeatureAppEnvironment, useFeatureServices } from 'src/feature-app';\nimport { LssiTkmQuestionsProps, LegalItem } from '.';\n\nconst getLssiTitle = (isOfertas: boolean) => {\n return isOfertas ? (\n \n ¿Te gustaría recibir comunicaciones comerciales sobre productos y servicios de nuestra{' '}\n \n marca?*\n \n \n ) : (\n \n ¿Te gustaría recibir descuentos y novedades de{' '}\n \n Volkswagen?*\n \n \n );\n};\n\nconst getLssiText = (isOfertas: boolean) => {\n return isOfertas\n ? 'Te enviaremos por cualquier medio información sobre descuentos, novedades, próximos lanzamientos, invitaciones a eventos y/o promociones especiales'\n : 'Si quieres, podemos enviarte información sobre próximos lanzamientos, invitaciones a eventos y promociones especiales.';\n};\n\nconst getTmkTitle = (isOfertas: boolean) => {\n return isOfertas ? (\n \n ¿Consientes que elaboremos un perfil tuyo como usuario para poder enviarte información comercial sobre los\n productos y servicios de nuestra marca que creamos que puedan resultar más de tu interés según tus{' '}\n \n preferencias?*\n \n \n ) : (\n \n ¿Te gustaría que elaboremos un perfil tuyo para ofrecerte información comercial sobre productos y servicios de\n nuestras marcas que creamos que te puedan interesar más según tus{' '}\n \n preferencias?*\n \n \n );\n};\n\nconst getTmkText = (isOfertas: boolean) => {\n return isOfertas\n ? 'Para elaborar tu perfil utilizaremos toda aquella información que disponemos de ti derivada de tu relación con nosotros como son la tipología de productos y/o servicios contratados, así como cualquier interacción con nuestra marca. Para ello, utilizaremos tanto la información que nos hayas aportado directamente como la que nos puedan hacer llegar terceros a los que hayas consentido que nos hagan llegar esta información. Gracias a esta información seremos capaces de enviarte información comercial sobre nuestros productos y servicios que consideramos que serán de más interés para ti que las genéricas. En el caso que consientas, no recibirás comunicaciones comerciales genéricas sino lo más personalizadas posible según tus preferencias para hacer que tu experiencia con la marca sea lo más positiva posible.'\n : 'Acceder a tu perfil nos ayuda a aprender de ti para mostrarte los servicios y ofertas que más te interesan.';\n};\n\nexport const LssiTkmQuestionsComerciales = ({ title, themeColor, noCompra }: LssiTkmQuestionsProps) => {\n const store = useStore();\n const { formName } = store.getState().formData.fields;\n const dispatch = useDispatch();\n const layerManager = useFeatureServices()['layer-manager'] as LayerManagerV2;\n const env = useFeatureAppEnvironment();\n\n const isOfertasForm = (formName) => {\n return formName === 'callme-oferta' || formName === 'lead-oferta';\n };\n\n const handleInfoLayer = (\n key: 'lssi' | 'tmk',\n renderFn: (state: any, close: CloseHandleV2) => JSX.Element\n ) => {\n const layer = layerManager.openFocusLayer(\n renderFn,\n { body: key === 'tmk' ? getTmkText(true) : getLssiText(true) },\n { size: FocusLayerSizeV2.A, userCloseable: true }\n );\n\n return layer;\n };\n\n const renderInfo = (state: { title: string; body: string }, close: CloseHandleV2) => {\n return (\n \n \n \n \n \n \n \n {\n e.preventDefault();\n close({}, {}, {});\n }}\n size={'small'}\n >\n Entendido\n \n \n \n );\n };\n\n return (\n <>\n {title ? (\n <>\n \n \n Y unas últimas preguntas\n \n \n \n \n Y unas últimas preguntas\n \n \n \n ) : null}\n\n
\n handleInfoLayer('lssi', renderInfo)}\n themeColor={themeColor}\n noCompra={noCompra}\n name=\"lssi\"\n dispatch={dispatch}\n />\n handleInfoLayer('tmk', renderInfo)}\n themeColor={themeColor}\n noCompra={noCompra}\n name=\"tmk\"\n dispatch={dispatch}\n />\n
\n \n );\n};\n","import { Breakpoints, BreakpointWrapper, CTA, styled } from '@volkswagen-onehub/components-core';\nimport { CloseHandleV2, FocusLayerSizeV2, LayerHandleV2, LayerManagerV2 } from '@volkswagen-onehub/layer-manager';\nimport React, { useEffect, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useDispatch, useStore, useSelector } from 'react-redux';\nimport { OneFormState } from 'src/types';\nimport {\n LayerManagerWrapper,\n useFeatureAppEnvironment,\n useFeatureServices,\n useOneFormContext,\n useTrackingManager,\n} from 'src/feature-app';\nimport { KoScreen, LoadingScreen, IntermitenciaDMSKo, InvalidForm } from 'src/components';\nimport { useIsComerciales } from 'src/feature-app/hooks';\n\nconst PositionWrapper = styled.div`\n width: 100%;\n display: flex;\n justify-content: center;\n`;\n\ninterface LastNavigationProps {\n compartir?: string;\n setCompartirError?: React.Dispatch>;\n setPrivacidadError?: React.Dispatch>;\n label?: string;\n KoTitle?: string;\n KoBody?: string;\n loadingCopy?: string;\n ContentID?: string;\n checkNotSavedFields?: () => string;\n ActivarCheckNotSavedFields?: boolean;\n}\nexport const showDataEnrichment = (formName: string, isComerciales: boolean, quieroContacto?: string) =>\n formName.includes('lead-') && !isComerciales || quieroContacto === \"true\";\n\nexport const LastNavigation = (props: LastNavigationProps) => {\n const {\n label,\n KoTitle,\n KoBody,\n loadingCopy,\n compartir,\n setCompartirError,\n ContentID,\n checkNotSavedFields,\n ActivarCheckNotSavedFields,\n } = props;\n\n const { handleShowFinalScreen, handleSubmit } = useOneFormContext();\n const { triggerValidation, errors } = useFormContext();\n const [layerVisible, setLayerVisible] = useState(false);\n const [notSavedField, setNotSavedField] = useState(null);\n const [koLayer, setKoLayer] = useState>(null);\n const [koScreen, setKoScreen] = useState(false);\n const [intermitenciaLayerLayer, setIntermitenciaLayerLayer] = useState>(null);\n const layerManager = useFeatureServices()['layer-manager'] as LayerManagerV2;\n const store = useStore();\n const env = useFeatureAppEnvironment();\n const dispatch = useDispatch();\n const trackingManager = useTrackingManager();\n const { formData } = useSelector((state: OneFormState) => state);\n\n //Loading and Ko layers\n\n const handleKoLayer = () => {\n const layer = layerManager.openFocusLayer(renderKoLayer, {}, { size: FocusLayerSizeV2.A });\n setKoLayer(layer);\n };\n\n const renderKoLayer = (state: any, close: CloseHandleV2) => {\n return (\n \n \n \n );\n };\n\n const handleLoadingScreenLayer = () => {\n const layer = layerManager.openFocusLayer(renderLoadingScreen, {}, { size: FocusLayerSizeV2.A });\n\n return layer;\n };\n\n const renderLoadingScreen = (state: any, close: CloseHandleV2) => {\n return (\n \n \n \n );\n };\n\n const handleIntermitenciaDMSKoLayer = () => {\n const layer = layerManager.openFocusLayer(renderIntermitenciaDMSKoLayer, {}, { size: FocusLayerSizeV2.A });\n setIntermitenciaLayerLayer(layer);\n // return layer;\n };\n\n const renderIntermitenciaDMSKoLayer = (state: any, close: CloseHandleV2) => {\n return (\n \n \n \n );\n };\n\n const handleInvalidFormLayer = () => {\n const layer = layerManager.openFocusLayer(renderInvalidFormLayer, {}, { size: FocusLayerSizeV2.A });\n // setConfirmacionLayer(layer);\n\n // return layer;\n };\n const renderInvalidFormLayer = (state: any, close: CloseHandleV2) => {\n return (\n \n \n \n );\n };\n\n // 1. check de lssi y tmk\n // 2. submit de la cita y activación la pantalla de feedback correspondiente\n // no se hace ninguna validación en este último paso porque esta ya se ha hecho en el edit-guardar de cada campo previamente\n async function handleConfirmar(e: any) {\n if (formData.fields.formName === 'no_compra-no_tengo' && formData.fields.quieroContacto === 'true' ||\n formData.fields.formName === 'no_renovacion-no_tengo' && formData.fields.quieroContacto === 'true') {\n if (!formData.fields.compartir) {\n setCompartirError(true);\n } else {\n trackingManager.trackFormCTAClick({\n contentId: ContentID ? ContentID : 'Enviar',\n });\n\n const loadingLayer = handleLoadingScreenLayer();\n setLayerVisible(true);\n\n const value = await handleSubmit(e);\n loadingLayer.close();\n\n if (value) {\n handleShowFinalScreen();\n } else {\n handleKoLayer();\n }\n }\n } else {\n const isValid = await triggerValidation();\n if (!isValid) return;\n\n trackingManager.trackFormCTAClick({\n contentId: ContentID ? ContentID : 'Enviar',\n });\n\n if (ActivarCheckNotSavedFields) {\n const someNotSavedField = checkNotSavedFields();\n setNotSavedField(someNotSavedField);\n\n if (someNotSavedField === null) {\n const loadingLayer = handleLoadingScreenLayer();\n setLayerVisible(true);\n\n const value = await handleSubmit(e);\n loadingLayer.close();\n\n if (value) {\n handleShowFinalScreen();\n } else {\n const { sendDmsFailed } = store.getState().formInfo;\n if (sendDmsFailed) {\n handleIntermitenciaDMSKoLayer();\n } else {\n handleKoLayer();\n }\n }\n } else {\n handleInvalidFormLayer();\n }\n } else {\n const loadingLayer = handleLoadingScreenLayer();\n setLayerVisible(true);\n\n const value = await handleSubmit(e);\n loadingLayer.close();\n\n if (value) {\n handleShowFinalScreen();\n } else {\n handleKoLayer();\n }\n }\n }\n }\n async function retrySubmit(e: any) {\n if (koLayer) {\n koLayer.close();\n }\n setKoScreen(false);\n const loadingLayer = handleLoadingScreenLayer();\n const value = await handleSubmit(e);\n loadingLayer.close();\n if (value) {\n handleShowFinalScreen();\n } else {\n handleKoLayer();\n setKoScreen(true);\n }\n }\n\n useEffect(() => {\n if (!layerVisible && koScreen) setKoScreen(false);\n }, [layerVisible]);\n\n useEffect(() => {\n dispatch({ type: 'UPDATE_FORM_ENDED', payload: true });\n }, []);\n\n return (\n \n \n {\n e.preventDefault();\n handleConfirmar(e);\n }}\n stretchContent\n >\n {label ? label : 'Enviar'}\n \n \n \n {\n e.preventDefault();\n handleConfirmar(e);\n }}\n >\n {label ? label : 'Enviar'}\n \n \n \n );\n};\n","import {\n Breakpoints,\n BreakpointWrapper,\n Container,\n ContainerGutter,\n ContainerPadding,\n ContainerWrap,\n CTA,\n Text,\n TextAppearance,\n} from '@volkswagen-onehub/components-core';\nimport { CloseHandleV2, FocusLayerSizeV2, LayerManagerV2 } from '@volkswagen-onehub/layer-manager';\nimport React from 'react';\nimport { useDispatch, useStore } from 'react-redux';\nimport { showDataEnrichment } from 'src/components/LastNavigationConfirmacion';\nimport { LayerManagerWrapper, useFeatureAppEnvironment, useFeatureServices } from 'src/feature-app';\nimport { useIsComerciales } from 'src/feature-app/hooks';\nimport { LssiTkmQuestionsProps, LegalItem } from '.';\n\nconst copies = {\n first: {\n title: 'Recibe comunicaciones sobre Volkswagen',\n body: 'Te enviaremos por cualquier medio información sobre descuentos, novedades, próximos lanzamientos, invitaciones a eventos y/o promociones especiales.',\n },\n second: {\n title: 'Recibe comunicaciones según tus intereses',\n body: 'Para elaborar tu perfil, utilizaremos toda aquella información que tengamos sobre ti, tanto si la has compartido con nosotros directamente como si lo hacen terceros a los que hayas dado tu consentimiento. Gracias a estos datos, podremos enviarte comunicaciones comerciales basadas en tus intereses o productos y servicios contratados. Al aceptar, nos permites enviarte información personalizada para mejorar tu experiencia con nosotros. ',\n },\n third: {\n title: 'Comparte información con tu concesionario ',\n body: 'De esta forma conocerá mejor tus necesidades y podrá ofrecerte una solución a tu medida.',\n },\n};\n\nexport const LssiTkmQuestionsTurismos = ({ title, themeColor, noCompra, permite }: LssiTkmQuestionsProps) => {\n const store = useStore();\n const { formName, quieroContacto } = store.getState().formData.fields;\n const isComerciales = useIsComerciales();\n const env = useFeatureAppEnvironment();\n const layerManager = useFeatureServices()['layer-manager'] as LayerManagerV2;\n const dispatch = useDispatch();\n \n const handleInfoLayer = (\n key: 'first' | 'second' | 'third',\n renderFn: (state: any, close: CloseHandleV2) => JSX.Element\n ) => {\n const layer = layerManager.openFocusLayer(\n renderFn,\n { ...copies[key] },\n { size: FocusLayerSizeV2.A, userCloseable: true }\n );\n\n return layer;\n };\n\n const renderInfo = (state: { title: string; body: string }, close: CloseHandleV2) => {\n return (\n \n \n \n {state.title}\n {state.body}\n \n {\n e.preventDefault();\n close({}, {}, {});\n }}\n size={'small'}\n >\n Entendido\n \n \n \n );\n };\n\n return (\n <>\n {title ? (\n <>\n \n \n Y unas últimas preguntas\n \n \n \n \n Y unas últimas preguntas\n \n \n \n ) : null}\n\n
\n {permite === 'PERMITE' && noCompra ? null :\n <>\n handleInfoLayer('first', renderInfo)}\n themeColor={themeColor}\n noCompra={noCompra}\n name=\"lssi\"\n dispatch={dispatch}\n />\n handleInfoLayer('second', renderInfo)}\n themeColor={themeColor}\n noCompra={noCompra}\n name=\"tmk\"\n dispatch={dispatch}\n />\n \n }\n {showDataEnrichment(formName, isComerciales, quieroContacto) ? (\n handleInfoLayer('third', renderInfo)}\n themeColor={themeColor}\n noCompra={noCompra}\n name=\"dataEnrichment\"\n dispatch={dispatch}\n />\n ) : null}\n
\n \n );\n};\n","import {\n Breakpoints,\n Container,\n ContainerGutter,\n ContainerHorizontalAlignment,\n ContainerPadding,\n ContainerWrap,\n CTA,\n Layout,\n styled,\n Text,\n TextAlignment,\n TextAppearance,\n} from '@volkswagen-onehub/components-core';\nimport { Calendar } from 'src/icons-core-imports';\n\nimport React from 'react';\nimport { useSelector } from 'react-redux';\nimport { Center, getDistanceFromCenter, Points } from 'src/feature-app';\nimport { useTrackingManager } from 'src/feature-app/hooks/use-tracking-manager';\nimport { Horario, OneFormState } from 'src/types';\n\nconst CTAWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-top: 32px;\n`;\n\ninterface DealerCardProps {\n handleShowSlots?: any;\n point?: Points;\n handleSeleccionarOnClick?: any;\n handleShowCalendarOnClick?: any;\n center: Center;\n}\n\nexport const DealerCard = (props: DealerCardProps) => {\n const { point, center } = props;\n const { name, address, city, zipCode } = point.properties.dealer.markerInfo.dealerInfo;\n const { distanceFromCenter, dealer } = point.properties;\n const trackingManager = useTrackingManager();\n const { formData } = useSelector((state: OneFormState) => state);\n const { horario }: { horario: Horario } = formData.fields;\n\n return (\n <>\n \n \n {props.handleShowSlots(point) === null ? null : (\n \n \n {props.handleShowSlots(point)}\n \n \n )}\n\n \n \n {name ? name : null}\n \n \n {address}, {zipCode} {city}\n \n \n \n \n \n {distanceFromCenter ? distanceFromCenter : getDistanceFromCenter(center, point)}km\n \n \n \n\n {!point.properties.dealer.dmsInfo || !point.properties.dealer.dmsInfo.dmsAvailable ? (\n \n {\n e.preventDefault();\n trackingManager.trackFormButtonClick(\n {\n contentId: 'Seleccionar día y franja horaria',\n },\n dealer\n );\n props.handleShowCalendarOnClick(point);\n }}\n >\n Seleccionar día y franja horaria\n \n \n ) : (\n \n {\n e.preventDefault();\n trackingManager.trackFormButtonClick(\n {\n contentId: 'Seleccionar',\n },\n dealer\n );\n if (\n (horario !== 'before' && dealer.slots[horario] === null) ||\n (horario === 'before' && !point.properties.hasOwnProperty('earliestSlot'))\n ) {\n props.handleShowCalendarOnClick(point);\n } else {\n props.handleSeleccionarOnClick(point);\n }\n }}\n >\n Seleccionar\n \n }\n onClick={(e) => {\n e.preventDefault();\n trackingManager.trackFormButtonClick(\n {\n contentId: 'Ver más horas',\n },\n dealer\n );\n props.handleShowCalendarOnClick(point);\n }}\n >\n Ver más horas\n \n \n )}\n \n );\n};\n","import React, { useState, useEffect } from 'react';\nimport {\n Container,\n ContainerGutter,\n ContainerWrap,\n ContainerHorizontalAlignment,\n ContainerPadding,\n InputAppearance,\n Text,\n TextAppearance,\n} from '@volkswagen-onehub/components-core';\nimport { InputButton, TextAreaExtended, PaddingWrapper } from 'src/components';\nimport { useOneFormContext } from 'src/feature-app';\nimport { useFormContext } from 'react-hook-form';\nimport { FieldType } from 'src/feature-service/es-oneform-core-feature-service/types';\n\ninterface DetalleMotivoProps {\n hideCTA?: boolean;\n CTALabel?: string;\n name?: FieldType;\n label?: string;\n limitedCharacters?: boolean;\n numberOfMaxLength?: number;\n showRecomendation?: string | JSX.Element;\n}\n\nexport function DetalleMotivo(props: DetalleMotivoProps) {\n const { hideCTA, CTALabel, name, label, limitedCharacters, numberOfMaxLength, showRecomendation } = props;\n const { register, setValue } = useFormContext();\n const { handleNextStep } = useOneFormContext();\n const [showButton, setShowButton] = useState(true);\n const [currentValue, setCurrentValue] = useState('');\n\n const adMaxLength = (max: number) => {\n const aux = document.getElementsByTagName('textarea');\n aux[0].setAttribute('maxlength', `${max}`);\n };\n\n useEffect(() => {\n if (limitedCharacters) adMaxLength(numberOfMaxLength);\n }, []);\n\n useEffect(() => {\n if (hideCTA) {\n setShowButton(false);\n }\n }, []);\n\n const handleChange = (e: any) => {\n const aux = e.currentTarget.value;\n e.preventDefault();\n setCurrentValue(aux);\n if (!hideCTA && (aux.length <= 2 || aux === '')) {\n setShowButton(true);\n } else {\n setShowButton(false);\n }\n };\n\n return (\n \n \n
\n handleChange(e)}\n appearance={InputAppearance.Default}\n isFloating\n innerRef={register({\n required: {\n value: false,\n message: '',\n },\n })}\n maxLength={numberOfMaxLength}\n alternateCTAText={CTALabel ? CTALabel : 'No, eso es todo'}\n />\n {\n showRecomendation ? (\n \n \n {showRecomendation}\n \n \n ) : null\n }\n
\n {\n hideCTA ? null :(\n <>\n {showButton ? (\n {\n setValue('masInformacion', '');\n handleNextStep(e);\n }}\n innerRef={register({\n required: {\n value: false,\n message: '',\n },\n })}\n />\n ) : (\n
\n )}\n \n )\n } \n \n \n );\n}\n","import React, { useState, useEffect } from 'react';\nimport { SelectExtended } from '.';\nimport { getActualYearNumber } from 'src/feature-app';\nimport { styled } from '@volkswagen-onehub/components-core';\nimport dayjs from 'dayjs';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { OneFormState } from 'src/types';\nimport { meses } from 'src/feature-app/InputsValues/OtherInputTypesObjects';\ninterface FechaCompraProps {\n notALayer: boolean;\n}\n\nconst FechaCompraWrapper = styled.div`\n margin-top: 4px;\n display: flex;\n flex-wrap: wrap;\n width: var(--size-grid020);\n @media all and (min-width: 560px) {\n width: var(--size-grid013);\n }\n @media screen and (min-width: 960px) {\n margin-top: 0; \n width: var(--size-grid008);\n }\n @media all and (min-width: 1280px) {\n width: var(--size-grid006);\n }\n @media all and (min-width: 1920px) {\n width: var(--size-grid005);\n }\n @media all and (min-width: 2560px) {\n width: var(--size-grid004);\n }\n label {\n margin-top: 40px;\n width: var(--size-grid009);\n\n @media all and (max-height: 624px) {\n margin-top: 20px;\n }\n\n @media all and (min-width: 560px) {\n width: var(--size-grid006);\n }\n @media screen and (min-width: 960px) {\n width: calc( var(--size-grid003) + (var(--size-grid001)/2) );\n }\n @media all and (min-width: 1280px) {\n width: calc( var(--size-grid002) + (var(--size-grid001)/2) );\n }\n @media all and (min-width: 1920px) {\n width: var(--size-grid002);\n }\n @media all and (min-width: 2560px) {\n width: calc( var(--size-grid001) + (var(--size-grid001)/2) );\n }\n }\n`;\nconst MarginDiv = styled.div`\n width: var(--size-grid002);\n @media all and (min-width: 560px) {\n width: var(--size-grid001);\n }\n`;\n\nexport const FechaCompra = (props: FechaCompraProps ) => {\n\n const { notALayer } = props;\n const dispatch = useDispatch();\n const { formData } = useSelector((state: OneFormState) => state);\n const { fecha } = formData.fields;\n\n //month\n const [ month, setMonth ] = useState('Enero');\n\n const handleChangeMonth = (e:any) => {\n e.preventDefault();\n setMonth(e.target.value);\n };\n\n //year\n\n const actualYear = getActualYearNumber();\n const [ yearsArray, setYearsArray ] = useState(null);\n\n useEffect(()=>{\n const previousYear = dayjs(actualYear).subtract(1, 'y').locale('es').format('YYYY');\n\n setYearsArray([previousYear, actualYear]);\n }, [actualYear]);\n\n const [ year, setYear ] = useState(actualYear);\n\n const handleChangeYear = (e:any) => {\n e.preventDefault();\n setYear(e.target.value);\n };\n\n //previous value\n\n useEffect(()=>{\n if(fecha) {\n const aux = fecha.split('/');\n const auxMonth = meses.find((m)=> m.number === aux[1]); \n setMonth(auxMonth.name);\n setYear(aux[2]);\n }\n }, []);\n\n //send value\n\n const [ finalDate, setFinalDate ] = useState(null);\n\n useEffect(()=>{\n const aux = meses.find((m)=> m.name === month);\n\n setFinalDate(`01/${aux.number}/${year}`);\n }, [month, year]);\n\n useEffect(() => {\n dispatch({ type: 'UPDATE_FIELDS', payload: { fecha: finalDate } });\n }, [finalDate]);\n\n \n\n \n\n return (\n \n m.name)}\n name='month'\n isRequired={true}\n handleChange={handleChangeMonth}\n value={month}\n onClick={() => null}\n setOption={setMonth}\n />\n \n { yearsArray ? (\n null}\n setOption={setYear}\n />\n ) : null}\n \n );\n};\n","import {\n Container,\n ContainerGutter,\n ContainerHorizontalAlignment,\n ContainerWrap,\n CTA,\n Text,\n TextAppearance,\n styled,\n TextAlignment,\n} from '@volkswagen-onehub/components-core';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useOneFormContext } from 'src/feature-app';\nimport { useIsComerciales } from 'src/feature-app/hooks';\nimport { useTrackingManager } from 'src/feature-app/hooks/use-tracking-manager';\nimport { CustomSlider, PaddingWrapper } from '.';\n\nconst KilContentWrapper = styled.div`\n padding-left: 32px;\n padding-right: 8px;\n width: 100vw;\n\n @media all and (min-width: 560px) {\n padding-left: 46px;\n padding-right: 32px;\n }\n @media all and (min-width: 960px) {\n padding-left: 120px;\n padding-right: 81px;\n width: 960px;\n }\n`;\n\nexport function Kilometros() {\n const isCommerciales = useIsComerciales();\n const jumpRange = isCommerciales ? 50000 : 30000;\n const maxValue = isCommerciales ? 400000 : 180000;\n const numberOfSteps = isCommerciales ? 9 : 7;\n const [value, setValue] = useState(1);\n const [millageValue, setMillageValue] = useState([0, jumpRange]);\n const [rangoKilometros, setRangoKilometros] = useState(`0km - ${formatNumber(jumpRange)}km`);\n const dispatch = useDispatch();\n const { handleNextStep } = useOneFormContext();\n const trackingManager = useTrackingManager();\n\n // convertir int a string con '.' de separacion para los miles. ej: 30000 --> 30.000\n function formatNumber(num: number | number[]) {\n return num.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1.');\n }\n const handleInputChange = (event: any) => {\n setValue(event.target.value);\n };\n\n useEffect(() => {\n const aux = jumpRange;\n const lowValue = aux * value - jumpRange;\n const highValue = aux * value;\n let stringRange;\n\n if (highValue > maxValue) {\n stringRange = isCommerciales ? 'Más de 400.000km' : 'Más de 180.000km';\n setMillageValue([lowValue, highValue]);\n } else {\n stringRange = `${formatNumber(lowValue)}km - ${formatNumber(highValue)}km`;\n setMillageValue([lowValue, highValue]);\n }\n setRangoKilometros(stringRange);\n\n trackingManager.trackFormFilterSelect(\n {\n contentId: 'Kilometros',\n },\n {\n type: 'range',\n name: 'Kilometros',\n lowerbound: String(lowValue),\n upperbound: String(highValue),\n values: undefined,\n },\n { FormFieldName: 'kilometros' }\n );\n }, [value]);\n\n useEffect(() => {\n dispatch({ type: 'UPDATE_FIELDS', payload: { kilometros: millageValue } });\n }, [millageValue]);\n\n return (\n \n \n \n \n {rangoKilometros}\n \n \n \n \n \n \n {\n e.preventDefault();\n trackingManager.trackFormButtonClick({\n contentId: 'No estoy seguro',\n });\n setMillageValue(0);\n handleNextStep(e);\n }}\n ariaLabel=\"aria label\"\n >\n No estoy seguro\n \n \n \n \n );\n}\n","import {\n Container,\n ContainerWrap,\n CTA,\n Text,\n TextAlignment,\n TextAppearance,\n ContainerGutter,\n styled,\n} from '@volkswagen-onehub/components-core';\nimport React from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useSelector, useDispatch } from 'react-redux';\nimport {\n isGooglePlace,\n Suggest,\n Suggestion,\n useOneFormContext\n} from 'src/feature-app';\nimport { useLocateUser } from 'src/feature-app/hooks';\nimport { Installation, isDealerData, OneFormState } from 'src/types';\n\nconst LocateWrapper = styled.div<{ paddingTop?: string }>`\n overflow: visible;\n padding-top: ${(props) => props.paddingTop ? props.paddingTop : '44px'};\n`;\nconst LocationDisabledWrapper = styled.div<{ paddingTopLocation?: string }>`\n padding-top: ${(props) => props.paddingTopLocation ? props.paddingTopLocation : '44px'};\n`;\ninterface LocateUserProps {\n isFiltrosSuggest?: boolean;\n onSuggestionSelectedFnAlternative?: (suggestion: Suggestion) => void;\n theme?: 'main' | 'inverted';\n paddingTop?: string;\n paddingTopLocation?: string;\n autoWidth?: boolean;\n noTengoDudasButton?: boolean;\n}\n\nexport function LocateUserFullScreen(props: LocateUserProps) {\n const { isFiltrosSuggest, onSuggestionSelectedFnAlternative, theme, paddingTop, paddingTopLocation, autoWidth } = props;\n const { register } = useFormContext();\n const { nextStep } = useOneFormContext();\n const {\n value,\n setValue,\n suggestion,\n setSuggestion,\n icon,\n locationSuccess,\n setLocationSuccess,\n handleLocate,\n loading,\n locationDisabled,\n isLocating,\n onSuggestionSelectedFn,\n } = useLocateUser();\n const dispatch = useDispatch();\n const { formInfo } = useSelector((state: OneFormState) => state);\n const { formTheme } = formInfo;\n\n const getSuggestionValue = (suggestion: Suggestion) => {\n if (!isGooglePlace(suggestion) && !isDealerData(suggestion)) {\n return (suggestion as Installation).TXT_V_Installation_Data_Name__c;\n } else {\n return suggestion.name;\n }\n };\n\n return (\n \n \n
\n \n
\n \n {\n e.preventDefault();\n if (!locationSuccess) handleLocate();\n }}\n disabled={loading ? true : false}\n size=\"small\"\n >\n Localiza mi posición actual\n \n {locationDisabled ? (\n \n \n Tu localización está deshabilitada\n \n \n ) : null}\n \n {props.noTengoDudasButton ? (\n {\n e.preventDefault();\n dispatch({ type: 'UPDATE_FIELDS', payload: { quieroContacto: 'false' } });\n nextStep();\n }}\n size=\"small\"\n >\n No tengo dudas\n \n ) : null}\n
\n \n
\n );\n}\n","import { styled } from '@volkswagen-onehub/components-core';\nimport React, { useEffect, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { connect } from 'react-redux';\nimport { OneFormState } from 'src/types';\nimport { InputError, TextInputExtended, CarlineSelect, PaddingWrapper } from 'src/components';\nimport { useOneFormContext } from 'src/feature-app/OneForm';\nimport { CitaFormDataFields } from 'src/forms/CitaPosventa/types';\nimport { SelectExtended } from '.';\n\nconst arrCountries = [\n {\n name: 'ES',\n code: 'ES',\n regex: [/\\d{4}[b-df-hj-npr-tv-zB-DF-HJ-NPR-TV-Z]{3}/, /[A-Za-z]{1,2}\\d{4}[A-Za-z]{1,2}/],\n errorMessage: 'Ejemplo: 0000BCD o AA0000AA',\n },\n {\n name: 'DE',\n code: 'DE',\n regex: [/[a-zA-Z]{2,5}\\d{1,4}/],\n errorMessage: 'Ejemplo: AAABB0000',\n },\n {\n name: 'FR',\n code: 'FR',\n regex: [\n /[a-hj-np-tv-zA-HJ-NP-TV-Z]{2}\\d{3}[a-hj-np-tv-zA-HJ-NP-TV-Z]{2}/,\n /\\d{2,4}[a-zA-Z]{2,3}\\d{2,3}/,\n /\\d{2,4}[a-zA-Z]{2,3}\\d{1}(a|b|A|B)/,\n ],\n errorMessage: 'Ejemplo: AA000AA o 00000AA00',\n },\n {\n name: 'GB',\n code: 'GB',\n regex: [/[a-zA-Z]{1,2}\\d{2}[a-zA-Z]{3}/, /[a-zA-Z]{1}\\d{3}[a-zA-Z]{3}/],\n errorMessage: 'Ejemplo: AA00AAA',\n },\n {\n name: 'IT',\n code: 'IT',\n regex: [/[a-zA-Z]{2}\\d{3}[a-zA-Z]{2}/],\n errorMessage: 'Ejemplo: AA000AA',\n },\n {\n name: 'PT',\n code: 'PT',\n regex: [/[a-zA-Z]{2}\\d{2}[a-zA-Z]{2}/, /\\d{2}[a-zA-Z]{2}\\d{2}/],\n errorMessage: 'Ejemplo: AA00AA',\n },\n {\n name: 'Otros',\n code: 'Otros',\n regex: [/[a-zA-Z\\d\\s]{3,}/],\n errorMessage: 'Solo números, letras y espacios',\n },\n];\n\ninterface paginaConfirmacionProps {\n paginaConfirmacion: boolean;\n}\n\nconst ContentWrapper = styled.div`\n\n @media screen and (min-width: 960px) {\n display: flex;\n justify-content: ${(props) => (props.paginaConfirmacion ? 'flex-start' : 'space-between')};\n flex-wrap: wrap;\n padding-top: 0;\n }\n /* Eliminar flechas del input type number porque descuadra el layout un poco */\n /* Chrome, Safari, Edge, Opera */\n input::-webkit-outer-spin-button,\n input::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n /* Firefox */\n input[type='number'] {\n -moz-appearance: textfield;\n }\n`;\n\nconst MatriculaAndCountriesWrapper = styled.div`\n width: 100%;\n display: flex;\n height: max-content;\n @media all and (min-width: 560px) {\n width: 303px;\n }\n @media all and (min-width: 960px) {\n width: 320px;\n margin-right:${(props) => (props.paginaConfirmacion ? '88px' : '0px')};\n }\n`;\nconst MatriculaWrapper = styled.div`\n width: 100%;\n label {\n width: 100%;\n @media screen and (min-width: 960px) {\n width: 170px;\n }\n }\n`;\nconst CoutryWrapper = styled.div`\n margin-right: 24px;\n label {\n width: 109px;\n @media screen and (min-width: 560px) {\n width: 116px;\n }\n @media screen and (min-width: 960px) {\n width: 120px;\n }\n }\n`;\nconst InputErrorWrapper = styled.div`\n &.matricula-error-wrapper {\n p {\n max-width: 179px;\n @media all and (min-width: 560px) {\n max-width: 163px;\n }\n @media all and (min-width: 960px) {\n max-width: 176px;\n }\n }\n }\n`;\nconst AnoMatriculacionWrapper = styled.div<{ paginaConfirmacion: boolean }>`\n margin-top: ${(props) => (props.paginaConfirmacion ? '40px' : null)};\n @media all and (min-width: 960px) {\n margin-top: 0;\n }\n`;\n\ninterface inputWidthWrapperProps {\n noPaddingTop?: boolean;\n}\n\nconst InputWidthWrapper = styled.div`\n width: 100%;\n padding-top: ${(props) => (props.noPaddingTop ? null : '40px')};\n\n @media all and (max-height: 624px) {\n padding-top: ${(props) => (props.noPaddingTop ? null : '24px')};\n }\n @media all and (min-width: 560px) {\n width: 303px;\n }\n @media all and (min-width: 960px) {\n padding-top: 0;\n width: 320px;\n }\n`;\n\ninterface MatriculaProps {\n formData: CitaFormDataFields;\n paginaConfirmacion: boolean;\n noPaddingTop?: boolean;\n}\n\nconst MatriculaYModelo = (props: MatriculaProps) => {\n const { register, errors } = useFormContext();\n const { error, setError } = useOneFormContext();\n const [inputValueAno, setInputValueAno] = useState('');\n const [pristineMatricula, setPristineMatricula] = useState(true);\n const [pristineAno, setPristineAno] = useState(true);\n const [inputValueMatricula, setInputValueMatricula] = useState('');\n const [errorMatricula, setErrorMatricula] = useState(false);\n const [errorAno, setErrorAno] = useState(false);\n const [errorCountry, setErrorCountry] = useState(false);\n const [country, setCountry] = useState('ES');\n const [countryObject, setCountryObject] = useState(null);\n const regExpAno = /^(19|20)\\d{2}$/;\n const [regExCounty, setRegExCounty] = useState(null);\n const { formData, paginaConfirmacion, noPaddingTop } = props;\n\n useEffect(() => {\n if (formData.countryPlate) {\n setCountry(formData.countryPlate);\n const countryObject = arrCountries.find((c) => c.name === formData.countryPlate);\n setCountryObject(countryObject);\n setRegExCounty(countryObject.regex);\n } else {\n setCountry('ES');\n setCountryObject(arrCountries[0]);\n setRegExCounty(arrCountries[0].regex);\n }\n if (formData.matricula) {\n setInputValueMatricula(formData.matricula);\n setPristineMatricula(false);\n }\n if (formData.anoMatriculacion) {\n setInputValueAno(formData.anoMatriculacion);\n setPristineAno(false);\n }\n }, []);\n\n const validateMatricula = (input: string) => {\n const isValid = regExCounty.some((regEx) => regEx.test(input));\n\n if (isValid) {\n setErrorMatricula(false);\n return true;\n } else {\n setErrorMatricula(true);\n return false;\n }\n };\n\n const handleChangeCountry = (event: any) => {\n setCountry(event.currentTarget.value);\n const countryObject = arrCountries.find((c) => c.name === event.currentTarget.value);\n setCountryObject(countryObject);\n setRegExCounty(countryObject.regex);\n if (countryObject.name !== '') setErrorCountry(false);\n };\n\n const handleChangeAno = (e: any) => {\n setInputValueAno(e.target.value);\n setPristineAno(false);\n };\n\n const handleChangeMatricula = (e: any) => {\n setInputValueMatricula(e.target.value);\n setPristineMatricula(false);\n };\n\n useEffect(() => {\n if (inputValueAno.length < 4) {\n return;\n } else {\n if (!pristineAno && inputValueAno.match(regExpAno) === null) {\n setErrorAno(true);\n } else if (inputValueAno === '') {\n setPristineAno(true);\n setErrorAno(false);\n } else {\n setErrorAno(false);\n }\n }\n }, [inputValueAno, pristineAno]);\n\n useEffect(() => {\n if (error) {\n errorAno || pristineAno ? setErrorAno(true) : setErrorAno(false);\n errorMatricula || pristineMatricula ? setErrorMatricula(true) : setErrorMatricula(false);\n }\n }, [error]);\n\n useEffect(() => {\n if (!errorMatricula && !errorMatricula) setError(false);\n }, [errorMatricula, errorMatricula]);\n\n return (\n \n \n \n \n null}\n updateFields\n setOption={setCountry}\n isRequired={true}\n />\n \n \n validateMatricula(input),\n required: {\n value: true,\n message: 'Requerido',\n },\n maxLength: 100,\n })}\n isFloating\n onChange={(e) => handleChangeMatricula(e)}\n required\n />\n {errorMatricula && (\n \n {countryObject.errorMessage}\n \n )}\n \n \n \n \n handleChangeAno(e)}\n required\n />\n {errorAno && Ejemplo: 2010}\n \n \n {!paginaConfirmacion ? (\n \n \n \n ) : null}\n \n \n );\n};\n\nconst mapStateToProps = (state: OneFormState) => {\n return {\n formInfo: state.formInfo,\n formData: state.formData.fields,\n };\n};\n\nconst ConnectedComponent = connect(mapStateToProps)(MatriculaYModelo);\n\nexport { ConnectedComponent as MatriculaYModelo };\n","import React, { useState, useRef} from 'react';\nimport { useDispatch } from 'react-redux';\nimport { styled, Text, TextAppearance } from '@volkswagen-onehub/components-core';\nimport { useOneFormContext } from 'src/feature-app/OneForm';\nimport { useFormContext } from 'react-hook-form';\nimport { InputButton } from 'src/components/inputs/InputButton';\n\nconst CTAWrapper = styled.div`\n text-align: left;\n margin: -10px;\n margin-top: 32px;\n @media all and (max-height: 624px) {\n margin-top: 24px;\n }\n & > button {\n margin: 12px;\n }\n`;\n\ninterface CTAValues {\n value?: string | boolean;\n label: string;\n}\n\ninterface NoClienteProps {\n name: string;\n nextOnClick?: boolean;\n bodyCopy: string;\n}\n\nexport const NoCliente = (props: NoClienteProps) => {\n const dispatch = useDispatch();\n const { name, nextOnClick, bodyCopy } = props;\n\n const { register, setValue } = useFormContext();\n const { handleNextStep, closeLayer } = useOneFormContext();\n const [selectedValue, setSelectedValue] = useState(null);\n\n return (\n <>\n \n {bodyCopy} \n \n \n {\n if ('Claro' !== selectedValue) {\n setSelectedValue('Claro');\n setValue(name, true);\n\n if (nextOnClick) {\n handleNextStep(e);\n }\n } else {\n setSelectedValue(null);\n setValue(name, null);\n dispatch({ type: 'UPDATE_FIELDS', payload: { [name]: null } });\n }\n }}\n />\n {\n\n if ('Salir del formulario' !== selectedValue) {\n setSelectedValue('Salir del formulario');\n setValue(name,false);\n dispatch({ type: 'RESET_STATE' });\n closeLayer();\n\n } else {\n setSelectedValue(null);\n setValue(name, null);\n dispatch({ type: 'UPDATE_FIELDS', payload: { [name]: null } });\n }\n }}\n />\n \n \n );\n};\n","import React from 'react';\nimport {\n Text,\n Container,\n ContainerWrap,\n ContainerPadding,\n TextAppearance,\n CTA,\n ContainerGutter,\n Layout,\n Breakpoints\n} from '@volkswagen-onehub/components-core';\nimport { useTrackingManager } from 'src/feature-app/hooks/use-tracking-manager';\nimport { useOneFormContext } from 'src/feature-app';\n\ninterface IntroduccioStarsProps {\n bodyCopy?: string;\n label?: string;\n}\n\nexport const PantallaIntroduccionStars = (props:IntroduccioStarsProps) => {\n const { bodyCopy, label } = props;\n const { nextStep } = useOneFormContext();\n const trackingManager = useTrackingManager();\n\n return (\n \n \n \n {bodyCopy ? bodyCopy : 'Valora del 1 al 5 las siguientes experiencias con nosotros.'}\n \n {\n trackingManager.trackFormStepButtonClick({\n contentId: 'Siguiente',\n });\n e.preventDefault();\n nextStep();\n }}\n ariaLabel=\"aria label\"\n >\n {label ? label : 'Empezar'}\n \n \n \n );\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport { styled, Select } from '@volkswagen-onehub/components-core';\nimport { useSelector } from 'react-redux';\nimport { OneFormState } from 'src/types';\nimport { useDispatch } from 'react-redux';\nimport { useOneFormContext, useTrackingManager } from 'src/feature-app';\nimport { SelectExtendedList } from './CarlineSelect';\nimport { useFormContext } from 'react-hook-form';\n\ntype WrapperProps = {\n disabled?: boolean;\n themeColor?: string;\n};\n\nconst SelectWrapper = styled.div`\n\n & span::before {\n display: none;\n }\n svg {\n fill: ${(props) => (props.themeColor === 'main' ? '#001E50' : '#ffffff')};\n }\n\n label {\n color: ${(props) => (props.themeColor === 'main' ? '#001E50' : '#ffffff')};\n\n option {\n color: #001e50;\n padding-left: 12px;\n }\n }\n`;\nconst SelectOption = styled.option``;\n\ninterface SelectProps {\n options: Array;\n name: string;\n label: string;\n value?: any;\n required?: boolean;\n disabled?: boolean;\n error?: boolean;\n getDealers?: (provincia: string) => void;\n setFormValue?: (selValueIndex: number) => void;\n onClick?: (e?: any) => void;\n setOption?: React.Dispatch>;\n updateFields?: boolean;\n handleChange: any;\n isRequired: boolean;\n innerRef?: any;\n}\n\nexport const SelectExtended = React.forwardRef((props: SelectProps, ref: React.Ref) => {\n const [selItem, setSelItem] = useState(null);\n const [showOptions, setShowOptions] = useState(false);\n\n const [keyValuePair, setKeyValuePair] = useState();\n const { name, options, setOption, updateFields, value, handleChange, isRequired, label, innerRef } = props;\n const wrapperRef = useRef(null);\n const dispatch = useDispatch();\n const trackingManager = useTrackingManager();\n const { formInfo } = useSelector((state: OneFormState) => state);\n const { setValue } = useFormContext();\n\n const handleClickOutside = (e: any) => {\n if (!wrapperRef.current.contains(e.target)) {\n setShowOptions(false);\n }\n };\n\n const setItem = (option: any, index: number) => {\n if (!props.disabled) {\n if (typeof option !== 'object') {\n setSelItem(option);\n if (setOption) setOption(option);\n } else {\n const dealerName = option.props.children[0].props.children;\n setSelItem(dealerName);\n }\n if (props.setFormValue) props.setFormValue(index);\n setShowOptions(false);\n }\n };\n\n useEffect(() => {\n setSelItem(null);\n }, [props.options]);\n\n useEffect(() => {\n document.addEventListener('mousedown', handleClickOutside);\n // función que se llama cuando la componente se desmonta\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [wrapperRef.current]);\n\n useEffect(() => {\n updateFields\n ? dispatch({ type: 'UPDATE_FIELDS', payload: { [name]: keyValuePair ? keyValuePair : value } })\n : undefined;\n }, [keyValuePair, value]);\n\n useEffect(() => {\n if (value) {\n setTimeout(() => {\n setSelItem(value);\n }, 0);\n }\n }, [value]);\n\n return (\n {\n trackingManager.trackFormFieldClick(\n {\n contentId: label,\n },\n {\n FormFieldName: name,\n }\n );\n props.onClick();\n }}\n disabled={props.disabled}\n ref={wrapperRef}\n themeColor={formInfo.formTheme}\n >\n {\n event.preventDefault();\n handleChange(event);\n }}\n required={isRequired}\n autoFocus={false}\n ref={innerRef}\n >\n {options.map((option: any, index: number) => {\n if (typeof option === 'string') {\n return (\n {\n e.preventDefault();\n setItem(option, index);\n }}\n key={index}\n value={option}\n >\n {option}\n \n );\n } else {\n return (\n {\n e.preventDefault();\n setItem(option.name, index);\n setKeyValuePair(option.code);\n }}\n key={index}\n value={option.name}\n >\n {option.name}\n \n );\n }\n })}\n \n \n );\n});\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { fetchTreatment } from 'src/bff';\nimport { SelectExtendedList } from './CarlineSelect';\nimport { SelectExtended } from './SelectExtended';\nimport { TOKEN_LEADS_COMERCIALES, TOKEN_LEADS_TURISMOS } from 'src/globals';\nimport { useIsComerciales } from 'src/feature-app/hooks';\n\nexport const Trato = () => {\n const [options, setOptions] = useState([]);\n const dispatch = useDispatch();\n const isComerciales = useIsComerciales();\n\n useEffect(() => {\n const getTreatment = async () => {\n const response = await fetchTreatment(isComerciales ? TOKEN_LEADS_COMERCIALES : TOKEN_LEADS_TURISMOS);\n const options: SelectExtendedList[] = response.content.map((att, indx) => ({ name: att.attributes[1].value, code: att.attributes[0].value, key: String(indx) }));\n setOptions(options);\n dispatch({ type: 'UPDATE_FIELDS', payload: { trato: options[0].name } });\n };\n getTreatment();\n }, []);\n\n const handleChange = (event: React.SyntheticEvent) => {\n dispatch({ type: 'UPDATE_FIELDS', payload: { trato: event.currentTarget.value } });\n };\n\n return (\n { }} />\n );\n};\n","import { styled } from '@volkswagen-onehub/components-core';\nimport React from 'react';\nimport { Apellido, Nombre, PaddingWrapper, LabelInputWidthWrapper } from '.';\nimport { Trato } from './Trato';\nimport { useIsComerciales } from 'src/feature-app/hooks';\n\ninterface pantallaNombreApellidoProps {\n notALayer?: boolean;\n isComerciales?: boolean;\n}\n\nconst ContentWrapper = styled.div`\n gap: 44px;\n display: flex;\n flex-direction: column;\n width: 100%;\n @media screen and (min-width: 960px) {\n display: flex;\n justify-content: space-between;\n flex-direction: row;\n flex-wrap: wrap;\n margin-top: 0;\n }\n`;\n\nexport const PantallaNombreApellido = ({ notALayer }: pantallaNombreApellidoProps) => {\n const isComerciales = useIsComerciales();\n\n return (\n \n \n {isComerciales ? : null}\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { Checkbox, CTA, styled, Text, TextAppearance } from '@volkswagen-onehub/components-core';\nimport React, { useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useIsComerciales } from 'src/feature-app/hooks';\nimport { InputError } from 'src/components';\n\ninterface politicaPrivacidadProps {\n color?: string;\n}\n\nconst WhiteLinkWrapper = styled.span`\n a {\n color: ${(props) => (props.color ? props.color : '#ffffff')};\n font-weight: bold;\n }\n`;\n\nexport const PoliticaPrivacidad = (props: politicaPrivacidadProps) => {\n const { register, errors, clearError } = useFormContext();\n const [checked, setChecked] = useState(false);\n const isComerciales = useIsComerciales();\n return (\n
\n
\n {\n if (!checked) {\n clearError('politicaPrivacidad'); \n }\n setChecked(!checked);\n }}\n ref={register({\n required: { value: true, message: 'Requerido' },\n validate: (value) => {\n return value === 'PERMITIDO';\n },\n })}\n value={checked ? 'PERMITIDO' : 'NO PERMITIDO'}\n />\n\n \n Acepto la{' '}\n \n \n política de privacidad.\n \n \n \n
\n {errors && errors.politicaPrivacidad ? (\n Necesitamos esta información para seguir\n ) : null}\n
\n );\n};\n","import { styled } from '@volkswagen-onehub/components-core';\nimport React, { useEffect, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { fetchProvince } from 'src/bff';\nimport { useOneFormContext } from 'src/feature-app/OneForm';\nimport { useIsComerciales } from 'src/feature-app/hooks';\nimport { TOKEN_LEADS_COMERCIALES, TOKEN_LEADS_TURISMOS } from 'src/globals';\nimport { OneFormState } from 'src/types';\nimport { SelectExtended, GeneralInputWidthWrapper } from '.';\nimport { SelectExtendedList } from './CarlineSelect';\nimport { InputError, TextInputExtended } from './inputs';\nexport interface ProvinciaProps {\n notALayer?: boolean;\n noPaddingTop?: boolean;\n}\n\nexport function Provincia(props: ProvinciaProps) {\n const { notALayer, noPaddingTop } = props;\n const { register, errors } = useFormContext();\n const [errorProvincia, setErrorProvincia] = useState(false);\n const { formData, dealersInfo, formInfo } = useSelector((state: OneFormState) => state);\n const { fields } = formData;\n\n const { error } = useOneFormContext();\n const [list, setList] = useState(null);\n const dispatch = useDispatch();\n const [provincia, setProvincia] = useState(null);\n const isComerciales = useIsComerciales();\n\n const formatProvinciaExtendedList = (name: string, code: string): SelectExtendedList => {\n return {\n code,\n name,\n key: name,\n };\n };\n\n const updateProvinceValues = (provinceCode: string, provinceName: string) => {\n dispatch({ type: 'UPDATE_FIELDS', payload: { provinceCode, provinceName } });\n };\n\n const handleUpdateList = (list: SelectExtendedList[]) => {\n setList(list);\n\n if (fields.provinceName) {\n setProvincia(fields.provinceName);\n } else {\n setProvincia(list[0].name);\n updateProvinceValues(list[0].code, list[0].name);\n }\n };\n\n useEffect(() => {\n const requestProvincias = async () => {\n const provincias = await fetchProvince(isComerciales ? TOKEN_LEADS_COMERCIALES : TOKEN_LEADS_TURISMOS);\n const provinciasFormatted = provincias.content.map((att) => {\n const name = att.attributes[0].value;\n const code = att.attributes[1].value;\n return formatProvinciaExtendedList(name, code);\n });\n handleUpdateList(provinciasFormatted);\n };\n\n requestProvincias();\n }, []);\n\n useEffect(() => {\n if (error) {\n !provincia ? setErrorProvincia(true) : setErrorProvincia(false);\n }\n }, [error]);\n\n useEffect(() => {\n if (errors.provincia) {\n setErrorProvincia(true);\n } else {\n setErrorProvincia(false);\n }\n }, [errors]);\n\n function handleChangeProvincia(event: any) {\n const newProvinciaValue = event.currentTarget.value;\n\n setProvincia(newProvinciaValue);\n const newProvincia = list.find((province) => province.name === newProvinciaValue);\n if (newProvincia) {\n updateProvinceValues(newProvincia.code, newProvincia.name);\n }\n if (newProvinciaValue !== '') {\n setErrorProvincia(false);\n }\n }\n\n return (\n \n {list ? (\n <>\n { }}\n updateFields\n setOption={setProvincia}\n isRequired={true}\n />\n \n ) : (\n \n )}\n {errorProvincia ? Este campo es obligatorio : null}\n {}\n \n );\n}\n","import React, {useState, useEffect} from 'react';\nimport { useDispatch } from 'react-redux';\nimport { \n styled, \n Text, \n TextAppearance,\n TextAlignment, \n BreakpointWrapper, \n Breakpoints,\n Container,\n ContainerPadding,\n CTA,\n ContainerHorizontalAlignment,\n Layout\n} from '@volkswagen-onehub/components-core';\nimport { useOneFormContext } from 'src/feature-app';\nimport { useTrackingManager } from 'src/feature-app/hooks/use-tracking-manager';\n\nconst CustomInputRange = styled.input`\n width: 100%;\n height: 30px;\n background: transparent;\n font-size: 1em;\n cursor: pointer; \n -webkit-appearance: none;\n\n &::-webkit-slider-runnable-track, &::-webkit-slider-thumb {\n -webkit-appearance: none;\n };\n &::-webkit-slider-runnable-track{\n position: relative;\n width: 100%;\n height: 1px;\n background: transparent; \n };\n &::-moz-range-track {\n width: 100%;\n height: 1px;\n background: transparent;\n };\n &::-ms-track {\n border: none;\n width: 100%;\n height: 1px;\n background: transparent;\n color: transparent;\n };\n &::-ms-fill-lower {\n display: none;\n };\n &::-webkit-slider-thumb {\n box-sizing: border-box;\n width: 24px; \n height: 24px;\n border-radius: 50%;\n background: #001e50;\n transform: translateY(-12px);\n };\n &::-moz-range-thumb {\n box-sizing: border-box;\n width: 24px; \n height: 24px;\n border-radius: 50%;\n background: #001e50;\n transform: translateY(-12px);\n };\n &::-ms-thumb {\n box-sizing: border-box;\n width: 24px; \n height: 24px;\n border-radius: 50%;\n background: #001e50;\n transform: translateY(-12px);\n };\n &::-webkit-slider-runnable-track:before, &::-webkit-slider-runnable-track:after, & /deep/ #track:before, &/deep/ #track:after {\n position: absolute;\n bottom: 100%;\n color: #2c2c2b;\n font: 700 0.875em / 2 arial, sans-serif;\n background: #001e50;\n };\n &::-webkit-slider-runnable-track:before, & /deep/ #track:before {\n left: 0.8125em;\n word-spacing: 1.4375em;\n content: '1 2 3 4 5 6 7 8 9';\n };\n &::-webkit-slider-runnable-track:after, & /deep/ #track:after {\n right: 0.625em;\n word-spacing: 0.875em;\n content: '10 11 12 13 14 15 16';\n };\n &:focus{\n outline: none;\n }\n\n`;\nconst Mark = styled.div`\n height: 9px;\n width: 1px;\n background-color: #001e50;\n`;\nconst MarksPosition = styled.div`\n display: flex;\n display:-webkit-flex;\n width: 100%;\n justify-content: space-between;\n align-items: center;\n margin-bottom: -19.5px;\n z-index: 3;\n margin-left: 7px;\n @media screen and (min-width: 960px) {\n margin-left: 0;\n width: 97%;\n }\n`;\nconst SliderPosition = styled.div`\n width: 100%;\n display: flex;\n justify-content: center;\n margin-left: 7px;\n @media screen and (min-width: 960px) {\n margin-left: 4px;\n }\n`;\nconst SlideLabelsPosition = styled.div`\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\nconst SliderAndMarksPosition = styled.div`\n width: 96%;\n padding-right: 20px;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n @media all and (min-width: 960px) {\n width: 99%;\n padding-right: 0px;\n }\n`;\ninterface CustomSliderProps {\n mobileLabels: Array;\n desktopLabels: Array;\n name: string;\n}\n\nexport const SlideEncuestas = (props: CustomSliderProps ) => {\n\n const {name, mobileLabels, desktopLabels} = props;\n const { handleNextStep } = useOneFormContext();\n const trackingManager = useTrackingManager();\n const dispatch = useDispatch();\n\n const numberOfSteps = 5;\n const sliderMarks= [];\n const [value, setValue] = useState(3);\n\n\n const handleInputChange = (event: any) => {\n setValue(event.target.value);\n };\n\n useEffect(() => {\n dispatch({ type: 'UPDATE_FIELDS', payload: { [name]: `${value}` } });\n }, [value]);\n\n for(let i = 0; i < 5; i++) {\n sliderMarks.push();\n }\n \n document.documentElement.classList.add('js');\n \n return (\n
\n \n
\n \n {sliderMarks ? sliderMarks : null}\n \n \n handleInputChange(e)}\n value={value}\n />\n \n \n \n \n {mobileLabels[0]}\n {mobileLabels[1]}\n \n \n {desktopLabels[0]}\n {desktopLabels[1]}\n {desktopLabels[2]}\n {desktopLabels[3]}\n {desktopLabels[4]}\n \n \n \n\n \n {\n e.preventDefault();\n trackingManager.trackFormButtonClick({\n contentId: 'Sin respuesta',\n });\n setValue(3);\n handleNextStep(e);\n }}\n ariaLabel=\"aria label\"\n >\n Sin respuesta\n \n \n
\n );\n};\n\n","import React, { useState, useEffect, useRef } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport Autosuggest from 'react-autosuggest';\nimport { MagnifierLabel, CloseButton, SuggestionWrapper, StyledWrapper } from 'src/feature-app/NewMap';\nimport { Close, Magnifier } from 'src/icons-core-imports';\nimport { Text, TextAppearance, TextColor, ThemeProvider, styled } from '@volkswagen-onehub/components-core';\nimport { useOneFormContext } from 'src/feature-app/OneForm';\nimport { getVehiculosModelo } from 'src/bff';\nimport { modelCar, OneFormState } from 'src/types';\nimport { useFormContext } from 'react-hook-form';\nimport { useDropdowPosition } from 'src/feature-app/hooks';\n\ninterface SuggestModeloProps {\n notALayer: boolean;\n marginTop?: string;\n fieldsName: string;\n required: boolean;\n}\n\nconst FechaCompraWrapper = styled.div`\n margin-top: ${(props) => props.marginTop ? props.marginTop : '44px'};\n width: var(--size-grid020);\n position:relative;\n overflow: visible ;\n @media all and (max-height: 624px) {\n margin-top: ${(props) => (props.marginTop ? props.marginTop : '24px')};\n }\n\n @media all and (min-width: 560px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid013)' : '303px')};\n }\n @media all and (min-width: 960px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid008)' : '320px')};\n }\n @media all and (min-width: 1280px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid006)' : '320px')};\n }\n @media all and (min-width: 1920px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid005)' : '320px')};\n }\n @media all and (min-width: 2560px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid004)' : '320px')};\n }\n`;\n\nconst escapeRegexCharacters = (str: string) => {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n};\n// Teach Autosuggest how to calculate suggestions for any given input value.\nconst getSuggestions = (value: string, list: modelCar[]) => {\n if (value.length < 2) return [];\n const escapedValue = escapeRegexCharacters(value.trim());\n\n if (escapedValue === '') {\n return [];\n }\n\n const regex = new RegExp(escapedValue, 'i');\n\n return list.filter((car: modelCar) => regex.test(car.title));\n};\n\n// When suggestion is clicked, Autosuggest needs to populate the input\n// based on the clicked suggestion. Teach Autosuggest how to calculate the\n// input value for every given suggestion.\nconst getSuggestionValue = (suggestion: modelCar) => suggestion.title;\n\n// Use your imagination to render suggestions.\nconst renderSuggestion = (suggestion: modelCar) => (\n \n \n {suggestion.title}\n \n \n);\n\nexport const SuggestMarca = (props: SuggestModeloProps) => {\n const { formData } = useSelector((state: OneFormState) => state);\n const { notALayer, marginTop, fieldsName, required } = props;\n const dispatch = useDispatch();\n const [suggestions, setSuggestions] = useState([]);\n const [list, setList] = useState(null);\n const { register, clearError } = useFormContext();\n const [value, setValue] = useState('');\n const [selectedValue, setSelectedValue] = useState(false); // Controla que una vez seleccionado un valor en el input, no siga buscando en google maps.\n const suggestRef = useRef(null);\n const { formInfo } = useSelector((state: OneFormState) => state);\n const { formTheme } = formInfo;\n const [suggestion, setSuggestion] = useState(null);\n const [inputFocus, setInputFocus] = useState(false);\n\n const { setDisableIntroNextStep, setError } = useOneFormContext();\n\n useEffect(() => {\n getVehiculosModelo().then((modelos) => {\n setList(modelos);\n if (formData.fields[fieldsName]) {\n const modeloSuggestion = modelos.find((model) => model.title === formData.fields[fieldsName]);\n setValue(formData.fields[fieldsName]);\n setSuggestion(modeloSuggestion);\n }\n });\n }, []);\n\n const onChange = (e: any, { newValue }: { newValue: string }) => {\n if (setSelectedValue) {\n setSelectedValue(false);\n }\n if (newValue === '') {\n setSuggestion(null);\n setSelectedValue(true);\n }\n setError(false);\n setValue(newValue);\n };\n \n //desplegar el dropdown para arriba o para abajo según la posicinón del input en el window\n const { goUp, getAndUpdateState } = useDropdowPosition('.react-autosuggest__container');\n\n const onClick = () => {\n getAndUpdateState();\n };\n\n const onSuggestionsFetchRequested = async ({ value }: { value: string }) => {\n const suggestions = getSuggestions(value, list);\n setSuggestions(suggestions);\n };\n\n const onSuggestionsClearRequested = () => {\n setSuggestions([]);\n };\n\n const inputPlaceholder = 'Escribe aquí la Marca';\n const inputProps = {\n placeholder: inputPlaceholder,\n value,\n onChange,\n onClick,\n onBlur: () => { setDisableIntroNextStep(false); },\n disabled: false,\n };\n\n \n \n\n return (\n \n {\n {/*setTimeout(() => {\n suggestRef.current.scrollIntoView({ block: 'center', behavior: 'smooth' });\n }, 400);*/}\n setInputFocus(true);\n }}\n onBlur={() => setInputFocus(false)}\n isLocating={false}\n isFiltrosSuggest={false}\n isModeloSuggest={true}\n goUp={goUp}\n >\n \n \n \n {\n setSuggestion(suggestion);\n dispatch({ type: 'UPDATE_FIELDS', payload: { [fieldsName]: suggestion.name } });\n setSelectedValue(true);\n }}\n\n inputProps={inputProps}\n />\n {value !== '' && (\n \n {\n e.preventDefault(); \n setValue('');\n // setFormValue(fieldsName, '')\n setSuggestion(null);\n }}\n >\n \n \n \n )}\n \n \n \n );\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport Autosuggest from 'react-autosuggest';\nimport { MagnifierLabel, CloseButton, SuggestionWrapper, StyledWrapper } from 'src/feature-app/NewMap';\nimport { Close, Magnifier } from 'src/icons-core-imports';\nimport { Text, TextAppearance, TextColor, ThemeProvider, styled, CTA } from '@volkswagen-onehub/components-core';\nimport { useOneFormContext } from 'src/feature-app/OneForm';\nimport { getVehiculosModelo } from 'src/bff';\nimport { modelCar, OneFormState } from 'src/types';\nimport { useFormContext } from 'react-hook-form';\nimport { useDropdowPosition } from 'src/feature-app/hooks';\n\ninterface SuggestModeloProps {\n notALayer: boolean;\n marginTop?: string;\n fieldsName: string;\n required: boolean;\n outputsSeparados?: boolean;\n filterVW?:boolean;\n nextOnClick?: boolean;\n alternatCTA?: boolean;\n}\n\nconst FechaCompraWrapper = styled.div`\n margin-top: ${(props) => props.marginTop ? props.marginTop : '44px'};\n width: var(--size-grid020);\n position:relative;\n overflow: visible ;\n margin-left: ${(props) => (props.notALayer ? null : 'var(--size-grid002)')};\n\n @media all and (max-height: 624px) {\n margin-top: ${(props) => (props.marginTop ? props.marginTop : '24px')};\n }\n\n @media all and (min-width: 560px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid013)' : '303px')};\n }\n @media all and (min-width: 960px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid008)' : '320px')};\n margin-left: ${(props) => (props.notALayer ? null : '122px')};\n }\n @media all and (min-width: 1280px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid006)' : '320px')};\n }\n @media all and (min-width: 1920px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid005)' : '320px')};\n }\n @media all and (min-width: 2560px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid004)' : '320px')};\n }\n`;\n\nconst ModeloInteresWrapper = styled.div`\n display: ${(props)=> props.alternatCTA ? 'flex' : null};\n flex-wrap: ${(props)=> props.alternatCTA ? 'wrap' : null};\n\n @media all and (min-width: 560px) {\n gap: ${(props)=> props.alternatCTA ? '44px' : null};\n }\n`;\n\nconst ButtonWidth = styled.div`\n margin-top: 44px;\n\n button {\n width: 81px;\n }\n`;\n\nconst escapeRegexCharacters = (str: string) => {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n};\n// Teach Autosuggest how to calculate suggestions for any given input value.\nconst getSuggestions = (value: string, list: modelCar[]) => {\n if (value.length < 2) return [];\n const escapedValue = escapeRegexCharacters(value.trim());\n\n if (escapedValue === '') {\n return [];\n }\n\n const regex = new RegExp(escapedValue, 'i');\n\n return list.filter((car: modelCar) => regex.test(car.title));\n};\n\n// When suggestion is clicked, Autosuggest needs to populate the input\n// based on the clicked suggestion. Teach Autosuggest how to calculate the\n// input value for every given suggestion.\nconst getSuggestionValue = (suggestion: modelCar) => suggestion.title;\n\n// Use your imagination to render suggestions.\nconst renderSuggestion = (suggestion: modelCar) => (\n \n \n {suggestion.title}\n \n \n);\n\nexport const SuggestModelo = (props: SuggestModeloProps) => {\n const { notALayer, marginTop, fieldsName, required, outputsSeparados, filterVW, nextOnClick, alternatCTA } = props;\n const dispatch = useDispatch();\n const [suggestions, setSuggestions] = useState([]);\n const [list, setList] = useState(null);\n const { register, clearError } = useFormContext();\n const [value, setValue] = useState('');\n const [selectedValue, setSelectedValue] = useState(false); // Controla que una vez seleccionado un valor en el input, no siga buscando en google maps.\n const suggestRef = useRef(null);\n const { formInfo, formData } = useSelector((state: OneFormState) => state);\n const { formTheme } = formInfo;\n const [suggestion, setSuggestion] = useState(null);\n const [inputFocus, setInputFocus] = useState(false);\n const [ isNotAnswered, setIsNotAnswered ] = useState(true);\n const [ buttonEmphasis, setButtonEmphasis ] = useState('secondary');\n const { setIsValueSelected } = useOneFormContext();\n\n const { setDisableIntroNextStep, setError, handleNextStep } = useOneFormContext();\n\n useEffect(() => {\n\n getVehiculosModelo().then((modelos) => {\n let modelosToSet = modelos;\n if (filterVW) {\n modelosToSet = modelos.filter(modelo => modelo.brand !== 'Volkswagen');\n }\n setList(modelosToSet);\n if (formData.fields[fieldsName]) {\n if(formData.fields.brand === 'false' && formData.fields.model === 'false') {\n setButtonEmphasis('primary');\n setSuggestion(null);\n setValue('');\n setIsNotAnswered(false);\n } else {\n const modeloSuggestion = modelosToSet.find((model) => model.title === formData.fields[fieldsName]);\n setValue(formData.fields[fieldsName]);\n setSuggestion(modeloSuggestion);\n }\n }\n });\n }, []);\n\n\n const onChange = (e: any, { newValue }: { newValue: string }) => {\n if (setSelectedValue) {\n setSelectedValue(false);\n }\n if (newValue === '') {\n setSuggestion(null);\n setSelectedValue(true);\n }\n setError(false);\n setValue(newValue);\n };\n \n //desplegar el dropdown para arriba o para abajo según la posicinón del input en el window\n const { goUp, getAndUpdateState } = useDropdowPosition('.react-autosuggest__container');\n\n const onClick = () => {\n getAndUpdateState();\n };\n\n const onSuggestionsFetchRequested = async ({ value }: { value: string }) => {\n const suggestions = getSuggestions(value, list);\n setSuggestions(suggestions);\n };\n\n const onSuggestionsClearRequested = () => {\n setSuggestions([]);\n };\n\n const inputPlaceholder = 'Escribe aquí el modelo';\n const inputProps = {\n placeholder: inputPlaceholder,\n value,\n onChange,\n onClick,\n onBlur: () => { setDisableIntroNextStep(false); },\n disabled: false,\n };\n\n const handleDispatch = (outputsSeparados: boolean, suggestion: modelCar)=> {\n if(outputsSeparados) {\n dispatch({ type: 'UPDATE_FIELDS', payload: { 'brand': suggestion.brand } });\n dispatch({ type: 'UPDATE_FIELDS', payload: { 'model': suggestion.model } });\n } else {\n dispatch({ type: 'UPDATE_FIELDS', payload: { [fieldsName]: suggestion.name } });\n }\n };\n \n \n\n return (\n \n \n {\n {/*setTimeout(() => {\n suggestRef.current.scrollIntoView({ block: 'center', behavior: 'smooth' });\n }, 400);*/}\n setInputFocus(true);\n }}\n onBlur={() => setInputFocus(false)}\n isLocating={false}\n isFiltrosSuggest={false}\n isModeloSuggest={true}\n goUp={goUp}\n notALayer={notALayer}\n >\n \n \n \n {\n setSuggestion(suggestion);\n handleDispatch(outputsSeparados, suggestion);\n setSelectedValue(true);\n if(nextOnClick) {\n setTimeout(() => {\n handleNextStep();\n }, 0);\n }\n }}\n\n inputProps={inputProps}\n />\n {value !== '' && (\n \n {\n e.preventDefault(); \n setValue('');\n // setFormValue(fieldsName, '')\n setSuggestion(null);\n }}\n >\n \n \n \n )}\n \n \n \n \n { alternatCTA ? (\n \n {\n e.preventDefault();\n setSuggestion({brand:'false', id: null, name: 'false', model: 'false', title: 'false'});\n handleDispatch(outputsSeparados, {brand:'false', id: null, name: 'false', model: 'false', title: 'Escribe aquí el modelo'});\n setSelectedValue(true);\n if(nextOnClick) {\n setTimeout(() => {\n handleNextStep();\n }, 0);\n }\n }}\n >No\n \n ) : null}\n \n );\n};\n","import { styled } from '@volkswagen-onehub/components-core';\nimport { keyframes } from 'styled-components';\n\nconst lineKeyframe = keyframes`\n from {\n transform: translateY(-40%);\n }\n to {\n transform: translateY(100%);\n }\n`;\n\nexport const VerticalLine = styled.div`\n height: 35px;\n width: 2px;\n background-color: #FFFFFF;\n animation: ${lineKeyframe} 1.75s infinite;\n`;\n","import React from 'react';\nimport { MultipleCTASelection } from 'src/components';\nimport {\n Container,\n ContainerGutter,\n ContainerWrap,\n TextAppearance,\n Text,\n TextAlignment\n} from '@volkswagen-onehub/components-core';\nimport { CTAsSiNo } from 'src/feature-app/InputsValues/CTAsObjects';\n\nexport const YaTienesVolkswagen = () => {\n return (\n \n \n \n 1{' '}Recuerda que para participar en el sorteo debes formar parte de la familia Volkswagen. \n \n \n );\n};\n","import {\n styled\n} from '@volkswagen-onehub/components-core';\n\ninterface PaddingWrapperProps {\n paginaConfirmacion?: boolean;\n}\n\nexport const PaddingWrapper = styled.div`\n padding-top: ${(props) => (props.paginaConfirmacion ? '0px' : '44px')};\n @media all and (max-height: 624px) {\n padding-top: ${(props) => (props.paginaConfirmacion ? '0px' : '24px')};\n }\n`;\n","import {\n styled\n} from '@volkswagen-onehub/components-core';\n\ninterface IputWidthProps {\n notALayer?: boolean;\n}\n\nexport const InputWidthWrapper = styled.div`\n width: 100%;\n @media all and (min-width: 560px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid013)' : '303px')};\n }\n @media all and (min-width: 960px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid008)' : '320px')};\n }\n @media all and (min-width: 1280px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid006)' : '320px')};\n }\n @media all and (min-width: 1920px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid005)' : '320px')};\n }\n @media all and (min-width: 2560px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid004)' : '320px')};\n }\n`;\n\nexport const LabelInputWidthWrapper = styled.div`\n label {\n width: 100%;\n @media all and (min-width: 560px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid013)' : '303px')};\n }\n @media all and (min-width: 960px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid008)' : '320px')};\n }\n @media all and (min-width: 1280px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid006)' : '320px')};\n }\n @media all and (min-width: 1920px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid005)' : '320px')};\n }\n @media all and (min-width: 2560px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid004)' : '320px')};\n }\n }\n`;\n","import { styled } from '@volkswagen-onehub/components-core';\n\ninterface WithProps {\n paginaConfirmacion?: boolean;\n notALayer?: boolean;\n noPaddingTop?: boolean;\n}\n\nexport const GeneralInputWidthWrapper = styled.div`\n width: 100%;\n padding-top: ${(props) => (props.paginaConfirmacion ? '0px' : props.noPaddingTop ? '0' : '44px')};\n @media all and (max-height: 624px) {\n padding-top: ${(props) => (props.paginaConfirmacion ? '0px' : props.noPaddingTop ? '0' : '24px')};\n }\n @media all and (min-width: 560px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid013)' : '303px')};\n }\n @media all and (min-width: 960px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid008)' : '320px')};\n }\n @media all and (min-width: 1280px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid006)' : '320px')};\n }\n @media all and (min-width: 1920px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid005)' : '320px')};\n }\n @media all and (min-width: 2560px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid004)' : '320px')};\n }\n`;\n","import { styled } from '@volkswagen-onehub/components-core';\n\nexport const ContactInfoWrapper = styled.div`\n width: 100%;\n margin-bottom: 2px;\n .email-input-wrapper {\n padding-top: 24px;\n }\n @media all and (min-width: 960px) {\n display: flex;\n justify-content: space-between;\n .email-input-wrapper {\n padding-top: 44px;\n }\n }\n @media all and (max-height: 624px) {\n .email-input-wrapper {\n padding-top: 24px;\n }\n }\n`; \n","import { styled } from '@volkswagen-onehub/components-core';\n\nexport const GeneralConfirmacionLayerWrapper = styled.div`\n padding: 72px 0 44px;\n @media all and (min-width: 960px) {\n padding: 86px 0 0;\n }\n`;\n","import { CarlineBase } from 'src/types';\n/**\n * En el caso de CEM Venta tenemos que eliminar el \"Nuevo\" del título, ordenar alfabéticamente los carlines y eliminar los duplicados en caso de que haya\n * dos generaciones de carlines en el selector conviviendo como \"Nuevo Arteon\" y \"Arteon\".\n * @param carlines\n * @returns\n */\n export const formatCEMVenta = (carlines: CarlineBase[]) => {\n return carlines\n .map((carline) => {\n return {\n code: String(carline.code),\n name: carline.title,\n key: carline.title,\n };\n })\n .sort((a, b) => a.name.localeCompare(b.name, undefined, { sensitivity: 'base' }))\n .filter((carline, index, self) => index === self.findIndex((t) => t.name === carline.name));\n };\n","import { CarlineBase } from 'src/types';\nimport { SelectExtendedList } from 'src/components/CarlineSelect';\n\n/**\n * Devuelve el carline con el formato necesario para usar el select.\n * @param carline\n * @returns\n */\n export const formatCarlineSelectExtendedList = (carline: CarlineBase): SelectExtendedList => {\n if (!carline) {\n return null;\n }\n return {\n code: String(carline.code),\n name: `${carline.nuevo ? 'Nuevo ' : ''}${carline.title}`,\n key: carline.title,\n };\n };\n","import { CarlineBase } from 'src/types';\nimport { formatAlphabetical, formatCarlineSelectExtendedList } from '.';\n\n/**\n * Devuelve los carlines con el formato necesario\n * @param carlines\n * @returns\n */\n export const formatAllCarlines = (carlines: CarlineBase[], alphabetical?: boolean) => {\n if (alphabetical) {\n return formatAlphabetical(carlines);\n } else {\n return carlines.map((carline) => formatCarlineSelectExtendedList(carline)).filter((c) => c !== null);\n }\n};\n","import { CarlineBase, CarlinesWithSalesgroups, FormularioFlagType, OneFormState, Salesgroup } from 'src/types';\nimport { formatCarlineSelectExtendedList } from '.';\n\nexport const formatAlphabetical = (carlines: CarlineBase[]) => {\n return carlines\n .map((carline) => formatCarlineSelectExtendedList(carline))\n .map((carline) => {\n if (carline.name.includes('Nuevo')) {\n // Pasamos de Nuevo T-Roc a T-Roc ZNuevo para que el \"Nuevo\" no interfiera al ordenar y la parte de Nuevo no tenga preferencia sobre otras.\n carline.name = carline.name.replace('Nuevo ', '').concat(' ZNuevo');\n return carline;\n }\n return carline;\n })\n .filter((c) => c !== null)\n .sort((a, b) => a.name.localeCompare(b.name, undefined, { sensitivity: 'base' }))\n .map((carline) => {\n if (carline.name.includes('ZNuevo')) {\n // Hacemos la operación contraria para devolver el orden correcto.\n carline.name = `Nuevo ${carline.name.replace(' ZNuevo', '')}`;\n return carline;\n }\n return carline;\n });\n};\n","import { formatSalesgroupsSelectExtendedList } from '.';\nimport { Salesgroup } from 'src/types';\n\nexport const formatAllSalesgroups = (carlines: Salesgroup[]) =>\ncarlines.map((carline) => formatSalesgroupsSelectExtendedList(carline)).filter((c) => c !== null);\n","import { Salesgroup } from 'src/types';\nimport { SelectExtendedList } from 'src/components/CarlineSelect';\n/**\n * Devuelve los salesgroups con el formato necesario para usar el select.\n * @param carline\n * @returns\n */\n export const formatSalesgroupsSelectExtendedList = (carline: Salesgroup): SelectExtendedList => {\n if (!carline) {\n return null;\n }\n return {\n code: String(carline.code),\n name: carline.name,\n key: carline.name,\n };\n};\n","import { CarlineBase, CarlinesWithSalesgroups, FormularioFlagType } from 'src/types';\n/**\n * Devuelve únicamente los carlines con el flag del formulario correspondiente.\n * @param carlines\n * @param formularioFlag\n * @returns\n */\n export const filterCarlineFlag = (carlines: CarlineBase[] | CarlinesWithSalesgroups[], formularioFlag: FormularioFlagType) => {\n if (!formularioFlag) {\n return carlines;\n }\n\n return carlines\n .map((carline: CarlineBase | CarlinesWithSalesgroups) => {\n if (carline.formularios[formularioFlag] === 1) {\n return carline;\n }\n })\n .filter((carline) => carline !== undefined);\n};\n","import { CarlinesWithSalesgroups } from 'src/types';\n\nexport const getSalesgroupsFromCarlines = (carlines: CarlinesWithSalesgroups[]) => {\n return carlines\n .map((carline) => carline.salesGroups)\n .filter((c) => c !== null)\n .flat();\n};\n","import { CarlinesWithSalesgroups } from 'src/types';\nimport { getSalesgroupsFromCarlines, formatAllSalesgroups } from '.';\n/**\n * Se agrupan todas las operaciones que se realizan a los carlines con salesgroups (filtrar por flag, obtener solo los salesgroups y formatearlos) para no hacerlas dos veces.\n * @param carlines\n * @param formularioFlag\n * @returns\n */\nexport const getFormattedSalesgroups = (carlines: CarlinesWithSalesgroups[]) => {\n const salesgroups = getSalesgroupsFromCarlines(carlines);\n return formatAllSalesgroups(salesgroups);\n};\n","import { CarlineBase } from 'src/types';\n/**\n * Devuelve únicamente los carlines preseleccionados desde el cms en una array con carlineCodes tipo [30155, 30205].\n * @param carlines\n * @param faContentCarlines\n * @returns\n */\nexport const filterPreselectedFaContent = (carlines: CarlineBase[], faContentCarlines: number[]) => {\n return faContentCarlines\n .map((carlineCode) => carlines.find((carline) => carline.code == carlineCode))\n .filter((c) => c !== undefined);\n};\n","import { CarlineBase } from 'src/types';\nimport { getSalesgroupsFromCarlines } from '.';\n/**\n * Devuelve únicamente los carlines preseleccionados desde el cms en una array con carlineCodes tipo [30155, 30205].\n * @param carlines\n * @param faContentCarlines\n * @returns\n */\nexport const filterPreselectedFaContentSalesgroups = (carlines: CarlineBase[], faContentSalesgroups: number[]) => {\n const salesgroups = getSalesgroupsFromCarlines(carlines);\n return faContentSalesgroups\n .map((salesgroupCode) => salesgroups.find((salesgroup) => salesgroup.code == salesgroupCode))\n .filter((c) => c !== undefined);\n};\n","import { CarlineBase, CarlinesWithSalesgroups, OneFormState} from 'src/types';\nimport { findCarlineFromSalesgroup } from '.';\n\nexport const findCarline = (\n carlines: CarlineBase[] | CarlinesWithSalesgroups[],\n code: number,\n salesgroupId?: number\n) => {\n const carline = carlines.find((carline: CarlineBase) => carline.code === code);\n\n if (carline) {\n return carline;\n } else if (salesgroupId) {\n const carline = findCarlineFromSalesgroup(carlines, salesgroupId);\n return carline;\n }\n return null;\n};\n","import { CarlineBase, CarlinesWithSalesgroups } from 'src/types';\n\nexport const findCarlineFromSalesgroup = (carlines: CarlineBase[] | CarlinesWithSalesgroups[], code: number) =>\n carlines.find((carline: CarlinesWithSalesgroups) => {\n return carline.salesGroups?.find((salesgroup) => salesgroup.code === code);\n });\n","import { OneFormContent } from 'src/feature-app';\n\nexport const thereIsKeyInFaContent = (faContent: OneFormContent, key: 'carlines' | 'salesgroups') =>\nfaContent && faContent[key] && faContent[key].length > 0;\n\nexport const thereIsCarlinesInFaContent = (faContent: OneFormContent) => thereIsKeyInFaContent(faContent, 'carlines');\n\nexport const thereIsSalesgroupsInFaContent = (faContent: OneFormContent) => thereIsKeyInFaContent(faContent, 'salesgroups');\n\nexport const isCarlineMode = (faContent: OneFormContent) => faContent?.mode === 'Carline';\n\nexport const isSalesGroupMode = (faContent: OneFormContent) => faContent?.mode === 'Salesgroup';\n\nexport const isMixedMode = (faContent: OneFormContent) => faContent?.mode === 'Mixed';\n\nexport const isConfiguratorMode = (faContent: OneFormContent) => faContent?.mode === 'CarConfiguratorFS';\n","import React, { useEffect, useRef, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { getCarlines, getCarlinesCita } from 'src/bff';\nimport { GeneralInputWidthWrapper } from 'src/components';\nimport { isNull, useFaContent } from 'src/feature-app';\nimport { useOneFormContext } from 'src/feature-app/OneForm';\nimport { useIsComerciales } from 'src/feature-app/hooks';\nimport { CarlineBase, CarlinesWithSalesgroups, OneFormState } from 'src/types';\nimport { SelectExtended } from 'src/components';\nimport { InputError, TextInputExtended } from 'src/components/inputs';\nimport {\n formatCEMVenta,\n formatAllSalesgroups,\n formatAllCarlines,\n filterCarlineFlag,\n getFormattedSalesgroups,\n filterPreselectedFaContent,\n filterPreselectedFaContentSalesgroups,\n findCarline,\n findCarlineFromSalesgroup,\n thereIsCarlinesInFaContent,\n thereIsSalesgroupsInFaContent,\n isSalesGroupMode,\n isMixedMode,\n} from 'src/components/CarlineSelect';\nexport interface SelectExtendedList {\n code: string;\n name: string;\n key: string;\n}\ninterface CarlineSelectProps {\n useCarline?: boolean;\n isCEMVenta?: boolean;\n notALayer?: boolean;\n noPaddingTop?: boolean;\n alphabetical?: boolean;\n}\n\nexport function CarlineSelect(props: CarlineSelectProps) {\n const { useCarline, notALayer, noPaddingTop, isCEMVenta, alphabetical } = props;\n const { register, errors } = useFormContext();\n const [errorModelo, setErrorModelo] = useState(false);\n const { formData, dealersInfo, formInfo } = useSelector((state: OneFormState) => state);\n const { fields } = formData;\n const { screenIndex } = formInfo;\n const { carlines } = dealersInfo;\n const { error } = useOneFormContext();\n const [list, setList] = useState(null);\n const dispatch = useDispatch();\n const [modelo, setModelo] = useState(null);\n const faContent = useFaContent();\n const screenIndexRef = useRef(null);\n const isComerciales = useIsComerciales();\n\n /**\n * En modo mixed se fija puede fijar un salesgroup al principio y en caso de que se acabe eligiendo un carline, se ha de eliminar la primera selección.\n */\n const dispatchEmptySalesgroup = () => dispatchSetSalesgroup(null, null);\n const dispatchSalesgroup = (id: number, name: string) => dispatchSetSalesgroup(id, name);\n\n const dispatchSetSalesgroup = (id: number, name: string) => {\n dispatch({\n type: 'SET_SALESGROUP',\n payload: {\n salesGroupId: id,\n salesGroupName: name,\n },\n });\n };\n\n const updateCarlineCode = (carlineCode: number, salesgroupName?: string) => {\n if (carlines) {\n let carline: CarlineBase | CarlinesWithSalesgroups;\n\n if (isSalesGroupMode(faContent)) {\n carline = findCarlineFromSalesgroup(carlines, carlineCode);\n if (carline) {\n dispatchSalesgroup(carlineCode, salesgroupName);\n } else {\n carline = findCarline(carlines, carlineCode);\n }\n } else if (isMixedMode(faContent)) {\n // Primero buscamos carline\n carline = findCarline(carlines, carlineCode);\n\n dispatchEmptySalesgroup();\n\n if (!carline) {\n // Buscamos salesgroup\n carline = findCarlineFromSalesgroup(carlines, carlineCode);\n dispatchSalesgroup(carlineCode, salesgroupName);\n }\n } else {\n carline = findCarline(carlines, carlineCode);\n dispatchEmptySalesgroup();\n }\n dispatch({ type: 'SET_SELECTED_CARLINE', payload: carline });\n if (!isCEMVenta) {\n dispatch({ type: 'UPDATE_FIELDS', payload: { carlineCode: carline.code } });\n }\n }\n };\n\n /**\n * Inicializa la lista del selector\n * @param list\n */\n const handleUpdateList = (list: SelectExtendedList[]) => {\n if (!list) {\n return;\n }\n setList(list);\n if (fields.modelo) {\n const modeloInList = list.find((listValue) => listValue.name === fields.modelo);\n // setModelo(modeloInList.name);\n changeModeloFields(modeloInList.name, list);\n updateCarlineCode(Number(modeloInList.code));\n } else {\n // setModelo(list[0].name);\n changeModeloFields(list[0].name, list);\n updateCarlineCode(Number(list[0].code));\n }\n };\n\n const initializeSelectWithCarline = async () => {\n // Eliminamos todos los carlines que no tienen el flag correspondiente del formulario activado.\n const filteredCarlines = filterCarlineFlag(carlines, fields.formularioFlag);\n\n if (thereIsCarlinesInFaContent(faContent)) {\n // Filtramos los carlines del FA Content.\n const carlinesFromFaContent = filterPreselectedFaContent(filteredCarlines, faContent.carlines);\n const carlinesFormatted = formatAllCarlines(carlinesFromFaContent, alphabetical);\n handleUpdateList(carlinesFormatted);\n return;\n } else if (useCarline) {\n if (!carlines) {\n const newCarlines = await getCarlines();\n const newfilteredCarlines = filterCarlineFlag(newCarlines, fields.formularioFlag);\n const carlinesFormatted = formatAllCarlines(newfilteredCarlines, alphabetical);\n handleUpdateList(carlinesFormatted);\n return;\n }\n // En caso de que se necesiten los carlines de getCarlines de forma genérica.\n const carlinesFormatted = formatAllCarlines(filteredCarlines, alphabetical);\n handleUpdateList(carlinesFormatted);\n return;\n } else {\n // Para la pantalla de modelo y matrícula de cita se necesitan unos modelos específicos.\n const carlines = await getCarlinesCita(isComerciales);\n handleUpdateList(carlines);\n }\n };\n\n const initializeSelectWithSalesgroup = async () => {\n // Eliminamos todos los carlines que no tienen el flag correspondiente del formulario activado.\n const filteredCarlines = filterCarlineFlag(carlines, fields.formularioFlag);\n\n if (thereIsSalesgroupsInFaContent(faContent)) {\n const salesgroupsFromFaContent = filterPreselectedFaContentSalesgroups(filteredCarlines, faContent.salesgroups);\n const formatedSalesgroups = formatAllSalesgroups(salesgroupsFromFaContent);\n if (!formatedSalesgroups || formatedSalesgroups.length === 0) {\n initializeSelectWithCarline();\n return;\n }\n handleUpdateList(formatedSalesgroups);\n return;\n } else if (useCarline) {\n // En caso de que se necesiten los carlines de getSalesgroup.\n const formatedSalesgroups = getFormattedSalesgroups(filteredCarlines);\n if (!formatedSalesgroups || formatedSalesgroups.length === 0) {\n initializeSelectWithCarline();\n return;\n }\n handleUpdateList(formatedSalesgroups);\n return;\n }\n };\n const initializeSelectWithMixed = async () => {\n // Eliminamos todos los carlines que no tienen el flag correspondiente del formulario activado.\n const filteredCarlines = filterCarlineFlag(carlines, fields.formularioFlag);\n\n let result: SelectExtendedList[] = [];\n\n if (thereIsSalesgroupsInFaContent(faContent)) {\n const salesgroupsFromFaContent = filterPreselectedFaContentSalesgroups(filteredCarlines, faContent.salesgroups);\n const formatedSalesgroups = formatAllSalesgroups(salesgroupsFromFaContent);\n result = [...result, ...formatedSalesgroups];\n }\n if (thereIsCarlinesInFaContent(faContent)) {\n const carlinesFromFaContent = filterPreselectedFaContent(filteredCarlines, faContent.carlines);\n const carlinesFormatted = formatAllCarlines(carlinesFromFaContent, alphabetical);\n result = [...result, ...carlinesFormatted];\n }\n if (!result || result.length === 0) {\n initializeSelectWithCarline();\n }\n handleUpdateList(result);\n };\n\n const initializeSelectWithCEMVenta = async () => {\n // Eliminamos todos los carlines que no tienen el flag correspondiente del formulario activado.\n const newCarlines = await getCarlines();\n const newfilteredCarlines = filterCarlineFlag(newCarlines, fields.formularioFlag);\n const carlinesFormatted = formatCEMVenta(newfilteredCarlines);\n\n handleUpdateList(carlinesFormatted);\n return;\n };\n\n useEffect(() => {\n if (isSalesGroupMode(faContent)) {\n initializeSelectWithSalesgroup();\n } else if (isMixedMode(faContent)) {\n initializeSelectWithMixed();\n } else if (isCEMVenta) {\n initializeSelectWithCEMVenta();\n } else {\n initializeSelectWithCarline();\n }\n }, []);\n\n useEffect(() => {\n // Hack para guardar la información del carline únicamente al pasar a la siguiente pantalla y no enviar datos\n // de analítica del carline seleccionado por defecto.\n\n if (isNull(screenIndexRef.current)) {\n screenIndexRef.current = screenIndex;\n } else {\n if (useCarline) {\n const carline = list.find((carline: any) => carline.name === modelo);\n if (isSalesGroupMode(faContent) || isMixedMode(faContent)) {\n updateCarlineCode(Number(carline.code), carline.name);\n } else {\n updateCarlineCode(Number(carline.code));\n }\n }\n }\n }, [screenIndex]);\n\n useEffect(() => {\n errors.modelo || (error && !modelo) ? setErrorModelo(true) : setErrorModelo(false);\n }, [errors, error]);\n\n const changeModeloFields = (model: string, list: SelectExtendedList[]) => {\n setModelo(model);\n const modeloList = list?.find((element) => element.name === model);\n dispatch({ type: 'UPDATE_FIELDS', payload: { modeloList } });\n };\n\n function handleChangeModelo(event: any) {\n const newModelo = event.currentTarget.value;\n\n if (newModelo) {\n changeModeloFields(newModelo, list);\n }\n\n if (newModelo !== '') {\n setErrorModelo(false);\n }\n }\n\n return (\n \n {list ? (\n <>\n {}}\n updateFields\n setOption={setModelo}\n isRequired={true}\n />\n \n ) : (\n
\n \n
\n )}\n {errorModelo ? Este campo es obligatorio : null}\n {}\n
\n );\n}\n","import { Spinner, Text, styled } from '@volkswagen-onehub/components-core';\nimport React, { useEffect, useState } from 'react';\n\ninterface CenterContentProps {\n height: string;\n}\nconst CenterContent = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n height: ${(props) => (props.height ? props.height : '100%')};\n`;\n\nexport const LoadingEncuestas = () => {\n const [height, setHeight] = useState('100%');\n\n useEffect(() => {\n const viewportHeight = window.innerHeight;\n const viewportWidth = window.innerWidth;\n let aux;\n\n if (viewportWidth < 560) {\n aux = viewportHeight - 152;\n } else if (viewportWidth < 1600) {\n aux = viewportHeight - 252;\n } else {\n aux = viewportHeight - 380;\n }\n setHeight(`${aux}px`);\n }, []);\n\n return (\n \n \n Cargando tus datos\n \n );\n};\n","import React from 'react';\nimport {\n Breakpoints,\n BreakpointWrapper,\n Text,\n TextAlignment,\n TextAppearance,\n} from '@volkswagen-onehub/components-core';\n\ninterface ThankYouTitleProps {\n notALayer?: boolean;\n regularCopyFirst?: string;\n boldCopyFirst?: string;\n regularCopySecond?: string;\n boldCopySecond?: string;\n}\n\nexport const ThankYouTitle = (props: ThankYouTitleProps) => {\n const { regularCopyFirst, boldCopyFirst, notALayer, regularCopySecond, boldCopySecond } = props;\n return (\n <>\n { notALayer ? (\n <>\n {' '}\n {regularCopyFirst ? <>{regularCopyFirst}{' '} : null}\n {\n boldCopyFirst ? {boldCopyFirst}{' '} : null\n }\n {regularCopySecond ? <>{regularCopySecond}{' '} : null}\n {\n boldCopySecond ? {boldCopySecond} : null\n }\n \n ) : (\n <>\n \n \n {regularCopyFirst ? <>{regularCopyFirst}{' '} : null}\n {\n boldCopyFirst ? {boldCopyFirst} : null\n }\n {regularCopySecond ? <>{regularCopySecond}{' '} : null}\n {\n boldCopySecond ? {boldCopySecond} : null\n }\n \n \n \n \n {regularCopyFirst ? <>{regularCopyFirst}{' '} : null}\n {\n boldCopyFirst ? {boldCopyFirst} : null\n }\n {regularCopySecond ? <>{regularCopySecond}{' '} : null}\n {\n boldCopySecond ? {boldCopySecond} : null\n }\n \n \n \n )}\n \n );\n};\n","import React from 'react';\nimport {\n CTA,\n styled\n} from '@volkswagen-onehub/components-core';\n\nexport type CTAThankYou = {\n emphasis?: string;\n label: string;\n url?: string;\n}\n\ninterface CTAThankYouPageProps {\n firstCTA: CTAThankYou;\n secondCTA?: boolean;\n secondCTACopies?: CTAThankYou;\n}\n\nconst CtasWrapper = styled.div`\n display: flex;\n flex-direction: column;\n gap: 32px;\n align-items: flex-start;\n @media all and (min-width: 560px) {\n flex-direction: row;\n gap: 44px;\n }\n button {\n align-self: flex-start;\n }\n`;\n\nexport const CTAThankYouPage = (props: CTAThankYouPageProps) => {\n const { firstCTA, secondCTA, secondCTACopies } = props;\n\n return (\n \n \n {firstCTA.label}\n \n {\n secondCTA ? (\n \n {secondCTACopies.label}\n \n ) : null\n }\n \n \n );\n};\n","import React from 'react';\nimport {\n Breakpoints,\n Container,\n ContainerPadding,\n Layout,\n Text,\n TextAlignment,\n TextAppearance,\n ContainerGutter,\n ContainerWrap\n} from '@volkswagen-onehub/components-core';\nimport { CTAThankYouPage, CTAThankYou, CTAThankYouPageAction, CTAAction, LeadsCTAs } from '.';\nimport { OneFormState } from 'src/types';\nimport { useSelector } from 'react-redux';\n\n\ninterface FieldProps {\n copyBook?: string;\n copyBookSecond?: string;\n notALayer?: boolean;\n CTAFields?: boolean;\n firstCTA?: CTAThankYou;\n secondCTA?: boolean;\n secondCTACopies?: CTAThankYou;\n CTAAction?: CTAAction;\n ctaFunction?: any;\n ctaUrl?: string;\n}\n\nexport const ThankYouFields = (props: FieldProps) => {\n const{ \n notALayer , \n copyBook, \n CTAFields, \n copyBookSecond, \n firstCTA, \n secondCTA, \n secondCTACopies, \n CTAAction,\n ctaFunction,\n ctaUrl\n } = props;\n const { formData } = useSelector((state: OneFormState) => state);\n const { formName } = formData.fields;\n\n return (\n <>\n {\n notALayer ? (\n \n
\n \n \n {copyBook}\n \n {\n copyBookSecond ? (\n \n {copyBookSecond}\n \n ) : null\n }\n \n {\n CTAFields ? : null\n }\n {\n CTAAction? : null\n }\n {\n formName && formName === 'lead-oferta' || formName === 'lead-match' ? ( \n \n ) : null\n }\n
\n \n\n ) : (\n \n
\n \n \n {copyBook}\n \n {\n copyBookSecond ? (\n \n {copyBookSecond}\n \n ) : null\n }\n \n {\n CTAFields ? : null\n }\n {\n CTAAction? : null\n }\n {\n formName && formName === 'lead-oferta' || formName === 'lead-match' ? ( \n \n ) : null\n }\n
\n \n )}\n \n );\n};\n","import React from 'react';\nimport {\n CTA,\n} from '@volkswagen-onehub/components-core';\n\nexport type CTAAction = {\n label: string,\n emphasis: string,\n}\n\ninterface CTAThankYouPageActionProps {\n ctaInfo: CTAAction;\n ctaFunction: any;\n}\n\nexport const CTAThankYouPageAction = (props: CTAThankYouPageActionProps) => {\n const { ctaInfo, ctaFunction } = props;\n\n return (\n {\n e.preventDefault();\n ctaFunction();\n }}\n >\n {ctaInfo.label}\n \n );\n};\n","import {\n Container,\n ContainerGutter,\n ContainerPadding,\n ContainerWrap,\n CTA,\n} from '@volkswagen-onehub/components-core';\nimport React from 'react';\nimport { useOneFormContext } from 'src/feature-app';\n\ninterface CTAFieldsProps {\n url: string;\n}\n\nexport const LeadsCTAs = (props: CTAFieldsProps) => {\n const { url } = props;\n const { closeLayer } = useOneFormContext();\n\n \n return (\n \n \n Conócelo\n \n {\n e.preventDefault();\n closeLayer();\n }}\n >\n Seguir navegando\n \n \n );\n};\n","import React from 'react';\nexport var ReactReduxContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ReactReduxContext.displayName = 'ReactRedux';\n}\n\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n return batch;\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nvar nullListeners = {\n notify: function notify() {}\n};\n\nfunction createListenerCollection() {\n var batch = getBatch();\n var first = null;\n var last = null;\n return {\n clear: function clear() {\n first = null;\n last = null;\n },\n notify: function notify() {\n batch(function () {\n var listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n get: function get() {\n var listeners = [];\n var listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n subscribe: function subscribe(callback) {\n var isSubscribed = true;\n var listener = last = {\n callback: callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n };\n}\n\nvar Subscription = /*#__PURE__*/function () {\n function Subscription(store, parentSub) {\n this.store = store;\n this.parentSub = parentSub;\n this.unsubscribe = null;\n this.listeners = nullListeners;\n this.handleChangeWrapper = this.handleChangeWrapper.bind(this);\n }\n\n var _proto = Subscription.prototype;\n\n _proto.addNestedSub = function addNestedSub(listener) {\n this.trySubscribe();\n return this.listeners.subscribe(listener);\n };\n\n _proto.notifyNestedSubs = function notifyNestedSubs() {\n this.listeners.notify();\n };\n\n _proto.handleChangeWrapper = function handleChangeWrapper() {\n if (this.onStateChange) {\n this.onStateChange();\n }\n };\n\n _proto.isSubscribed = function isSubscribed() {\n return Boolean(this.unsubscribe);\n };\n\n _proto.trySubscribe = function trySubscribe() {\n if (!this.unsubscribe) {\n this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.handleChangeWrapper) : this.store.subscribe(this.handleChangeWrapper);\n this.listeners = createListenerCollection();\n }\n };\n\n _proto.tryUnsubscribe = function tryUnsubscribe() {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n this.listeners.clear();\n this.listeners = nullListeners;\n }\n };\n\n return Subscription;\n}();\n\nexport { Subscription as default };","import React, { useMemo, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport Subscription from '../utils/Subscription';\n\nfunction Provider(_ref) {\n var store = _ref.store,\n context = _ref.context,\n children = _ref.children;\n var contextValue = useMemo(function () {\n var subscription = new Subscription(store);\n subscription.onStateChange = subscription.notifyNestedSubs;\n return {\n store: store,\n subscription: subscription\n };\n }, [store]);\n var previousState = useMemo(function () {\n return store.getState();\n }, [store]);\n useEffect(function () {\n var subscription = contextValue.subscription;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return function () {\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n };\n }, [contextValue, previousState]);\n var Context = context || ReactReduxContext;\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nif (process.env.NODE_ENV !== 'production') {\n Provider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n };\n}\n\nexport default Provider;","import { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport hoistStatics from 'hoist-non-react-statics';\nimport React, { useContext, useMemo, useRef, useReducer } from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport Subscription from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from './Context'; // Define some constant arrays just to avoid re-creating these\n\nvar EMPTY_ARRAY = [];\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\n\nvar stringifyComponent = function stringifyComponent(Comp) {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\n\nfunction storeStateUpdatesReducer(state, action) {\n var updateCount = state[1];\n return [action.payload, updateCount + 1];\n}\n\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n useIsomorphicLayoutEffect(function () {\n return effectFunc.apply(void 0, effectArgs);\n }, dependencies);\n}\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs) {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps;\n lastChildProps.current = actualChildProps;\n renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n}\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch) {\n // If we're not subscribed to the store, nothing to do here\n if (!shouldHandleStateChanges) return; // Capture values for checking if and when this component unmounts\n\n var didUnsubscribe = false;\n var lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n var checkForUpdates = function checkForUpdates() {\n if (didUnsubscribe) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return;\n }\n\n var latestStoreState = store.getState();\n var newChildProps, error;\n\n try {\n // Actually run the selector with the most recent store state and wrapper props\n // to determine what the child props should be\n newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n\n if (!error) {\n lastThrownError = null;\n } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n // Save references to the new child props. Note that we track the \"child props from store update\"\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\n // forcing another re-render, which we don't want.\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true; // If the child props _did_ change (or we caught an error), this wrapper component needs to re-render\n\n forceComponentUpdateDispatch({\n type: 'STORE_UPDATED',\n payload: {\n error: error\n }\n });\n }\n }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n // changed since we began.\n\n checkForUpdates();\n\n var unsubscribeWrapper = function unsubscribeWrapper() {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n\n if (lastThrownError) {\n // It's possible that we caught an error due to a bad mapState function, but the\n // parent re-rendered without this component and we're about to unmount.\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\n // if we ever do those wrong, this throw will surface the error in our tests.\n // In that case, throw the error from here so it doesn't get lost.\n throw lastThrownError;\n }\n };\n\n return unsubscribeWrapper;\n}\n\nvar initStateUpdates = function initStateUpdates() {\n return [null, 0];\n};\n\nexport default function connectAdvanced(\n/*\n selectorFactory is a func that is responsible for returning the selector function used to\n compute new props from state, props, and dispatch. For example:\n export default connectAdvanced((dispatch, options) => (state, props) => ({\n thing: state.things[props.thingId],\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\n }))(YourComponent)\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\n props. Do not use connectAdvanced directly without memoizing results between calls to your\n selector, otherwise the Connect component will re-render on every state or props change.\n*/\nselectorFactory, // options object:\n_ref) {\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n _ref2$forwardRef = _ref2.forwardRef,\n forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n _ref2$context = _ref2.context,\n context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"]);\n\n if (process.env.NODE_ENV !== 'production') {\n if (renderCountProp !== undefined) {\n throw new Error(\"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension\");\n }\n\n if (withRef) {\n throw new Error('withRef is removed. To access the wrapped instance, use a ref on the connected component');\n }\n\n var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React Redux's Provider and specific components\" + ' like: . ' + 'You may also pass a {context : MyContext} option to connect';\n\n if (storeKey !== 'store') {\n throw new Error('storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n }\n }\n\n var Context = context;\n return function wrapWithConnect(WrappedComponent) {\n if (process.env.NODE_ENV !== 'production' && !isValidElementType(WrappedComponent)) {\n throw new Error(\"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + stringifyComponent(WrappedComponent)));\n }\n\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent\n });\n\n var pure = connectOptions.pure;\n\n function createChildSelector(store) {\n return selectorFactory(store.dispatch, selectorFactoryOptions);\n } // If we aren't running in \"pure\" mode, we don't want to memoize values.\n // To avoid conditionally calling hooks, we fall back to a tiny wrapper\n // that just executes the given callback immediately.\n\n\n var usePureOnlyMemo = pure ? useMemo : function (callback) {\n return callback();\n };\n\n function ConnectFunction(props) {\n var _useMemo = useMemo(function () {\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\n // and values needed to control behavior (forwarded refs, alternate context instances).\n // To maintain the wrapperProps object reference, memoize this destructuring.\n var reactReduxForwardedRef = props.reactReduxForwardedRef,\n wrapperProps = _objectWithoutPropertiesLoose(props, [\"reactReduxForwardedRef\"]);\n\n return [props.context, reactReduxForwardedRef, wrapperProps];\n }, [props]),\n propsContext = _useMemo[0],\n reactReduxForwardedRef = _useMemo[1],\n wrapperProps = _useMemo[2];\n\n var ContextToUse = useMemo(function () {\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n // Memoize the check that determines which context instance we should use.\n return propsContext && propsContext.Consumer && isContextConsumer( /*#__PURE__*/React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n var contextValue = useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n // We'll check to see if it _looks_ like a Redux store first.\n // This allows us to pass through a `store` prop that is just a plain value.\n\n var didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n var didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n throw new Error(\"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a , \") + \"or pass a custom React context provider to and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n } // Based on the previous check, one of these must be true\n\n\n var store = didStoreComeFromProps ? props.store : contextValue.store;\n var childPropsSelector = useMemo(function () {\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return createChildSelector(store);\n }, [store]);\n\n var _useMemo2 = useMemo(function () {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n var subscription = new Subscription(store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n\n var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n return [subscription, notifyNestedSubs];\n }, [store, didStoreComeFromProps, contextValue]),\n subscription = _useMemo2[0],\n notifyNestedSubs = _useMemo2[1]; // Determine what {store, subscription} value should be put into nested context, if necessary,\n // and memoize that value to avoid unnecessary context updates.\n\n\n var overriddenContextValue = useMemo(function () {\n if (didStoreComeFromProps) {\n // This component is directly subscribed to a store from props.\n // We don't want descendants reading from this store - pass down whatever\n // the existing context value is from the nearest connected ancestor.\n return contextValue;\n } // Otherwise, put this component's subscription instance into context, so that\n // connected descendants won't update until after this component is done\n\n\n return _extends({}, contextValue, {\n subscription: subscription\n });\n }, [didStoreComeFromProps, contextValue, subscription]); // We need to force this wrapper component to re-render whenever a Redux store update\n // causes a change to the calculated child component props (or we caught an error in mapState)\n\n var _useReducer = useReducer(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates),\n _useReducer$ = _useReducer[0],\n previousStateUpdateResult = _useReducer$[0],\n forceComponentUpdateDispatch = _useReducer[1]; // Propagate any mapState/mapDispatch errors upwards\n\n\n if (previousStateUpdateResult && previousStateUpdateResult.error) {\n throw previousStateUpdateResult.error;\n } // Set up refs to coordinate values between the subscription effect and the render logic\n\n\n var lastChildProps = useRef();\n var lastWrapperProps = useRef(wrapperProps);\n var childPropsFromStoreUpdate = useRef();\n var renderIsScheduled = useRef(false);\n var actualChildProps = usePureOnlyMemo(function () {\n // Tricky logic here:\n // - This render may have been triggered by a Redux store update that produced new child props\n // - However, we may have gotten new wrapper props after that\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n } // TODO We're reading the store directly in render() here. Bad idea?\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n // to determine what the child props should be.\n\n\n return childPropsSelector(store.getState(), wrapperProps);\n }, [store, previousStateUpdateResult, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n // just useEffect instead to avoid the warning, since neither will run anyway.\n\n useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs]); // Our re-subscribe logic only runs when the store/subscription setup changes\n\n useIsomorphicLayoutEffectWithArgs(subscribeUpdates, [shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch], [store, subscription, childPropsSelector]); // Now that all that's done, we can finally try to actually render the child component.\n // We memoize the elements for the rendered child component as an optimization.\n\n var renderedWrappedComponent = useMemo(function () {\n return /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n ref: reactReduxForwardedRef\n }));\n }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n var renderedChild = useMemo(function () {\n if (shouldHandleStateChanges) {\n // If this component is subscribed to store updates, we need to pass its own\n // subscription instance down to our descendants. That means rendering the same\n // Context instance, and putting a different value into the context.\n return /*#__PURE__*/React.createElement(ContextToUse.Provider, {\n value: overriddenContextValue\n }, renderedWrappedComponent);\n }\n\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n } // If we're in \"pure\" mode, ensure our wrapper component only re-renders when incoming props have changed.\n\n\n var Connect = pure ? React.memo(ConnectFunction) : ConnectFunction;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = displayName;\n\n if (forwardRef) {\n var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n return /*#__PURE__*/React.createElement(Connect, _extends({}, props, {\n reactReduxForwardedRef: ref\n }));\n });\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","function is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n//\n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}","import { bindActionCreators } from 'redux';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutPropertiesLoose(_ref2, [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"]);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\n connect is a facade over connectAdvanced. It turns its args into a compatible\n selectorFactory, which has the signature:\n\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\n \n connect passes its args to connectAdvanced as options, which will in turn pass them to\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\n\n selectorFactory returns a final props selector from its mapStateToProps,\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\n mergePropsFactories, and pure args.\n\n The resulting final props selector is called by the Connect component instance whenever\n it receives new props or store state.\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"]);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\nexport default /*#__PURE__*/createConnect();","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n/**\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\n * hook that you should usually not need to call directly.\n *\n * @returns {any} the value of the `ReactReduxContext`\n *\n * @example\n *\n * import React from 'react'\n * import { useReduxContext } from 'react-redux'\n *\n * export const CounterComponent = ({ value }) => {\n * const { store } = useReduxContext()\n * return
{store.getState()}
\n * }\n */\n\nexport function useReduxContext() {\n var contextValue = useContext(ReactReduxContext);\n\n if (process.env.NODE_ENV !== 'production' && !contextValue) {\n throw new Error('could not find react-redux context value; please ensure the component is wrapped in a ');\n }\n\n return contextValue;\n}","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\n/**\n * Hook factory, which creates a `useStore` hook bound to a given context.\n *\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\n * @returns {Function} A `useStore` hook bound to the specified context.\n */\n\nexport function createStoreHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useStore() {\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store;\n\n return store;\n };\n}\n/**\n * A hook to access the redux store.\n *\n * @returns {any} the redux store\n *\n * @example\n *\n * import React from 'react'\n * import { useStore } from 'react-redux'\n *\n * export const ExampleComponent = () => {\n * const store = useStore()\n * return
{store.getState()}
\n * }\n */\n\nexport var useStore = /*#__PURE__*/createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\n *\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\n * @returns {Function} A `useDispatch` hook bound to the specified context.\n */\n\nexport function createDispatchHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useStore = context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n return function useDispatch() {\n var store = useStore();\n return store.dispatch;\n };\n}\n/**\n * A hook to access the redux `dispatch` function.\n *\n * @returns {any|function} redux store's `dispatch` function\n *\n * @example\n *\n * import React, { useCallback } from 'react'\n * import { useDispatch } from 'react-redux'\n *\n * export const CounterComponent = ({ value }) => {\n * const dispatch = useDispatch()\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\n * return (\n *
\n * {value}\n * \n *
\n * )\n * }\n */\n\nexport var useDispatch = /*#__PURE__*/createDispatchHook();","import { useReducer, useRef, useMemo, useContext, useDebugValue } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport Subscription from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\n\nvar refEquality = function refEquality(a, b) {\n return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n var subscription = useMemo(function () {\n return new Subscription(store, contextSub);\n }, [store, contextSub]);\n var latestSubscriptionCallbackError = useRef();\n var latestSelector = useRef();\n var latestStoreState = useRef();\n var latestSelectedState = useRef();\n var storeState = store.getState();\n var selectedState;\n\n try {\n if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {\n selectedState = selector(storeState);\n } else {\n selectedState = latestSelectedState.current;\n }\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n err.message += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\n\";\n }\n\n throw err;\n }\n\n useIsomorphicLayoutEffect(function () {\n latestSelector.current = selector;\n latestStoreState.current = storeState;\n latestSelectedState.current = selectedState;\n latestSubscriptionCallbackError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n function checkForUpdates() {\n try {\n var newSelectedState = latestSelector.current(store.getState());\n\n if (equalityFn(newSelectedState, latestSelectedState.current)) {\n return;\n }\n\n latestSelectedState.current = newSelectedState;\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n latestSubscriptionCallbackError.current = err;\n }\n\n forceRender();\n }\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n return function () {\n return subscription.tryUnsubscribe();\n };\n }, [store, subscription]);\n return selectedState;\n}\n/**\n * Hook factory, which creates a `useSelector` hook bound to a given context.\n *\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\n * @returns {Function} A `useSelector` hook bound to the specified context.\n */\n\n\nexport function createSelectorHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useSelector(selector, equalityFn) {\n if (equalityFn === void 0) {\n equalityFn = refEquality;\n }\n\n if (process.env.NODE_ENV !== 'production' && !selector) {\n throw new Error(\"You must pass a selector to useSelector\");\n }\n\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store,\n contextSub = _useReduxContext.subscription;\n\n var selectedState = useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n useDebugValue(selectedState);\n return selectedState;\n };\n}\n/**\n * A hook to access the redux store's state. This hook takes a selector function\n * as an argument. The selector is called with the store state.\n *\n * This hook takes an optional equality comparison function as the second parameter\n * that allows you to customize the way the selected state is compared to determine\n * whether the component needs to be re-rendered.\n *\n * @param {Function} selector the selector function\n * @param {Function=} equalityFn the function that will be used to determine equality\n *\n * @returns {any} the selected state\n *\n * @example\n *\n * import React from 'react'\n * import { useSelector } from 'react-redux'\n *\n * export const CounterComponent = () => {\n * const counter = useSelector(state => state.counter)\n * return
{counter}
\n * }\n */\n\nexport var useSelector = /*#__PURE__*/createSelectorHook();","import Provider from './components/Provider';\nimport connectAdvanced from './components/connectAdvanced';\nimport { ReactReduxContext } from './components/Context';\nimport connect from './connect/connect';\nimport { useDispatch, createDispatchHook } from './hooks/useDispatch';\nimport { useSelector, createSelectorHook } from './hooks/useSelector';\nimport { useStore, createStoreHook } from './hooks/useStore';\nimport { setBatch } from './utils/batch';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport shallowEqual from './utils/shallowEqual';\nsetBatch(batch);\nexport { Provider, connectAdvanced, ReactReduxContext, connect, batch, useDispatch, createDispatchHook, useSelector, createSelectorHook, useStore, createStoreHook, shallowEqual };","module.exports = require(\"regenerator-runtime\");\n","import defineProperty from \"./defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","import baseStyled, { css as baseCSS, } from 'styled-components';\nexport * from './definitions';\nexport * from './example-design-tokens';\nexport * from './theme-provider';\nexport const styled = baseStyled;\nexport const css = baseCSS;\n","export var Breakpoints;\n(function (Breakpoints) {\n Breakpoints[Breakpoints[\"default\"] = 0] = \"default\";\n Breakpoints[Breakpoints[\"b560\"] = 560] = \"b560\";\n Breakpoints[Breakpoints[\"b960\"] = 960] = \"b960\";\n Breakpoints[Breakpoints[\"b1280\"] = 1280] = \"b1280\";\n Breakpoints[Breakpoints[\"b1600\"] = 1600] = \"b1600\";\n Breakpoints[Breakpoints[\"b1920\"] = 1920] = \"b1920\";\n Breakpoints[Breakpoints[\"b2560\"] = 2560] = \"b2560\";\n Breakpoints[Breakpoints[\"never\"] = Infinity] = \"never\";\n})(Breakpoints || (Breakpoints = {}));\nconst breakpoints = Object.values(Breakpoints);\nexport function isBreakpointConfig(prop) {\n return (typeof prop === 'object' &&\n Object.keys(prop).every((key) => breakpoints.includes(key) || breakpoints.includes(parseInt(key, 10))));\n}\nexport function compareBreakpoints(a, b) {\n return ((typeof a === 'number' ? a : parseInt(a, 10)) -\n (typeof b === 'number' ? b : parseInt(b, 10)));\n}\nfunction mediaQueryTemplate(breakpoint, styles) {\n if (breakpoint === '0') {\n return styles;\n }\n return `@media (min-width: ${breakpoint}px) {${styles}}`;\n}\nexport function createStylesForBreakpoints(config, fn = (x) => x) {\n return Object.keys(config)\n .sort(compareBreakpoints)\n .map((breakpoint) => mediaQueryTemplate(breakpoint, fn(config[breakpoint])))\n .join('');\n}\n","import { CTA, styled } from '@volkswagen-onehub/components-core';\nimport { ArrowUp, Close } from 'src/icons-core-imports';\nimport { LayerHandleV2 } from '@volkswagen-onehub/layer-manager';\nimport React, { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { CSSTransition } from 'react-transition-group';\nimport { css } from 'styled-components';\nimport { useLoaded } from 'src/feature-app';\nimport { TIME_FOR_OPACITY_MS, TIME_FOR_TRANSFORM_MS } from 'src/globals';\nimport { OneFormState } from 'src/types';\nimport { useOneFormContext } from '../OneForm';\nimport { useTrackingManager } from 'src/feature-app/hooks/use-tracking-manager';\nimport { useFeatureServices } from '../hooks';\nimport { removeConfigurationHash } from '../remove-configuration-hash';\n\n\n{/* \n paddings top prev step wrapper antes de adaptacion a nuevo formato de editorial template with feature\n app in stage que ya setea automáticamente el espacio reservado para la navbar. Se ha retirado también del \n prev-step-controller\n 560: padding-top: 110px;\n 1920: padding-top: 126px;\n*/}\ninterface wrapperProps {\n fullScreen?: boolean;\n closeInMap?: boolean;\n colorTheme?: string;\n notALayer?: boolean;\n}\n\nconst Wrapper = styled.div`\n position: ${(props) =>\n props.notALayer ? 'fixed' : props.closeInMap ? 'relative' : props.fullScreen ? 'fixed' : 'fixed'};\n top: ${(props) => (props.notALayer ? '84' : '0')};\n right: 0;\n align-self: ${(props) => (props.notALayer ? 'flex-start' : null)};\n padding: ${(props) => (props.notALayer ? '0 var(--size-grid002) 20px' : '20px 20px')};\n display: ${(props) => (props.closeInMap ? 'flex' : props.fullScreen ? 'none' : 'flex')};\n justify-content: ${(props) => (props.notALayer ? 'flex-end' : 'space-between')};\n background-color: ${(props) => (props.notALayer ? 'transparent' : props.colorTheme === 'main' ? '#FFFFFF' : '#001e50')};\n z-index: ${(props) => (props.closeInMap && props.notALayer ? '5' : props.notALayer ? '1' : '2')};\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n width: 100%;\n min-height: ${(props) => (props.notALayer ? 'auto' : '72px')};\n margin-bottom: auto;\n @media all and (min-width: 560px) {\n padding: ${(props) => (props.notALayer ? '0 var(--size-grid002) 24px' : '24px 24px')};\n min-height: ${(props) => (props.notALayer ? 'auto' : '80px')};\n ${(props) =>\n props.notALayer &&\n css`\n position: fixed;\n top: 92;\n `}\n }\n\n @media screen and (min-width: 960px) {\n background-color: ${(props) => (props.colorTheme === 'main' ? 'transparent' : '#001e50')};\n margin-bottom: unset;\n width: ${(props) => (props.notALayer ? '100%' : props.closeInMap ? '100%' : '960px')};\n padding: ${(props) =>\n props.closeInMap && props.notALayer ? '28px 20px 0' : props.notALayer ? '0 var(--size-grid003) 24px' : '24px 24px'};\n ${(props) =>\n props.notALayer &&\n css`\n position: fixed;\n top: 102;\n `}\n }\n @media screen and (min-width: 1280px) {\n padding: ${(props) => (props.notALayer ? '0 var(--size-grid005) 24px' : '24px 24px')};\n }\n @media screen and (min-width: 1920px) {\n padding: ${(props) => (props.notALayer ? '0 var(--size-grid006) 24px' : '24px 24px')};\n }\n @media screen and (min-width: 2560px) {\n padding: ${(props) => (props.notALayer ? '0 var(--size-grid007) 24px' : '24px 24px')};\n }\n\n button {\n background-color: ${(props) => (props.colorTheme === 'main' ? '#FFFFFF' : null)};\n }\n`;\n\nconst CloseDiv = styled.div`\n color: ${(props) => props.theme.text.color.primary};\n cursor: pointer;\n &.close-enter {\n opacity: 0;\n }\n &.close-enter-active {\n opacity: 1;\n transition: opacity ${TIME_FOR_OPACITY_MS} ease-in;\n }\n &.close-enter-done {\n }\n &.close-exit {\n transform: translate(0, 0);\n opacity: 1;\n }\n &.close-exit-active {\n transform: translate(0, -100%);\n opacity: 0.01;\n transition: all ${TIME_FOR_TRANSFORM_MS}, opacity ${TIME_FOR_OPACITY_MS} ease-in;\n }\n`;\n\ninterface CloseComponentProps {\n closeInMap?: boolean;\n closeThankYou?: boolean;\n handleAreYouSureLayer?: () => LayerHandleV2<{}>;\n notALayer?: boolean;\n colorTheme?: string;\n formMin?: boolean;\n}\nexport function CloseComponent(props: CloseComponentProps) {\n const { closeInMap, handleAreYouSureLayer, colorTheme, notALayer, formMin } = props;\n const { formInfo, formData } = useSelector((state: OneFormState) => state);\n const { screenIndex, stepsHistory, multiStepScreenIndex, formSubmitted } = formInfo;\n const [isFirstScreen, setIsFirstScreen] = useState(true);\n const loaded = useLoaded();\n const { handlePreviousStep, isFullScreen, closeLayer } = useOneFormContext();\n const trackingManager = useTrackingManager();\n const layerManager = useFeatureServices()['layer-manager'];\n /**\n * En el journey de no compra al llegar al mapa se abre un layer. Se necesita que interactue con el next step, por lo que lo tenemos que cerrar desde aquí\n */\n const handleMapFullScreenLayer= () => {\n const layers = layerManager.getLayers();\n \n const layer = layers.find(\n (layer) => layer.layer.options.id === 'mapaNoCompra' || layer.layer.options.id === 'mapaNoRenovacion' || layer.layer.options.id === 'mapaLeadInPage'\n );\n\n if (layer) {\n layer.layer?.close();\n }\n };\n\n useEffect(() => {\n if (stepsHistory && stepsHistory.length > 0 && !multiStepScreenIndex) {\n stepsHistory[0] === screenIndex ? setIsFirstScreen(true) : setIsFirstScreen(false);\n } else {\n setIsFirstScreen(false);\n }\n }, [screenIndex, multiStepScreenIndex]);\n\n return (\n \n \n {notALayer ? null : (\n {\n e.preventDefault();\n trackingManager.trackFormCloseClick(\n {\n contentId: 'Cerrar',\n },\n { FormStart: screenIndex === 0 ? true : false }\n );\n if (formData.fields.formName.includes('no_compra') || formData.fields.formName.includes('no_renovacion') || formData.fields.formName.includes('configure')) {\n handleMapFullScreenLayer();\n }\n if (!formSubmitted) {\n handleAreYouSureLayer();\n } else {\n closeLayer();\n }\n }}\n >\n \n \n )}\n\n {isFirstScreen || props.closeThankYou ? null : (\n {\n trackingManager.trackFormStepButtonClick({\n contentId: 'Anterior',\n });\n handlePreviousStep(e);\n }}\n tag=\"button\"\n emphasis=\"secondary\"\n size=\"small\"\n icon={}\n >\n Anterior\n \n )}\n \n \n );\n}\n","import {\n Breakpoints,\n Container,\n ContainerPadding,\n Layout,\n LayoutConfiguration,\n styled,\n Text,\n TextAppearance,\n} from '@volkswagen-onehub/components-core';\nimport { Checkmark } from 'src/icons-core-imports';\nimport { Legales } from 'src/components';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { CSSTransition } from 'react-transition-group';\nimport { TIME_FOR_OPACITY_MS, TIME_FOR_TRANSFORM_MS } from 'src/globals';\nimport { OneFormState, Steps } from 'src/types';\nimport { useTrackingManager } from 'src/feature-app/hooks/use-tracking-manager';\nimport { PreviousStep, CloseComponent, Navigation } from 'src/feature-app/Screen';\nimport { useOneFormContext } from '../OneForm';\nimport { css, keyframes } from 'styled-components';\nimport { useWindowHeight, useWindowWidth } from '@react-hook/window-size';\nimport { useShowOverflow } from 'src/feature-app/hooks';\n\nconst lineKeyframe = keyframes`\n 0% {\n transform: rotate(-90deg);\n }\n 60% {\n transform: rotate(45deg);\n }\n 100% {\n transform: rotate(0deg);\n }\n`;\n\nconst AnimatedCheckmark = styled.div`\n animation: ${lineKeyframe} 0.3s ease-in;\n svg {\n color: #001e50;\n }\n`;\n\ninterface PaddingControllerProps {\n screenIndex?: number;\n multiStepScreenIndex?: number;\n showPreviousStep?: boolean;\n formHeight?: string;\n formMin?: boolean;\n isTrigger?: boolean;\n showOverflow?: boolean;\n alingItemsCenter?: boolean;\n}\n\nconst ContentCotroller = styled.div`\n width: 100%;\n min-height: calc(100vh - 140px);\n height: 100%;\n position: relative;\n display: flex;\n flex-wrap: wrap;\n overflow: ${(props) => ( props.isTrigger ? 'hidden' : 'visible')};\n padding-bottom : 44px;;\n align-items: ${(props) => props.alingItemsCenter ? 'center' : null};\n @media all and (min-width: 560px) {\n min-height: calc(100vh - 92px);\n }\n @media all and (min-width: 960px) {\n min-height: calc(100vh - 100px);\n }\n @media all and (min-width: 1920px) {\n min-height: calc(100vh - 116px);\n }\n`;\n\n\nconst FakePreviousStep = styled.div`\n height: 136px;\n`;\nconst FakeClose = styled.div`\n height: 32px; \n margin-bottom: auto; \n width: 100%;\n @media all and (min-width: 960px) {\n margin-bottom: unset;\n position: absolute;\n top: 0;\n } \n`;\ninterface PrevStepWrapperProps extends PaddingControllerProps {\n moveForward: boolean;\n distanceToMove: number;\n showPreviousStep: boolean;\n}\n\n\n\nconst PrevStepWrapper = styled.div`\n margin-left: ${(props) => (props.showPreviousStep ? 'var(--size-grid004)' : 'unset')};\n width: ${(props) => (props.showPreviousStep ? 'var(--size-grid014)' : 'unset')};\n display: flex;\n \n @media screen and (min-width: 1280px) {\n margin-left: ${(props) => (props.showPreviousStep ? 'var(--size-grid006)' : 'unset')};\n width: ${(props) => (props.showPreviousStep ? 'var(--size-grid010)' : 'unset')};\n }\n @media screen and (min-width: 1920px) {\n \n margin-left: ${(props) => (props.showPreviousStep ? 'var(--size-grid007)' : 'unset')};\n width: ${(props) => (props.showPreviousStep ? 'var(--size-grid009)' : 'unset')};\n }\n @media screen and (min-width: 2560px) {\n margin-left: ${(props) => (props.showPreviousStep ? 'var(--size-grid008)' : 'unset')};\n width: ${(props) => (props.showPreviousStep ? 'var(--size-grid007)' : 'unset')};\n }\n &.no-animation {\n opacity:1;\n }\n &.prev-step-exit-active {\n ${(props) =>\n props.moveForward\n ? css`\n transform: translate3d(0, -90%, 0);\n transition: transform ${TIME_FOR_TRANSFORM_MS}, opacity ${TIME_FOR_OPACITY_MS} ease-out;\n `\n : css`\n opacity: 0.5;\n @media screen and (min-width: 960px) {\n transform: translate3d(0, 10vh, 0);\n }\n transition: all 300ms;\n `}\n }\n &.prev-step-exit-done {\n ${(props) =>\n !props.moveForward && props.distanceToMove\n ? css`\n width: 75%;\n transition: all 250ms;\n transform: translate3d(-4.17vw, ${props.distanceToMove}px, 0);\n * {\n font-size: var(--textappearances-headline350-fontsize);\n line-height: var(--textappearances-headline350-lineheight);\n letter-spacing: var(--textappearances-headline350-letterspacing);\n opacity: 1;\n }\n `\n : css`\n transform: translate3d(0, -90%, 0);\n transition: transform ${TIME_FOR_TRANSFORM_MS}, font-size ${TIME_FOR_TRANSFORM_MS},\n line-height ${TIME_FOR_TRANSFORM_MS}, letter-spacing ${TIME_FOR_TRANSFORM_MS},\n opacity ${TIME_FOR_OPACITY_MS} ease-out;\n `}\n }\n`;\n\nconst ContentWrapper = styled.div`\n width: 100%;\n height: 100%;\n overflow: visible;\n`;\n\nconst TitleWrapper = styled.div<{ moveForward: boolean; distanceToTop: number }>`\n opacity: 0;\n &.no-animation {\n opacity: 1;\n > div {\n &:first-of-type {\n width: var(--size-grid020);\n @media all and (min-width: 960px) {\n width: var(--size-grid018);\n }\n @media all and (min-width: 1280px) {\n width: var(--size-grid014);\n }\n @media all and (min-width: 1920px) {\n width: var(--size-grid012);\n }\n @media all and (min-width: 2560px) {\n width: var(--size-grid010);\n }\n }\n }\n }\n &.title-enter {\n transform: translate3d(0%, -50%, 0);\n opacity: 0;\n width: 100% !important;\n @media screen and (min-width: 960px) {\n transform: ${(props) => (props.moveForward ? 'translate3d(0%, -50%, 0)' : 'unset')};\n opacity: ${(props) => (props.moveForward ? '0' : '1')};\n }\n }\n &.title-enter-done {\n width: 100% !important;\n transform: translate3d(0, 0, 0);\n opacity: 1;\n transition: transform ${TIME_FOR_TRANSFORM_MS}, opacity ${TIME_FOR_OPACITY_MS} ease-in;\n }\n &.title-exit {\n width: 100% !important;\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n &.title-exit-active {\n ${(props) =>\n props.moveForward\n ? css`\n opacity: 0.5;\n @media screen and (min-width: 960px) {\n transform: translate3d(var(--size-grid001), -10vh, 0);\n /* width previous step solo en forward move */\n width: var(--size-grid014) !important;\n * {\n font-size: var(--textappearances-headline300-fontsize);\n line-height: var(--textappearances-headline300-lineheight);\n letter-spacing: var(--textappearances-headline300-letterspacing);\n }\n }\n @media screen and (min-width: 1280px) {\n width: var(--size-grid010) !important;\n }\n @media screen and (min-width: 1600px) {\n transform: translate3d(var(--size-grid001), -15vh, 0);\n }\n @media screen and (min-width: 1920px) {\n transform: translate3d(var(--size-grid001), -15vh, 0)};\n width: var(--size-grid009) !important;\n }\n @media screen and (min-width: 2560px) {\n transform: translate3d(var(--size-grid001), -15vh, 0)};\n width: var(--size-grid007) !important;\n }\n transition: all 350ms;\n `\n : css`\n opacity: 0;\n transform: translate3d(0, 350%, 0);\n transition: all ${TIME_FOR_TRANSFORM_MS};\n `}\n }\n &.title-exit-done {\n /* desktop */\n ${(props) =>\n props.moveForward && props.distanceToTop\n ? css`\n opacity: 0.2;\n * {\n font-size: var(--textappearances-headline300-fontsize);\n line-height: var(--textappearances-headline300-lineheight);\n letter-spacing: var(--textappearances-headline300-letterspacing);\n }\n transform: translate3d(var(--size-grid001), -${props.distanceToTop}px, 0);\n transition: all 300ms;\n @media screen and (min-width: 960px) {\n width: var(--size-grid014) !important;\n }\n @media screen and (min-width: 1280px) {\n width: var(--size-grid010) !important;\n }\n @media screen and (min-width: 1920px) {\n width: var(--size-grid009) !important;\n }\n @media screen and (min-width: 2560px) {\n width: var(--size-grid007) !important;\n }\n `\n : css`\n opacity: 0;\n width: inherit !important;\n transform: translate3d(0, 45vh, 0);\n transition: all 300ms;\n @media screen and (min-width: 960px) {\n transform: translate3d(0, 350%, 0);\n transition: transform ${TIME_FOR_TRANSFORM_MS}, font-size ${TIME_FOR_TRANSFORM_MS},\n line-height ${TIME_FOR_TRANSFORM_MS}, letter-spacing ${TIME_FOR_TRANSFORM_MS},\n opacity ${TIME_FOR_OPACITY_MS} ease-out;\n }\n `}\n }\n`;\n\nconst MobileTitleWrapper = styled.div<{ moveForward: boolean; distanceToTop: number }>`\n width: var(--size-grid020) !important;\n padding-top: 52px;\n &.title-enter {\n transform: translate3d(0%, -50%, 0);\n opacity: 0;\n }\n &.title-enter-done {\n transform: translate3d(0, 0, 0);\n opacity: 1;\n transition: transform ${TIME_FOR_TRANSFORM_MS}, opacity ${TIME_FOR_OPACITY_MS} ease-in;\n }\n &.title-exit {\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n &.title-exit-active {\n ${(props) =>\n props.moveForward\n ? css`\n opacity: 0.1;\n transition: all 200ms;\n `\n : css`\n opacity: 0;\n transform: translate3d(0, 350%, 0);\n transition: all ${TIME_FOR_TRANSFORM_MS};\n `}\n }\n &.title-exit-done {\n opacity: ${(props) => (props.moveForward ? '0.1' : '0')};\n /* mobile */\n transform: ${(props) => (props.moveForward ? 'translate3d(0, -25vh, 0)' : 'translate3d(0, 45vh, 0)')};\n transition: all 300ms;\n }\n`;\n\nconst FieldsWrapper = styled.div<{ opacity: string }>`\n opacity: ${(props) => props.opacity};\n &.fields-enter {\n transform: translate3d(0, 25%, 0);\n opacity: 0;\n }\n &.fields-enter-active {\n transform: translate3d(0, 0, 0);\n opacity: 1;\n transition: transform ${TIME_FOR_TRANSFORM_MS}, opacity 300ms ease-in;\n }\n &.fields-exit {\n opacity: 0;\n }\n &.fields-exit-active {\n opacity: 0;\n }\n`;\ninterface ScreenProps {\n title: JSX.Element;\n fields: JSX.Element;\n key: number;\n avoidTrackFormStepLoad?: boolean;\n thankYouPage?: boolean;\n}\n\nconst defaultLayout: LayoutConfiguration = {\n [Breakpoints.default]: [\n { name: '.', columns: 2 },\n { name: 'a', columns: 20 },\n { name: '.', columns: 2 },\n ],\n [Breakpoints.b960]: [\n { name: '.', columns: 3 },\n { name: 'a', columns: 18 },\n { name: '.', columns: 3 },\n ],\n [Breakpoints.b1280]: [\n { name: '.', columns: 5 },\n { name: 'a', columns: 14 },\n { name: '.', columns: 5 },\n ],\n [Breakpoints.b1920]: [\n { name: '.', columns: 6 },\n { name: 'a', columns: 12 },\n { name: '.', columns: 6 },\n ],\n [Breakpoints.b2560]: [\n { name: '.', columns: 7 },\n { name: 'a', columns: 10 },\n { name: '.', columns: 7 },\n ],\n};\n\nexport function FullScreen(props: ScreenProps) {\n const { title, fields, key, avoidTrackFormStepLoad, thankYouPage } = props;\n const { formInfo, formData } = useSelector((state: OneFormState) => state);\n const { \n multiStepScreenIndex, \n screenIndex, \n triggerExitAnimation, \n showFinalScreen, \n numberOfScreens, \n formEnded,\n alingItemsCenter, \n deleteCloseAndPrevious\n } = formInfo;\n const trackingManager = useTrackingManager();\n const {\n distanceToMove,\n setDistanceToMove,\n moveForward,\n nextScreenIndex,\n nextMultiStepScreenIndex,\n showPreviousStep,\n } = useOneFormContext();\n\n //Si se necesita que el overflow sea visible. Selectsno nativos, suggests, etc. Añadir en la definicion del step showOverflow.\n\n const { showOverflow } = useShowOverflow(false);\n\n //Añadir link pdf concursos (hay que ir al componente Legales para setear la url)\n const [ showBasesLegales, setShowBasesLegales ] = useState(false);\n\n const [isConfiracionPage, setIsConfirmacionPage] = useState(false);\n\n useEffect(() => {\n\n if(formData.fields.formName ==='adhoc-2021-eurocopa') {\n setShowBasesLegales(true);\n }\n\n if (showFinalScreen) {\n setIsConfirmacionPage(false);\n }\n\n if (screenIndex === numberOfScreens - 1) {\n if( formData.fields.formName === 'cem-venta' || formData.fields.formName === 'cem-posventa' ){\n setIsConfirmacionPage(false);\n } else {\n setIsConfirmacionPage(true);\n } \n } else {\n setIsConfirmacionPage(false);\n }\n }, [screenIndex, showFinalScreen]);\n\n // calc height stuff\n const [initialHeight, setInitialHeight] = useState(null);\n const [isTrigger, setIsTrigger] = useState(false);\n const viewportHeight = useWindowHeight();\n const viewportWidth = useWindowWidth();\n\n const content = useRef(null);\n const prevStep = useRef(null);\n\n const [currentRef, setCurrentRef] = useState(null); // optimizar ocn useMemo\n\n // animation stuff\n const [showFields, setShowFields] = useState(false);\n const [showTitle, setShowTitle] = useState(false);\n const [opacity, setOpacity] = useState('0');\n\n // variables para animacion entre steps\n const [distanceToTop, setDistanceToTop] = useState(0);\n const titleRef = useRef(null);\n const contentRef = useRef(null);\n\n // navigation stuff\n const [formClicked, setFormClicked] = useState(false);\n\n useEffect(() => {\n if (!formClicked) {\n document.body.scrollTop = 0; // For Safari\n document.documentElement.scrollTop = 0; // For Chrome, Firefox, IE and Opera\n }\n }, [formClicked]);\n\n // usar useLayoutEffect para asegurar que los cálculos de distancias se hacen antes de un nuevo render del contenido\n useEffect(() => {\n setTimeout(() => {\n if (titleRef.current && contentRef.current) {\n const titleLength = titleRef.current.innerText.length;\n // titleRef.current.scrollIntoView({ behavior: 'smooth', block: 'end' });\n /*\n extra height en breakpoints grandes y dependiendo de la longitud del título, que afecta a la animación\n desconozco por qué ocurre, pero no depende del viewport height, sino del viewport width\n */\n if (window.matchMedia('(min-width: 1600px)').matches && contentRef) {\n const extraHeight = titleLength < 60 ? (titleLength < 53 ? 8 : 18) : 36;\n setDistanceToTop(titleRef.current.offsetTop + extraHeight);\n } else {\n const extraHeight = titleLength < 53 ? 18 : 0;\n // setDistanceToTop(titleRef.current.getBoundingClientRect().top - extraHeight);\n setDistanceToTop(\n titleRef.current.getBoundingClientRect().top -\n contentRef.current.getBoundingClientRect().top +\n 32 -\n extraHeight\n );\n }\n /*\n guardar distancia del título a la parte superior del contenedor padre en un array de distancias\n para saber la distancia que tiene que recorrer el previousStep si la navegación va para atrás\n */\n if ((screenIndex === 0 && nextScreenIndex === null) || screenIndex + 1 > distanceToMove.length) {\n const extraHeight = titleLength < 53 ? 18 : 0;\n setDistanceToMove((distanceToMove) => [\n ...distanceToMove,\n titleRef.current.getBoundingClientRect().top -\n contentRef.current.getBoundingClientRect().top +\n 32 -\n extraHeight,\n ]);\n } else if (\n screenIndex + 1 <= distanceToMove.length &&\n nextMultiStepScreenIndex !== 1 &&\n nextMultiStepScreenIndex !== 2\n ) {\n const arrDistances = distanceToMove;\n const extraHeight = titleLength < 53 ? 18 : 0;\n arrDistances[screenIndex] =\n titleRef.current.getBoundingClientRect().top -\n contentRef.current.getBoundingClientRect().top +\n 32 -\n extraHeight;\n setDistanceToMove(arrDistances);\n }\n }\n }, 0);\n }, [titleRef]);\n\n useEffect(() => {\n if (triggerExitAnimation) {\n if (!formEnded) {\n setShowTitle(false);\n setShowFields(false);\n }\n }\n }, [triggerExitAnimation]);\n\n useEffect(() => {\n // Ni en la primera carga ni en la thank you page se tiene que disparar este evento.\n // El flag isFirstStep solo lo necesitamos en la primera carga, después si que se tiene que disparar el evento.\n \n if (formInfo.step?.isFirstStep || avoidTrackFormStepLoad || (formInfo.stepsHistory?.length === 1 && (!multiStepScreenIndex || multiStepScreenIndex === 0))) {\n formInfo.step.isFirstStep = false;\n return;\n }\n trackingManager.trackFormStepLoad(\n {\n // contentId: step.title\n },\n {\n FormStart: false,\n }\n );\n }, [title]);\n\n useEffect(() => {\n if (window.matchMedia('(max-width: 960px)').matches && contentRef) {\n contentRef.current.scrollTo({ top: 0 });\n }\n setShowTitle(true);\n }, []);\n\n //Que en la zona del mapa no vuelva a lanzar las animaciones\n const [ stopAnimation, setStopAnimation ] = useState(false);\n\n useEffect(()=>{\n\n if( \n formData.fields.formName === 'no_compra-no_tengo' \n && screenIndex === 4 \n && multiStepScreenIndex === 0 \n || formData.fields.formName === 'no_compra-no_tengo' \n && screenIndex === 5 \n && multiStepScreenIndex === 0 \n ) {\n setStopAnimation(true); \n }\n \n }, [screenIndex]);\n\n const [ hideCloseAndPrevious, setHideCloseAndPrevious ] = useState(false);\n\n useEffect(()=>{\n\n if(deleteCloseAndPrevious){\n if(\n formData.fields.formName === 'lead-test_drive-configure' && multiStepScreenIndex === 0 && screenIndex === 0\n || formData.fields.formName === 'lead-presupuesto-configure' && multiStepScreenIndex === 0 && screenIndex === 0\n || formData.fields.formName === 'lead-mas_informacion-configure' && multiStepScreenIndex === 0 && screenIndex === 0\n || formData.fields.formName === 'lead-cita-configure' && multiStepScreenIndex === 0 && screenIndex === 0\n ) {\n setHideCloseAndPrevious(true);\n } else {\n setHideCloseAndPrevious(false);\n }\n } else {\n setHideCloseAndPrevious(false);\n }\n \n }, [screenIndex]);\n\n const [ alingContentCenter, setAlingContentCenter ] = useState(false);\n\n useEffect(()=>{\n if(viewportWidth < 960 || alingItemsCenter=== true) {\n setAlingContentCenter(true);\n } else {\n setAlingContentCenter(false);\n }\n }, [screenIndex]);\n\n\n return (\n <>\n \n {showFinalScreen || hideCloseAndPrevious ? null : screenIndex === 0 ? (\n \n ) : (\n \n )}\n\n {showFinalScreen || hideCloseAndPrevious ? null : viewportWidth >= 960 && !showPreviousStep ? (\n \n ) : viewportWidth >= 960 ?\n (\n \n \n \n \n \n ) : null}\n\n \n \n <>\n {showFinalScreen ? (\n \n \n \n \n \n ) : null}\n\n {\n viewportWidth < 960 ? (\n {\n setTimeout(() => {\n setShowFields(true);\n }, 100);\n }}\n onExited={() => {}}\n >\n \n {title}\n \n \n ) : (\n {\n setTimeout(() => {\n setShowFields(true);\n }, 100);\n }}\n onExited={() => {}}\n >\n \n {title}\n \n \n )\n }\n \n \n\n {\n setOpacity('1');\n }}\n onExited={() => {\n setOpacity('0');\n }}\n >\n {fields}\n \n \n \n {showFinalScreen ? null : (\n <>\n {isConfiracionPage ? (\n \n \n \n ) : null}\n \n )}\n \n );\n}\n","import {\n Breakpoints,\n Container,\n ContainerPadding,\n Layout,\n styled,\n Text,\n TextAppearance,\n BreakpointWrapper,\n} from '@volkswagen-onehub/components-core';\nimport { Checkmark } from 'src/icons-core-imports';\n\nimport React, { useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { CSSTransition } from 'react-transition-group';\nimport { TIME_FOR_OPACITY_MS, TIME_FOR_TRANSFORM_MS } from 'src/globals';\nimport { OneFormState } from 'src/types';\nimport { useTrackingManager, useFeatureAppConfig, useShowOverflow } from 'src/feature-app/hooks';\nimport { PreviousStep } from 'src/feature-app/Screen';\nimport { useOneFormContext } from '../OneForm';\nimport { css, keyframes } from 'styled-components';\n\nconst lineKeyframe = keyframes`\n 0% {\n transform: rotate(-90deg); \n }\n 60% {\n transform: rotate(45deg);\n }\n 100% {\n transform: rotate(0deg);\n }\n`;\n\nconst AnimatedCheckmark = styled.div`\n animation: ${lineKeyframe} 0.3s ease-in;\n svg {\n color: #ffffff;\n }\n`;\n\ninterface PaddingControllerProps {\n screenIndex: number;\n multiStepScreenIndex: number;\n showPreviousStep?: boolean;\n isDealerCalendar?: boolean;\n showOverflow?: boolean;\n}\n\nconst ContentCotroller = styled.div`\n display: flex;\n flex-direction: column;\n padding-top: ${(props) => (!props.showPreviousStep ? '0' : '80px')};\n padding-bottom: ${(props) => (!props.showPreviousStep ? '0' : props.screenIndex === 10 ? '96px' : '128px')};\n min-height: 100vh;\n width: 100%;\n overflow: ${(props) => (props.showOverflow ? 'visible' : 'auto')};\n`;\n\ninterface PrevStepWrapperProps extends PaddingControllerProps {\n moveForward: boolean;\n distanceToMove: number;\n showPreviousStep: boolean;\n}\n\nconst PrevStepWrapper = styled.div`\n margin-left: ${(props) => (props.showPreviousStep ? '160px' : 'unset')};\n width: ${(props) => (props.showPreviousStep ? '640px' : 'unset')};\n padding-bottom: ${(props) =>\n props.screenIndex === 2 && props.multiStepScreenIndex === 2 ? null : props.showPreviousStep ? '72px' : '0p'};\n display: flex;\n\n @media all and (max-height: 624px) {\n padding-bottom: ${(props) =>\n props.screenIndex === 2 && props.multiStepScreenIndex === 2 ? null : props.showPreviousStep ? '44px' : '0p'};\n }\n\n &.prev-step-exit-active {\n ${(props) =>\n props.moveForward\n ? css`\n transform: translate3d(0, -90%, 0);\n transition: transform ${TIME_FOR_TRANSFORM_MS}, opacity ${TIME_FOR_OPACITY_MS} ease-out;\n `\n : css`\n opacity: 0.5;\n @media screen and (min-width: 960px) {\n transform: translate3d(0, 10vh, 0);\n }\n transition: all 300ms;\n `}\n }\n &.prev-step-exit-done {\n transform: ${(props) =>\n props.moveForward\n ? 'translate3d(0, -90%, 0)'\n : props.distanceToMove\n ? `translate3d(-41px, ${props.distanceToMove}px, 0)`\n : 'translate3d(-41px, 300px, 0)'};\n @media screen and (min-width: 1600px) {\n transform: ${(props) =>\n props.moveForward\n ? 'translate3d(0, -90%, 0)'\n : props.distanceToMove\n ? `translate3d(-41px, calc(${props.distanceToMove}px + 36px), 0)`\n : 'translate3d(-41px, 300px, 0)'};\n }\n ${(props) =>\n !props.moveForward &&\n css`\n width: 709px;\n * {\n font-size: var(--textappearances-headline350-fontsize);\n line-height: var(--textappearances-headline350-lineheight);\n letter-spacing: var(--textappearances-headline350-letterspacing);\n @media screen and (min-width: 1600px) {\n font-size: var(--textappearances-headline300-fontsize);\n line-height: var(--textappearances-headline300-lineheight);\n letter-spacing: var(--textappearances-headline300-letterspacing);\n }\n opacity: 1;\n }\n `}\n transition: ${(props) =>\n props.moveForward\n ? `\n transform ${TIME_FOR_TRANSFORM_MS},\n font-size ${TIME_FOR_TRANSFORM_MS},\n line-height ${TIME_FOR_TRANSFORM_MS},\n letter-spacing ${TIME_FOR_TRANSFORM_MS},\n opacity ${TIME_FOR_OPACITY_MS} ease-out\n `\n : 'all 250ms'}\n }\n`;\n\nconst ContentWrapper = styled.div`\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n justify-content: center;\n width: 100%;\n overflow: ${(props) => (props.showOverflow ? 'visible' : 'auto')};\n @media all and (max-height: 573px) and (min-width: 960px) {\n margin-top: ${(props) => (props.screenIndex === 2 && props.multiStepScreenIndex === 1 ? '146px' : null)};\n }\n @media screen and (max-width: 959px) {\n padding-top: ${(props) => (props.isDealerCalendar ? null : props.multiStepScreenIndex === 0 ? '44px' : null)};\n }\n`;\n\nconst TitleWrapper = styled.div<{ moveForward: boolean; distanceToTop: number }>`\n &.title-enter {\n transform: translate3d(0%, -50%, 0);\n opacity: 0;\n @media screen and (min-width: 960px) {\n transform: ${(props) => (props.moveForward ? 'translate3d(0%, -50%, 0)' : 'unset')};\n opacity: ${(props) => (props.moveForward ? '0' : '1')};\n }\n }\n &.title-enter-done {\n transform: translate3d(0, 0, 0);\n opacity: 1;\n transition: transform ${TIME_FOR_TRANSFORM_MS}, opacity ${TIME_FOR_OPACITY_MS} ease-in;\n }\n &.title-exit {\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n &.title-exit-active {\n ${(props) =>\n props.moveForward\n ? css`\n opacity: 0.5;\n @media screen and (min-width: 960px) {\n transform: translate3d(41px, -10vh, 0);\n /* width previous step solo en forward move */\n width: 640px;\n * {\n font-size: var(--textappearances-headline250-fontsize);\n line-height: var(--textappearances-headline250-lineheight);\n letter-spacing: var(--textappearances-headline250-letterspacing);\n }\n }\n @media screen and (min-width: 1600px) {\n transform: translate3d(41px, -15vh, 0);\n /* width previous step solo en forward move */\n width: 640px;\n * {\n font-size: var(--textappearances-headline250-fontsize);\n line-height: var(--textappearances-headline250-lineheight);\n letter-spacing: var(--textappearances-headline250-letterspacing);\n }\n }\n transition: all 350ms;\n `\n : css`\n opacity: 0;\n transform: translate3d(0, 350%, 0);\n transition: all ${TIME_FOR_TRANSFORM_MS};\n `}\n }\n &.title-exit-done {\n opacity: ${(props) => (props.moveForward ? '0.2' : '0')};\n /* mobile */\n transform: ${(props) => (props.moveForward ? 'translate3d(0, -25vh, 0)' : 'translate3d(0, 45vh, 0)')};\n transition: all 300ms;\n /* desktop */\n @media screen and (min-width: 960px) {\n transform: ${(props) =>\n props.moveForward ? `translate3d(41px, -${props.distanceToTop}px, 0)` : 'translate3d(0, 350%, 0)'};\n /* width previous step solo en forward move */\n width: ${(props) => (props.moveForward ? '640px' : 'inherit')};\n ${(props) =>\n props.moveForward &&\n css`\n * {\n font-size: var(--textappearances-headline250-fontsize);\n line-height: var(--textappearances-headline250-lineheight);\n letter-spacing: var(--textappearances-headline250-letterspacing);\n }\n `}\n transition: ${(props) =>\n props.moveForward\n ? 'all 300ms'\n : `\n transform ${TIME_FOR_TRANSFORM_MS},\n font-size ${TIME_FOR_TRANSFORM_MS},\n line-height ${TIME_FOR_TRANSFORM_MS},\n letter-spacing ${TIME_FOR_TRANSFORM_MS},\n opacity ${TIME_FOR_OPACITY_MS} ease-out\n `};\n }\n /* @media screen and (min-width: 1600px) {\n transform: ${(props) =>\n props.moveForward ? `translate3d(41px, calc(-${props.distanceToTop}px - 36px), 0)` : 'translate3d(0, 350%), 0'};\n } */\n }\n`;\n\nconst FieldsWrapper = styled.div<{ opacity: string }>`\n opacity: ${(props) => props.opacity};\n &.fields-enter {\n transform: translate3d(0, 25%, 0);\n opacity: 0;\n }\n &.fields-enter-active {\n transform: translate3d(0, 0, 0);\n opacity: 1;\n transition: transform ${TIME_FOR_TRANSFORM_MS}, opacity 300ms ease-in;\n }\n &.fields-exit {\n opacity: 0;\n }\n &.fields-exit-active {\n opacity: 0;\n }\n`;\n\ninterface ScreenProps {\n title: JSX.Element;\n fields: JSX.Element;\n key: number;\n avoidTrackFormStepLoad?: boolean;\n}\n\nexport function LayerScreen(props: ScreenProps) {\n const { title, fields, key, avoidTrackFormStepLoad } = props;\n const { formInfo } = useSelector((state: OneFormState) => state);\n const { multiStepScreenIndex, screenIndex, triggerExitAnimation, showFinalScreen, lastStep } = formInfo;\n const trackingManager = useTrackingManager();\n const config = useFeatureAppConfig();\n const {\n distanceToMove,\n setDistanceToMove,\n moveForward,\n nextScreenIndex,\n nextMultiStepScreenIndex,\n showPreviousStep,\n } = useOneFormContext();\n\n const [showFields, setShowFields] = useState(false);\n const [showTitle, setShowTitle] = useState(false);\n const [opacity, setOpacity] = useState('0');\n\n //Si se necesita que el overflow sea visible. Selectsno nativos, suggests, etc. Añadir en la definicion del step showOverflow.\n\n const { showOverflow } = useShowOverflow(true);\n\n //para el calendario de cita-posventa-dealer\n\n const [isDealerCalendar, setIsDealerCalendar] = useState(false);\n\n useEffect(() => {\n if (config.trigger === 'cita-posventa-dealer' && screenIndex === 2) {\n setIsDealerCalendar(true);\n } else {\n setIsDealerCalendar(false);\n }\n }, [screenIndex]);\n\n // variables para animacion entre steps\n const [distanceToTop, setDistanceToTop] = useState(0);\n const titleRef = useRef(null);\n const contentRef = useRef(null);\n\n // usar useLayoutEffect para asegurar que los cálculos de distancias se hacen antes de un nuevo render del contenido\n useEffect(() => {\n setTimeout(() => {\n if (titleRef.current && contentRef.current) {\n const titleLength = titleRef.current.innerText.length;\n // titleRef.current.scrollIntoView({ behavior: 'smooth', block: 'end' });\n /*\n extra height en breakpoints grandes y dependiendo de la longitud del título, que afecta a la animación\n desconozco por qué ocurre, pero no depende del viewport height, sino del viewport width\n */\n if (window.matchMedia('(min-width: 1600px)').matches && contentRef) {\n const extraHeight = titleLength < 60 ? (titleLength < 53 ? 8 : 18) : 36;\n setDistanceToTop(titleRef.current.offsetTop + extraHeight);\n } else {\n // console.log(titleRef.current.offsetTop, titleRef.current.getBoundingClientRect().top);\n const extraHeight = titleLength < 53 ? 18 : 0;\n setDistanceToTop(titleRef.current.getBoundingClientRect().top - extraHeight);\n }\n /*\n guardar distancia del título a la parte superior del contenedor padre en un array de distancias\n para saber la distancia que tiene que recorrer el previousStep si la navegación va para atrás\n */\n if ((screenIndex === 0 && nextScreenIndex === null) || screenIndex + 1 > distanceToMove.length) {\n setDistanceToMove((distanceToMove) => [...distanceToMove, titleRef.current.getBoundingClientRect().top]);\n } else if (\n screenIndex + 1 <= distanceToMove.length &&\n nextMultiStepScreenIndex !== 1 &&\n nextMultiStepScreenIndex !== 2\n ) {\n const arrDistances = distanceToMove;\n arrDistances[screenIndex] = titleRef.current.getBoundingClientRect().top;\n setDistanceToMove(arrDistances);\n }\n }\n }, 0);\n }, [titleRef]);\n\n useLayoutEffect(() => {\n if (triggerExitAnimation) {\n setShowTitle(false);\n setShowFields(false);\n }\n }, [triggerExitAnimation]);\n\n useEffect(() => {\n // Ni en la primera carga ni en la thank you page se tiene que disparar este evento.\n // El flag isFirstStep solo lo necesitamos en la primera carga, después si que se tiene que disparar el evento.\n setTimeout(() => {\n if (formInfo.step?.isFirstStep || avoidTrackFormStepLoad || (formInfo.stepsHistory?.length === 1 && (!multiStepScreenIndex || multiStepScreenIndex === 0))) {\n formInfo.step.isFirstStep = false;\n return;\n }\n trackingManager.trackFormStepLoad(\n {\n // contentId: step.title\n },\n {\n FormStart: false,\n }\n );\n }, 0);\n }, [title]);\n\n useEffect(() => {\n if (window.matchMedia('(max-width: 960px)').matches && contentRef) {\n contentRef.current.scrollTo({ top: 0 });\n }\n setShowTitle(true);\n }, []);\n\n return (\n \n {showFinalScreen || !showPreviousStep ? null : (\n \n \n \n \n \n \n \n )}\n \n
\n \n <>\n {showFinalScreen ? (\n \n \n \n \n \n ) : null}\n {\n setTimeout(() => {\n setShowFields(true);\n }, 100);\n }}\n onExited={() => {}}\n >\n \n \n {title}\n \n \n {title}\n \n \n \n \n \n {\n setOpacity('1');\n }}\n onExited={() => {\n setOpacity('0');\n }}\n >\n {fields}\n \n
\n \n \n );\n}\n","import {\n NextBestActionButton,\n styled,\n Text,\n TextAppearance,\n TextColor,\n ThemeProvider,\n} from '@volkswagen-onehub/components-core';\nimport { ArrowDown } from 'src/icons-core-imports';\nimport React, { useEffect, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useSelector, useDispatch, useStore } from 'react-redux';\nimport { CSSTransition } from 'react-transition-group';\nimport {\n isNumber,\n useLoaded,\n useTrackingManager,\n} from 'src/feature-app';\nimport { useOneFormContext } from 'src/feature-app/OneForm';\nimport { TIME_FOR_OPACITY_MS, TIME_FOR_TRANSFORM_MS } from 'src/globals';\nimport { OneFormState, Steps } from 'src/types';\n\ninterface navigationWrapperProps {\n fullScreen?: boolean;\n isLastScreen?: boolean;\n notALayer?: boolean;\n colorTheme?: string;\n formMin?: boolean;\n position?: string;\n}\n\nconst NavigationWrapper = styled.div`\n display: ${(props) => (props.notALayer ? 'block' : props.fullScreen ? 'none' : props.isLastScreen ? 'none' : 'block')};\n position: ${(props) => (!props.notALayer ? 'fixed' : props.position ? props.position : 'relative')};\n bottom: 0;\n \n width: 100%;\n background-color: ${(props) => (props.notALayer ? 'transparent' : props.colorTheme === 'main' ? 'none' : '#001e50')};\n &:first-child {\n width: 100%;\n }\n\n @media screen and (min-width: 960px) {\n width: ${(props) => (props.notALayer ? '100%' : '960px')};\n }\n\n &.navigation-enter {\n transform: translate(0%, 50%);\n opacity: 0;\n }\n &.navigation-enter-active {\n transform: translate(0, 0);\n opacity: 1;\n transition: transform ${TIME_FOR_TRANSFORM_MS}, opacity ${TIME_FOR_OPACITY_MS} ease-in;\n }\n &.navigation-enter-done {\n }\n &.navigation-exit {\n transform: translate(0, 0);\n opacity: 1;\n }\n &.navigation-exit-active {\n transform: translate(0, -100%);\n opacity: 0.01;\n transition: all ${TIME_FOR_TRANSFORM_MS}, opacity ${TIME_FOR_OPACITY_MS} ease-in;\n }\n`;\n\ninterface ProgressWrapperProps {\n notALayer?: boolean;\n}\n\nconst ProgressWrapper = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n width: ${(props) => (props.notALayer ? 'var(--size-grid010)' : '187px')};\n \n @media all and (min-width: 560px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid013)' : '303px')};\n }\n @media all and (min-width: 960px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid008)' : '320px')};\n }\n @media all and (min-width: 1280px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid006)' : '320px')};\n }\n @media all and (min-width: 1920px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid005)' : '320px')};\n }\n @media all and (min-width: 2560px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid004)' : '320px')};\n }\n`;\n\nconst BarWrapper = styled.div`\n width: 100%;\n position: relative;\n`;\n\ninterface UpperBarProps {\n width?: number;\n colorTheme?: string;\n}\nconst UpperBar = styled.div`\n position: absolute;\n width: ${(props) => `${props.width}%`};\n height: 2px;\n background: ${(props) => (props.colorTheme === 'main' ? '#001E50' : '#ffffff')};\n transition: all 0.3s;\n`;\n\nconst LowerBar = styled.div`\n position: absolute;\n width: 100%;\n height: 2px;\n background: ${(props) => (props.colorTheme === 'main' ? '#DFE4E8' : '#6a767d')} ;\n`;\n\nconst TextWrapper = styled.div`\n align-self: flex-end;\n margin-top: 8px;\n`;\n\nconst DisplayWrapper = styled.div` \n display: flex;\n justify-content: space-between;\n align-items: ${(props) => (props.notALayer ? 'flex-end' : null)};\n\n width: 100%;\n padding-bottom: ${(props) => (props.notALayer ? '16px' : props.fullScreen ? '0' : props.isLastScreen ? '0' : '20px')};\n padding-left: var(--size-grid002);\n padding-right:${(props) => (props.notALayer ? 'var(--size-grid002)' : 'var(--size-grid001)')};\n\n @media screen and (min-width: 560px) {\n padding-bottom: ${(props) => (props.notALayer ? '16px' : props.fullScreen ? '0' : props.isLastScreen ? '0' : '24px')};\n }\n @media screen and (min-width: 960px) {\n padding-left:${(props) => (props.notALayer ? 'var(--size-grid003)' : '120px')};\n padding-right: ${(props) => (props.notALayer ? 'var(--size-grid003)' : '40px')};\n padding-bottom: ${(props) => (props.notALayer ? '16px' : props.fullScreen ? '0' : props.isLastScreen ? '0' : '44px')};\n }\n @media screen and (min-width: 1280px) {\n padding-left: ${(props) => (props.notALayer ? 'var(--size-grid005)' : '120px')};\n padding-right: ${(props) => (props.notALayer ? 'var(--size-grid005)' : '40px')};\n }\n @media screen and (min-width: 1920px) {\n padding-left: ${(props) => (props.notALayer ? 'var(--size-grid006)' : '120px')};\n padding-right: ${(props) => (props.notALayer ? 'var(--size-grid006)' : '40px')};\n }\n @media screen and (min-width: 2560px) {\n padding-left: ${(props) => (props.notALayer ? 'var(--size-grid007)' : '120px')};\n padding-right: ${(props) => (props.notALayer ? 'var(--size-grid007)' : '40px')};\n }\n`;\n\nconst BackgroundPositionWrapper = styled.div`\n position: ${(props) => (props.notALayer ? 'relative' : null)};\n width: 100%; \n`;\n\nconst BackgroundColorNotALayer = styled.div`\n position: absolute;\n bottom: 0;\n width: 100%;\n background-color: #FFFFFF;\n border-top: ${(props) => props.position === 'fixed' ? '1px solid #DFE4E8' : null } ;\n height: 56px;\n z-index: -1;\n`;\n\nconst SVGColorWrapper = styled.div<{isValid: boolean}>`\n svg {\n color: ${(props)=>(props.isValid ? '#001E50' : '#6A767D')};\n }\n`;\n\nconst NextButtonWrapper = styled.div`\n padding-bottom: ${(props) => (props.notALayer ? '8px' : null)};\n`;\n\nconst NextButton = styled.button<{isValid: boolean}>`\n height: 64px;\n width: 64px;\n border-radius: 50%;\n border: none;\n background-color: ${(props)=>(props.isValid ? '#00B0F0' : '#C2CACF')};\n cursor: pointer;\n\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nfunction InnerNavigation(props: any) {\n const { formClicked, setFormClicked, notALayer, colorTheme, soloProgreso, isFullScreen, isLastScreen, position } = props;\n const { formInfo, formData } = useSelector(\n (state: OneFormState) => state\n );\n const { fields } = formData;\n const { screenIndex, numberOfScreens, multiStepScreenIndex, step, steps } = useSelector(\n (state: OneFormState) => state.formInfo\n );\n const { getValues, errors, triggerValidation, clearError } = useFormContext();\n const store = useStore();\n const { handleNextStep, setShowPreviousStep, isValueSelected, setIsValueSelected, setError } = useOneFormContext();\n const [isValid, setIsValid] = useState(false);\n const trackingManager = useTrackingManager();\n\n //Navigation\n\n const checkIfValid = async () => {\n const valid = await triggerValidation();\n clearError();\n\n if (valid) { \n if(screenIndex === 0 && !formClicked) {\n if(fields.formName === 'no_compra-ya_tengo') {\n setIsValid(true);\n setError(false);\n } else {\n setIsValid(false);\n }\n } else {\n setIsValid(true);\n setError(false);\n }\n } else {\n setIsValid(false);\n }\n };\n \n\n useEffect(() => {\n const checkValidity = async () => await checkIfValid();\n if (formClicked || isValueSelected) {\n checkValidity();\n if (formClicked) setFormClicked(false);\n if (isValueSelected) setIsValueSelected(false);\n }\n }, [formClicked, isValueSelected]);\n\n useEffect(() => {\n setTimeout(() => {\n if (steps) {\n const currentStep = steps.find((step) => step.screenIndex === screenIndex);\n const { notALayer } = store.getState().formInfo;\n if (\n !notALayer && (\n (screenIndex === 0 && !steps[screenIndex].multiStep) ||\n screenIndex === numberOfScreens - 1 ||\n (currentStep && currentStep.hidePreviousStep) ||\n screenIndex > numberOfScreens\n )\n ) {\n setShowPreviousStep(false);\n } else {\n setShowPreviousStep(true);\n }\n }\n }, 100);\n\n const checkValidity = async () => await checkIfValid();\n\n setTimeout(() => {\n checkValidity();\n }, 600);\n }, [screenIndex]);\n\n useEffect(() => {\n const {\n step,\n multiSteps,\n multiStepScreenIndex,\n }: { step: Steps; multiSteps: Steps[]; multiStepScreenIndex: number } = store.getState().formInfo;\n\n setTimeout(() => {\n if (multiSteps && isNumber(multiStepScreenIndex) && step && step.multiStep) {\n if (multiSteps[multiStepScreenIndex].hidePreviousStep) {\n setShowPreviousStep(false);\n } else {\n setShowPreviousStep(true);\n }\n } else {\n setShowPreviousStep(true);\n }\n }, 0);\n\n const checkValidity = async () => await checkIfValid();\n\n setTimeout(() => {\n checkValidity();\n }, 600);\n }, [multiStepScreenIndex]);\n\n const getPercentage = (): string => {\n const percentage = ((screenIndex / (numberOfScreens - 1)) * 100).toFixed(0);\n if(numberOfScreens - 1 == 1) {\n return '50';\n }\n else if(percentage === '0') {\n return '5';\n }\n else {\n return percentage;\n }\n };\n\n return (\n \n {\n notALayer ? : null\n }\n \n \n \n \n \n \n \n \n {getPercentage()}% completado\n \n \n \n {\n soloProgreso ? null : (\n \n \n {\n trackingManager.trackFormStepButtonClick({\n contentId: 'Siguiente',\n });\n handleNextStep(e);\n }}\n isValid={isValid}\n >\n \n \n \n \n \n \n )\n } \n \n \n );\n}\n\ninterface NavigationProps {\n formClicked?: boolean;\n setFormClicked?: React.Dispatch>;\n notALayer?: boolean;\n colorTheme?: string;\n refProps?: any;\n formMin?: boolean;\n soloProgreso: boolean;\n position?: string;\n}\n\nexport function Navigation(props: NavigationProps) {\n const { colorTheme, notALayer, position } = props;\n const { screenIndex, step } = useSelector((state: OneFormState) => state.formInfo);\n const loaded = useLoaded();\n const [isLastScreen, setIsLastScreen] = useState(false);\n const { isFullScreen } = useOneFormContext();\n const store = useStore();\n\n useEffect(() => {\n const { formInfo } = store.getState();\n const { step, lastStep } = formInfo;\n if (step && lastStep) {\n step.screenIndex === lastStep.screenIndex ? setIsLastScreen(true) : setIsLastScreen(false);\n }\n }, [step]);\n\n return (\n \n \n {isLastScreen ? null : }\n \n \n );\n}\n","import {\n ctaDatosIncorrectos,\n ctaDatosIncorrectosPosventa,\n ctaAlternativaTransporte,\n ctaMotivoVisita,\n ctaTestDrive,\n CTAsMotivo,\n CTAsTipoVisita,\n CTAsTipoVisitaNo,\n CTAsMotivoNoQuiero,\n CTAsDudas,\n contactoOptionsSAC,\n CTAsNuevoOcasión,\n CTAsUsadoNuevo,\n CTAsMotivoRenovadorNoTengo,\n periodoContactoOptions,\n ctaEnviarRespuesta,\n ctaContactoSatisfaccion,\n CTAsFormasMovilidad,\n CTAsRazones, \n contactoOptionsTurismos,\n CTAsLugarCompra\n,} from 'src/feature-app/InputsValues/CTAsObjects';\nimport { \n CTAsDesplazamientoTaigo,\n CTAsMotivacionCompraTaigo\n} from 'src/feature-app/InputsValues/CTAsObjectsFormsAdhoc';\nimport { \n franjaHoraria,\n meses \n} from 'src/feature-app/InputsValues/OtherInputTypesObjects';\nimport { \n isGooglePlace, \n weekDay_DayNumber_Month, \n weekDay_DayNumber_Month_Hour \n} from 'src/feature-app';\nimport { Installation, isDealerData } from 'src/types';\n\n//FUNCIONES GESTIÓN OUTPUTS\n\n// cambio value por label\nconst changeValueForLabel = (ctas: any, fields: any, field: string) => {\n const result = ctas.find((option: any) => option.value === fields[field]);\n return result ? result.label : fields[field];\n};\n\n//cambio value por label y concatenación multipleChoice\nconst formatMultipleOptionText = (ctas: any, fields: any, field: string) => {\n const aux = fields[field];\n const prevStepContent = ctas.filter((item: any) => aux.includes(item.value));\n const result = prevStepContent.map((item: any) => item.label);\n return result.join(' / ');\n};\n\n// formacion frase slot de cita\nconst getOutputSlotFrom = (fields: any) => {\n\n const selectedMotivo = CTAsMotivo.find((CTA) => CTA.value === fields.motivo);\n\n if (fields.dealer.dmsInfo && fields.dealer.dmsInfo.dmsAvailable) {\n const momentSlot = weekDay_DayNumber_Month_Hour(fields.slot.from);\n const formatedSlot =\n momentSlot.split(',')[0] +\n ' de ' +\n momentSlot.split(',')[1].charAt(0).toLowerCase() +\n momentSlot.split(',')[1].slice(1);\n return selectedMotivo\n ? `${selectedMotivo.detallesPrevStep} el ${formatedSlot.replace('-', ' a las ').concat('h')}`\n : `El ${formatedSlot.replace(',', ' de ').concat('h')}`;\n } else {\n const momentSlot = weekDay_DayNumber_Month(fields.slot.from);\n const formatedSlot =\n momentSlot.split(',')[0] +\n ' de ' +\n momentSlot.split(',')[1].charAt(0).toLowerCase() +\n momentSlot.split(',')[1].slice(1);\n\n const horarioTranslate = franjaHoraria.find((h: any) => h.code === fields.slot.dayMoment.code);\n return selectedMotivo\n ? `${selectedMotivo.detallesPrevStep} el ${formatedSlot.concat(horarioTranslate.name)}`\n : `El ${formatedSlot.concat(horarioTranslate.name)}`;\n }\n};\n\n//output localización\nconst getLocationOutput = (formName: string, selectedInstallation: any, formInfo: any) => {\n\n if (formName === 'no_compra-no_tengo') {\n const selInst = selectedInstallation;\n return `${selInst.TXT_V_Installation_Data_Name__c}, ${selInst.TXT_V_Address__c}`;\n }\n\n if (isGooglePlace(formInfo.userSuggestion)) {\n return formInfo.userSuggestion.name;\n } else if (isGooglePlace(formInfo.userSuggestion) && isDealerData(formInfo.userSuggestion)) {\n return `${formInfo.userSuggestion.name} en ${formInfo.userSuggestion.markerInfo.dealerInfo.address}`;\n } else if (isGooglePlace(formInfo.userSuggestion) && !isDealerData(formInfo.userSuggestion)) {\n return `${(formInfo.userSuggestion as Installation).TXT_V_Installation_Data_Name__c} en ${\n (formInfo.userSuggestion as Installation).TXT_V_Address__c\n }`;\n }\n};\n\n//SWITCH CASE PARA DETERMINAR EL OTUPUT DEL PREVIOUS STEP\n\nexport const getUpdatedField = (field: string, formData: any, dealersInfo: any, formInfo: any) => {\n\n const { fields } = formData;\n const { formName } = fields;\n const { selectedInstallation } = dealersInfo;\n\n switch(field) {\n case 'motivo':\n return changeValueForLabel(CTAsMotivo, fields, field);\n case 'periodoContacto':\n return changeValueForLabel(periodoContactoOptions, fields, field);\n case 'contacto':\n return changeValueForLabel(contactoOptionsTurismos, fields, field);\n case 'contactoSAC':\n return changeValueForLabel(contactoOptionsSAC, fields, field);\n case 'datosIncorrectos':\n return changeValueForLabel(ctaDatosIncorrectos, fields, field);\n case 'alternativaTransporte':\n return changeValueForLabel(ctaAlternativaTransporte, fields, field);\n case 'datosIncorrectosPosventa':\n return changeValueForLabel(ctaDatosIncorrectosPosventa, fields, field);\n case 'tipoCoche':\n return changeValueForLabel(CTAsNuevoOcasión, fields, field);\n case 'usadoNuevo':\n return changeValueForLabel(CTAsUsadoNuevo, fields, field);\n case 'testDrive':\n return changeValueForLabel(ctaTestDrive, fields, field);\n case 'contactoSatisfaccion':\n return changeValueForLabel(ctaContactoSatisfaccion, fields, field);\n case 'desplazamiento':\n return changeValueForLabel(CTAsDesplazamientoTaigo, fields, field);\n case 'motivacionCompra' : \n return changeValueForLabel(CTAsMotivacionCompraTaigo, fields, field);\n case 'lugarCompra':\n return changeValueForLabel(CTAsLugarCompra, fields, field);\n case 'tipoVisita':\n let tipoVisita = CTAsTipoVisita.find((option) => option.value === fields[field]);\n if (!tipoVisita) {\n tipoVisita = CTAsTipoVisitaNo.find((option) => option.value === fields[field]);\n }\n return tipoVisita ? tipoVisita.label : fields[field];\n case 'slot.from':\n return getOutputSlotFrom(fields);\n case 'dealer.name':\n return fields.dealer.name;\n case 'installation':\n return selectedInstallation.TXT_V_Installation_Data_Name__c;\n case 'location':\n return getLocationOutput(formName, selectedInstallation, formInfo);\n case 'kilometros':\n if (fields.kilometros === 0) {\n return 'No estoy seguro';\n } else {\n return `${fields.kilometros[0]}km - ${fields.kilometros[1]}km`;\n }\n case 'cellphone':\n return `${fields.prefix} ${fields[field]}`;\n case 'fecha':\n const aux = fields[field].split('/');\n const mes = meses.find((m) => m.number === aux[1]);\n return `${mes.name} / ${aux[2]}`;\n case 'informado':\n let result;\n if (fields[field] === 'false') {\n result = 'No';\n } else if (fields[field] === 'true') {\n result = 'Sí';\n } else {\n result = 'Sin respuesta';\n }\n return result ? result : fields[field];\n case 'otraMarca':\n return fields[field] === 'false' ? 'No' : fields[field];\n case 'publicarRespuestas':\n return fields[field] === '1' ? 'Sí' : 'No';\n case 'brand':\n if(fields[field] === 'false') {\n return 'No';\n } else {\n return fields[field];\n }\n case 'model':\n if(fields[field] === 'false') {\n return '';\n } else {\n return fields[field];\n }\n case 'enviarConcesion':\n return fields[field] === '1'\n ? ctaEnviarRespuesta[0].label\n : fields[field] === '2'\n ? ctaEnviarRespuesta[1].label\n : ctaEnviarRespuesta[2].label;\n case 'dudas':\n return formatMultipleOptionText(CTAsDudas, fields, field);\n case 'multipleChoice':\n if (formName === 'no_compra-no_quiero') {\n return formatMultipleOptionText(CTAsMotivoNoQuiero, fields, field);\n } else {\n //formName === 'no-renovacion_no-tengo' || formName === 'no-renovacion_ya-tengo'\n return formatMultipleOptionText(CTAsMotivoRenovadorNoTengo, fields, field);\n }\n case 'motivoVisita':\n return formatMultipleOptionText(ctaMotivoVisita, fields, field); \n case 'formasMovilidad':\n return formatMultipleOptionText(CTAsFormasMovilidad, fields, field); \n case 'razones':\n return formatMultipleOptionText(CTAsRazones, fields, field); \n default:\n return fields[field];\n }\n \n};\n","import {\n Container,\n ContainerGutter,\n ContainerWrap,\n styled,\n Text,\n TextAlignment,\n TextAppearance,\n} from '@volkswagen-onehub/components-core';\nimport { isNull } from 'src/feature-app';\nimport React, { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { OneFormState, Steps } from 'src/types';\nimport { useOneFormContext } from '../OneForm';\nimport { CSSTransition } from 'react-transition-group';\nimport { getUpdatedField, getRatingStarsOutput } from './PreviousStepFiles';\n\ntype PreviousStepWrapperProps = {\n isSeleccionDealer?: boolean;\n notALayer?: boolean;\n};\nconst PreviousStepWrapper = styled.div`\n opacity: ${(props) => (props.notALayer ? '0.4' : '0.2')};\n`;\n\nconst TextPreviousAnswerWrapper = styled.div`\n width: ${(props) => (props.notALayer ? '100%' : '640px')};\n overflow: hidden;\n max-height: 48px;\n opacity: ${(props) => (props.notALayer ? '1' : '0')};\n &.no-animation {\n opacity: 1;\n }\n &.text-enter,\n &.text-enter-active {\n opacity: 0;\n }\n &.text-enter-done {\n opacity: 1;\n transition: opacity 0.3s;\n }\n &.text-exit,\n &.text-exit-active,\n &.text-exit-done {\n opacity: 1;\n }\n`;\n\n// Implementar en caso de que sea necesario mostrar el último paso segun lo introducido y no según el screenIndex, por ejemplo al volver desde la pantalla de confirmación a otra.\ninterface OutputsHistory {\n screenIndex: number;\n step: Steps;\n outputs: any[];\n}\n\nexport function PreviousStepComponent(props: any) {\n const { formData, formInfo, dealersInfo } = useSelector((state: OneFormState) => state);\n const { steps, stepsHistory, screenIndex, multiStepScreenIndex, multiSteps, triggerExitAnimation, step } = formInfo;\n\n const [title, setTitle] = useState(null);\n const [text, setText] = useState(null);\n const [hideText, setHideText] = useState(false);\n const [textAppear, setTextAppear] = useState(false);\n const [outputs, setOutputs] = useState(null);\n const [outputsHistory, setOutputsHistory] = useState(null);\n const { moveForward, showPreviousStep } = useOneFormContext();\n\n /**\n *\n * @param stepsToIterate La lista de steps donde hay que buscar el paso previo.\n * @param screenIndexToGet La lista de steps donde hay que buscar el paso previo.\n */\n const getTitleAndOutputs = (stepsToIterate: Steps[], screenIndexToGet: number) => {\n if (!stepsToIterate || isNull(screenIndexToGet) || screenIndexToGet === -1) {\n setTitle(null);\n setText(null);\n return;\n }\n const previousStep = stepsToIterate.find((step) => step.screenIndex === screenIndexToGet);\n //console.log(previousStep);\n if (previousStep && previousStep.outputsText) {\n const updatedOutputsTexts = previousStep.outputsText\n .map((text) => {\n previousStep.outputs.map((output) => {\n if (text === output) {\n text = getUpdatedField(output, formData, dealersInfo, formInfo);\n }\n });\n return text;\n })\n .join(' ');\n\n const title = previousStep.alternateTitle ? previousStep.alternateTitle : previousStep.title;\n setTitle(title);\n\n if (previousStep.outputsIsStars) {\n //ratingStars\n const output = getRatingStarsOutput(updatedOutputsTexts);\n setText(output);\n } else if (previousStep.trueOrFalseQuestion) {\n //Pregunta sí o no\n //console.log(updatedOutputsTexts);\n if (updatedOutputsTexts.includes('true')) {\n const aux = updatedOutputsTexts.replace('true', 'Sí');\n setText(aux);\n } else {\n const aux = updatedOutputsTexts.replace('false', 'No');\n setText(aux);\n }\n } else {\n setText(updatedOutputsTexts);\n }\n } else {\n setTitle(null);\n setOutputs(null);\n }\n };\n\n const handleMultiStep = () => {\n // En la primera pantalla del multistep mostramos el último step antes de entrar en el multistep.\n if (multiStepScreenIndex === 0) {\n getTitleAndOutputs(steps, screenIndex - 1);\n } else {\n getTitleAndOutputs(multiSteps, multiStepScreenIndex - 1);\n }\n };\n\n const handleStep = () => {\n // En la primera pantalla después de un multistep mostramos el último multistep antes de salir del mismo.\n let previousStep;\n const indexInHistory = stepsHistory.findIndex((history) => history === screenIndex);\n\n if (indexInHistory === -1) {\n previousStep = steps.find((step) => step.screenIndex === screenIndex - 1);\n } else {\n previousStep = steps.find((step) => step.screenIndex === stepsHistory[indexInHistory - 1]);\n }\n if (previousStep && previousStep.multiStep) {\n getTitleAndOutputs(multiSteps, multiStepScreenIndex);\n } else {\n getTitleAndOutputs(steps, previousStep?.screenIndex);\n }\n };\n\n useEffect(() => {\n if (isNull(screenIndex) || (screenIndex === 0 && !steps?.[screenIndex]?.multiStep) || !steps?.[screenIndex]) {\n return;\n }\n const step = steps.find((step) => step.screenIndex === screenIndex);\n if (step) {\n step.multiStep ? handleMultiStep() : handleStep();\n } else {\n handleStep();\n }\n }, [screenIndex, multiStepScreenIndex]);\n\n useEffect(() => {\n if (props.stopAnimation) {\n setHideText(false);\n } else {\n if (!moveForward) {\n setHideText(true);\n } else {\n setHideText(false);\n }\n }\n }, [moveForward]);\n\n useEffect(() => {\n if (text) setTextAppear(true);\n }, [text]);\n\n useEffect(() => {\n setHideText(false);\n }, []);\n\n return showPreviousStep ? (\n \n \n {props.notALayer ? (\n \n {title ? title : null}\n \n ) : (\n \n {title ? title : null}\n \n )}\n {props.notALayer ? (\n \n \n {text && !hideText ? text : null}\n \n \n ) : (\n \n \n \n {text && !hideText && !triggerExitAnimation ? text : null}\n \n \n \n )}\n \n \n ) : null;\n}\n\nclass ErrorBoundary extends React.Component {\n constructor(props: any) {\n super(props);\n this.state = { hasError: false };\n }\n\n static getDerivedStateFromError(error) {\n // Actualiza el estado para que el siguiente renderizado muestre la interfaz de repuesto\n return { hasError: true };\n }\n\n componentDidCatch(error, errorInfo) {\n console.error('Falta por definir un campo en PreviousStep');\n // También puedes registrar el error en un servicio de reporte de errores\n }\n\n render() {\n if (this.state.hasError) {\n // Puedes renderizar cualquier interfaz de repuesto\n return null;\n }\n\n return this.props.children;\n }\n}\n\nexport function PreviousStep(props: any) {\n return (\n \n \n \n );\n}\n","import React from 'react';\nimport { RatingStars } from 'src/components';\n\nexport const getRatingStarsOutput = (value: string) => { \n const aux = parseFloat(value);\n return ;\n};\n","import React, {useEffect} from 'react';\nimport { LayerScreen, FullScreen } from '.';\ninterface RenderControllerProps {\n screenType: 'layer-screen' | 'full-screen';\n title: JSX.Element;\n fields: JSX.Element;\n key: number;\n avoidTrackFormStepLoad?: boolean;\n thankYouPage?: boolean;\n}\n\nexport const RenderController = (props: RenderControllerProps) => {\n const { title, fields, key, avoidTrackFormStepLoad, screenType, thankYouPage } = props;\n\n return (\n <>\n {screenType ? (\n <>\n {screenType === 'layer-screen' ? (\n \n ) : (\n \n )}\n \n ) : null}\n \n );\n};\n","import { styled } from '@volkswagen-onehub/components-core';\nimport { CloseHandleV2, LayerHandleV2 } from '@volkswagen-onehub/layer-manager';\nimport React, { useEffect, useState } from 'react';\nimport { useSelector, useStore } from 'react-redux';\nimport { OneFormProvider, useFeatureAppConfig } from 'src/feature-app';\nimport { CloseComponent, Navigation } from 'src/feature-app/Screen';\nimport { OneFormState } from 'src/types';\nimport { ThankYouComponent } from 'src/feature-app/ThankYouComponent';\nimport { useGetBoundingClientRect } from 'src/feature-app/hooks';\nimport { useWindowHeight, useWindowWidth } from '@react-hook/window-size';\n\ninterface ScreenControllerProps {\n closeLayerCallback?: CloseHandleV2;\n selectedJourney: JSX.Element;\n handleAreYouSureLayer: () => LayerHandleV2<{}>;\n notALayer?: boolean;\n formType?: 'layer' | 'inPage' | 'module';\n}\n\nconst ThankYouWrapper = styled.div`\n height: 100%;\n display: flex;\n align-items: center;\n div {\n height: auto;\n align-items: center;\n }\n`;\n\nexport function ScreenController(props: ScreenControllerProps) {\n const { closeLayerCallback, selectedJourney, handleAreYouSureLayer, formType } = props;\n\n const { formInfo, formData } = useSelector((state: OneFormState) => state);\n const { multiStepScreenIndex, screenIndex, triggerExitAnimation, showFinalScreen, lastStep, step } = formInfo;\n const [formClicked, setFormClicked] = useState(false);\n const [colorTheme, setTheme] = useState(null);\n const config = useFeatureAppConfig();\n\n const trigger = useFeatureAppConfig().trigger;\n\n //Quitar navegación en pantallas de error de carga del form formato full-screen\n\n const [formStarted, setFormStarted] = useState(false);\n useEffect(() => {\n if (formInfo.formStarted === false) {\n setFormStarted(false);\n } else {\n setFormStarted(true);\n }\n }, [formInfo]);\n\n //mapa no compra, si en algun otro form se usa y no coinciden el screenIndex o el multiscreenIndex\n //habrá que añadir un filtro por trigger o un flag en formInfo de que está en el mapa\n\n const [isMap, setIsMap] = useState(false);\n const [soloProgreso, setSoloProgreso] = useState(false);\n\n useEffect(() => {\n if (multiStepScreenIndex === 1 && screenIndex === 5) {\n setIsMap(true);\n } else if (formData.fields.formName === 'no_compra-ya_tengo' && screenIndex === 2) {\n setSoloProgreso(true);\n } else if (formData.fields.formName === 'adhoc-2021-eurocopa' && screenIndex === 0) {\n setIsMap(true);\n } else {\n setIsMap(false);\n setSoloProgreso(false);\n }\n }, [screenIndex, multiStepScreenIndex]);\n\n useEffect(() => {\n setTheme('inverted');\n }, [trigger]);\n\n const store = useStore();\n\n const handleClick = () => {\n setFormClicked(true);\n };\n\n const [isLastScreen, setIsLastScreen] = useState(false);\n const [isConfirmacion, setIsConfirmacion] = useState(false);\n\n useEffect(() => {\n if (step?.name === 'Confirmacion' || step?.name === 'Form') {\n setIsConfirmacion(true);\n } else if (step && step.name !== 'Confirmacion') {\n setIsConfirmacion(false);\n }\n if (step && lastStep) {\n step.screenIndex === lastStep.screenIndex ? setIsLastScreen(true) : setIsLastScreen(false);\n }\n }, [step]);\n\n //navigation position in full screen\n\n const [navPositon, setNavPosition] = useState('fixed');\n const viewportHeight = useWindowHeight();\n\n const { top: topNavigation, getAndUpdateState: getAndUpdateStateNavigation } =\n useGetBoundingClientRect('.navigation-wrapper');\n\n const { bottom: bottomContent, getAndUpdateState: getAndUpdateStateContent } = useGetBoundingClientRect(\n '.content-controller-fullScreen'\n );\n\n const handlePosition = () => {\n getAndUpdateStateNavigation();\n getAndUpdateStateContent();\n };\n\n useEffect(() => {\n if (step && step.name !== 'Confirmacion') {\n document.addEventListener('scroll', handlePosition);\n\n return () => {\n document.removeEventListener('scroll', handlePosition);\n };\n }\n }, [step]);\n\n useEffect(() => {\n if (bottomContent === null) {\n setNavPosition('fixed');\n //console.log('1111');\n } else if (bottomContent <= viewportHeight-100) {\n setNavPosition('relative');\n //console.log('2222');\n } else {\n setNavPosition('fixed');\n //console.log('3333');\n }\n }, [topNavigation, bottomContent]);\n\n return (\n \n {\n handleClick();\n }}\n className=\"screen-controller-wrapper\"\n >\n {showFinalScreen ? (\n <>\n {\n formType === 'inPage' || formType === 'module' ? null : (\n \n )\n }\n \n \n \n \n \n ) : formType === 'inPage' || formType === 'module' ? (\n <>\n {selectedJourney}\n {showFinalScreen || isMap || !formStarted || isConfirmacion || formType === 'module' ? null : (\n \n )}\n \n ) : (\n <>\n \n\n {selectedJourney}\n {isLastScreen ? null : (\n \n )}\n \n )}\n
\n \n );\n}\n","import React from 'react';\nimport {\n Layout,\n Breakpoints,\n LayoutRowGap,\n styled,\n} from '@volkswagen-onehub/components-core';\n\ninterface OneElementTemplateProps {\n element: JSX.Element;\n allowOverflowingContent?: boolean;\n}\n\n// Refactorizar\nexport function OneElementTemplateFullScreen(props: OneElementTemplateProps) {\n const { element, allowOverflowingContent } = props;\n return (\n \n {element}\n \n );\n}\n\ninterface TwoElementsTemplateProps {\n firstElement: JSX.Element;\n secondElement: JSX.Element;\n allowOverflowingContent?: boolean;\n}\n\nexport function TwoElementsTemplateFullScreen(props: TwoElementsTemplateProps) {\n const { firstElement, secondElement } = props;\n return (\n \n {firstElement}\n {secondElement}\n \n );\n}\n\ninterface ThreeElementsTemplateProps {\n firstElement: JSX.Element;\n secondElement: JSX.Element;\n thirdElement: JSX.Element;\n allowOverflowingContent?: boolean;\n}\n\nexport function ThreeElementsTemplateFullScreen(props: ThreeElementsTemplateProps) {\n const { firstElement, secondElement, thirdElement } = props;\n return (\n \n {firstElement}\n {secondElement}\n {thirdElement}\n \n );\n}\n","import * as React from 'react';\nimport { Breakpoints } from '../helpers/breakpoint';\nimport { styled } from '../theme-provider';\nimport { ChevronDown } from '@volkswagen-onehub/icons-core';\nconst ANIMATION_FUNCTION = '0.3s cubic-bezier(0.14, 1.12, 0.67, 0.99)';\nconst StyledIcon = styled(ChevronDown).withConfig({ displayName: \"StyledIcon\", componentId: \"sc-ivhe3f\" }) `color:${(props) => props.disabled\n ? props.theme.interaction.recipe450.disabled\n : props.theme.interaction.recipe450.default};transition:transform ${ANIMATION_FUNCTION};transform:${(props) => (props.isOpen ? 'rotateX(180deg)' : 'rotateX(0)')};line-height:0;`;\nconst StyledIconWrapper = styled.span.withConfig({ displayName: \"StyledIconWrapper\", componentId: \"sc-1e2gapx\" }) `position:relative;display:flex;align-items:center;justify-content:center;height:${(props) => props.theme.size.static350};margin-top:${(props) => `calc((${props.theme.textAppearances.headline0300.lineHeight} - ${props.theme.size.static350}) / 2)`};&::before{content:'';display:block;width:42px;height:42px;position:absolute;top:50%;left:50%;transform:translateX(-50%)translateY(-50%);border-radius:50%;}`;\nconst StyledAccordion = styled.div.withConfig({ displayName: \"StyledAccordion\", componentId: \"sc-1b6176y\" }) `border-bottom:${({ theme }) => theme.size.line.default} solid ${(props) => props.theme.border.color.secondary};`;\nconst StyledAccordionHead = styled.button.withConfig({ displayName: \"StyledAccordionHead\", componentId: \"sc-1t5og2f\" }) `padding:0;border:0;background:none;appearance:none;text-align:inherit;word-break:break-all;:lang(ko){word-break:keep-all;}width:100%;padding-top:${(props) => props.theme.size.dynamic0100};padding-bottom:${(props) => props.isOpen ? props.theme.size.dynamic0040 : props.theme.size.dynamic0100};@media (min-width: ${Breakpoints.b1600}px){padding-bottom:${(props) => props.theme.size.dynamic0050};}cursor:${(props) => (props.disabled ? 'default' : 'pointer')};user-select:none;&:focus{outline:none;color:${({ theme }) => theme.focus.foreground};${StyledIconWrapper}::before{background-color:${({ theme }) => theme.focus.background};content:'';position:absolute;width:42px;height:42px;border-radius:999px;transform:translate(-50%, -50%);box-shadow:0 0 0 3px inset ${({ theme }) => theme.interaction.recipe450.default};}${StyledIcon}{color:${({ theme }) => theme.focus.foreground};}}&:hover:not(:focus){${StyledIconWrapper}::before{background-color:${(props) => !props.disabled &&\n props.theme.hoverIndicatorColor.outlinedElement.default};}}`;\nconst StyledAccordionBody = styled.div.withConfig({ displayName: \"StyledAccordionBody\", componentId: \"sc-1asd5wy\" }) `display:${(props) => props.isOpen ? (props.fullWidthBody ? 'block' : 'grid') : 'none'};grid-template-columns:${(props) => !props.fullWidthBody && `auto ${props.theme.size.grid001}`};padding-bottom:${(props) => props.theme.size.dynamic0100};`;\nconst StyledHeadWrapper = styled.div.withConfig({ displayName: \"StyledHeadWrapper\", componentId: \"sc-zc5tmo\" }) `display:grid;grid-column-gap:${(props) => props.theme.size.dynamic0100};grid-template-columns:auto max-content;color:${(props) => props.disabled && props.theme.interaction.recipe450.disabled};`;\nexport const Accordion = (props) => {\n const { id, isOpen, disabled, fullWidthBody, headline, children, onClick } = props;\n const headId = `${id}_head`;\n const bodyId = `${id}_body`;\n return (React.createElement(StyledAccordion, { id: id },\n React.createElement(StyledAccordionHead, { id: headId, tabIndex: 0, isOpen: isOpen, disabled: disabled, onClick: onClick, \"aria-expanded\": isOpen, \"aria-controls\": bodyId },\n React.createElement(StyledHeadWrapper, { disabled: disabled },\n headline,\n React.createElement(StyledIconWrapper, null,\n React.createElement(StyledIcon, { isOpen: isOpen, disabled: disabled, variant: \"default\", ariaHidden: true })))),\n React.createElement(StyledAccordionBody, { id: bodyId, isOpen: isOpen, fullWidthBody: fullWidthBody, \"aria-hidden\": !isOpen, \"aria-labelledby\": headId, role: \"region\" },\n React.createElement(\"div\", null, children))));\n};\nAccordion.displayName = 'Accordion';\n","function isHexColorToRgbaOptions(alphaOrOptions) {\n return (typeof alphaOrOptions !== 'undefined' && typeof alphaOrOptions !== 'number');\n}\nfunction isValidAlpha(alpha) {\n return typeof alpha !== 'undefined' && alpha >= 0 && alpha <= 1;\n}\nexport function getRGBfromHexColor(color) {\n if (!color.startsWith('#')) {\n return undefined;\n }\n const parts = color\n .substr(1)\n .split('')\n .map((digit) => parseInt(digit, 16));\n if (parts.some((digit) => isNaN(digit))) {\n return undefined;\n }\n if (parts.length === 3) {\n const [r, g, b] = parts;\n return { r: r * 17, g: g * 17, b: b * 17 };\n }\n if (parts.length === 6) {\n const [r1, r2, g1, g2, b1, b2] = parts;\n return { r: r1 * 16 + r2, g: g1 * 16 + g2, b: b1 * 16 + b2 };\n }\n return undefined;\n}\nexport function hexColorToRgba(color, alphaOrOptions) {\n let alpha = isHexColorToRgbaOptions(alphaOrOptions)\n ? alphaOrOptions.alpha\n : alphaOrOptions;\n if (!isValidAlpha(alpha)) {\n alpha = 1;\n }\n const rgb = getRGBfromHexColor(color);\n if (rgb) {\n return `rgba(${rgb.r},${rgb.g},${rgb.b},${alpha})`;\n }\n if (isHexColorToRgbaOptions(alphaOrOptions) && alphaOrOptions.rgbaFallback) {\n return alphaOrOptions.rgbaFallback;\n }\n const alphaFallback = isHexColorToRgbaOptions(alphaOrOptions) &&\n isValidAlpha(alphaOrOptions.alpha)\n ? alphaOrOptions.alpha\n : 0;\n if (isHexColorToRgbaOptions(alphaOrOptions) && alphaOrOptions.rgbFallback) {\n return `rgba(${alphaOrOptions.rgbFallback.r},${alphaOrOptions.rgbFallback.g},${alphaOrOptions.rgbFallback.b},${alphaFallback})`;\n }\n return `rgba(0,0,0,${alphaFallback})`;\n}\n","import * as React from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport { withTheme } from 'styled-components';\nimport { getColumnsWidthForBreakpoint, getGridColumn } from '../helpers/grid';\nimport { hexColorToRgba } from '../helpers/color';\nimport { Breakpoints } from '../helpers/breakpoint';\nimport { ThemeProvider, styled } from '../theme-provider';\nconst createCssBoxShadow = (themeShadowColor) => {\n const defaultBoxShadow = 'box-shadow: initial;';\n if (!themeShadowColor) {\n return defaultBoxShadow;\n }\n const darkShadowColor = hexColorToRgba(themeShadowColor, 0.1);\n const lightShadowColor = hexColorToRgba(themeShadowColor, 0.05);\n return `box-shadow: 0 8px 32px 0 ${darkShadowColor}, 0 16px 48px 0 ${lightShadowColor};`;\n};\nconst animationClassName = 'animation';\nconst StyledLayer = styled.div.withConfig({ displayName: \"StyledLayer\", componentId: \"sc-1c58wk5\" }) `position:relative;width:${getGridColumn(20)};background:${(props) => props.theme.interaction.recipe370.default};@media (min-width: ${Breakpoints.b560}px){width:${getGridColumn(18)};}@media (min-width: ${Breakpoints.b960}px){width:${getGridColumn(14)};}@media (min-width: ${Breakpoints.b1280}px){width:${getGridColumn(12)};}@media (min-width: ${Breakpoints.b1600}px){width:${getGridColumn(10)};}@media (min-width: ${Breakpoints.b1920}px){width:${getGridColumn(8)};}@media (min-width: ${Breakpoints.b2560}px){width:${getColumnsWidthForBreakpoint(6, Breakpoints.b2560)};}height:auto;max-height:calc(100vh - 2 * ${(props) => props.theme.size.dynamic0040});overflow:auto;-webkit-overflow-scrolling:touch;${(props) => createCssBoxShadow(props.theme.shadowColor)};opacity:1;transform:translateY(0);transition:${(props) => {\n const duration = props.theme.animation.duration.layer;\n const timingFunction = props.theme.animation.timingFunction.in;\n return `opacity ${duration} ${timingFunction}, transform ${duration} ${timingFunction}`;\n}};&.${animationClassName}-exit{opacity:1;transform:translateY(0);}&.${animationClassName}-enter,&.${animationClassName}-exit-active,&.${animationClassName}-exit-done{opacity:0;transform:translateY(${(props) => props.theme.size.static500});}&.${animationClassName}-enter-active{opacity:1;transform:translateY(0);}`;\nconst InternalAlertLayer = (props) => {\n const { active, children, in: visible, onExited, role = 'alert', ariaLabel, ariaDescribedBy, ariaLabelledBy, scrollElementRef, } = props;\n const timeout = parseInt(props.theme.animation.duration.layer || '0', 10);\n return (React.createElement(CSSTransition, { classNames: animationClassName, onExited: onExited, in: visible, timeout: timeout },\n React.createElement(StyledLayer, { ref: scrollElementRef, role: role, \"aria-label\": ariaLabel, \"aria-labelledby\": ariaLabelledBy, \"aria-describedby\": ariaDescribedBy, \"aria-modal\": active },\n React.createElement(ThemeProvider, { theme: \"inverted\" }, children))));\n};\nexport const AlertLayer = withTheme(InternalAlertLayer);\n","import * as React from 'react';\nimport { isBreakpointConfig, createStylesForBreakpoints, } from '../helpers/breakpoint';\nimport { styled } from '../theme-provider';\nexport var AspectRatio;\n(function (AspectRatio) {\n AspectRatio[\"16:9\"] = \"16:9\";\n AspectRatio[\"9:16\"] = \"9:16\";\n AspectRatio[\"4:3\"] = \"4:3\";\n AspectRatio[\"3:4\"] = \"3:4\";\n AspectRatio[\"1:1\"] = \"1:1\";\n AspectRatio[\"10:6\"] = \"10:6\";\n AspectRatio[\"6:5\"] = \"6:5\";\n AspectRatio[\"2:1\"] = \"2:1\";\n AspectRatio[\"2:3\"] = \"2:3\";\n AspectRatio[\"4:5\"] = \"4:5\";\n AspectRatio[\"3:2\"] = \"3:2\";\n})(AspectRatio || (AspectRatio = {}));\nconst StyledWrapper = styled.div.withConfig({ displayName: \"StyledWrapper\", componentId: \"sc-iw10kj\" }) `position:relative;width:100%;height:0;${createAspectRatioForBreakpoints};&& > *{position:absolute;top:0;left:0;width:100%;height:100%;}`;\nStyledWrapper.displayName = 'StyledWrapper';\nfunction createAspectRatioForBreakpoints(props) {\n if (!props.ratio) {\n return '';\n }\n if (isBreakpointConfig(props.ratio)) {\n return createStylesForBreakpoints(props.ratio, (ratio) => `padding-bottom: ${calcAspectRatio(ratio) * 100}%;`);\n }\n return `padding-bottom: ${calcAspectRatio(props.ratio) * 100}%;`;\n}\nexport function calcAspectRatio(ratio) {\n const [width, height] = ratio.split(':');\n return Number(height) / Number(width);\n}\nexport const AspectRatioContainer = (props) => {\n const { ratio, children } = props;\n return React.createElement(StyledWrapper, { ratio: ratio }, children);\n};\nAspectRatioContainer.displayName = 'AspectRatioContainer';\n","import { Close } from '@volkswagen-onehub/icons-core';\nimport * as React from 'react';\nimport { Transition, TransitionGroup } from 'react-transition-group';\nimport { keyframes, withTheme } from 'styled-components';\nimport { Text, TextAppearance, TextColor } from '../text';\nimport { css, styled } from '../theme-provider';\nconst keyframesSubActionsShow = (percents, pixels) => keyframes `0%,50%{transform:translateY(${percents}%)translateY(+${pixels}px);}100%{transform:translateY(0);}`;\nconst keyframesSubActionsHide = (percents, pixels) => keyframes `0%{transform:translateY(0);}50%,100%{transform:translateY(${percents}%)translateY(+${pixels}px);}`;\nconst keyframesCollapse = (props) => {\n return keyframes `from{transform:translateX(0);}to{transform:${props.theme.direction === 'rtl'\n ? `translateX(\n\t\t\t\t\t\t\t${parseInt(props.theme.size.static350, 10) +\n parseInt(props.theme.size.static300, 10) * 2}px\n\t\t\t\t\t\t)\n\t\t\t\t\t\ttranslateX(-100%)`\n : `translateX(\n\t\t\t\t\t\t\t-${parseInt(props.theme.size.static350, 10) +\n parseInt(props.theme.size.static300, 10) * 2}px\n\t\t\t\t\t\t)\n\t\t\t\t\t\ttranslateX(100%)`};}`;\n};\nconst keyframesExpand = (props) => {\n return keyframes `from{transform:${props.theme.direction === 'rtl'\n ? `translateX(\n\t\t\t\t\t\t\t${parseInt(props.theme.size.static350, 10) +\n parseInt(props.theme.size.static350, 10) * 2}px\n\t\t\t\t\t\t)\n\t\t\t\t\t\ttranslateX(-100%)`\n : `translateX(\n\t\t\t\t\t\t\t-${parseInt(props.theme.size.static350, 10) +\n parseInt(props.theme.size.static350, 10) * 2}px\n\t\t\t\t\t\t)\n\t\t\t\t\t\ttranslateX(100%)`};}to{transform:translateX(0);}`;\n};\nconst keyframesInitializing = keyframes `0%{opacity:0;}100%{opacity:1;}`;\nconst StyledOverflowWrapper = styled.div.withConfig({ displayName: \"StyledOverflowWrapper\", componentId: \"sc-1pt9oer\" }) `direction:${(props) => props.theme.direction || 'ltr'};margin-inline-start:auto;overflow:hidden;clip-path:inset(0 0 0 0);border-radius:${(props) => parseInt(props.theme.size.static350, 10) / 2 +\n parseInt(props.theme.size.static300, 10)}px;width:100%;`;\nconst height = (props) => `${parseInt(props.theme.size.static350, 10) +\n parseInt(props.theme.size.static300, 10) * 2}px`;\nconst StyledTextWrapper = styled.div.withConfig({ displayName: \"StyledTextWrapper\", componentId: \"sc-bublms\" }) `${(props) => props.expanded\n ? css `animation:${props.theme.animation.duration.nba} ${keyframesExpand} 1 ${props.theme.animation.timingFunction.cubicOut};` : css `animation:${props.theme.animation.duration.nba} ${keyframesCollapse} 1 ${props.theme.animation.timingFunction.cubicOut};`} transform:translateX(0);white-space:nowrap;transition:background-color ${(props) => `${props.theme.animation.duration.nba} ${props.theme.animation.timingFunction.cubicOut}`},border-color ${(props) => `${props.theme.animation.duration.nba} ${props.theme.animation.timingFunction.cubicOut}`};height:${height};${(props) => props.theme.direction === 'rtl'\n ? css `padding-left:${parseInt(props.theme.size.static350, 10) +\n parseInt(props.theme.size.static200, 10) +\n parseInt(props.theme.size.static300, 10)}px;padding-right:${props.theme.size.static300};` : css `padding-right:${parseInt(props.theme.size.static350, 10) +\n parseInt(props.theme.size.static200, 10) +\n parseInt(props.theme.size.static300, 10)}px;padding-left:${props.theme.size.static300};`} border-radius:${(props) => parseInt(props.theme.size.static350, 10) / 2 +\n parseInt(props.theme.size.static300, 10)}px;background-color:${(props) => props.theme.interaction.recipe250.default};flex:auto 0 0;display:flex;align-items:center;`;\nconst StyledIconWrapper = styled.div.withConfig({ displayName: \"StyledIconWrapper\", componentId: \"sc-1rs67cr\" }) `align-items:center;display:flex;flex:auto 0 0;height:${height};justify-content:center;position:absolute;${({ theme }) => `\n\t\tborder: ${theme.size.static300} solid;\n\t\tborder-color: ${theme.direction === 'rtl'\n ? `transparent transparent transparent ${theme.interaction.recipe250.default}`\n : `transparent ${theme.interaction.recipe250.default} transparent transparent`};\n\t\tborder-radius: ${parseInt(theme.size.static350, 10) / 2 +\n parseInt(theme.size.static300, 10)}px; /* 1/2 height */\n\t\tleft: ${theme.direction === 'rtl' ? 0 : 'unset'};\n\t\tright: ${theme.direction === 'rtl' ? 'unset' : 0};\n\t\ttransition: border-color ${theme.animation.duration.nba} ${theme.animation.timingFunction.cubicOut};\n\t\twidth: ${parseInt(theme.size.static350, 10) +\n parseInt(theme.size.static300, 10) * 2}px; /* same as height */\n\t`}`;\nconst backgroundColor = css `${(props) => props.transitionState === 'entering'\n ? props.theme.nextBestAction.transition.backgroundColor\n : props.theme.interaction.recipe250.default}`;\nconst StyledDecorativeIconWrapper = styled.div.withConfig({ displayName: \"StyledDecorativeIconWrapper\", componentId: \"sc-us2qe\" }) `${({ theme }) => `background-color: ${theme.interaction.recipe250.default};`} height:100%;width:100%;`;\nconst StyledInnerIconWrapper = styled.div.withConfig({ displayName: \"StyledInnerIconWrapper\", componentId: \"sc-uaxbjg\" }) `height:${(props) => parseInt(props.theme.size.static350, 10) +\n parseInt(props.theme.size.static200, 10) *\n 2}px;width:${(props) => parseInt(props.theme.size.static350, 10) +\n parseInt(props.theme.size.static200, 10) * 2}px;background-color:${backgroundColor};border:${(props) => props.theme.size.static200} solid;border-radius:${(props) => parseInt(props.theme.size.static350, 10) / 2 +\n parseInt(props.theme.size.static200, 10)}px;border-color:${backgroundColor};line-height:0;position:absolute;${(props) => props.theme.direction === 'rtl'\n ? `\n\t\t\t\t\tright: -${props.theme.size.static200};\n\t\t\t `\n : `\n\t\t\t\t\tleft: -${props.theme.size.static200};\n\t\t\t `} top:-${(props) => props.theme.size.static200};transition:opacity ${(props) => `${props.theme.animation.duration.nba} ${props.theme.animation.timingFunction.cubicOut}`},transform ${(props) => `${props.theme.animation.duration.nba} ${props.theme.animation.timingFunction.cubicOut}`},background-color ${(props) => `${props.theme.animation.duration.nba} ${props.theme.animation.timingFunction.cubicOut}`},border-color ${(props) => `${props.theme.animation.duration.nba} ${props.theme.animation.timingFunction.cubicOut}`};opacity:${(props) => (props.transitionState === 'entered' ? 1 : 0)};transform:${(props) => props.transitionState === 'entering'\n ? 'rotate(-90deg)'\n : props.transitionState === 'entered'\n ? 'rotate(0deg)'\n : 'rotate(90deg)'};`;\nconst StyledButton = styled.button.withConfig({ displayName: \"StyledButton\", componentId: \"sc-kgqjqs\" }) `${({ theme }) => css `animation:${theme.animation.duration.nba} ${keyframesInitializing} 1 step-end;`} display:flex;${({ theme }) => theme.direction === 'rtl' ? 'margin-right: auto;' : 'margin-left: auto;'} min-width:${height};padding:0px;position:relative;box-shadow:none;appearance:none;border:none;border-radius:${({ theme }) => parseInt(theme.size.static350, 10) / 2 +\n parseInt(theme.size.static300, 10)}px;text-decoration:none;cursor:pointer;${({ theme }) => `color: ${theme.interaction.recipe300.default};`} background-color:transparent;visibility:${({ show }) => (show ? 'visible' : 'hidden')};${({ fullWidth }) => fullWidth && 'width: 100%;'} ${({ expanded, theme }) => expanded\n ? `max-width: calc(100vw - (2 * ${theme.size.dynamic0200}));\n\t\t\ttransition: none;`\n : css `max-width:${height};transition:max-width 0s ease-in-out ${theme.animation.duration.nba};`}::before{content:'';position:absolute;${({ theme }) => (theme.direction === 'rtl' ? 'left: 0;' : 'right: 0;')} z-index:1;width:${height};height:100%;border-radius:${({ theme }) => parseInt(theme.size.static350, 10) / 2 +\n parseInt(theme.size.static300, 10)}px;transition:${({ expanded, theme }) => expanded\n ? 'none'\n : `visibility ${theme.animation.duration.nba}, width ${theme.animation.duration.nba} ${theme.animation.timingFunction.cubicOut}`};pointer-events:none;}:hover{::before{width:100%;background:${({ theme }) => theme.hoverIndicatorColor.filledElement.default};}}:hover,:focus{${({ theme }) => css `transition:visibility ${theme.animation.duration.nba},max-width ${theme.animation.duration.nba} ${theme.animation.timingFunction.cubicOut};${StyledTextWrapper}{animation:${theme.animation.duration.nba} ${keyframesExpand} 1 ${theme.animation.timingFunction.cubicOut};}`};${({ show, expanded, theme }) => show &&\n expanded === undefined && css `max-width:calc(100vw - (2 * ${theme.size.dynamic0200}));`};:active{::before{background:${({ theme }) => theme.hoverIndicatorColor.filledElement.active};}}:focus{color:${({ theme }) => theme.interaction.recipe300.hover};outline:none;box-shadow:0 0 0 2px ${({ theme }) => theme.interaction.recipe450.default};${StyledTextWrapper}{background-color:${({ theme }) => theme.interaction.recipe250.hover};}${StyledIconWrapper}{${({ theme }) => theme.direction === 'rtl'\n ? `border-left-color: ${theme.interaction.recipe250.hover};\n\t\t\t\t\tborder-right-color: transparent;`\n : `border-left-color: transparent;\n\t\t\t\t\tborder-right-color: ${theme.interaction.recipe250.hover};`}}${StyledInnerIconWrapper}{background-color:${({ theme }) => theme.interaction.recipe250.hover};border-color:${({ theme }) => theme.interaction.recipe250.hover};}}`;\nconst StyledCloseButton = styled.button.withConfig({ displayName: \"StyledCloseButton\", componentId: \"sc-197x956\" }) `${({ theme }) => `\n\t\t${theme.direction === 'rtl' ? 'left: 0;' : 'right: 0;'}\n\t\tbackground-color: ${theme.interaction.recipe200.disabled};\n\t\tborder-radius: ${parseInt(theme.size.static350, 10) / 2 +\n parseInt(theme.size.static300, 10)}px; /* 1/2 height */\n\t\tcolor: ${theme.interaction.recipe200.default};\n\t\t&:hover {\n\t\t\tcolor: ${theme.interaction.recipe200.hover};\n\t\t}\n\t\t&:focus {\n\t\t\toutline: none;\n\t\t\tbox-shadow: 0 0 0 2px ${theme.interaction.recipe450.default};\n\t\t}\n\t`} ${({ show }) => `\n\t\tvisibility: ${show ? 'visible' : 'hidden'};\n\t\topacity: ${show ? '1' : '0'};\n\t`} appearance:none;border:none;box-shadow:none;cursor:pointer;display:flex;min-height:${height};min-width:${height};padding:0px;position:absolute;text-decoration:none;align-items:center;justify-content:center;`;\nconst StyledSubNextBestActionButton = styled.div.withConfig({ displayName: \"StyledSubNextBestActionButton\", componentId: \"sc-4typlb\" }) `width:100%;${({ theme }) => `\n\t\tmargin: ${theme.size.static100} 0;\n\t\ttransition: opacity ${theme.animation.duration.nba} ${theme.animation.timingFunction.cubicOut};\n\n\t\t&:nth-last-child(3) {\n\t\t\tmargin-bottom: ${theme.size.static150};\n\t\t}\n\t`} ${({ show, theme }) => `\n\t\tvisibility: ${show ? 'visible' : 'hidden'};\n\t\tpointer-events: ${show ? 'unset' : 'none'};\n\t\topacity: ${show ? '1' : '0'};\n\t\ttransition-delay: ${show ? theme.animation.duration.nba : 0};\n\t`} ${({ show, endIndex, theme }) => show\n ? css `animation:${keyframesSubActionsShow(endIndex * 100, Number(theme.size.static100.replace('px', '') || 0) * endIndex * 2)} ${theme.animation.duration.collapsible} ${theme.animation.timingFunction.cubicOut};` : css `animation:${keyframesSubActionsHide(endIndex * 100, Number(theme.size.static100.replace('px', '') || 0) * endIndex * 2)} ${theme.animation.duration.collapsible} ${theme.animation.timingFunction.cubicOut};`}`;\nconst StyledNextBestActionButtonWrapper = styled.div.withConfig({ displayName: \"StyledNextBestActionButtonWrapper\", componentId: \"sc-1on4crm\" }) `align-items:flex-end;display:flex;flex-direction:column;justify-content:flex-end;${({ theme }) => theme.direction === 'rtl' ? 'margin-right: auto;' : 'margin-left: auto;'};width:${({ fullWidth }) => (fullWidth ? '100%' : 'max-content')};`;\nconst isLink = (action) => Boolean(action.tag === 'a');\nconst StyledBadge = styled.div.withConfig({ displayName: \"StyledBadge\", componentId: \"sc-elg89d\" }) `${({ theme }) => css `background-color:${theme.interaction.recipe750.default};border-color:${theme.interaction.recipe450.default};border:${theme.size.border.heavy} solid;min-height:${theme.size.static300};min-width:${theme.size.static300};${theme.direction === 'rtl' ? 'left: 0' : 'right: 0'};`} border-radius:50%;display:flex;justify-content:center;position:absolute;z-index:1;`;\nconst StyledBadgeText = styled.div.withConfig({ displayName: \"StyledBadgeText\", componentId: \"sc-zzzroo\" }) `${({ theme }) => css `color:${theme.interaction.recipe450.default};font-size:${theme.size.static200};line-height:${theme.size.static200};`} background:transparent;display:flex;flex-direction:column;justify-content:center;`;\nconst NextBestActionButtonInternal = React.forwardRef((props, forwardRef) => {\n const { action, closeButtonAriaLabel, displaySubActions, expandContent, fullWidth, hideIcon, subActions, tabIndex = undefined, theme, } = props;\n const [internalDisplaySubActions, setInternalDisplaySubActions] = React.useState(false);\n const CloseButtonRef = React.useRef(null);\n const timeout = parseInt(theme.animation.duration.nba || '300', 10);\n React.useEffect(() => {\n if (typeof displaySubActions === 'boolean' &&\n displaySubActions !== internalDisplaySubActions) {\n setInternalDisplaySubActions(displaySubActions);\n }\n }, [displaySubActions, internalDisplaySubActions]);\n React.useEffect(() => {\n if (internalDisplaySubActions) {\n setTimeout(() => {\n var _a;\n (_a = CloseButtonRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n }, timeout);\n }\n }, [internalDisplaySubActions]);\n const ref = forwardRef;\n const NBAContent = (React.createElement(React.Fragment, null,\n React.createElement(StyledOverflowWrapper, null,\n React.createElement(StyledTextWrapper, { expanded: expandContent },\n React.createElement(Text, { appearance: TextAppearance.label0200, staticSize: true, color: TextColor.inherit }, action.content))),\n React.createElement(StyledIconWrapper, null,\n React.createElement(StyledDecorativeIconWrapper, null,\n React.createElement(TransitionGroup, null, hideIcon ? null : (React.createElement(Transition, { timeout: { exit: timeout }, key: action.icon.key || undefined }, (state) => (React.createElement(StyledInnerIconWrapper, { transitionState: state }, action.icon))))))),\n (subActions === null || subActions === void 0 ? void 0 : subActions.length) ? (React.createElement(StyledBadge, null,\n React.createElement(StyledBadgeText, null,\n React.createElement(\"bdi\", null, `+${subActions === null || subActions === void 0 ? void 0 : subActions.length}`)))) : null));\n const additionalProps = isLink(action) ? { href: action.href } : {};\n const toggleDisplaySubActions = () => {\n setInternalDisplaySubActions(!internalDisplaySubActions);\n };\n const handleOnClick = (evt) => {\n if (subActions === null || subActions === void 0 ? void 0 : subActions.length) {\n toggleDisplaySubActions();\n }\n action.onClick && action.onClick(evt);\n };\n const renderSubActions = (actions) => {\n const subActions = actions.map((actionItem, actionIndex) => {\n const endIndex = actions.length - actionIndex;\n return (React.createElement(StyledSubNextBestActionButton, { key: actionItem.key, show: internalDisplaySubActions, endIndex: endIndex, \"aria-hidden\": !internalDisplaySubActions }, actionItem));\n });\n return React.createElement(React.Fragment, null, subActions);\n };\n const mainNBAB = isLink(action) ? (React.createElement(StyledButton, Object.assign({ as: \"a\", onClick: action.onClick }, additionalProps, { show: true, ref: ref, expanded: expandContent, fullWidth: fullWidth, \"aria-label\": action.ariaLabel, tabIndex: tabIndex }), NBAContent)) : (React.createElement(StyledButton, { onClick: handleOnClick, show: !internalDisplaySubActions, ref: ref, expanded: expandContent, fullWidth: fullWidth, \"aria-label\": action.ariaLabel, tabIndex: tabIndex }, NBAContent));\n return (React.createElement(StyledNextBestActionButtonWrapper, { fullWidth: fullWidth },\n (subActions === null || subActions === void 0 ? void 0 : subActions.length) ? renderSubActions(subActions) : null,\n mainNBAB,\n (subActions === null || subActions === void 0 ? void 0 : subActions.length) ? (React.createElement(StyledCloseButton, { \"aria-label\": closeButtonAriaLabel, onClick: handleOnClick, show: internalDisplaySubActions, ref: CloseButtonRef },\n React.createElement(Close, { ariaHidden: true }))) : null));\n});\nNextBestActionButtonInternal.displayName = 'NextBestActionButtonInternal';\nexport const NextBestActionButton = withTheme(NextBestActionButtonInternal);\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nexport var ArrowLeft = React.forwardRef(Object.assign(function (props, forwardRef) {\n var variant = props.variant || \"default\";\n if (variant === \"default\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M22.003 11.032H4.125A88.136 88.136 0 0 1 8.89 6.45l-.888-.99c-.06.054-6 5.384-6 6.237 0 .877 5.94 6.237 6 6.29l.888-.99a80.595 80.595 0 0 1-4.782-4.635h17.895z\" }));\n }\n if (variant === \"small\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"12\", height: \"12\", viewBox: \"0 0 12 12\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M11.013 5.328H3.136a48.545 48.545 0 0 1 1.991-1.885l-.888-.99C.968 5.383.968 5.801.968 5.98c0 .515 1.78 2.217 3.271 3.555l.888-.99a44.17 44.17 0 0 1-1.979-1.886h7.865z\" }));\n }\n return null;\n}, { displayName: 'ArrowLeft' }));\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nexport var ArrowRight = React.forwardRef(Object.assign(function (props, forwardRef) {\n var variant = props.variant || \"default\";\n if (variant === \"default\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"m15.99 5.377-.887.99a80.64 80.64 0 0 1 4.782 4.635H1.991v1.33h17.877a88.117 88.117 0 0 1-4.764 4.583l.886.99c.06-.054 6-5.386 6-6.239 0-.876-5.94-6.235-6-6.289z\" }));\n }\n if (variant === \"small\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"12\", height: \"12\", viewBox: \"0 0 12 12\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"m7.783 2.418-.888.99c.802.718 1.472 1.37 1.98 1.885H1.01v1.33h7.878a48.711 48.711 0 0 1-1.992 1.886l.887.99c3.272-2.93 3.272-3.349 3.272-3.528 0-.515-1.78-2.217-3.272-3.553z\" }));\n }\n return null;\n}, { displayName: 'ArrowRight' }));\n","var __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};\nimport * as React from 'react';\nimport { ArrowLeft, ArrowRight } from '@volkswagen-onehub/icons-core';\nimport { CTA, } from '../call-to-action';\nimport { withTheme } from 'styled-components';\nconst Arrow = withTheme((props) => props.theme.direction === 'rtl' ? (React.createElement(ArrowLeft, { variant: props.size === 'small' ? 'small' : 'default', ariaHidden: true })) : (React.createElement(ArrowRight, { variant: props.size === 'small' ? 'small' : 'default', ariaHidden: true })));\nexport class ButtonNext extends React.PureComponent {\n constructor(props) {\n super(props);\n }\n render() {\n const { size } = this.props;\n const _a = this.props, { children } = _a, rest = __rest(_a, [\"children\"]);\n return (React.createElement(CTA, Object.assign({}, rest, { icon: React.createElement(Arrow, { size: size }), iconPosition: \"end\", size: size }), children));\n }\n}\n","var __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};\nimport * as React from 'react';\nimport { ArrowLeft, ArrowRight } from '@volkswagen-onehub/icons-core';\nimport { CTA, } from '../call-to-action';\nimport { withTheme } from 'styled-components';\nconst Arrow = withTheme((props) => props.theme.direction === 'rtl' ? (React.createElement(ArrowRight, { variant: props.size === 'small' ? 'small' : 'default', ariaHidden: true })) : (React.createElement(ArrowLeft, { variant: props.size === 'small' ? 'small' : 'default', ariaHidden: true })));\nexport class ButtonPrevious extends React.PureComponent {\n constructor(props) {\n super(props);\n }\n render() {\n const { size } = this.props;\n const _a = this.props, { children } = _a, rest = __rest(_a, [\"children\"]);\n return (React.createElement(CTA, Object.assign({}, rest, { icon: React.createElement(Arrow, { size: size }), size: size }), children));\n }\n}\n","import * as React from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport { withTheme } from 'styled-components';\nimport { getColumnsWidthForBreakpoint, getGridColumn } from '../helpers/grid';\nimport { hexColorToRgba } from '../helpers/color';\nimport { Breakpoints } from '../helpers/breakpoint';\nimport { styled } from '../theme-provider';\nconst createCssBoxShadow = (themeShadowColor) => {\n const defaultBoxShadow = 'box-shadow: initial;';\n if (!themeShadowColor) {\n return defaultBoxShadow;\n }\n const darkShadowColor = hexColorToRgba(themeShadowColor, 0.1);\n const lightShadowColor = hexColorToRgba(themeShadowColor, 0.05);\n return `box-shadow: 0 8px 32px 0 ${darkShadowColor}, 0 16px 48px 0 ${lightShadowColor};`;\n};\nconst animationClassName = 'animation';\nconst StyledScrollWrapper = styled.div.withConfig({ displayName: \"StyledScrollWrapper\", componentId: \"sc-10pydn7\" }) `position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;-webkit-overflow-scrolling:touch;transition:${(props) => {\n const duration = props.theme.animation.duration.layer;\n const timingFunction = props.theme.animation.timingFunction.in;\n return `transform ${duration} ${timingFunction}`;\n}};&.${animationClassName}-exit{transform:translateY(0);}&.${animationClassName}-enter,&.${animationClassName}-exit-active,&.${animationClassName}-exit-done{transform:translateY(100%);}&.${animationClassName}-enter-active{transform:translateY(0);}&.${animationClassName}-enter-done{transform:none;}`;\nconst StyledLayer = styled.div.withConfig({ displayName: \"StyledLayer\", componentId: \"sc-17grtnp\" }) `height:auto;width:${getGridColumn(22)};max-width:${getColumnsWidthForBreakpoint(22, Breakpoints.b1920)};margin-top:${(props) => props.theme.size.dynamic0350};margin-bottom:${(props) => props.theme.size.dynamic0350};margin-right:auto;margin-left:auto;background-color:${(props) => props.theme.global.backgroundColor};pointer-events:auto;${(props) => createCssBoxShadow(props.theme.shadowColor)};`;\nfunction preventClickCapture(event) {\n const target = event.currentTarget;\n target.style.pointerEvents = 'none';\n const newTarget = document.elementFromPoint(event.clientX, event.clientY);\n if (newTarget) {\n newTarget.click();\n }\n target.style.pointerEvents = '';\n}\nfunction InternalContentLayer(props) {\n const { active, ariaLabel, ariaDescribedBy, ariaLabelledBy, children, in: visible, onExited, scrollElementRef, } = props;\n return (React.createElement(CSSTransition, { classNames: animationClassName, onExited: onExited, in: visible, timeout: parseInt(props.theme.animation.duration.layer || '0', 10) },\n React.createElement(StyledScrollWrapper, { onClick: preventClickCapture, ref: scrollElementRef },\n React.createElement(StyledLayer, { role: \"dialog\", \"aria-modal\": active, \"aria-describedby\": ariaDescribedBy, \"aria-label\": ariaLabel, \"aria-labelledby\": ariaLabelledBy, onClick: (event) => event.stopPropagation() }, children))));\n}\nexport const ContentLayer = withTheme(InternalContentLayer);\n","import * as React from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport { withTheme } from 'styled-components';\nimport { getColumnsWidthForBreakpoint, getGridColumn } from '../helpers/grid';\nimport { hexColorToRgba } from '../helpers/color';\nimport { Breakpoints } from '../helpers/breakpoint';\nimport { styled } from '../theme-provider';\nimport { CTA } from '../call-to-action';\nimport { Close } from '../../../icons-core/dist/Close';\nimport { Text, TextAppearance, TextTag } from '../text';\nconst CLOSE_BTN_ALIGNMENT_CALC = (44 - 24) / 2;\nconst createCssBoxShadow = (themeShadowColor) => {\n const defaultBoxShadow = 'box-shadow: initial;';\n if (!themeShadowColor) {\n return defaultBoxShadow;\n }\n const darkShadowColor = hexColorToRgba(themeShadowColor, 0.1);\n const lightShadowColor = hexColorToRgba(themeShadowColor, 0.05);\n return `box-shadow: 0 8px 32px 0 ${darkShadowColor}, 0 16px 48px 0 ${lightShadowColor};`;\n};\nconst animationClassName = 'animation';\nconst StyledScrollWrapper = styled.div.withConfig({ displayName: \"StyledScrollWrapper\", componentId: \"sc-1tgic0h\" }) `position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;-webkit-overflow-scrolling:touch;transition:${(props) => {\n const duration = props.theme.animation.duration.layer;\n const timingFunction = props.theme.animation.timingFunction.in;\n return `transform ${duration} ${timingFunction}`;\n}};&.${animationClassName}-exit{transform:translateY(0);}&.${animationClassName}-enter,&.${animationClassName}-exit-active,&.${animationClassName}-exit-done{transform:translateY(100%);}&.${animationClassName}-enter-active{transform:translateY(0);}&.${animationClassName}-enter-done{transform:none;}`;\nconst StyledLayer = styled.div.withConfig({ displayName: \"StyledLayer\", componentId: \"sc-15gz0d8\" }) `height:auto;width:${getGridColumn(24)};max-width:${getColumnsWidthForBreakpoint(24, Breakpoints.b2560)};margin-top:${(props) => props.theme.size.dynamic0350};margin-bottom:${(props) => props.theme.size.dynamic0350};margin-right:auto;margin-left:auto;background-color:${(props) => props.theme.global.backgroundColor};pointer-events:auto;${(props) => createCssBoxShadow(props.theme.shadowColor)};`;\nconst StyledContentContainer = styled.div.withConfig({ displayName: \"StyledContentContainer\", componentId: \"sc-1t57351\" }) `${(props) => !props.disableDefaultPadding &&\n `\n\t\t\tpadding: ${props.theme.size.dynamic0300} 0;\n\t\t`};`;\nconst StyledHeaderContainer = styled.header.withConfig({ displayName: \"StyledHeaderContainer\", componentId: \"sc-1twf875\" }) `position:sticky;top:0;display:flex;align-items:center;height:${(props) => props.theme.size.static515};padding:0 ${getGridColumn(3)};border-bottom:1px solid ${(props) => props.theme.border.color.secondary};background:${(props) => props.theme.navigation.backgroundTransparency};z-index:1;`;\nconst StyledTitleContainer = styled.h3.withConfig({ displayName: \"StyledTitleContainer\", componentId: \"sc-jcps5z\" }) `width:100%;margin:0;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;@media (max-width: ${Breakpoints.b560}px){width:${getGridColumn(17)};}`;\nconst StyledCloseButtonContainer = styled.div.withConfig({ displayName: \"StyledCloseButtonContainer\", componentId: \"sc-3jtqpl\" }) `position:absolute;${(props) => (props.theme.direction === 'rtl' ? `left: 0;` : `right: 0;`)} padding-inline-end:calc(${getGridColumn(1)} - ${CLOSE_BTN_ALIGNMENT_CALC}px);@media (min-width: ${Breakpoints.b1280}px){display:flex;justify-content:center;width:${getGridColumn(2)};}`;\nfunction preventClickCapture(event) {\n const target = event.currentTarget;\n target.style.pointerEvents = 'none';\n const newTarget = document.elementFromPoint(event.clientX, event.clientY);\n if (newTarget) {\n newTarget.click();\n }\n target.style.pointerEvents = '';\n}\nfunction InternalContentLayer(props) {\n const { active, ariaLabel, ariaDescribedBy, ariaLabelledBy, children, in: visible, onExited, onClose, scrollElementRef, closeButtonLabel, contentHeadline, disableDefaultPadding, } = props;\n return (React.createElement(CSSTransition, { classNames: animationClassName, onExited: onExited, in: visible, timeout: parseInt(props.theme.animation.duration.layer || '0', 10) },\n React.createElement(StyledScrollWrapper, { onClick: preventClickCapture, ref: scrollElementRef },\n React.createElement(StyledLayer, { role: \"dialog\", \"aria-modal\": active, \"aria-describedby\": ariaDescribedBy, \"aria-label\": ariaLabel, \"aria-labelledby\": ariaLabelledBy, onClick: (event) => event.stopPropagation() },\n React.createElement(StyledHeaderContainer, null,\n React.createElement(StyledTitleContainer, null,\n React.createElement(Text, { tag: TextTag.span, appearance: TextAppearance.headline0200, bold: true }, contentHeadline)),\n React.createElement(StyledCloseButtonContainer, null,\n React.createElement(CTA, { tag: \"button\", icon: React.createElement(Close, { ariaHidden: true }), onClick: onClose, type: \"button\", size: \"large\", emphasis: \"tertiary\", ariaLabel: closeButtonLabel }))),\n React.createElement(StyledContentContainer, { disableDefaultPadding: disableDefaultPadding }, children)))));\n}\nexport const ContentLayerV2 = withTheme(InternalContentLayer);\n","export const blurredSrc = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/4QCMRXhpZgAATU0AKgAAAAgABQESAAMAAAABAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAIdpAAQAAAABAAAAWgAAAAAAAABIAAAAAQAAAEgAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAABFGgAwAEAAAAAQAAAtoAAAAA/+0AOFBob3Rvc2hvcCAzLjAAOEJJTQQEAAAAAAAAOEJJTQQlAAAAAAAQ1B2M2Y8AsgTpgAmY7PhCfv/AABEIAtoEUQMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2wBDABwcHBwcHDAcHDBEMDAwRFxEREREXHRcXFxcXHSMdHR0dHR0jIyMjIyMjIyoqKioqKjExMTExNzc3Nzc3Nzc3Nz/2wBDASIkJDg0OGA0NGDmnICc5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ub/3QAEAEb/2gAMAwEAAhEDEQA/AOepaSikULRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAtFFFIYUUUUAFFFFABS0lFAC0UUUAFFFFABRRRQAUUUtABRRRQAtLTaWgB1OplLQA8U4UynA0gHinUwGlBoAfS03NOoAWlpKWgBaWkpaBC0tJS0wFoopaBBRRS0xBRRS0xCUUtFACUYpaKAExRilooATFFLRQAmKKWimAlFLRQISkp1JQAlFLRQAlFLRQAlLS0UAJRS0UAJRS0tAxKMUtFACUtFLSATFGKWigBMUuKWigYmKMUtFACYoxTqKAG4oxTqKAExRilooATFGKWigBMUYpaKAExRilooATFGKWigBMUYpaKAExRilooATFGKWigBMUYpaKAExRilooATFGKWigBMUYpaKAExRilooATFGKWigBMUmKdRQA3FGKdSUAJijFLRSATFGKWigBMUYpaKAExRilooATFGKWigBuKaRUlNNADMUYpaKYH/9DnqKKKQwooooGLRSUUALRSUUALRRRQAUUUUAFFFFABRRRQAUUUUALRSUUALRSUtIYUUUUAFLSUUALRSUtABRRRQAUtJRQAtFFFABS0lFAC0tJRQMdTs0ylpAPzTs1HTs0CJAadmos07NAEmadmowaXNAElLTM0uaAH0tMzTqBDqWm0tADqKbS0xDqKSlpiFopKWmIKKKKAFopKKAFpKKKYBRRRQIKKKKACiiigAooopgFFFFABRRRSAKKWigAooooAKKKKAClpKKBi0tJS0gCiiigApaSloGFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRSAKKKKACiiigAooooAKKKKACikooAKKKKACmmnU00wG0UUUAf/9HnqKSigYtFFFIAooooAKKKKACiiigYUtJRQAtFJRQAtFFFABRRRQAUUUUAFFFFABRRRQAtFJRQAtFFFAwpaSikAtFFFABS0lFAC0UUUAFLSUtABS0lFIY6lptFAD80uaZS0ASZpc1HmnZoESZp2aizTgaAJM07NR5p2aAH0tMzS5oEPpabS0AOpabRTEOpabS0xDqKSimIWiiimAUUUUCCiiigAooopgFFFFABRRRQAUUUUgClpKWgAooooAKKKKAEpaSigBaKKKAFooopDFooooAKWkpaBhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSUgFopKKAFopKKAFopKKAFopKKACiiigAooopgFFFFABTTS0hoAbRRRQB//S52iiigAooooAKKKKBhS0lFAC0UlFIBaKKKACiiigYUUUUALRSUUALRSUtABRRRQAUUUUAFFFFABRRRQAtFJS0AFLSUUhi0UlLQAUtJRQAtFFFAC0UlLQAUtJRSGLS0lFADqWmUtAD80uaZS5oESA07NR5pc0AS5pc1HmnZoAkzS1HmnZoEPpaZmnUAOpabS0xDqKSimIdRSUtMQtFJRTAWiiigQUUUUAFFFFABRRRQAUUUUAFFFFAC0UlFAC0lFFABRRRQAUtJS0AFLSUtAwpaSlpAFLSUUDFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiikoAWikooAWikooAKKKKACiiigAooooAKKKKACiiikAUUUUAFFFFABRRRQAUUUUwCiiigAooooAKKKKAEppp1NNACUUlFAH/9PnaKKKACiiigAooooAKKKKBhRRRQAUUUUAFFFFIBaKSigBaKSloAKKKKBhS0lFAC0UlFAC0UlLQAUUUUAFFFFAC0UUUAFFFFIYtFFFABS0lFAC0UUUALRSUtABS0lFIYtFJS0ALS02loAdS5plLQIfmnZqPNOzQBIDTgaizTgaAJM07NR5p2aBD6WmZp2aAHUtNpaYh1LTaWmIdRSUtMQUtJS0xBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAC0UlLQAtFJS0DFopKKQC0UUUALRSUUDFooooAKKKKACiiigAopKKAFpKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooopAFFFFABRRRQAUUUUAFFFFABRRRTAKKSigBaKSigBaSiigAppp1NNADaKKKAP/U52iiigAooooAKKKSgBaKSigBaKSigYtFFFABRRRQAUUUUAFFFFABRRRQAtFJRSAWikpaBhRRRQAUtJRQAtFJS0AFLSUUALRSUtABS0lFIYtFJS0AFLSUUALRRRQAtFJRQAtFFFAxaKSikAtLSUUAOpabRQIfmnZqOnZoAfmnA1HmnZoAkzTs1FmnA0CJM07NR5p2aAH0tMzTqYh1LTadTELS0lLTEFFFFMQUUUtACUUtFACUUtFACUUtJQAUUUUAFFFFABRRRQAUUUUAFFFFAC0UlLQAUtJRQMWiiikAtFJS0AFFFFAxaSiigAooooAKKKSgBaKSigBaKSkoAdRTaWgBaKSigBaKSigBaKKKACiiigAooooAKKKSkAtFJRQAtFJRQAUUUUAFFFFABRRRQAUUUUAFFFFMAooooASkNLTTQAlFFFAH/9XnaKSigAooooAKKKKACiiigAooooAKKKKACiiigApaSigBaKSigYtFJRQAtFJS0AFFFFABRRRQAtFJRSAWikpaBhS0lFAC0UlFAC0tJRQAtFJS0DFopKKQC0UlLQAtFJRQAtFJRQAtLSUUALRSUtAC0UlLSAWlptLQA6lzTKWgCTNLmo807NAEgNOBqLNOBoAlBpwNRg04GgRIKdTBTxTEOpaSlqiQpaSlpiCiiigAooooAKKKKACiiigAooooAKKKKACkpaKAEopaSgAooooAKKKKAFooooAKWkpaBhS0lFIBaKKKACikooGFFFJQAtJSZpM0gFzRmm5pM0DH5pM03NJmgB+aXNR5pc0APzS5qPNLmgQ+lpmaWgB1FJS0AFFFFMAooooAKKKKACiiikAUUUUAFFFFABRRRQAUUUlAC0UlFAC0UlFAC0lFFABTTS0hpgNooooA/9bnKWiigYUlFFABRRRQAUUUUAFFLRQAlFLRQAlFLSUCCiiigAooooAKKKKACiiigAooooGFLSUUALRSUtABRRRQAUUUUALRSUUhi0UUUALRSUtABS0lFAxaKSigBaKKKAFopKKAFopKWkAtFJRQAtLSUUALS02loAWlptLSAWlzTaWgB+acDUdOFAEgNPFRinigRKKeKjFPFMQ8U6minVRItFFFMQUUUUAFFLRQAlFLRQAlFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQMKWiikAUUUUAFFFFABRSUlAxabmjNNJpALmm5pCaaTSGOzSZpmaTNAx+aM0zNGaAH5ozTM0uaAH5pc0zNLmmBJmlzUeaXNAiTNOqMGnZoEOpabS0ALRSUUALRSUUALRSUUAFFFJQAtFJRQAtFJRQAtFJRQAtFJRQAtJRSUALRSUUALTTS000AJRSUUAf//X5yloooGFFFFABRRRQAUUUUAFFFFAgooooAKKKKACiiigBKKWigBKKWkoAKKKKACiiigAooooGFFFFABRRRQAtFJRQAtFFFABS0lFAxaKKKQC0UUUAFFFFAwooooAKWkooAWiiigApaSloAKWkpaQBRRRQAtFFFAC0UUtIBaUUlKKAHipBUYp4oAlFPFRipBTJHinU0U6qELRRRTEFLRRQAUUUUAFFFFABSUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUgCiiigBaKSigYtFJRSAWkopKACkozTSaAAmmk0E0wmkMCaaTSE00mgoXNJmm5ooAdmim0tADqWkpaAFpaSkoEOzTs1HS5oAkBpwNRg04GgCTNLmmZpc0CHZozTc0ZoAdmjNNzRQA7NGabRQA6ikooAWikooAWim0UAOoptFAC0UlFAC0UlFAC0UlJQMWkNFNNAgopKKAP/Q52iiigYUUUUAFFFFABRRRQAUUUUCCiiigAooooAKKKKACiiigApKWkoAKKKKACiiigAooooGFFFFABRRRQAUUUUAFLSUtABS0lLQAUtFLQAlFOooGNopaKQCUUtFAxKKWigAoopaACilooASlpaMUgEpaXFGKAEpaXFGKAEpaXFLigBKcKMUoFIBRUgpopwoESCnimCnimIeKdTRS0xDqKSlpiCiiigApaSigAooooAKKKKACikooAWikooGLRSUUgFpKKKACiiii4BRRSUXAWikopXGLRSUUALRSUlAC0maKbmgBSaYTQTTSaBgTTCaCaYTQMCabmgmm5oAdRTaWgBacKbThQA6lpKdQAUlLSUAJRSUUAPFOFMFOFIB9LTaWgQ7NGabRQA6im0UAOoptLQAtFJRQAtFJRQAtFJRQAtFJRQAtFJRQAtFJRQAUUUUAFNNLSGgBKKKKAP/0edopKWgYUUUlAC0UlFAC0lFFABS0lFAC0UlFAC0UlFABRRRQAtFJRQAUUUUCCiiigYUUUUAFFFFABRRRQAUUUUAFFLRQAUUUtABS0UtMQUtFOoASjFOpcUhjMUYp+KTFADMUYp+KMUDGYpcU7FLigBmKXFPxRikA3FGKfilxQAzFLinYpcUBcZilxT8UYoC4zFLin4pcUCuMxRin4pcUBcZinYp2KXFFguNAp4oxSgUWC4op4pop1Ah1OptLTEOopKKAFopKWgAooooAKKKKQwopKKAFopKKAFopKKAFopKKQxaKSigBaSiigAoopKQwoopKAFopKKAFpKKSkAU00tNNMYhNMJpTTDQAhNMJpTTTTAM0lJRQAtOFNFPFACinCkFOoAWlpKWgBKSlpKAEoopaQBThSUtADqWkpaQBS0lFAC0UlLQAUUUUAFFFFAC0UlFAC0UlFAC0UlFAC0UlLQAUUUUAFFFFACUhpaQ0AJRRRTA/9LnKKKKBhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUtABRRRQAUlLRQAlFLRQAlFLRQAUUUUAFFFLQAlLRRQAUtFLTEJS0tLQAU4UgpwoAWlxQBTgKAExRin4pcUAR4oxUuKMUgI8UYqTFLigLkeKMVJilxQFyPFLin4pcUBcZijFSYoxQFxmKMVJijFArjMUYp+KXFAXGYpcU7FLigLjMUuKdijFAXG4pcU6igBKdRRTAWiiigQtFFFAC0UlLSGFFFFABRRRQAUUlFAC0UlLQAUUUUhhRRRQAUUUUAFFFFIYUlLSUhhSUtJSAKSiigYUlFFACU00pppoAaaYacaYaYDTTDTjTTTASiiigBwp4pgp4oAeKdTRTqAFooooASkpaSgAoopaQBTqSnUgCloooAKKKKACiiigBaKKKACiiigAooooAKKKKACiiigApaSloAKKKKACiiigBKQ0tIaAEooopiP/9PnaKKKBhSUtFACUUtFACUUtFACUUtFACUUtFACUUtFACUtFFABRRRQAUUUUAFFFLQAlFLRQAlFLRQAUUUtACUUtLQAlLRS4oAKMUuKdimIbinYpcU7FADQKcBSgU8CgQgFOApQKcBQAmKdilAp2KAG4oxT8UYoAZilxTsUYoAbijFPooENxRinUUANxS4paKAEopaKACilooASilooAKKKKACilooASloooAKKKKAFopKWgAooooAKWkooGFFFFABRRRSAKKKKAFopKKAFooooAKKKKAFooopDEooopDEpKWkpDEoopKQwpKKSgBKaaU000AIaYaU000xjTTaU02mIKKSloAcKeKjFPFAEgpaYDTs0AOpKTNJmgBaKTNJQA6nCmU4UgHCnUgpaQC0UUUAFFFFABRRRQAUtJRQAtFFFABRRRQAUUUUAFFFFABRRRQAtFFFABRRRQAlIaWkNACUUUUxH/9TnaKKKBhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRS0UAJS0UUAFFFFABRRRQAUUtFACUtFLQAlLRS0AJS0uKXFACYpcU4ClApiEApwFOApwFADQKcBTgKcBQIYBTgKdinYoAaBTgKXFLQAYpaKWgQlLRRQAUUUUAFFFFABRRRQAlFLRQAUUUUAFFFFABRRRQAUUUUALRSUUALRSUtABRRRQAUUUUAFFFFAC0UlLQMKKKKACiiigAooooAKKKSgQtFJRQMWlptFIB1FNzRmgY6kzTc0maQx2aTNNzSZpAOpKbmjNIYtJSZpM0DA000GmmgYhpppaaaAENNp1NpiEooopgLTgaZS0ASZpc1HmlzQA/NGaZmjNADs0uaZmlBpAPFPFRinikA8U6minUhi0UUUCCiiigAooooAKKKKAClpKWgAooooAKKKWgBKKKKACiiigAooooAWkoooAKQ0tIaAG0UUUwP/9XnqKSloGFJRRQAUUUUAFFFFABS0lLQAUUUUAFFFFABRRRQAUUUUAFFFFABS0UUAFFFLQAUUtFABS4pcUoFMQYpwFKBTgKAEApwFOApwFAhAKcBSgU7FACYpcU7FLQAmKXFFLQISloooAKKKKACiiigAooooAKKKKACkoooAKKKKACiiigAooooAKWkooAWikooAWikooAWikooAWikpaACiiigApaSigBaKSloGFFFFIAooooAKKKSmAtFJRQAUUlFAC0ZptGaQxc0mabmkzSGOzSZpmaTNIB+aTNMzSZoGPzRmmZpM0hj80mabmjNAC5pKM0lAwptLSUxCU2lpKYriUlLRTsK4lLSUU7BcXNGaSkpWC47NGabRQMdmnCo6eKQyQU8VGKkFSMkFOpgp1IB1FFFABRRRQAUUUUCCiiigAooooAWiiigAooooAKKKKACiiigAooooAKKKKACmmnU00AJRRRTA//W52iiigYUUUUAFFFFABRRRQAUUUUAFFFFAC0UlFAC0UUUAFFFFABS0UUAFFFLTAKWiloEFLilApwFACAU4ClAp4FACAU8CgCngUCEApwFLinUAJinUUUAFLRRQIKKKKACiiigAooooAKKKKACikooAKKKKACiikoAWikooAWikooAWikooAWikpaACiiigAooooAKKSigBaKSigBaKKKAClpKKBi0UlLQAUUUUgCiikoAWikopgFFJRQAUUUlIApKWmmkUITTSaU0w0hgTTc0Gm0ALmjNNpKAHZpc0yjNAx+aM0zNLmgB1FNzRQAtJRSU0IKSiiqSJbCkpaSqsTcKSlop2FcbSU6kpWKuJRRRUspC04U2nCpZQ8VIKjFSCpGSCnU0U6kAtLSUtABRRSUAFFFFABS0lFAC0UlLQIKWkpaACiiigAooooAKKKKACiiigAooooASkNLSGgBtFFFMD//X52ikooGLRSUtABRRRQAUUUUAFFFFABRRRQAUUUUALRRRQAUUUtABRRS0AFLSU6mIKcBQBTgKAACngUAU8CgAApwFKBTsUCEAp1FLQAtFFFAhaKKKAFopKKAFopKKAFopKKACiiigAooooAKKSigBaSiigAooooAKKSigBaKSloAKKKKACiiigBaSiigAooooAKKKSgBaKSigBaKKKAClpKKAFopKKBi0UlFAC0UlFABRSUUAFFFLQAUUUUhiU006mmkMYaYaeaaaQxhptONNNAxKSlpKYgopKKBi0UlFAC5ozSUlAh2aSkoqkJi0UlFUiGLRRRVEhRRRTEJSUtFIaEpKWipZaCnCkpwqGWhwqQUwU8VAx4p9NFOpDFpaSigAooooAKKKKACiiigApaSloAKWkooELRRRQAUUUUAFJRRQAUUUUAFFFFABSGlppoASiiimB//Q5yiiigYUtJS0AFFFFABRRRQAUUUUAFFFFABRRS0AFFFFAC0UUUALRRS0ALTgKQCngUCACngUAVIBQAAU4CgCn0CExTqKKYBS0lFAhaKSloAKWkooAWikooAWikooAWikooAKKKKACiikoAWikooAWkoooAKKKKACikooAWiiigBaKSigBaKKKACiiigApKKKACiikoAWikooAWikpaACiiigApaSigYtFJRQAtJRSUALRSUUALS0UtIYUUtFIBhppp5pppFDDTDTzTTQAw0008000AMNNpxpppgJRRSUwCikooAWikooAWikoqkSxaKSiqRDHUUlFUIdRSUUCCiiigYUUUVLGhaUUlOFQy0xwp4pgp4qGUSCnUwU6kMdRRRSGFFFFABRRRQAUUUUAFLSUtABRRRQIWiiigApKKKACiiigAooooAKKKKACmmlpDQAlFFFAH//0ecoopaYwooopAFFFFABRRRQAUUUUwCiiigApaKKQBS0lLQAUtFLQAU4CgCngUAAFPAoAp4FAgAp4FAFOoEFOpKWgAooopiCiiigAooooAKWkooAWikooAWkoooAKKKSgBaKSigBaKSigBaKSigBaSiigAooooAKKKKAClpKKAFooooAKKKKACiiigApKKKACiikoAWikooAWikpaACiiigAooooGFFFFABRSUUALS0lKKAFp1Ap1IYlFLRSAYaYakNMNIYw0008000DGGmGnmmGmAw00040w0xCUlFJTEFFFJQMWikooAWikopoTFpabS1RItLTaWmSLS0lFMBaKKKBBRRRSGLThTaWpaKTHinioxThUtFJkgp4qMU4VDRVx9LTRTqQwooopDCiiigAooooAKWkpaACiiigQUtJRQAUUUUDCiiigAooooAKKKKBCUhpaQ0AJRRRQB//0ucpaKKYwooopAFFFFMAooooAKKKKACloooAKKKWkAUUUtABThSCnigBQKeBSCnigQoFPFNFOoEOpabS5oAdRTc0ZpgOopuaM0AOopuaM0AOopuaXNAC0UmaTNADqKbmjNADqKbmjNADqSkzRmgQtFJRQAtFJRQAtFJRQAtFJRQAtFJRQAtFJRQA6ikooAWikpaACiiigAopKKAFpKKKACiikoAWikooAWikooAWikpaACiiigYUUUlAC0UlLQAtOFIKeKQxRTqQU6gApKWikAw0008000DIzTSKkIppFIZEaYalIqM0wIjTDUhqM1QhppKU02mIKKKSgBaSiikAUUlLTAWikpaokWlptLTELS0lLTEFLSUUCFooooGFLSUUgH04UylqWhkgNOBqMU8VLRaZIKdUYp4qGUh1LSUtSMKSlooGJRS0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAhKQ0tIaAG0UUUAf/T52iiigoKKKKACilooASloooAKKWigBKWiigAooooAKWkpaAHCnCminCgB4p4qMU7NArElLmo80uaAsPzRmmZozQKw/NGaZmjNAWH5ozTM0ZoCw/NLmo80ZoCxJmjNR5ozQFiTNGajzRmgLEmaM0zNGaAsPzRmmZpc0wsOzRmm0UBYdmikooFYWlptLQFhaKSigBaKSigBaKSigBaWkooAWikpaAFopKKAFopKKAFpKKKACikooAWikooAWikooAWikooAWikooAWikooAWikooAWlFJThSGOFPFNFPFACinUlLSAKSlpKAEpKWigBlNIqSmmgZERUZFTGoyKAIDUZqY1EaoCM02nmm0xCUlLSUAJRRRQAUUUUAFLSUtMQtLSUtMkWlpKWmIKWkpaYgpKWkoAKWkopDHUtNpaAHinCmCnCpZS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AI8UmKkxSYoAjxSYqTFNxTAZSU/FJQA2kp1FMQ2kp1JQIbRS0UyWJS0lFUSx1LTaWmSLS0lLTJFopKWgAooooAWnCm0tADxTxUYp4qWUh4p1MFOrNlodS0lFQykLRRRSKCiiloAKSlooASilooASilooASilooASmmnUhoAbRRRQI//T56iiiqAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigYUUUUCClpKKAFopKKBi0UlFABRRRQAUtJRQAtFJS0gCiiigAooooAKKKKACiiigLhS0lFA7i0UlFAXFooooC4tFJRQO4tFJRSC4tFJRQFxaKSigdx1FJRQFx1LmmUtIdx2aM02igB+aM02jNAD80ZpmaM0ASZpc1HmlzQBJmlzUWaXNAEmaM0zNGaQDs0U3NGaBjqKTNFADqdTRThQIXFLigU6gQmKMU6loAZijFPxRigCPFJipMUmKAIiKaRUpFNIoGRYpKeRTTTAZRTqbTASkp1JQIbSU6kpksbRS0lUSwpaSimSx1LTaWmSOopKWmIWikpaAClpKWgBwpwplOFJjJBThUYp4qGUh9LTRT6zZaClopaRQlFLRSASilooASilooASilooASilooAbSGnUhoAbRS0UwP//U56iiiqAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKWkooAWikooAWikooAWiiigAooooAKKKKACiiigBaKSlpAFFFFAwooooAKKKKAuFFFFA7i0UlFILi0UlLQO4UUUUBcWikooHcWjNJRQFxc0uabRSAdmlzTKKBj80uaZmjNAD807NR5pc0ASA08Gos04GgCUGnA1EDTgaQiWlpgNLmgB9FJmloEFJS0lADTTTTzTDQMYaYaeaYaYxtJSmm0AFFFFMQlJS0lMQ2kp1JTJYlFFJTJFpaSlqiRaWkooEOopKWmIWikpaAFpwplOFIY8U8VGKkFSxoeKeKaKeKhloWlxSilxUlCYoxTsUYpANxRinYoxQA3FGKdijFADcUU7FGKAG4op2KKAGUhp9NIoAZRTqKYH//1eeoooqgCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBaKSloAKKKKACiiigAoopaACiiigAooooAKSlpKACiiigBaKSlpAFFFFAwooooC4UUUUBcKKKKB3CiiikFwoopKB3FopKKB3HZpc0yloAfmlBqPNLmkMlBpwNRZpwNAEwNOBqEGnA0CJgadmoQaeDSAfmlpmaXNAAaaaWmmgBpqM080w0wGmkoooGFFFFAgpKWkpiG0lOptMQlJS0lUSwpaSlpki0tNpaYh1FJS0CFopKWmIWlptOoAeKeKjFSCpZSJRUgqMVIKhlIeKdSCnVJQUYpaKQCUUtFACUYpaKAExRS0UANoxTqKAG000+kNADKKWigD/9bnqKSiqAWiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAWikpaACiiigAooooAWikooAWikooAKKKKACiiigAooooAKWkooAWikooAWikooAWikopAFFFFAwopKKAFpKKKB3CiiigLi0UlLSHcWnZplOoC48GnA1GKeKQyQGnA1GKcKBkmaWmUtIBaQ0UhpiGmmGnGmmgY2iiigAooooAKSlpKYhKSlpKYhtJTqSmSJRRRTJFpabS0xC0tJS0yRaKKKYC0tJS0CHinioxUgqWMlFSiohUoqWUiQU8UwU8VJQtFFLSASilooGJRS0lABRRRQAUUUUAJTTT6aaAG0UUUCP/9fnaKKWmAlFLRTAKKKKACiiigAoopaAEopaKAEopaSgApKWigBKKWkpAFFFFABRRRTAWiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiikoAWikooAWikooAWikpaACiiigAooooAKKKKACiiigBaKSloAKKKKACiikoAWikooAWkoooAKKKKAClpKKAFopKKAFopKKAFopKKACiiigAooopAFFFFAwoopaAEopaKAEpaWjFABS0YpcUDFpRRS0hjhThTadSGLS0lLQMKQ0tNoAQ02nGm0DEpKWkoAKKSigQUU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QAUUUUAFJRRQAUUUlABRRRQAUUUUAFFFFAC0UlFA7jqKSigdx1FJRSC46im0UDuOoptFAXHUU2igLjqM03NGaAuOzRmm5ozQFx2aKbmjNAXHUU2igLi5opKKAuLRmkooFcXNFNooC47NFNooC46jNNooC46kpKKAuLmjNNooC4uaKbRQO46im0tArjqWm0tAXHUUlFAXFopKKAuLRSUUCuLRSUtAXCiiigLiUUUUBcSkpaSgBtFFFACUtJRTAdS02loEPpabS0CHUUlLQAUUUUDQUtJRUmiFopKWkWFFFLSASlop1AhMU4UU6gQCnUlLQIWnUlLQIWlpKWgBadTadQIWnU2nUwCmmnUlAiMiomFTmomFMCuwqEirDCoWpgRGm080ymAUtJRQA8U8VGKcKYiUGpAahBqQGkImBqQVCDUgNIZKKdTBThSGPopKWkAtFFFACUhpaQ0ANooopgf/0sOlptOqhC0UUUALRRRQAUUUUAFFFFABSUUUAJRRSUAFFFFABSUUUAFFFFABSUUUAFFFFABSUtFACUtFFABRRRQAUUUUALRSUUALRSUUALRSUUBcWikooC4UUlFAC0U2igY6ikooELRSUtABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFACUUUUAFJRRQMWikpaAHUtNp1AgpaKKACilpKACiiigAooooAWiiigBKKWkoASkp1JQA2kp1JQAlJS0UDClpKKBDqdTKdQIdRSUUALRRRQNBS0lLUmiClpKWkWFLRS0gFpaKWgkWlopaBBS0UUALS0lLQIWlpKWgBaWkpaBDqWkpaYC0UUUCGmozUhphpgQNULVO1QtTAhNRmpDTDTAbS0lFADqcKZThQIkFPBqIU8GgCYGpAahBqQGgRMDTxUQNSCkMkFLTRS0hjqKSlpAFNNOppoAbRRRQB//9PBp1Mp1UA6lptLQIWlpKKAFopKKAFpKKKACkoooASiiigBKKKKACiiigApKWkoAKKKKACiiigAopKWgQUUUlAC0UUUAFFFFABRRRQAUUUUAFFFFABSUtJQAUlFFAwopKKBi0UlLQIWikooAWiiigQUUUUAFFFFABS0lFAC0UUUAFFFFABSUtFAxKKKKACiiikMWnU2loEOpaSloAKKKKACkpaSgAooopgLRSUUALRSUUCCkpaKBiUlLSUAJSUtFACUUUUDFopKKBDqWm0tADqKSloGhaWkoqS0LS0lLSLFp1JS0hDhS0lLQSLS0lLQAtFJS0CFpaSigB1FJS0ALTqbS0CHUtNpc0wH0U2loEBqM080w0ARNULVM1QtTAhNRmpDUZpjG0UUUxC0tNpaAHinCmU4UxEoNSA1CDTwaQicGpAagBqQGkMmFPFRA08GkA+lpuaM0DFpDRSGkAlFJRTA/9Tn6Wm0tMB9LTKWmIdS02loAWikooAWikooAWkopKAFpKKKACikooAWikooAKKKKACikooAKKKKACikooAWiiigQUUUUAFFFFAC0UlFAC0UlFAC0UlFABRRSUDCkpaSgApKKKQwpaSigBaKSlpgLRSUtAhaKSigQtFFFABRRRQAUUUUALRSUUDFpKKKACiiikAUUlFAx1LTaWgQ6lptLQAtFJRQAtFJRQAtFJRQAtFJRQAtFJRQAtJRSUALSUUlABSUtJQAlFFJQMWikooAdS02lpiHUtNpaQx1LTaWkUh1LTaKRY+lplOoEPpc0ylpCH5ozTaWgQ7NGabRQA/NGabRQA/NLmmUUAPzS5plLTEPzTs1HS0ASZozTKKBDs00mimGgBpNRNUhqI0wIzUZp5qM0wEpKKKYC0UlLQAtOFNpaBDwaeDUYp4oAlBqQGoRTxQBODTwahFPFICXNLmoqdSGPzTSaSmmgB2aM0yigD//2Q==';\n","import * as React from 'react';\nimport { styled, ThemeProvider } from '../theme-provider';\nconst StyledWrapper = styled.div.withConfig({ displayName: \"StyledWrapper\", componentId: \"sc-10z2z34\" }) `--font-family-head:vw-head,Helvetica,Arial,sans-serif;--font-family-text:vw-text,Helvetica,Arial,sans-serif;word-break:initial;hyphens:initial;font-style:initial;:lang(ko),:lang(zh),:lang(zh-tw),:lang(ja){font-style:normal;}:lang(ko){--font-family-head:vw-head,Apple SD Gothic Neo,BonGothic,\\uB9D1\\uC740 \\uACE0\\uB515,Malgun Gothic,\\uAD74\\uB9BC,Gulim,\\uB3CB\\uC6C0,Dotum,Helvetica Neue,Helvetica,Arial,sans-serif;--font-family-text:vw-text,Apple SD Gothic Neo,BonGothic,\\uB9D1\\uC740 \\uACE0\\uB515,Malgun Gothic,\\uAD74\\uB9BC,Gulim,\\uB3CB\\uC6C0,Dotum,Helvetica Neue,Helvetica,Arial,sans-serif;word-break:keep-all;hyphens:auto;}:lang(zh){--font-family-head:vw-head,\\u534E\\u6587\\u7EC6\\u9ED1,STXihei,PingFang TC,\\u5FAE\\u8F6F\\u96C5\\u9ED1\\u4F53,Microsoft YaHei New,\\u5FAE\\u8F6F\\u96C5\\u9ED1,Microsoft Yahei,\\u5B8B\\u4F53,SimSun,Helvetica Neue,Helvetica,Arial,sans-serif;--font-family-text:vw-text,\\u534E\\u6587\\u7EC6\\u9ED1,STXihei,PingFang TC,\\u5FAE\\u8F6F\\u96C5\\u9ED1\\u4F53,Microsoft YaHei New,\\u5FAE\\u8F6F\\u96C5\\u9ED1,Microsoft Yahei,\\u5B8B\\u4F53,SimSun,Helvetica Neue,Helvetica,Arial,sans-serif;}:lang(zh-tw){--font-family-head:vw-head,Helvetica Neue,Helvetica,Arial,sans-serif;--font-family-text:vw-text,Helvetica Neue,Helvetica,Arial,sans-serif;}:lang(ja){--font-family-head:vw-head,\\u30D2\\u30E9\\u30AD\\u3099\\u30CE\\u89D2\\u30B3\\u3099 Pro W3,Hiragino Kaku Gothic Pro,Osaka,\\u30E1\\u30A4\\u30EA\\u30AA,Meiryo,MS P\\u30B3\\u3099\\u30B7\\u30C3\\u30AF,MS PGothic,Helvetica Neue,Helvetica,Arial,sans-serif;--font-family-text:vw-text,\\u30D2\\u30E9\\u30AD\\u3099\\u30CE\\u89D2\\u30B3\\u3099 Pro W3,Hiragino Kaku Gothic Pro,Osaka,\\u30E1\\u30A4\\u30EA\\u30AA,Meiryo,MS P\\u30B3\\u3099\\u30B7\\u30C3\\u30AF,MS PGothic,Helvetica Neue,Helvetica,Arial,sans-serif;}:lang(vi){--font-family-head:roboto-vi,Helvetica Neue,Helvetica,Arial,sans-serif;--font-family-text:roboto-vi,Helvetica Neue,Helvetica,Arial,sans-serif;}font-family:var(--font-family-text);`;\nexport class Language extends React.Component {\n constructor(props) {\n super(props);\n }\n render() {\n const { children, direction, language, tag } = this.props;\n return (React.createElement(ThemeProvider, { language: language, direction: direction },\n React.createElement(StyledWrapper, { as: tag, lang: language, dir: direction }, children)));\n }\n}\n","import * as React from 'react';\nimport { styled, ThemeProvider } from '../../theme-provider';\nimport { IntegratorRoot } from '../../integrator-root';\nimport { Language } from '../../language';\nimport { blurredSrc } from '../demo-blurred-image';\nconst StyledDemoIntegratorRoot = styled.div.withConfig({ displayName: \"StyledDemoIntegratorRoot\", componentId: \"sc-1t925xi\" }) `margin:0;position:relative;@font-face{font-family:'vw-head';font-weight:400;src:url('./public/fonts/vwhead-regular.woff2')format('woff2'),url('/public/fonts/vwhead-regular.woff2')format('woff2');}@font-face{font-family:'vw-head';font-weight:400;font-style:italic;src:url('./public/fonts/vwhead-regularitalic.woff2')format('woff2'),url('/public/fonts/vwhead-regularitalic.woff2')format('woff2');}@font-face{font-family:'vw-head';font-weight:700;src:url('./public/fonts/vwhead-bold.woff2')format('woff2'),url('/public/fonts/vwhead-bold.woff2')format('woff2');}@font-face{font-family:'vw-head';font-weight:700;font-style:italic;src:url('./public/fonts/vwhead-bolditalic.woff2')format('woff2'),url('/public/fonts/vwhead-bolditalic.woff2')format('woff2');}@font-face{font-family:'vw-head';font-weight:800;src:url('./public/fonts/vwhead-extrabold.woff2')format('woff2'),url('/public/fonts/vwhead-extrabold.woff2')format('woff2');}@font-face{font-family:'vw-head';font-weight:200;src:url('./public/fonts/vwhead-light.woff2')format('woff2'),url('/public/fonts/vwhead-light.woff2')format('woff2');}@font-face{font-family:'vw-text';font-weight:400;src:url('./public/fonts/vwtext-regular.woff2')format('woff2'),url('/public/fonts/vwtext-regular.woff2')format('woff2');}@font-face{font-family:'vw-text';font-weight:400;font-style:italic;src:url('./public/fonts/vwtext-regularitalic.woff2')format('woff2'),url('/public/fonts/vwtext-regularitalic.woff2')format('woff2');}@font-face{font-family:'vw-text';font-weight:700;src:url('./public/fonts/vwtext-bold.woff2')format('woff2'),url('/public/fonts/vwtext-bold.woff2')format('woff2');}@font-face{font-family:'vw-text';font-weight:700;font-style:italic;src:url('./public/fonts/vwtext-bolditalic.woff2')format('woff2'),url('/public/fonts/vwtext-bolditalic.woff2')format('woff2');}@font-face{font-family:'vw-text';font-weight:200;src:url('./public/fonts/vwtext-light.woff2')format('woff2'),url('/public/fonts/vwtext-light.woff2')format('woff2');}@font-face{font-family:'vw-head-ar';font-weight:700;src:url('./public/fonts/HelveticaNeueArabicBD.woff')format('woff'),url('/public/fonts/HelveticaNeueArabicBD.woff')format('woff');}@font-face{font-family:'vw-text-ar';font-weight:400;src:url('./public/fonts/HelveticaNeueArabicLT.woff')format('woff'),url('/public/fonts/HelveticaNeueArabicLT.woff')format('woff');}@font-face{font-family:'roboto-vi';font-weight:200;src:url('./public/fonts/roboto-v20-vietnamese_latin-300.woff2')format('woff2'),url('/public/fonts/roboto-v20-vietnamese_latin-300.woff2')format('woff2');}@font-face{font-family:'roboto-vi';font-weight:400;src:url('./public/fonts/roboto-v20-vietnamese_latin-regular.woff2')format('woff2'),url('/public/fonts/roboto-v20-vietnamese_latin-regular.woff2')format('woff2');}@font-face{font-family:'roboto-vi';font-weight:700;src:url('./public/fonts/roboto-v20-vietnamese_latin-700.woff2')format('woff2'),url('/public/fonts/roboto-v20-vietnamese_latin-700.woff2')format('woff2');}background:${(props) => props.hasBackgroundImage\n ? `url(${blurredSrc})`\n : props.theme.global.backgroundColor};background-size:cover;`;\nStyledDemoIntegratorRoot.displayName = 'StyledDemoIntegratorRoot';\nconst StyledDemoGrid = styled.div.withConfig({ displayName: \"StyledDemoGrid\", componentId: \"sc-rqh7f8\" }) `display:block;position:absolute;top:0;left:0;bottom:0;right:0;pointer-events:none;z-index:100;height:100%;background:repeating-linear-gradient(\n\t\tto right,\n\t\trgba(255, 194, 244, 0.1)0%,rgba(255, 194, 244, 0.1)${100 / 24}%,rgba(255, 194, 244, 0.3)${100 / 24}%,rgba(255, 191, 244, 0.3)${(100 / 24) * 2}%,rgba(255, 194, 244, 0.1)${(100 / 24) * 2}% );max-width:2560px;margin:auto;`;\nexport const DemoIntegratorRoot = (props) => {\n const { children, direction = 'ltr', theme = 'main', showGrid, language = '', } = props;\n return (React.createElement(IntegratorRoot, null,\n React.createElement(ThemeProvider, { theme: theme },\n React.createElement(StyledDemoIntegratorRoot, { hasBackgroundImage: theme === 'image' },\n showGrid && React.createElement(StyledDemoGrid, null),\n React.createElement(Language, { language: language, direction: direction }, children)))));\n};\n","import * as React from 'react';\nimport { withTheme } from 'styled-components';\nconst copy = {\n ko: `국군의 조직과 편성은 법률로 정한다. 모든 국민의 재산권은 보장된다. 제3항의 승인을 얻지 못한 때에는 그 처분 또는 명령은 그때부터 효력을 상실한다.`,\n zh: `支转有点身头办局线越,越好实集调识已看,斗构杨加秧干图I。 派阶该还决真起设置火,列斯越历适元快积种公,属型材政报志龙将\n\t\t任面受至据料连专型,族九期图素信识作王,般蠢镰争I英肃。意后需每段等华交三,就义论油新统快,况法8还来但。`,\n [`zh-tw`]: `跑人日代的體理書保現可學房,找次統活同持不大當帶的自特著子好大學在老聽利教大有腦速意心生響年近健教點整聯期學朋友立量,\n\t\t比時月於本主,巴它社你青化位個動像建立克國善用的團,於長居。`,\n ja: `7毎記ぼリ謙球げんごレ望過ムテヲ役少防ユカヒモ併人クテ帳画ラホタ木規将ケマトル滞握モヱワス権来ミサ医方品りすぎラ。`,\n vi: `Những tin tức hữu ích giành cho khách hàng: Với Volkswagen, bạn có thể mang cả phong cách của chiếc xe vào cuộc\n\t\tsống hằng ngày. Khám phá nhiều hơn về chiếc xe của bạn và chất lượng dịch vụ của chúng tôi tại đây`,\n ar: `و سأعرض مثال حي لهذا، من منا لم يتحمل جهد بدني شاق إلا من أجل الحصول على ميزة أو فائدة؟ ولكن من لديه الحق أن\n\t\tينتقد شخص ما أراد أن يشعر بالسعادة التي لا تشوبها عواقب أليمة أو آخر أراد أن يتجنب الألم الذي ربما تنجم عنه بعض\n\t\tالمتعة ؟`,\n en: `Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet incidunt aut voluptatum autem voluptates ea\n\t\tnumquam cupiditate deleniti unde.`,\n};\nexport const DemoPlaceholderText = withTheme(({ theme }) => React.createElement(React.Fragment, null, copy[theme.language || 'en'] || copy.en));\nexport const ShortDemoPlaceholderText = withTheme(({ theme }) => (React.createElement(React.Fragment, null, (copy[theme.language || 'en'] || copy.en).substring(0, 20))));\n","import { Breakpoints } from '../helpers/breakpoint';\nimport * as React from 'react';\nimport styled, { withTheme } from 'styled-components';\nimport { ThemeProvider } from '../theme-provider';\nimport { CSSTransition } from 'react-transition-group';\nconst animationClassName = 'animation';\nconst animationTimeout = (props) => props.theme.animation.duration.layer;\nconst animationTimingFunction = (props) => props.theme.animation.timingFunction.in;\nconst StyledDisclaimerLayer = styled.div.withConfig({ displayName: \"StyledDisclaimerLayer\", componentId: \"sc-1km1zxh\" }) `position:fixed;bottom:0;left:0;right:0;overflow-y:auto;-webkit-overflow-scrolling:touch;display:flex;flex-flow:column;align-self:flex-end;max-height:50vh;width:100%;background-color:rgba(0, 0, 0, 0.85);@media (min-width: ${Breakpoints.b560}px){margin:0 auto;width:${(props) => props.theme.size.grid020};}opacity:1;transform:translateY(0);transition:opacity ${animationTimeout} ${animationTimingFunction},transform ${animationTimeout} ${animationTimingFunction};@media (prefers-reduced-motion){transition:opacity ${animationTimeout} ${animationTimingFunction};}&.${animationClassName}-exit{opacity:1;transform:translateY(0);}&.${animationClassName}-enter,&.${animationClassName}-exit-active,&.${animationClassName}-exit-done{opacity:0;transform:translateY(100%);}&.${animationClassName}-enter-active{opacity:1;transform:translateY(0);}`;\nfunction InternalDisclaimerLayer(props) {\n const { children, theme, in: visible, onExited, scrollElementRef } = props;\n return (React.createElement(CSSTransition, { classNames: animationClassName, onExited: onExited, in: visible, timeout: parseInt(theme.animation.duration.layer || '0', 10) },\n React.createElement(ThemeProvider, { theme: \"inverted\" },\n React.createElement(StyledDisclaimerLayer, { role: \"dialog\", ref: scrollElementRef }, children))));\n}\nexport const DisclaimerLayer = withTheme(InternalDisclaimerLayer);\n","import * as React from 'react';\nimport { Text, TextAppearance, TextColor } from '../text';\nimport { styled } from '../theme-provider';\nconst StyledDL = styled.dl.withConfig({ displayName: \"StyledDL\", componentId: \"sc-190wmkf\" }) `display:grid;grid-row-gap:${(props) => props.theme.size.static200};margin:0;padding:0;`;\nconst ANIMATION_FUNCTION = '0.3s cubic-bezier(0.14, 1.12, 0.67, 0.99)';\nconst StyledDisclaimerFocusWrapper = styled.div.withConfig({ displayName: \"StyledDisclaimerFocusWrapper\", componentId: \"sc-z5dark\" }) `display:grid;grid-template-columns:2em auto;grid-column-gap:${(props) => props.theme.size.static150};outline:0;position:relative;&:before{content:'';position:absolute;left:-${(props) => props.theme.size.static150};right:-${(props) => props.theme.size.static150};top:-${(props) => props.theme.size.static100};bottom:-${(props) => props.theme.size.static100};margin:-2px;border:solid 2px ${(props) => props.theme.interaction.recipe400.hover};border-radius:2px;pointer-events:none;opacity:0;transition:opacity ${ANIMATION_FUNCTION};}&:focus{&:before{opacity:1;}}`;\nconst StyledDD = styled.dd.withConfig({ displayName: \"StyledDD\", componentId: \"sc-1h15w9g\" }) `margin:0;padding:0;`;\nconst StyledDT = styled.dt.withConfig({ displayName: \"StyledDT\", componentId: \"sc-1ak8yl8\" }) `margin:0;padding:0;`;\nconst StyledUL = styled.ul.withConfig({ displayName: \"StyledUL\", componentId: \"sc-10nbf71\" }) `display:grid;grid-row-gap:${(props) => props.theme.size.static200};list-style:none;margin:0;padding:0;`;\nconst StyledLI = styled.li.withConfig({ displayName: \"StyledLI\", componentId: \"sc-5dyo7o\" }) `margin:0;padding:0;`;\nconst hasReferences = (disclaimers) => Boolean(disclaimers.find((disclaimer) => Boolean(disclaimer.reference)));\nconst getIndexWithPrefix = (index) => {\n return `disclaimerRef-${index}`;\n};\nconst getMappedDisclaimers = (disclaimerArray) => disclaimerArray.reduce((accumulatedDisclaimers, currentDisclaimer, index) => (Object.assign(Object.assign({}, accumulatedDisclaimers), { [currentDisclaimer.key || getIndexWithPrefix(index)]: Object.assign(Object.assign({}, currentDisclaimer), { disclaimerWrapperRef: React.createRef() }) })), {});\nexport class Disclaimers extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n mappedDisclaimers: getMappedDisclaimers(props.disclaimers),\n };\n }\n focusDisclaimer(disclaimerKey) {\n var _a;\n (_a = this.state.mappedDisclaimers[disclaimerKey].disclaimerWrapperRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n }\n getDisclaimerDimensions(disclaimerKey) {\n var _a;\n return (_a = this.state.mappedDisclaimers[disclaimerKey].disclaimerWrapperRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();\n }\n componentDidUpdate(prevProps) {\n if (this.props.disclaimers !== prevProps.disclaimers) {\n this.setState({\n mappedDisclaimers: getMappedDisclaimers(this.props.disclaimers),\n });\n }\n }\n render() {\n const { disclaimers } = this.props;\n return (React.createElement(Text, { appearance: TextAppearance.copy0150, color: TextColor.secondary }, hasReferences(disclaimers) ? (React.createElement(StyledDL, null, disclaimers.map((disclaimer, index) => {\n var _a;\n return (React.createElement(StyledDisclaimerFocusWrapper, { key: disclaimer.key, ref: (_a = this.state.mappedDisclaimers[disclaimer.key || getIndexWithPrefix(index)]) === null || _a === void 0 ? void 0 : _a.disclaimerWrapperRef, tabIndex: -1 },\n React.createElement(StyledDT, null, disclaimer.reference),\n React.createElement(StyledDD, null, disclaimer.text)));\n }))) : (React.createElement(StyledUL, null, disclaimers.map((disclaimer) => (React.createElement(StyledLI, { key: disclaimer.key }, disclaimer.text)))))));\n }\n}\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nexport class DOMNodeExposer extends React.Component {\n crossLinkElements(key1, element1, key2, element2) {\n if (element1.domNode === element2.domNode && element1.domNode !== null) {\n return;\n }\n if (element2.domNode && element2.domNode.contains(element1.domNode)) {\n if (!element2.containedRefs[key1]) {\n element2.containedRefs[key1] = [];\n }\n element2.containedRefs[key1].push(element1);\n }\n if (element1.domNode && element1.domNode.contains(element2.domNode)) {\n if (!element1.containedRefs[key2]) {\n element1.containedRefs[key2] = [];\n }\n element1.containedRefs[key2].push(element2);\n }\n }\n linkEntryWithOtherElements(entry) {\n const typedWindow = window;\n if (!typedWindow.elementRefs) {\n return;\n }\n Object.entries(typedWindow.elementRefs).forEach(([elementKey, elementGroup]) => {\n elementGroup.forEach((elementRef) => {\n this.crossLinkElements(this.props.name, entry, elementKey, elementRef);\n });\n });\n }\n unlinkFromOtherElements(entry) {\n const typedWindow = window;\n if (!typedWindow.elementRefs) {\n return;\n }\n Object.values(typedWindow.elementRefs).forEach((elementGroup) => {\n elementGroup.forEach((elementRef) => {\n if (!elementRef.containedRefs ||\n !elementRef.containedRefs[this.props.name]) {\n return;\n }\n const indexOfElement = elementRef.containedRefs[this.props.name].findIndex((child) => child === entry);\n if (indexOfElement > -1) {\n elementRef.containedRefs[this.props.name].splice(indexOfElement, 1);\n }\n });\n });\n }\n componentDidMount() {\n if (process.env.NODE_ENV !== 'production') {\n const typedWindow = window;\n const element = ReactDOM.findDOMNode(this);\n if (!typedWindow.elementRefs) {\n typedWindow.elementRefs = {};\n }\n if (!typedWindow.elementRefs[this.props.name]) {\n typedWindow.elementRefs[this.props.name] = [];\n }\n const elementReference = { domNode: element, containedRefs: {} };\n this.setState({ elementReference });\n typedWindow.elementRefs[this.props.name].push(elementReference);\n this.linkEntryWithOtherElements(elementReference);\n }\n }\n componentWillUnmount() {\n if (process.env.NODE_ENV !== 'production') {\n const typedWindow = window;\n if (!this.state.elementReference || !typedWindow.elementRefs) {\n return;\n }\n const indexOfElement = typedWindow.elementRefs[this.props.name].findIndex((entry) => entry === this.state.elementReference);\n this.unlinkFromOtherElements(this.state.elementReference);\n if (indexOfElement > -1) {\n typedWindow.elementRefs[this.props.name].splice(indexOfElement, 1);\n }\n }\n }\n componentDidUpdate() {\n const typedWindow = window;\n const newDomNode = ReactDOM.findDOMNode(this);\n if (!typedWindow.elementRefs) {\n return;\n }\n if (newDomNode === this.state.elementReference.domNode) {\n return;\n }\n this.setState({\n elementReference: Object.assign(Object.assign({}, this.state.elementReference), { domNode: newDomNode }),\n });\n const elementReference = typedWindow.elementRefs[this.props.name].find((entry) => entry === this.state.elementReference);\n if (!elementReference) {\n return;\n }\n elementReference.domNode = newDomNode;\n }\n render() {\n return this.props.children;\n }\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nexport var ExternalLink = React.forwardRef(Object.assign(function (props, forwardRef) {\n var variant = props.variant || \"default\";\n if (variant === \"default\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M23.489.483c-.621-.611-.728-.645-10.934-.085l.184 3.39c2.268-.123 4.02-.338 5.427-.39L7.635 13.866l2.398 2.408L20.562 5.777c-.061 1.34-.265 3.162-.404 5.404l3.394.21c.623-10.06.591-10.237-.063-10.908z\" }),\n React.createElement(\"path\", { d: \"M19.6 15.014h3.398V24H0V1h9v3.395H3.399v16.21H19.6z\" }));\n }\n return null;\n}, { displayName: 'ExternalLink' }));\n","import * as React from 'react';\nimport { ExternalLink } from '@volkswagen-onehub/icons-core';\nimport { styled } from '../theme-provider';\nconst StyledExternalLinkIndicator = styled(ExternalLink).withConfig({ displayName: \"StyledExternalLinkIndicator\", componentId: \"sc-1wpzb1v\" }) `border:0;width:0.85em;height:0.7em;${(props) => props.theme.direction === 'rtl' && `transform: scale(-1, 1);`}`;\nexport class ExternalLinkIndicator extends React.PureComponent {\n constructor(props) {\n super(props);\n }\n render() {\n return (React.createElement(StyledExternalLinkIndicator, Object.assign({ variant: \"default\" }, (this.props.title ? { title: this.props.title } : { ariaHidden: true }))));\n }\n}\n","import * as React from 'react';\nimport { Container, ContainerGutter, ContainerWrap } from '../container';\nimport { styled } from '../theme-provider';\nconst StyledFigure = styled.figure.withConfig({ displayName: \"StyledFigure\", componentId: \"sc-1fg4r0g\" }) `margin:0;`;\nStyledFigure.displayName = 'StyledFigure';\nexport const Figure = (props) => {\n const { caption, captionAboveMedia, children } = props;\n return (React.createElement(StyledFigure, null,\n React.createElement(Container, { gutter: ContainerGutter.dynamic0020, wrap: ContainerWrap.always },\n caption && captionAboveMedia && React.createElement(\"figcaption\", null, caption),\n children,\n caption && !captionAboveMedia && React.createElement(\"figcaption\", null, caption))));\n};\nFigure.displayName = 'Figure';\n","import * as React from 'react';\nimport { getColumnsWidthForBreakpoint, getGridColumn } from '../helpers/grid';\nimport { compareBreakpoints, Breakpoints } from '../helpers/breakpoint';\nimport { styled } from '../theme-provider';\nconst StyledContainer = styled.div.withConfig({ displayName: \"StyledContainer\", componentId: \"sc-13ur9q2\" }) `${(props) => {\n const sortedBreakpointsWithConfiguration = Object.keys(props.columns).sort(compareBreakpoints);\n const maxConfiguredBreakpoint = sortedBreakpointsWithConfiguration[sortedBreakpointsWithConfiguration.length - 1];\n const maxBreakpoint = Breakpoints.b2560;\n const maxWidthStyles = maxConfiguredBreakpoint &&\n `\n\t\t\t@media (min-width: ${maxBreakpoint}px) {\n\t\t\t\tmin-width: ${getColumnsWidthForBreakpoint(props.columns[maxConfiguredBreakpoint], maxBreakpoint)};\n\t\t\t\tmax-width: ${getColumnsWidthForBreakpoint(props.columns[maxConfiguredBreakpoint], maxBreakpoint)};\n\t\t\t}\n\t\t`;\n const perBreakpointStyles = sortedBreakpointsWithConfiguration\n .map((breakpoint) => {\n const columns = props.columns[breakpoint];\n const styles = `\n\t\t\t\tmin-width: ${getGridColumn(columns)};\n\t\t\t\tmax-width: ${getGridColumn(columns)};\n\t\t\t`;\n if (parseInt(breakpoint, 10) === Breakpoints.default) {\n return styles;\n }\n return `\n\t\t\t\t@media (min-width: ${breakpoint}px) {\n\t\t\t\t\t${styles}\n\t\t\t\t}\n\t\t\t`;\n })\n .join('\\n');\n return `\n\t\t\t${perBreakpointStyles}\n\t\t\t${maxWidthStyles}\n\t\t`;\n}} overflow:hidden;`;\nexport const FixedWidthContainer = (props) => {\n const { columns, children } = props;\n const breakpointConfig = typeof columns === 'number' ? { [Breakpoints.default]: columns } : columns;\n return (React.createElement(StyledContainer, { columns: breakpointConfig }, children));\n};\n","import * as React from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport { withTheme } from 'styled-components';\nimport { getColumnsWidthForBreakpoint, getGridColumn } from '../helpers/grid';\nimport { hexColorToRgba } from '../helpers/color';\nimport { Breakpoints } from '../helpers/breakpoint';\nimport { css, styled } from '../theme-provider';\nexport var FocusLayerSize;\n(function (FocusLayerSize) {\n FocusLayerSize[\"A\"] = \"A\";\n FocusLayerSize[\"B\"] = \"B\";\n FocusLayerSize[\"C\"] = \"C\";\n FocusLayerSize[\"NONE\"] = \"NONE\";\n})(FocusLayerSize || (FocusLayerSize = {}));\nconst createCssBoxShadow = (themeShadowColor) => {\n const defaultBoxShadow = 'box-shadow: initial;';\n if (!themeShadowColor) {\n return defaultBoxShadow;\n }\n const darkShadowColor = hexColorToRgba(themeShadowColor, 0.1);\n const lightShadowColor = hexColorToRgba(themeShadowColor, 0.05);\n return `box-shadow: 0 8px 32px 0 ${darkShadowColor}, 0 16px 48px 0 ${lightShadowColor};`;\n};\nconst animationClassName = 'animation';\nconst animationTimeout = (props) => props.theme.animation.duration.layer;\nconst animationTimingFunction = (props) => props.theme.animation.timingFunction.in;\nconst baseTransform = 'translate(-50%, -50%)';\nfunction calcLayerHeight(spacing) {\n return `calc(100% - ${spacing} * 2);`;\n}\nconst StyledLayer = styled.div.withConfig({ displayName: \"StyledLayer\", componentId: \"sc-ku0g94\" }) `position:absolute;top:50%;left:50%;overflow-y:auto;-webkit-overflow-scrolling:touch;${(props) => css `max-height:${calcLayerHeight(props.theme.size.static200)};@media (min-width: ${Breakpoints.b560}px){max-height:${calcLayerHeight(props.theme.size.static300)};}@media (min-width: ${Breakpoints.b1600}px){max-height:${calcLayerHeight(props.theme.size.static400)};}@media (min-width: ${Breakpoints.b2560}px){max-height:${calcLayerHeight(props.theme.size.static510)};}${props.size === 'A' &&\n `width: ${getGridColumn(22)};\n\n\t\t\t@media (min-width: ${Breakpoints.b560}px) {\n\t\t\t\twidth: ${getGridColumn(20)};\n\t\t\t}\n\n\t\t\t@media (min-width: ${Breakpoints.b960}px) {\n\t\t\t\twidth: ${getGridColumn(16)};\n\t\t\t}\n\n\t\t\t@media (min-width: ${Breakpoints.b1280}px) {\n\t\t\t\twidth: ${getGridColumn(14)};\n\t\t\t}\n\n\t\t\t@media (min-width: ${Breakpoints.b1600}px) {\n\t\t\t\twidth: ${getGridColumn(12)};\n\t\t\t}\n\n\t\t\t@media (min-width: ${Breakpoints.b1920}px) {\n\t\t\t\twidth: ${getGridColumn(10)};\n\t\t\t}\n\n\t\t\t@media (min-width: ${Breakpoints.b2560}px) {\n\t\t\t\twidth: ${getColumnsWidthForBreakpoint(10, Breakpoints.b2560)};\n\t\t\t}`} ${props.size === 'B' &&\n `width: ${getGridColumn(22)};\n\n\t\t\t@media (min-width: ${Breakpoints.b560}px) {\n\t\t\t\twidth: ${getGridColumn(20)};\n\t\t\t}\n\n\t\t\t@media (min-width: ${Breakpoints.b960}px) {\n\t\t\t\twidth: ${getGridColumn(16)};\n\t\t\t}\n\n\t\t\t@media (min-width: ${Breakpoints.b1600}px) {\n\t\t\t\twidth: ${getGridColumn(14)};\n\t\t\t}\n\n\t\t\t@media (min-width: ${Breakpoints.b1920}px) {\n\t\t\t\twidth: ${getGridColumn(12)};\n\t\t\t}\n\n\t\t\t@media (min-width: ${Breakpoints.b2560}px) {\n\t\t\t\twidth: ${getColumnsWidthForBreakpoint(12, Breakpoints.b2560)};\n\t\t\t}`} ${props.size === 'C' &&\n `width: ${getGridColumn(24)};\n\t\t// layer size will be used with 16/9 images + navigation elements in it\n\t\t// therefore we try to maintain a roughly fitting aspect ratio for the layer\n\t\tmax-width: 135vh;\n\n\t\t\t@media (min-width: ${Breakpoints.b1280}px) {\n\t\t\t\twidth: ${getGridColumn(22)};\n\t\t\t}\n\n\t\t\t@media (min-width: ${Breakpoints.b1920}px) {\n\t\t\t\twidth: ${getGridColumn(20)};\n\t\t\t}`}`} background-color:${(props) => props.theme.global.backgroundColor};${(props) => createCssBoxShadow(props.theme.shadowColor)};opacity:1;transform:${baseTransform} translateY(0);transition:opacity ${(props) => animationTimeout(props)} ${(props) => animationTimingFunction(props)},transform ${(props) => animationTimeout(props)} ${(props) => animationTimingFunction(props)};&.${animationClassName}-exit{opacity:1;transform:${baseTransform} translateY(0);}&.${animationClassName}-enter,&.${animationClassName}-exit-active,&.${animationClassName}-exit-done{opacity:0;transform:${baseTransform} translateY(${(props) => props.theme.size.static500});}&.${animationClassName}-enter-active{opacity:1;transform:${baseTransform} translateY(0);}`;\nconst InternalFocusLayer = (props) => {\n const { active, ariaLabel, ariaDescribedBy, ariaLabelledBy, children, in: visible, onExited, size, scrollElementRef, } = props;\n return (React.createElement(CSSTransition, { classNames: animationClassName, onExited: onExited, in: visible, timeout: parseInt(animationTimeout(props) || '0', 10) },\n React.createElement(StyledLayer, { role: \"dialog\", \"aria-modal\": active, \"aria-describedby\": ariaDescribedBy, \"aria-label\": ariaLabel, \"aria-labelledby\": ariaLabelledBy, size: size, ref: scrollElementRef }, children)));\n};\nexport const FocusLayer = withTheme(InternalFocusLayer);\n","import * as React from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport { withTheme } from 'styled-components';\nimport { styled } from '../theme-provider';\nconst animationClassName = 'animation';\nconst StyledFullscreenLayer = styled.div.withConfig({ displayName: \"StyledFullscreenLayer\", componentId: \"sc-1x1y0wp\" }) `position:fixed;top:0;right:0;bottom:0;left:0;opacity:1;background-color:white;transition:${(props) => {\n const duration = props.theme.animation.duration.layer;\n const timingFunction = props.theme.animation.timingFunction.in;\n return `opacity ${duration} ${timingFunction}`;\n}};&.${animationClassName}-exit{opacity:1;}&.${animationClassName}-enter,&.${animationClassName}-exit-active,&.${animationClassName}-exit-done{opacity:0;}&.${animationClassName}-enter-active{opacity:1;}`;\nStyledFullscreenLayer.displayName = 'StyledFullscreenLayer';\nexport const InternalFullscreenLayer = (props) => {\n const { active, children, in: visible, onExited } = props;\n const handleClick = (event) => {\n const { onClick = () => undefined } = props;\n onClick(event);\n };\n const timeout = parseInt(props.theme.animation.duration.layer || '0', 10);\n return (React.createElement(CSSTransition, { classNames: animationClassName, onExited: onExited, in: visible, timeout: timeout },\n React.createElement(StyledFullscreenLayer, { onClick: handleClick, \"aria-modal\": active, role: \"dialog\" }, children)));\n};\nexport const FullscreenLayer = withTheme(InternalFullscreenLayer);\n","import * as React from 'react';\nimport { withTheme } from 'styled-components';\nimport { styled } from '../theme-provider';\nconst StyledCarousel = styled.section.withConfig({ displayName: \"StyledCarousel\", componentId: \"sc-1m1o1ol\" }) `overflow:none;width:100%;position:relative;::before{content:'';display:block;padding-top:${((86 / 153) * 100).toFixed(2)}%;}:focus{outline:none;}`;\nconst StyledSlide = styled.div.withConfig({ displayName: \"StyledSlide\", componentId: \"sc-zl1i6s\" }) `display:flex;flex-grow:1;flex-shrink:0;flex-basis:100%;align-items:center;justify-content:center;scroll-snap-align:center;user-select:none;pointer-events:none;outline:none;`;\nconst StyledSlides = styled.div.withConfig({ displayName: \"StyledSlides\", componentId: \"sc-1eggwy6\" }) `position:absolute;left:0;right:0;top:0;bottom:0;display:flex;scroll-snap-type:x mandatory;overscroll-behavior:contain;touch-action:pan-x;overflow:auto;::-webkit-scrollbar{display:none;}scrollbar-width:none;:focus-within{box-shadow:0 0 0 2px inset ${({ theme }) => theme.interaction.recipe450.default};}`;\nconst StyledContainedImageWrapper = styled.div.withConfig({ displayName: \"StyledContainedImageWrapper\", componentId: \"sc-aevur5\" }) `width:calc(100% - 2 * ${(props) => props.theme.size.static500});`;\nexport const GallerySlide = ({ ariaLabel, ariaLabelledby, children, }) => (React.createElement(GalleryContext.Consumer, null, ({ index: activeIndex, hasNavigation, getSlideId, getTabId }) => (React.createElement(GallerySlideContext.Consumer, null, ({ index }) => {\n const ariaProps = index !== activeIndex\n ? {\n ['aria-hidden']: true,\n }\n : hasNavigation\n ? {\n role: 'tabpanel',\n ['aria-labelledby']: getTabId(index),\n }\n : {\n role: 'group',\n ['aria-label']: ariaLabel,\n ['aria-labelledby']: ariaLabelledby,\n ['aria-roledescription']: 'slide',\n };\n return (React.createElement(StyledSlide, Object.assign({ id: getSlideId(index) }, ariaProps, { tabIndex: activeIndex === index ? 0 : -1 }),\n React.createElement(StyledContainedImageWrapper, null, children)));\n}))));\nconst noop = () => {\n};\nexport const GalleryContext = React.createContext({\n hasNavigation: false,\n index: 0,\n triggerChange: noop,\n triggerNext: noop,\n triggerPrevious: noop,\n getTabId: () => '',\n getSlideId: () => '',\n});\nconst GallerySlideContext = React.createContext({ index: 0 });\nclass InternalGallery extends React.PureComponent {\n constructor(props) {\n super(props);\n this.slides = React.createRef();\n this.isSlidingAutomatically = false;\n this.changeSlide = (nextIndex, animate = true) => {\n const { endlessScrolling, handleChange, theme } = this.props;\n const slides = this.slides.current;\n if (!slides) {\n return;\n }\n const length = React.Children.count(this.props.children);\n const shouldOverscroll = length > 2 && endlessScrolling;\n const effectiveIndex = shouldOverscroll\n ? nextIndex\n : (nextIndex + length) % length;\n this.setState({ index: effectiveIndex }, () => {\n const slideWidth = slides.getBoundingClientRect().width;\n const targetPosition = slideWidth * (effectiveIndex + (shouldOverscroll ? 1 : 0));\n const left = theme.direction === 'rtl' ? -1 * targetPosition : targetPosition;\n this.isSlidingAutomatically = true;\n slides.scrollTo({\n left,\n behavior: animate ? 'smooth' : 'auto',\n });\n if (handleChange) {\n handleChange(effectiveIndex);\n }\n });\n };\n this.slideToNextSlide = () => {\n const { index } = this.state;\n this.changeSlide(index + 1);\n };\n this.slideToPreviousSlide = () => {\n const { index } = this.state;\n this.changeSlide(index - 1);\n };\n this.handleChange = (newIndex) => {\n const childrenLength = React.Children.count(this.props.children);\n this.changeSlide((newIndex + childrenLength) % childrenLength);\n };\n this.handleScroll = (e) => {\n const { endlessScrolling, theme } = this.props;\n const { index } = this.state;\n const slideContainer = e.currentTarget;\n const scrollStart = theme.direction === 'rtl'\n ? -1 * slideContainer.scrollLeft\n : slideContainer.scrollLeft;\n const slideWidth = slideContainer.getBoundingClientRect().width;\n const length = React.Children.count(this.props.children);\n const scrollIndex = Math.round(scrollStart / slideWidth) -\n (length > 2 && endlessScrolling ? 1 : 0);\n if (this.isSlidingAutomatically && index === scrollIndex) {\n this.isSlidingAutomatically = false;\n }\n if (scrollIndex === -1 && scrollStart === 0) {\n this.changeSlide(length - 1, false);\n this.setState({ index: length - 1 });\n }\n else if (scrollIndex === length &&\n scrollStart === slideWidth * (length + 1)) {\n this.changeSlide(0, false);\n this.setState({ index: 0 });\n }\n else if (scrollIndex !== index && !this.isSlidingAutomatically) {\n this.setState({ index: scrollIndex });\n }\n };\n this.state = {\n index: 0,\n };\n }\n componentDidMount() {\n const { endlessScrolling } = this.props;\n if (endlessScrolling) {\n this.changeSlide(0, false);\n }\n }\n render() {\n const { id, children, arrowButtons, navigation, endlessScrolling = false, ariaLabel, ariaLabelledby, } = this.props;\n const { index } = this.state;\n const length = React.Children.count(this.props.children);\n const effectiveIndex = index === -1 ? length - 1 : index === length ? 0 : index;\n return (React.createElement(GalleryContext.Provider, { value: {\n hasNavigation: Boolean(navigation),\n index: effectiveIndex,\n triggerChange: this.handleChange,\n triggerPrevious: this.slideToPreviousSlide,\n triggerNext: this.slideToNextSlide,\n getSlideId: (index) => `${id}__slide-${index}`,\n getTabId: (index) => `${id}__tab-${index}`,\n } },\n React.createElement(StyledCarousel, { id: id, tabIndex: -1, \"aria-label\": ariaLabel, \"aria-roledescription\": navigation ? undefined : 'carousel', \"aria-labelledby\": ariaLabelledby },\n React.createElement(StyledSlides, { ref: this.slides, onScroll: this.handleScroll, \"aria-atomic\": \"false\", \"aria-live\": \"polite\" },\n endlessScrolling && length > 2 && (React.createElement(GallerySlideContext.Provider, { value: { index: -1 } }, React.Children.toArray(children)[length - 1])),\n React.Children.map(children, (child, index) => (React.createElement(GallerySlideContext.Provider, { value: { index } }, child))),\n endlessScrolling && length > 2 && (React.createElement(GallerySlideContext.Provider, { value: { index: length } }, React.Children.toArray(children)[0]))),\n arrowButtons,\n navigation)));\n }\n}\nexport const Gallery = withTheme(InternalGallery);\n","import * as React from 'react';\nimport { styled } from '../theme-provider';\nimport { GalleryContext } from '.';\nimport { ButtonPrevious } from '../button-previous';\nimport { ButtonNext } from '../button-next';\nconst StyledArrowWrapper = styled.div.withConfig({ displayName: \"StyledArrowWrapper\", componentId: \"sc-1w8267r\" }) `position:absolute;top:50%;right:0;left:0;display:flex;justify-content:space-between;padding:0 ${(props) => props.theme.size.static150};transform:translateY(-50%);`;\nexport const ArrowButtons = ({ ariaHidden, buttonNextAriaLabel, buttonPreviousAriaLabel, }) => {\n return (React.createElement(GalleryContext.Consumer, null, ({ triggerNext, triggerPrevious, hasNavigation }) => (React.createElement(StyledArrowWrapper, null,\n React.createElement(ButtonPrevious, { tag: \"button\", emphasis: \"tertiary\", onClick: triggerPrevious, ariaLabel: buttonPreviousAriaLabel, tabIndex: hasNavigation || ariaHidden ? -1 : 0 }),\n React.createElement(ButtonNext, { tag: \"button\", emphasis: \"tertiary\", onClick: triggerNext, ariaLabel: buttonNextAriaLabel, tabIndex: hasNavigation || ariaHidden ? -1 : 0 })))));\n};\n","import * as React from 'react';\nimport { styled } from '../theme-provider';\nimport { Container, ContainerWrap, ContainerGutter } from '../container';\nimport { GalleryContext } from './index';\nimport { withTheme } from 'styled-components';\nconst StyledBullets = styled.div.withConfig({ displayName: \"StyledBullets\", componentId: \"sc-vphoa0\" }) `position:absolute;bottom:${(props) => props.theme.size.static150};left:50%;transform:translateX(-50%);`;\nconst VisuallyHidden = styled.div.withConfig({ displayName: \"VisuallyHidden\", componentId: \"sc-1bqwty\" }) `clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px;`;\nconst StyledBullet = styled.button.withConfig({ displayName: \"StyledBullet\", componentId: \"sc-cwv4jb\" }) `position:relative;width:${(props) => props.theme.size.static150};height:${(props) => props.theme.size.static150};border:0;padding:0;border-radius:50%;background:${(props) => props.theme.interaction.recipe750.default};cursor:${(props) => (props.isActive ? 'unset' : 'pointer')};outline:none;transform:scale(${(props) => (props.isActive ? 2 : 1)});transition:${(props) => {\n const duration = props.theme.animation.duration.layer;\n const timingFunction = props.theme.animation.timingFunction.in;\n return `all ${duration} ${timingFunction}`;\n}};::before{content:'';position:absolute;top:12.5%;left:12.5%;width:75%;height:75%;border-radius:50%;background:${(props) => props.theme.interaction.recipe450.default};}:hover{::before{background:${(props) => props.theme.interaction.recipe450.hover};}}:focus{outline:none;::before{background-color:${({ theme }) => theme.focus.background};box-shadow:0 0 0 1px ${({ theme }) => theme.interaction.recipe450.default};}}`;\nclass InternalNavigationBullets extends React.PureComponent {\n constructor() {\n super(...arguments);\n this.carouselRefs = {};\n this.focusElement = (el) => {\n const element = this.carouselRefs[el].current;\n if (element) {\n element.focus();\n }\n };\n this.createKeyHandler = (triggerChange, index) => (event) => {\n const { children, theme } = this.props;\n const length = React.Children.count(children);\n let newIndex;\n switch (event.key) {\n case 'ArrowLeft':\n newIndex =\n (index + (theme.direction === 'rtl' ? 1 : length - 1)) % length;\n break;\n case 'ArrowRight':\n newIndex =\n (index + (theme.direction === 'rtl' ? length - 1 : 1)) % length;\n break;\n case 'Home':\n newIndex = 0;\n break;\n case 'End':\n newIndex = length - 1;\n break;\n default:\n newIndex = null;\n }\n if (newIndex !== null) {\n event.stopPropagation();\n event.preventDefault();\n this.focusElement(`bullet-${newIndex}`);\n triggerChange(newIndex);\n }\n };\n this.createClickHandler = (handleChange, index) => (e) => {\n e.preventDefault();\n e.stopPropagation();\n handleChange(index);\n };\n }\n createCarouselRef(elementId) {\n if (Object.prototype.hasOwnProperty.call(this.carouselRefs, elementId)) {\n return;\n }\n this.carouselRefs[elementId] = React.createRef();\n return this.carouselRefs[elementId];\n }\n render() {\n const { children, ariaLabel, ariaLabelledby } = this.props;\n return (React.createElement(GalleryContext.Consumer, null, ({ index, triggerChange, getTabId, getSlideId }) => (React.createElement(StyledBullets, { role: \"tablist\", \"aria-label\": ariaLabel, \"aria-labelledby\": ariaLabelledby },\n React.createElement(Container, { wrap: ContainerWrap.never, gutter: ContainerGutter.static150 }, React.Children.map(children, (child, bulletIndex) => {\n this.createCarouselRef(`bullet-${bulletIndex}`);\n return (React.createElement(StyledBullet, { id: getTabId(bulletIndex), isActive: index === bulletIndex, onClick: this.createClickHandler(triggerChange, bulletIndex), onKeyDown: this.createKeyHandler(triggerChange, bulletIndex), key: `carousel-bullet-${bulletIndex}`, ref: this.carouselRefs[`bullet-${bulletIndex}`], tabIndex: index === bulletIndex ? 0 : -1, role: \"tab\", \"aria-selected\": index === bulletIndex, \"aria-controls\": getSlideId(bulletIndex) },\n React.createElement(VisuallyHidden, null, child)));\n }))))));\n }\n}\nexport const NavigationBullets = withTheme(InternalNavigationBullets);\n","import * as React from 'react';\nimport { styled } from '../theme-provider';\nimport { Container, ContainerWrap, ContainerGutter } from '../container';\nimport { GalleryContext } from '.';\nimport { withTheme } from 'styled-components';\nconst StyledImages = styled.div.withConfig({ displayName: \"StyledImages\", componentId: \"sc-nqsjk9\" }) `position:absolute;bottom:${(props) => props.theme.size.static150};left:50%;transform:translateX(-50%);`;\nconst StyledImage = styled.button.withConfig({ displayName: \"StyledImage\", componentId: \"sc-11mt7t2\" }) `position:relative;border:0;padding:0;background:${({ theme }) => theme.interaction.recipe750.default};cursor:${({ isActive }) => (isActive ? 'unset' : 'pointer')};z-index:${({ isActive }) => (isActive ? '1' : 'unset')};outline:none;transform:scale(${({ isActive }) => (isActive ? 1.2 : 1)});transition:${({ theme }) => {\n const duration = theme.animation.duration.layer;\n const timingFunction = theme.animation.timingFunction.in;\n return `all ${duration} ${timingFunction}`;\n}};:focus{outline:1px solid ${({ theme }) => theme.interaction.recipe400.active};outline-offset:2px;}:focus,:hover{::before{background:${({ theme }) => theme.interaction.recipe400.hover};}}`;\nclass InternalNavigationImages extends React.PureComponent {\n constructor() {\n super(...arguments);\n this.carouselRefs = {};\n this.focusElement = (el) => {\n const element = this.carouselRefs[el].current;\n if (element) {\n element.focus();\n }\n };\n this.createKeyHandler = (triggerChange, index) => (event) => {\n const { children, theme } = this.props;\n const length = React.Children.count(children);\n let newIndex;\n switch (event.key) {\n case 'ArrowLeft':\n newIndex =\n (index + (theme.direction === 'rtl' ? 1 : length - 1)) % length;\n break;\n case 'ArrowRight':\n newIndex =\n (index + (theme.direction === 'rtl' ? length - 1 : 1)) % length;\n break;\n case 'Home':\n newIndex = 0;\n break;\n case 'End':\n newIndex = length - 1;\n break;\n default:\n newIndex = null;\n }\n if (newIndex !== null) {\n event.stopPropagation();\n event.preventDefault();\n this.focusElement(`bullet-${newIndex}`);\n triggerChange(newIndex);\n }\n };\n this.createClickHandler = (triggerChange, index) => (e) => {\n e.preventDefault();\n e.stopPropagation();\n triggerChange(index);\n };\n }\n createCarouselRef(elementId) {\n if (Object.prototype.hasOwnProperty.call(this.carouselRefs, elementId)) {\n return;\n }\n this.carouselRefs[elementId] = React.createRef();\n return this.carouselRefs[elementId];\n }\n render() {\n const { children } = this.props;\n return (React.createElement(GalleryContext.Consumer, null, ({ triggerChange, index }) => (React.createElement(StyledImages, { role: \"tablist\" },\n React.createElement(Container, { wrap: ContainerWrap.never, gutter: ContainerGutter.static150 }, React.Children.map(children, (child, bulletIndex) => {\n this.createCarouselRef(`bullet-${bulletIndex}`);\n const key = child.key;\n return (React.createElement(StyledImage, { isActive: index === bulletIndex, onClick: this.createClickHandler(triggerChange, bulletIndex), onKeyDown: this.createKeyHandler(triggerChange, bulletIndex), key: key, ref: this.carouselRefs[`bullet-${bulletIndex}`], tabIndex: index === bulletIndex ? 0 : -1, role: \"tab\" }, child));\n }))))));\n }\n}\nexport const NavigationImages = withTheme(InternalNavigationImages);\n","export function createA11yOutlineStyles(props) {\n return `\n\t\toutline: 1px solid ${props.theme.interaction.recipe100.active};\n\t\toutline-offset: ${props.theme.size.static100};\n\t`;\n}\n","export var FOCUS_GROUP = 'data-focus-lock';\nexport var FOCUS_DISABLED = 'data-focus-lock-disabled';\nexport var FOCUS_ALLOW = 'data-no-focus-lock';\nexport var FOCUS_AUTO = 'data-autofocus-inside';\n","import { useCallbackRef } from './useRef';\nimport { assignRef } from './assignRef';\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n * const ownRef = useRef();\n * const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n * return
...
\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n return useCallbackRef(defaultValue, function (newValue) {\n return refs.forEach(function (ref) { return assignRef(ref, newValue); });\n });\n}\n","import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n var ref = useState(function () { return ({\n // value\n value: initialValue,\n // last callback\n callback: callback,\n // \"memoized\" public interface\n facade: {\n get current() {\n return ref.value;\n },\n set current(value) {\n var last = ref.value;\n if (last !== value) {\n ref.value = value;\n ref.callback(value, last);\n }\n }\n }\n }); })[0];\n // update callback\n ref.callback = callback;\n return ref.facade;\n}\n","/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref) {\n ref.current = value;\n }\n return ref;\n}\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\nexport var hiddenGuard = {\n width: '1px',\n height: '0px',\n padding: 0,\n overflow: 'hidden',\n position: 'fixed',\n top: '1px',\n left: '1px'\n};\n\nvar InFocusGuard = function InFocusGuard(_ref) {\n var children = _ref.children;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n key: \"guard-first\",\n \"data-focus-guard\": true,\n \"data-focus-auto-guard\": true,\n style: hiddenGuard\n }), children, children && /*#__PURE__*/React.createElement(\"div\", {\n key: \"guard-last\",\n \"data-focus-guard\": true,\n \"data-focus-auto-guard\": true,\n style: hiddenGuard\n }));\n};\n\nInFocusGuard.propTypes = process.env.NODE_ENV !== \"production\" ? {\n children: PropTypes.node\n} : {};\nInFocusGuard.defaultProps = {\n children: null\n};\nexport default InFocusGuard;","import * as tslib_1 from \"tslib\";\nfunction ItoI(a) {\n return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n var buffer = [];\n var assigned = false;\n var medium = {\n read: function () {\n if (assigned) {\n throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n }\n if (buffer.length) {\n return buffer[buffer.length - 1];\n }\n return defaults;\n },\n useMedium: function (data) {\n var item = middleware(data, assigned);\n buffer.push(item);\n return function () {\n buffer = buffer.filter(function (x) { return x !== item; });\n };\n },\n assignSyncMedium: function (cb) {\n assigned = true;\n while (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n }\n buffer = {\n push: function (x) { return cb(x); },\n filter: function () { return buffer; },\n };\n },\n assignMedium: function (cb) {\n assigned = true;\n var pendingQueue = [];\n if (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n pendingQueue = buffer;\n }\n var executeQueue = function () {\n var cbs = pendingQueue;\n pendingQueue = [];\n cbs.forEach(cb);\n };\n var cycle = function () { return Promise.resolve().then(executeQueue); };\n cycle();\n buffer = {\n push: function (x) {\n pendingQueue.push(x);\n cycle();\n },\n filter: function (filter) {\n pendingQueue = pendingQueue.filter(filter);\n return buffer;\n },\n };\n },\n };\n return medium;\n}\nexport function createMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n return innerCreateMedium(defaults, middleware);\n}\nexport function createSidecarMedium(options) {\n if (options === void 0) { options = {}; }\n var medium = innerCreateMedium(null);\n medium.options = tslib_1.__assign({ async: true, ssr: false }, options);\n return medium;\n}\n","import { createMedium, createSidecarMedium } from 'use-sidecar';\nexport var mediumFocus = createMedium({}, function (_ref) {\n var target = _ref.target,\n currentTarget = _ref.currentTarget;\n return {\n target: target,\n currentTarget: currentTarget\n };\n});\nexport var mediumBlur = createMedium();\nexport var mediumEffect = createMedium();\nexport var mediumSidecar = createSidecarMedium({\n async: true\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { node, bool, string, any, arrayOf, oneOfType, object, func } from 'prop-types';\nimport * as constants from 'focus-lock/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { hiddenGuard } from './FocusGuard';\nimport { mediumFocus, mediumBlur, mediumSidecar } from './medium';\nvar emptyArray = [];\nvar FocusLock = /*#__PURE__*/React.forwardRef(function FocusLockUI(props, parentRef) {\n var _extends2;\n\n var _React$useState = React.useState(),\n realObserved = _React$useState[0],\n setObserved = _React$useState[1];\n\n var observed = React.useRef();\n var isActive = React.useRef(false);\n var originalFocusedElement = React.useRef(null);\n var children = props.children,\n disabled = props.disabled,\n noFocusGuards = props.noFocusGuards,\n persistentFocus = props.persistentFocus,\n crossFrame = props.crossFrame,\n autoFocus = props.autoFocus,\n allowTextSelection = props.allowTextSelection,\n group = props.group,\n className = props.className,\n whiteList = props.whiteList,\n _props$shards = props.shards,\n shards = _props$shards === void 0 ? emptyArray : _props$shards,\n _props$as = props.as,\n Container = _props$as === void 0 ? 'div' : _props$as,\n _props$lockProps = props.lockProps,\n containerProps = _props$lockProps === void 0 ? {} : _props$lockProps,\n SideCar = props.sideCar,\n shouldReturnFocus = props.returnFocus,\n onActivationCallback = props.onActivation,\n onDeactivationCallback = props.onDeactivation;\n\n var _React$useState2 = React.useState({}),\n id = _React$useState2[0]; // SIDE EFFECT CALLBACKS\n\n\n var onActivation = React.useCallback(function () {\n originalFocusedElement.current = originalFocusedElement.current || document && document.activeElement;\n\n if (observed.current && onActivationCallback) {\n onActivationCallback(observed.current);\n }\n\n isActive.current = true;\n }, [onActivationCallback]);\n var onDeactivation = React.useCallback(function () {\n isActive.current = false;\n\n if (onDeactivationCallback) {\n onDeactivationCallback(observed.current);\n }\n }, [onDeactivationCallback]);\n var returnFocus = React.useCallback(function (allowDefer) {\n var current = originalFocusedElement.current;\n\n if (Boolean(shouldReturnFocus) && current && current.focus) {\n var focusOptions = typeof shouldReturnFocus === 'object' ? shouldReturnFocus : undefined;\n originalFocusedElement.current = null;\n\n if (allowDefer) {\n // React might return focus after update\n // it's safer to defer the action\n Promise.resolve().then(function () {\n return current.focus(focusOptions);\n });\n } else {\n current.focus(focusOptions);\n }\n }\n }, [shouldReturnFocus]); // MEDIUM CALLBACKS\n\n var onFocus = React.useCallback(function (event) {\n if (isActive.current) {\n mediumFocus.useMedium(event);\n }\n }, []);\n var onBlur = mediumBlur.useMedium; // REF PROPAGATION\n // not using real refs due to race conditions\n\n var setObserveNode = React.useCallback(function (newObserved) {\n if (observed.current !== newObserved) {\n observed.current = newObserved;\n setObserved(newObserved);\n }\n }, []);\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof allowTextSelection !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn('React-Focus-Lock: allowTextSelection is deprecated and enabled by default');\n }\n\n React.useEffect(function () {\n if (!observed.current) {\n // eslint-disable-next-line no-console\n console.error('FocusLock: could not obtain ref to internal node');\n }\n }, []);\n }\n\n var lockProps = _extends((_extends2 = {}, _extends2[constants.FOCUS_DISABLED] = disabled && 'disabled', _extends2[constants.FOCUS_GROUP] = group, _extends2), containerProps);\n\n var hasLeadingGuards = noFocusGuards !== true;\n var hasTailingGuards = hasLeadingGuards && noFocusGuards !== 'tail';\n var mergedRef = useMergeRefs([parentRef, setObserveNode]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, hasLeadingGuards && [/*#__PURE__*/React.createElement(\"div\", {\n key: \"guard-first\",\n \"data-focus-guard\": true,\n tabIndex: disabled ? -1 : 0,\n style: hiddenGuard\n }),\n /*#__PURE__*/\n // nearest focus guard\n React.createElement(\"div\", {\n key: \"guard-nearest\",\n \"data-focus-guard\": true,\n tabIndex: disabled ? -1 : 1,\n style: hiddenGuard\n }) // first tabbed element guard\n ], !disabled && /*#__PURE__*/React.createElement(SideCar, {\n id: id,\n sideCar: mediumSidecar,\n observed: realObserved,\n disabled: disabled,\n persistentFocus: persistentFocus,\n crossFrame: crossFrame,\n autoFocus: autoFocus,\n whiteList: whiteList,\n shards: shards,\n onActivation: onActivation,\n onDeactivation: onDeactivation,\n returnFocus: returnFocus\n }), /*#__PURE__*/React.createElement(Container, _extends({\n ref: mergedRef\n }, lockProps, {\n className: className,\n onBlur: onBlur,\n onFocus: onFocus\n }), children), hasTailingGuards && /*#__PURE__*/React.createElement(\"div\", {\n \"data-focus-guard\": true,\n tabIndex: disabled ? -1 : 0,\n style: hiddenGuard\n }));\n});\nFocusLock.propTypes = process.env.NODE_ENV !== \"production\" ? {\n children: node,\n disabled: bool,\n returnFocus: oneOfType([bool, object]),\n noFocusGuards: bool,\n allowTextSelection: bool,\n autoFocus: bool,\n persistentFocus: bool,\n crossFrame: bool,\n group: string,\n className: string,\n whiteList: func,\n shards: arrayOf(any),\n as: oneOfType([string, func, object]),\n lockProps: object,\n onActivation: func,\n onDeactivation: func,\n sideCar: any.isRequired\n} : {};\nFocusLock.defaultProps = {\n children: undefined,\n disabled: false,\n returnFocus: false,\n noFocusGuards: false,\n autoFocus: true,\n persistentFocus: false,\n crossFrame: true,\n allowTextSelection: undefined,\n group: undefined,\n className: undefined,\n whiteList: undefined,\n shards: undefined,\n as: 'div',\n lockProps: {},\n onActivation: undefined,\n onDeactivation: undefined\n};\nexport default FocusLock;","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport React, { PureComponent } from 'react';\n\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient) {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n }\n\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n\n return function wrap(WrappedComponent) {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n }\n\n var mountedInstances = [];\n var state;\n\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n handleStateChangeOnClient(state);\n }\n\n var SideEffect =\n /*#__PURE__*/\n function (_PureComponent) {\n _inheritsLoose(SideEffect, _PureComponent);\n\n function SideEffect() {\n return _PureComponent.apply(this, arguments) || this;\n }\n\n // Try to use displayName of wrapped component\n SideEffect.peek = function peek() {\n return state;\n };\n\n var _proto = SideEffect.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n mountedInstances.push(this);\n emitChange();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n\n _proto.render = function render() {\n return React.createElement(WrappedComponent, this.props);\n };\n\n return SideEffect;\n }(PureComponent);\n\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n return SideEffect;\n };\n}\n\nexport default withSideEffect;\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","export var toArray = function (a) {\n var ret = Array(a.length);\n for (var i = 0; i < a.length; ++i) {\n ret[i] = a[i];\n }\n return ret;\n};\nexport var asArray = function (a) { return (Array.isArray(a) ? a : [a]); };\n","import { FOCUS_DISABLED, FOCUS_GROUP } from '../constants';\nimport { asArray, toArray } from './array';\nvar filterNested = function (nodes) {\n var contained = new Set();\n var l = nodes.length;\n for (var i = 0; i < l; i += 1) {\n for (var j = i + 1; j < l; j += 1) {\n var position = nodes[i].compareDocumentPosition(nodes[j]);\n if ((position & Node.DOCUMENT_POSITION_CONTAINED_BY) > 0) {\n contained.add(j);\n }\n if ((position & Node.DOCUMENT_POSITION_CONTAINS) > 0) {\n contained.add(i);\n }\n }\n }\n return nodes.filter(function (_, index) { return !contained.has(index); });\n};\nvar getTopParent = function (node) {\n return node.parentNode ? getTopParent(node.parentNode) : node;\n};\nexport var getAllAffectedNodes = function (node) {\n var nodes = asArray(node);\n return nodes.filter(Boolean).reduce(function (acc, currentNode) {\n var group = currentNode.getAttribute(FOCUS_GROUP);\n acc.push.apply(acc, (group\n ? filterNested(toArray(getTopParent(currentNode).querySelectorAll(\"[\" + FOCUS_GROUP + \"=\\\"\" + group + \"\\\"]:not([\" + FOCUS_DISABLED + \"=\\\"disabled\\\"])\")))\n : [currentNode]));\n return acc;\n }, []);\n};\n","import { getAllAffectedNodes } from './utils/all-affected';\nimport { toArray } from './utils/array';\nvar focusInFrame = function (frame) { return frame === document.activeElement; };\nvar focusInsideIframe = function (topNode) {\n return Boolean(toArray(topNode.querySelectorAll('iframe')).some(function (node) { return focusInFrame(node); }));\n};\nexport var focusInside = function (topNode) {\n var activeElement = document && document.activeElement;\n if (!activeElement || (activeElement.dataset && activeElement.dataset.focusGuard)) {\n return false;\n }\n return getAllAffectedNodes(topNode).reduce(function (result, node) { return result || node.contains(activeElement) || focusInsideIframe(node); }, false);\n};\n","var isRadio = function (node) { return node.tagName === 'INPUT' && node.type === 'radio'; };\nvar findSelectedRadio = function (node, nodes) {\n return nodes\n .filter(isRadio)\n .filter(function (el) { return el.name === node.name; })\n .filter(function (el) { return el.checked; })[0] || node;\n};\nexport var correctNode = function (node, nodes) {\n if (isRadio(node) && node.name) {\n return findSelectedRadio(node, nodes);\n }\n return node;\n};\nexport var correctNodes = function (nodes) {\n var resultSet = new Set();\n nodes.forEach(function (node) { return resultSet.add(correctNode(node, nodes)); });\n return nodes.filter(function (node) { return resultSet.has(node); });\n};\n","import { correctNode } from './correctFocus';\nexport var pickFirstFocus = function (nodes) {\n if (nodes[0] && nodes.length > 1) {\n return correctNode(nodes[0], nodes);\n }\n return nodes[0];\n};\nexport var pickFocusable = function (nodes, index) {\n if (nodes.length > 1) {\n return nodes.indexOf(correctNode(nodes[index], nodes));\n }\n return index;\n};\n","var isElementHidden = function (computedStyle) {\n if (!computedStyle || !computedStyle.getPropertyValue) {\n return false;\n }\n return (computedStyle.getPropertyValue('display') === 'none' || computedStyle.getPropertyValue('visibility') === 'hidden');\n};\nexport var isVisible = function (node) {\n return !node ||\n node === document ||\n (node && node.nodeType === Node.DOCUMENT_NODE) ||\n (!isElementHidden(window.getComputedStyle(node, null)) &&\n isVisible(node.parentNode && node.parentNode.nodeType === Node.DOCUMENT_FRAGMENT_NODE\n ? node.parentNode.host\n : node.parentNode));\n};\nexport var notHiddenInput = function (node) {\n return !((node.tagName === 'INPUT' || node.tagName === 'BUTTON') && (node.type === 'hidden' || node.disabled));\n};\nexport var isGuard = function (node) { return Boolean(node && node.dataset && node.dataset.focusGuard); };\nexport var isNotAGuard = function (node) { return !isGuard(node); };\nexport var isDefined = function (x) { return Boolean(x); };\n","import { correctNodes } from './utils/correctFocus';\nimport { pickFocusable } from './utils/firstFocus';\nimport { isGuard } from './utils/is';\nexport var NEW_FOCUS = 'NEW_FOCUS';\nexport var newFocus = function (innerNodes, outerNodes, activeElement, lastNode) {\n var cnt = innerNodes.length;\n var firstFocus = innerNodes[0];\n var lastFocus = innerNodes[cnt - 1];\n var isOnGuard = isGuard(activeElement);\n if (innerNodes.indexOf(activeElement) >= 0) {\n return undefined;\n }\n var activeIndex = outerNodes.indexOf(activeElement);\n var lastIndex = lastNode ? outerNodes.indexOf(lastNode) : activeIndex;\n var lastNodeInside = lastNode ? innerNodes.indexOf(lastNode) : -1;\n var indexDiff = activeIndex - lastIndex;\n var firstNodeIndex = outerNodes.indexOf(firstFocus);\n var lastNodeIndex = outerNodes.indexOf(lastFocus);\n var correctedNodes = correctNodes(outerNodes);\n var correctedIndexDiff = correctedNodes.indexOf(activeElement) - (lastNode ? correctedNodes.indexOf(lastNode) : activeIndex);\n var returnFirstNode = pickFocusable(innerNodes, 0);\n var returnLastNode = pickFocusable(innerNodes, cnt - 1);\n if (activeIndex === -1 || lastNodeInside === -1) {\n return NEW_FOCUS;\n }\n if (!indexDiff && lastNodeInside >= 0) {\n return lastNodeInside;\n }\n if (activeIndex <= firstNodeIndex && isOnGuard && Math.abs(indexDiff) > 1) {\n return returnLastNode;\n }\n if (activeIndex >= lastNodeIndex && isOnGuard && Math.abs(indexDiff) > 1) {\n return returnFirstNode;\n }\n if (indexDiff && Math.abs(correctedIndexDiff) > 1) {\n return lastNodeInside;\n }\n if (activeIndex <= firstNodeIndex) {\n return returnLastNode;\n }\n if (activeIndex > lastNodeIndex) {\n return returnFirstNode;\n }\n if (indexDiff) {\n if (Math.abs(indexDiff) > 1) {\n return lastNodeInside;\n }\n return (cnt + lastNodeInside + indexDiff) % cnt;\n }\n return undefined;\n};\n","import { toArray } from './array';\nexport var tabSort = function (a, b) {\n var tabDiff = a.tabIndex - b.tabIndex;\n var indexDiff = a.index - b.index;\n if (tabDiff) {\n if (!a.tabIndex) {\n return 1;\n }\n if (!b.tabIndex) {\n return -1;\n }\n }\n return tabDiff || indexDiff;\n};\nexport var orderByTabIndex = function (nodes, filterNegative, keepGuards) {\n return toArray(nodes)\n .map(function (node, index) { return ({\n node: node,\n index: index,\n tabIndex: keepGuards && node.tabIndex === -1 ? ((node.dataset || {}).focusGuard ? 0 : -1) : node.tabIndex,\n }); })\n .filter(function (data) { return !filterNegative || data.tabIndex >= 0; })\n .sort(tabSort);\n};\n","import { FOCUS_AUTO } from '../constants';\nimport { toArray } from './array';\nimport { tabbables } from './tabbables';\nvar queryTabbables = tabbables.join(',');\nvar queryGuardTabbables = queryTabbables + \", [data-focus-guard]\";\nexport var getFocusables = function (parents, withGuards) {\n return parents.reduce(function (acc, parent) {\n return acc.concat(toArray(parent.querySelectorAll(withGuards ? queryGuardTabbables : queryTabbables)), parent.parentNode\n ? toArray(parent.parentNode.querySelectorAll(queryTabbables)).filter(function (node) { return node === parent; })\n : []);\n }, []);\n};\nexport var getParentAutofocusables = function (parent) {\n var parentFocus = parent.querySelectorAll(\"[\" + FOCUS_AUTO + \"]\");\n return toArray(parentFocus)\n .map(function (node) { return getFocusables([node]); })\n .reduce(function (acc, nodes) { return acc.concat(nodes); }, []);\n};\n","export var tabbables = [\n 'button:enabled',\n 'select:enabled',\n 'textarea:enabled',\n 'input:enabled',\n 'a[href]',\n 'area[href]',\n 'summary',\n 'iframe',\n 'object',\n 'embed',\n 'audio[controls]',\n 'video[controls]',\n '[tabindex]',\n '[contenteditable]',\n '[autofocus]',\n];\n","import { toArray } from './array';\nimport { isVisible, notHiddenInput } from './is';\nimport { orderByTabIndex } from './tabOrder';\nimport { getFocusables, getParentAutofocusables } from './tabUtils';\nexport var filterFocusable = function (nodes) {\n return toArray(nodes)\n .filter(function (node) { return isVisible(node); })\n .filter(function (node) { return notHiddenInput(node); });\n};\nexport var getTabbableNodes = function (topNodes, withGuards) {\n return orderByTabIndex(filterFocusable(getFocusables(topNodes, withGuards)), true, withGuards);\n};\nexport var getAllTabbableNodes = function (topNodes) {\n return orderByTabIndex(filterFocusable(getFocusables(topNodes)), false);\n};\nexport var parentAutofocusables = function (topNode) {\n return filterFocusable(getParentAutofocusables(topNode));\n};\n","import { asArray } from './array';\nimport { parentAutofocusables } from './DOMutils';\nvar getParents = function (node, parents) {\n if (parents === void 0) { parents = []; }\n parents.push(node);\n if (node.parentNode) {\n getParents(node.parentNode, parents);\n }\n return parents;\n};\nexport var getCommonParent = function (nodeA, nodeB) {\n var parentsA = getParents(nodeA);\n var parentsB = getParents(nodeB);\n for (var i = 0; i < parentsA.length; i += 1) {\n var currentParent = parentsA[i];\n if (parentsB.indexOf(currentParent) >= 0) {\n return currentParent;\n }\n }\n return false;\n};\nexport var getTopCommonParent = function (baseActiveElement, leftEntry, rightEntries) {\n var activeElements = asArray(baseActiveElement);\n var leftEntries = asArray(leftEntry);\n var activeElement = activeElements[0];\n var topCommon = false;\n leftEntries.filter(Boolean).forEach(function (entry) {\n topCommon = getCommonParent(topCommon || entry, entry) || topCommon;\n rightEntries.filter(Boolean).forEach(function (subEntry) {\n var common = getCommonParent(activeElement, subEntry);\n if (common) {\n if (!topCommon || common.contains(topCommon)) {\n topCommon = common;\n }\n else {\n topCommon = getCommonParent(common, topCommon);\n }\n }\n });\n });\n return topCommon;\n};\nexport var allParentAutofocusables = function (entries) {\n return entries.reduce(function (acc, node) { return acc.concat(parentAutofocusables(node)); }, []);\n};\n","import { NEW_FOCUS, newFocus } from './solver';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { getAllTabbableNodes, getTabbableNodes } from './utils/DOMutils';\nimport { pickFirstFocus } from './utils/firstFocus';\nimport { isDefined, isNotAGuard } from './utils/is';\nimport { allParentAutofocusables, getTopCommonParent } from './utils/parenting';\nvar findAutoFocused = function (autoFocusables) { return function (node) {\n return node.autofocus || (node.dataset && !!node.dataset.autofocus) || autoFocusables.indexOf(node) >= 0;\n}; };\nvar reorderNodes = function (srcNodes, dstNodes) {\n var remap = new Map();\n dstNodes.forEach(function (entity) { return remap.set(entity.node, entity); });\n return srcNodes.map(function (node) { return remap.get(node); }).filter(isDefined);\n};\nexport var getFocusMerge = function (topNode, lastNode) {\n var activeElement = (document && document.activeElement);\n var entries = getAllAffectedNodes(topNode).filter(isNotAGuard);\n var commonParent = getTopCommonParent(activeElement || topNode, topNode, entries);\n var anyFocusable = getAllTabbableNodes(entries);\n var innerElements = getTabbableNodes(entries).filter(function (_a) {\n var node = _a.node;\n return isNotAGuard(node);\n });\n if (!innerElements[0]) {\n innerElements = anyFocusable;\n if (!innerElements[0]) {\n return undefined;\n }\n }\n var outerNodes = getAllTabbableNodes([commonParent]).map(function (_a) {\n var node = _a.node;\n return node;\n });\n var orderedInnerElements = reorderNodes(outerNodes, innerElements);\n var innerNodes = orderedInnerElements.map(function (_a) {\n var node = _a.node;\n return node;\n });\n var newId = newFocus(innerNodes, outerNodes, activeElement, lastNode);\n if (newId === NEW_FOCUS) {\n var autoFocusable = anyFocusable\n .map(function (_a) {\n var node = _a.node;\n return node;\n })\n .filter(findAutoFocused(allParentAutofocusables(entries)));\n return {\n node: autoFocusable && autoFocusable.length ? pickFirstFocus(autoFocusable) : pickFirstFocus(innerNodes),\n };\n }\n if (newId === undefined) {\n return newId;\n }\n return orderedInnerElements[newId];\n};\n","import { getFocusMerge } from './focusMerge';\nexport var focusOn = function (target) {\n target.focus();\n if ('contentWindow' in target && target.contentWindow) {\n target.contentWindow.focus();\n }\n};\nvar guardCount = 0;\nvar lockDisabled = false;\nexport var setFocus = function (topNode, lastNode) {\n var focusable = getFocusMerge(topNode, lastNode);\n if (lockDisabled) {\n return;\n }\n if (focusable) {\n if (guardCount > 2) {\n console.error('FocusLock: focus-fighting detected. Only one focus management system could be active. ' +\n 'See https://github.com/theKashey/focus-lock/#focus-fighting');\n lockDisabled = true;\n setTimeout(function () {\n lockDisabled = false;\n }, 1);\n return;\n }\n guardCount++;\n focusOn(focusable.node);\n guardCount--;\n }\n};\n","import * as constants from './constants';\nimport { getFocusabledIn } from './focusables';\nimport { focusInside } from './focusInside';\nimport { focusIsHidden } from './focusIsHidden';\nimport { getFocusMerge as focusMerge } from './focusMerge';\nimport { setFocus } from './setFocus';\nimport { focusNextElement, focusPrevElement } from './sibling';\nimport tabHook from './tabHook';\nimport { getAllAffectedNodes } from './utils/all-affected';\nexport { tabHook, focusInside, focusIsHidden, focusMerge, getFocusabledIn, constants, getAllAffectedNodes, focusNextElement, focusPrevElement, };\nexport default setFocus;\n","export function deferAction(action) {\n // Hidding setImmediate from Webpack to avoid inserting polyfill\n var _window = window,\n setImmediate = _window.setImmediate;\n\n if (typeof setImmediate !== 'undefined') {\n setImmediate(action);\n } else {\n setTimeout(action, 1);\n }\n}\nexport var inlineProp = function inlineProp(name, value) {\n var obj = {};\n obj[name] = value;\n return obj;\n};","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport withSideEffect from 'react-clientside-effect';\nimport moveFocusInside, { focusInside, focusIsHidden, getFocusabledIn } from 'focus-lock';\nimport { deferAction } from './util';\nimport { mediumFocus, mediumBlur, mediumEffect } from './medium';\n\nvar focusOnBody = function focusOnBody() {\n return document && document.activeElement === document.body;\n};\n\nvar isFreeFocus = function isFreeFocus() {\n return focusOnBody() || focusIsHidden();\n};\n\nvar lastActiveTrap = null;\nvar lastActiveFocus = null;\nvar lastPortaledElement = null;\nvar focusWasOutsideWindow = false;\n\nvar defaultWhitelist = function defaultWhitelist() {\n return true;\n};\n\nvar focusWhitelisted = function focusWhitelisted(activeElement) {\n return (lastActiveTrap.whiteList || defaultWhitelist)(activeElement);\n};\n\nvar recordPortal = function recordPortal(observerNode, portaledElement) {\n lastPortaledElement = {\n observerNode: observerNode,\n portaledElement: portaledElement\n };\n};\n\nvar focusIsPortaledPair = function focusIsPortaledPair(element) {\n return lastPortaledElement && lastPortaledElement.portaledElement === element;\n};\n\nfunction autoGuard(startIndex, end, step, allNodes) {\n var lastGuard = null;\n var i = startIndex;\n\n do {\n var item = allNodes[i];\n\n if (item.guard) {\n if (item.node.dataset.focusAutoGuard) {\n lastGuard = item;\n }\n } else if (item.lockItem) {\n if (i !== startIndex) {\n // we will tab to the next element\n return;\n }\n\n lastGuard = null;\n } else {\n break;\n }\n } while ((i += step) !== end);\n\n if (lastGuard) {\n lastGuard.node.tabIndex = 0;\n }\n}\n\nvar extractRef = function extractRef(ref) {\n return ref && 'current' in ref ? ref.current : ref;\n};\n\nvar focusWasOutside = function focusWasOutside(crossFrameOption) {\n if (crossFrameOption) {\n // with cross frame return true for any value\n return Boolean(focusWasOutsideWindow);\n } // in other case return only of focus went a while aho\n\n\n return focusWasOutsideWindow === 'meanwhile';\n};\n\nvar activateTrap = function activateTrap() {\n var result = false;\n\n if (lastActiveTrap) {\n var _lastActiveTrap = lastActiveTrap,\n observed = _lastActiveTrap.observed,\n persistentFocus = _lastActiveTrap.persistentFocus,\n autoFocus = _lastActiveTrap.autoFocus,\n shards = _lastActiveTrap.shards,\n crossFrame = _lastActiveTrap.crossFrame;\n var workingNode = observed || lastPortaledElement && lastPortaledElement.portaledElement;\n var activeElement = document && document.activeElement;\n\n if (workingNode) {\n var workingArea = [workingNode].concat(shards.map(extractRef).filter(Boolean));\n\n if (!activeElement || focusWhitelisted(activeElement)) {\n if (persistentFocus || focusWasOutside(crossFrame) || !isFreeFocus() || !lastActiveFocus && autoFocus) {\n if (workingNode && !(focusInside(workingArea) || focusIsPortaledPair(activeElement, workingNode))) {\n if (document && !lastActiveFocus && activeElement && !autoFocus) {\n // Check if blur() exists, which is missing on certain elements on IE\n if (activeElement.blur) {\n activeElement.blur();\n }\n\n document.body.focus();\n } else {\n result = moveFocusInside(workingArea, lastActiveFocus);\n lastPortaledElement = {};\n }\n }\n\n focusWasOutsideWindow = false;\n lastActiveFocus = document && document.activeElement;\n }\n }\n\n if (document) {\n var newActiveElement = document && document.activeElement;\n var allNodes = getFocusabledIn(workingArea);\n var focusedIndex = allNodes.map(function (_ref) {\n var node = _ref.node;\n return node;\n }).indexOf(newActiveElement);\n\n if (focusedIndex > -1) {\n // remove old focus\n allNodes.filter(function (_ref2) {\n var guard = _ref2.guard,\n node = _ref2.node;\n return guard && node.dataset.focusAutoGuard;\n }).forEach(function (_ref3) {\n var node = _ref3.node;\n return node.removeAttribute('tabIndex');\n });\n autoGuard(focusedIndex, allNodes.length, +1, allNodes);\n autoGuard(focusedIndex, -1, -1, allNodes);\n }\n }\n }\n }\n\n return result;\n};\n\nvar onTrap = function onTrap(event) {\n if (activateTrap() && event) {\n // prevent scroll jump\n event.stopPropagation();\n event.preventDefault();\n }\n};\n\nvar onBlur = function onBlur() {\n return deferAction(activateTrap);\n};\n\nvar onFocus = function onFocus(event) {\n // detect portal\n var source = event.target;\n var currentNode = event.currentTarget;\n\n if (!currentNode.contains(source)) {\n recordPortal(currentNode, source);\n }\n};\n\nvar FocusWatcher = function FocusWatcher() {\n return null;\n};\n\nvar FocusTrap = function FocusTrap(_ref4) {\n var children = _ref4.children;\n return /*#__PURE__*/React.createElement(\"div\", {\n onBlur: onBlur,\n onFocus: onFocus\n }, children);\n};\n\nFocusTrap.propTypes = process.env.NODE_ENV !== \"production\" ? {\n children: PropTypes.node.isRequired\n} : {};\n\nvar onWindowBlur = function onWindowBlur() {\n focusWasOutsideWindow = 'just'; // using setTimeout to set this variable after React/sidecar reaction\n\n setTimeout(function () {\n focusWasOutsideWindow = 'meanwhile';\n }, 0);\n};\n\nvar attachHandler = function attachHandler() {\n document.addEventListener('focusin', onTrap, true);\n document.addEventListener('focusout', onBlur);\n window.addEventListener('blur', onWindowBlur);\n};\n\nvar detachHandler = function detachHandler() {\n document.removeEventListener('focusin', onTrap, true);\n document.removeEventListener('focusout', onBlur);\n window.removeEventListener('blur', onWindowBlur);\n};\n\nfunction reducePropsToState(propsList) {\n return propsList.filter(function (_ref5) {\n var disabled = _ref5.disabled;\n return !disabled;\n });\n}\n\nfunction handleStateChangeOnClient(traps) {\n var trap = traps.slice(-1)[0];\n\n if (trap && !lastActiveTrap) {\n attachHandler();\n }\n\n var lastTrap = lastActiveTrap;\n var sameTrap = lastTrap && trap && trap.id === lastTrap.id;\n lastActiveTrap = trap;\n\n if (lastTrap && !sameTrap) {\n lastTrap.onDeactivation(); // return focus only of last trap was removed\n\n if (!traps.filter(function (_ref6) {\n var id = _ref6.id;\n return id === lastTrap.id;\n }).length) {\n // allow defer is no other trap is awaiting restore\n lastTrap.returnFocus(!trap);\n }\n }\n\n if (trap) {\n lastActiveFocus = null;\n\n if (!sameTrap || lastTrap.observed !== trap.observed) {\n trap.onActivation();\n }\n\n activateTrap(true);\n deferAction(activateTrap);\n } else {\n detachHandler();\n lastActiveFocus = null;\n }\n} // bind medium\n\n\nmediumFocus.assignSyncMedium(onFocus);\nmediumBlur.assignMedium(onBlur);\nmediumEffect.assignMedium(function (cb) {\n return cb({\n moveFocusInside: moveFocusInside,\n focusInside: focusInside\n });\n});\nexport default withSideEffect(reducePropsToState, handleStateChangeOnClient)(FocusWatcher);","import { FOCUS_ALLOW } from './constants';\nimport { toArray } from './utils/array';\nexport var focusIsHidden = function () {\n return document &&\n toArray(document.querySelectorAll(\"[\" + FOCUS_ALLOW + \"]\")).some(function (node) { return node.contains(document.activeElement); });\n};\n","import { getAllAffectedNodes } from './utils/all-affected';\nimport { getTabbableNodes } from './utils/DOMutils';\nimport { isGuard, isNotAGuard } from './utils/is';\nimport { getTopCommonParent } from './utils/parenting';\nexport var getFocusabledIn = function (topNode) {\n var entries = getAllAffectedNodes(topNode).filter(isNotAGuard);\n var commonParent = getTopCommonParent(topNode, topNode, entries);\n var outerNodes = getTabbableNodes([commonParent], true);\n var innerElements = getTabbableNodes(entries)\n .filter(function (_a) {\n var node = _a.node;\n return isNotAGuard(node);\n })\n .map(function (_a) {\n var node = _a.node;\n return node;\n });\n return outerNodes.map(function (_a) {\n var node = _a.node, index = _a.index;\n return ({\n node: node,\n index: index,\n lockItem: innerElements.indexOf(node) >= 0,\n guard: isGuard(node),\n });\n });\n};\n","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport FocusLockUI from './Lock';\nimport FocusTrap from './Trap';\n/* that would be a BREAKING CHANGE!\n// delaying sidecar execution till the first usage\nconst RequireSideCar = (props) => {\n // eslint-disable-next-line global-require\n const SideCar = require('./Trap').default;\n return ;\n};\n*/\n\nvar FocusLockCombination = /*#__PURE__*/React.forwardRef(function FocusLockUICombination(props, ref) {\n return /*#__PURE__*/React.createElement(FocusLockUI, _extends({\n sideCar: FocusTrap,\n ref: ref\n }, props));\n});\n\nvar _ref = FocusLockUI.propTypes || {},\n sideCar = _ref.sideCar,\n propTypes = _objectWithoutPropertiesLoose(_ref, [\"sideCar\"]);\n\nFocusLockCombination.propTypes = process.env.NODE_ENV !== \"production\" ? propTypes : {};\nexport default FocusLockCombination;","import FocusLock from './Combination';\nexport * from './UI';\nexport default FocusLock;","var __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};\nimport * as React from 'react';\nimport FocusTrap from 'react-focus-lock';\nexport function withFocusLock(WrappedComponent) {\n var _a;\n return _a = class WithFocusLock extends React.PureComponent {\n constructor() {\n super(...arguments);\n this.handleKeyUp = (event) => {\n const { onEscKeyUp } = this.props;\n if (event.key === 'Escape' && onEscKeyUp) {\n event.stopPropagation();\n onEscKeyUp(event);\n }\n };\n }\n render() {\n const _a = this.props, { onEscKeyUp, disableReturnFocus } = _a, wrappedComponentProps = __rest(_a, [\"onEscKeyUp\", \"disableReturnFocus\"]);\n return (React.createElement(FocusTrap, { returnFocus: !disableReturnFocus, autoFocus: true },\n React.createElement(\"div\", { onKeyUp: this.handleKeyUp },\n React.createElement(WrappedComponent, Object.assign({}, wrappedComponentProps)))));\n }\n },\n _a.displayName = `WithFocusLock(${WrappedComponent.displayName})`,\n _a;\n}\n","import * as React from 'react';\nimport { Alert, Checkmark } from '@volkswagen-onehub/icons-core';\nimport { css, styled, ThemeProvider } from '../theme-provider';\nimport { Container, ContainerGutter, ContainerPadding, ContainerWrap, } from '../container';\nexport var InfoboxAppearance;\n(function (InfoboxAppearance) {\n InfoboxAppearance[InfoboxAppearance[\"Default\"] = 0] = \"Default\";\n InfoboxAppearance[InfoboxAppearance[\"Error\"] = 1] = \"Error\";\n InfoboxAppearance[InfoboxAppearance[\"Success\"] = 2] = \"Success\";\n})(InfoboxAppearance || (InfoboxAppearance = {}));\nconst getBackgroundColor = css `${({ theme, appearance }) => {\n switch (appearance) {\n case InfoboxAppearance.Error:\n return theme.interaction.recipe360.default;\n case InfoboxAppearance.Success:\n return theme.interaction.recipe350.default;\n case InfoboxAppearance.Default:\n default:\n return theme.interaction.recipe370.default;\n }\n}}`;\nconst getIcon = (appearance) => {\n switch (appearance) {\n case InfoboxAppearance.Success:\n return Checkmark;\n case InfoboxAppearance.Error:\n case InfoboxAppearance.Default:\n default:\n return Alert;\n }\n};\nconst StyledInfobox = styled.div.withConfig({ displayName: \"StyledInfobox\", componentId: \"sc-16u4l1c\" }) `display:inline-block;width:${(props) => props.fullWidth && '100%'};border-radius:4px;background-color:${getBackgroundColor};color:${(props) => props.theme.text.color.primary};`;\nconst StyledIcon = styled(Alert).withConfig({ displayName: \"StyledIcon\", componentId: \"sc-145nlbo\" }) `display:block;height:${(props) => props.theme.textAppearances.copy0200.lineHeight};`;\nexport const Infobox = (props) => {\n const { ariaLabel, ariaLive, children, fullWidth, hideIcon, appearance } = props;\n return (React.createElement(ThemeProvider, { theme: \"image\" },\n React.createElement(StyledInfobox, { \"aria-label\": ariaLabel, \"aria-live\": ariaLive, \"aria-atomic\": true, fullWidth: fullWidth, appearance: appearance },\n React.createElement(Container, { gutter: ContainerGutter.static200, wrap: ContainerWrap.never, padding: ContainerPadding.static200, shrinkContent: true },\n !hideIcon && (React.createElement(StyledIcon, { variant: \"default\", ariaHidden: true, as: getIcon(appearance) })),\n React.createElement(React.Fragment, null, children)))));\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nexport var Checkmark = React.forwardRef(Object.assign(function (props, forwardRef) {\n var variant = props.variant || \"default\";\n if (variant === \"default\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { viewBox: \"0 0 24 24\", width: \"24\", height: \"24\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M9.037 22.392a.667.667 0 0 1-.422-.151l-7.49-6.142.844-1.028 6.933 5.685 13.1-18.861 1.092.759L9.583 22.106a.669.669 0 0 1-.546.286z\" }));\n }\n if (variant === \"small\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { viewBox: \"0 0 12 12\", width: \"12\", height: \"12\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M4.39 11.39a.81.81 0 0 1-.51-.18L0 8.11l.88-1 3.39 2.67L10.86.39l1.14.76L4.88 11.3l-.37.08z\" }));\n }\n return null;\n}, { displayName: 'Checkmark' }));\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nexport var Alert = React.forwardRef(Object.assign(function (props, forwardRef) {\n var variant = props.variant || \"default\";\n if (variant === \"default\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M12.26 14.995a.718.718 0 0 1-.665-.76V7.74a.671.671 0 1 1 1.33 0v6.495a.718.718 0 0 1-.665.76z\" }),\n React.createElement(\"ellipse\", { cx: \"12.261\", cy: \"17.232\", rx: \".73\", ry: \".761\" }),\n React.createElement(\"path\", { d: \"M12.276 3.38a.902.902 0 0 1 .83.517l.018.036.02.034 8.156 14.36a.926.926 0 0 1-.844 1.306H4.032a.926.926 0 0 1-.843-1.308l8.221-14.36.02-.035.018-.036a.902.902 0 0 1 .829-.514m0-1.33a2.23 2.23 0 0 0-2.021 1.254L2.01 17.706a2.256 2.256 0 0 0 2.021 3.257h16.424a2.256 2.256 0 0 0 2.024-3.25L14.3 3.31a2.23 2.23 0 0 0-2.024-1.26z\" }));\n }\n if (variant === \"large\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"48\", height: \"48\", viewBox: \"0 0 48 48\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M24 32.026a1 1 0 0 1-1-1v-15.02a1 1 0 1 1 2 0v15.02a1 1 0 0 1-1 1z\" }),\n React.createElement(\"ellipse\", { cx: \"24\", cy: \"36.535\", rx: \"1.409\", ry: \"1.47\" }),\n React.createElement(\"path\", { d: \"M24.064 6.998a2.483 2.483 0 0 1 2.27 1.413l.027.054.03.052 16.395 28.867a2.53 2.53 0 0 1-2.293 3.6H7.507a2.53 2.53 0 0 1-2.29-3.607L21.742 8.51l.03-.052.027-.053a2.483 2.483 0 0 1 2.266-1.407m0-2a4.477 4.477 0 0 0-4.059 2.518L3.448 36.443a4.53 4.53 0 0 0 4.059 6.542h32.986a4.53 4.53 0 0 0 4.065-6.53L28.13 7.53a4.478 4.478 0 0 0-4.065-2.531z\" }));\n }\n if (variant === \"small\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"12\", height: \"12\", viewBox: \"0 0 12 12\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M5.979 7.948a.665.665 0 0 1-.665-.665V1.602a.665.665 0 1 1 1.33 0v5.681a.665.665 0 0 1-.665.665z\" }),\n React.createElement(\"ellipse\", { cx: \"5.979\", cy: \"10.195\", rx: \".73\", ry: \".761\" }));\n }\n return null;\n}, { displayName: 'Alert' }));\n","import throttle from 'lodash.throttle';\nimport * as React from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport { withTheme } from 'styled-components';\nimport { getColumnsWidthForBreakpoint, getGridColumn } from '../helpers/grid';\nimport { hexColorToRgba } from '../helpers/color';\nimport { Breakpoints } from '../helpers/breakpoint';\nimport { css, styled } from '../theme-provider';\nexport var InteractionLayerSize;\n(function (InteractionLayerSize) {\n InteractionLayerSize[\"A\"] = \"A\";\n InteractionLayerSize[\"B\"] = \"B\";\n InteractionLayerSize[\"C\"] = \"C\";\n InteractionLayerSize[\"D\"] = \"D\";\n InteractionLayerSize[\"E\"] = \"E\";\n})(InteractionLayerSize || (InteractionLayerSize = {}));\nconst animationClassName = 'animation';\nconst LayerScrollContainer = styled.div.withConfig({ displayName: \"LayerScrollContainer\", componentId: \"sc-1omkeja\" }) `overflow-y:auto;-webkit-overflow-scrolling:touch;height:${(props) => props.windowHeight ? `${props.windowHeight}px` : '100%'};`;\nconst StyledLayer = styled.div.withConfig({ displayName: \"StyledLayer\", componentId: \"sc-1wno2sw\" }) `background-color:${(props) => props.theme.global.backgroundColor};position:fixed;top:0;bottom:0;${(props) => (props.direction === 'rtl' ? `left: 0;` : `right: 0;`)} box-shadow:${(props) => {\n const themeShadowColor = props.theme.shadowColor || '#FFFFFF';\n const darkShadowColor = hexColorToRgba(themeShadowColor, 0.1);\n const lightShadowColor = hexColorToRgba(themeShadowColor, 0.05);\n return `0 8px 32px 0 ${darkShadowColor}, 0 16px 48px 0 ${lightShadowColor}`;\n}};&.${animationClassName}{&-ltr-enter-active,&-rtl-enter-active,&-ltr-exit-active,&-rtl-exit-active{transition:${(props) => {\n const duration = props.theme.animation.duration.layer;\n const timingFunction = props.theme.animation.timingFunction.in;\n return `transform ${duration} ${timingFunction}`;\n}};}&-ltr{&-enter{transform:translateX(100%);right:0;}&-enter-active,&-exit{transform:translateX(0);right:0;}&-exit-active{transform:translateX(100%);right:0;}&-enter-done{right:0;}}&-rtl{&-enter{transform:translateX(-100%);left:0;}&-enter-active,&-exit{transform:translateX(0);left:0;}&-exit-active{transform:translateX(-100%);left:0;}&-enter-done{left:0;}}}${(props) => css `${props.size === 'A' &&\n `width: ${getGridColumn(23)};\n\n\t\t\t\t@media (min-width: ${Breakpoints.b560}px) {\n\t\t\t\t\twidth: ${getGridColumn(18)};\n\t\t\t\t}\n\t\t\t\t@media (min-width: ${Breakpoints.b960}px) {\n\t\t\t\t\twidth: ${getGridColumn(12)};\n\t\t\t\t}\n\t\t\t\t@media (min-width: ${Breakpoints.b1280}px) {\n\t\t\t\t\twidth: ${getGridColumn(8)};\n\t\t\t\t}\n\t\t\t\t@media (min-width: ${Breakpoints.b1600}px) {\n\t\t\t\t\twidth: ${getGridColumn(6)};\n\t\t\t\t}\n\t\t\t\t@media (min-width: ${Breakpoints.b2560}px) {\n\t\t\t\t\twidth: ${getColumnsWidthForBreakpoint(6, Breakpoints.b2560)};\n\t\t\t\t}\n\t\t\t`} ${props.size === 'B' &&\n `width: ${getGridColumn(23)};\n\n\t\t\t\t@media (min-width: ${Breakpoints.b560}px) {\n\t\t\t\t\twidth: ${getGridColumn(22)};\n\t\t\t\t}\n\t\t\t\t@media (min-width: ${Breakpoints.b960}px) {\n\t\t\t\t\twidth: ${getGridColumn(20)};\n\t\t\t\t}\n\t\t\t\t@media (min-width: ${Breakpoints.b1600}px) {\n\t\t\t\t\twidth: ${getGridColumn(19)};\n\t\t\t\t}\n\t\t\t\t@media (min-width: ${Breakpoints.b1920}px) {\n\t\t\t\t\twidth: ${getGridColumn(18)};\n\t\t\t\t}\n\t\t\t\t@media (min-width: ${Breakpoints.b2560}px) {\n\t\t\t\t\twidth: ${getColumnsWidthForBreakpoint(18, Breakpoints.b2560)};\n\t\t\t\t}\n\t\t\t`} ${props.size === 'C' &&\n `width: ${getGridColumn(22)};\n\n\t\t\t\t@media (min-width: ${Breakpoints.b560}px) {\n\t\t\t\t\twidth: ${getGridColumn(9)};\n\t\t\t\t}\n\t\t\t\t@media (min-width: ${Breakpoints.b2560}px) {\n\t\t\t\t\twidth: ${getColumnsWidthForBreakpoint(9, Breakpoints.b2560)};\n\t\t\t\t}\n\t\t\t`} ${props.size === 'D' &&\n `width: ${getGridColumn(24)};\n\n\t\t\t\t@media (min-width: ${Breakpoints.b960}px) {\n\t\t\t\t\twidth: ${getColumnsWidthForBreakpoint(24, Breakpoints.b960)};\n\t\t\t\t}\n\t\t\t`} ${props.size === 'E' &&\n `width: ${getGridColumn(23)};\n\n\t\t\t\t@media (min-width: ${Breakpoints.b560}px) {\n\t\t\t\t\twidth: ${getGridColumn(18)};\n\t\t\t\t}\n\t\t\t\t@media (min-width: ${Breakpoints.b960}px) {\n\t\t\t\t\twidth: ${getGridColumn(12)};\n\t\t\t\t}\n\t\t\t\t@media (min-width: ${Breakpoints.b1600}px) {\n\t\t\t\t\twidth: ${getGridColumn(9)};\n\t\t\t\t}\n\t\t\t\t@media (min-width: ${Breakpoints.b2560}px) {\n\t\t\t\t\twidth: ${getColumnsWidthForBreakpoint(9, Breakpoints.b2560)};\n\t\t\t\t}\n\t\t\t`}`};`;\nStyledLayer.displayName = 'StyledLayer';\nconst UnanimatedInteractionLayer = React.forwardRef((props, ref) => {\n const { active, children, direction, size, scrollElementRef, windowHeight } = props;\n const innerRef = ref || undefined;\n return (React.createElement(StyledLayer, { role: \"dialog\", \"aria-modal\": active, size: size, ref: innerRef, direction: direction },\n React.createElement(LayerScrollContainer, { ref: scrollElementRef, windowHeight: windowHeight }, children)));\n});\nUnanimatedInteractionLayer.displayName = 'UnanimatedInteractionLayer';\nclass InteractionLayerInternal extends React.PureComponent {\n constructor(props) {\n super(props);\n this.getWindowHeight = () => {\n const windowHeight = window.innerHeight;\n this.setState({ windowHeight });\n };\n this.resizeInteractionLayer = throttle(() => {\n this.getWindowHeight();\n }, 50);\n this.state = {\n windowHeight: typeof window !== 'undefined' ? window.innerHeight : undefined,\n };\n }\n componentDidMount() {\n if (!window) {\n return;\n }\n window.addEventListener('resize', this.resizeInteractionLayer);\n this.resizeInteractionLayer();\n }\n componentWillUnmount() {\n window.removeEventListener('resize', this.resizeInteractionLayer);\n }\n render() {\n const { windowHeight } = this.state;\n const { active, ariaLabel, ariaDescribedBy, ariaLabelledBy, children, in: visible = true, key, onExited, scrollElementRef, size, theme, } = this.props;\n const direction = theme.direction || 'ltr';\n const timeout = parseInt(theme.animation.duration.layer || '0', 10);\n return (React.createElement(CSSTransition, { classNames: `${animationClassName}-${direction}`, onExited: onExited, in: Boolean(visible && direction), timeout: timeout },\n React.createElement(UnanimatedInteractionLayer, { active: active, size: size, scrollElementRef: scrollElementRef, direction: direction, key: key, windowHeight: windowHeight, \"aria-describedby\": ariaDescribedBy, \"aria-label\": ariaLabel, \"aria-labelledby\": ariaLabelledBy }, children)));\n }\n}\nexport const InteractionLayer = withTheme(InteractionLayerInternal);\n","var __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};\nimport * as React from 'react';\nimport { TransitionGroup } from 'react-transition-group';\nimport { styled } from '../theme-provider';\nconst StyledLayerWrapper = styled.div.withConfig({ displayName: \"StyledLayerWrapper\", componentId: \"sc-1bl8kxv\" }) `position:fixed;top:0;right:0;bottom:0;left:0;${(props) => props.contentCentered &&\n `\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t`} overflow:hidden;pointer-events:none;& > *{pointer-events:auto;}`;\nStyledLayerWrapper.displayName = 'StyledLayerWrapper';\nexport const LayerWrapper = (props) => {\n const { contentCentered } = props, rest = __rest(props, [\"contentCentered\"]);\n return (React.createElement(StyledLayerWrapper, { contentCentered: contentCentered },\n React.createElement(TransitionGroup, Object.assign({}, rest, { appear: true }))));\n};\n","export const MapTopographyStyles = [\n {\n elementType: 'geometry',\n stylers: [\n {\n color: '#f5f5f5',\n },\n ],\n },\n {\n elementType: 'labels.icon',\n stylers: [\n {\n visibility: 'off',\n },\n ],\n },\n {\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#616161',\n },\n ],\n },\n {\n elementType: 'labels.text.stroke',\n stylers: [\n {\n color: '#f5f5f5',\n },\n ],\n },\n {\n featureType: 'administrative.land_parcel',\n elementType: 'labels',\n stylers: [\n {\n visibility: 'off',\n },\n ],\n },\n {\n featureType: 'administrative.land_parcel',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#bdbdbd',\n },\n ],\n },\n {\n featureType: 'landscape',\n stylers: [\n {\n color: '#dfe4e8',\n },\n ],\n },\n {\n featureType: 'landscape.natural',\n elementType: 'labels',\n stylers: [\n {\n color: '#757575',\n },\n {\n visibility: 'simplified',\n },\n {\n weight: 0.5,\n },\n ],\n },\n {\n featureType: 'poi',\n elementType: 'geometry',\n stylers: [\n {\n color: '#eeeeee',\n },\n ],\n },\n {\n featureType: 'poi',\n elementType: 'labels.text',\n stylers: [\n {\n visibility: 'off',\n },\n ],\n },\n {\n featureType: 'poi',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#757575',\n },\n ],\n },\n {\n featureType: 'poi.business',\n stylers: [\n {\n visibility: 'off',\n },\n ],\n },\n {\n featureType: 'poi.park',\n elementType: 'geometry',\n stylers: [\n {\n color: '#e5e5e5',\n },\n ],\n },\n {\n featureType: 'poi.park',\n elementType: 'geometry.fill',\n stylers: [\n {\n color: '#ade5a1',\n },\n ],\n },\n {\n featureType: 'poi.park',\n elementType: 'labels',\n stylers: [\n {\n visibility: 'on',\n },\n ],\n },\n {\n featureType: 'poi.park',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#00662f',\n },\n ],\n },\n {\n featureType: 'poi.park',\n elementType: 'labels.text.stroke',\n stylers: [\n {\n visibility: 'off',\n },\n ],\n },\n {\n featureType: 'road',\n elementType: 'geometry',\n stylers: [\n {\n color: '#ffffff',\n },\n ],\n },\n {\n featureType: 'road',\n elementType: 'labels',\n stylers: [\n {\n visibility: 'on',\n },\n ],\n },\n {\n featureType: 'road',\n elementType: 'labels.icon',\n stylers: [\n {\n visibility: 'off',\n },\n ],\n },\n {\n featureType: 'road.arterial',\n elementType: 'labels',\n stylers: [\n {\n visibility: 'on',\n },\n ],\n },\n {\n featureType: 'road.arterial',\n elementType: 'labels.icon',\n stylers: [\n {\n visibility: 'on',\n },\n ],\n },\n {\n featureType: 'road.arterial',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#757575',\n },\n ],\n },\n {\n featureType: 'road.highway',\n elementType: 'geometry',\n stylers: [\n {\n color: '#dadada',\n },\n ],\n },\n {\n featureType: 'road.highway',\n elementType: 'geometry.fill',\n stylers: [\n {\n color: '#ffe856',\n },\n ],\n },\n {\n featureType: 'road.highway',\n elementType: 'geometry.stroke',\n stylers: [\n {\n visibility: 'off',\n },\n ],\n },\n {\n featureType: 'road.highway',\n elementType: 'labels',\n stylers: [\n {\n visibility: 'on',\n },\n ],\n },\n {\n featureType: 'road.highway',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#616161',\n },\n ],\n },\n {\n featureType: 'road.local',\n stylers: [\n {\n visibility: 'off',\n },\n ],\n },\n {\n featureType: 'road.local',\n elementType: 'geometry',\n stylers: [\n {\n color: '#ffffff',\n },\n {\n visibility: 'on',\n },\n {\n weight: 0.5,\n },\n ],\n },\n {\n featureType: 'road.local',\n elementType: 'labels',\n stylers: [\n {\n visibility: 'on',\n },\n ],\n },\n {\n featureType: 'road.local',\n elementType: 'labels.text',\n stylers: [\n {\n visibility: 'on',\n },\n ],\n },\n {\n featureType: 'road.local',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#9e9e9e',\n },\n ],\n },\n {\n featureType: 'transit',\n stylers: [\n {\n visibility: 'off',\n },\n ],\n },\n {\n featureType: 'transit.line',\n elementType: 'geometry',\n stylers: [\n {\n color: '#e5e5e5',\n },\n ],\n },\n {\n featureType: 'transit.station',\n elementType: 'geometry',\n stylers: [\n {\n color: '#eeeeee',\n },\n ],\n },\n {\n featureType: 'water',\n elementType: 'geometry',\n stylers: [\n {\n color: '#4cc7f4',\n },\n ],\n },\n {\n featureType: 'water',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#0066a1',\n },\n ],\n },\n];\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nexport var Menu = React.forwardRef(Object.assign(function (props, forwardRef) {\n var variant = props.variant || \"default\";\n if (variant === \"default\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M0 4h24v2H0zM0 11h14v2H0zM0 18h20v2H0z\" }));\n }\n if (variant === \"small\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"12\", height: \"12\", viewBox: \"0 0 12 12\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M0 1.89h12v1H0zM0 5.39h7v1H0zM0 8.89h10v1H0z\" }));\n }\n return null;\n}, { displayName: 'Menu' }));\n","import * as React from 'react';\nimport { Menu as MenuIcon } from '@volkswagen-onehub/icons-core';\nimport { createA11yOutlineStyles } from '../helpers/a11y';\nimport { styled } from '../theme-provider';\nimport { deprecated } from '../deprecated';\nconst StyledButton = styled.button.withConfig({ displayName: \"StyledButton\", componentId: \"sc-mw2ymc\" }) `box-sizing:border-box;border:0;margin:0;background:none;width:${(props) => props.theme.size.static450};height:${(props) => props.theme.size.static450};padding:${(props) => props.theme.size.static150};color:${(props) => props.theme.interaction.recipe400.default};outline:none;&:hover,&:focus{color:${(props) => props.theme.interaction.recipe400.hover};}&:focus{${(props) => createA11yOutlineStyles(props)}}`;\nfunction MenuButtonInternal(props) {\n const { onClick, label } = props;\n return (React.createElement(StyledButton, { onClick: onClick, \"aria-label\": label },\n React.createElement(MenuIcon, { ariaHidden: true })));\n}\nexport const MenuButton = deprecated(MenuButtonInternal, 'The MenuButton is deprecated, please use the CTA with the Menu icon instead. For more details see issue #1115.');\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nexport var Logo = React.forwardRef(Object.assign(function (props, forwardRef) {\n var variant = props.variant || \"default\";\n if (variant === \"default\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M12 22.586c-5.786 0-10.543-4.8-10.543-10.586 0-1.2.214-2.357.6-3.471l6.172 12c.085.171.171.3.385.3.215 0 .3-.129.386-.3l2.871-6.386c.043-.086.086-.129.129-.129.086 0 .086.086.129.129l2.914 6.386c.086.171.171.3.386.3.214 0 .3-.129.385-.3l6.172-12c.385 1.071.6 2.228.6 3.471-.043 5.786-4.8 10.586-10.586 10.586zm0-13.329c-.086 0-.086-.086-.129-.128l-3.3-7.115a10.117 10.117 0 0 1 6.858 0l-3.3 7.115c-.043.042-.043.128-.129.128zm-3.471 7.714c-.086 0-.086-.085-.129-.128L3 6.47c.943-1.542 2.314-2.828 3.9-3.728l3.814 8.228c.086.172.172.215.3.215h1.972c.128 0 .214-.043.3-.215l3.771-8.228c1.586.9 2.957 2.186 3.9 3.728L15.6 16.843c-.043.086-.086.128-.129.128-.085 0-.085-.085-.128-.128L13.286 12.3c-.086-.171-.172-.214-.3-.214h-1.972c-.128 0-.214.043-.3.214l-2.057 4.543c-.043.043-.043.128-.128.128zM12 24c6.643 0 12-5.357 12-12S18.643 0 12 0 0 5.357 0 12s5.357 12 12 12z\" }));\n }\n if (variant === \"large\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"48\", height: \"48\", viewBox: \"0 0 48 48\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M24 45.792c-11.952 0-21.744-9.84-21.744-21.792 0-2.688.48-5.232 1.392-7.632l12.72 25.584c.144.336.384.624.768.624s.624-.288.768-.624l5.856-13.104c.048-.144.144-.288.288-.288s.192.144.288.288l5.856 13.104c.144.336.384.624.768.624s.624-.288.768-.624l12.72-25.584A21.318 21.318 0 0 1 45.84 24C45.744 35.952 35.952 45.792 24 45.792zm0-26.736c-.144 0-.192-.144-.288-.288l-6.816-15.36A20.473 20.473 0 0 1 24 2.16c2.496 0 4.896.432 7.104 1.248l-6.816 15.36c-.096.192-.144.288-.288.288zm-6.96 15.792c-.144 0-.192-.144-.288-.288L5.712 12.288C7.68 9.264 10.32 6.72 13.536 4.944l7.968 17.712c.096.288.336.384.576.384h3.84c.288 0 .48-.048.624-.384l7.968-17.712a22.496 22.496 0 0 1 7.824 7.344L31.2 34.56c-.048.144-.144.288-.288.288s-.192-.144-.288-.288l-4.176-9.504c-.144-.336-.336-.384-.624-.384h-3.84c-.288 0-.48.048-.624.384l-4.032 9.504c-.048.144-.144.288-.288.288zM24 48c13.296 0 24-10.704 24-24S37.296 0 24 0 0 10.704 0 24s10.704 24 24 24z\" }));\n }\n return null;\n}, { displayName: 'Logo' }));\n","import * as React from 'react';\nimport { Logo } from '@volkswagen-onehub/icons-core';\nimport { Breakpoints } from '../helpers/breakpoint';\nimport { styled } from '../theme-provider';\nconst StyledWrapper = styled.span.withConfig({ displayName: \"StyledWrapper\", componentId: \"sc-16id0m5\" }) `display:grid;align-items:center;width:100%;--logo-size:${(props) => props.theme.size.static400};--margin-size:${(props) => parseInt(props.theme.size.static400, 10) / 4}px;@media (min-width: ${Breakpoints.b560}px){--logo-size:${(props) => props.theme.size.static450};--margin-size:${(props) => parseInt(props.theme.size.static450, 10) / 4}px;}@media (min-width: ${Breakpoints.b960}px){--logo-size:${(props) => props.theme.size.static510};--margin-size:${(props) => parseInt(props.theme.size.static510, 10) / 4}px;}@media (min-width: ${Breakpoints.b1920}px){--logo-size:${(props) => props.theme.size.static520};--margin-size:${(props) => parseInt(props.theme.size.static520, 10) / 4}px;}grid-template-columns:${(props) => props.hasClaim\n ? `calc(50vw - ${parseInt(props.theme.size.static400, 10) / 2}px - var(--margin-size))\n\t\tmax-content max-content auto`\n : 'auto max-content auto'};grid-column-gap:var(--margin-size);@media (min-width: ${Breakpoints.b560}px){grid-template-columns:${(props) => props.hasClaim\n ? `calc(50vw - ${parseInt(props.theme.size.static450, 10) / 2}px - var(--margin-size))\n\t\t\tmax-content max-content auto`\n : `auto max-content auto`};}@media (min-width: ${Breakpoints.b960}px){grid-template-columns:calc(${(props) => props.theme.size.grid016} - var(--margin-size)) max-content ${(props) => (props.hasClaim ? 'max-content ' : '')}auto;}@media (min-width: ${Breakpoints.b2560}px){grid-template-columns:calc(${Breakpoints.b2560 / 6}px + 50vw - var(--margin-size)) max-content ${(props) => (props.hasClaim ? 'max-content ' : '')}auto;}::before,::after{content:'';height:${({ theme }) => theme.size.border.heavy};background:${(props) => props.theme.interaction.recipe450.default};}svg{fill:${(props) => props.theme.interaction.recipe450.default};width:var(--logo-size);height:var(--logo-size);}`;\nexport const MovingFrame = (props) => {\n const { claim, logo, logoTitle } = props;\n return (React.createElement(StyledWrapper, { hasClaim: Boolean(claim) },\n logo || React.createElement(Logo, { variant: \"default\", title: logoTitle }),\n claim));\n};\n","import * as React from 'react';\nimport { ChevronDown } from '@volkswagen-onehub/icons-core';\nimport { Text, TextTag, TextColor, TextAppearance } from '../text';\nimport { hexColorToRgba } from '../helpers/color';\nimport { styled, ThemeProvider } from '../theme-provider';\nimport { Checkbox } from '../checkbox';\nimport { Container, ContainerGutter, ContainerWrap } from '../container';\nconst ANIMATION_FUNCTION = '0.3s cubic-bezier(0.14, 1.12, 0.67, 0.99)';\nconst createCssBoxShadow = (themeShadowColor) => {\n const defaultBoxShadow = 'box-shadow: initial;';\n if (!themeShadowColor) {\n return defaultBoxShadow;\n }\n const darkShadowColor = hexColorToRgba(themeShadowColor, 0.1);\n const lightShadowColor = hexColorToRgba(themeShadowColor, 0.05);\n return `box-shadow: 0 8px 32px 0 ${darkShadowColor}, 0 16px 48px 0 ${lightShadowColor};`;\n};\nconst StyledOverlay = styled.div.withConfig({ displayName: \"StyledOverlay\", componentId: \"sc-s4sgrn\" }) `position:absolute;z-index:1;width:100%;padding:${(props) => props.theme.size.static250};background:${(props) => props.theme.global.backgroundColor};${(props) => createCssBoxShadow(props.theme.shadowColor)};opacity:0;transform:translateX(-100vw);&:focus-within{opacity:1;transform:translateX(0);}`;\nconst StyledLegend = styled.legend.withConfig({ displayName: \"StyledLegend\", componentId: \"sc-oqxd84\" }) `position:absolute;opacity:0;transform:translateX(-100vw);`;\nconst StyledButton = styled.div.withConfig({ displayName: \"StyledButton\", componentId: \"sc-1vhoabn\" }) `cursor:pointer;`;\nconst StyledIcon = styled.span.withConfig({ displayName: \"StyledIcon\", componentId: \"sc-17f61o9\" }) `flex:0 0 auto;overflow:visible;text-align:center;transition:${(props) => `transform ${ANIMATION_FUNCTION}, color ${props.theme.animation.timingFunction.cubicOut} ${props.theme.animation.duration.color}`};line-height:0;`;\nconst StyledCountAndIconWrapper = styled.span.withConfig({ displayName: \"StyledCountAndIconWrapper\", componentId: \"sc-12d9n7j\" }) `display:flex;align-items:center;`;\nconst StyledIconWrapper = styled.span.withConfig({ displayName: \"StyledIconWrapper\", componentId: \"sc-1h5ff3f\" }) `position:relative;display:flex;align-items:center;justify-content:center;height:${(props) => props.theme.size.static350};&::before{content:'';display:block;width:42px;height:42px;position:absolute;top:50%;left:50%;transform:translateX(-50%)translateY(-50%);border-radius:50%;}`;\nconst StyledInteractionWrapper = styled.div.withConfig({ displayName: \"StyledInteractionWrapper\", componentId: \"sc-771doc\" }) `display:grid;grid-column-gap:${(props) => props.theme.size.static150};grid-template-columns:auto max-content;align-items:center;width:100%;padding-bottom:${(props) => props.theme.size.static150};cursor:pointer;color:${(props) => props.theme.interaction.recipe450.default};border-bottom:${({ theme }) => theme.size.line.default} solid ${(props) => props.theme.interaction.recipe200.default};&:hover{${StyledIconWrapper}::before{background-color:${(props) => props.theme.hoverIndicatorColor.outlinedElement.default};}}`;\nconst StyledCount = styled.span.withConfig({ displayName: \"StyledCount\", componentId: \"sc-comyon\" }) `box-sizing:content-box;margin-inline-end:${(props) => props.theme.size.static200};min-width:1em;line-height:1em;padding:2px;border-radius:100px;font-size:${(props) => props.theme.textAppearances.copy0100.fontSize};text-align:center;color:#fff;background:${(props) => props.theme.interaction.recipe370.default};`;\nconst StyledMultiSelect = styled.fieldset.withConfig({ displayName: \"StyledMultiSelect\", componentId: \"sc-j1evlo\" }) `margin:0;border:none;position:relative;padding:2px 0;border-top:${({ theme }) => theme.size.line.default} solid transparent;border-bottom:${({ theme }) => theme.size.line.default} solid transparent;:focus-within{${StyledIcon}{transform:rotateX(180deg);}}`;\nconst handleCheckboxOnMouseDown = (event) => {\n event.preventDefault();\n event.currentTarget.focus();\n};\nconst handleOverlayOnMouseDown = (event) => {\n event.preventDefault();\n};\nconst handleNewValue = (value, optionKey) => {\n const newValue = [...value];\n if (value.includes(optionKey)) {\n newValue.splice(value.indexOf(optionKey), 1);\n }\n else {\n newValue.push(optionKey);\n }\n return newValue;\n};\nconst handleMouseDown = (event) => {\n event.preventDefault();\n};\nexport class MultiSelect extends React.Component {\n constructor(props) {\n super(props);\n this.state = { internalValue: props.defaultValue || [] };\n this.firstOption = React.createRef();\n this.multiSelect = React.createRef();\n this.handleClick = this.handleClick.bind(this);\n }\n handleClick(event) {\n const { onClick } = this.props;\n if (this.firstOption &&\n this.firstOption.current &&\n this.multiSelect &&\n this.multiSelect.current) {\n const elementWithFocus = this.multiSelect.current.querySelector(':focus');\n if (elementWithFocus) {\n elementWithFocus.blur();\n return;\n }\n this.firstOption.current.focus();\n }\n onClick && onClick(event);\n }\n render() {\n const { defaultValue, label, name, onChange, onOptionClick, options, value } = this.props;\n const { internalValue } = this.state;\n const optionsElement = Object.entries(options).map((entry, index) => {\n const [key, elementLabel] = entry;\n return (React.createElement(Checkbox, { key: key, value: key, label: elementLabel, ref: index === 0 ? this.firstOption : undefined, defaultChecked: defaultValue && defaultValue.includes(key), checked: value && value.includes(key), onLabelMouseDown: handleCheckboxOnMouseDown, onClick: () => {\n onOptionClick && onOptionClick(key);\n }, onChange: () => {\n if (value) {\n return;\n }\n const newInternalValue = handleNewValue(internalValue, key);\n this.setState({ internalValue: newInternalValue });\n onChange && onChange(newInternalValue);\n }, name: name }));\n });\n const count = value ? value.length : internalValue.length;\n return (React.createElement(StyledMultiSelect, { ref: this.multiSelect },\n React.createElement(StyledLegend, null, label),\n React.createElement(StyledInteractionWrapper, { onClick: this.handleClick, onMouseDown: handleMouseDown, \"aria-hidden\": true },\n React.createElement(StyledButton, null,\n React.createElement(Text, { tag: TextTag.span, color: TextColor.inherit, appearance: TextAppearance.label0200, staticSize: true }, label)),\n React.createElement(StyledCountAndIconWrapper, null,\n count > 0 && React.createElement(StyledCount, null, count),\n React.createElement(StyledIconWrapper, null,\n React.createElement(StyledIcon, null,\n React.createElement(ChevronDown, { variant: \"default\", ariaHidden: true }))))),\n React.createElement(ThemeProvider, { theme: \"main\" },\n React.createElement(StyledOverlay, { onMouseDown: handleOverlayOnMouseDown },\n React.createElement(Container, { gutter: ContainerGutter.static200, wrap: ContainerWrap.always }, optionsElement)))));\n }\n}\n","import * as React from 'react';\nimport Fade from 'react-reveal/Fade';\nimport { css } from 'styled-components';\nimport { Container, ContainerHorizontalAlignment, ContainerVerticalAlignment, ContainerWrap, ContainerGutter, } from '../container';\nimport { Breakpoints } from '../helpers/breakpoint';\nimport { Text, TextAppearance, TextColor } from '../text';\nimport { styled } from '../theme-provider';\nimport { ChevronDown } from '@volkswagen-onehub/icons-core';\nconst animationDuration = 300;\nconst StyledNavigationLevelList = styled.div.withConfig({ displayName: \"StyledNavigationLevelList\", componentId: \"sc-ju1w4n\" }) `position:relative;padding-bottom:${(props) => props.theme.size.static150};`;\nconst StyledNavigationLevelListItem = styled.div.withConfig({ displayName: \"StyledNavigationLevelListItem\", componentId: \"sc-kdwnmt\" }) `:not(:first-child){margin-top:${(props) => props.theme.size.dynamic0100};}@media (min-width: ${Breakpoints.b560}px){display:grid;grid-column-gap:1em;grid-template-columns:1fr 1fr;}`;\nconst StyledIcon = styled(ChevronDown).withConfig({ displayName: \"StyledIcon\", componentId: \"sc-43lik5\" }) `color:${(props) => props.theme.interaction.recipe400.default};transition:transform ${animationDuration}ms ease;transform:${(props) => (props.isOpen ? 'rotateX(180deg)' : 'rotateX(0)')};transform-origin:50% 50%;@media (min-width: ${Breakpoints.b560}px){transform:rotateZ(-90deg);}`;\nconst StyledText = styled.div.withConfig({ displayName: \"StyledText\", componentId: \"sc-1usxyke\" }) `position:relative;::after{content:'';display:block;position:absolute;width:0;height:${({ theme }) => theme.size.line.active};margin-top:${(props) => props.theme.size.static100};background:${(props) => props.theme.interaction.recipe400.checked};transition:width ${animationDuration}ms ease;}${(props) => props.isOpen &&\n `\n\t\t\t::after {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t`};`;\nconst LinkStyle = css `display:block;text-decoration:none;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;@media (hover: hover){&:hover{color:${(props) => props.theme.interaction.recipe100.hover};${StyledIcon}{color:${(props) => props.theme.interaction.recipe100.hover};}}}:focus{outline:0;color:${(props) => props.theme.interaction.recipe100.hover};${StyledIcon}{color:${(props) => props.theme.interaction.recipe100.hover};}}${(props) => props.isOpen && css `@media (hover: hover){color:${props.theme.interaction.recipe100.checked};${StyledIcon}{color:${props.theme.interaction.recipe100.checked};}&:hover,&:focus{color:${props.theme.interaction.recipe100.checked};${StyledIcon}{color:${props.theme.interaction.recipe100.checked};}}}`};`;\nconst StyledLink = styled.a.withConfig({ displayName: \"StyledLink\", componentId: \"sc-1qpvfum\" }) `${LinkStyle}`;\nconst StyledButton = styled.button.withConfig({ displayName: \"StyledButton\", componentId: \"sc-1p7ikll\" }) `${LinkStyle} border:0;padding:0;width:100%;background:transparent;`;\nconst StyledSecondLevelList = styled.div.withConfig({ displayName: \"StyledSecondLevelList\", componentId: \"sc-1rmprda\" }) `${(props) => props.isOpen && css `padding:0 ${props.theme.size.grid001} ${props.theme.size.dynamic0100};`};${StyledLink}{display:inline-block;margin-top:${(props) => props.theme.size.dynamic0100};}@media (min-width: ${Breakpoints.b560}px){position:absolute;top:0;padding:0;${StyledLink}{:first-child{margin-top:0;}}}`;\nconst StyledSecondLevelListInner = styled.div.withConfig({ displayName: \"StyledSecondLevelListInner\", componentId: \"sc-8nshfb\" }) `display:flex;flex-direction:column;`;\nexport const NavigationLevelListItem = (props) => {\n const { id, isOpen = false, name, url, subItems, onClick } = props;\n const firstLevelId = `${id}_firstlevel`;\n const secondLevelId = `${id}_secondlevel`;\n return (React.createElement(StyledNavigationLevelListItem, { id: id },\n React.createElement(\"div\", null, subItems ? (React.createElement(StyledButton, { id: firstLevelId, isOpen: isOpen, onClick: onClick, \"aria-expanded\": isOpen, \"aria-controls\": secondLevelId },\n React.createElement(Container, { wrap: ContainerWrap.never, horizontalAlign: ContainerHorizontalAlignment.spaceBetween, verticalAlign: ContainerVerticalAlignment.center, gutter: ContainerGutter.grid001 },\n React.createElement(StyledText, { isOpen: isOpen },\n React.createElement(Text, { color: TextColor.inherit, appearance: TextAppearance.headline0250 }, name)),\n React.createElement(StyledIcon, { isOpen: isOpen, variant: \"small\", ariaHidden: true })))) : (React.createElement(StyledLink, { href: url },\n React.createElement(Text, { color: TextColor.inherit, appearance: TextAppearance.headline0250 }, name)))),\n React.createElement(\"div\", null,\n React.createElement(StyledSecondLevelList, { id: secondLevelId, isOpen: isOpen, \"aria-hidden\": !isOpen, \"aria-labelledby\": firstLevelId }, isOpen && (React.createElement(Fade, { duration: animationDuration },\n React.createElement(StyledSecondLevelListInner, null, (subItems || []).map((item) => (React.createElement(StyledLink, { href: item.url, key: item.name },\n React.createElement(Text, { color: TextColor.inherit, appearance: TextAppearance.headline0250 }, item.name)))))))))));\n};\nNavigationLevelListItem.displayName = 'NavigationLevelListItem';\nexport const NavigationLevelList = (props) => (React.createElement(StyledNavigationLevelList, null, props.children));\nNavigationLevelList.displayName = 'NavigationLevelList';\n","import * as React from 'react';\nimport { css, styled } from '../theme-provider';\nconst StyledReferenceBadge = styled.button.withConfig({ displayName: \"StyledReferenceBadge\", componentId: \"sc-q385m9\" }) `background:none;border-radius:100px;border:0;cursor:pointer;display:inline;font-weight:initial;line-height:1;margin:0;padding:0;white-space:nowrap;${({ theme, variant }) => variant === 'default' && css `min-width:1.25em;padding:0.125em 0.35em;font-size:${theme.textAppearances.label0100.static.fontSize};`} ${({ theme, variant }) => variant === 'large' && css `min-width:1.5em;padding:0.25em 0.45em;font-size:${theme.textAppearances.label0150.static.fontSize};`} color:${({ theme }) => theme.referenceBadge.textColor.default};background:${({ theme }) => theme.referenceBadge.backgroundColor.default};box-shadow:inset 0 0 0 1px ${({ theme }) => theme.referenceBadge.outlineColor};&:hover,&:active{color:${({ theme }) => theme.referenceBadge.textColor.active};background:${({ theme }) => theme.referenceBadge.backgroundColor.active};outline:0;}&:focus{box-shadow:inset 0 0 0 1px ${({ theme }) => theme.interaction.recipe450.default};background:${({ theme }) => theme.focus.background};color:${({ theme }) => theme.focus.foreground};outline:none;}`;\nexport const ReferenceBadge = React.forwardRef((props, forwardRef) => {\n const { children, onClick, ariaLabel, variant = 'default' } = props;\n return (React.createElement(StyledReferenceBadge, { onClick: onClick, \"aria-label\": ariaLabel, ref: forwardRef, variant: variant }, children));\n});\nReferenceBadge.displayName = 'ReferenceBadge';\n","/* @jsx h */\n/**\n * markdown-to-jsx@6 is a fork of [simple-markdown v0.2.2](https://github.com/Khan/simple-markdown)\n * from Khan Academy. Thank you Khan devs for making such an awesome and extensible\n * parsing infra... without it, half of the optimizations here wouldn't be feasible. 🙏🏼\n */\nimport React from 'react';\nimport unquote from 'unquote';\n\n/** TODO: Drop for React 16? */\nconst ATTRIBUTE_TO_JSX_PROP_MAP = {\n accesskey: 'accessKey',\n allowfullscreen: 'allowFullScreen',\n allowtransparency: 'allowTransparency',\n autocomplete: 'autoComplete',\n autofocus: 'autoFocus',\n autoplay: 'autoPlay',\n cellpadding: 'cellPadding',\n cellspacing: 'cellSpacing',\n charset: 'charSet',\n class: 'className',\n classid: 'classId',\n colspan: 'colSpan',\n contenteditable: 'contentEditable',\n contextmenu: 'contextMenu',\n crossorigin: 'crossOrigin',\n enctype: 'encType',\n for: 'htmlFor',\n formaction: 'formAction',\n formenctype: 'formEncType',\n formmethod: 'formMethod',\n formnovalidate: 'formNoValidate',\n formtarget: 'formTarget',\n frameborder: 'frameBorder',\n hreflang: 'hrefLang',\n inputmode: 'inputMode',\n keyparams: 'keyParams',\n keytype: 'keyType',\n marginheight: 'marginHeight',\n marginwidth: 'marginWidth',\n maxlength: 'maxLength',\n mediagroup: 'mediaGroup',\n minlength: 'minLength',\n novalidate: 'noValidate',\n radiogroup: 'radioGroup',\n readonly: 'readOnly',\n rowspan: 'rowSpan',\n spellcheck: 'spellCheck',\n srcdoc: 'srcDoc',\n srclang: 'srcLang',\n srcset: 'srcSet',\n tabindex: 'tabIndex',\n usemap: 'useMap',\n};\n\nconst namedCodesToUnicode = {\n amp: '\\u0026',\n apos: '\\u0027',\n gt: '\\u003e',\n lt: '\\u003c',\n nbsp: '\\u00a0',\n quot: '\\u201c',\n};\n\nconst DO_NOT_PROCESS_HTML_ELEMENTS = ['style', 'script'];\n\n/**\n * the attribute extractor regex looks for a valid attribute name,\n * followed by an equal sign (whitespace around the equal sign is allowed), followed\n * by one of the following:\n *\n * 1. a single quote-bounded string, e.g. 'foo'\n * 2. a double quote-bounded string, e.g. \"bar\"\n * 3. an interpolation, e.g. {something}\n *\n * JSX can be be interpolated into itself and is passed through the compiler using\n * the same options and setup as the current run.\n *\n * } />\n * ==================\n * ↳ children: []\n *\n * Otherwise, interpolations are handled as strings or simple booleans\n * unless HTML syntax is detected.\n *\n * \n * ===== ====\n * ↓ ↳ disabled: true\n * ↳ color: \"green\"\n *\n * Numbers are not parsed at this time due to complexities around int, float,\n * and the upcoming bigint functionality that would make handling it unwieldy.\n * Parse the string in your component as desired.\n *\n * \n * ==================\n * ↳ someBigNumber: \"123456789123456789\"\n */\nconst ATTR_EXTRACTOR_R = /([-A-Z0-9_:]+)(?:\\s*=\\s*(?:(?:\"((?:\\\\.|[^\"])*)\")|(?:'((?:\\\\.|[^'])*)')|(?:\\{((?:\\\\.|{[^}]*?}|[^}])*)\\})))?/gi;\n\n/** TODO: Write explainers for each of these */\n\nconst AUTOLINK_MAILTO_CHECK_R = /mailto:/i;\nconst BLOCK_END_R = /\\n{2,}$/;\nconst BLOCKQUOTE_R = /^( *>[^\\n]+(\\n[^\\n]+)*\\n*)+\\n{2,}/;\nconst BLOCKQUOTE_TRIM_LEFT_MULTILINE_R = /^ *> ?/gm;\nconst BREAK_LINE_R = /^ {2,}\\n/;\nconst BREAK_THEMATIC_R = /^(?:( *[-*_]) *){3,}(?:\\n *)+\\n/;\nconst CODE_BLOCK_FENCED_R = /^\\s*(`{3,}|~{3,}) *(\\S+)? *\\n([\\s\\S]+?)\\s*\\1 *(?:\\n *)+\\n?/;\nconst CODE_BLOCK_R = /^(?: {4}[^\\n]+\\n*)+(?:\\n *)+\\n?/;\nconst CODE_INLINE_R = /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/;\nconst CONSECUTIVE_NEWLINE_R = /^(?:\\n *)*\\n/;\nconst CR_NEWLINE_R = /\\r\\n?/g;\nconst FOOTNOTE_R = /^\\[\\^([^\\]]+)](:.*)\\n/;\nconst FOOTNOTE_REFERENCE_R = /^\\[\\^([^\\]]+)]/;\nconst FORMFEED_R = /\\f/g;\nconst GFM_TASK_R = /^\\s*?\\[(x|\\s)\\]/;\nconst HEADING_R = /^ *(#{1,6}) *([^\\n]+)\\n{0,2}/;\nconst HEADING_SETEXT_R = /^([^\\n]+)\\n *(=|-){3,} *(?:\\n *)+\\n/;\n\n/**\n * Explanation:\n *\n * 1. Look for a starting tag, preceeded by any amount of spaces\n * ^ *<\n *\n * 2. Capture the tag name (capture 1)\n * ([^ >/]+)\n *\n * 3. Ignore a space after the starting tag and capture the attribute portion of the tag (capture 2)\n * ?([^>]*)\\/{0}>\n *\n * 4. Ensure a matching closing tag is present in the rest of the input string\n * (?=[\\s\\S]*<\\/\\1>)\n *\n * 5. Capture everything until the matching closing tag -- this might include additional pairs\n * of the same tag type found in step 2 (capture 3)\n * ((?:[\\s\\S]*?(?:<\\1[^>]*>[\\s\\S]*?<\\/\\1>)*[\\s\\S]*?)*?)<\\/\\1>\n *\n * 6. Capture excess newlines afterward\n * \\n*\n */\nconst HTML_BLOCK_ELEMENT_R = /^ *(?!<[a-z][^ >/]* ?\\/>)<([a-z][^ >/]*) ?([^>]*)\\/{0}>\\n?(\\s*(?:<\\1[^>]*?>[\\s\\S]*?<\\/\\1>|(?!<\\1)[\\s\\S])*?)<\\/\\1>\\n*/i;\n\nconst HTML_CHAR_CODE_R = /&([a-z]+);/g;\n\nconst HTML_COMMENT_R = /^/;\n\n/**\n * borrowed from React 15(https://github.com/facebook/react/blob/894d20744cba99383ffd847dbd5b6e0800355a5c/src/renderers/dom/shared/HTMLDOMPropertyConfig.js)\n */\nconst HTML_CUSTOM_ATTR_R = /^(data|aria|x)-[a-z_][a-z\\d_.-]*$/;\n\nconst HTML_SELF_CLOSING_ELEMENT_R = /^ *<([a-z][a-z0-9:]*)(?:\\s+((?:<.*?>|[^>])*))?\\/?>(?!<\\/\\1>)(\\s*\\n)?/i;\nconst INTERPOLATION_R = /^\\{.*\\}$/;\nconst LINK_AUTOLINK_BARE_URL_R = /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/;\nconst LINK_AUTOLINK_MAILTO_R = /^<([^ >]+@[^ >]+)>/;\nconst LINK_AUTOLINK_R = /^<([^ >]+:\\/[^ >]+)>/;\nconst LIST_ITEM_END_R = / *\\n+$/;\nconst LIST_LOOKBEHIND_R = /(?:^|\\n)( *)$/;\nconst CAPTURE_LETTER_AFTER_HYPHEN = /-([a-z])?/gi;\nconst NP_TABLE_R = /^(.*\\|?.*)\\n *(\\|? *[-:]+ *\\|[-| :]*)\\n((?:.*\\|.*\\n)*)\\n?/;\nconst PARAGRAPH_R = /^((?:[^\\n]|\\n(?! *\\n))+)(?:\\n *)+\\n/;\nconst REFERENCE_IMAGE_OR_LINK = /^\\[([^\\]]*)\\]:\\s*(\\S+)\\s*(\"([^\"]*)\")?/;\nconst REFERENCE_IMAGE_R = /^!\\[([^\\]]*)\\] ?\\[([^\\]]*)\\]/;\nconst REFERENCE_LINK_R = /^\\[([^\\]]*)\\] ?\\[([^\\]]*)\\]/;\nconst SQUARE_BRACKETS_R = /(\\[|\\])/g;\nconst SHOULD_RENDER_AS_BLOCK_R = /(\\n|^[-*]\\s|^#|^ {2,}|^-{2,}|^>\\s)/;\nconst TAB_R = /\\t/g;\nconst TABLE_SEPARATOR_R = /^ *\\| */;\nconst TABLE_TRIM_PIPES = /(^ *\\||\\| *$)/g;\nconst TABLE_CELL_END_TRIM = / *$/;\nconst TABLE_CENTER_ALIGN = /^ *:-+: *$/;\nconst TABLE_LEFT_ALIGN = /^ *:-+ *$/;\nconst TABLE_RIGHT_ALIGN = /^ *-+: *$/;\n\nconst TEXT_BOLD_R = /^([*_])\\1((?:\\[.*?\\][([].*?[)\\]]|<.*?>(?:.*?<.*?>)?|`.*?`|~+.*?~+|.)*?)\\1\\1(?!\\1)/;\nconst TEXT_EMPHASIZED_R = /^([*_])((?:\\[.*?\\][([].*?[)\\]]|<.*?>(?:.*?<.*?>)?|`.*?`|~+.*?~+|.)*?)\\1(?!\\1)/;\nconst TEXT_STRIKETHROUGHED_R = /^~~((?:\\[.*?\\]|<.*?>(?:.*?<.*?>)?|`.*?`|.)*?)~~/;\n\nconst TEXT_ESCAPED_R = /^\\\\([^0-9A-Za-z\\s])/;\nconst TEXT_PLAIN_R = /^[\\s\\S]+?(?=[^0-9A-Z\\s\\u00c0-\\uffff&;.()'\"]|\\d+\\.|\\n\\n| {2,}\\n|\\w+:\\S|$)/i;\nconst TRIM_NEWLINES_AND_TRAILING_WHITESPACE_R = /(^\\n+|\\n+$|\\s+$)/g;\n\nconst HTML_LEFT_TRIM_AMOUNT_R = /^([ \\t]*)/;\n\nconst UNESCAPE_URL_R = /\\\\([^0-9A-Z\\s])/gi;\n\n// recognize a `*` `-`, `+`, `1.`, `2.`... list bullet\nconst LIST_BULLET = '(?:[*+-]|\\\\d+\\\\.)';\n\n// recognize the start of a list item:\n// leading space plus a bullet plus a space (` * `)\nconst LIST_ITEM_PREFIX = '( *)(' + LIST_BULLET + ') +';\nconst LIST_ITEM_PREFIX_R = new RegExp('^' + LIST_ITEM_PREFIX);\n\n// recognize an individual list item:\n// * hi\n// this is part of the same item\n//\n// as is this, which is a new paragraph in the same item\n//\n// * but this is not part of the same item\nconst LIST_ITEM_R = new RegExp(\n LIST_ITEM_PREFIX +\n '[^\\\\n]*(?:\\\\n' +\n '(?!\\\\1' +\n LIST_BULLET +\n ' )[^\\\\n]*)*(\\\\n|$)',\n 'gm'\n);\n\n// check whether a list item has paragraphs: if it does,\n// we leave the newlines at the end\nconst LIST_R = new RegExp(\n '^( *)(' +\n LIST_BULLET +\n ') ' +\n '[\\\\s\\\\S]+?(?:\\\\n{2,}(?! )' +\n '(?!\\\\1' +\n LIST_BULLET +\n ' (?!' +\n LIST_BULLET +\n ' ))\\\\n*' +\n // the \\\\s*$ here is so that we can parse the inside of nested\n // lists, where our content might end before we receive two `\\n`s\n '|\\\\s*\\\\n*$)'\n);\n\nconst LINK_INSIDE = '(?:\\\\[[^\\\\]]*\\\\]|[^\\\\[\\\\]]|\\\\](?=[^\\\\[]*\\\\]))*';\nconst LINK_HREF_AND_TITLE =\n '\\\\s*?(?:\\\\s+[\\'\"]([\\\\s\\\\S]*?)[\\'\"])?\\\\s*';\n\nconst LINK_R = new RegExp(\n '^\\\\[(' + LINK_INSIDE + ')\\\\]\\\\(' + LINK_HREF_AND_TITLE + '\\\\)'\n);\n\nconst IMAGE_R = new RegExp(\n '^!\\\\[(' + LINK_INSIDE + ')\\\\]\\\\(' + LINK_HREF_AND_TITLE + '\\\\)'\n);\n\nconst BLOCK_SYNTAXES = [\n BLOCKQUOTE_R,\n CODE_BLOCK_R,\n CODE_BLOCK_FENCED_R,\n HEADING_R,\n HEADING_SETEXT_R,\n HTML_BLOCK_ELEMENT_R,\n HTML_COMMENT_R,\n HTML_SELF_CLOSING_ELEMENT_R,\n LIST_ITEM_R,\n LIST_R,\n NP_TABLE_R,\n PARAGRAPH_R,\n];\n\nfunction containsBlockSyntax(input) {\n return BLOCK_SYNTAXES.some(r => r.test(input));\n}\n\n// based on https://stackoverflow.com/a/18123682/1141611\n// not complete, but probably good enough\nfunction slugify(str) {\n return str\n .replace(/[ÀÁÂÃÄÅàáâãäåæÆ]/g, 'a')\n .replace(/[çÇ]/g, 'c')\n .replace(/[ðÐ]/g, 'd')\n .replace(/[ÈÉÊËéèêë]/g, 'e')\n .replace(/[ÏïÎîÍíÌì]/g, 'i')\n .replace(/[Ññ]/g, 'n')\n .replace(/[øØœŒÕõÔôÓóÒò]/g, 'o')\n .replace(/[ÜüÛûÚúÙù]/g, 'u')\n .replace(/[ŸÿÝý]/g, 'y')\n .replace(/[^a-z0-9- ]/gi, '')\n .replace(/ /gi, '-')\n .toLowerCase();\n}\n\nfunction parseTableAlignCapture(alignCapture) {\n if (TABLE_RIGHT_ALIGN.test(alignCapture)) {\n return 'right';\n } else if (TABLE_CENTER_ALIGN.test(alignCapture)) {\n return 'center';\n } else if (TABLE_LEFT_ALIGN.test(alignCapture)) {\n return 'left';\n }\n\n return null;\n}\n\nfunction parseTableRow(source, parse, state) {\n const prevInTable = state.inTable;\n state.inTable = true;\n const tableRow = parse(source.trim(), state);\n state.inTable = prevInTable;\n\n let cells = [[]];\n tableRow.forEach(function(node, i) {\n if (node.type === 'tableSeparator') {\n // Filter out empty table separators at the start/end:\n if (i !== 0 && i !== tableRow.length - 1) {\n // Split the current row:\n cells.push([]);\n }\n } else {\n if (node.type === 'text' && (\n tableRow[i + 1] == null ||\n tableRow[i + 1].type === 'tableSeparator'\n )) {\n node.content = node.content.replace(TABLE_CELL_END_TRIM, \"\");\n }\n cells[cells.length - 1].push(node);\n }\n });\n return cells;\n}\n\nfunction parseTableAlign(source /*, parse, state*/) {\n const alignText = source\n .replace(TABLE_TRIM_PIPES, '')\n .split('|');\n\n return alignText.map(parseTableAlignCapture);\n}\n\nfunction parseTableCells(source, parse, state) {\n const rowsText = source\n .trim()\n .split('\\n');\n\n return rowsText.map(function(rowText) {\n return parseTableRow(rowText, parse, state);\n });\n}\n\nfunction parseTable(capture, parse, state) {\n state.inline = true;\n const header = parseTableRow(capture[1], parse, state);\n const align = parseTableAlign(capture[2], parse, state);\n const cells = parseTableCells(capture[3], parse, state);\n state.inline = false;\n\n return {\n align: align,\n cells: cells,\n header: header,\n type: 'table',\n };\n}\n\nfunction getTableStyle(node, colIndex) {\n return node.align[colIndex] == null\n ? {}\n : {\n textAlign: node.align[colIndex],\n };\n}\n\n/** TODO: remove for react 16 */\nfunction normalizeAttributeKey(key) {\n const hyphenIndex = key.indexOf('-');\n\n if (hyphenIndex !== -1 && key.match(HTML_CUSTOM_ATTR_R) === null) {\n key = key.replace(CAPTURE_LETTER_AFTER_HYPHEN, function(_, letter) {\n return letter.toUpperCase();\n });\n }\n\n return key;\n}\n\nfunction attributeValueToJSXPropValue(key, value) {\n if (key === 'style') {\n return value.split(/;\\s?/).reduce(function(styles, kvPair) {\n const key = kvPair.slice(0, kvPair.indexOf(':'));\n\n // snake-case to camelCase\n // also handles PascalCasing vendor prefixes\n const camelCasedKey = key.replace(/(-[a-z])/g, substr =>\n substr[1].toUpperCase()\n );\n\n // key.length + 1 to skip over the colon\n styles[camelCasedKey] = kvPair.slice(key.length + 1).trim();\n\n return styles;\n }, {});\n } else if (key === 'href') {\n return sanitizeUrl(value)\n } else if (value.match(INTERPOLATION_R)) {\n // return as a string and let the consumer decide what to do with it\n value = value.slice(1, value.length - 1);\n }\n\n if (value === 'true') {\n return true;\n } else if (value === 'false') {\n return false;\n }\n\n return value;\n}\n\nfunction normalizeWhitespace(source) {\n return source\n .replace(CR_NEWLINE_R, '\\n')\n .replace(FORMFEED_R, '')\n .replace(TAB_R, ' ');\n}\n\n/**\n * Creates a parser for a given set of rules, with the precedence\n * specified as a list of rules.\n *\n * @rules: an object containing\n * rule type -> {match, order, parse} objects\n * (lower order is higher precedence)\n * (Note: `order` is added to defaultRules after creation so that\n * the `order` of defaultRules in the source matches the `order`\n * of defaultRules in terms of `order` fields.)\n *\n * @returns The resulting parse function, with the following parameters:\n * @source: the input source string to be parsed\n * @state: an optional object to be threaded through parse\n * calls. Allows clients to add stateful operations to\n * parsing, such as keeping track of how many levels deep\n * some nesting is. For an example use-case, see passage-ref\n * parsing in src/widgets/passage/passage-markdown.jsx\n */\nfunction parserFor(rules) {\n // Sorts rules in order of increasing order, then\n // ascending rule name in case of ties.\n let ruleList = Object.keys(rules);\n\n /* istanbul ignore next */\n if (process.env.NODE_ENV !== 'production') {\n ruleList.forEach(function(type) {\n let order = rules[type].order;\n if (\n process.env.NODE_ENV !== 'production' &&\n (typeof order !== 'number' || !isFinite(order))\n ) {\n console.warn(\n 'markdown-to-jsx: Invalid order for rule `' + type + '`: ' + order\n );\n }\n });\n }\n\n ruleList.sort(function(typeA, typeB) {\n let orderA = rules[typeA].order;\n let orderB = rules[typeB].order;\n\n // First sort based on increasing order\n if (orderA !== orderB) {\n return orderA - orderB;\n\n // Then based on increasing unicode lexicographic ordering\n } else if (typeA < typeB) {\n return -1;\n }\n\n return 1;\n });\n\n function nestedParse(source, state) {\n let result = [];\n\n // We store the previous capture so that match functions can\n // use some limited amount of lookbehind. Lists use this to\n // ensure they don't match arbitrary '- ' or '* ' in inline\n // text (see the list rule for more information).\n let prevCapture = '';\n while (source) {\n let i = 0;\n while (i < ruleList.length) {\n const ruleType = ruleList[i];\n const rule = rules[ruleType];\n const capture = rule.match(source, state, prevCapture);\n\n if (capture) {\n const currCaptureString = capture[0];\n source = source.substring(currCaptureString.length);\n const parsed = rule.parse(capture, nestedParse, state);\n\n // We also let rules override the default type of\n // their parsed node if they would like to, so that\n // there can be a single output function for all links,\n // even if there are several rules to parse them.\n if (parsed.type == null) {\n parsed.type = ruleType;\n }\n\n result.push(parsed);\n\n prevCapture = currCaptureString;\n break;\n }\n\n i++;\n }\n }\n\n return result;\n }\n\n return function outerParse(source, state) {\n return nestedParse(normalizeWhitespace(source), state);\n };\n}\n\n// Creates a match function for an inline scoped or simple element from a regex\nfunction inlineRegex(regex) {\n return function match(source, state) {\n if (state.inline) {\n return regex.exec(source);\n } else {\n return null;\n }\n };\n}\n\n// basically any inline element except links\nfunction simpleInlineRegex(regex) {\n return function match(source, state) {\n if (state.inline || state.simple) {\n return regex.exec(source);\n } else {\n return null;\n }\n };\n}\n\n// Creates a match function for a block scoped element from a regex\nfunction blockRegex(regex) {\n return function match(source, state) {\n if (state.inline || state.simple) {\n return null;\n } else {\n return regex.exec(source);\n }\n };\n}\n\n// Creates a match function from a regex, ignoring block/inline scope\nfunction anyScopeRegex(regex) {\n return function match(source /*, state*/) {\n return regex.exec(source);\n };\n}\n\nfunction reactFor(outputFunc) {\n return function nestedReactOutput(ast, state) {\n state = state || {};\n if (Array.isArray(ast)) {\n const oldKey = state.key;\n const result = [];\n\n // map nestedOutput over the ast, except group any text\n // nodes together into a single string output.\n let lastWasString = false;\n\n for (let i = 0; i < ast.length; i++) {\n state.key = i;\n\n const nodeOut = nestedReactOutput(ast[i], state);\n const isString = typeof nodeOut === 'string';\n\n if (isString && lastWasString) {\n result[result.length - 1] += nodeOut;\n } else {\n result.push(nodeOut);\n }\n\n lastWasString = isString;\n }\n\n state.key = oldKey;\n\n return result;\n }\n\n return outputFunc(ast, nestedReactOutput, state);\n };\n}\n\nfunction sanitizeUrl(url) {\n try {\n const decoded = decodeURIComponent(url)\n .replace(/[^A-Za-z0-9/:]/g, '');\n\n if (decoded.match(/^\\s*(javascript|vbscript|data):/i)) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'Anchor URL contains an unsafe JavaScript/VBScript/data expression, it will not be rendered.',\n decoded\n );\n }\n\n return null;\n }\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'Anchor URL could not be decoded due to malformed syntax or characters, it will not be rendered.',\n url\n );\n }\n\n // decodeURIComponent sometimes throws a URIError\n // See `decodeURIComponent('a%AFc');`\n // http://stackoverflow.com/questions/9064536/javascript-decodeuricomponent-malformed-uri-exception\n return null;\n }\n\n return url;\n}\n\nfunction unescapeUrl(rawUrlString) {\n return rawUrlString.replace(UNESCAPE_URL_R, '$1');\n}\n\n/**\n * Everything inline, including links.\n */\nfunction parseInline(parse, content, state) {\n const isCurrentlyInline = state.inline || false;\n const isCurrentlySimple = state.simple || false;\n state.inline = true;\n state.simple = true;\n const result = parse(content, state);\n state.inline = isCurrentlyInline;\n state.simple = isCurrentlySimple;\n return result;\n}\n\n/**\n * Anything inline that isn't a link.\n */\nfunction parseSimpleInline(parse, content, state) {\n const isCurrentlyInline = state.inline || false;\n const isCurrentlySimple = state.simple || false;\n state.inline = false;\n state.simple = true;\n const result = parse(content, state);\n state.inline = isCurrentlyInline;\n state.simple = isCurrentlySimple;\n return result;\n}\n\nfunction parseBlock(parse, content, state) {\n state.inline = false;\n return parse(content + '\\n\\n', state);\n}\n\nfunction parseCaptureInline(capture, parse, state) {\n return {\n content: parseInline(parse, capture[1], state),\n };\n}\n\nfunction captureNothing() {\n return {};\n}\n\nfunction renderNothing() {\n return null;\n}\n\nfunction ruleOutput(rules) {\n return function nestedRuleOutput(ast, outputFunc, state) {\n return rules[ast.type].react(ast, outputFunc, state);\n };\n}\n\nfunction cx(...args) {\n return args.filter(Boolean).join(' ');\n}\n\nfunction get(src, path, fb) {\n let ptr = src;\n const frags = path.split('.');\n\n while (frags.length) {\n ptr = ptr[frags[0]];\n\n if (ptr === undefined) break;\n else frags.shift();\n }\n\n return ptr || fb;\n}\n\nfunction getTag(tag, overrides) {\n const override = get(overrides, tag);\n\n if (!override) return tag;\n\n return typeof override === 'function' || (typeof override === 'object' && 'render' in override)\n ? override\n : get(overrides, `${tag}.component`, tag);\n}\n\n/**\n * anything that must scan the tree before everything else\n */\nconst PARSE_PRIORITY_MAX = 1;\n\n/**\n * scans for block-level constructs\n */\nconst PARSE_PRIORITY_HIGH = 2;\n\n/**\n * inline w/ more priority than other inline\n */\nconst PARSE_PRIORITY_MED = 3;\n\n/**\n * inline elements\n */\nconst PARSE_PRIORITY_LOW = 4;\n\n/**\n * bare text and stuff that is considered leftovers\n */\nconst PARSE_PRIORITY_MIN = 5;\n\nexport function compiler(markdown, options) {\n options = options || {};\n options.overrides = options.overrides || {};\n options.slugify = options.slugify || slugify;\n options.namedCodesToUnicode = options.namedCodesToUnicode \n ? {...namedCodesToUnicode, ...options.namedCodesToUnicode}\n : namedCodesToUnicode;\n\n const createElementFn = options.createElement || React.createElement;\n\n // eslint-disable-next-line no-unused-vars\n function h(tag, props, ...children) {\n const overrideProps = get(options.overrides, `${tag}.props`, {});\n\n return createElementFn(\n getTag(tag, options.overrides),\n {\n ...props,\n ...overrideProps,\n className:\n cx(props && props.className, overrideProps.className) || undefined,\n },\n ...children\n );\n }\n\n function compile(input) {\n let inline = false;\n\n if (options.forceInline) {\n inline = true;\n } else if (!options.forceBlock) {\n /**\n * should not contain any block-level markdown like newlines, lists, headings,\n * thematic breaks, blockquotes, tables, etc\n */\n inline = SHOULD_RENDER_AS_BLOCK_R.test(input) === false;\n }\n\n const arr = emitter(\n parser(\n inline\n ? input\n : `${input.replace(TRIM_NEWLINES_AND_TRAILING_WHITESPACE_R, '')}\\n\\n`,\n { inline }\n )\n );\n\n let jsx;\n if (arr.length > 1) {\n jsx = inline ? {arr} :
{arr}
;\n } else if (arr.length === 1) {\n jsx = arr[0];\n\n // TODO: remove this for React 16\n if (typeof jsx === 'string') {\n jsx = {jsx};\n }\n } else {\n // TODO: return null for React 16\n jsx = ;\n }\n\n return jsx;\n }\n\n function attrStringToMap(str) {\n const attributes = str.match(ATTR_EXTRACTOR_R);\n\n return attributes\n ? attributes.reduce(function(map, raw, index) {\n const delimiterIdx = raw.indexOf('=');\n\n if (delimiterIdx !== -1) {\n const key = normalizeAttributeKey(\n raw.slice(0, delimiterIdx)\n ).trim();\n const value = unquote(raw.slice(delimiterIdx + 1).trim());\n\n const mappedKey = ATTRIBUTE_TO_JSX_PROP_MAP[key] || key;\n const normalizedValue = (map[\n mappedKey\n ] = attributeValueToJSXPropValue(key, value));\n\n if (\n HTML_BLOCK_ELEMENT_R.test(normalizedValue) ||\n HTML_SELF_CLOSING_ELEMENT_R.test(normalizedValue)\n ) {\n map[mappedKey] = React.cloneElement(\n compile(normalizedValue.trim()),\n { key: index }\n );\n }\n } else if (raw !== 'style') {\n map[ATTRIBUTE_TO_JSX_PROP_MAP[raw] || raw] = true;\n }\n\n return map;\n }, {})\n : undefined;\n }\n\n function stripHtmlComments(html) {\n return html.replace(/)/g, '')\n }\n\n /* istanbul ignore next */\n if (process.env.NODE_ENV !== 'production') {\n if (typeof markdown !== 'string') {\n throw new Error(`markdown-to-jsx: the first argument must be\n a string`);\n }\n\n if (\n Object.prototype.toString.call(options.overrides) !== '[object Object]'\n ) {\n throw new Error(`markdown-to-jsx: options.overrides (second argument property) must be\n undefined or an object literal with shape:\n {\n htmltagname: {\n component: string|ReactComponent(optional),\n props: object(optional)\n }\n }`);\n }\n }\n\n const footnotes = [];\n const refs = {};\n\n /**\n * each rule's react() output function goes through our custom h() JSX pragma;\n * this allows the override functionality to be automatically applied\n */\n const rules = {\n blockQuote: {\n match: blockRegex(BLOCKQUOTE_R),\n order: PARSE_PRIORITY_HIGH,\n parse(capture, parse, state) {\n return {\n content: parse(\n capture[0].replace(BLOCKQUOTE_TRIM_LEFT_MULTILINE_R, ''),\n state\n ),\n };\n },\n react(node, output, state) {\n return (\n
{output(node.content, state)}
\n );\n },\n },\n\n breakLine: {\n match: anyScopeRegex(BREAK_LINE_R),\n order: PARSE_PRIORITY_HIGH,\n parse: captureNothing,\n react(_, __, state) {\n return
;\n },\n },\n\n breakThematic: {\n match: blockRegex(BREAK_THEMATIC_R),\n order: PARSE_PRIORITY_HIGH,\n parse: captureNothing,\n react(_, __, state) {\n return
;\n },\n },\n\n codeBlock: {\n match: blockRegex(CODE_BLOCK_R),\n order: PARSE_PRIORITY_MAX,\n parse(capture /*, parse, state*/) {\n let content = capture[0].replace(/^ {4}/gm, '').replace(/\\n+$/, '');\n return {\n content: content,\n lang: undefined,\n };\n },\n\n react(node, output, state) {\n return (\n
\n            \n              {node.content}\n            \n          
\n );\n },\n },\n\n codeFenced: {\n match: blockRegex(CODE_BLOCK_FENCED_R),\n order: PARSE_PRIORITY_MAX,\n parse(capture /*, parse, state*/) {\n return {\n content: capture[3],\n lang: capture[2] || undefined,\n type: 'codeBlock',\n };\n },\n },\n\n codeInline: {\n match: simpleInlineRegex(CODE_INLINE_R),\n order: PARSE_PRIORITY_LOW,\n parse(capture /*, parse, state*/) {\n return {\n content: capture[2],\n };\n },\n react(node, output, state) {\n return {node.content};\n },\n },\n\n /**\n * footnotes are emitted at the end of compilation in a special
block\n */\n footnote: {\n match: blockRegex(FOOTNOTE_R),\n order: PARSE_PRIORITY_MAX,\n parse(capture /*, parse, state*/) {\n footnotes.push({\n footnote: capture[2],\n identifier: capture[1],\n });\n\n return {};\n },\n react: renderNothing,\n },\n\n footnoteReference: {\n match: inlineRegex(FOOTNOTE_REFERENCE_R),\n order: PARSE_PRIORITY_HIGH,\n parse(capture /*, parse*/) {\n return {\n content: capture[1],\n target: `#${options.slugify(capture[1])}`,\n };\n },\n react(node, output, state) {\n return (\n \n {node.content}\n \n );\n },\n },\n\n gfmTask: {\n match: inlineRegex(GFM_TASK_R),\n order: PARSE_PRIORITY_HIGH,\n parse(capture /*, parse, state*/) {\n return {\n completed: capture[1].toLowerCase() === 'x',\n };\n },\n react(node, output, state) {\n return (\n \n );\n },\n },\n\n heading: {\n match: blockRegex(HEADING_R),\n order: PARSE_PRIORITY_HIGH,\n parse(capture, parse, state) {\n return {\n content: parseInline(parse, capture[2], state),\n id: options.slugify(capture[2]),\n level: capture[1].length,\n };\n },\n react(node, output, state) {\n const Tag = `h${node.level}`;\n return (\n \n {output(node.content, state)}\n \n );\n },\n },\n\n headingSetext: {\n match: blockRegex(HEADING_SETEXT_R),\n order: PARSE_PRIORITY_MAX,\n parse(capture, parse, state) {\n return {\n content: parseInline(parse, capture[1], state),\n level: capture[2] === '=' ? 1 : 2,\n type: 'heading',\n };\n },\n },\n\n htmlComment: {\n match: anyScopeRegex(HTML_COMMENT_R),\n order: PARSE_PRIORITY_HIGH,\n parse() {\n return {};\n },\n react: renderNothing,\n },\n\n image: {\n match: simpleInlineRegex(IMAGE_R),\n order: PARSE_PRIORITY_HIGH,\n parse(capture /*, parse, state*/) {\n return {\n alt: capture[1],\n target: unescapeUrl(capture[2]),\n title: capture[3],\n };\n },\n react(node, output, state) {\n return (\n \n );\n },\n },\n\n link: {\n match: inlineRegex(LINK_R, false),\n order: PARSE_PRIORITY_LOW,\n parse(capture, parse, state) {\n return {\n content: parseSimpleInline(parse, capture[1], state),\n target: unescapeUrl(capture[2]),\n title: capture[3],\n };\n },\n react(node, output, state) {\n return (\n \n {output(node.content, state)}\n \n );\n },\n },\n\n // https://daringfireball.net/projects/markdown/syntax#autolink\n linkAngleBraceStyleDetector: {\n match: inlineRegex(LINK_AUTOLINK_R),\n order: PARSE_PRIORITY_MAX,\n parse(capture /*, parse, state*/) {\n return {\n content: [\n {\n content: capture[1],\n type: 'text',\n },\n ],\n target: capture[1],\n type: 'link',\n };\n },\n },\n\n linkBareUrlDetector: {\n match: inlineRegex(LINK_AUTOLINK_BARE_URL_R),\n order: PARSE_PRIORITY_MAX,\n parse(capture /*, parse, state*/) {\n return {\n content: [\n {\n content: capture[1],\n type: 'text',\n },\n ],\n target: capture[1],\n title: undefined,\n type: 'link',\n };\n },\n },\n\n linkMailtoDetector: {\n match: inlineRegex(LINK_AUTOLINK_MAILTO_R),\n order: PARSE_PRIORITY_MAX,\n parse(capture /*, parse, state*/) {\n let address = capture[1];\n let target = capture[1];\n\n // Check for a `mailto:` already existing in the link:\n if (!AUTOLINK_MAILTO_CHECK_R.test(target)) {\n target = 'mailto:' + target;\n }\n\n return {\n content: [\n {\n content: address.replace('mailto:', ''),\n type: 'text',\n },\n ],\n target: target,\n type: 'link',\n };\n },\n },\n\n list: {\n match(source, state, prevCapture) {\n // We only want to break into a list if we are at the start of a\n // line. This is to avoid parsing \"hi * there\" with \"* there\"\n // becoming a part of a list.\n // You might wonder, \"but that's inline, so of course it wouldn't\n // start a list?\". You would be correct! Except that some of our\n // lists can be inline, because they might be inside another list,\n // in which case we can parse with inline scope, but need to allow\n // nested lists inside this inline scope.\n const isStartOfLine = LIST_LOOKBEHIND_R.exec(prevCapture);\n const isListBlock = state._list || !state.inline;\n\n if (isStartOfLine && isListBlock) {\n source = isStartOfLine[1] + source;\n\n return LIST_R.exec(source);\n } else {\n return null;\n }\n },\n order: PARSE_PRIORITY_HIGH,\n parse(capture, parse, state) {\n const bullet = capture[2];\n const ordered = bullet.length > 1;\n const start = ordered ? +bullet : undefined;\n const items = capture[0]\n // recognize the end of a paragraph block inside a list item:\n // two or more newlines at end end of the item\n .replace(BLOCK_END_R, '\\n')\n .match(LIST_ITEM_R);\n\n let lastItemWasAParagraph = false;\n const itemContent = items.map(function(item, i) {\n // We need to see how far indented the item is:\n const space = LIST_ITEM_PREFIX_R.exec(item)[0].length;\n\n // And then we construct a regex to \"unindent\" the subsequent\n // lines of the items by that amount:\n const spaceRegex = new RegExp('^ {1,' + space + '}', 'gm');\n\n // Before processing the item, we need a couple things\n const content = item\n // remove indents on trailing lines:\n .replace(spaceRegex, '')\n // remove the bullet:\n .replace(LIST_ITEM_PREFIX_R, '');\n\n // Handling \"loose\" lists, like:\n //\n // * this is wrapped in a paragraph\n //\n // * as is this\n //\n // * as is this\n const isLastItem = i === items.length - 1;\n const containsBlocks = content.indexOf('\\n\\n') !== -1;\n\n // Any element in a list is a block if it contains multiple\n // newlines. The last element in the list can also be a block\n // if the previous item in the list was a block (this is\n // because non-last items in the list can end with \\n\\n, but\n // the last item can't, so we just \"inherit\" this property\n // from our previous element).\n const thisItemIsAParagraph =\n containsBlocks || (isLastItem && lastItemWasAParagraph);\n lastItemWasAParagraph = thisItemIsAParagraph;\n\n // backup our state for restoration afterwards. We're going to\n // want to set state._list to true, and state.inline depending\n // on our list's looseness.\n const oldStateInline = state.inline;\n const oldStateList = state._list;\n state._list = true;\n\n // Parse inline if we're in a tight list, or block if we're in\n // a loose list.\n let adjustedContent;\n if (thisItemIsAParagraph) {\n state.inline = false;\n adjustedContent = content.replace(LIST_ITEM_END_R, '\\n\\n');\n } else {\n state.inline = true;\n adjustedContent = content.replace(LIST_ITEM_END_R, '');\n }\n\n const result = parse(adjustedContent, state);\n\n // Restore our state before returning\n state.inline = oldStateInline;\n state._list = oldStateList;\n\n return result;\n });\n\n return {\n items: itemContent,\n ordered: ordered,\n start: start,\n };\n },\n react(node, output, state) {\n const Tag = node.ordered ? 'ol' : 'ul';\n\n return (\n \n {node.items.map(function generateListItem(item, i) {\n return
  • {output(item, state)}
  • ;\n })}\n
    \n );\n },\n },\n\n newlineCoalescer: {\n match: blockRegex(CONSECUTIVE_NEWLINE_R),\n order: PARSE_PRIORITY_LOW,\n parse: captureNothing,\n react(/*node, output, state*/) {\n return '\\n';\n },\n },\n\n paragraph: {\n match: blockRegex(PARAGRAPH_R),\n order: PARSE_PRIORITY_LOW,\n parse: parseCaptureInline,\n react(node, output, state) {\n return

    {output(node.content, state)}

    ;\n },\n },\n\n ref: {\n match: inlineRegex(REFERENCE_IMAGE_OR_LINK),\n order: PARSE_PRIORITY_MAX,\n parse(capture /*, parse*/) {\n refs[capture[1]] = {\n target: capture[2],\n title: capture[4],\n };\n\n return {};\n },\n react: renderNothing,\n },\n\n refImage: {\n match: simpleInlineRegex(REFERENCE_IMAGE_R),\n order: PARSE_PRIORITY_MAX,\n parse(capture) {\n return {\n alt: capture[1] || undefined,\n ref: capture[2],\n };\n },\n react(node, output, state) {\n return (\n \n );\n },\n },\n\n refLink: {\n match: inlineRegex(REFERENCE_LINK_R),\n order: PARSE_PRIORITY_MAX,\n parse(capture, parse, state) {\n return {\n content: parse(capture[1], state),\n fallbackContent: parse(capture[0].replace(SQUARE_BRACKETS_R, '\\\\$1'), state),\n ref: capture[2],\n };\n },\n react(node, output, state) {\n return refs[node.ref] ? (\n \n {output(node.content, state)}\n \n ) : {output(node.fallbackContent, state)};\n },\n },\n\n table: {\n match: blockRegex(NP_TABLE_R),\n order: PARSE_PRIORITY_HIGH,\n parse: parseTable,\n react(node, output, state) {\n return (\n \n \n \n {node.header.map(function generateHeaderCell(content, i) {\n return (\n \n );\n })}\n \n \n\n \n {node.cells.map(function generateTableRow(row, i) {\n return (\n \n {row.map(function generateTableCell(content, c) {\n return (\n \n );\n })}\n \n );\n })}\n \n
    \n {output(content, state)}\n
    \n {output(content, state)}\n
    \n );\n },\n },\n\n tableSeparator: {\n match: function(source, state) {\n if (!state.inTable) {\n return null;\n }\n return TABLE_SEPARATOR_R.exec(source);\n },\n order: PARSE_PRIORITY_HIGH,\n parse: function() {\n return { type: 'tableSeparator' };\n },\n // These shouldn't be reached, but in case they are, be reasonable:\n react() { return ' | '; }\n },\n\n text: {\n // Here we look for anything followed by non-symbols,\n // double newlines, or double-space-newlines\n // We break on any symbol characters so that this grammar\n // is easy to extend without needing to modify this regex\n match: anyScopeRegex(TEXT_PLAIN_R),\n order: PARSE_PRIORITY_MIN,\n parse(capture /*, parse, state*/) {\n return {\n content: capture[0]\n // nbsp -> unicode equivalent for named chars\n .replace(HTML_CHAR_CODE_R, (full, inner) => {\n return options.namedCodesToUnicode[inner]\n ? options.namedCodesToUnicode[inner]\n : full;\n }),\n };\n },\n react(node /*, output, state*/) {\n return node.content;\n },\n },\n\n textBolded: {\n match: simpleInlineRegex(TEXT_BOLD_R),\n order: PARSE_PRIORITY_MED,\n parse(capture, parse, state) {\n return {\n // capture[1] -> the syntax control character\n // capture[2] -> inner content\n content: parse(capture[2], state),\n };\n },\n react(node, output, state) {\n return {output(node.content, state)};\n },\n },\n\n textEmphasized: {\n match: simpleInlineRegex(TEXT_EMPHASIZED_R),\n order: PARSE_PRIORITY_LOW,\n parse(capture, parse, state) {\n return {\n // capture[1] -> opening * or _\n // capture[2] -> inner content\n content: parse(capture[2], state),\n };\n },\n react(node, output, state) {\n return {output(node.content, state)};\n },\n },\n\n textEscaped: {\n // We don't allow escaping numbers, letters, or spaces here so that\n // backslashes used in plain text still get rendered. But allowing\n // escaping anything else provides a very flexible escape mechanism,\n // regardless of how this grammar is extended.\n match: simpleInlineRegex(TEXT_ESCAPED_R),\n order: PARSE_PRIORITY_HIGH,\n parse(capture /*, parse, state*/) {\n return {\n content: capture[1],\n type: 'text',\n };\n },\n },\n\n textStrikethroughed: {\n match: simpleInlineRegex(TEXT_STRIKETHROUGHED_R),\n order: PARSE_PRIORITY_LOW,\n parse: parseCaptureInline,\n react(node, output, state) {\n return {output(node.content, state)};\n },\n },\n };\n\n // Object.keys(rules).forEach(key => {\n // let { match, parse } = rules[key];\n\n // rules[key].match = (...args) => {\n // const start = performance.now();\n // const result = match(...args);\n // const delta = performance.now() - start;\n\n // if (delta > 5)\n // console.warn(\n // `Slow match for ${key}: ${delta.toFixed(3)}ms, input: ${\n // args[0]\n // }`\n // );\n\n // return result;\n // };\n\n // rules[key].parse = (...args) => {\n // const start = performance.now();\n // const result = parse(...args);\n // const delta = performance.now() - start;\n\n // if (delta > 5)\n // console.warn(`Slow parse for ${key}: ${delta.toFixed(3)}ms`);\n\n // console.log(`${key}:parse`, `${delta.toFixed(3)}ms`, args[0]);\n\n // return result;\n // };\n // });\n\n if (options.disableParsingRawHTML !== true) {\n rules.htmlBlock = {\n /**\n * find the first matching end tag and process the interior\n */\n match: anyScopeRegex(HTML_BLOCK_ELEMENT_R),\n order: PARSE_PRIORITY_HIGH,\n parse(capture, parse, state) {\n const [, whitespace] = capture[3].match(HTML_LEFT_TRIM_AMOUNT_R);\n const trimmer = new RegExp(`^${whitespace}`, 'gm');\n const trimmed = capture[3].replace(trimmer, '');\n\n const parseFunc = containsBlockSyntax(trimmed)\n ? parseBlock\n : parseInline;\n\n const tagName = capture[1].toLowerCase();\n const noInnerParse =\n DO_NOT_PROCESS_HTML_ELEMENTS.indexOf(tagName) !== -1;\n\n return {\n attrs: attrStringToMap(capture[2]),\n /**\n * if another html block is detected within, parse as block,\n * otherwise parse as inline to pick up any further markdown\n */\n content: noInnerParse ? capture[3] : parseFunc(parse, trimmed, state),\n\n noInnerParse,\n\n tag: noInnerParse ? tagName : capture[1]\n };\n },\n react(node, output, state) {\n return (\n \n {node.noInnerParse ? node.content : output(node.content, state)}\n \n );\n },\n }\n\n rules.htmlSelfClosing = {\n /**\n * find the first matching end tag and process the interior\n */\n match: anyScopeRegex(HTML_SELF_CLOSING_ELEMENT_R),\n order: PARSE_PRIORITY_HIGH,\n parse(capture /*, parse, state*/) {\n return {\n attrs: attrStringToMap(capture[2] || ''),\n tag: capture[1],\n };\n },\n react(node, output, state) {\n return ;\n },\n };\n }\n\n const parser = parserFor(rules);\n const emitter = reactFor(ruleOutput(rules));\n\n const jsx = compile(stripHtmlComments(markdown));\n\n if (footnotes.length) {\n jsx.props.children.push(\n
    \n {footnotes.map(function createFootnote(def) {\n return (\n
    \n {def.identifier}\n {emitter(parser(def.footnote, { inline: true }))}\n
    \n );\n })}\n
    \n );\n }\n\n return jsx;\n}\n\n/**\n * A simple HOC for easy React use. Feed the markdown content as a direct child\n * and the rest is taken care of automatically.\n *\n * @param {String} options.children must be a string\n * @param {Object} options.options markdown-to-jsx options (arg 2 of the compiler)\n *\n * @return {ReactElement} the compiled JSX\n */\n\nexport default function Markdown({ children, options, ...props }) {\n return React.cloneElement(compiler(children, options), props);\n}\n\nif (process.env.NODE_ENV !== 'production') {\n const PropTypes = require('prop-types');\n\n Markdown.propTypes = {\n children: PropTypes.string.isRequired,\n options: PropTypes.object,\n };\n}\n","import Markdown from 'markdown-to-jsx';\nimport * as React from 'react';\nimport { CTA } from '../call-to-action';\nimport { List, ListItem } from '../list';\nimport { Text, TextAppearance, TextTag } from '../text';\nconst { headline0400, headline0350, headline0250, headline0200, copy0200 } = TextAppearance;\nconst { div, h1, h2, h3, h4, strong, p } = TextTag;\nconst allowedHTMLTags = [\n 'a',\n 'b',\n 'div',\n 'em',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'i',\n 'li',\n 'ol',\n 'p',\n 'span',\n 'strong',\n 'sub',\n 'sup',\n 'u',\n 'ul',\n];\nexport function createTagOverride(component, props) {\n return { component, props };\n}\nexport const RichtextLink = (props) => (React.createElement(CTA, Object.assign({}, props, { href: (props && props.href) || '#', tag: \"a\", emphasis: \"tertiary\" })));\nconst createDefaultMdOverrides = (color) => ({\n h1: createTagOverride(Text, { tag: h1, appearance: headline0400, color }),\n h2: createTagOverride(Text, { tag: h2, appearance: headline0350, color }),\n h3: createTagOverride(Text, { tag: h3, appearance: headline0250, color }),\n h4: createTagOverride(Text, { tag: h4, appearance: headline0200, color }),\n p: createTagOverride(Text, { tag: p, appearance: copy0200, color }),\n span: createTagOverride(Text, { appearance: copy0200, color }),\n div: createTagOverride(Text, { tag: div, appearance: copy0200, color }),\n strong: createTagOverride(Text, { tag: strong, bold: true, color }),\n a: createTagOverride(RichtextLink),\n ul: createTagOverride(List),\n ol: createTagOverride(List, { isOrdered: true }),\n li: createTagOverride(ListItem),\n});\nexport const Richtext = (props) => {\n const { markdown, overrides, color, dangerouslyParseRawHTML } = props;\n const mdOptions = {\n disableParsingRawHTML: dangerouslyParseRawHTML ? false : true,\n overrides: Object.assign(Object.assign({}, createDefaultMdOverrides(color)), overrides),\n createElement(type, elementProps, children) {\n if (typeof type === 'string' && !allowedHTMLTags.includes(type)) {\n return React.createElement(React.Fragment, null, children);\n }\n return React.createElement(type, elementProps, children);\n },\n };\n return React.createElement(Markdown, { options: mdOptions }, markdown);\n};\n","import * as React from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport { withTheme } from 'styled-components';\nimport { styled } from '../theme-provider';\nexport var ShimBackgroundType;\n(function (ShimBackgroundType) {\n ShimBackgroundType[\"OPAQUE\"] = \"OPAQUE\";\n ShimBackgroundType[\"TRANSPARENT\"] = \"TRANSPARENT\";\n})(ShimBackgroundType || (ShimBackgroundType = {}));\nconst animationClassName = 'animation';\nconst StyledShimLayer = styled.div.withConfig({ displayName: \"StyledShimLayer\", componentId: \"sc-fcqlz9\" }) `position:fixed;top:0;right:0;bottom:0;left:0;background-color:${(props) => props.backgroundType === ShimBackgroundType.TRANSPARENT\n ? 'transparent'\n : props.theme.shim.hideContext};opacity:1;transition:${(props) => {\n const duration = props.theme.animation.duration.layer;\n const timingFunction = props.theme.animation.timingFunction.in;\n return `opacity ${duration} ${timingFunction}`;\n}};&.${animationClassName}-exit{opacity:1;}&.${animationClassName}-enter,&.${animationClassName}-exit-active,&.${animationClassName}-exit-done{opacity:0;}&.${animationClassName}-enter-active{opacity:1;}`;\nStyledShimLayer.displayName = 'StyledShimLayer';\nexport const InternalShimLayer = (props) => {\n const { backgroundType = ShimBackgroundType.OPAQUE, in: visible, onExited, } = props;\n const handleClick = (event) => {\n const { onClick = () => undefined } = props;\n onClick(event);\n };\n const timeout = parseInt(props.theme.animation.duration.layer || '0', 10);\n return (React.createElement(CSSTransition, { classNames: animationClassName, onExited: onExited, in: visible, timeout: timeout },\n React.createElement(StyledShimLayer, { onClick: handleClick, backgroundType: backgroundType })));\n};\nexport const ShimLayer = withTheme(InternalShimLayer);\n","import * as React from 'react';\nimport { css, styled, ThemeProvider } from '../theme-provider';\nconst overrideHideStyles = css `width:auto;height:auto;clip:auto;overflow:visible;`;\nconst StyledSkipWrapper = styled.div.withConfig({ displayName: \"StyledSkipWrapper\", componentId: \"sc-118cjlx\" }) `position:absolute;width:1px;height:1px;clip:rect(0 0 0 0);overflow:hidden;z-index:1;background:${(props) => props.theme.focus.background};padding:${(props) => props.theme.size.static250};border:${({ theme }) => theme.size.line.default} solid ${(props) => props.theme.border.color.primary};:focus-within,:hover{${overrideHideStyles}}${(props) => props.visible && overrideHideStyles}`;\nexport function SkipLink(props) {\n const { children, visible } = props;\n return (React.createElement(ThemeProvider, { theme: \"main\" },\n React.createElement(StyledSkipWrapper, { visible: visible }, children)));\n}\n","import * as React from 'react';\nimport { styled, css } from '../theme-provider';\nimport { Text, TextColor, TextTag } from '../text';\nconst color = css `${(props) => props.disabled\n ? props.theme.interaction.recipe450.disabled\n : props.theme.interaction.recipe450.checked}`;\nconst isLeft = (dir = 'ltr', position) => {\n return ((position === 'start' && dir === 'ltr') ||\n (position === 'end' && dir === 'rtl'));\n};\nconst StyledIndicator = styled.span.withConfig({ displayName: \"StyledIndicator\", componentId: \"sc-ejzpbb\" }) `position:relative;display:block;width:${(props) => props.theme.size.static530};height:${(props) => props.theme.size.static350};background-color:${color};transition:0.4s;border-radius:${(props) => props.theme.size.static350};border:${(props) => props.theme.size.border.heavy} solid ${color};&::before{content:'';position:absolute;top:50%;left:calc(-1 * ${(props) => props.theme.size.border.heavy});transform:${(props) => isLeft(props.theme.direction, props.position)\n ? `\n\t\t\t\t\ttranslateY(-50%)\n\t\t\t\t\ttranslateX(calc(2 * ${props.theme.size.border.heavy}));\n\t\t\t\t`\n : `\n\t\t\t\t\ttranslateY(-50%)\n\t\t\t\t\ttranslateX(calc(-2 * ${props.theme.size.border.heavy}))\n\t\t\t\t\ttranslateX(${props.theme.size.static530})\n\t\t\t\t\ttranslateX(-100%);\n\t\t\t\t\t/*\n\t\t\t\t\t\tMove indicator by the width of the wrapping element,\n\t\t\t\t\t\tmove the indicator by its own width and also move it back by the size of\n\t\t\t\t\t\tthe border of the wrapping element.\n\t\t\t\t\t*/\n\t\t\t\t`} height:${(props) => props.theme.size.static250};width:${(props) => props.theme.size.static250};background-color:${(props) => props.theme.interaction.recipe750.default};border-radius:50%;transition:0.4s;@media (prefers-reduced-motion){transition:none;}}`;\nconst StyledInput = styled.input.withConfig({ displayName: \"StyledInput\", componentId: \"sc-efqwx8\" }) `position:absolute;opacity:0;outline:none;user-select:none;cursor:pointer;height:100%;${(props) => (props.theme.direction === 'rtl' ? 'right' : 'left')}:0;`;\nconst StyledLabel = styled.label.withConfig({ displayName: \"StyledLabel\", componentId: \"sc-1c1wvjn\" }) `position:relative;cursor:pointer;color:${color};transition:0.4s;&:focus-within{background:${(props) => props.theme.focus.background};color:${(props) => props.theme.focus.foreground};}${(props) => !props.checked &&\n `\n\t\t&::before {\n\t\t\tcontent: '';\n\t\t\tz-index: 1;\n\t\t\tposition: absolute;\n\t\t\theight: 100%;\n\t\t\t${isLeft(props.theme.direction, props.position) ? 'left' : 'right'}: 0;\n\n\t\t\t/* text + grid gap * 2 + indicator length */\n\t\t\twidth:\n\t\t\t\tcalc(100% + ${props.theme.size.static200} * 2 + ${props.theme.size.static530});\n\t\t}\n\t`}`;\nconst StyledWrapper = styled.div.withConfig({ displayName: \"StyledWrapper\", componentId: \"sc-cldjju\" }) `display:inline-grid;grid-column-gap:${(props) => props.theme.size.static200};grid-template-columns:auto auto auto;align-items:center;position:relative;isolation:isolate;${(props) => !props.disabled && css `&:hover:not(:focus-within){${StyledLabel}{color:${props.theme.interaction.recipe450.hover};}${StyledIndicator}{background-color:${props.theme.interaction.recipe450.hover};&::before{background-color:${props.theme.interaction.recipe750.hover};}}}`} ${(props) => props.disabled &&\n `\n\t\t& ${StyledLabel}, & ${StyledInput} {\n\t\t\tcursor: not-allowed;\n\t\t}\n\t`} &:focus-within ${StyledIndicator}{background-color:${(props) => props.theme.focus.background};&::before{box-shadow:0 0 0 2px inset ${(props) => props.theme.interaction.recipe450.default};}}`;\nexport const Toggle = ({ options, value, defaultValue, name, onChange, disabled = false, ariaDescribedBy, }) => {\n const [current, setCurrent] = React.useState((value !== null && value !== void 0 ? value : defaultValue));\n const isControlled = value != null;\n const value1 = options[0].value;\n const value2 = options[1].value;\n const onRadioChecked = React.useCallback((e) => {\n const newValue = e.target.value;\n onChange === null || onChange === void 0 ? void 0 : onChange(newValue);\n if (!isControlled) {\n setCurrent(newValue);\n }\n }, [onChange, isControlled]);\n const val1Checked = (value !== null && value !== void 0 ? value : current) === value1;\n const val2Checked = (value !== null && value !== void 0 ? value : current) === value2;\n return (React.createElement(StyledWrapper, { disabled: disabled },\n React.createElement(StyledLabel, { disabled: disabled, position: \"start\", checked: val1Checked },\n React.createElement(StyledInput, { name: name, type: \"radio\", value: options[0].value, checked: val1Checked, onChange: onRadioChecked, disabled: disabled, \"aria-describedby\": ariaDescribedBy }),\n React.createElement(Text, { tag: TextTag.span, color: TextColor.inherit }, options[0].label)),\n React.createElement(StyledIndicator, { \"aria-hidden\": true, disabled: disabled, position: val1Checked ? 'start' : 'end' }),\n React.createElement(StyledLabel, { disabled: disabled, position: \"end\", checked: val2Checked },\n React.createElement(StyledInput, { name: name, type: \"radio\", value: options[1].value, checked: val2Checked, onChange: onRadioChecked, disabled: disabled, \"aria-describedby\": ariaDescribedBy }),\n React.createElement(Text, { tag: TextTag.span, color: TextColor.inherit }, options[1].label))));\n};\n","import * as React from 'react';\nimport { Container, ContainerGutter, ContainerPadding, ContainerVerticalAlignment, ContainerWrap, } from '../container';\nimport { Breakpoints } from '../helpers/breakpoint';\nimport { MovingFrame } from '../moving-frame';\nimport { css, styled } from '../theme-provider';\nconst StyledTopBar = styled.div.withConfig({ displayName: \"StyledTopBar\", componentId: \"sc-1wmd8m2\" }) `width:100%;transform:translateZ(0);transition:min-height ${(props) => `${props.theme.animation.duration.layer} ${props.theme.animation.timingFunction.navigation}`};color:${(props) => props.theme.interaction.recipe400.default};background-color:${(props) => props.theme.navigation.backgroundColor};min-height:${(props) => parseInt(props.theme.size.static150, 10) * 4 +\n parseInt(props.theme.size.static350, 10)}px;${(props) => !props.hideLogo && css `min-height:${parseInt(props.theme.size.static150, 10) * 3 +\n parseInt(props.theme.size.static350, 10) +\n parseInt(props.theme.size.static400, 10)}px;@media (min-width: ${Breakpoints.b560}px){min-height:${parseInt(props.theme.size.static150, 10) * 3 +\n parseInt(props.theme.size.static350, 10) +\n parseInt(props.theme.size.static450, 10)}px;}@media (min-width: ${Breakpoints.b960}px){min-height:${parseInt(props.theme.size.static150, 10) * 3 +\n parseInt(props.theme.size.static350, 10) +\n parseInt(props.theme.size.static510, 10)}px;}@media (min-width: ${Breakpoints.b1920}px){min-height:${parseInt(props.theme.size.static150, 10) * 3 +\n parseInt(props.theme.size.static350, 10) +\n parseInt(props.theme.size.static520, 10)}px;}`}`;\nconst StyledLogoLayer = styled.div.withConfig({ displayName: \"StyledLogoLayer\", componentId: \"sc-17elgef\" }) `display:flex;position:absolute;top:0;width:100%;align-items:center;pointer-events:none;transition:transform ${(props) => `${props.theme.animation.duration.layer} ${props.theme.animation.timingFunction.navigation}`};padding:${(props) => Math.max(parseInt(props.theme.size.static400, 10) * 0.5, parseInt(props.theme.size.static450, 10) +\n parseInt(props.theme.size.static150, 10) -\n parseInt(props.theme.size.static400, 10) * 0.5)}px 0 ${(props) => parseInt(props.theme.size.static400, 10) * 0.5}px;@media (min-width: ${Breakpoints.b560}px){padding:${(props) => Math.max(parseInt(props.theme.size.static450, 10) * 0.5, parseInt(props.theme.size.static450, 10) +\n parseInt(props.theme.size.static150, 10) -\n parseInt(props.theme.size.static450, 10) * 0.5)}px 0 ${(props) => parseInt(props.theme.size.static450, 10) * 0.5}px;}@media (min-width: ${Breakpoints.b960}px){padding:${(props) => parseInt(props.theme.size.static510, 10) * 0.5}px 0;}@media (min-width: ${Breakpoints.b1920}px){padding:${(props) => parseInt(props.theme.size.static520, 10) * 0.5}px 0;}${(props) => props.hideLogo && `transform: translateY(-100%);`}`;\nexport const TopBar = (props) => {\n const { hideLogo, logo, children } = props;\n return (React.createElement(StyledTopBar, { hideLogo: hideLogo },\n React.createElement(Container, { padding: {\n left: ContainerPadding.grid001,\n right: ContainerPadding.grid001,\n top: ContainerPadding.static150,\n bottom: ContainerPadding.static150,\n }, gutter: ContainerGutter.static300, wrap: ContainerWrap.never, verticalAlign: ContainerVerticalAlignment.center, stretchContent: true }, children),\n React.createElement(StyledLogoLayer, { hideLogo: hideLogo },\n React.createElement(MovingFrame, { logo: logo }))));\n};\n","import * as React from 'react';\nimport { Image, DecorativeImage, LazyImage, DecorativeLazyImage, } from '../image';\nconst isSourceElement = (child) => {\n return child.type === 'source';\n};\nconst isImageComponent = (child) => {\n return child.type === Image;\n};\nconst isDecorativeImageComponent = (child) => {\n return child.type === DecorativeImage;\n};\nexport const LazyPicture = React.forwardRef((props, ref) => {\n const { children } = props;\n const newChildren = children.map((child) => {\n if (isSourceElement(child)) {\n return (React.createElement(\"source\", Object.assign({}, child.props, { contentEditable: undefined, srcSet: undefined, \"data-srcset\": child.props.srcSet })));\n }\n if (isImageComponent(child)) {\n return (React.createElement(LazyImage, Object.assign({}, child.props, { src: undefined, srcSet: undefined, \"data-src\": child.props.src, \"data-srcset\": child.props.srcSet, _disableNoScript: true })));\n }\n if (isDecorativeImageComponent(child)) {\n return (React.createElement(DecorativeLazyImage, Object.assign({}, child.props, { src: undefined, srcSet: undefined, \"data-src\": child.props.src, \"data-srcset\": child.props.srcSet, _disableNoScript: true })));\n }\n return undefined;\n });\n return (React.createElement(React.Fragment, null,\n React.createElement(\"noscript\", null,\n React.createElement(\"picture\", null, children)),\n React.createElement(\"picture\", { ref: ref }, newChildren)));\n});\nLazyPicture.displayName = 'Picture';\n","import * as React from 'react';\nimport { useState } from 'react';\nexport const MediaContext = React.createContext(undefined);\nexport const SetMediaContext = React.createContext(undefined);\nexport const MediaContextProvider = (props) => {\n const [media, setMedia] = useState();\n return (React.createElement(SetMediaContext.Provider, { value: setMedia },\n React.createElement(MediaContext.Provider, { value: media }, props.children)));\n};\n","var __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};\nimport * as React from 'react';\nimport { useContext, useEffect, useState, useRef, useCallback } from 'react';\nimport { styled, ThemeProvider } from '../theme-provider';\nimport { MediaContext, SetMediaContext } from './mediaContext';\nexport const VideoControlAreaContext = React.createContext(undefined);\nconst StyledVideo = styled.video.withConfig({ displayName: \"StyledVideo\", componentId: \"sc-9cmtvf\" }) `width:100%;height:100%;`;\nconst StyledVideoWrapper = styled.div.withConfig({ displayName: \"StyledVideoWrapper\", componentId: \"sc-16jn37o\" }) `position:relative;display:flex;`;\nconst StyledControlArea = styled.div.withConfig({ displayName: \"StyledControlArea\", componentId: \"sc-1qh9ykd\" }) `position:absolute;top:0;left:0;height:100%;width:100%;display:flex;flex-direction:column;justify-content:flex-end;`;\nexport const Video = (props) => {\n const { children, videoChildren } = props, others = __rest(props, [\"children\", \"videoChildren\"]);\n const setMedia = useContext(SetMediaContext);\n const VideoRef = useRef(null);\n const [mediaElement, setMediaElement] = useState();\n const ControlAreaRef = useRef(null);\n const [controlAreaElement, setControlAreaElement] = useState();\n useEffect(() => {\n setMedia && setMedia(VideoRef.current);\n }, [setMedia, VideoRef, VideoRef.current]);\n useEffect(() => {\n setMediaElement(VideoRef.current);\n }, [VideoRef]);\n useEffect(() => {\n setControlAreaElement(ControlAreaRef.current);\n }, [ControlAreaRef]);\n const handleClick = useCallback(() => {\n if (!VideoRef || !VideoRef.current) {\n return;\n }\n const paused = VideoRef.current.paused;\n if (paused) {\n VideoRef.current.play();\n }\n else {\n VideoRef.current.pause();\n }\n }, [VideoRef]);\n return (React.createElement(StyledVideoWrapper, null,\n React.createElement(StyledVideo, Object.assign({ ref: VideoRef }, others), videoChildren),\n React.createElement(MediaContext.Provider, { value: mediaElement },\n React.createElement(StyledControlArea, { onClick: handleClick, ref: ControlAreaRef },\n React.createElement(ThemeProvider, { theme: \"image\" },\n React.createElement(VideoControlAreaContext.Provider, { value: controlAreaElement }, children))))));\n};\nVideo.displayName = 'Video';\n","import * as React from 'react';\nimport { useContext, useState, useEffect, useCallback, useRef } from 'react';\nimport { MediaContext } from '..';\nimport { VideoControlAreaContext } from '../video';\nimport { styled } from '../../theme-provider';\nconst ANIMATION_FUNCTION = 'cubic-bezier(0.14, 1.12, 0.67, 0.99)';\nconst StyledControlContainer = styled.div.withConfig({ displayName: \"StyledControlContainer\", componentId: \"sc-3uqov6\" }) `display:flex;align-items:center;gap:${(props) => props.theme.size.static300};width:100%;height:60px;padding:0 ${(props) => props.theme.size.static350};background:${(props) => props.theme.shim.hideContext};transition:${({ visible }) => visible\n ? `opacity 0.5s ${ANIMATION_FUNCTION}`\n : `opacity 0.5s 0.3s ${ANIMATION_FUNCTION}`};opacity:${({ visible }) => !visible && '0'};pointer-events:${({ visible }) => !visible && 'none'};`;\nexport const ControlContainer = (props) => {\n const mediaElement = useContext(MediaContext);\n const videoControlAreaElement = useContext(VideoControlAreaContext);\n const [isPlaying, setIsPlaying] = useState(false);\n const [isPlayed, setIsPlayed] = useState(false);\n const [isHovering, setIsHovering] = useState(false);\n const timeoutId = useRef();\n const handlePlay = useCallback(() => {\n setIsPlaying(true);\n setIsPlayed(true);\n }, []);\n const handlePause = useCallback(() => {\n setIsPlaying(false);\n }, []);\n const handleEnded = useCallback(() => {\n setIsPlayed(false);\n }, []);\n const handleInteraction = useCallback(() => {\n setIsHovering(true);\n timeoutId.current && clearTimeout(timeoutId.current);\n timeoutId.current = window.setTimeout(() => {\n setIsHovering(false);\n }, 2000);\n }, []);\n useEffect(() => {\n mediaElement === null || mediaElement === void 0 ? void 0 : mediaElement.addEventListener('play', handlePlay);\n mediaElement === null || mediaElement === void 0 ? void 0 : mediaElement.addEventListener('pause', handlePause);\n mediaElement === null || mediaElement === void 0 ? void 0 : mediaElement.addEventListener('ended', handleEnded);\n videoControlAreaElement === null || videoControlAreaElement === void 0 ? void 0 : videoControlAreaElement.addEventListener('mousemove', handleInteraction);\n videoControlAreaElement === null || videoControlAreaElement === void 0 ? void 0 : videoControlAreaElement.addEventListener('touchmove', handleInteraction);\n videoControlAreaElement === null || videoControlAreaElement === void 0 ? void 0 : videoControlAreaElement.addEventListener('focus', handleInteraction, true);\n return () => {\n mediaElement === null || mediaElement === void 0 ? void 0 : mediaElement.removeEventListener('play', handlePlay);\n mediaElement === null || mediaElement === void 0 ? void 0 : mediaElement.removeEventListener('play', handlePause);\n videoControlAreaElement === null || videoControlAreaElement === void 0 ? void 0 : videoControlAreaElement.removeEventListener('mousemove', handleInteraction);\n videoControlAreaElement === null || videoControlAreaElement === void 0 ? void 0 : videoControlAreaElement.removeEventListener('touchmove', handleInteraction);\n videoControlAreaElement === null || videoControlAreaElement === void 0 ? void 0 : videoControlAreaElement.removeEventListener('focus', handleInteraction, true);\n };\n }, [\n handleEnded,\n handleInteraction,\n handlePause,\n handlePlay,\n mediaElement,\n videoControlAreaElement,\n ]);\n const visible = (!isPlaying || isHovering) && (!props.hideInitially || isPlayed);\n return (React.createElement(StyledControlContainer, { visible: visible }, props.children));\n};\nControlContainer.displayName = 'ControlContainer';\n","import * as React from 'react';\nimport { useCallback, useContext, useEffect, useMemo, useState, useRef, } from 'react';\nimport { MediaContext } from '..';\nimport { Text, TextAppearance } from '../../text';\nimport { styled } from '../../theme-provider';\nconst StyledTimestamp = styled.div.withConfig({ displayName: \"StyledTimestamp\", componentId: \"sc-uq9607\" }) `position:absolute;left:50%;transform:translateX(-50%)translateY(-100%)scale(0.7);opacity:${({ active }) => (active ? 1 : 0)};`;\nconst StyledIndicator = styled.div.withConfig({ displayName: \"StyledIndicator\", componentId: \"sc-1mhvj7n\" }) `position:absolute;opacity:0;left:min(100%, max(0%, var(--progressPercent)));width:${(props) => props.theme.size.static200};height:${(props) => props.theme.size.static200};border-radius:50%;background:${(props) => props.theme.interaction.recipe450.active};transform:translate(-50%, -50%)scale(${({ active }) => (active ? 1.3 : 1)});transform-origin:center center;backface-visibility:hidden;transition:opacity 0.2s ease-in-out;`;\nconst StyledTimeline = styled.div.attrs(({ progress, hoverPosition }) => ({\n style: {\n '--progress': `min(100, max(0, ${progress}))`,\n '--progressPercent': `min(100%, max(0%, ${progress}%))`,\n '--hoverPosition': `min(100, max(0, ${hoverPosition}))`,\n },\n})).withConfig({ displayName: \"StyledTimeline\", componentId: \"sc-1ugop9y\" }) `position:relative;height:${(props) => props.theme.size.line.active};width:100%;background:${(props) => props.theme.interaction.recipe450.default};::before,::after{content:'';position:absolute;top:0;left:0;display:block;background:${(props) => props.theme.interaction.recipe450.active};height:100%;width:100%;pointer-events:none;transform-origin:left;}::before{transform:scaleX(calc(var(--progress)/ 100));}::after{opacity:0;transform:scaleX(calc(var(--hoverPosition)/ 100));}&:focus{${StyledIndicator}{opacity:1;}}`;\nconst StyledTimelineWrapper = styled.div.withConfig({ displayName: \"StyledTimelineWrapper\", componentId: \"sc-nz13z7\" }) `display:flex;width:100%;height:100%;align-items:center;cursor:pointer;:hover{${StyledIndicator}{opacity:1;}${StyledTimeline}{::after{opacity:1;}}}`;\nexport const Timeline = () => {\n const timelineWrapperRef = useRef(null);\n const mediaElement = useContext(MediaContext);\n const [timeStamp, setTimeStamp] = useState(0);\n const [progress, setProgress] = useState(0);\n const [hoverPosition, setHoverPosition] = useState(0);\n const [active, setActive] = useState(false);\n const handleTimeupdate = useCallback(() => {\n setTimeStamp((mediaElement === null || mediaElement === void 0 ? void 0 : mediaElement.currentTime) || 0);\n }, [mediaElement]);\n useEffect(() => {\n mediaElement === null || mediaElement === void 0 ? void 0 : mediaElement.addEventListener('timeupdate', handleTimeupdate);\n return () => {\n mediaElement === null || mediaElement === void 0 ? void 0 : mediaElement.removeEventListener('timeupdate', handleTimeupdate);\n };\n }, [handleTimeupdate, mediaElement]);\n useEffect(() => {\n setProgress(((mediaElement === null || mediaElement === void 0 ? void 0 : mediaElement.duration) &&\n timeStamp &&\n (timeStamp / (mediaElement === null || mediaElement === void 0 ? void 0 : mediaElement.duration)) * 100) ||\n 0);\n }, [mediaElement, timeStamp]);\n const handleClick = useCallback((event) => {\n var _a, _b;\n const left = ((_a = timelineWrapperRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().left) || 0;\n const width = ((_b = timelineWrapperRef.current) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect().width) || 0;\n if (mediaElement) {\n event.preventDefault();\n event.stopPropagation();\n mediaElement.currentTime =\n ((event.clientX - left) / width) * mediaElement.duration;\n }\n }, [mediaElement]);\n const handleHover = useCallback((e) => {\n var _a, _b;\n const left = ((_a = timelineWrapperRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().left) || 0;\n const width = ((_b = timelineWrapperRef.current) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect().width) || 0;\n setHoverPosition(((e.clientX - left) / width) * 100);\n if (mediaElement && e.buttons === 1) {\n setProgress(((e.clientX - left) / width) * 100);\n mediaElement.currentTime =\n ((e.clientX - left) / width) * mediaElement.duration;\n setTimeStamp(((e.clientX - left) / width) * mediaElement.duration);\n }\n }, [mediaElement]);\n const handleTouchMove = useCallback((e) => {\n var _a, _b;\n if (!mediaElement || mediaElement.seekable.length === 0) {\n return;\n }\n const left = ((_a = timelineWrapperRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().left) || 0;\n const width = ((_b = timelineWrapperRef.current) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect().width) || 0;\n setHoverPosition(((e.targetTouches[0].clientX - left) / width) * 100);\n setProgress(((e.targetTouches[0].clientX - left) / width) * 100);\n if (mediaElement) {\n mediaElement.currentTime =\n ((e.targetTouches[0].clientX - left) / width) * mediaElement.duration;\n setTimeStamp(((e.targetTouches[0].clientX - left) / width) * mediaElement.duration);\n }\n }, [mediaElement]);\n const handleClickStart = useCallback(() => {\n if (mediaElement && mediaElement.seekable.length === 0) {\n mediaElement.load();\n }\n setActive(true);\n }, [mediaElement]);\n const handleClickEnd = useCallback(() => {\n setActive(false);\n }, []);\n const handleKeyDown = useCallback((event) => {\n if (mediaElement) {\n const multiplier = event.shiftKey ? 0.05 : 0.01;\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n mediaElement.currentTime -= mediaElement.duration * multiplier;\n setProgress((mediaElement.currentTime / mediaElement.duration) * 100);\n }\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n mediaElement.currentTime += mediaElement.duration * multiplier;\n setProgress((mediaElement.currentTime / mediaElement.duration) * 100);\n }\n if (event.key === 'Home') {\n event.preventDefault();\n mediaElement.currentTime = 0;\n setProgress(0);\n }\n if (event.key === 'End') {\n event.preventDefault();\n mediaElement.currentTime = mediaElement.duration;\n setProgress(100);\n }\n }\n }, [mediaElement]);\n const timeString = useMemo(() => {\n const roundedTimeStamp = Math.round(Math.max(0, Math.min((mediaElement === null || mediaElement === void 0 ? void 0 : mediaElement.duration) || 0, timeStamp)));\n const minutes = `${Math.floor(roundedTimeStamp / 60)}`.padStart(2, '0');\n const seconds = `${roundedTimeStamp % 60}`.padStart(2, '0');\n return `${minutes}:${seconds}`;\n }, [timeStamp, mediaElement]);\n return (React.createElement(StyledTimelineWrapper, { onClick: handleClick, onMouseMove: handleHover, onTouchMove: handleTouchMove, onTouchStart: handleClickStart, onTouchEnd: handleClickEnd, onMouseDown: handleClickStart, onMouseUp: handleClickEnd, ref: timelineWrapperRef },\n React.createElement(StyledTimeline, { role: \"slider\", \"aria-valuemin\": 0, \"aria-valuemax\": (mediaElement === null || mediaElement === void 0 ? void 0 : mediaElement.duration) || 0, \"aria-valuenow\": timeStamp, \"aria-valuetext\": timeString, progress: progress, hoverPosition: hoverPosition, tabIndex: 0, onKeyDown: handleKeyDown },\n React.createElement(StyledIndicator, { active: active },\n React.createElement(StyledTimestamp, { active: active },\n React.createElement(Text, { appearance: TextAppearance.label100 }, timeString))))));\n};\nTimeline.displayName = 'Timeline';\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nexport var Pause = React.forwardRef(Object.assign(function (props, forwardRef) {\n var variant = props.variant || \"default\";\n if (variant === \"default\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { viewBox: \"0 0 24 24\", width: \"24\", height: \"24\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M6.835 4.5h1.33v15h-1.33zM15.835 4.5h1.33v15h-1.33z\" }));\n }\n if (variant === \"small\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { viewBox: \"0 0 12 12\", width: \"12\", height: \"12\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M8.94 0h1.33v12H8.94zM1.73 0h1.33v12H1.73z\" }));\n }\n return null;\n}, { displayName: 'Pause' }));\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nexport var Play = React.forwardRef(Object.assign(function (props, forwardRef) {\n var variant = props.variant || \"default\";\n if (variant === \"default\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { viewBox: \"0 0 24 24\", width: \"24\", height: \"24\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M6.33 5.412 17.516 12 6.33 18.588zm-.133-1.433c-.202 0-.404.053-.589.159A1.2 1.2 0 0 0 5 5.194v13.613a1.202 1.202 0 0 0 1.197 1.215c.206 0 .413-.055.6-.165l11.605-6.835c.38-.224.598-.596.598-1.022s-.217-.798-.597-1.021L6.797 4.144a1.185 1.185 0 0 0-.6-.165z\" }));\n }\n if (variant === \"small\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { viewBox: \"0 0 12 12\", width: \"12\", height: \"12\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"m2.29 1.47 8 4.55-8 4.51zM2.23.09A1.27 1.27 0 0 0 1 1.37v9.26a1.27 1.27 0 0 0 1.27 1.28 1.24 1.24 0 0 0 .56-.13l8.13-4.62a1.27 1.27 0 0 0 0-2.28L2.79.23a1.14 1.14 0 0 0-.56-.14z\" }));\n }\n return null;\n}, { displayName: 'Play' }));\n","import * as React from 'react';\nimport { useContext, useState, useCallback, useEffect } from 'react';\nimport { Play, Pause } from '@volkswagen-onehub/icons-core';\nimport { MediaContext } from '..';\nimport { CTA } from '../../call-to-action';\nimport { styled } from '../../theme-provider';\nconst StyledPlayButton = styled(CTA).withConfig({ displayName: \"StyledPlayButton\", componentId: \"sc-afeuu1\" }) `flex-shrink:0;`;\nexport const PlayButton = (props) => {\n const mediaElement = useContext(MediaContext);\n const [isPlaying, setIsPlaying] = useState(false);\n const handlePlay = useCallback(() => {\n setIsPlaying(true);\n }, []);\n const handlePause = useCallback(() => {\n setIsPlaying(false);\n }, []);\n useEffect(() => {\n mediaElement === null || mediaElement === void 0 ? void 0 : mediaElement.addEventListener('play', handlePlay);\n mediaElement === null || mediaElement === void 0 ? void 0 : mediaElement.addEventListener('pause', handlePause);\n return () => {\n mediaElement === null || mediaElement === void 0 ? void 0 : mediaElement.removeEventListener('play', handlePlay);\n mediaElement === null || mediaElement === void 0 ? void 0 : mediaElement.removeEventListener('pause', handlePause);\n };\n }, [handlePause, handlePlay, mediaElement]);\n const handleClick = useCallback((event) => {\n if (mediaElement) {\n event.preventDefault();\n event.stopPropagation();\n isPlaying ? mediaElement.pause() : mediaElement.play();\n }\n }, [mediaElement, isPlaying]);\n return (React.createElement(StyledPlayButton, { tag: \"button\", emphasis: \"tertiary\", onClick: handleClick, title: isPlaying ? props.pauseTitle : props.playTitle, ariaLabel: isPlaying ? props.pauseTitle : props.playTitle, icon: isPlaying ? React.createElement(Pause, null) : React.createElement(Play, null) }));\n};\nPlayButton.displayName = 'PlayButton';\n","import * as React from 'react';\nimport { useContext, useState, useCallback, useEffect } from 'react';\nimport { Play } from '@volkswagen-onehub/icons-core';\nimport { MediaContext } from '..';\nimport { CTA } from '../../call-to-action';\nimport { styled } from '../../theme-provider';\nconst StyledPlayButtonCenter = styled(CTA).withConfig({ displayName: \"StyledPlayButtonCenter\", componentId: \"sc-1itbgdl\" }) `position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);`;\nexport const PlayButtonCenter = (props) => {\n const mediaElement = useContext(MediaContext);\n const [isPlaying, setIsPlaying] = useState(false);\n const handlePlay = useCallback(() => {\n setIsPlaying(true);\n }, []);\n const handleEnded = useCallback(() => {\n setIsPlaying(false);\n }, []);\n useEffect(() => {\n mediaElement === null || mediaElement === void 0 ? void 0 : mediaElement.addEventListener('play', handlePlay);\n mediaElement === null || mediaElement === void 0 ? void 0 : mediaElement.addEventListener('ended', handleEnded);\n return () => {\n mediaElement === null || mediaElement === void 0 ? void 0 : mediaElement.removeEventListener('play', handlePlay);\n mediaElement === null || mediaElement === void 0 ? void 0 : mediaElement.removeEventListener('ended', handleEnded);\n };\n }, [handleEnded, handlePlay, mediaElement]);\n const handleClick = useCallback((event) => {\n if (mediaElement) {\n event.preventDefault();\n event.stopPropagation();\n mediaElement.play();\n }\n }, [mediaElement]);\n if (isPlaying) {\n return null;\n }\n return (React.createElement(StyledPlayButtonCenter, { tag: \"button\", emphasis: \"tertiary\", onClick: handleClick, title: props.playTitle, ariaLabel: props.playTitle, icon: React.createElement(Play, null) }));\n};\nPlayButtonCenter.displayName = 'PlayButtonCenter';\n","import * as React from 'react';\nimport { useContext, useState, useCallback, useEffect } from 'react';\nimport { Text, TextAppearance } from '../../text';\nimport { MediaContext } from '..';\nexport const TimeDisplay = () => {\n const mediaElement = useContext(MediaContext);\n const [timeString, setTimeString] = useState('00:00');\n const handleTimeupdate = useCallback(() => {\n const duration = (mediaElement === null || mediaElement === void 0 ? void 0 : mediaElement.duration) || 0;\n const currentTime = (mediaElement === null || mediaElement === void 0 ? void 0 : mediaElement.currentTime) || 0;\n const roundedTimeStamp = Math.round(duration - currentTime);\n const minutes = `${Math.floor(roundedTimeStamp / 60)}`.padStart(2, '0');\n const seconds = `${roundedTimeStamp % 60}`.padStart(2, '0');\n setTimeString(`${minutes}:${seconds}`);\n }, [mediaElement]);\n useEffect(() => {\n handleTimeupdate();\n mediaElement === null || mediaElement === void 0 ? void 0 : mediaElement.addEventListener('timeupdate', handleTimeupdate);\n return () => {\n mediaElement === null || mediaElement === void 0 ? void 0 : mediaElement.removeEventListener('timeupdate', handleTimeupdate);\n };\n }, [handleTimeupdate, mediaElement]);\n return React.createElement(Text, { appearance: TextAppearance.label150 }, timeString);\n};\nTimeDisplay.displayName = 'TimeDisplay';\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nexport var ExitFullscreen = React.forwardRef(Object.assign(function (props, forwardRef) {\n var variant = props.variant || \"default\";\n if (variant === \"default\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M2 8.4v1.3h6.8c.5 0 .9-.4.9-.9V2H8.3v6.4zM22 8.4v1.3h-6.8c-.5 0-.9-.4-.9-.9V2h1.3v6.4zM15.6 22h-1.3v-6.8c0-.5.4-.9.9-.9H22v1.3h-6.4zM2 15.6v-1.3h6.8c.5 0 .9.4.9.9V22H8.3v-6.4z\" }));\n }\n if (variant === \"small\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"12\", height: \"12\", viewBox: \"0 0 12 12\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M11 4.7H8.1c-.5 0-.8-.3-.8-.8V1h1.4v2.3H11zM4.7 11H3.3V8.7H1V7.4h2.9c.5 0 .8.3.8.8zM3.9 4.7H1V3.4h2.3V1h1.3v2.9c.1.5-.2.8-.7.8zM8.7 11H7.4V8.1c0-.5.3-.8.8-.8H11v1.3H8.7z\" }));\n }\n return null;\n}, { displayName: 'ExitFullscreen' }));\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nexport var EnterFullscreen = React.forwardRef(Object.assign(function (props, forwardRef) {\n var variant = props.variant || \"default\";\n if (variant === \"default\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M23.2 8.5h-1.4V2.2h-6.3V.9h6.9c.5 0 .8.3.8.8zM8.5 23.2H1.6c-.5 0-.8-.3-.8-.8v-6.9h1.4v6.3h6.3zM2.2 8.5H.9V1.6c0-.5.3-.8.8-.8h6.8v1.3H2.2zM22.4 23.2h-6.9v-1.3h6.3v-6.4h1.3v6.9c.1.5-.2.8-.7.8z\" }));\n }\n if (variant === \"small\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"12\", height: \"12\", viewBox: \"0 0 12 12\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M11.7 4h-1.4V1.7H8V.4h2.9c.5 0 .8.3.8.8zM4 11.7H1.1c-.5 0-.8-.3-.8-.8V8h1.4v2.3H4zM1.7 4H.4V1.1c0-.5.3-.8.8-.8H4v1.3H1.7zM10.9 11.7H8v-1.3h2.3V8h1.3v2.9c.1.5-.2.8-.7.8z\" }));\n }\n return null;\n}, { displayName: 'EnterFullscreen' }));\n","import * as React from 'react';\nimport { useContext, useCallback, useEffect, useState } from 'react';\nimport { EnterFullscreen, ExitFullscreen } from '@volkswagen-onehub/icons-core';\nimport { MediaContext } from '..';\nimport { CTA } from '../../call-to-action';\nimport { styled } from '../../theme-provider';\nconst StyledFullscreenButton = styled(CTA).withConfig({ displayName: \"StyledFullscreenButton\", componentId: \"sc-p4lpsp\" }) `flex-shrink:0;`;\nfunction requestFullscreen(element, parent) {\n if (parent.requestFullscreen) {\n parent.requestFullscreen();\n }\n if (element.webkitEnterFullscreen) {\n element.webkitEnterFullscreen();\n }\n}\nfunction exitFullscreen() {\n if (document.exitFullscreen) {\n document.exitFullscreen();\n }\n if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n }\n}\nexport const FullscreenButton = (props) => {\n const mediaElement = useContext(MediaContext);\n const [fullscreen, setFullscreen] = useState(Boolean(document.fullscreenElement || document.webkitFullscreenElement));\n const handleFullscreenChange = useCallback(() => {\n setFullscreen(Boolean(document.fullscreenElement || document.webkitFullscreenElement));\n }, []);\n useEffect(() => {\n document.addEventListener('fullscreenchange', handleFullscreenChange);\n document.addEventListener('webkitfullscreenchange', handleFullscreenChange);\n return () => {\n document.removeEventListener('fullscreenchange', handleFullscreenChange);\n document.removeEventListener('webkitfullscreenchange', handleFullscreenChange);\n };\n }, [handleFullscreenChange]);\n const handleClick = useCallback((event) => {\n if (!mediaElement || !mediaElement.parentElement) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n fullscreen\n ? exitFullscreen()\n : requestFullscreen(mediaElement, mediaElement.parentElement);\n }, [mediaElement, fullscreen]);\n return (React.createElement(StyledFullscreenButton, { tag: \"button\", emphasis: \"tertiary\", onClick: handleClick, title: fullscreen ? props.closeTitle : props.openTitle, icon: fullscreen ? React.createElement(ExitFullscreen, null) : React.createElement(EnterFullscreen, null) }));\n};\nFullscreenButton.displayName = 'FullscreenButton';\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nexport var VolumeMute = React.forwardRef(Object.assign(function (props, forwardRef) {\n var variant = props.variant || \"default\";\n if (variant === \"default\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M13.994 3.212a1.03 1.03 0 0 0-.49.124l-6.33 3.426a2.057 2.057 0 0 1-.979.248H2.033a1.014 1.014 0 0 0-1.02 1.008v7.964a1.014 1.014 0 0 0 1.02 1.008h4.163a2.058 2.058 0 0 1 .979.248l6.33 3.426a1.026 1.026 0 0 0 1.383-.4.997.997 0 0 0 .126-.484V4.22a1.014 1.014 0 0 0-1.02-1.008zM2.344 8.34H5.71v7.32H2.343zM13.683 12v7.248l-5.876-3.18a3.376 3.376 0 0 0-.768-.3V8.232a3.385 3.385 0 0 0 .768-.3l5.875-3.18zM23.012 9.952l-.942-.939-2.046 2.047-2.046-2.047-.942.939L19.084 12l-2.048 2.048.942.939 2.046-2.047 2.046 2.047.942-.939L20.964 12z\" }));\n }\n if (variant === \"large\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"48\", height: \"48\", viewBox: \"0 0 48 48\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M-30.986 7.018v7.964c0 .557.456 1.008 1.019 1.008h4.163c.342 0 .679.085.979.248l6.33 3.426a1.025 1.025 0 0 0 1.383-.4.999.999 0 0 0 .126-.484V3.22c0-.557-.457-1.008-1.02-1.008-.17 0-.34.042-.49.124l-6.33 3.426c-.3.163-.636.248-.978.248h-4.163c-.563 0-1.02.451-1.02 1.008zM-30.986 32.053v7.965c0 .556.456 1.007 1.019 1.007h4.163c.342 0 .679.085.979.248l6.33 3.426a1.025 1.025 0 0 0 1.383-.4.999.999 0 0 0 .126-.484v-15.56c0-.557-.457-1.008-1.02-1.008-.17 0-.34.043-.49.124l-6.33 3.426c-.3.163-.636.248-.978.248h-4.163c-.563 0-1.02.451-1.02 1.008zM-30.986 57.79v7.964c0 .556.456 1.007 1.019 1.007h4.163c.342 0 .679.086.979.248l6.33 3.427a1.025 1.025 0 0 0 1.383-.4.999.999 0 0 0 .126-.484v-15.56c0-.557-.457-1.008-1.02-1.008-.17 0-.34.042-.49.123l-6.33 3.427c-.3.162-.636.248-.978.248h-4.163c-.563 0-1.02.45-1.02 1.007zM28.575 6.003c-.348 0-.696.082-1.003.246l-12.96 7.023a4.297 4.297 0 0 1-2.007.511H4.088c-1.146 0-2.088.922-2.088 2.068v16.297c0 1.147.942 2.068 2.088 2.068h8.518c.696 0 1.392.164 2.006.512l12.96 7.023a2.2 2.2 0 0 0 1.003.246c.737 0 1.454-.39 1.822-1.065.164-.307.267-.635.267-.983V8.092a2.071 2.071 0 0 0-2.089-2.089zM4 32.15V15.85c0-.032.038-.067.088-.067h7.924v16.432H4.088c-.05 0-.088-.036-.088-.067zm24.642 7.825a.104.104 0 0 1-.067.023c-.014 0-.035 0-.088-.025l-12.89-6.984a5.895 5.895 0 0 0-1.585-.605v-16.77a6.445 6.445 0 0 0 1.553-.583l12.948-7.016a.162.162 0 0 1 .062-.01c.063 0 .088.025.088.088l.004 31.821s-.007.026-.025.06zM45.977 19.542 44.56 18.13l-4.45 4.459-4.45-4.46-1.417 1.413 4.454 4.462-4.454 4.463 1.416 1.412 4.45-4.46 4.45 4.46 1.417-1.412-4.454-4.463z\" }));\n }\n if (variant === \"small\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"12\", height: \"12\", viewBox: \"0 0 12 12\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M4.979 3.69V8.31l-1.153-.793-.058-.04-.062-.033a2.364 2.364 0 0 0-1.122-.284H1.33V4.84h1.254a2.364 2.364 0 0 0 1.122-.283l.062-.034.058-.04L4.98 3.69M5.8 1.618a.513.513 0 0 0-.245.061L3.073 3.388a1.025 1.025 0 0 1-.489.123H.508A.505.505 0 0 0 0 4.014v3.972a.505.505 0 0 0 .508.503h2.076a1.025 1.025 0 0 1 .489.123l2.483 1.709a.511.511 0 0 0 .69-.2.498.498 0 0 0 .063-.241V2.12a.505.505 0 0 0-.508-.502zM11.976 4.863l-.94-.939L9.9 5.06 8.764 3.924l-.941.939L8.96 6 7.823 7.137l.941.939L9.9 6.94l1.136 1.136.94-.939L10.84 6z\" }));\n }\n return null;\n}, { displayName: 'VolumeMute' }));\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nexport var VolumeMaximum = React.forwardRef(Object.assign(function (props, forwardRef) {\n var variant = props.variant || \"default\";\n if (variant === \"default\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M13.994 3.212a1.03 1.03 0 0 0-.49.124l-6.33 3.426a2.057 2.057 0 0 1-.979.248H2.033a1.014 1.014 0 0 0-1.02 1.008v7.964a1.014 1.014 0 0 0 1.02 1.008h4.163a2.058 2.058 0 0 1 .979.248l6.33 3.426a1.026 1.026 0 0 0 1.383-.4.997.997 0 0 0 .126-.484V4.22a1.014 1.014 0 0 0-1.02-1.008zM2.344 8.34H5.71v7.32H2.343zM13.683 12v7.248l-5.876-3.18a3.376 3.376 0 0 0-.768-.3V8.232a3.385 3.385 0 0 0 .768-.3l5.875-3.18zM17.509 16.451l-.947-.934a5.33 5.33 0 0 0 1.443-3.52 5.289 5.289 0 0 0-1.44-3.52l.944-.937a6.705 6.705 0 0 1 1.826 4.457 6.625 6.625 0 0 1-1.826 4.454zM20.307 18.638l-.948-.934a8.847 8.847 0 0 0 2.343-5.714 8.88 8.88 0 0 0-2.337-5.709l.942-.941a10.164 10.164 0 0 1 2.725 6.65 10.295 10.295 0 0 1-2.725 6.648z\" }));\n }\n if (variant === \"large\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"48\", height: \"48\", viewBox: \"0 0 48 48\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M29.072 6.003c-.348 0-.696.082-1.003.246l-12.96 7.023a4.298 4.298 0 0 1-2.006.511H4.586c-1.147 0-2.089.922-2.089 2.068v16.297c0 1.147.942 2.068 2.089 2.068h8.517c.696 0 1.392.164 2.006.512l12.96 7.023a2.2 2.2 0 0 0 1.003.246c.738 0 1.454-.39 1.823-1.065.163-.307.266-.635.266-.983V8.092a2.071 2.071 0 0 0-2.089-2.089zM4.497 32.15V15.85c0-.032.038-.067.089-.067h7.923v16.432H4.586c-.05 0-.089-.036-.089-.067zm24.642 7.825a.104.104 0 0 1-.067.023c-.014 0-.034 0-.088-.025l-12.889-6.984a5.896 5.896 0 0 0-1.586-.605v-16.77a6.45 6.45 0 0 0 1.553-.583L29.01 8.014a.16.16 0 0 1 .062-.01c.063 0 .089.025.089.088l.003 31.822s-.006.025-.025.06zM36.245 14.816l-1.414 1.414c.13.13 3.172 3.225 3.172 7.775 0 4.145-2.439 7.009-3.187 7.788l1.444 1.385c.878-.915 3.743-4.28 3.743-9.173 0-5.278-3.373-8.804-3.758-9.189z\" }),\n React.createElement(\"path\", { d: \"m40.457 9.216-1.414 1.414c.223.223 5.46 5.55 5.46 13.375 0 7.123-4.19 12.049-5.475 13.389l1.444 1.384c1.415-1.476 6.03-6.904 6.03-14.773 0-8.498-5.426-14.17-6.045-14.79z\" }));\n }\n if (variant === \"small\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"12\", height: \"12\", viewBox: \"0 0 12 12\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M4.979 3.69v4.62l-1.153-.794-.058-.04-.062-.034a2.364 2.364 0 0 0-1.122-.283H1.33V4.84h1.254a2.362 2.362 0 0 0 1.122-.284l.062-.033.058-.04L4.98 3.69M5.8 1.618a.512.512 0 0 0-.245.061L3.073 3.388a1.025 1.025 0 0 1-.489.123H.508A.505.505 0 0 0 0 4.014v3.972a.505.505 0 0 0 .508.502h2.076a1.026 1.026 0 0 1 .489.124l2.483 1.709a.511.511 0 0 0 .69-.2.498.498 0 0 0 .063-.241V2.12a.505.505 0 0 0-.508-.502zM7.736 9.263 6.978 8.17A2.508 2.508 0 0 0 8.013 6a2.517 2.517 0 0 0-1.03-2.168l.75-1.097A3.827 3.827 0 0 1 9.343 6a3.879 3.879 0 0 1-1.607 3.263z\" }),\n React.createElement(\"path\", { d: \"m9.732 10.852-.944-.936c.037-.039.097-.091.177-.158a4.482 4.482 0 0 0 1.65-3.757 4.474 4.474 0 0 0-1.657-3.768 2.457 2.457 0 0 1-.165-.145l.937-.944.08.068a5.784 5.784 0 0 1 2.136 4.789 5.794 5.794 0 0 1-2.125 4.775z\" }));\n }\n return null;\n}, { displayName: 'VolumeMaximum' }));\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nexport var VolumeMedium = React.forwardRef(Object.assign(function (props, forwardRef) {\n var variant = props.variant || \"default\";\n if (variant === \"default\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M13.994 3.212a1.03 1.03 0 0 0-.49.124l-6.33 3.426a2.057 2.057 0 0 1-.979.248H2.033a1.014 1.014 0 0 0-1.02 1.008v7.964a1.014 1.014 0 0 0 1.02 1.008h4.163a2.058 2.058 0 0 1 .979.248l6.33 3.426a1.026 1.026 0 0 0 1.383-.4.997.997 0 0 0 .126-.484V4.22a1.014 1.014 0 0 0-1.02-1.008zM2.344 8.34H5.71v7.32H2.343zM13.683 12v7.248l-5.876-3.18a3.376 3.376 0 0 0-.768-.3V8.232a3.385 3.385 0 0 0 .768-.3l5.875-3.18zM17.509 16.451l-.947-.934a5.33 5.33 0 0 0 1.443-3.52 5.289 5.289 0 0 0-1.44-3.52l.944-.937a6.705 6.705 0 0 1 1.826 4.457 6.625 6.625 0 0 1-1.826 4.454z\" }));\n }\n if (variant === \"large\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"48\", height: \"48\", viewBox: \"0 0 48 48\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M-30.986-17.947v7.965c0 .556.456 1.007 1.019 1.007h4.163c.342 0 .679.085.979.248l6.33 3.426a1.025 1.025 0 0 0 1.383-.4.999.999 0 0 0 .126-.484v-15.56c0-.557-.457-1.008-1.02-1.008-.17 0-.34.043-.49.124l-6.33 3.426c-.3.163-.636.248-.978.248h-4.163c-.563 0-1.02.451-1.02 1.008zM-30.986 7.79v7.964c0 .556.456 1.007 1.019 1.007h4.163c.342 0 .679.086.979.248l6.33 3.427a1.025 1.025 0 0 0 1.383-.4.999.999 0 0 0 .126-.484V3.99c0-.556-.457-1.008-1.02-1.008-.17 0-.34.043-.49.124l-6.33 3.427c-.3.162-.636.247-.978.247h-4.163c-.563 0-1.02.452-1.02 1.008zM28.564 5.999c-.348 0-.696.082-1.003.246L14.6 13.267a4.296 4.296 0 0 1-2.007.512H4.077c-1.146 0-2.088.921-2.088 2.068v16.297c0 1.147.942 2.068 2.088 2.068h8.517c.696 0 1.393.164 2.007.512l12.96 7.022a2.2 2.2 0 0 0 1.003.246c.737 0 1.454-.389 1.822-1.065.164-.307.266-.634.266-.982V8.087A2.071 2.071 0 0 0 28.564 6zM3.989 32.144V15.847c0-.032.038-.068.088-.068H12v16.433H4.077c-.05 0-.088-.036-.088-.068zm24.642 7.825a.106.106 0 0 1-.067.023c-.014 0-.035 0-.089-.025l-12.888-6.983A5.894 5.894 0 0 0 14 32.379V15.608a6.447 6.447 0 0 0 1.554-.582l12.948-7.017a.16.16 0 0 1 .062-.01c.063 0 .088.026.088.088l.003 31.822s-.006.025-.025.06zM35.751 33.173l-1.443-1.385c.748-.78 3.186-3.643 3.186-7.788 0-4.556-3.042-7.644-3.17-7.772l1.411-1.417c.385.384 3.76 3.904 3.76 9.189 0 4.893-2.866 8.258-3.744 9.173z\" }));\n }\n if (variant === \"small\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"12\", height: \"12\", viewBox: \"0 0 12 12\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M4.979 3.69v4.62l-1.153-.794-.058-.04-.062-.034a2.364 2.364 0 0 0-1.122-.284H1.33V4.841h1.254a2.362 2.362 0 0 0 1.122-.284l.062-.033.058-.04L4.98 3.69M5.8 1.618a.513.513 0 0 0-.245.061L3.073 3.388a1.025 1.025 0 0 1-.489.123H.508A.505.505 0 0 0 0 4.014v3.972a.505.505 0 0 0 .508.502h2.076a1.026 1.026 0 0 1 .489.124l2.483 1.709a.511.511 0 0 0 .69-.2.498.498 0 0 0 .063-.241V2.12a.505.505 0 0 0-.508-.503zM7.736 9.263 6.978 8.17A2.508 2.508 0 0 0 8.013 6a2.504 2.504 0 0 0-1.028-2.166l.747-1.101A3.817 3.817 0 0 1 9.342 6a3.88 3.88 0 0 1-1.607 3.263z\" }));\n }\n return null;\n}, { displayName: 'VolumeMedium' }));\n","import * as React from 'react';\nimport { useCallback, useContext, useEffect, useMemo, useState, useRef, } from 'react';\nimport { VolumeMaximum, VolumeMedium, VolumeMute, } from '@volkswagen-onehub/icons-core';\nimport { styled } from '../../theme-provider';\nimport { CTA } from '../../call-to-action';\nimport { MediaContext } from '..';\nconst StyledIndicator = styled.div.withConfig({ displayName: \"StyledIndicator\", componentId: \"sc-zfe6sr\" }) `position:absolute;bottom:var(--volumePercent);left:50%;opacity:0;width:${(props) => props.theme.size.static200};height:${(props) => props.theme.size.static200};border-radius:50%;background:${(props) => props.theme.interaction.recipe450.active};transform:translateX(-50%)translateY(50%)scale(${({ active }) => (active ? 1.3 : 1)});transform-origin:center center;backface-visibility:hidden;transition:opacity 0.2s ease-in-out;`;\nconst StyledVolumeSlider = styled.div.attrs(({ volume, hoverPosition }) => ({\n style: {\n '--volume': `min(100, max(0, ${volume}))`,\n '--volumePercent': `min(100%, max(0%, ${volume}%))`,\n '--hoverPosition': `min(100, max(0, ${hoverPosition}))`,\n },\n})).withConfig({ displayName: \"StyledVolumeSlider\", componentId: \"sc-2c57g2\" }) `position:relative;height:100%;width:${(props) => props.theme.size.line.active};background:${(props) => props.theme.interaction.recipe450.default};::before,::after{content:'';position:absolute;bottom:0;left:0;display:block;background:${(props) => props.theme.interaction.recipe450.active};width:100%;height:100%;pointer-events:none;transform-origin:bottom;}::before{transform:scaleY(calc(var(--volume)/ 100));}::after{opacity:0;transform:scaleY(calc(var(--hoverPosition)/ 100));}`;\nconst StyledVolumeSliderWrapper = styled.div.withConfig({ displayName: \"StyledVolumeSliderWrapper\", componentId: \"sc-7xu4rv\" }) `position:absolute;top:0;left:50%;display:flex;width:${(props) => props.theme.size.static500};height:0;padding:${(props) => props.theme.size.static300} 0 ${(props) => props.theme.size.static200} 0;opacity:0;justify-content:center;cursor:pointer;transform:translateX(-50%)translateY(-100%);transition:all 0.2s ease-in-out;background:${(props) => props.theme.shim.hideContext};:hover{${StyledVolumeSlider}{::after{opacity:1;}}}:hover,:focus-within{${StyledIndicator}{opacity:1;}}`;\nconst StyledVolumeWrapper = styled.div.withConfig({ displayName: \"StyledVolumeWrapper\", componentId: \"sc-16o8nz\" }) `position:relative;display:flex;align-items:center;height:100%;:hover,:focus-within{${StyledVolumeSliderWrapper}{height:${(props) => props.theme.size.static650};opacity:1;}}`;\nexport const VolumeSlider = (props) => {\n const { muteTitle, unmuteTitle } = props;\n const volumeSliderRef = useRef(null);\n const volumeSliderWrapperRef = useRef(null);\n const mediaElement = useContext(MediaContext);\n const [volume, setVolume] = useState(0);\n const [muted, setMuted] = useState(false);\n const [hoverPosition, setHoverPosition] = useState(0);\n const [volumeCanBeSet, setVolumeCanBeSet] = useState(false);\n const [active, setActive] = useState(false);\n useEffect(() => {\n const video = document.createElement('video');\n video.addEventListener('volumechange', () => {\n setVolumeCanBeSet(video.volume == 0.5 ? true : false);\n });\n video.volume = 0.5;\n }, []);\n const handleTouchMove = useCallback((e) => {\n var _a, _b;\n if (!mediaElement || mediaElement.seekable.length === 0) {\n return;\n }\n const top = ((_a = volumeSliderRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().top) || 0;\n const height = ((_b = volumeSliderRef.current) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect().height) || 0;\n e.preventDefault();\n const volume = Math.max(0, Math.min(1, 1 - (e.targetTouches[0].clientY - top) / height));\n setHoverPosition(volume * 100);\n mediaElement.volume = volume;\n mediaElement.muted = false;\n setVolume(volume * 100);\n }, [mediaElement]);\n useEffect(() => {\n const current = volumeSliderWrapperRef === null || volumeSliderWrapperRef === void 0 ? void 0 : volumeSliderWrapperRef.current;\n current === null || current === void 0 ? void 0 : current.addEventListener('touchmove', handleTouchMove, {\n passive: false,\n });\n return () => {\n current === null || current === void 0 ? void 0 : current.removeEventListener('touchmove', handleTouchMove);\n };\n }, [volumeSliderWrapperRef, volumeSliderWrapperRef.current, handleTouchMove]);\n const handleVolumechange = useCallback(() => {\n const muted = (mediaElement === null || mediaElement === void 0 ? void 0 : mediaElement.muted) || false;\n const volume = mediaElement ? mediaElement.volume * 100 : 0;\n setVolume(muted ? 0 : Math.round(volume));\n setMuted(muted);\n }, [mediaElement]);\n useEffect(() => {\n handleVolumechange();\n }, [handleVolumechange]);\n useEffect(() => {\n mediaElement === null || mediaElement === void 0 ? void 0 : mediaElement.addEventListener('volumechange', handleVolumechange);\n return () => {\n mediaElement === null || mediaElement === void 0 ? void 0 : mediaElement.removeEventListener('volumechange', handleVolumechange);\n };\n }, [handleVolumechange, mediaElement]);\n const handleClick = useCallback((event) => {\n var _a, _b;\n if (!mediaElement || mediaElement.seekable.length === 0) {\n return;\n }\n const top = ((_a = volumeSliderRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().top) || 0;\n const height = ((_b = volumeSliderRef.current) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect().height) || 0;\n event.preventDefault();\n event.stopPropagation();\n mediaElement.volume = Math.max(0, Math.min(1, 1 - (event.clientY - top) / height));\n }, [mediaElement]);\n const handleHover = useCallback((e) => {\n var _a, _b;\n const top = ((_a = volumeSliderRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().top) || 0;\n const height = ((_b = volumeSliderRef.current) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect().height) || 0;\n const volume = Math.max(0, Math.min(1, 1 - (e.clientY - top) / height));\n setHoverPosition(volume * 100);\n if (mediaElement && e.buttons === 1) {\n mediaElement.volume = volume;\n mediaElement.muted = false;\n setVolume(volume * 100);\n }\n }, [mediaElement]);\n const handleClickStart = useCallback(() => {\n if (mediaElement && mediaElement.seekable.length === 0) {\n mediaElement.load();\n }\n setActive(true);\n }, [mediaElement]);\n const handleClickEnd = useCallback(() => {\n setActive(false);\n }, []);\n const handleKeyDown = useCallback((event) => {\n if (mediaElement) {\n const factor = event.shiftKey ? 0.2 : 0.05;\n if (event.key === 'ArrowUp' || event.key === 'ArrowRight') {\n event.preventDefault();\n const newVolume = Math.max(0, Math.min(1, mediaElement.volume + factor));\n mediaElement.volume = newVolume;\n mediaElement.muted = false;\n }\n if (event.key === 'ArrowDown' || event.key === 'ArrowLeft') {\n event.preventDefault();\n const newVolume = Math.max(0, Math.min(1, mediaElement.volume - factor));\n mediaElement.volume = newVolume;\n mediaElement.muted = false;\n }\n if (event.key === 'Home') {\n event.preventDefault();\n mediaElement.volume = 0;\n }\n if (event.key === 'End') {\n event.preventDefault();\n mediaElement.volume = 1;\n }\n }\n }, [mediaElement]);\n const handleVolumeCTAClick = useCallback((event) => {\n const volumeSliderWrapper = volumeSliderWrapperRef.current;\n if (!mediaElement || !volumeSliderWrapper) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n const volumeSliderWrapperIsVisible = window.getComputedStyle(volumeSliderWrapper).opacity;\n if (volumeSliderWrapperIsVisible !== '0') {\n mediaElement.muted = !mediaElement.muted;\n }\n }, [mediaElement, volumeSliderWrapperRef, volumeSliderWrapperRef.current]);\n const volumeString = useMemo(() => {\n return `${Math.round(volume)}%`;\n }, [volume]);\n const VolumeIcon = useMemo(() => {\n if (volume === 0 || muted) {\n return React.createElement(VolumeMute, null);\n }\n if (volume >= 75) {\n return React.createElement(VolumeMaximum, null);\n }\n return React.createElement(VolumeMedium, null);\n }, [volume, muted]);\n if (!volumeCanBeSet) {\n return React.createElement(React.Fragment, null);\n }\n return (React.createElement(StyledVolumeWrapper, { onKeyDown: handleKeyDown, onTouchStart: handleClickStart, onTouchEnd: handleClickEnd, onMouseDown: handleClickStart, onMouseUp: handleClickEnd },\n React.createElement(CTA, { tag: \"button\", emphasis: \"tertiary\", title: muted ? unmuteTitle : muteTitle, ariaLabel: muted ? unmuteTitle : muteTitle, onClick: handleVolumeCTAClick, icon: VolumeIcon }),\n React.createElement(StyledVolumeSliderWrapper, { ref: volumeSliderWrapperRef, onClick: handleClick, onMouseMove: handleHover },\n React.createElement(StyledVolumeSlider, { role: \"slider\", \"aria-valuemin\": 0, \"aria-valuemax\": 100, \"aria-valuenow\": volume, \"aria-valuetext\": volumeString, hoverPosition: hoverPosition, tabIndex: 0, volume: volume, ref: volumeSliderRef },\n React.createElement(StyledIndicator, { active: active })))));\n};\nVolumeSlider.displayName = 'VolumeSlider';\n","export * from './accordion';\nexport * from './alert-layer';\nexport * from './aspect-ratio-container';\nexport * from './breakpoint-wrapper';\nexport * from './button-next-best-action';\nexport * from './button-next';\nexport * from './button-previous';\nexport { CTA } from './call-to-action';\nexport * from './character-counter';\nexport * from './checkbox';\nexport * from './container';\nexport * from './content-layer';\nexport * from './content-layer-v2';\nexport * from './demo';\nexport * from './deprecated';\nexport * from './disclaimer-layer';\nexport * from './disclaimers';\nexport * from './divider';\nexport * from './dom-node-exposer';\nexport * from './external-link-indicator';\nexport * from './fieldset';\nexport * from './figure';\nexport * from './fixed-width-container';\nexport * from './focus-layer';\nexport * from './fullscreen-layer';\nexport * from './gallery';\nexport * from './gallery/arrow-buttons';\nexport * from './gallery/navigation-bullets';\nexport * from './gallery/navigation-images';\nexport { createA11yOutlineStyles } from './helpers/a11y';\nexport { createElectricTransition, } from './helpers/animation';\nexport { Breakpoints, compareBreakpoints } from './helpers/breakpoint';\nexport { hexColorToRgba } from './helpers/color';\nexport { getGridColumn, getColumnsWidthForBreakpoint } from './helpers/grid';\nexport { InputAppearance } from './helpers/input';\nexport * from './hoc';\nexport * from './image';\nexport * from './infobox';\nexport { StyledIntegratorRoot, IntegratorRoot, } from './integrator-root';\nexport * from './interaction-layer';\nexport { Language } from './language';\nexport * from './layer-wrapper';\nexport * from './layout';\nexport * from './list';\nexport * from './map-topography';\nexport * from './menu-button';\nexport * from './moving-frame';\nexport * from './multi-select';\nexport * from './navigation-level-list';\nexport * from './radio-button';\nexport * from './reference-badge';\nexport * from './richtext';\nexport * from './select';\nexport * from './shim-layer';\nexport * from './skip-link';\nexport * from './spinner';\nexport * from './switch';\nexport * from './tabs';\nexport * from './text';\nexport * from './text-area';\nexport * from './text-input';\nexport * from './theme-provider';\nexport * from './toggle';\nexport * from './top-bar';\nexport * from './picture';\nexport * from './media';\nexport const COMPONENTS_CORE_VERSION = '62.25.7';\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import axios, { AxiosResponse } from 'axios';\nimport { AppadapResponse } from 'src/types';\nimport { getMolecularUrl } from 'src/bff';\nimport { reportErrorSentry } from 'src/bff';\n\nexport const appadapAppointmentCreate = async (formData: FormData): Promise> => {\n try {\n const MOLECULAR_URL = getMolecularUrl();\n const response = await axios.post(`${MOLECULAR_URL}/request-appadap-appointment-create.php`, formData);\n return response;\n } catch (error) {\n reportErrorSentry(error);\n return null;\n }\n};\n","import axios, { AxiosResponse } from 'axios';\nimport { MolecularResponse } from 'src/types';\nimport { getMolecularUrl } from 'src/bff';\nimport { reportErrorSentry } from 'src/bff';\n\nexport const dpsSend = async (formData: FormData): Promise> => {\n try {\n const MOLECULAR_URL = getMolecularUrl();\n const response = await axios.post(`${MOLECULAR_URL}/request-dps-send.php`, formData);\n return response;\n } catch (error) {\n reportErrorSentry(error);\n return null;\n }\n};\n","import { getMolecularCdnServiceConfig } from 'src/feature-app';\n\nconst handleErrorInRetrievingExternalConfig = (): null => {\n console.error('Error retrieving Molecular CDN service config provider.');\n return null;\n};\n\nexport const getMolecularCdnUrl = (): string | null => {\n const molecularCdn = getMolecularCdnServiceConfig();\n\n if (!molecularCdn) {\n return handleErrorInRetrievingExternalConfig();\n }\n\n return molecularCdn.urlOrigin + molecularCdn.urlPath;\n};\n","import Axios from 'axios';\nimport { reportErrorSentry } from 'src/bff';\nimport { DomainResponse } from 'src/types';\nimport { getMolecularCdnUrl } from '../get-molecular-cdn-url';\n\nexport const fetchProvince = async (token?: string): Promise => {\n const molecularCdn = getMolecularCdnUrl();\n const requestToken = token ? token : 'VW_DDB_FRM_LEM_REC_LEM';\n\n try {\n const response = await Axios.get(`${molecularCdn}/request-dps-domain.php?token=${requestToken}&domain=Province`, {\n timeout: 10000,\n });\n return response.data;\n } catch (err) {\n reportErrorSentry(err);\n return null;\n }\n};\n\nexport const fetchDealers = async (code: string, token?: string): Promise => {\n const molecularCdn = getMolecularCdnUrl();\n const requestToken = token ? token : 'VW_DDB_FRM_LEM_REC_LEM';\n\n try {\n const response = await Axios.get(\n `${molecularCdn}/request-dps-domain.php?token=${requestToken}&domain=Installation&relatedDomain=FRML_TXT_codVentaProvincia__c&relatedValue=${code}`,\n { timeout: 10000 }\n );\n return response.data;\n } catch (err) {\n reportErrorSentry(err);\n return null;\n }\n};\n\nexport const fetchTreatment = async (token?: string): Promise => {\n const molecularCdn = getMolecularCdnUrl();\n const requestToken = token ? token : 'VW_DDB_FRM_LEM_REC_LEM';\n\n try {\n const response = await Axios.get(`${molecularCdn}/request-dps-domain.php?token=${requestToken}&domain=Treatment`, {\n timeout: 10000,\n });\n return response.data;\n } catch (err) {\n reportErrorSentry(err);\n return null;\n }\n};\n","import axios, { AxiosResponse } from 'axios';\nimport { SelectExtendedList } from 'src/components';\nimport { getMolecularCdnUrl } from '../get-molecular-cdn-url';\nimport { reportErrorSentry } from 'src/bff';\n\nexport interface CarlinesCitaResponse {\n content: SelectExtendedList[];\n}\n\nexport const getCarlinesCita = async (isComerciales?: boolean): Promise => {\n const molecularCdn = getMolecularCdnUrl();\n const groupBrand = isComerciales ? 'N' : 'V';\n try {\n const response: AxiosResponse = await axios.get(\n `${molecularCdn}/request-appadap-carlines.php?group_brand=${groupBrand}`\n );\n\n // Actualmente devuelve 503 Service Temporarily... y no se detecta como error\n if (typeof response.data.content === 'string') {\n return null;\n }\n return response.data.content;\n } catch (error) {\n reportErrorSentry(error);\n return null;\n }\n};\n","import axios, { AxiosResponse } from 'axios';\nimport { getDataUrl } from '../get-data-url';\nimport { CarlineBase } from 'src/types';\nimport { reportErrorSentry } from 'src/bff';\n\nexport const getCarlines = async (): Promise => {\n try {\n const dataUrl = getDataUrl();\n \n const response: AxiosResponse<{ carlines: CarlineBase[] }> = await axios.get(`${dataUrl}/getCarlines`);\n return response.data.carlines;\n \n } catch (error) {\n reportErrorSentry(error);\n return null;\n }\n};\n","import axios, { AxiosResponse } from 'axios';\nimport { Color } from 'src';\nimport { reportErrorSentry } from 'src/bff';\nimport { getDataUrlWithoutTenant } from '../get-data-url';\n\ninterface ColoresRequest {\n colores: Color[];\n}\n\nexport const getColors = async () => {\n const dataUrl = getDataUrlWithoutTenant();\n // const dataUrl = 'https://pre-data-01.volkswagen.es/api';\n\n try {\n const response: AxiosResponse = await axios.get(`${dataUrl}/getColores`);\n return response.data;\n } catch (err) {\n reportErrorSentry(err);\n return null;\n }\n};\n","import axios, { AxiosResponse } from 'axios';\nimport { reportErrorSentry } from 'src/bff';\nimport { DealersData } from 'src/types';\nimport { getDataUrl } from '../get-data-url';\n\nexport const getDealers = async (): Promise => {\n try {\n const dataUrl = getDataUrl();\n\n if (!dataUrl) {\n console.error('Error during fetch.');\n return null;\n }\n const dealers: AxiosResponse<{ dealers: DealersData[] }> = await axios.get(`${dataUrl}/getDealers`);\n return dealers.data.dealers;\n } catch (error) {\n reportErrorSentry(error);\n return null;\n }\n};\n","import axios, { AxiosResponse } from 'axios';\nimport { reportErrorSentry } from 'src/bff';\nimport { DomainAttributesValues, InstallationResponse } from 'src/types';\nimport { getMolecularCdnUrl } from '../get-molecular-cdn-url';\n\nexport const getInstallations = async (token: string): Promise<{ attributes: DomainAttributesValues[] }[]> => {\n try {\n const molecularCdnUrl = getMolecularCdnUrl();\n\n if (!molecularCdnUrl) {\n console.error('Error during fetch.');\n return null;\n }\n\n const installations: AxiosResponse = await axios.get(\n `${molecularCdnUrl}/request-dps-domain.php?token=${token}&domain=Installation`\n );\n\n return installations.data.content;\n } catch (error) {\n reportErrorSentry(error);\n return null;\n }\n};\n","import { getMolecularServiceConfig } from 'src/feature-app';\n\nconst handleErrorInRetrievingExternalConfig = (): null => {\n console.error('Error retrieving Molecular service config provider.');\n return null;\n};\n\nexport const getMolecularUrl = (): string | null => {\n const molecular = getMolecularServiceConfig();\n\n if (!molecular) {\n return handleErrorInRetrievingExternalConfig();\n }\n\n return molecular.urlOrigin + molecular.urlPath;\n};\n","import axios, { AxiosResponse } from 'axios';\nimport { reportErrorSentry } from 'src/bff';\nimport { getMolecularUrl } from '../get-molecular-url';\n\nexport interface PincodeData {\n status: { code: number };\n params: { pincode: string; token: string };\n content: PincodeResponseOk[] | PincodeResponseKo;\n}\n\nexport interface PincodeResponseOk {\n attributes: PincodeDataAttributes[];\n}\nexport interface PincodeResponseKo {\n code: string;\n data: string;\n message: string;\n status: string;\n}\nexport interface PincodeDataAttributes {\n name: string;\n value: string;\n}\n\nexport const getPincode = async (\n pincode: string,\n token?: string\n): Promise<{ pincodeData: PincodeData; pincodeUsed: boolean; pincodeError: boolean }> => {\n try {\n const MOLECULAR_URL = getMolecularUrl();\n\n if (!token) {\n token = getPincodeToken(pincode);\n\n if (!token) {\n return { pincodeData: null, pincodeUsed: false, pincodeError: true };\n }\n }\n const pincodeData: AxiosResponse = await axios.get(\n `${MOLECULAR_URL}/request-dps-pincode.php?pincode=${pincode}&token=${token}`\n );\n\n if (pincodeData && pincodeData.data && pincodeData.data.status.code === 1) {\n return { pincodeData: pincodeData.data, pincodeUsed: false, pincodeError: false };\n } else {\n if (\n pincodeData &&\n pincodeData.data &&\n pincodeData.data.content &&\n (pincodeData.data.content as PincodeResponseKo).message.includes('PINCODE_ALREADY_USED')\n ) {\n return { pincodeData: null, pincodeUsed: true, pincodeError: false };\n }\n\n return { pincodeData: null, pincodeUsed: false, pincodeError: true };\n }\n } catch (error) {\n console.error(error);\n reportErrorSentry(error);\n return { pincodeData: null, pincodeUsed: false, pincodeError: true };\n }\n};\n\n/**\n * El token viene codificado en base64 en el formato PINCODETOKEN.\n * @param pincode\n */\nexport const getPincodeToken = (pincode: string): string => {\n try {\n const pincodeDecoded = atob(pincode).split(/(?=VW)/g);\n return pincodeDecoded[pincodeDecoded.length - 1];\n } catch (error) {\n reportErrorSentry(error);\n return null;\n }\n};\n","import axios, { AxiosResponse } from 'axios';\nimport { reportErrorSentry } from 'src/bff';\nimport { CarlinesWithSalesgroups } from 'src/types';\nimport { getDataUrl } from '../get-data-url';\n\nexport const getSalesgroups = async (): Promise => {\n try {\n const dataUrl = getDataUrl();\n\n const response: AxiosResponse<{ carlines: CarlinesWithSalesgroups[] }> = await axios.get(\n `${dataUrl}/getSalesgroups`\n );\n\n return response.data.carlines;\n } catch (error) {\n reportErrorSentry(error);\n return null;\n }\n};\n","import axios, { AxiosResponse } from 'axios';\nimport { reportErrorSentry } from 'src/bff';\nimport { modelCar } from 'src/types';\nimport { getDataUrl } from '../get-data-url';\n\nexport const getVehiculosModelo = async (): Promise => {\n try {\n const dataUrl = getDataUrl();\n const response: AxiosResponse = await axios.get(`${dataUrl}/getVehiculosModelos`);\n return response.data.vehiculos;\n } catch (error) {\n reportErrorSentry(error);\n return null;\n }\n};\n","import { ConfigurationWithMandatoryBuildabilityV2 } from '@volkswagen-onehub/car-configuration-feature-service';\nimport axios, { AxiosResponse } from 'axios';\nimport { getVicciServiceConfig } from 'src/feature-app';\nimport { getMarketingCode } from '@volkswagen-onehub/library-services-marketingcode';\nimport {} from '@volkswagen-onehub/financial-data-feature-service';\nimport { reportErrorSentry } from 'src/bff';\n\nexport interface VehicleConfiguration {\n salesgroupKey: string;\n salesgroupName: string;\n modelFilters: any[];\n modelKey: string;\n modelName: string;\n carlineKey: string;\n carlineName: string;\n modelVersion: string;\n modelYear: string;\n exterior: { code: string; name: string };\n interior: { code: string; name: string };\n features: any[];\n}\nexport interface VicciData {\n consolidatedData: {\n vehicleConfiguration: VehicleConfiguration;\n };\n priceData: { body: { amount: number } };\n marketingCode: string;\n featuresData: {\n vehicleCatalogue: { features: any[] };\n };\n}\n\nexport const getVicciData = async (\n config: ConfigurationWithMandatoryBuildabilityV2\n): Promise<{ vicciData: VicciData }> => {\n const tenantDataVersion = await getTenantData();\n\n if (!tenantDataVersion) {\n return { vicciData: { consolidatedData: null, priceData: null, marketingCode: null, featuresData: null } };\n }\n const consolidatedData = await getConsolidatedData(tenantDataVersion, config);\n const priceData = await getPriceData(tenantDataVersion, config);\n const marketingCode = await getMarketingCodeString(tenantDataVersion, config);\n const featuresData = await getFeaturesData(tenantDataVersion, config);\n\n return { vicciData: { consolidatedData, priceData, marketingCode, featuresData } };\n};\n\nexport const getPriceDataWithMarketingCode = async (marketingCode: any) => {\n const vicci = getVicciServiceConfig();\n const tenantDataVersion = await axios.get('https://cdn.venividivicci.de/vcs/tenantDataVersion?tenant=ihdcc-vw-es-es');\n\n try {\n const priceAdapter = await axios.post(\n `https://cdn.venividivicci.de/pcs/priceAdapter/configuration?tenant=ihdcc-vw-es-es&tenantDataVersion=${tenantDataVersion.data.tenantDataVersion}`,\n {\n ...marketingCode.vehicleConfiguration,\n }\n );\n return priceAdapter.data;\n } catch (error) {\n reportErrorSentry(error);\n console.error('Error retrieving price data: ' + error);\n return null;\n }\n};\n\nconst getTenantData = async () => {\n try {\n const vicci = getVicciServiceConfig();\n const response = await axios.get(`${vicci.urlOrigin}/vcs/tenantDataVersion?tenant=${vicci.tenantPrivate}`, {\n withCredentials: true,\n auth: { username: vicci.credentials.username, password: vicci.credentials.password },\n });\n\n return response.data.tenantDataVersion;\n } catch (error) {\n reportErrorSentry(error);\n console.error('Error retrieving tenant data: ' + error);\n return null;\n }\n};\n\nconst getConsolidatedData = async (tenantDataVersion: string, config: ConfigurationWithMandatoryBuildabilityV2) => {\n try {\n const vicci = getVicciServiceConfig();\n\n const vehicleConfiguration = getVehicleConfigForConsolidatedData(config);\n\n const consolidatedData = await axios.post(\n `${vicci.urlOrigin}/vcs/consolidatedData?tenant=${vicci.tenantPrivate}&tenantDataVersion=${tenantDataVersion}&fetchTechnical=true&fetchEco=false&fetchMandatory=false&fetchPrices=false&fetchWltp=false&fetchPackageContents=false&fetchMediaForConfiguration=false`,\n {\n vehicleConfiguration,\n },\n { withCredentials: true, auth: { username: vicci.credentials.username, password: vicci.credentials.password } }\n );\n return consolidatedData.data;\n } catch (error) {\n reportErrorSentry(error);\n console.error('Error retrieving consolidated data: ' + error);\n return null;\n }\n};\n\nconst getPriceData = async (tenantDataVersion: string, config: ConfigurationWithMandatoryBuildabilityV2) => {\n try {\n const vicci = getVicciServiceConfig();\n\n const vehicleConfiguration = getVehicleConfigForPriceData(config);\n const priceAdapter = await axios.post(\n `${vicci.urlOrigin}/pcs/priceAdapter/configuration?tenant=${vicci.tenantPrivate}&tenantDataVersion=${tenantDataVersion}`,\n {\n ...vehicleConfiguration,\n },\n { withCredentials: true, auth: { username: vicci.credentials.username, password: vicci.credentials.password } }\n );\n\n return priceAdapter.data;\n } catch (error) {\n reportErrorSentry(error);\n console.error('Error retrieving price data: ' + error);\n return null;\n }\n};\n\nconst getMarketingCodeString = async (tenantDataVersion: string, config: ConfigurationWithMandatoryBuildabilityV2) => {\n try {\n const vicci = getVicciServiceConfig();\n\n const serviceConfig = {\n name: 'vicci-vgs',\n origin: vicci.urlOrigin,\n path: '/vgs',\n authentication: {\n username: vicci.credentials.username,\n password: vicci.credentials.password,\n },\n };\n\n const configuration = {\n configuration: config,\n tenant: vicci.tenantPrivate,\n language: 'es',\n ttl: 129600,\n dataversion: tenantDataVersion,\n };\n\n const marketingCode = await getMarketingCode(serviceConfig, {}, configuration);\n\n return marketingCode.marketingcode;\n } catch (error) {\n reportErrorSentry(error);\n console.error('Error retrieving marketing code data: ' + error);\n return null;\n }\n};\n\nconst getFeaturesData = async (tenantDataVersion: string, config: ConfigurationWithMandatoryBuildabilityV2) => {\n try {\n const vicci = getVicciServiceConfig();\n\n const vehicleConfiguration = getVehicleConfigForConsolidatedData(config);\n const featuresData = await axios.post(\n `${vicci.urlOrigin}/vcs/featuresAndColorsForConfiguration?tenant=${vicci.tenantPrivate}&tenantDataVersion=${tenantDataVersion}&fetchMandatory=false&fetchPrices=false&fetchPackageContents=true&fetchMediaForConfiguration=false&fetchMediaForFeatures=false&buildabilityCheckType=default&fetchFeatureGroups=true&colorsMandatory=false`,\n {\n vehicleConfiguration,\n },\n { withCredentials: true, auth: { username: vicci.credentials.username, password: vicci.credentials.password } }\n );\n return featuresData.data;\n } catch (error) {\n reportErrorSentry(error);\n console.error('Error retrieving features data: ' + error);\n return null;\n }\n};\n\nconst getVehicleConfigForConsolidatedData = (config: ConfigurationWithMandatoryBuildabilityV2) => {\n return {\n carlineKey: config.carlineId,\n salesgroupKey: config.salesGroupId,\n modelKey: config.modelId,\n modelYear: config.modelYear,\n modelVersion: config.modelVersion,\n exterior: {\n code: config.exteriorId,\n },\n interior: {\n code: config.interiorId,\n },\n features: getFeatures(config.options),\n };\n};\nconst getVehicleConfigForPriceData = (config: ConfigurationWithMandatoryBuildabilityV2) => {\n return {\n carlineKey: config.carlineId,\n exterior: {\n code: config.exteriorId,\n isUserSelected: true,\n },\n features: getFeatures(config.options),\n interior: {\n code: config.interiorId,\n isUserSelected: true,\n },\n modelKey: config.modelId,\n modelVersion: config.modelVersion,\n modelYear: config.modelYear,\n salesgroupKey: config.salesGroupId,\n };\n};\n\nconst getFeatures = (features: string[]) => {\n return features.map((feature) => {\n return { code: feature };\n });\n};\n","import { getFeatureServices, getGoogleApiKeyServiceConfig, getMolecularServiceConfig } from 'src/feature-app';\n\nconst handleErrorInRetrievingExternalConfig = (): null => {\n console.error('Error retrieving Google API Key service config provider.');\n return null;\n};\n\nexport const getGoogleApiKey = (): string | null => {\n const googleApiKeyService = getGoogleApiKeyServiceConfig();\n\n if (!googleApiKeyService) {\n return handleErrorInRetrievingExternalConfig();\n }\n\n return googleApiKeyService.customConfig?.apiKey;\n};\n","import { getSentryHub } from 'src/feature-app/sentry';\n\nexport const reportErrorSentry = (error: any) => {\n const hub = getSentryHub();\n hub.run((currentHub) => {\n currentHub.withScope((scope) => {\n currentHub.captureException(error);\n });\n });\n};\n","import { Steps } from 'src/types';\n\nexport const getIndexInSteps = (steps: Steps[], stepName: string) => {\n if (steps?.length === 0 || !stepName) {\n return;\n }\n return steps.findIndex((step) => step.name === stepName);\n};\n\n/**\n * En caso de haber eliminado un step hay que volver a añadirlo de nuevo con los steps por defecto y llamar a la función handleNextStep ya que \n * ésta se llama antes de tiempo y realiza el cálculo con los steps sin actualizar.\n * @param steps \n * @param stepName \n */\nexport const addRemovedStep = (initialSteps: Steps[], actualSteps: Steps[], stepName: string, screenIndex: number) => {\n const addedStep = getIndexInSteps(initialSteps, stepName);\n actualSteps.splice(screenIndex + 1, 0, initialSteps[addedStep]);\n return actualSteps;\n};\n\n\nexport const removeStep = (steps: Steps[], stepName: string): Steps[] => {\n const indexToSplice = getIndexInSteps(steps, stepName);\n \n if (indexToSplice !== -1) {\n steps.splice(indexToSplice, 1);\n }\n return steps;\n};\n\nexport const removeMultipleSteps = (steps: Steps[], stepNames: string[]): Steps[] => {\n const indexesToSplice = stepNames.map(stepName => getIndexInSteps(steps, stepName));\n\n const newSteps = steps.filter((step, index) => {\n return indexesToSplice.indexOf(index) === -1;\n });\n\n return newSteps;\n};\n\nexport const removeMultipleStepsAndResetScreenIndex = (steps: Steps[], stepNames: string[]): Steps[] => {\n const newSteps = removeMultipleSteps(steps, stepNames);\n\n return resetStepsScreenIndex(newSteps);\n};\n\nexport const resetStepsScreenIndex = (steps: Steps[]) => {\n return steps.map((step, index) => {\n step.screenIndex = index;\n return step;\n });\n};\n\n/**\n * Utilizamos esta función cuando queremos eliminar muchos steps seguidos, cuando por ejemplo hay \n * una pregunta que en caso negativo elimina una serie de preguntas condicionales. \n * Hay que pasar el firstStep como el step que desencadena la pregunta y el lastStep como el primer step que tendremos que mostrar\n * después de eliminar.\n * @param steps \n * @param firstStep Este step no se eliminará, se eliminará el siguiente.\n * @param lastStep Este step no se eliminará, se eliminará el anterior.\n */\nexport const getArrayOfStepsNames = (steps: Steps[], firstStep: string, lastStep: string) => {\n const indexOfFirstStep = getIndexInSteps(steps, firstStep);\n const indexOfLastStep = getIndexInSteps(steps, lastStep);\n\n if (indexOfFirstStep !== -1 && indexOfLastStep !== -1) {\n const newSteps = [...steps];\n const stepsToRemove = newSteps.slice(indexOfFirstStep + 1, indexOfLastStep);\n const arrayOfStepsNames = stepsToRemove.map(step => step.name);\n return arrayOfStepsNames;\n }\n return [];\n};\n","import { ChevronDown } from '@volkswagen-onehub/icons-core/dist/ChevronDown';\nimport { ChevronUp } from '@volkswagen-onehub/icons-core/dist/ChevronUp';\nimport { Alert } from '@volkswagen-onehub/icons-core/dist/Alert';\nimport { ArrowUp } from '@volkswagen-onehub/icons-core/dist/ArrowUp';\nimport { ArrowDown } from '@volkswagen-onehub/icons-core/dist/ArrowDown';\nimport { Checkmark } from '@volkswagen-onehub/icons-core/dist/Checkmark';\nimport { ChevronLeft } from '@volkswagen-onehub/icons-core/dist/ChevronLeft';\nimport { ChevronRight } from '@volkswagen-onehub/icons-core/dist/ChevronRight';\nimport { ContactDealer } from '@volkswagen-onehub/icons-core/dist/ContactDealer';\nimport { Route } from '@volkswagen-onehub/icons-core/dist/Route';\nimport { Magnifier } from '@volkswagen-onehub/icons-core/dist/Magnifier';\nimport { Add } from '@volkswagen-onehub/icons-core/dist/Add';\nimport { Remove } from '@volkswagen-onehub/icons-core/dist/Remove';\nimport { ArrowLeft } from '@volkswagen-onehub/icons-core/dist/ArrowLeft';\nimport { Filter } from '@volkswagen-onehub/icons-core/dist/Filter';\nimport { Close } from '@volkswagen-onehub/icons-core/dist/Close';\nimport { Locate } from '@volkswagen-onehub/icons-core/dist/Locate';\nimport { Calc } from '@volkswagen-onehub/icons-core/dist/Calc';\nimport { Calendar } from '@volkswagen-onehub/icons-core/dist/Calendar';\nimport { Interior } from '@volkswagen-onehub/icons-core/dist/Interior';\nimport { Info } from '@volkswagen-onehub/icons-core/dist/Info';\nimport { Mail } from '@volkswagen-onehub/icons-core/dist/Mail';\nimport { Phone } from '@volkswagen-onehub/icons-core/dist/Phone';\nimport { FleetServicePrivate } from '@volkswagen-onehub/icons-core/dist/FleetServicePrivate';\nimport { CarPickupService } from '@volkswagen-onehub/icons-core/dist/CarPickupService';\nimport { StarFilled } from '@volkswagen-onehub/icons-core/dist/StarFilled';\nimport { StarOutline } from '@volkswagen-onehub/icons-core/dist/StarOutline';\nimport { Reload } from '@volkswagen-onehub/icons-core/dist/Reload';\nimport { Edit } from '@volkswagen-onehub/icons-core/dist/Edit';\n\nexport {\n ChevronDown,\n ChevronUp,\n Alert,\n ArrowUp,\n ArrowDown,\n Checkmark,\n ChevronLeft,\n ChevronRight,\n ContactDealer,\n Route,\n Magnifier,\n Add,\n Remove,\n ArrowLeft,\n Filter,\n Close,\n Locate,\n Calc,\n Calendar,\n Interior,\n Info,\n Mail,\n Phone,\n FleetServicePrivate,\n CarPickupService,\n StarOutline,\n StarFilled,\n Reload,\n Edit \n};\n","module.exports = __WEBPACK_EXTERNAL_MODULE__18__;","import * as React from 'react';\nimport { styled } from '../theme-provider';\nimport { isBreakpointConfig, createStylesForBreakpoints, } from '../helpers/breakpoint';\nimport { warnWithTrace } from '../helpers/logger';\nexport var TextAppearance;\n(function (TextAppearance) {\n TextAppearance[\"headline600\"] = \"headline600\";\n TextAppearance[\"headline550\"] = \"headline550\";\n TextAppearance[\"headline500\"] = \"headline500\";\n TextAppearance[\"headline450\"] = \"headline450\";\n TextAppearance[\"headline400\"] = \"headline400\";\n TextAppearance[\"headline350\"] = \"headline350\";\n TextAppearance[\"headline300\"] = \"headline300\";\n TextAppearance[\"headline250\"] = \"headline250\";\n TextAppearance[\"headline200\"] = \"headline200\";\n TextAppearance[\"label300\"] = \"label300\";\n TextAppearance[\"label250\"] = \"label250\";\n TextAppearance[\"label200\"] = \"label200\";\n TextAppearance[\"label150\"] = \"label150\";\n TextAppearance[\"label100\"] = \"label100\";\n TextAppearance[\"copy300\"] = \"copy300\";\n TextAppearance[\"copy250\"] = \"copy250\";\n TextAppearance[\"copy200\"] = \"copy200\";\n TextAppearance[\"copy150\"] = \"copy150\";\n TextAppearance[\"copy100\"] = \"copy100\";\n TextAppearance[\"headline0600\"] = \"headline600\";\n TextAppearance[\"headline0550\"] = \"headline550\";\n TextAppearance[\"headline0500\"] = \"headline500\";\n TextAppearance[\"headline0450\"] = \"headline450\";\n TextAppearance[\"headline0400\"] = \"headline400\";\n TextAppearance[\"headline0350\"] = \"headline350\";\n TextAppearance[\"headline0300\"] = \"headline300\";\n TextAppearance[\"headline0250\"] = \"headline250\";\n TextAppearance[\"headline0200\"] = \"headline200\";\n TextAppearance[\"label0300\"] = \"label300\";\n TextAppearance[\"label0250\"] = \"label250\";\n TextAppearance[\"label0200\"] = \"label200\";\n TextAppearance[\"label0150\"] = \"label150\";\n TextAppearance[\"label0100\"] = \"label100\";\n TextAppearance[\"copy0300\"] = \"copy300\";\n TextAppearance[\"copy0250\"] = \"copy250\";\n TextAppearance[\"copy0200\"] = \"copy200\";\n TextAppearance[\"copy0150\"] = \"copy150\";\n TextAppearance[\"copy0100\"] = \"copy100\";\n})(TextAppearance || (TextAppearance = {}));\nexport var TextTag;\n(function (TextTag) {\n TextTag[\"span\"] = \"span\";\n TextTag[\"div\"] = \"div\";\n TextTag[\"p\"] = \"p\";\n TextTag[\"h1\"] = \"h1\";\n TextTag[\"h2\"] = \"h2\";\n TextTag[\"h3\"] = \"h3\";\n TextTag[\"h4\"] = \"h4\";\n TextTag[\"h5\"] = \"h5\";\n TextTag[\"sub\"] = \"sub\";\n TextTag[\"sup\"] = \"sup\";\n TextTag[\"strong\"] = \"strong\";\n TextTag[\"del\"] = \"del\";\n TextTag[\"legend\"] = \"legend\";\n TextTag[\"dt\"] = \"dt\";\n TextTag[\"dd\"] = \"dd\";\n})(TextTag || (TextTag = {}));\nexport var TextAlignment;\n(function (TextAlignment) {\n TextAlignment[\"center\"] = \"center\";\n TextAlignment[\"left\"] = \"left\";\n TextAlignment[\"right\"] = \"right\";\n TextAlignment[\"start\"] = \"start\";\n TextAlignment[\"end\"] = \"end\";\n})(TextAlignment || (TextAlignment = {}));\nexport var TextColor;\n(function (TextColor) {\n TextColor[\"primary\"] = \"primary\";\n TextColor[\"secondary\"] = \"secondary\";\n TextColor[\"inherit\"] = \"inherit\";\n})(TextColor || (TextColor = {}));\nexport var WhiteSpace;\n(function (WhiteSpace) {\n WhiteSpace[\"normal\"] = \"normal\";\n WhiteSpace[\"nowrap\"] = \"nowrap\";\n WhiteSpace[\"pre\"] = \"pre\";\n WhiteSpace[\"preLine\"] = \"pre-line\";\n WhiteSpace[\"preWrap\"] = \"pre-wrap\";\n WhiteSpace[\"initial\"] = \"initial\";\n WhiteSpace[\"inherit\"] = \"inherit\";\n})(WhiteSpace || (WhiteSpace = {}));\nconst headAppearanceList = [\n TextAppearance.headline600,\n TextAppearance.headline550,\n TextAppearance.headline500,\n TextAppearance.headline450,\n TextAppearance.headline400,\n TextAppearance.headline350,\n TextAppearance.headline300,\n TextAppearance.headline250,\n TextAppearance.headline200,\n TextAppearance.headline0600,\n TextAppearance.headline0550,\n TextAppearance.headline0500,\n TextAppearance.headline0450,\n TextAppearance.headline0400,\n TextAppearance.headline0350,\n TextAppearance.headline0300,\n TextAppearance.headline0250,\n TextAppearance.headline0200,\n];\nfunction createFontStyles(props) {\n const { bold, staticSize, sub, sup, appearance, theme } = props;\n const textAppearance = theme.textAppearances[appearance];\n if (!textAppearance) {\n warnWithTrace(`The textAppearance ${appearance} could not be found`);\n return '';\n }\n const { fontFamily } = textAppearance;\n const { fontSize, letterSpacing, lineHeight, reducedFontSize } = staticSize\n ? textAppearance.static\n : textAppearance;\n const isHeadline = headAppearanceList.includes(appearance);\n const fontWeight = bold\n ? theme.text.weight.bold\n : isHeadline\n ? theme.text.weight.light\n : theme.text.weight.regular;\n const marginValue = !staticSize || sub || sup\n ? '0.11em'\n : `${fontSize && Math.round(parseInt(fontSize, 10) * 0.11 * 2) / 2}px`;\n const margin = `-${marginValue} 0 ${marginValue} 0`;\n return `\n\t\tmargin: ${margin};\n\t\tfont-family: ${fontFamily};\n\t\tfont-weight: ${fontWeight};\n\t\tfont-size: ${sub || sup ? reducedFontSize : fontSize};\n\t\tline-height: ${sub || sup ? '0' : lineHeight};\n\t\tletter-spacing: ${letterSpacing};\n\t`;\n}\nfunction createFontStylesForBreakpoints(props) {\n if (isBreakpointConfig(props.appearance)) {\n return createStylesForBreakpoints(props.appearance, (appearance) => {\n return createFontStyles(Object.assign(Object.assign({}, props), { appearance: appearance }));\n });\n }\n return createFontStyles(Object.assign(Object.assign({}, props), { appearance: props.appearance }));\n}\nfunction createTextAlignStylesForBreakpoints(props) {\n if (!props.textAlign) {\n return '';\n }\n if (isBreakpointConfig(props.textAlign)) {\n return createStylesForBreakpoints(props.textAlign, (textAlign) => `text-align: ${textAlign};`);\n }\n return `text-align: ${props.textAlign};`;\n}\nconst StyledTextComponent = styled.span.withConfig({ displayName: \"StyledTextComponent\", componentId: \"sc-hqqa9q\" }) `position:${(props) => (props.sub || props.sup) && 'static'};vertical-align:${(props) => {\n if (props.sup) {\n return 'super';\n }\n if (props.sub) {\n return 'sub';\n }\n return '';\n}};color:${(props) => props.textColor === TextColor.inherit\n ? 'inherit'\n : props.textColor === TextColor.secondary\n ? props.theme.text.color.secondary\n : props.theme.text.color.primary};word-break:${(props) => (props.wordBreak && 'break-word') || 'inherit'};&:lang(ko){word-break:keep-all;}${createFontStylesForBreakpoints} ${createTextAlignStylesForBreakpoints} text-decoration:${(props) => props.strikethrough === true\n ? 'line-through'\n : props.strikethrough === false\n ? 'initial'\n : undefined};white-space:${(props) => props.whiteSpace};`;\nStyledTextComponent.displayName = 'StyledTextComponent';\nexport const TextContext = React.createContext({});\nexport const Text = React.memo((props) => {\n const context = React.useContext(TextContext);\n const { appearance = context.textAppearance || TextAppearance.copy0200, bold = context.bold, children, className, color = context.textColor, staticSize = context.staticSize, strikethrough, sub, sup, tag = (sub && TextTag.sub) ||\n (sup && TextTag.sup) ||\n (context.textAppearance && TextTag.span) ||\n TextTag.div, textAlign, wordBreak, whiteSpace, } = props;\n const innerContextValue = React.useMemo(() => ({\n textAppearance: appearance,\n bold,\n textColor: color,\n staticSize,\n }), [appearance, bold, color, staticSize]);\n return (React.createElement(StyledTextComponent, { as: tag, appearance: appearance, bold: bold, textColor: color, staticSize: staticSize, strikethrough: strikethrough, sub: sub, sup: sup, textAlign: textAlign, wordBreak: wordBreak, whiteSpace: whiteSpace, className: className },\n React.createElement(TextContext.Provider, { value: innerContextValue }, children)));\n});\nText.displayName = 'Text';\n","import { isValidElement, useRef, useState, useCallback, useEffect, createContext, useContext, createElement, cloneElement, Fragment } from 'react';\n\nvar isNullOrUndefined = (value) => value == null;\n\nvar isArray = (value) => Array.isArray(value);\n\nconst isObjectType = (value) => typeof value === 'object';\r\nvar isObject = (value) => !isNullOrUndefined(value) && !isArray(value) && isObjectType(value);\n\nvar isHTMLElement = (value) => isObject(value) && value.nodeType === Node.ELEMENT_NODE;\n\nconst VALIDATION_MODE = {\r\n onBlur: 'onBlur',\r\n onChange: 'onChange',\r\n onSubmit: 'onSubmit',\r\n};\r\nconst VALUE = 'value';\r\nconst UNDEFINED = 'undefined';\r\nconst EVENTS = {\r\n BLUR: 'blur',\r\n CHANGE: 'change',\r\n INPUT: 'input',\r\n};\r\nconst SELECT = 'select';\r\nconst INPUT_VALIDATION_RULES = {\r\n max: 'max',\r\n min: 'min',\r\n maxLength: 'maxLength',\r\n minLength: 'minLength',\r\n pattern: 'pattern',\r\n required: 'required',\r\n validate: 'validate',\r\n};\r\nconst REGEX_IS_DEEP_PROP = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/;\r\nconst REGEX_IS_PLAIN_PROP = /^\\w*$/;\r\nconst REGEX_PROP_NAME = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\r\nconst REGEX_ESCAPE_CHAR = /\\\\(\\\\)?/g;\r\nconst REGEX_ARRAY_FIELD_INDEX = /[\\d+]/g;\n\nfunction attachEventListeners({ field: { ref }, handleChange, isRadioOrCheckbox, }) {\r\n if (isHTMLElement(ref) && handleChange) {\r\n ref.addEventListener(isRadioOrCheckbox ? EVENTS.CHANGE : EVENTS.INPUT, handleChange);\r\n ref.addEventListener(EVENTS.BLUR, handleChange);\r\n }\r\n}\n\nvar isKey = (value) => !isArray(value) &&\r\n (REGEX_IS_PLAIN_PROP.test(value) || !REGEX_IS_DEEP_PROP.test(value));\n\nvar stringToPath = (string) => {\r\n const result = [];\r\n string.replace(REGEX_PROP_NAME, (match, number, quote, string) => {\r\n result.push(quote ? string.replace(REGEX_ESCAPE_CHAR, '$1') : number || match);\r\n });\r\n return result;\r\n};\n\nfunction set(object, path, value) {\r\n let index = -1;\r\n const tempPath = isKey(path) ? [path] : stringToPath(path);\r\n const length = tempPath.length;\r\n const lastIndex = length - 1;\r\n while (++index < length) {\r\n const key = tempPath[index];\r\n let newValue = value;\r\n if (index !== lastIndex) {\r\n const objValue = object[key];\r\n newValue =\r\n isObject(objValue) || isArray(objValue)\r\n ? objValue\r\n : !isNaN(+tempPath[index + 1])\r\n ? []\r\n : {};\r\n }\r\n object[key] = newValue;\r\n object = object[key];\r\n }\r\n return object;\r\n}\n\nvar transformToNestObject = (data) => Object.entries(data).reduce((previous, [key, value]) => {\r\n if (!isKey(key)) {\r\n set(previous, key, value);\r\n return previous;\r\n }\r\n return Object.assign(Object.assign({}, previous), { [key]: value });\r\n}, {});\n\nvar isUndefined = (val) => val === undefined;\n\nvar get = (obj, path, defaultValue) => {\r\n const result = path\r\n .split(/[,[\\].]+?/)\r\n .filter(Boolean)\r\n .reduce((result, key) => (isNullOrUndefined(result) ? result : result[key]), obj);\r\n return isUndefined(result) || result === obj\r\n ? isUndefined(obj[path])\r\n ? defaultValue\r\n : obj[path]\r\n : result;\r\n};\n\nvar focusOnErrorField = (fields, fieldErrors) => {\r\n for (const key in fields) {\r\n if (get(fieldErrors, key)) {\r\n const field = fields[key];\r\n if (field) {\r\n if (field.ref.focus) {\r\n field.ref.focus();\r\n break;\r\n }\r\n else if (field.options) {\r\n field.options[0].ref.focus();\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n};\n\nvar removeAllEventListeners = (ref, validateWithStateUpdate) => {\r\n if (isHTMLElement(ref) && ref.removeEventListener) {\r\n ref.removeEventListener(EVENTS.INPUT, validateWithStateUpdate);\r\n ref.removeEventListener(EVENTS.CHANGE, validateWithStateUpdate);\r\n ref.removeEventListener(EVENTS.BLUR, validateWithStateUpdate);\r\n }\r\n};\n\nvar isRadioInput = (element) => element.type === 'radio';\n\nvar isCheckBoxInput = (element) => element.type === 'checkbox';\n\nfunction isDetached(element) {\r\n if (!element) {\r\n return true;\r\n }\r\n if (!(element instanceof HTMLElement) ||\r\n element.nodeType === Node.DOCUMENT_NODE) {\r\n return false;\r\n }\r\n return isDetached(element.parentNode);\r\n}\n\nvar isEmptyObject = (value) => isObject(value) && !Object.keys(value).length;\n\nfunction castPath(value) {\r\n return isArray(value) ? value : stringToPath(value);\r\n}\r\nfunction baseGet(object, path) {\r\n const updatePath = isKey(path) ? [path] : castPath(path);\r\n const length = path.length;\r\n let index = 0;\r\n while (index < length) {\r\n object = isUndefined(object) ? index++ : object[updatePath[index++]];\r\n }\r\n return index == length ? object : undefined;\r\n}\r\nfunction baseSlice(array, start, end) {\r\n let index = -1;\r\n let length = array.length;\r\n if (start < 0) {\r\n start = -start > length ? 0 : length + start;\r\n }\r\n end = end > length ? length : end;\r\n if (end < 0) {\r\n end += length;\r\n }\r\n length = start > end ? 0 : end - start;\r\n const result = Array(length);\r\n while (++index < length) {\r\n result[index] = array[index + start];\r\n }\r\n return result;\r\n}\r\nfunction parent(object, path) {\r\n return path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));\r\n}\r\nfunction baseUnset(object, path) {\r\n const updatePath = isKey(path) ? [path] : castPath(path);\r\n const childObject = parent(object, updatePath);\r\n const key = updatePath[updatePath.length - 1];\r\n const result = !(childObject != null) || delete childObject[key];\r\n let previousObjRef = undefined;\r\n for (let k = 0; k < updatePath.slice(0, -1).length; k++) {\r\n let index = -1;\r\n let objectRef = undefined;\r\n const currentPaths = updatePath.slice(0, -(k + 1));\r\n const currentPathsLength = currentPaths.length - 1;\r\n if (k > 0) {\r\n previousObjRef = object;\r\n }\r\n while (++index < currentPaths.length) {\r\n const item = currentPaths[index];\r\n objectRef = objectRef ? objectRef[item] : object[item];\r\n if (currentPathsLength === index) {\r\n if ((isObject(objectRef) && isEmptyObject(objectRef)) ||\r\n (isArray(objectRef) &&\r\n !objectRef.filter((data) => isObject(data) && !isEmptyObject(data))\r\n .length)) {\r\n previousObjRef ? delete previousObjRef[item] : delete object[item];\r\n }\r\n }\r\n previousObjRef = objectRef;\r\n }\r\n }\r\n return result;\r\n}\r\nfunction unset(object, paths) {\r\n paths.forEach((path) => {\r\n baseUnset(object, path);\r\n });\r\n return object;\r\n}\n\nconst isSameRef = (fieldValue, ref) => fieldValue && fieldValue.ref === ref;\r\nfunction findRemovedFieldAndRemoveListener(fields, handleChange, field, forceDelete) {\r\n const { ref, ref: { name, type }, mutationWatcher, } = field;\r\n const fieldValue = fields[name];\r\n if (!type) {\r\n delete fields[name];\r\n return;\r\n }\r\n if ((isRadioInput(ref) || isCheckBoxInput(ref)) && fieldValue) {\r\n const { options } = fieldValue;\r\n if (isArray(options) && options.length) {\r\n options.filter(Boolean).forEach((option, index) => {\r\n const { ref, mutationWatcher } = option;\r\n if ((ref && isDetached(ref) && isSameRef(option, ref)) || forceDelete) {\r\n removeAllEventListeners(ref, handleChange);\r\n if (mutationWatcher) {\r\n mutationWatcher.disconnect();\r\n }\r\n unset(options, [`[${index}]`]);\r\n }\r\n });\r\n if (options && !options.filter(Boolean).length) {\r\n delete fields[name];\r\n }\r\n }\r\n else {\r\n delete fields[name];\r\n }\r\n }\r\n else if ((isDetached(ref) && isSameRef(fieldValue, ref)) || forceDelete) {\r\n removeAllEventListeners(ref, handleChange);\r\n if (mutationWatcher) {\r\n mutationWatcher.disconnect();\r\n }\r\n delete fields[name];\r\n }\r\n}\n\nconst defaultReturn = {\r\n isValid: false,\r\n value: '',\r\n};\r\nvar getRadioValue = (options) => isArray(options)\r\n ? options.reduce((previous, option) => option && option.ref.checked\r\n ? {\r\n isValid: true,\r\n value: option.ref.value,\r\n }\r\n : previous, defaultReturn)\r\n : defaultReturn;\n\nvar getMultipleSelectValue = (options) => [...options]\r\n .filter(({ selected }) => selected)\r\n .map(({ value }) => value);\n\nvar isFileInput = (element) => element.type === 'file';\n\nvar isMultipleSelect = (element) => element.type === `${SELECT}-multiple`;\n\nvar isEmptyString = (value) => value === '';\n\nconst defaultResult = {\r\n value: false,\r\n isValid: false,\r\n};\r\nconst validResult = { value: true, isValid: true };\r\nvar getCheckboxValue = (options) => {\r\n if (isArray(options)) {\r\n if (options.length > 1) {\r\n const values = options\r\n .filter((option) => option && option.ref.checked)\r\n .map(({ ref: { value } }) => value);\r\n return { value: values, isValid: !!values.length };\r\n }\r\n const { checked, value, attributes } = options[0].ref;\r\n return checked\r\n ? attributes && !isUndefined(attributes.value)\r\n ? isUndefined(value) || isEmptyString(value)\r\n ? validResult\r\n : { value: value, isValid: true }\r\n : validResult\r\n : defaultResult;\r\n }\r\n return defaultResult;\r\n};\n\nfunction getFieldValue(fields, ref) {\r\n const { name, value } = ref;\r\n const field = fields[name];\r\n if (isFileInput(ref)) {\r\n return ref.files;\r\n }\r\n if (isRadioInput(ref)) {\r\n return field ? getRadioValue(field.options).value : '';\r\n }\r\n if (isMultipleSelect(ref)) {\r\n return getMultipleSelectValue(ref.options);\r\n }\r\n if (isCheckBoxInput(ref)) {\r\n return field ? getCheckboxValue(field.options).value : false;\r\n }\r\n return value;\r\n}\n\nvar isString = (value) => typeof value === 'string';\n\nvar getFieldsValues = (fields, search) => {\r\n const output = {};\r\n for (const name in fields) {\r\n if (isUndefined(search) ||\r\n (isString(search)\r\n ? name.startsWith(search)\r\n : isArray(search)\r\n ? search.find((data) => name.startsWith(data))\r\n : search && search.nest)) {\r\n output[name] = getFieldValue(fields, fields[name].ref);\r\n }\r\n }\r\n return output;\r\n};\n\nvar compareObject = (objectA = {}, objectB = {}) => {\r\n const objectAKeys = Object.keys(objectA);\r\n const objectBKeys = Object.keys(objectB);\r\n return (objectAKeys.length === objectBKeys.length &&\r\n objectAKeys.every((key) => objectB[key] && objectB[key] === objectA[key]));\r\n};\n\nvar isSameError = (error, { type, types, message }) => isObject(error) &&\r\n error.type === type &&\r\n error.message === message &&\r\n compareObject(error.types, types);\n\nfunction shouldRenderBasedOnError({ errors, name, error, validFields, fieldsWithValidation, }) {\r\n const isFieldValid = isEmptyObject(error);\r\n const isFormValid = isEmptyObject(errors);\r\n const currentFieldError = get(error, name);\r\n const existFieldError = get(errors, name);\r\n if ((isFieldValid && validFields.has(name)) ||\r\n (existFieldError && existFieldError.isManual)) {\r\n return false;\r\n }\r\n if (isFormValid !== isFieldValid ||\r\n (!isFormValid && !existFieldError) ||\r\n (isFieldValid && fieldsWithValidation.has(name) && !validFields.has(name))) {\r\n return true;\r\n }\r\n return currentFieldError && !isSameError(existFieldError, currentFieldError);\r\n}\n\nvar isRegex = (value) => value instanceof RegExp;\n\nvar getValueAndMessage = (validationData) => {\r\n const isValueMessage = (value) => isObject(value) && !isRegex(value);\r\n return isValueMessage(validationData)\r\n ? validationData\r\n : {\r\n value: validationData,\r\n message: '',\r\n };\r\n};\n\nvar isFunction = (value) => typeof value === 'function';\n\nvar isBoolean = (value) => typeof value === 'boolean';\n\nvar isMessage = (value) => isString(value) || (isObject(value) && isValidElement(value));\n\nfunction getValidateError(result, ref, type = 'validate') {\r\n if (isMessage(result) || (isBoolean(result) && !result)) {\r\n return {\r\n type,\r\n message: isMessage(result) ? result : '',\r\n ref,\r\n };\r\n }\r\n}\n\nvar appendErrors = (name, validateAllFieldCriteria, errors, type, message) => {\r\n if (validateAllFieldCriteria) {\r\n const error = errors[name];\r\n return Object.assign(Object.assign({}, error), { types: Object.assign(Object.assign({}, (error && error.types ? error.types : {})), { [type]: message || true }) });\r\n }\r\n return {};\r\n};\n\nvar validateField = async (fieldsRef, validateAllFieldCriteria, { ref, ref: { type, value, name }, options, required, maxLength, minLength, min, max, pattern, validate, }) => {\r\n var _a;\r\n const fields = fieldsRef.current;\r\n const error = {};\r\n const isRadio = isRadioInput(ref);\r\n const isCheckBox = isCheckBoxInput(ref);\r\n const isRadioOrCheckbox = isRadio || isCheckBox;\r\n const isEmpty = isEmptyString(value);\r\n const appendErrorsCurry = appendErrors.bind(null, name, validateAllFieldCriteria, error);\r\n const getMinMaxMessage = (exceedMax, maxLengthMessage, minLengthMessage, maxType = INPUT_VALIDATION_RULES.maxLength, minType = INPUT_VALIDATION_RULES.minLength) => {\r\n const message = exceedMax ? maxLengthMessage : minLengthMessage;\r\n error[name] = Object.assign({ type: exceedMax ? maxType : minType, message,\r\n ref }, (exceedMax\r\n ? appendErrorsCurry(maxType, message)\r\n : appendErrorsCurry(minType, message)));\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n };\r\n if (required &&\r\n ((!isRadio && !isCheckBox && (isEmpty || isNullOrUndefined(value))) ||\r\n (isBoolean(value) && !value) ||\r\n (isCheckBox && !getCheckboxValue(options).isValid) ||\r\n (isRadio && !getRadioValue(options).isValid))) {\r\n const { value: requiredValue, message: requiredMessage } = isMessage(required)\r\n ? { value: !!required, message: required }\r\n : getValueAndMessage(required);\r\n if (requiredValue) {\r\n error[name] = Object.assign({ type: INPUT_VALIDATION_RULES.required, message: requiredMessage, ref: isRadioOrCheckbox ? (_a = fields[name].options) === null || _a === void 0 ? void 0 : _a[0].ref : ref }, appendErrorsCurry(INPUT_VALIDATION_RULES.required, requiredMessage));\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n if (!isNullOrUndefined(min) || !isNullOrUndefined(max)) {\r\n let exceedMax;\r\n let exceedMin;\r\n const { value: maxValue, message: maxMessage } = getValueAndMessage(max);\r\n const { value: minValue, message: minMessage } = getValueAndMessage(min);\r\n if (type === 'number' || (!type && !isNaN(value))) {\r\n const valueNumber = ref.valueAsNumber || parseFloat(value);\r\n if (!isNullOrUndefined(maxValue)) {\r\n exceedMax = valueNumber > maxValue;\r\n }\r\n if (!isNullOrUndefined(minValue)) {\r\n exceedMin = valueNumber < minValue;\r\n }\r\n }\r\n else {\r\n const valueDate = ref.valueAsDate || new Date(value);\r\n if (isString(maxValue)) {\r\n exceedMax = valueDate > new Date(maxValue);\r\n }\r\n if (isString(minValue)) {\r\n exceedMin = valueDate < new Date(minValue);\r\n }\r\n }\r\n if (exceedMax || exceedMin) {\r\n getMinMaxMessage(!!exceedMax, maxMessage, minMessage, INPUT_VALIDATION_RULES.max, INPUT_VALIDATION_RULES.min);\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n if (isString(value) && !isEmpty && (maxLength || minLength)) {\r\n const { value: maxLengthValue, message: maxLengthMessage, } = getValueAndMessage(maxLength);\r\n const { value: minLengthValue, message: minLengthMessage, } = getValueAndMessage(minLength);\r\n const inputLength = value.toString().length;\r\n const exceedMax = !isNullOrUndefined(maxLengthValue) && inputLength > maxLengthValue;\r\n const exceedMin = !isNullOrUndefined(minLengthValue) && inputLength < minLengthValue;\r\n if (exceedMax || exceedMin) {\r\n getMinMaxMessage(!!exceedMax, maxLengthMessage, minLengthMessage);\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n if (pattern && !isEmpty) {\r\n const { value: patternValue, message: patternMessage } = getValueAndMessage(pattern);\r\n if (isRegex(patternValue) && !patternValue.test(value)) {\r\n error[name] = Object.assign({ type: INPUT_VALIDATION_RULES.pattern, message: patternMessage, ref }, appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, patternMessage));\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n if (validate) {\r\n const fieldValue = getFieldValue(fields, ref);\r\n const validateRef = isRadioOrCheckbox && options ? options[0].ref : ref;\r\n if (isFunction(validate)) {\r\n const result = await validate(fieldValue);\r\n const validateError = getValidateError(result, validateRef);\r\n if (validateError) {\r\n error[name] = Object.assign(Object.assign({}, validateError), appendErrorsCurry(INPUT_VALIDATION_RULES.validate, validateError.message));\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n else if (isObject(validate)) {\r\n let validationResult = {};\r\n for (const [key, validateFunction] of Object.entries(validate)) {\r\n if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\r\n break;\r\n }\r\n const validateResult = await validateFunction(fieldValue);\r\n const validateError = getValidateError(validateResult, validateRef, key);\r\n if (validateError) {\r\n validationResult = Object.assign(Object.assign({}, validateError), appendErrorsCurry(key, validateError.message));\r\n if (validateAllFieldCriteria) {\r\n error[name] = validationResult;\r\n }\r\n }\r\n }\r\n if (!isEmptyObject(validationResult)) {\r\n error[name] = Object.assign({ ref: validateRef }, validationResult);\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n }\r\n return error;\r\n};\n\nconst parseErrorSchema = (error, validateAllFieldCriteria) => isArray(error.inner)\r\n ? error.inner.reduce((previous, { path, message, type }) => (Object.assign(Object.assign({}, previous), (path\r\n ? previous[path] && validateAllFieldCriteria\r\n ? {\r\n [path]: appendErrors(path, validateAllFieldCriteria, previous, type, message),\r\n }\r\n : {\r\n [path]: previous[path] || Object.assign({ message,\r\n type }, (validateAllFieldCriteria\r\n ? {\r\n types: { [type]: message || true },\r\n }\r\n : {})),\r\n }\r\n : {}))), {})\r\n : {\r\n [error.path]: { message: error.message, type: error.type },\r\n };\r\nasync function validateWithSchema(validationSchema, validateAllFieldCriteria, data, validationResolver, context) {\r\n if (validationResolver) {\r\n return validationResolver(data, context);\r\n }\r\n try {\r\n return {\r\n values: await validationSchema.validate(data, {\r\n abortEarly: false,\r\n context,\r\n }),\r\n errors: {},\r\n };\r\n }\r\n catch (e) {\r\n return {\r\n values: {},\r\n errors: transformToNestObject(parseErrorSchema(e, validateAllFieldCriteria)),\r\n };\r\n }\r\n}\n\nvar isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);\n\nconst getPath = (path, values) => {\r\n const getInnerPath = (value, key, isObject) => {\r\n const pathWithIndex = isObject ? `${path}.${key}` : `${path}[${key}]`;\r\n return isPrimitive(value) ? pathWithIndex : getPath(pathWithIndex, value);\r\n };\r\n return isArray(values)\r\n ? values.map((value, key) => getInnerPath(value, key))\r\n : Object.entries(values).map(([key, value]) => getInnerPath(value, key, true));\r\n};\r\nvar getPath$1 = (parentPath, value) => getPath(parentPath, value).flat(Infinity);\n\nvar assignWatchFields = (fieldValues, fieldName, watchFields, inputValue, isSingleField) => {\r\n let value;\r\n watchFields.add(fieldName);\r\n if (isEmptyObject(fieldValues)) {\r\n value = undefined;\r\n }\r\n else if (!isUndefined(fieldValues[fieldName])) {\r\n value = fieldValues[fieldName];\r\n watchFields.add(fieldName);\r\n }\r\n else {\r\n value = get(transformToNestObject(fieldValues), fieldName);\r\n if (!isUndefined(value)) {\r\n getPath$1(fieldName, value).forEach((name) => watchFields.add(name));\r\n }\r\n }\r\n return isUndefined(value)\r\n ? isSingleField\r\n ? inputValue\r\n : get(inputValue, fieldName)\r\n : value;\r\n};\n\nvar skipValidation = ({ isOnChange, hasError, isBlurEvent, isOnSubmit, isReValidateOnSubmit, isOnBlur, isReValidateOnBlur, isSubmitted, }) => (isOnChange && isBlurEvent) ||\r\n (isOnSubmit && isReValidateOnSubmit) ||\r\n (isOnSubmit && !isSubmitted) ||\r\n (isOnBlur && !isBlurEvent && !hasError) ||\r\n (isReValidateOnBlur && !isBlurEvent && hasError) ||\r\n (isReValidateOnSubmit && isSubmitted);\n\nvar getFieldArrayParentName = (name) => name.substring(0, name.indexOf('['));\n\nvar getFieldValueByName = (fields, name) => {\r\n const results = transformToNestObject(getFieldsValues(fields));\r\n return name ? get(results, name, results) : results;\r\n};\n\nfunction getIsFieldsDifferent(referenceArray, differenceArray) {\r\n let isMatch = false;\r\n if (!isArray(referenceArray) ||\r\n !isArray(differenceArray) ||\r\n referenceArray.length !== differenceArray.length) {\r\n return true;\r\n }\r\n for (let i = 0; i < referenceArray.length; i++) {\r\n if (isMatch) {\r\n break;\r\n }\r\n const dataA = referenceArray[i];\r\n const dataB = differenceArray[i];\r\n if (isUndefined(dataB) ||\r\n Object.keys(dataA).length !== Object.keys(dataB).length) {\r\n isMatch = true;\r\n break;\r\n }\r\n for (const key in dataA) {\r\n if (dataA[key] !== dataB[key]) {\r\n isMatch = true;\r\n break;\r\n }\r\n }\r\n }\r\n return isMatch;\r\n}\n\nconst isMatchFieldArrayName = (name, searchName) => RegExp(`^${searchName}[\\\\d+]`.replace(/\\[/g, '\\\\[').replace(/\\]/g, '\\\\]')).test(name);\r\nvar isNameInFieldArray = (names, name) => [...names].some((current) => isMatchFieldArrayName(name, current));\n\nvar isSelectInput = (element) => element.type === `${SELECT}-one`;\n\nfunction onDomRemove(element, onDetachCallback) {\r\n const observer = new MutationObserver(() => {\r\n if (isDetached(element)) {\r\n observer.disconnect();\r\n onDetachCallback();\r\n }\r\n });\r\n observer.observe(window.document, {\r\n childList: true,\r\n subtree: true,\r\n });\r\n return observer;\r\n}\n\nvar modeChecker = (mode) => ({\r\n isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\r\n isOnBlur: mode === VALIDATION_MODE.onBlur,\r\n isOnChange: mode === VALIDATION_MODE.onChange,\r\n});\n\nvar isRadioOrCheckboxFunction = (ref) => isRadioInput(ref) || isCheckBoxInput(ref);\n\nfunction useForm({ mode = VALIDATION_MODE.onSubmit, reValidateMode = VALIDATION_MODE.onChange, validationSchema, validationResolver, validationContext, defaultValues = {}, submitFocusError = true, validateCriteriaMode, } = {}) {\r\n const fieldsRef = useRef({});\r\n const errorsRef = useRef({});\r\n const touchedFieldsRef = useRef({});\r\n const fieldArrayDefaultValues = useRef({});\r\n const watchFieldsRef = useRef(new Set());\r\n const dirtyFieldsRef = useRef(new Set());\r\n const fieldsWithValidationRef = useRef(new Set());\r\n const validFieldsRef = useRef(new Set());\r\n const isValidRef = useRef(true);\r\n const defaultValuesRef = useRef(defaultValues);\r\n const defaultValuesAtRenderRef = useRef({});\r\n const isUnMount = useRef(false);\r\n const isWatchAllRef = useRef(false);\r\n const isSubmittedRef = useRef(false);\r\n const isDirtyRef = useRef(false);\r\n const submitCountRef = useRef(0);\r\n const isSubmittingRef = useRef(false);\r\n const handleChangeRef = useRef();\r\n const resetFieldArrayFunctionRef = useRef({});\r\n const validationContextRef = useRef(validationContext);\r\n const fieldArrayNamesRef = useRef(new Set());\r\n const [, render] = useState();\r\n const { isOnBlur, isOnSubmit, isOnChange } = useRef(modeChecker(mode)).current;\r\n const validateAllFieldCriteria = validateCriteriaMode === 'all';\r\n const isWindowUndefined = typeof window === UNDEFINED;\r\n const shouldValidateSchemaOrResolver = !!(validationSchema || validationResolver);\r\n const isWeb = typeof document !== UNDEFINED &&\r\n !isWindowUndefined &&\r\n !isUndefined(window.HTMLElement);\r\n const isProxyEnabled = isWeb ? 'Proxy' in window : typeof Proxy !== UNDEFINED;\r\n const readFormStateRef = useRef({\r\n dirty: !isProxyEnabled,\r\n dirtyFields: !isProxyEnabled,\r\n isSubmitted: isOnSubmit,\r\n submitCount: !isProxyEnabled,\r\n touched: !isProxyEnabled,\r\n isSubmitting: !isProxyEnabled,\r\n isValid: !isProxyEnabled,\r\n });\r\n const { isOnBlur: isReValidateOnBlur, isOnSubmit: isReValidateOnSubmit, } = useRef(modeChecker(reValidateMode)).current;\r\n validationContextRef.current = validationContext;\r\n const reRender = useCallback(() => {\r\n if (!isUnMount.current) {\r\n render({});\r\n }\r\n }, []);\r\n const shouldRenderBaseOnError = useCallback((name, error, shouldRender = false) => {\r\n let shouldReRender = shouldRender ||\r\n shouldRenderBasedOnError({\r\n errors: errorsRef.current,\r\n error,\r\n name,\r\n validFields: validFieldsRef.current,\r\n fieldsWithValidation: fieldsWithValidationRef.current,\r\n });\r\n if (isEmptyObject(error)) {\r\n if (fieldsWithValidationRef.current.has(name) ||\r\n shouldValidateSchemaOrResolver) {\r\n validFieldsRef.current.add(name);\r\n shouldReRender = shouldReRender || get(errorsRef.current, name);\r\n }\r\n errorsRef.current = unset(errorsRef.current, [name]);\r\n }\r\n else {\r\n const previousError = get(errorsRef.current, name);\r\n validFieldsRef.current.delete(name);\r\n shouldReRender =\r\n shouldReRender ||\r\n (previousError\r\n ? !isSameError(previousError, error[name])\r\n : true);\r\n set(errorsRef.current, name, error[name]);\r\n }\r\n if (shouldReRender && !isNullOrUndefined(shouldRender)) {\r\n reRender();\r\n return true;\r\n }\r\n }, [reRender, shouldValidateSchemaOrResolver]);\r\n const setFieldValue = useCallback((field, rawValue) => {\r\n const { ref, options } = field;\r\n const value = isWeb && isHTMLElement(ref) && isNullOrUndefined(rawValue)\r\n ? ''\r\n : rawValue;\r\n if (isRadioInput(ref) && options) {\r\n options.forEach(({ ref: radioRef }) => (radioRef.checked = radioRef.value === value));\r\n }\r\n else if (isFileInput(ref)) {\r\n if (isString(value)) {\r\n ref.value = value;\r\n }\r\n else {\r\n ref.files = value;\r\n }\r\n }\r\n else if (isMultipleSelect(ref)) {\r\n [...ref.options].forEach((selectRef) => (selectRef.selected = value.includes(selectRef.value)));\r\n }\r\n else if (isCheckBoxInput(ref) && options) {\r\n options.length > 1\r\n ? options.forEach(({ ref: checkboxRef }) => (checkboxRef.checked = value.includes(checkboxRef.value)))\r\n : (options[0].ref.checked = !!value);\r\n }\r\n else {\r\n ref.value = value;\r\n }\r\n }, [isWeb]);\r\n const setDirty = useCallback((name) => {\r\n if (!fieldsRef.current[name] ||\r\n (!readFormStateRef.current.dirty && !readFormStateRef.current.dirtyFields)) {\r\n return false;\r\n }\r\n let isFieldDirty = defaultValuesAtRenderRef.current[name] !==\r\n getFieldValue(fieldsRef.current, fieldsRef.current[name].ref);\r\n const isFieldArray = isNameInFieldArray(fieldArrayNamesRef.current, name);\r\n const previousDirtyFieldsLength = dirtyFieldsRef.current.size;\r\n if (isFieldArray) {\r\n const fieldArrayName = getFieldArrayParentName(name);\r\n isFieldDirty = getIsFieldsDifferent(getFieldValueByName(fieldsRef.current, fieldArrayName), get(defaultValuesRef.current, fieldArrayName));\r\n }\r\n const isDirtyChanged = (isFieldArray ? isDirtyRef.current : dirtyFieldsRef.current.has(name)) !==\r\n isFieldDirty;\r\n if (isFieldDirty) {\r\n dirtyFieldsRef.current.add(name);\r\n }\r\n else {\r\n dirtyFieldsRef.current.delete(name);\r\n }\r\n isDirtyRef.current = isFieldArray\r\n ? isFieldDirty\r\n : !!dirtyFieldsRef.current.size;\r\n return readFormStateRef.current.dirty\r\n ? isDirtyChanged\r\n : previousDirtyFieldsLength !== dirtyFieldsRef.current.size;\r\n }, []);\r\n const setInternalValues = useCallback((name, value, parentFieldName) => {\r\n const isValueArray = isArray(value);\r\n for (const key in value) {\r\n const fieldName = `${parentFieldName || name}${isValueArray ? `[${key}]` : `.${key}`}`;\r\n const field = fieldsRef.current[fieldName];\r\n if (isObject(value[key])) {\r\n setInternalValues(name, value[key], fieldName);\r\n }\r\n if (field) {\r\n setFieldValue(field, value[key]);\r\n setDirty(fieldName);\r\n }\r\n }\r\n }, [setFieldValue, setDirty]);\r\n const setInternalValue = useCallback((name, value) => {\r\n const field = fieldsRef.current[name];\r\n if (field) {\r\n setFieldValue(field, value);\r\n const output = setDirty(name);\r\n if (isBoolean(output)) {\r\n return output;\r\n }\r\n }\r\n else if (!isPrimitive(value)) {\r\n setInternalValues(name, value);\r\n }\r\n }, [setDirty, setFieldValue, setInternalValues]);\r\n const executeValidation = useCallback(async (name, skipReRender) => {\r\n const field = fieldsRef.current[name];\r\n if (field) {\r\n const error = await validateField(fieldsRef, validateAllFieldCriteria, field);\r\n shouldRenderBaseOnError(name, error, skipReRender ? null : false);\r\n return isEmptyObject(error);\r\n }\r\n return false;\r\n }, [shouldRenderBaseOnError, validateAllFieldCriteria]);\r\n const executeSchemaOrResolverValidation = useCallback(async (payload) => {\r\n const { errors } = await validateWithSchema(validationSchema, validateAllFieldCriteria, getFieldValueByName(fieldsRef.current), validationResolver, validationContextRef.current);\r\n const previousFormIsValid = isValidRef.current;\r\n isValidRef.current = isEmptyObject(errors);\r\n if (isArray(payload)) {\r\n payload.forEach((name) => {\r\n const error = get(errors, name);\r\n if (error) {\r\n set(errorsRef.current, name, error);\r\n }\r\n else {\r\n unset(errorsRef.current, [name]);\r\n }\r\n });\r\n reRender();\r\n }\r\n else {\r\n const error = get(errors, payload);\r\n shouldRenderBaseOnError(payload, (error ? { [payload]: error } : {}), previousFormIsValid !== isValidRef.current);\r\n }\r\n return isEmptyObject(errorsRef.current);\r\n }, [\r\n reRender,\r\n shouldRenderBaseOnError,\r\n validateAllFieldCriteria,\r\n validationResolver,\r\n validationSchema,\r\n ]);\r\n const triggerValidation = useCallback(async (payload) => {\r\n const fields = payload || Object.keys(fieldsRef.current);\r\n if (shouldValidateSchemaOrResolver) {\r\n return executeSchemaOrResolverValidation(fields);\r\n }\r\n if (isArray(fields)) {\r\n const result = await Promise.all(fields.map(async (data) => await executeValidation(data, true)));\r\n reRender();\r\n return result.every(Boolean);\r\n }\r\n return await executeValidation(fields);\r\n }, [\r\n executeSchemaOrResolverValidation,\r\n executeValidation,\r\n reRender,\r\n shouldValidateSchemaOrResolver,\r\n ]);\r\n const isFieldWatched = (name) => isWatchAllRef.current ||\r\n watchFieldsRef.current.has(name) ||\r\n watchFieldsRef.current.has((name.match(/\\w+/) || [])[0]);\r\n function setValue(names, valueOrShouldValidate, shouldValidate) {\r\n let shouldRender = false;\r\n const isArrayValue = isArray(names);\r\n (isArrayValue\r\n ? names\r\n : [names]).forEach((name) => {\r\n const isStringFieldName = isString(name);\r\n shouldRender =\r\n setInternalValue(isStringFieldName ? name : Object.keys(name)[0], isStringFieldName\r\n ? valueOrShouldValidate\r\n : Object.values(name)[0]) || isArrayValue\r\n ? true\r\n : isFieldWatched(name);\r\n });\r\n if (shouldRender || isArrayValue) {\r\n reRender();\r\n }\r\n if (shouldValidate || (isArrayValue && valueOrShouldValidate)) {\r\n triggerValidation(isArrayValue ? undefined : names);\r\n }\r\n }\r\n handleChangeRef.current = handleChangeRef.current\r\n ? handleChangeRef.current\r\n : async ({ type, target }) => {\r\n const name = target ? target.name : '';\r\n const fields = fieldsRef.current;\r\n const errors = errorsRef.current;\r\n const field = fields[name];\r\n const currentError = get(errors, name);\r\n let error;\r\n if (!field) {\r\n return;\r\n }\r\n const isBlurEvent = type === EVENTS.BLUR;\r\n const shouldSkipValidation = skipValidation({\r\n hasError: !!currentError,\r\n isOnChange,\r\n isBlurEvent,\r\n isOnSubmit,\r\n isReValidateOnSubmit,\r\n isOnBlur,\r\n isReValidateOnBlur,\r\n isSubmitted: isSubmittedRef.current,\r\n });\r\n const shouldUpdateDirty = setDirty(name);\r\n let shouldRender = isFieldWatched(name) || shouldUpdateDirty;\r\n if (isBlurEvent &&\r\n !get(touchedFieldsRef.current, name) &&\r\n readFormStateRef.current.touched) {\r\n set(touchedFieldsRef.current, name, true);\r\n shouldRender = true;\r\n }\r\n if (shouldSkipValidation) {\r\n return shouldRender && reRender();\r\n }\r\n if (shouldValidateSchemaOrResolver) {\r\n const { errors } = await validateWithSchema(validationSchema, validateAllFieldCriteria, getFieldValueByName(fields), validationResolver, validationContextRef.current);\r\n const previousFormIsValid = isValidRef.current;\r\n isValidRef.current = isEmptyObject(errors);\r\n error = (get(errors, name)\r\n ? { [name]: get(errors, name) }\r\n : {});\r\n if (previousFormIsValid !== isValidRef.current) {\r\n shouldRender = true;\r\n }\r\n }\r\n else {\r\n error = await validateField(fieldsRef, validateAllFieldCriteria, field);\r\n }\r\n if (!shouldRenderBaseOnError(name, error) && shouldRender) {\r\n reRender();\r\n }\r\n };\r\n const validateSchemaOrResolver = useCallback((values = {}) => {\r\n const fieldValues = isEmptyObject(defaultValuesRef.current)\r\n ? getFieldsValues(fieldsRef.current)\r\n : defaultValuesRef.current;\r\n validateWithSchema(validationSchema, validateAllFieldCriteria, transformToNestObject(Object.assign(Object.assign({}, fieldValues), values)), validationResolver, validationContextRef.current).then(({ errors }) => {\r\n const previousFormIsValid = isValidRef.current;\r\n isValidRef.current = isEmptyObject(errors);\r\n if (previousFormIsValid !== isValidRef.current) {\r\n reRender();\r\n }\r\n });\r\n }, \r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [reRender, validateAllFieldCriteria, validationResolver]);\r\n const removeFieldEventListener = useCallback((field, forceDelete) => {\r\n if (handleChangeRef.current && field) {\r\n findRemovedFieldAndRemoveListener(fieldsRef.current, handleChangeRef.current, field, forceDelete);\r\n }\r\n }, []);\r\n const removeFieldEventListenerAndRef = useCallback((field, forceDelete) => {\r\n if (!field ||\r\n (field &&\r\n isNameInFieldArray(fieldArrayNamesRef.current, field.ref.name) &&\r\n !forceDelete)) {\r\n return;\r\n }\r\n removeFieldEventListener(field, forceDelete);\r\n const { name } = field.ref;\r\n errorsRef.current = unset(errorsRef.current, [name]);\r\n touchedFieldsRef.current = unset(touchedFieldsRef.current, [name]);\r\n defaultValuesAtRenderRef.current = unset(defaultValuesAtRenderRef.current, [name]);\r\n [\r\n dirtyFieldsRef,\r\n fieldsWithValidationRef,\r\n validFieldsRef,\r\n watchFieldsRef,\r\n ].forEach((data) => data.current.delete(name));\r\n if (readFormStateRef.current.isValid ||\r\n readFormStateRef.current.touched) {\r\n reRender();\r\n if (shouldValidateSchemaOrResolver) {\r\n validateSchemaOrResolver();\r\n }\r\n }\r\n }, [\r\n reRender,\r\n shouldValidateSchemaOrResolver,\r\n validateSchemaOrResolver,\r\n removeFieldEventListener,\r\n ]);\r\n function clearError(name) {\r\n if (name) {\r\n unset(errorsRef.current, isArray(name) ? name : [name]);\r\n }\r\n else {\r\n errorsRef.current = {};\r\n }\r\n reRender();\r\n }\r\n const setInternalError = ({ name, type, types, message, shouldRender, }) => {\r\n const field = fieldsRef.current[name];\r\n if (!isSameError(get(errorsRef.current, name), {\r\n type,\r\n message,\r\n types,\r\n })) {\r\n set(errorsRef.current, name, {\r\n type,\r\n types,\r\n message,\r\n ref: field ? field.ref : {},\r\n isManual: true,\r\n });\r\n if (shouldRender) {\r\n reRender();\r\n }\r\n }\r\n };\r\n function setError(name, type = '', message) {\r\n if (isString(name)) {\r\n setInternalError(Object.assign(Object.assign({ name }, (isObject(type)\r\n ? {\r\n types: type,\r\n type: '',\r\n }\r\n : {\r\n type,\r\n message,\r\n })), { shouldRender: true }));\r\n }\r\n else if (isArray(name)) {\r\n name.forEach((error) => setInternalError(Object.assign({}, error)));\r\n reRender();\r\n }\r\n }\r\n function watch(fieldNames, defaultValue) {\r\n const watchFields = watchFieldsRef.current;\r\n const isDefaultValueUndefined = isUndefined(defaultValue);\r\n const combinedDefaultValues = isDefaultValueUndefined\r\n ? defaultValuesRef.current\r\n : defaultValue;\r\n const fieldValues = getFieldsValues(fieldsRef.current, fieldNames);\r\n if (isString(fieldNames)) {\r\n return assignWatchFields(fieldValues, fieldNames, watchFields, isDefaultValueUndefined\r\n ? get(combinedDefaultValues, fieldNames)\r\n : defaultValue, true);\r\n }\r\n if (isArray(fieldNames)) {\r\n return fieldNames.reduce((previous, name) => (Object.assign(Object.assign({}, previous), { [name]: assignWatchFields(fieldValues, name, watchFields, combinedDefaultValues) })), {});\r\n }\r\n isWatchAllRef.current = true;\r\n const result = (!isEmptyObject(fieldValues) && fieldValues) || combinedDefaultValues;\r\n return fieldNames && fieldNames.nest\r\n ? transformToNestObject(result)\r\n : result;\r\n }\r\n function unregister(name) {\r\n if (fieldsRef.current) {\r\n (isArray(name) ? name : [name]).forEach((fieldName) => removeFieldEventListenerAndRef(fieldsRef.current[fieldName], true));\r\n }\r\n }\r\n function registerFieldsRef(ref, validateOptions = {}) {\r\n if (!ref.name) {\r\n // eslint-disable-next-line no-console\r\n return console.warn('Missing name @', ref);\r\n }\r\n const { name, type, value } = ref;\r\n const fieldRefAndValidationOptions = Object.assign({ ref }, validateOptions);\r\n const fields = fieldsRef.current;\r\n const isRadioOrCheckbox = isRadioOrCheckboxFunction(ref);\r\n let field = fields[name];\r\n let isEmptyDefaultValue = true;\r\n let isFieldArray;\r\n let defaultValue;\r\n if (isRadioOrCheckbox\r\n ? field &&\r\n isArray(field.options) &&\r\n field.options.filter(Boolean).find((option) => {\r\n return value === option.ref.value && option.ref === ref;\r\n })\r\n : field && ref === field.ref) {\r\n fields[name] = Object.assign(Object.assign({}, field), validateOptions);\r\n return;\r\n }\r\n if (type) {\r\n const mutationWatcher = onDomRemove(ref, () => removeFieldEventListenerAndRef(field));\r\n field = isRadioOrCheckbox\r\n ? Object.assign({ options: [\r\n ...((field && field.options) || []),\r\n {\r\n ref,\r\n mutationWatcher,\r\n },\r\n ], ref: { type, name } }, validateOptions) : Object.assign(Object.assign({}, fieldRefAndValidationOptions), { mutationWatcher });\r\n }\r\n else {\r\n field = fieldRefAndValidationOptions;\r\n }\r\n fields[name] = field;\r\n if (!isEmptyObject(defaultValuesRef.current)) {\r\n defaultValue = get(defaultValuesRef.current, name);\r\n isEmptyDefaultValue = isUndefined(defaultValue);\r\n isFieldArray = isNameInFieldArray(fieldArrayNamesRef.current, name);\r\n if (!isEmptyDefaultValue && !isFieldArray) {\r\n setFieldValue(field, defaultValue);\r\n }\r\n }\r\n if (shouldValidateSchemaOrResolver &&\r\n !isFieldArray &&\r\n readFormStateRef.current.isValid) {\r\n validateSchemaOrResolver();\r\n }\r\n else if (!isEmptyObject(validateOptions)) {\r\n fieldsWithValidationRef.current.add(name);\r\n if (!isOnSubmit && readFormStateRef.current.isValid) {\r\n validateField(fieldsRef, validateAllFieldCriteria, field).then((error) => {\r\n const previousFormIsValid = isValidRef.current;\r\n isEmptyObject(error)\r\n ? validFieldsRef.current.add(name)\r\n : (isValidRef.current = false);\r\n if (previousFormIsValid !== isValidRef.current) {\r\n reRender();\r\n }\r\n });\r\n }\r\n }\r\n if (!defaultValuesAtRenderRef.current[name] &&\r\n !(isFieldArray && isEmptyDefaultValue)) {\r\n defaultValuesAtRenderRef.current[name] = isEmptyDefaultValue ? getFieldValue(fields, field.ref) : defaultValue;\r\n }\r\n if (type) {\r\n attachEventListeners({\r\n field: isRadioOrCheckbox && field.options\r\n ? field.options[field.options.length - 1]\r\n : field,\r\n isRadioOrCheckbox: isRadioOrCheckbox || isSelectInput(ref),\r\n handleChange: handleChangeRef.current,\r\n });\r\n }\r\n }\r\n function register(refOrValidationOptions, validationOptions) {\r\n if (isWindowUndefined) {\r\n return;\r\n }\r\n if (isString(refOrValidationOptions)) {\r\n registerFieldsRef({ name: refOrValidationOptions }, validationOptions);\r\n return;\r\n }\r\n if (isObject(refOrValidationOptions) && 'name' in refOrValidationOptions) {\r\n registerFieldsRef(refOrValidationOptions, validationOptions);\r\n return;\r\n }\r\n return (ref) => ref && registerFieldsRef(ref, refOrValidationOptions);\r\n }\r\n const handleSubmit = useCallback((callback) => async (e) => {\r\n if (e) {\r\n e.preventDefault();\r\n e.persist();\r\n }\r\n let fieldErrors = {};\r\n const fields = fieldsRef.current;\r\n let fieldValues = getFieldsValues(fields);\r\n if (readFormStateRef.current.isSubmitting) {\r\n isSubmittingRef.current = true;\r\n reRender();\r\n }\r\n try {\r\n if (shouldValidateSchemaOrResolver) {\r\n const { errors, values } = await validateWithSchema(validationSchema, validateAllFieldCriteria, transformToNestObject(fieldValues), validationResolver, validationContextRef.current);\r\n errorsRef.current = errors;\r\n fieldErrors = errors;\r\n fieldValues = values;\r\n }\r\n else {\r\n for (const field of Object.values(fields)) {\r\n if (field) {\r\n const { ref: { name }, } = field;\r\n const fieldError = await validateField(fieldsRef, validateAllFieldCriteria, field);\r\n if (fieldError[name]) {\r\n set(fieldErrors, name, fieldError[name]);\r\n validFieldsRef.current.delete(name);\r\n }\r\n else {\r\n if (fieldsWithValidationRef.current.has(name)) {\r\n validFieldsRef.current.add(name);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (isEmptyObject(fieldErrors)) {\r\n errorsRef.current = {};\r\n reRender();\r\n await callback(transformToNestObject(fieldValues), e);\r\n }\r\n else {\r\n errorsRef.current = fieldErrors;\r\n if (submitFocusError && isWeb) {\r\n focusOnErrorField(fields, fieldErrors);\r\n }\r\n }\r\n }\r\n finally {\r\n isSubmittedRef.current = true;\r\n isSubmittingRef.current = false;\r\n submitCountRef.current = submitCountRef.current + 1;\r\n reRender();\r\n }\r\n }, [\r\n isWeb,\r\n reRender,\r\n shouldValidateSchemaOrResolver,\r\n submitFocusError,\r\n validateAllFieldCriteria,\r\n validationResolver,\r\n validationSchema,\r\n ]);\r\n const resetRefs = ({ errors, dirty, isSubmitted, touched, isValid, submitCount, dirtyFields, }) => {\r\n fieldsRef.current = {};\r\n if (!errors) {\r\n errorsRef.current = {};\r\n }\r\n if (!touched) {\r\n touchedFieldsRef.current = {};\r\n }\r\n if (!isValid) {\r\n validFieldsRef.current = new Set();\r\n fieldsWithValidationRef.current = new Set();\r\n isValidRef.current = true;\r\n }\r\n if (!dirty) {\r\n isDirtyRef.current = false;\r\n }\r\n if (!dirtyFields) {\r\n dirtyFieldsRef.current = new Set();\r\n }\r\n if (!isSubmitted) {\r\n isSubmittedRef.current = false;\r\n }\r\n if (!submitCount) {\r\n submitCountRef.current = 0;\r\n }\r\n defaultValuesAtRenderRef.current = {};\r\n fieldArrayDefaultValues.current = {};\r\n watchFieldsRef.current = new Set();\r\n isWatchAllRef.current = false;\r\n };\r\n const reset = (values, omitResetState = {}) => {\r\n if (isWeb) {\r\n for (const field of Object.values(fieldsRef.current)) {\r\n if (field) {\r\n const { ref, options } = field;\r\n const inputRef = isRadioOrCheckboxFunction(ref) && isArray(options)\r\n ? options[0].ref\r\n : ref;\r\n if (isHTMLElement(inputRef)) {\r\n try {\r\n inputRef.closest('form').reset();\r\n break;\r\n }\r\n catch (_a) { }\r\n }\r\n }\r\n }\r\n }\r\n if (values) {\r\n defaultValuesRef.current = values;\r\n }\r\n Object.values(resetFieldArrayFunctionRef.current).forEach((resetFieldArray) => isFunction(resetFieldArray) && resetFieldArray());\r\n resetRefs(omitResetState);\r\n reRender();\r\n };\r\n function getValues(payload) {\r\n if (isString(payload)) {\r\n return fieldsRef.current[payload]\r\n ? getFieldValue(fieldsRef.current, fieldsRef.current[payload].ref)\r\n : get(defaultValuesRef.current, payload);\r\n }\r\n const fieldValues = getFieldsValues(fieldsRef.current);\r\n const outputValues = isEmptyObject(fieldValues)\r\n ? defaultValuesRef.current\r\n : fieldValues;\r\n return payload && payload.nest\r\n ? transformToNestObject(outputValues)\r\n : outputValues;\r\n }\r\n useEffect(() => () => {\r\n isUnMount.current = true;\r\n fieldsRef.current &&\r\n process.env.NODE_ENV === 'production' &&\r\n Object.values(fieldsRef.current).forEach((field) => removeFieldEventListenerAndRef(field, true));\r\n }, [removeFieldEventListenerAndRef]);\r\n if (!shouldValidateSchemaOrResolver) {\r\n isValidRef.current =\r\n validFieldsRef.current.size >= fieldsWithValidationRef.current.size &&\r\n isEmptyObject(errorsRef.current);\r\n }\r\n const formState = {\r\n dirty: isDirtyRef.current,\r\n dirtyFields: dirtyFieldsRef.current,\r\n isSubmitted: isSubmittedRef.current,\r\n submitCount: submitCountRef.current,\r\n touched: touchedFieldsRef.current,\r\n isSubmitting: isSubmittingRef.current,\r\n isValid: isOnSubmit\r\n ? isSubmittedRef.current && isEmptyObject(errorsRef.current)\r\n : isValidRef.current,\r\n };\r\n const commonProps = {\r\n triggerValidation,\r\n setValue: useCallback(setValue, [\r\n reRender,\r\n setInternalValue,\r\n triggerValidation,\r\n ]),\r\n register: useCallback(register, [\r\n defaultValuesRef.current,\r\n defaultValuesAtRenderRef.current,\r\n ]),\r\n unregister: useCallback(unregister, []),\r\n getValues: useCallback(getValues, []),\r\n formState: isProxyEnabled\r\n ? new Proxy(formState, {\r\n get: (obj, prop) => {\r\n if (prop in obj) {\r\n readFormStateRef.current[prop] = true;\r\n return obj[prop];\r\n }\r\n return undefined;\r\n },\r\n })\r\n : formState,\r\n };\r\n const control = Object.assign(Object.assign(Object.assign({ removeFieldEventListener,\r\n reRender }, (shouldValidateSchemaOrResolver\r\n ? { validateSchemaIsValid: validateSchemaOrResolver }\r\n : {})), { mode: {\r\n isOnBlur,\r\n isOnSubmit,\r\n isOnChange,\r\n }, reValidateMode: {\r\n isReValidateOnBlur,\r\n isReValidateOnSubmit,\r\n }, errorsRef,\r\n touchedFieldsRef,\r\n fieldsRef,\r\n isWatchAllRef,\r\n watchFieldsRef,\r\n resetFieldArrayFunctionRef,\r\n fieldArrayDefaultValues,\r\n validFieldsRef,\r\n dirtyFieldsRef,\r\n fieldsWithValidationRef,\r\n fieldArrayNamesRef,\r\n isDirtyRef,\r\n readFormStateRef,\r\n defaultValuesRef }), commonProps);\r\n return Object.assign({ watch,\r\n control,\r\n handleSubmit, reset: useCallback(reset, []), clearError: useCallback(clearError, []), setError: useCallback(setError, []), errors: errorsRef.current }, commonProps);\r\n}\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\n\nconst FormGlobalContext = createContext(null);\r\nfunction useFormContext() {\r\n return useContext(FormGlobalContext);\r\n}\r\nfunction FormContext(_a) {\r\n var { children, formState, errors } = _a, restMethods = __rest(_a, [\"children\", \"formState\", \"errors\"]);\r\n return (createElement(FormGlobalContext.Provider, { value: Object.assign(Object.assign({}, restMethods), { formState, errors }) }, children));\r\n}\n\nvar generateId = () => {\r\n const d = typeof performance === UNDEFINED ? Date.now() : performance.now() * 1000;\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n const r = (Math.random() * 16 + d) % 16 | 0;\r\n return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\r\n });\r\n};\n\nconst appendId = (value, keyName) => (Object.assign({ [keyName]: generateId() }, (isObject(value) ? value : { value })));\r\nconst mapIds = (data, keyName) => (isArray(data) ? data : []).map((value) => appendId(value, keyName));\n\nvar getSortRemovedItems = (indexes, removeIndexes, updatedIndexes = [], count = 0, notFoundIndexes = []) => {\r\n for (const removeIndex of removeIndexes) {\r\n if (indexes.indexOf(removeIndex) < 0) {\r\n notFoundIndexes.push(removeIndex);\r\n }\r\n }\r\n for (const index of indexes.sort()) {\r\n if (removeIndexes.indexOf(index) > -1) {\r\n updatedIndexes.push(-1);\r\n count++;\r\n }\r\n else {\r\n updatedIndexes.push(index -\r\n count -\r\n (notFoundIndexes.length\r\n ? notFoundIndexes\r\n .map((notFoundIndex) => notFoundIndex < index)\r\n .filter(Boolean).length\r\n : 0));\r\n }\r\n }\r\n return updatedIndexes;\r\n};\n\nconst removeAt = (data, index) => [\r\n ...data.slice(0, index),\r\n ...data.slice(index + 1),\r\n];\r\nfunction removeAtIndexes(data, index) {\r\n let k = -1;\r\n while (++k < data.length) {\r\n if (index.indexOf(k) >= 0) {\r\n delete data[k];\r\n }\r\n }\r\n return data.filter(Boolean);\r\n}\r\nvar removeArrayAt = (data, index) => isUndefined(index)\r\n ? []\r\n : isArray(index)\r\n ? removeAtIndexes(data, index)\r\n : removeAt(data, index);\n\nvar moveArrayAt = (data, from, to) => isArray(data) ? data.splice(to, 0, data.splice(from, 1)[0]) : [];\n\nvar swapArrayAt = (data, indexA, indexB) => {\r\n const temp = [data[indexB], data[indexA]];\r\n data[indexA] = temp[0];\r\n data[indexB] = temp[1];\r\n};\n\nfunction prepend(data, value) {\r\n return [...(isArray(value) ? value : [value || null]), ...data];\r\n}\n\nfunction insert(data, index, value) {\r\n return [\r\n ...data.slice(0, index),\r\n ...(isArray(value) ? value : [value || null]),\r\n ...data.slice(index),\r\n ];\r\n}\n\nvar fillEmptyArray = (value) => isArray(value) ? Array(value.length).fill(null) : null;\n\nconst useFieldArray = ({ control, name, keyName = 'id', }) => {\r\n const methods = useFormContext();\r\n const { isWatchAllRef, resetFieldArrayFunctionRef, fieldArrayNamesRef, reRender, fieldsRef, getValues, defaultValuesRef, removeFieldEventListener, errorsRef, dirtyFieldsRef, isDirtyRef, touchedFieldsRef, readFormStateRef, watchFieldsRef, validFieldsRef, fieldsWithValidationRef, fieldArrayDefaultValues, validateSchemaIsValid, } = control || methods.control;\r\n const getDefaultValues = () => [\r\n ...get(fieldArrayDefaultValues.current[getFieldArrayParentName(name)]\r\n ? fieldArrayDefaultValues.current\r\n : defaultValuesRef.current, name, []),\r\n ];\r\n const memoizedDefaultValues = useRef(getDefaultValues());\r\n const [fields, setField] = useState(mapIds(memoizedDefaultValues.current, keyName));\r\n const [isDeleted, setIsDeleted] = useState(false);\r\n const allFields = useRef(fields);\r\n const isNameKey = isKey(name);\r\n allFields.current = fields;\r\n if (isNameKey) {\r\n fieldArrayDefaultValues.current[name] = memoizedDefaultValues.current;\r\n }\r\n const appendValueWithKey = (values) => values.map((value) => appendId(value, keyName));\r\n const setFieldAndValidState = (fieldsValues) => {\r\n setField(fieldsValues);\r\n if (readFormStateRef.current.isValid && validateSchemaIsValid) {\r\n validateSchemaIsValid({\r\n [name]: fieldsValues,\r\n });\r\n }\r\n };\r\n const modifyDirtyFields = ({ shouldRender, isRemove, isPrePend, index, value = {}, } = {}) => {\r\n let render = shouldRender;\r\n const values = isArray(value) ? value : [value];\r\n if (readFormStateRef.current.dirty) {\r\n const dirtyFieldIndexesAndValues = {};\r\n if (isPrePend || isRemove) {\r\n for (const dirtyField of [...dirtyFieldsRef.current].sort()) {\r\n if (isMatchFieldArrayName(dirtyField, name)) {\r\n const matchedIndexes = dirtyField.match(REGEX_ARRAY_FIELD_INDEX);\r\n if (matchedIndexes) {\r\n const matchIndex = +matchedIndexes[matchedIndexes.length - 1];\r\n if (dirtyFieldIndexesAndValues[matchIndex]) {\r\n dirtyFieldIndexesAndValues[matchIndex].push(dirtyField);\r\n }\r\n else {\r\n dirtyFieldIndexesAndValues[matchIndex] = [dirtyField];\r\n }\r\n }\r\n dirtyFieldsRef.current.delete(dirtyField);\r\n }\r\n }\r\n }\r\n if (!isUndefined(index) || isPrePend) {\r\n const updatedDirtyFieldIndexes = isUndefined(index)\r\n ? []\r\n : getSortRemovedItems(Object.keys(dirtyFieldIndexesAndValues).map((i) => +i), isArray(index) ? index : [index]);\r\n Object.values(dirtyFieldIndexesAndValues).forEach((values, index) => {\r\n const updateIndex = isPrePend ? 0 : updatedDirtyFieldIndexes[index];\r\n if (updateIndex > -1) {\r\n for (const value of values) {\r\n const matchedIndexes = value.match(REGEX_ARRAY_FIELD_INDEX);\r\n if (matchedIndexes) {\r\n dirtyFieldsRef.current.add(value.replace(/[\\d+]([^[\\d+]+)$/, `${isPrePend\r\n ? +matchedIndexes[matchedIndexes.length - 1] +\r\n values.length\r\n : updateIndex}$1`));\r\n }\r\n }\r\n }\r\n });\r\n }\r\n if (!isRemove) {\r\n values.forEach((fieldValue, index) => Object.keys(fieldValue).forEach((key) => dirtyFieldsRef.current.add(`${name}[${isPrePend ? index : allFields.current.length + index}].${key}`)));\r\n isDirtyRef.current = true;\r\n }\r\n render = true;\r\n }\r\n if (render && !isWatchAllRef.current) {\r\n reRender();\r\n }\r\n };\r\n const resetFields = (flagOrFields) => {\r\n if (readFormStateRef.current.dirty) {\r\n isDirtyRef.current = isUndefined(flagOrFields)\r\n ? true\r\n : getIsFieldsDifferent(flagOrFields, defaultValuesRef.current[name] || []);\r\n }\r\n for (const key in fieldsRef.current) {\r\n if (isMatchFieldArrayName(key, name) && fieldsRef.current[key]) {\r\n removeFieldEventListener(fieldsRef.current[key], true);\r\n }\r\n }\r\n };\r\n const mapCurrentFieldsValueWithState = () => {\r\n const currentFieldsValue = get(getValues({ nest: true }), name);\r\n if (isArray(currentFieldsValue)) {\r\n for (let i = 0; i < currentFieldsValue.length; i++) {\r\n allFields.current[i] = Object.assign(Object.assign({}, allFields.current[i]), currentFieldsValue[i]);\r\n }\r\n }\r\n };\r\n const append = (value) => {\r\n setFieldAndValidState([\r\n ...allFields.current,\r\n ...(isArray(value)\r\n ? appendValueWithKey(value)\r\n : [appendId(value, keyName)]),\r\n ]);\r\n modifyDirtyFields({ value });\r\n };\r\n const prepend$1 = (value) => {\r\n let shouldRender = false;\r\n resetFields();\r\n setFieldAndValidState(prepend(allFields.current, isArray(value) ? appendValueWithKey(value) : [appendId(value, keyName)]));\r\n if (errorsRef.current[name]) {\r\n errorsRef.current[name] = prepend(errorsRef.current[name], fillEmptyArray(value));\r\n }\r\n if (readFormStateRef.current.touched && touchedFieldsRef.current[name]) {\r\n touchedFieldsRef.current[name] = prepend(touchedFieldsRef.current[name], fillEmptyArray(value));\r\n shouldRender = true;\r\n }\r\n modifyDirtyFields({\r\n shouldRender,\r\n isPrePend: true,\r\n value,\r\n });\r\n };\r\n const remove = (index) => {\r\n let shouldRender = false;\r\n const isIndexUndefined = isUndefined(index);\r\n if (!isIndexUndefined) {\r\n mapCurrentFieldsValueWithState();\r\n }\r\n resetFields(removeArrayAt(getFieldValueByName(fieldsRef.current, name), index));\r\n setFieldAndValidState(removeArrayAt(allFields.current, index));\r\n setIsDeleted(true);\r\n if (errorsRef.current[name]) {\r\n errorsRef.current[name] = removeArrayAt(errorsRef.current[name], index);\r\n if (!errorsRef.current[name].filter(Boolean).length) {\r\n delete errorsRef.current[name];\r\n }\r\n }\r\n if (readFormStateRef.current.touched && touchedFieldsRef.current[name]) {\r\n touchedFieldsRef.current[name] = removeArrayAt(touchedFieldsRef.current[name], index);\r\n shouldRender = true;\r\n }\r\n if (readFormStateRef.current.isValid && !validateSchemaIsValid) {\r\n let fieldIndex = -1;\r\n let isFound = false;\r\n const isIndexUndefined = isUndefined(index);\r\n while (fieldIndex++ < fields.length) {\r\n const isLast = fieldIndex === fields.length - 1;\r\n const isCurrentIndex = (isArray(index) ? index : [index]).indexOf(fieldIndex) >= 0;\r\n if (isCurrentIndex || isIndexUndefined) {\r\n isFound = true;\r\n }\r\n if (!isFound) {\r\n continue;\r\n }\r\n for (const key in fields[fieldIndex]) {\r\n const currentFieldName = `${name}[${fieldIndex}].${key}`;\r\n if (isCurrentIndex || isLast || isIndexUndefined) {\r\n validFieldsRef.current.delete(currentFieldName);\r\n fieldsWithValidationRef.current.delete(currentFieldName);\r\n }\r\n else {\r\n const previousFieldName = `${name}[${fieldIndex - 1}].${key}`;\r\n if (validFieldsRef.current.has(currentFieldName)) {\r\n validFieldsRef.current.add(previousFieldName);\r\n }\r\n if (fieldsWithValidationRef.current.has(currentFieldName)) {\r\n fieldsWithValidationRef.current.add(previousFieldName);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n modifyDirtyFields({\r\n shouldRender,\r\n isRemove: true,\r\n index,\r\n });\r\n };\r\n const insert$1 = (index, value) => {\r\n mapCurrentFieldsValueWithState();\r\n resetFields(insert(getFieldValueByName(fieldsRef.current, name), index));\r\n setFieldAndValidState(insert(allFields.current, index, isArray(value) ? appendValueWithKey(value) : [appendId(value, keyName)]));\r\n if (errorsRef.current[name]) {\r\n errorsRef.current[name] = insert(errorsRef.current[name], index, fillEmptyArray(value));\r\n }\r\n if (readFormStateRef.current.touched && touchedFieldsRef.current[name]) {\r\n touchedFieldsRef.current[name] = insert(touchedFieldsRef.current[name], index, fillEmptyArray(value));\r\n reRender();\r\n }\r\n };\r\n const swap = (indexA, indexB) => {\r\n mapCurrentFieldsValueWithState();\r\n const fieldValues = getFieldValueByName(fieldsRef.current, name);\r\n swapArrayAt(fieldValues, indexA, indexB);\r\n resetFields(fieldValues);\r\n swapArrayAt(allFields.current, indexA, indexB);\r\n setFieldAndValidState([...allFields.current]);\r\n if (errorsRef.current[name]) {\r\n swapArrayAt(errorsRef.current[name], indexA, indexB);\r\n }\r\n if (readFormStateRef.current.touched && touchedFieldsRef.current[name]) {\r\n swapArrayAt(touchedFieldsRef.current[name], indexA, indexB);\r\n reRender();\r\n }\r\n };\r\n const move = (from, to) => {\r\n mapCurrentFieldsValueWithState();\r\n const fieldValues = getFieldValueByName(fieldsRef.current, name);\r\n moveArrayAt(fieldValues, from, to);\r\n resetFields(fieldValues);\r\n moveArrayAt(allFields.current, from, to);\r\n setFieldAndValidState([...allFields.current]);\r\n if (errorsRef.current[name]) {\r\n moveArrayAt(errorsRef.current[name], from, to);\r\n }\r\n if (readFormStateRef.current.touched && touchedFieldsRef.current[name]) {\r\n moveArrayAt(touchedFieldsRef.current[name], from, to);\r\n reRender();\r\n }\r\n };\r\n const reset = () => {\r\n resetFields();\r\n memoizedDefaultValues.current = getDefaultValues();\r\n setField(mapIds(memoizedDefaultValues.current, keyName));\r\n };\r\n useEffect(() => {\r\n if (isNameKey &&\r\n isDeleted &&\r\n fieldArrayDefaultValues.current[name] &&\r\n fields.length < fieldArrayDefaultValues.current[name].length) {\r\n fieldArrayDefaultValues.current[name].pop();\r\n }\r\n }, [fields, name, fieldArrayDefaultValues, isDeleted, isNameKey]);\r\n useEffect(() => {\r\n if (isWatchAllRef && isWatchAllRef.current) {\r\n reRender();\r\n }\r\n else if (watchFieldsRef) {\r\n for (const watchField of watchFieldsRef.current) {\r\n if (watchField.startsWith(name)) {\r\n reRender();\r\n break;\r\n }\r\n }\r\n }\r\n }, [fields, name, reRender, watchFieldsRef, isWatchAllRef]);\r\n useEffect(() => {\r\n const resetFunctions = resetFieldArrayFunctionRef.current;\r\n const fieldArrayNames = fieldArrayNamesRef.current;\r\n fieldArrayNames.add(name);\r\n resetFunctions[name] = reset;\r\n return () => {\r\n resetFields();\r\n delete resetFunctions[name];\r\n fieldArrayNames.delete(name);\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n return {\r\n swap: useCallback(swap, [name]),\r\n move: useCallback(move, [name]),\r\n prepend: useCallback(prepend$1, [name]),\r\n append: useCallback(append, [name]),\r\n remove: useCallback(remove, [fields, name]),\r\n insert: useCallback(insert$1, [name]),\r\n fields,\r\n };\r\n};\n\nvar getInputValue = (event, isCheckboxInput) => isPrimitive(event) ||\r\n !isObject(event.target) ||\r\n (isObject(event.target) && !event.type)\r\n ? event\r\n : isCheckboxInput || isUndefined(event.target.value)\r\n ? event.target.checked\r\n : event.target.value;\n\nconst Controller = (_a) => {\r\n var { name, rules, as: InnerComponent, onBlur, onChange, onChangeName = VALIDATION_MODE.onChange, onBlurName = VALIDATION_MODE.onBlur, valueName, defaultValue, control, onFocus } = _a, rest = __rest(_a, [\"name\", \"rules\", \"as\", \"onBlur\", \"onChange\", \"onChangeName\", \"onBlurName\", \"valueName\", \"defaultValue\", \"control\", \"onFocus\"]);\r\n const methods = useFormContext();\r\n const { defaultValuesRef, setValue, register, unregister, errorsRef, removeFieldEventListener, triggerValidation, mode: { isOnSubmit, isOnBlur, isOnChange }, reValidateMode: { isReValidateOnBlur, isReValidateOnSubmit }, formState: { isSubmitted }, touchedFieldsRef, readFormStateRef, reRender, fieldsRef, fieldArrayNamesRef, } = control || methods.control;\r\n const [value, setInputStateValue] = useState(isUndefined(defaultValue)\r\n ? get(defaultValuesRef.current, name)\r\n : defaultValue);\r\n const valueRef = useRef(value);\r\n const isCheckboxInput = isBoolean(value);\r\n const shouldReValidateOnBlur = isOnBlur || isReValidateOnBlur;\r\n const rulesRef = useRef(rules);\r\n const onFocusRef = useRef(onFocus);\r\n const isNotFieldArray = !isNameInFieldArray(fieldArrayNamesRef.current, name);\r\n rulesRef.current = rules;\r\n const shouldValidate = () => !skipValidation({\r\n hasError: !!get(errorsRef.current, name),\r\n isOnBlur,\r\n isOnSubmit,\r\n isOnChange,\r\n isReValidateOnBlur,\r\n isReValidateOnSubmit,\r\n isSubmitted,\r\n });\r\n const commonTask = (event) => {\r\n const data = getInputValue(event, isCheckboxInput);\r\n setInputStateValue(data);\r\n valueRef.current = data;\r\n return data;\r\n };\r\n const eventWrapper = (event) => (...arg) => setValue(name, commonTask(event(arg)), shouldValidate());\r\n const handleChange = (event) => {\r\n const data = commonTask(event);\r\n setValue(name, data, shouldValidate());\r\n };\r\n const registerField = useCallback(() => {\r\n if (!isNotFieldArray) {\r\n removeFieldEventListener(fieldsRef.current[name], true);\r\n }\r\n register(Object.defineProperty({ name, focus: onFocusRef.current }, VALUE, {\r\n set(data) {\r\n setInputStateValue(data);\r\n valueRef.current = data;\r\n },\r\n get() {\r\n return valueRef.current;\r\n },\r\n }), rulesRef.current);\r\n }, [\r\n isNotFieldArray,\r\n fieldsRef,\r\n rulesRef,\r\n name,\r\n onFocusRef,\r\n register,\r\n removeFieldEventListener,\r\n ]);\r\n useEffect(() => () => {\r\n !isNameInFieldArray(fieldArrayNamesRef.current, name) && unregister(name);\r\n }, [unregister, name, fieldArrayNamesRef]);\r\n useEffect(() => {\r\n registerField();\r\n }, [registerField]);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n useEffect(() => {\r\n if (!fieldsRef.current[name]) {\r\n registerField();\r\n if (isNotFieldArray) {\r\n setInputStateValue(isUndefined(defaultValue)\r\n ? get(defaultValuesRef.current, name)\r\n : defaultValue);\r\n }\r\n }\r\n });\r\n const props = Object.assign(Object.assign(Object.assign(Object.assign({ name }, rest), (onChange\r\n ? { [onChangeName]: eventWrapper(onChange) }\r\n : { [onChangeName]: handleChange })), { [onBlurName]: (...args) => {\r\n if (onBlur) {\r\n onBlur(args);\r\n }\r\n if (readFormStateRef.current.touched &&\r\n !get(touchedFieldsRef.current, name)) {\r\n set(touchedFieldsRef.current, name, true);\r\n reRender();\r\n }\r\n if (shouldReValidateOnBlur) {\r\n triggerValidation(name);\r\n }\r\n } }), { [valueName || (isCheckboxInput ? 'checked' : VALUE)]: value });\r\n return isValidElement(InnerComponent)\r\n ? cloneElement(InnerComponent, props)\r\n : createElement(InnerComponent, props);\r\n};\n\nconst ErrorMessage = (_a) => {\r\n var { as: InnerComponent, errors, name, message, children } = _a, rest = __rest(_a, [\"as\", \"errors\", \"name\", \"message\", \"children\"]);\r\n const methods = useFormContext();\r\n const error = get(errors || methods.errors, name);\r\n if (!error) {\r\n return null;\r\n }\r\n const { message: messageFromRegister, types } = error;\r\n const props = Object.assign(Object.assign({}, (InnerComponent ? rest : {})), { children: children\r\n ? children({ message: messageFromRegister || message, messages: types })\r\n : messageFromRegister || message });\r\n return InnerComponent ? (isValidElement(InnerComponent) ? (cloneElement(InnerComponent, props)) : (createElement(InnerComponent, props))) : (createElement(Fragment, Object.assign({}, props)));\r\n};\n\nexport { Controller, ErrorMessage, FormContext, useFieldArray, useForm, useFormContext };\n","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","const basis = 24;\nfunction assertCountGridColumn(count) {\n if (process.env.NODE_ENV !== 'production') {\n if (Math.floor(count) !== count) {\n throw new Error('count has to be an integer.');\n }\n if (count < 0 || count > basis) {\n throw new Error(`count has to be between 0 and ${basis}.`);\n }\n }\n}\nexport function getGridColumn(count) {\n assertCountGridColumn(count);\n return `${Math.floor((100 / basis) * count * 100) / 100}vw`;\n}\nexport function getColumnsWidthForBreakpoint(columns, breakpoint) {\n assertCountGridColumn(columns);\n return `${Math.floor((breakpoint / basis) * columns * 100) / 100}px`;\n}\n","import { useState, useEffect } from 'react';\nimport { useWindowHeight, useWindowWidth} from '@react-hook/window-size';\n\nexport const useDropdowPosition = (identifier: string) => {\n\n const windowHeight = useWindowHeight();\n const windowWidth = useWindowWidth();\n\n const [ boundingObject, setBoundingObject ] = useState(null);\n const [ bottom, setBottom ] = useState(null);\n const [ top, setTop ] = useState(null);\n const [ left, setLeft ] = useState(null);\n const [ right, setRight ] = useState(null);\n const [ goUp, setGoUp ] = useState(false);\n\n //boundingObject contiene varias keys, bottom hace referencia a la distancia entre el bottom del elemento y el top del window\n\n const getBoundingObject = () => { \n const {top, right, bottom, left, width, height, x, y} = document.querySelector(identifier).getBoundingClientRect();\n //la librería de autosuggest no permite poner id, por eso el querySelector\n setBoundingObject({top, right, bottom, left, width, height, x, y});\n setBottom(bottom);\n setTop(top);\n setLeft(left);\n setRight(right);\n }; \n\n const getAndUpdateState = () => {\n getBoundingObject();\n };\n\n useEffect(()=>{\n const distanciaDeCambio = windowHeight/4 > 150 ? windowHeight/4 : 150;\n const distanceToBottom = windowHeight - bottom;\n if(windowWidth < 960) {\n setGoUp(false);\n } else if( distanceToBottom < distanciaDeCambio) {\n setGoUp(true);\n //console.log(windowHeight, 'true');\n } else {\n setGoUp(false);\n //console.log(windowHeight, 'false');\n\n }\n\n }, [boundingObject]);\n\n return { boundingObject, bottom, top, left, right, goUp, getAndUpdateState};\n};\n","import { Content } from '@volkswagen-onehub/fa-content-service';\nimport { useFeatureServices } from 'src/feature-app';\nimport { DealersData, MatchSelectedOptions, Offer } from 'src/types';\n\nexport type EmbeddedFeatureApp =\n | 'es-ofertas'\n | 'es-stock-teaser'\n | 'es-match'\n | 'es-calculadora'\n | 'es-bono'\n | 'es-mis_beneficios';\n\nexport interface VehicleCalculadora {\n familyCode: string;\n familyDesc: string;\n modelDescr: string;\n modelKey: string;\n vin: string;\n mileage: number;\n plate: string;\n plateDate: string;\n}\ninterface CalculadoraFields {\n dealer: string; // Código KVPS\n vehicle: VehicleCalculadora[];\n quotePvp: string;\n quoteOperations: {\n id: string; // Identificador único de la operación\n name: string; // Nombre de la operación\n pvp: string; // Precio de la operación\n }[];\n deepLink: string; // URL para acceder a calculadora con el presupuesto precargado\n}\n\ntype WidgetOptions = 'Mapa';\nexport interface OneFormContent extends Content, CalculadoraFields {\n bodycopy?: string;\n 'bodycopy-logged'?: string;\n carlines?: number[];\n cta?: string;\n dpsFields?: {\n field: 'headers[DESC_FORM_DETAIL]' | 'headers[DETALLE_TIPO_PETICION_SIM]';\n value: string;\n }[];\n observaciones?: string;\n featureApp?: EmbeddedFeatureApp;\n forms?: LeadForm[];\n headline?: string;\n 'headline-logged'?: string;\n marketingCodeConfig?: { SalesgroupId: string; SalesgroupName: string };\n mode?: 'Salesgroup' | 'Carline' | 'CarConfiguratorFS' | 'Mixed';\n oferta?: Offer;\n salesgroups?: number[];\n match?: Offer; // Hay que implementar el type Preconfiguration\n race?: 'true' | 'false';\n motivo?: string;\n matchOptions?: MatchSelectedOptions;\n cem?: 'VENTA' | 'POSVENTA';\n modo?: 'Dark' | 'Light';\n argumentatives?: string;\n userInteraction?: 'false' | 'true';\n mgm?: 'Bono Cliente' | 'Bono Regalo' | 'Envío Regalo';\n mgmImgSrc?: string;\n navidadImgSrc?: string;\n widget?: WidgetOptions;\n isCitaPosventaStageOrDefault?: 'Default' | 'Stage';\n stageCitaImgSrc?: string;\n intro?: string;\n bono?: any;\n encuesta?: 'CEM - VENTA' | 'CEM - POSVENTA' | 'CEM - ONESHOP' | 'LEM' | 'NO COMPRA' | 'NO RENOVACIÓN';\n lead_type?: 'test-drive' | 'presupuesto' | 'mas-informacion' | 'cita';\n triggerCase?: 'Generico' | 'OneShop';\n}\n\nexport type LeadForm = 'lead-presupuesto' | 'lead-mas_informacion' | 'lead-test_drive' | 'lead-cita' | 'lead-stock';\n\nexport function useFaContent(): OneFormContent | undefined {\n return useFeatureServices()['fa-content-service'].content as OneFormContent;\n}\n","import { FeatureAppConfig, useFeatureAppEnvironment } from 'src/feature-app';\n\nexport function useFeatureAppConfig(): FeatureAppConfig {\n const { config } = useFeatureAppEnvironment();\n\n return config || {};\n}\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport { useState, useEffect } from 'react';\nimport { useWindowHeight, useWindowWidth} from '@react-hook/window-size';\n\nexport const useGetBoundingClientRect= (identifier: string) => {\n\n const [ boundingObject, setBoundingObject ] = useState(null);\n const [ bottom, setBottom ] = useState(null);\n const [ top, setTop ] = useState(null);\n const [ left, setLeft ] = useState(null);\n const [ right, setRight ] = useState(null);\n const [ y, setY ] = useState(null);\n\n //boundingObject contiene varias keys, bottom hace referencia a la distancia entre el bottom del elemento y el top del window\n\n const getBoundingObject = () => { \n const {top, right, bottom, left, width, height, x, y} = document.querySelector(identifier).getBoundingClientRect();\n //la librería de autosuggest no permite poner id, por eso el querySelector\n setBoundingObject({top, right, bottom, left, width, height, x, y});\n setBottom(bottom);\n setTop(top);\n setLeft(left);\n setRight(right);\n setY(y);\n }; \n\n const getAndUpdateState = () => {\n getBoundingObject();\n };\n\n return { boundingObject, bottom, top, left, right, y, getAndUpdateState};\n};\n","import { useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { getDealerKvps } from 'src/bff/api/get-dealer-kvps';\n\nexport function useGetDealer() {\n const dispatch = useDispatch();\n const [dealerName, setDealerName] = useState(null);\n const [selectedDealer, setSelectedDealer] = useState(null);\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n if (!window.location) {\n setLoading(false);\n }\n const urlParams = new URLSearchParams(window.location.search);\n const dealer = urlParams.get('dealer');\n if (!dealer) {\n setLoading(false);\n return;\n }\n getDealerKvps(dealer)\n .then((selectedDealer) => {\n if (selectedDealer) {\n setDealerName(selectedDealer.name);\n setSelectedDealer(selectedDealer);\n dispatch({ type: 'SET_SELECTED_DEALER', payload: selectedDealer });\n dispatch({ type: 'SET_URL_DEALER', payload: selectedDealer });\n dispatch({ type: 'UPDATE_SUGGESTION', payload: selectedDealer });\n const { longitude, latitude } = selectedDealer.markerInfo.svcLocation;\n const point = {\n type: 'Feature',\n properties: { cluster: false, concesionId: selectedDealer.id, dealer: selectedDealer },\n geometry: {\n type: 'Point',\n coordinates: [longitude, latitude],\n },\n };\n const points = [point];\n dispatch({ type: 'SET_DEALERS', payload: [selectedDealer] });\n dispatch({ type: 'SET_POINTS', payload: points });\n dispatch({ type: 'DEALERS_OR_INSTALLATIONS_MODE', payload: 'dealers' });\n } else {\n setDealerName(null);\n setSelectedDealer(null);\n }\n\n setLoading(false);\n })\n .catch(() => {\n setLoading(false);\n });\n }, []);\n return { dealerName, selectedDealer, loading };\n}\n","import axios, { AxiosResponse } from 'axios';\nimport { isNull } from 'src/feature-app';\nimport { useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { getDealerKvps } from 'src/bff/api/get-dealer-kvps';\nimport { DealersData } from 'src/types';\nimport { getDealers } from 'src/bff';\n\nexport function useGetDealers(kvps?: string) {\n const dispatch = useDispatch();\n const [dealerName, setDealerName] = useState(null);\n const [selectedDealer, setSelectedDealer] = useState(null);\n const [loading, setLoading] = useState(true);\n const [dealers, setDealers] = useState(null);\n\n useEffect(() => {\n const handleDealer = async (kvps: string) => {\n const selectedDealer = await getDealerKvps(kvps);\n\n if (selectedDealer) {\n setDealerName(selectedDealer.name);\n setSelectedDealer(selectedDealer);\n dispatch({ type: 'SET_SELECTED_DEALER', payload: selectedDealer });\n dispatch({ type: 'SET_URL_DEALER', payload: selectedDealer });\n dispatch({ type: 'UPDATE_SUGGESTION', payload: selectedDealer });\n } else {\n setDealerName(null);\n setSelectedDealer(null);\n }\n };\n\n if (window && window.location) {\n const urlParams = new URLSearchParams(window.location.search);\n const dealer = urlParams.get('dealer');\n\n if (dealer) {\n handleDealer(dealer);\n }\n }\n if (kvps) {\n handleDealer(kvps);\n }\n\n const requestDealers = async () => {\n const dealers = await getDealers();\n\n const points = dealers\n .map((dealer: DealersData) => {\n if (isNull(dealer.markerInfo.svcLocation)) return {};\n const { longitude, latitude } = dealer.markerInfo.svcLocation;\n return {\n type: 'Feature',\n properties: { cluster: false, concesionId: dealer.id, dealer: dealer },\n geometry: {\n type: 'Point',\n coordinates: [longitude, latitude],\n },\n };\n })\n .filter((point) => Object.keys(point).length > 0);\n\n dispatch({ type: 'SET_DEALERS', payload: dealers });\n dispatch({ type: 'SET_POINTS', payload: points });\n dispatch({ type: 'DEALERS_OR_INSTALLATIONS_MODE', payload: 'dealers' });\n setDealers(dealers);\n setLoading(false);\n };\n\n requestDealers();\n }, []);\n return { dealers, dealerName, selectedDealer, loading };\n}\n","import axios, { AxiosResponse } from 'axios';\nimport { useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { getInstallations } from 'src/bff';\nimport { DealersData, DomainAttributesValues, Installation, InstallationResponse, Points } from 'src/types';\n\nexport function useGetInstalaciones(token: string): string {\n const dispatch = useDispatch();\n const [dealerName, setDealerName] = useState(null);\n\n useEffect(() => {\n const requestInstallations = async () => {\n const installationsResponse = await getInstallations(token);\n // La respuesta viene como una array de arrays de attributes. Eliminamos este nivel para simplificar.\n const installationsDomainAtt: DomainAttributesValues[][] = installationsResponse.map((inst) => inst.attributes);\n\n let points: Points[] = [];\n let installations: Installation[] = [];\n\n installationsDomainAtt.forEach((installation) => {\n const newInstallation: Installation = {\n Id: '',\n TXT_V_Installation_Data_Name__c: '',\n FRML_TXT_codVentaProvincia__c: '',\n TXT_V_Location__c: '',\n TXT_V_Address__c: '',\n TXT_V_Postal_Code__c: '',\n TXT_V_Installation_Code__c: '',\n MPCK_Instalation_Type__c: '',\n TXT_V_KVPS_code__c: '',\n TXT_Code_Concession__c: '',\n Longitude__c: '',\n Latitude__c: '',\n };\n\n installation.forEach((property) => {\n // console.log(property.name, 'name');\n const { name, value } = property;\n\n if (newInstallation.hasOwnProperty(name)) {\n newInstallation[name] = value;\n }\n });\n\n if (\n !newInstallation.Latitude__c ||\n !newInstallation.Latitude__c ||\n newInstallation.Latitude__c === '' ||\n newInstallation.Longitude__c === ''\n ) {\n return;\n }\n\n // Necesario para el correcto funcionamiento del mapa.\n const dealer: Partial = {\n kvps: newInstallation.TXT_V_KVPS_code__c,\n name: newInstallation.TXT_V_Installation_Data_Name__c,\n markerInfo: {\n dealerInfo: {\n name: newInstallation.TXT_V_Installation_Data_Name__c,\n address: newInstallation.TXT_V_Address__c,\n zipCode: newInstallation.TXT_V_Postal_Code__c,\n city: newInstallation.TXT_V_Location__c,\n province: '',\n },\n },\n };\n\n const point = {\n type: 'Feature',\n properties: { cluster: false, installation: newInstallation, dealer }, //concesionId: dealer.id, dealer: dealer\n geometry: {\n type: 'Point',\n coordinates: [newInstallation.Longitude__c, newInstallation.Latitude__c],\n },\n };\n\n points.push(point);\n installations.push(newInstallation);\n });\n\n dispatch({ type: 'SET_INSTALLATIONS', payload: installations });\n dispatch({ type: 'SET_POINTS', payload: points });\n dispatch({ type: 'DEALERS_OR_INSTALLATIONS_MODE', payload: 'installations' });\n };\n\n requestInstallations();\n }, []);\n return dealerName;\n}\n","import { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { getMarketingCode } from 'src/bff';\nimport { useFaContent } from 'src/feature-app';\n\n/**\n * Hook necesario para disparar ambos formularios de match. El objetivo es enviar las variables de match y matchMarketingCodeData para\n * que desde la parte de analítica se puedan obtener todas las variables que se están utilizando tambien para la analítica de match.\n * @param setSelectedJourney\n * @param Form\n */\nexport function useInitiateMatchTriggers(setSelectedJourney: any, Form: JSX.Element) {\n const faContent = useFaContent();\n const dispatch = useDispatch();\n\n useEffect(() => {\n getMarketingCode(faContent?.match?.marketingCode)\n .then((res) => {\n dispatch({ type: 'SET_MATCH', payload: faContent.match });\n dispatch({\n type: 'UPDATE_FIELDS',\n payload: { matchMarketingCodeData: res.response, argumentatives: faContent?.argumentatives },\n });\n\n setSelectedJourney(Form, true);\n })\n .catch((err) => {\n dispatch({ type: 'SET_MATCH', payload: faContent.match });\n dispatch({ type: 'UPDATE_FIELDS', payload: { argumentatives: faContent?.argumentatives } });\n setSelectedJourney(Form, true);\n });\n }, []);\n}\n","import { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useFaContent } from 'src/feature-app';\n\n/**\n * Hook necesario para disparar formularios desde bonos. El objetivo es enviar como observaciones la descripción del bono.\n * @param setSelectedJourney\n * @param Form\n */\nexport function useInitiateBonosTriggers(setSelectedJourney: any, Form: JSX.Element) {\n const faContent = useFaContent();\n const dispatch = useDispatch();\n\n useEffect(() => {\n dispatch({\n type: 'UPDATE_FIELDS', // Pendiente propagar el valor del campo observaciones desde faContent\n payload: { },\n });\n\n setSelectedJourney(Form, true);\n }, []);\n}\n","import { useFeatureServices } from 'src/feature-app';\n\nexport const useIsDevStage = () => {\n const stageCustomConfig = useFeatureServices()['service-config-provider'].configs?.stage?.customConfig;\n\n return stageCustomConfig?.stage === 'dev';\n};\n","import { useState, useEffect } from 'react';\n\nexport function useLoaded() {\n const [loaded, setLoaded] = useState(false);\n\n useEffect(() => {\n setLoaded(true);\n }, []);\n\n return loaded;\n}\n","import { Spinner } from '@volkswagen-onehub/components-core';\nimport { Checkmark, Locate } from 'src/icons-core-imports';\n\nimport React, { useEffect, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useDispatch, useStore } from 'react-redux';\nimport {\n GooglePlace,\n isNull,\n Suggestion,\n useOneFormContext,\n updateMapVariables,\n useFeatureServices,\n useFeatureAppEnvironment,\n} from 'src/feature-app';\nimport { handleLocation } from 'src/feature-app/NewMap/handle-location';\nimport { useTrackingManager } from 'src/feature-app/hooks/use-tracking-manager';\nimport { OneFormState } from 'src';\nimport { renderAvisoIslasCanariasLayer } from 'src/components';\nimport { Store } from 'redux';\n\n// está hecho a saco para extraer la lógica del componente LocateUser y no tenerla por duplicado\n// por temas de front y comportamiento de la caja del suggest no se puede usar LocateUser en filtros\n\nexport function useLocateUser() {\n const [value, setValue] = useState('');\n const [suggestion, setSuggestion] = useState(null);\n const [loading, setLoading] = useState(false);\n const [icon, setIcon] = useState();\n const [isLocating, setIsLocating] = useState(false);\n const [locationDisabled, setLocationDisabled] = useState(false);\n // locationSuccess lo suyo seria subirlo a un context para que no se resetee entre LocateUser y filtros\n const [locationSuccess, setLocationSuccess] = useState(false);\n const { triggerValidation } = useFormContext();\n const trackingManager = useTrackingManager();\n const dispatch = useDispatch();\n const { setIsValueSelected, handleNextStep } = useOneFormContext();\n const store: Store = useStore();\n const env = useFeatureAppEnvironment();\n const layerManager = useFeatureServices()['layer-manager'];\n\n const onSuggestionSelectedFn = (suggestion: Suggestion) => {\n setSuggestion(suggestion);\n updateMapVariables(dispatch, suggestion).then(() => {\n const { suggestionIsInCanaryIslands } = store.getState().formInfo;\n\n if (suggestionIsInCanaryIslands) {\n renderAvisoIslasCanariasLayer(store, env, layerManager);\n return;\n }\n // Avanza a la siguiente pantalla\n handleNextStep();\n });\n };\n\n const handleLocate = async () => {\n trackingManager.trackFormButtonClick({\n contentId: 'Localiza mi posición actual',\n });\n setIsLocating(true);\n setLoading(true);\n setIcon();\n const { geometry, name } = await handleLocation();\n setIcon();\n setIsLocating(false);\n setLoading(false);\n if (isNull(geometry)) {\n setLocationDisabled(true);\n setLocationSuccess(false);\n } else {\n setLocationDisabled(false);\n const suggestion: GooglePlace = { isGooglePlace: true, name, skipSearch: true, isGeoLocated: true };\n // dispatch({ type: 'UPDATE_USER_GEOLOCATION', payload: suggestion });\n // handleMapVariables(dispatch, { lat: geometry.lat, lng: geometry.lng }, 10, geometry, false, suggestion);\n\n setSuggestion(suggestion);\n setLocationSuccess(true);\n triggerValidation();\n setValue(name);\n setIsValueSelected(true);\n updateMapVariables(dispatch, suggestion, geometry);\n }\n };\n\n const handleLocateFilters = async () => {\n trackingManager.trackFormButtonClick({\n contentId: 'Localiza mi posición actual',\n });\n setIsLocating(true);\n setLoading(true);\n setIcon();\n const { geometry, name } = await handleLocation();\n setIcon();\n setIsLocating(false);\n setLoading(false);\n\n if (isNull(geometry)) {\n setLocationDisabled(true);\n setLocationSuccess(false);\n } else {\n setLocationDisabled(false);\n const suggestion: GooglePlace = { isGooglePlace: true, name, skipSearch: true, isGeoLocated: true };\n // dispatch({ type: 'UPDATE_USER_GEOLOCATION', payload: suggestion });\n // handleMapVariables(dispatch, { lat: geometry.lat, lng: geometry.lng }, 10, geometry, false, suggestion);\n\n triggerValidation();\n setValue(name);\n setLocationSuccess(true);\n return { suggestion, geometry };\n // setSuggestion(suggestion);\n }\n };\n\n useEffect(() => {\n locationSuccess ? setIcon() : setIcon();\n }, [locationSuccess]);\n\n return {\n suggestion,\n setSuggestion,\n value,\n setValue,\n icon,\n handleLocate,\n loading,\n locationDisabled,\n locationSuccess,\n setLocationSuccess,\n isLocating,\n handleLocateFilters,\n onSuggestionSelectedFn,\n };\n}\n","import { useIsDevStage } from './use-is-dev-stage';\nimport { useRef } from 'react';\nimport { useFeatureServices } from 'src/feature-app';\n\nconst citaPreviaKey = 'es-posventa-cita_previa';\n\nexport function useNavigate() {\n const navigationService = useFeatureServices()['navigation-service'];\n\n const navigateToCita = (): void => {\n const target = navigationService.navigateTo(citaPreviaKey, {});\n target.push();\n };\n\n return {\n navigateToCita,\n };\n}\n","import { useState, useEffect } from 'react';\n\nexport function useOnScreen(ref) {\n const [isIntersecting, setIntersecting] = useState(false);\n\n const observer = new IntersectionObserver(([entry]) => setIntersecting(entry.isIntersecting));\n\n useEffect(() => {\n observer.observe(ref.current);\n // Remove the observer as soon as the component is unmounted\n return () => {\n observer.disconnect();\n };\n }, []);\n\n return isIntersecting;\n}\n","import React, { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { isNull } from 'src/feature-app';\nimport { OneFormState, Steps } from 'src/types';\nimport { useWindowWidth} from '@react-hook/window-size';\n\nexport const useShowOverflow = (isLayerScreen: boolean, selectedStep?: Steps ) => {\n /**\n *\n * @param stepsToIterate La lista de steps donde hay que buscar el paso previo.\n * @param screenIndexToGet La lista de steps donde hay que buscar el paso previo.\n */\n const windowWidth = useWindowWidth();\n const { formInfo } = useSelector((state: OneFormState) => state);\n const { \n multiStepScreenIndex, \n screenIndex, \n steps,\n multiSteps, notALayer\n } = formInfo;\n\n const [ showOverflow, setShowOverflow ] = useState(false);\n\n\n const handleShowOverflow = (stepsToIterate: Steps[], screenIndexToGet: number) => {\n if (!stepsToIterate || isNull(screenIndexToGet) || screenIndexToGet === -1) {\n setShowOverflow(false);\n }\n\n const actualStep = stepsToIterate.find((step) => step.screenIndex === screenIndexToGet);\n\n if(actualStep && actualStep.showOverflow) {\n setShowOverflow(true);\n } else {\n setShowOverflow(false);\n }\n };\n\n \n useEffect(()=>{\n \n if(windowWidth < 960 && !notALayer || windowWidth < 960 && !isLayerScreen ) {\n setShowOverflow(false);\n } else {\n\n if(selectedStep && selectedStep.showOverflow) {\n setShowOverflow(true);\n }\n \n if(!steps) {\n setShowOverflow(false);\n } else {\n //console.log(1, screenIndex, steps, multiStepScreenIndex);\n if (multiStepScreenIndex === null) {\n //console.log('22222', multiSteps, screenIndex, multiStepScreenIndex);\n handleShowOverflow(steps, screenIndex);\n } else {\n //console.log('333333', multiSteps, multiStepScreenIndex);\n handleShowOverflow(multiSteps, multiStepScreenIndex);\n } \n }\n }\n \n }, [steps, multiSteps, selectedStep]);\n\n return { showOverflow };\n};\n","import { useEffect, useState } from 'react';\n\n//El texto que se quiera introducir des de la feature app incorporando la posibilidad de editarlo \n// en el fragmento de JSX donde se renderize debe figurar de la siguiente manera:\n//
    \n\nexport const useTransformToHtml = (text: string) => {\n return {__html: text};\n};\n","import { getDataServiceConfig } from 'src/feature-app';\n\nexport const useGetBrand = (): 'V' |'N' |undefined => {\n const data = getDataServiceConfig();\n const brand = data.customConfig?.brand;\n\n return brand;\n};\n","import { useGetBrand } from './use-get-brand';\n\nexport const useIsComerciales = () => {\n const brand = useGetBrand();\n\n return brand === 'N'; \n};\n","import { TrackingForm } from 'src/feature-app';\n\nexport interface NDPSField {\n name: string;\n value: string;\n}\n\nexport const getTrackingForm = (formResponse): TrackingForm => {\n let LeadID;\n if (formResponse && formResponse.content && formResponse.content.data && formResponse.content.data.fields) {\n const leadField: NDPSField = formResponse.content.data.fields.find(\n (field: NDPSField) => field.name === 'COD_LEAD_ID'\n );\n LeadID = leadField ? leadField.value : undefined;\n }\n return {\n LeadID,\n FormFields: undefined,\n };\n};\n","import { OneFormContent } from 'src/feature-app';\nimport { FormDataFields, FormDataFlags, FormDataHeaders } from 'src/types';\n\nexport const formDataBuilder = (data: any): FormData => {\n const formData = new FormData();\n\n for (const key in data) {\n if (data[key] === null || data[key] === 'null') {\n formData.append(key, '');\n } else {\n formData.append(key, data[key]);\n }\n }\n return formData;\n};\n\nexport const formatFormData = (object: object, string: string) => {\n if (typeof object !== 'object' || Object.keys(object).length === 0) {\n return {};\n }\n return Object.entries(object)\n .map((key) => [`${string}[${key[0]}]`, key[1]])\n .reduce((accum: FormDataFields, [k, v]) => {\n accum[k] = v;\n return accum;\n }, {});\n};\n\n/**\n * Formato de entrada: {DESC_FORM_VERSION: ''}\n * Formato de salida: {fields[DESC_FORM_VERSION]: ''}\n * @param fields\n */\nexport const formatFields = (fields: FormDataFields): FormDataFields => {\n return formatFormData(fields, 'fields');\n};\n\n/**\n * Formato de entrada: {DESC_FORM_DETAIL: ''}\n * Formato de salida: {headers[DESC_FORM_DETAIL]: ''}\n * @param headers\n */\nexport const formatHeaders = (headers: FormDataHeaders): FormDataHeaders => {\n return formatFormData(headers, 'headers');\n};\n\n/**\n * Formato de entrada: {DESC_FORM_DETAIL: ''}\n * Formato de salida: {flags[DESC_FORM_DETAIL]: ''}\n * @param flags\n */\nexport const formatFlags = (flags: FormDataFlags): FormDataFlags => {\n return formatFormData(flags, 'flags');\n};\n\nexport const getDpsFields = (faContent: OneFormContent) => {\n if (faContent && faContent.dpsFields && faContent.dpsFields.length > 0) {\n const headers = faContent.dpsFields.reduce((initialValue, header) => {\n const key = header.field;\n const value = header.value;\n const obj = { [key]: value };\n initialValue = { ...initialValue, ...obj };\n return initialValue;\n }, {});\n\n return { ...headers };\n }\n return null;\n};\n","export const TIME_FOR_TRANSFORM = 400;\nexport const TIME_FOR_TRANSFORM_MS = `${TIME_FOR_TRANSFORM}ms`;\n\nexport const TIME_FOR_OPACITY = 600;\nexport const TIME_FOR_OPACITY_MS = `${TIME_FOR_OPACITY}ms`;\n\nexport const TOKEN_LEADS_COMERCIALES = 'LCV_DDB_FRM_LEM_REC_LEM';\nexport const TOKEN_LEADS_TURISMOS = 'VW_DDB_FRM_LEM_REC_LEM';\n","import {\n Breakpoints,\n BreakpointWrapper,\n} from '@volkswagen-onehub/components-core';\nimport React from 'react';\n\nexport const CTAsSiNo = [\n { label: 'Sí', value: 'true' },\n { label: 'No', value: 'false' },\n];\n\nexport const contactoOptionsTurismos = [\n {\n value: 'Email',\n label: 'Email',\n },\n {\n value: 'Teléfono',\n label: 'Teléfono',\n },\n {\n value: 'Videollamada',\n label: 'Videollamada',\n },\n];\n\nexport const contactoOptionsComerciales = [\n {\n value: 'Teléfono',\n label: 'Teléfono',\n },\n {\n value: 'Email',\n label: 'Email',\n },\n];\nexport const CTAsHorario = [\n { label: 'Por la mañana', value: 'morning' },\n { label: 'Al mediodía', value: 'afternon' },\n { label: 'Por la tarde', value: 'evening' },\n];\n\n//Cita posventa\n\n export interface CTAsMotivoDef {\n label: string;\n value: string;\n detalles?: string | JSX.Element;\n detallesPrevStep?: string;\n}\n\nexport const CTAsMotivo: CTAsMotivoDef[] = [\n {\n label: 'Mantenimiento',\n value: 'MANTENIMIENTO',\n detalles: 'la revisión de mantenimiento',\n detallesPrevStep: 'Revisión de mantenimiento',\n },\n {\n label: 'Neumáticos',\n value: 'NEUMATICOS',\n detalles: 'el cambio de neumáticos',\n detallesPrevStep: 'Cambio de neumáticos',\n },\n { label: 'Avería', value: 'REPARACION', detalles: 'la avería', detallesPrevStep: 'Reparación de avería' },\n {\n label: 'Revisión pre-ITV',\n value: 'PREITV',\n detalles: (\n <>\n la revisión{' '}\n \n
    \n
    \n pre-ITV\n \n ),\n detallesPrevStep: 'Revisión pre-ITV',\n },\n {\n label: 'Chapa y pintura',\n value: 'CARROCERIA',\n detalles: 'la reparación de chapa y pintura',\n detallesPrevStep: 'Reparación de chapa y pintura',\n },\n {\n label: 'Accesorios',\n value: 'ACCESORIOS',\n detalles: 'la instalación de los accesorios',\n detallesPrevStep: 'Instalación de accesorios',\n },\n // { label: 'Chequeo', value: 'CHEQUEO', detalles: 'el chequeo de tu coche', detallesPrevStep: 'Chequeo' },\n { label: 'Otros', value: 'OTROS', detalles: 'el motivo de tu visita', detallesPrevStep: 'Visita' },\n];\n\n// LEM\n\nexport const CTAsTipoVisita = [\n {\n label: 'Una visita al concesionario',\n value: 'si visita',\n },\n { \n label: 'Una llamada', \n value: 'si llamada'\n },\n { \n label: 'Una videollamada', \n value: 'si videollamada'\n },\n];\n\nexport const CTAsTipoVisitaNo = [\n {\n label: 'No ha hecho falta',\n value: 'no ha hecho falta',\n },\n {\n label: 'No, pero me hubiera gustado',\n value: 'no pero me hubiera gustado',\n },\n];\n\nexport const periodoContactoOptions = [\n {\n value: '8_horas',\n label: 'En las primeras 8 horas',\n },\n {\n value: '24_horas',\n label: 'En las primeras 24 horas',\n },\n {\n value: 'mas_24_horas',\n label: 'En más de 24 horas',\n },\n];\n\n//No compra\n\nexport const CTAsMotivoNoQuiero = [\n {\n label: 'Coche compartido (car sharing o moto sharing)',\n value: 'car-sharing',\n },\n {\n label: 'Transporte público',\n value: 'transporte-publico',\n },\n {\n label: 'Patinete - Moto - Bicicleta',\n value: 'patinete-moto-bicicleta',\n },\n {\n label: 'Más adelante, en coche',\n value: 'coche',\n },\n {\n label: 'Otros',\n value: 'otros',\n },\n];\n\nexport const CTAsDudas = [\n { label: 'Los plazos de entrega', value: 'plazos' },\n { label: 'Tu visita al concesionario', value: 'experiencia' },\n { label: 'El precio del modelo', value: 'precio' },\n { label: 'El equipamiento y los asistentes adicionales', value: 'equipamiento' },\n { label: 'El consumo del modelo', value: 'consumo' },\n { label: 'La garantía del modelo', value: 'garantia' },\n { label: 'Las condiciones de financiación', value: 'financiación' },\n { label: 'La situación actual', value: 'situacion' },\n { label: 'Otros motivos', value: 'otros' },\n];\n\n//SAC\n\nexport const contactoOptionsSAC = [\n {\n value: 'EMAIL',\n label: 'Email',\n },\n {\n value: 'TELF',\n label: 'Teléfono',\n },\n // {\n // value: 'POSTAL',\n // label: 'Correo postal',\n // },\n {\n value: 'WHATSAPP',\n label: 'Whatsapp',\n },\n];\n\n//CEM postenta y CEM venta\n\nexport const ctaTestDrive = [\n { label: 'Sí y realicé la prueba', value: '1' },\n { label: 'Sí, pero no realicé la prueba', value: '2' },\n { label: 'No, pero estaba interesado/a ', value: '3' },\n { label: 'No y no estaba interesado/a', value: '4' },\n];\n\nexport const ctaDatosIncorrectos = [\n { label: 'Marca incorrecta', value: 'Marca' },\n { label: 'Modelo incorrecto', value: 'Modelo' },\n { label: 'Concesionario incorrecto', value: 'Instalación' },\n { label: 'Persona de contacto incorrecta', value: 'Contacto' },\n];\n\nexport const ctaDatosIncorrectosPosventa = [\n { label: 'Marca incorrecta', value: 'Marca' },\n { label: 'Modelo incorrecto', value: 'Modelo' },\n { label: 'Servicio Oficial', value: 'Instalación' },\n { label: 'Persona de contacto incorrecta', value: 'Contacto' },\n];\n\n \nexport const ctaAlternativaTransporte = [\n { label: 'Sí, un Volkswagen', value: '1' },\n { label: 'Sí, un coche de otra marca diferente a Volkswagen', value: '2' },\n { label: 'Sí, otra alternativa (transporte público, taxi, shuttle, …)', value: '3' },\n { label: 'No me ofreció ninguna', value: '4' },\n { label: 'Sin respuesta', value: '9' },\n];\nexport const ctaContactoSatisfaccion = [\n { label: 'Sí', value: '1' },\n { label: 'No', value: '2' },\n { label: 'Sin respuesta', value: '9' },\n];\n \nexport const ctaMotivoVisita = [\n\n { label: 'Revisión pre-ITV', value: '2' },\n { label: 'Avería circulando con el coche (fue necesario remolcarlo)', value: '4' },\n { label: 'Medida de servicio (excluida la medida de servicio diésel)', value: '10' },\n { label: 'Chapa y pintura', value: '6' },\n { label: 'Cambio de neumáticos', value: '3' },\n { label: 'Actualización de software', value: '11' },\n { label: 'Instalación de accesorios', value: '7' },\n { label: 'Servicio rutinario / de mantenimiento', value: '1' },\n { label: 'Otra visita inesperada (el coche pudo seguir circulando y elegiste tu Sercicio Oficial favorito)', value: '5' },\n { label: 'Otras reparaciones o reclamaciones (por ejemplo, problemas electrónicos)', value: '8' },\n { label: 'Sin respuesta', value: '99' },\n];\n\nexport const ctaEnviarRespuesta = [\n { label: 'Mis respuestas pueden ser enviadas junto a mi nombre', value: '1' },\n {\n label: 'Mis respuestas pueden ser enviadas pero sin mencionar mi nombre',\n extraInfo:\n 'Seleccionando esta opción, el concesionario no podrá ponerse en contacto contigo en relación a tus comentarios.',\n value: '2',\n },\n {\n label: 'Mis respuestas solo deben ser analizadas de manera anónima',\n extraInfo:\n 'Seleccionando esta opción, tus respuestas serán analizadas de modo agregado junto al resto de respuestas de todos los entrevistados y no se trasladarán a los comentarios abiertos.',\n value: '0',\n },\n];\nexport const ctaEnvioCEM = [\n {\n label:\n 'Sí, mis respuestas pueden ser publicadas de forma agregada sin mi nombre en la Web Oficial Volkswagen y en la de [Concesionario]',\n value: '1',\n },\n {\n label:\n 'No, mis respuestas no pueden ser publicadas de forma agregada en la Web Oficial Volkswagen y en la de [Concesionario]',\n value: '2',\n },\n];\n\n// No renovador\n\nexport const CTAsMotor = [\n {\n label: 'Gasolina',\n value: 'gasolina',\n }, \n {\n label: 'Diesel',\n value: 'diesel',\n },\n {\n label: 'Híbrido',\n value: 'híbrido',\n },\n {\n label: 'Eléctrico',\n value: 'electrico',\n },\n];\nexport const CTAsMotivoRenovadorYaTengo = [\n {\n label: 'Los plazos de entrega',\n value: 'plazos',\n },\n {\n label: 'El precio/opciones de financiación',\n value: 'precio/financiacion',\n },\n {\n label: 'El diseño del coche',\n value: 'diseño',\n },\n {\n label: 'El equipamiento del coche',\n value: 'equipamiento',\n },\n {\n label: 'Relación calidad/precio',\n value: 'relación calidad/precio',\n },\n {\n label: 'El consumo de combustible de los nuevos vehículos',\n value: 'consumo',\n },\n {\n label: 'La poca variedad de modelos y tecnologías disponibles',\n value: 'modelos',\n },\n {\n label: 'Mi experiencia con el concesionario de venta',\n value: 'experiencia venta',\n },\n {\n label: 'Mi experiencia previa con el servicio de posventa',\n value: 'experiencia posventa',\n },\n {\n label: 'Los costes de mantenimiento del vehículo anterior',\n value: 'costes mantenimiento',\n },\n {\n label: 'Las averías sufridas con el vehículo anterior',\n value: 'averías',\n },\n {\n label: 'Otras experiencias con la marca',\n value: 'marca',\n },\n {\n label: 'Otros motivos',\n value: 'otros motivos',\n },\n];\n\nexport const CTAsMotivoRenovadorNoTengo = [\n {\n label: 'Los plazos de entrega',\n value: 'plazos',\n },\n {\n label: 'El precio/opciones de financiación',\n value: 'precio/financiacion',\n },\n {\n label: 'El diseño del coche',\n value: 'diseño',\n },\n {\n label: 'El equipamiento del coche',\n value: 'equipamiento',\n },\n {\n label: 'Relación calidad/precio',\n value: 'relación calidad/precio',\n },\n {\n label: 'El consumo de combustible de los nuevos vehículos',\n value: 'consumo',\n },\n {\n label: 'La poca variedad de modelos y tecnologías disponibles',\n value: 'modelos',\n },\n {\n label: 'Mi experiencia con el concesionario de venta',\n value: 'experiencia venta',\n },\n {\n label: 'Mi experiencia previa con el servicio de posventa',\n value: 'experiencia posventa',\n },\n {\n label: 'Los costes de mantenimiento del vehículo anterior',\n value: 'costes mantenimiento',\n },\n {\n label: 'Las averías sufridas con el vehículo anterior',\n value: 'averías',\n },\n {\n label: 'Otras experiencias con la marca',\n value: 'marca',\n },\n {\n label: 'Otros motivos',\n value: 'otros motivos',\n },\n];\n\nexport const CTAsMotivoRenovadorNoTengoExclusivo = [\n {\n label: 'Nada',\n value: 'nada',\n },\n];\n\nexport const CTAsUsadoNuevo = [\n {\n label: 'Vehículo Nuevo',\n value: 'Vehículo Nuevo',\n },\n {\n label: 'Vehículo Usado',\n value: 'Vehículo Usado',\n },\n];\n\nexport const CTAsLugarCompra = [\n {\n label: 'Concesionario oficial',\n value: 'Concesionario oficial',\n },\n {\n label: 'Concesionario no oficial',\n value: 'Concesionario no oficial',\n },\n {\n label: 'Empresa de Renting/Leasing',\n value: 'Empresa de Renting/Leasing',\n },\n {\n label: 'Compra-venta privada',\n value: 'Compra-venta privada',\n },\n];\n\nexport const CTAsNuevoOcasión = [\n {\n label: 'Uno nuevo',\n value: 'nuevo',\n },\n {\n label: 'Uno de ocasión',\n value: 'ocasión',\n },\n];\n\nexport const CTAsFormasMovilidad = [\n {\n label: 'Coche compartido (car sharing o moto sharing)',\n value: 'Car Sharing Moto Sharing',\n },\n {\n label: 'Transporte público',\n value: 'Transporte público',\n },\n {\n label: 'Patinete',\n value: 'Patinete',\n },\n {\n label: 'Moto',\n value: 'Moto',\n },\n {\n label: 'Bicicleta',\n value: 'Bicicleta',\n },\n {\n label: 'Otros',\n value: 'Otros',\n },\n];\nexport const CTAsFormasMovilidadExclusive = [\n {\n label: 'No tengo necesidad de utilizar ningún medio de transporte para desplazarme',\n value: 'No tengo necesidad',\n },\n];\nexport const CTAsRazones = [\n {\n label: 'Económicas',\n value: 'Económicas',\n },\n {\n label: 'Medioambientales',\n value: 'Medioambientales',\n },\n {\n label: 'Ahorro de tiempo',\n value: 'Ahorro de tiempo',\n },\n {\n label: 'Otras razones',\n value: 'Otros',\n },\n];\n\n//BAJA COMUNICACIONES\n\nexport const questionTwoOptions = [\n { label: 'Ya no me interesa el contenido',\n value: 'No Interés'\n },\n { label: 'Recibo demasiadas comunicaciones vuestras',\n value: 'Demasiadas Comunicaciones'\n },\n { label: 'Tengo otras razones',\n value: 'Otros Motivos'\n },\n];\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","import { useEffect, useState } from 'react';\nimport { Points } from 'src/types';\n\nexport const usePinState = (selectedPoint: Points, hoverPoint: Points, point: Points) => {\n const [isActive, setIsActive] = useState(false);\n const [isHover, setIsHover] = useState(false);\n\n useEffect(() => {\n if (selectedPoint) {\n if (isCluster(point)) {\n sameClusterId(selectedPoint, point) ? setIsActive(true) : setIsActive(false);\n } else {\n sameKvps(selectedPoint, point) ? setIsActive(true) : setIsActive(false);\n }\n }\n\n if (hoverPoint) {\n if (window.innerWidth < 959) {\n // Hover solo se aplica a desktop\n setIsHover(false);\n } else {\n if (isCluster(point)) {\n sameClusterId(hoverPoint, point) ? setIsHover(true) : setIsHover(false);\n } else {\n sameKvps(hoverPoint, point) ? setIsHover(true) : setIsHover(false);\n }\n }\n }\n }, [selectedPoint, hoverPoint]);\n\n return { isActive, isHover };\n};\n\nconst isCluster = (point: Points) => point.properties.cluster;\n\nconst sameClusterId = (selectedPoint: Points, point: Points) => {\n if (selectedPoint.properties.parent_cluster_id && point.id) {\n return selectedPoint.properties.parent_cluster_id === point.id;\n }\n return false;\n};\nconst sameKvps = (selectedPoint: Points, point: Points) => {\n if (\n selectedPoint.properties &&\n selectedPoint.properties.dealer &&\n point.properties &&\n point.properties.dealer &&\n selectedPoint.properties.dealer.kvps === point.properties.dealer.kvps\n ) {\n return true;\n }\n return false;\n};\n","import { useCallback, useEffect, useRef, useState } from 'react';\nimport { debounce } from 'src/feature-app';\n\nexport function useAddressPredictions(input: string, selectedValue: boolean): any[] {\n\n \n const [predictions, setPredictions] = useState([]);\n\n const autocomplete = useRef();\n\n if (!autocomplete.current && window.google) {\n autocomplete.current = new window.google.maps.places.AutocompleteService();\n }\n\n async function getPlacePredictions(input: string) {\n await autocomplete.current.getPlacePredictions(\n { input, types: ['geocode'], componentRestrictions: { country: 'es' } },\n (predictions) => {\n // El type regions también devuelve como resultado el país, por lo que hay que filtrarlo.\n if (predictions) {\n predictions = predictions.filter((prediction) => !prediction.types.includes('country'));\n setPredictions(predictions.map((prediction) => prediction.description));\n }\n }\n );\n }\n\n const debouncedGetPlacePredictions = useCallback(debounce(getPlacePredictions, 500), []);\n\n useEffect(() => {\n if (!selectedValue && input.length > 2) {\n debouncedGetPlacePredictions(input);\n }\n }, [input]);\n\n return predictions;\n}\n","import { checkIfMidDay, checkIfMorning, getNormalizedDate } from 'src/feature-app/NewMap';\nimport {\n getYYYYMMDDx, \n hourAndMinute,\n} from 'src/feature-app';\n\nexport const getFranjaAndDayFrom = (from: number): { day: string; franjaHoraria: 'Mañana' | 'Mediodía' | 'Tarde' } => {\n const day = getYYYYMMDDx(Number(from));\n const hour = hourAndMinute(from);\n const normalizdedDate = getNormalizedDate(hour);\n const franjaHoraria = checkIfMorning(normalizdedDate)\n ? 'Mañana'\n : checkIfMidDay(normalizdedDate)\n ? 'Mediodía'\n : 'Tarde';\n\n return { day, franjaHoraria };\n};\n","import {\n Assessors,\n Slot,\n} from 'src/types';\nimport dayjs from 'dayjs';\n\n\nexport const createNoDmsSlotAndAssessor = (franjaHoraria: string, day: string): { slot: Slot; assessor: Assessors } => {\n const from = Number(dayjs.utc(`${day} 01:00`, 'YYYY-MM-DD HH:mm').format('x'));\n const to = Number(dayjs.utc(`${day} 23:59`, 'YYYY-MM-DD HH:mm').format('x'));\n const code = franjaHoraria === 'Mañana' ? 'MANANA' : franjaHoraria === 'Mediodía' ? 'MEDIODIA' : 'TARDE';\n const assessor: Assessors = { code: '0', name: 'Todos' };\n const slot: Slot = {\n from,\n to,\n replacementCarServiceAvailable: false,\n dayMoment: {\n code,\n name: franjaHoraria,\n },\n assessorCode: '0',\n };\n\n return { slot, assessor };\n};\n","import {\n Breakpoints,\n Container,\n ContainerHorizontalAlignment,\n ContainerPadding,\n ContainerVerticalAlignment,\n ContainerWrap,\n CTA,\n Layout,\n styled,\n Text,\n TextAlignment,\n TextAppearance,\n TextColor,\n ThemeProvider\n} from '@volkswagen-onehub/components-core';\nimport { Calendar, FleetServicePrivate, CarPickupService } from 'src/icons-core-imports';\nimport React, { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useMapGeneralController } from 'src/feature-app';\nimport { Points } from 'src/types';\nimport { Horario, OneFormState } from 'src/types';\nimport { getDistanceFromLatLngCenter } from 'src/feature-app/NewMap';\nimport { useTrackingManager } from 'src/feature-app/hooks/use-tracking-manager';\nimport { usePinState } from 'src/feature-app/NewMap/usePinState';\n\ninterface BoxCardProps {\n selected?: boolean;\n isCarousel: boolean;\n isHover?: boolean;\n isFirstDesktop?: boolean;\n greyCard?: boolean;\n}\n\nconst BoxCard = styled.div`\n width: 100%;\n margin-top: ${(props) => (props.isCarousel || props.isFirstDesktop ? '0' : '20px')};\n padding: ${(props) => (props.isCarousel ? '12px' : '20px')};\n border: ${(props) =>\n props.selected && props.greyCard && !props.isCarousel \n ? '2px solid #6A767D' \n : props.greyCard && !props.isCarousel \n ? '1px solid #6A767D'\n :props.selected && !props.isCarousel\n ? '2px solid #FFFFFF'\n : props.isCarousel\n ? 'none'\n : '1px solid rgba(255,255,255,0.44)'};\n :hover {\n border: ${(props) => (\n props.isCarousel \n ? 'none'\n : props.selected && props.greyCard\n ? '2px solid #6A767D' \n : props.greyCard\n ? '1px solid #6A767D'\n : props.selected\n ? '2px solid #FFFFFF' \n : '1px solid #4cc7f4')};\n }\n\n @media all and (min-width: 560px) {\n margin-top: ${(props) => (props.isCarousel || props.isFirstDesktop ? '0' : '24px')};\n padding: 20px;\n }\n @media screen and (min-width: 960px) {\n .main {\n border: ${(props) =>\n props.isCarousel\n ? 'none'\n : props.selected\n ? '2px solid #001e50;'\n : props.isHover\n ? '1px solid #0040C5'\n : '1px solid #DFE4E8'};\n }\n .inverted {\n border: ${(props) =>\n props.isCarousel\n ? 'none'\n : props.selected\n ? '2px solid #FFFFFF'\n : props.isHover\n ? '1px solid #4cc7f4'\n : '1px solid rgba(255,255,255,0.44)'};\n }\n \n }\n @media all and (min-width: 1600px) {\n margin-top: ${(props) => (props.isCarousel || props.isFirstDesktop ? '0' : '28px')};\n }\n`;\n\ninterface isCarouselProps {\n isCarousel: boolean;\n}\n\nconst CTAVerMasHorasWrapper = styled.div`\n button {\n color: #ffffff;\n font-size: ${(props) => (props.isCarousel ? '12px' : null)};\n svg {\n height: ${(props) => (props.isCarousel ? '10px' : null)};\n width: ${(props) => (props.isCarousel ? '10px' : null)};\n }\n }\n`;\n\nconst EllipsisTextWrapper = styled.p<{greyCard?: boolean}>`\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin-top: 0px;\n margin-bottom: 0px;\n color: ${(props)=>(props.greyCard ? '#6A767D' : '#FFFFFF')};\n`;\nconst GreyText = styled.span<{greyCard?: boolean}>`\n color: ${(props)=>(props.greyCard ? '#6A767D' : '#FFFFFF')};\n`;\nconst SVGSize = styled.div<{greyCard: boolean}>`\n padding-left: 16px;\n svg {\n height: 20px;\n width: auto;\n color: ${(props)=> props.greyCard ? '#6A767D' : '#FFFFFF'};\n }\n`;\nconst CustomCTA = styled.button<{greyCard?: boolean}>`\n height: 32px;\n width: max-content;\n padding: 8px 16px;\n border: none;\n cursor: pointer;\n border-radius: 22px;\n display: flex;\n align-items: center;\n background-color: ${(props)=> props.greyCard ? '#6A767D' : '#FFFFFF'};\n color: ${(props)=> props.greyCard ? '#DFE4E8' : '#001E50'};\n :hover {\n background-color: ${(props)=> props.greyCard ? '#6A767D' : 'rgba(255,255,255,0.90)'};\n }\n`;\nconst CustomTerciayCTA = styled.button<{greyCard?: boolean}>`\n color: ${(props)=> props.greyCard ? '#6A767D' : '#FFFFFF'};\n display: flex;\n border: none;\n cursor: pointer;\n background: none;\n align-items: center;\n padding:0 0 2px;\n border-bottom: ${(props)=> props.greyCard ? '1px solid #6A767D' : '1px solid #FFFFFF'};\n :hover {\n background-color: ${(props)=> props.greyCard ? '#6A767D' : 'rgba(255,255,255,0.90)'};\n }\n svg{\n color: ${(props)=> props.greyCard ? '#6A767D' : '#FFFFFF'};\n }\n div {\n color: ${(props)=> props.greyCard ? '#6A767D' : '#FFFFFF'};\n }\n`;\n\ninterface DealerCardProps {\n distanceFromCenter: string;\n handleSeleccionarOnClick?: any;\n handleShowCalendarOnClick?: any;\n // center?: Center,\n isCarousel: boolean;\n dealerInfo: any;\n point: Points;\n slots: any;\n handleShowSlots?: (point: Points) => string | null;\n isCitaPosventa?: boolean;\n isFirstDesktop?: boolean;\n carPickupSelected?: boolean;\n replacementCarSelected?: boolean;\n}\n\nexport const NewDealerCard = React.memo((props: DealerCardProps) => {\n const { \n distanceFromCenter, \n isCarousel, \n dealerInfo, \n point, \n handleShowSlots, \n isCitaPosventa,\n isFirstDesktop,\n carPickupSelected,\n replacementCarSelected\n } = props;\n\n const { suggestionIsAddress } = useSelector((state: OneFormState) => state.formInfo);\n const dealerCompletAdress = `${dealerInfo.markerInfo.dealerInfo.address}, ${dealerInfo.markerInfo.dealerInfo.zipCode} ${dealerInfo.markerInfo.dealerInfo.city}`;\n const {\n centerToCalculateDistance,\n handlePointClickAndCarouselMove,\n handleHoverPoint,\n hoverPoint,\n selectedPoint,\n userIsGeoLocated,\n handleClusterClick,\n } = useMapGeneralController();\n\n const { isActive, isHover } = usePinState(selectedPoint, hoverPoint, point);\n\n const [ greyCard, setGreyCard ] = useState(false);\n\n useEffect(()=>{\n if(point) {\n if(carPickupSelected && !point.properties.dealer.dmsInfo.pickupCarServiceAvailabe ){\n setGreyCard(true);\n } else if(replacementCarSelected && !point.properties.dealer.dmsInfo.replacementCarServiceAvailable) {\n setGreyCard(true);\n } else {\n setGreyCard(false);\n }\n } \n }, [carPickupSelected, replacementCarSelected, point]);\n\n return (\n {\n e.preventDefault();\n if (point.properties.parent_cluster_id) {\n if (window.innerWidth <= 959) {\n handleClusterClick(point, true, true);\n } else {\n handleClusterClick(point, true);\n }\n } else {\n handlePointClickAndCarouselMove(point);\n }\n }}\n onMouseEnter={(e) => {\n if (!isCarousel) {\n e.preventDefault();\n handleHoverPoint(point);\n }\n }}\n onMouseLeave={(e) => {\n if (!isCarousel) {\n e.preventDefault();\n handleHoverPoint(null);\n }\n }}\n >\n
    \n {isCarousel ? (\n <>\n {/*card para el carousel*/}\n \n
    \n {\n userIsGeoLocated || suggestionIsAddress ? (\n \n \n {dealerInfo.name ? dealerInfo.name : null}\n \n\n \n \n {userIsGeoLocated || suggestionIsAddress\n ? distanceFromCenter\n ? `${distanceFromCenter}km`\n : `${getDistanceFromLatLngCenter(centerToCalculateDistance.current, point)}km`\n : null}\n \n \n \n ) : (\n \n {dealerInfo.name ? dealerInfo.name : null}\n \n )\n }\n
    \n \n {!point.properties.dealer.dmsInfo || !point.properties.dealer.dmsInfo.dmsAvailable ? (\n

    \n {dealerCompletAdress}\n

    \n ) : (\n {dealerCompletAdress}\n )}\n
    \n
    \n\n {handleShowSlots ? (\n handleShowSlots(point) === null ? (\n <>\n {\n point.properties.dealer.dmsInfo ? (\n \n
    \n {\n point.properties.dealer.dmsInfo.replacementCarServiceAvailable ? (\n \n \n \n ) : null\n }\n {\n point.properties.dealer.dmsInfo.pickupCarServiceAvailabe ? (\n \n \n \n ) : null\n }\n
    \n
    \n ) :
    \n }\n \n ) : (\n \n \n \n {handleShowSlots(point)}\n \n \n {\n point.properties.dealer.dmsInfo && point.properties.dealer.dmsInfo.replacementCarServiceAvailable\n || point.properties.dealer.dmsInfo && point.properties.dealer.dmsInfo.pickupCarServiceAvailabe \n ? (\n
    \n {\n point.properties.dealer.dmsInfo.replacementCarServiceAvailable ? (\n \n \n \n ) : null\n }\n {\n point.properties.dealer.dmsInfo.pickupCarServiceAvailabe ? (\n \n \n \n ) : null\n }\n
    \n ) : null\n }\n
    \n )\n ) : (\n <>\n { point.properties.dealer.dmsInfo && point.properties.dealer.dmsInfo.replacementCarServiceAvailable\n || point.properties.dealer.dmsInfo && point.properties.dealer.dmsInfo.pickupCarServiceAvailabe \n ? (\n \n
    \n {\n point.properties.dealer.dmsInfo.replacementCarServiceAvailable ? (\n \n \n \n ) : null\n }\n {\n point.properties.dealer.dmsInfo.pickupCarServiceAvailabe ? (\n \n \n \n ) : null\n }\n
    \n
    \n ) : null\n }\n \n )}\n \n ) : (\n <>\n {/*card para los tabs, cualquier breakpoint*/}\n \n
    \n {\n userIsGeoLocated || suggestionIsAddress ? (\n \n \n \n {dealerInfo.name ? dealerInfo.name : null}\n \n \n \n \n {userIsGeoLocated || suggestionIsAddress\n ? distanceFromCenter\n ? `${distanceFromCenter}km`\n : `${getDistanceFromLatLngCenter(centerToCalculateDistance.current, point)}km`\n : null}\n \n \n \n ) : (\n \n \n {dealerInfo.name ? dealerInfo.name : null}\n \n \n )\n }\n
    \n \n

    \n \n {dealerCompletAdress}\n \n

    \n
    \n
    \n\n {handleShowSlots ? (\n handleShowSlots(point) === null ? (\n <>\n {\n point.properties.dealer.dmsInfo && point.properties.dealer.dmsInfo.replacementCarServiceAvailable\n || point.properties.dealer.dmsInfo && point.properties.dealer.dmsInfo.pickupCarServiceAvailabe \n ? (\n \n
    \n {\n point.properties.dealer.dmsInfo.replacementCarServiceAvailable ? (\n \n \n \n ) : null\n }\n {\n point.properties.dealer.dmsInfo.pickupCarServiceAvailabe ? (\n \n \n \n ) : null\n }\n
    \n
    \n ) : null\n }\n \n ) : (\n \n \n \n {handleShowSlots(point)}\n \n \n {\n point.properties.dealer.dmsInfo ? (\n
    \n {\n point.properties.dealer.dmsInfo.replacementCarServiceAvailable ? (\n \n \n \n ) : null\n }\n {\n point.properties.dealer.dmsInfo.pickupCarServiceAvailabe ? (\n \n \n \n ) : null\n }\n
    \n ) : null\n }\n
    \n )\n ) : (\n <>\n {\n point.properties.dealer.dmsInfo && point.properties.dealer.dmsInfo.replacementCarServiceAvailable\n || point.properties.dealer.dmsInfo && point.properties.dealer.dmsInfo.pickupCarServiceAvailabe \n ? (\n \n
    \n {\n point.properties.dealer.dmsInfo.replacementCarServiceAvailable ? (\n \n \n \n ) : null\n }\n {\n point.properties.dealer.dmsInfo.pickupCarServiceAvailabe ? (\n \n \n \n ) : null\n }\n
    \n
    \n ) : null\n }\n \n )}\n \n )}\n {isCitaPosventa ? ( ): }\n
    \n \n );\n});\n\nconst CitaPosventaCTAs = (props: DealerCardProps) => {\n const { \n handleSeleccionarOnClick, \n handleShowCalendarOnClick, \n isCarousel, \n dealerInfo, \n point,\n carPickupSelected,\n replacementCarSelected \n } = props;\n\n const trackingManager = useTrackingManager();\n\n const { formData } = useSelector((state: OneFormState) => state);\n const { horario }: { horario?: Horario } = formData.fields;\n\n const [ greyCard, setGreyCard ] = useState(false);\n\n useEffect(()=>{\n if(point) {\n if(carPickupSelected && !point.properties.dealer.dmsInfo.pickupCarServiceAvailabe ){\n setGreyCard(true);\n } else if(replacementCarSelected && !point.properties.dealer.dmsInfo.replacementCarServiceAvailable) {\n setGreyCard(true);\n } else {\n setGreyCard(false);\n }\n } \n }, [carPickupSelected, replacementCarSelected, point]);\n\n return !dealerInfo.dmsInfo || !dealerInfo.dmsInfo.dmsAvailable ? (\n \n {\n e.preventDefault();\n trackingManager.trackFormButtonClick(\n {\n contentId: 'Ver horario',\n },\n dealerInfo\n );\n\n handleShowCalendarOnClick(point);\n }}\n >\n \n Ver calendario\n \n \n {\n point.properties.dealer.dmsInfo ? (\n
    \n {\n point.properties.dealer.dmsInfo.replacementCarServiceAvailable ? (\n \n \n \n ) : null\n }\n {\n point.properties.dealer.dmsInfo.pickupCarServiceAvailabe ? (\n \n \n \n ) : null\n }\n
    \n ) : null\n }\n
    \n ) : (\n \n {\n e.preventDefault();\n trackingManager.trackFormButtonClick(\n {\n contentId: 'Seleccionar',\n },\n dealerInfo\n );\n\n handleSeleccionarOnClick(point);\n }}\n >\n \n Seleccionar\n \n \n \n {\n e.preventDefault();\n trackingManager.trackFormButtonClick(\n {\n contentId: 'Ver más horas',\n },\n dealerInfo\n );\n handleShowCalendarOnClick(point);\n }}\n >\n \n
    \n \n Ver más horas\n \n
    \n \n
    \n \n );\n};\n\nconst LeadsCTAs = (props: DealerCardProps) => {\n const { handleSeleccionarOnClick, dealerInfo, point } = props;\n\n const trackingManager = useTrackingManager();\n\n return (\n \n \n {\n e.preventDefault();\n trackingManager.trackFormButtonClick(\n {\n contentId: 'Seleccionar',\n },\n dealerInfo\n );\n\n handleSeleccionarOnClick(point);\n }}\n >\n Seleccionar\n \n \n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport {\n styled,\n Layout,\n Breakpoints,\n} from '@volkswagen-onehub/components-core';\nimport { Points } from 'src/types';\nimport { useMapGeneralController } from 'src/feature-app';\nimport { SelectedTab } from 'src/types';\n\nconst TabsWrapper = styled.div`\n width: 100%;\n height: 100%;\n padding-left: 5px;\n padding-top: 5px;\n @media all and (min-width: 960px) {\n /* width: 380px; */\n /* Falta ver como se comporta este width: 100% con el scroll */\n width: 100%;\n }\n\n & > div {\n @media all and (min-width: 960px) {\n height: calc(100vh - 174px);\n overflow-y: auto;\n padding-bottom: 24px;\n }\n @media all and (min-width: 1600px) {\n height: calc(100vh - 200px);\n }\n }\n`;\n\nconst WidthWrapper = styled.div`\n width: 100vw;\n @media all and (min-width: 960px) {\n width: 100%;\n }\n`;\n\ninterface SeleccionDealerTabsProps {\n pointsByDistance?: Points[];\n pointsByTime?: Points[];\n isTimeSelected?: boolean;\n setIsTimeSelected?: React.Dispatch>;\n renderPoints: (points: Points[], isTime?: boolean) => JSX.Element[];\n setPreSelectedOrderValue?: React.Dispatch>;\n preSelectedOrderValue?: string;\n pointsToList: Points[];\n}\n\nexport function SeleccionDealerTabs(props: SeleccionDealerTabsProps) {\n const {\n pointsByDistance,\n pointsByTime,\n isTimeSelected,\n setIsTimeSelected,\n renderPoints,\n setPreSelectedOrderValue,\n preSelectedOrderValue,\n pointsToList,\n } = props;\n const { clusters } = useMapGeneralController();\n\n const [defaultIndex, setDefaultIndex] = useState(0);\n\n useEffect(() => {\n if (preSelectedOrderValue && preSelectedOrderValue === 'horario') {\n setDefaultIndex(1);\n } else {\n setDefaultIndex(0);\n }\n }, [preSelectedOrderValue]);\n\n return (\n \n \n {renderPoints(pointsToList, true)}\n\n {/* \n \n Ordenar por:\n \n */}\n\n {/* \n {\n setDefaultIndex(index);\n if (index === 0) {\n setPreSelectedOrderValue('ubicacion');\n } else {\n setPreSelectedOrderValue('horario');\n }\n }}\n defaultIndex={defaultIndex}\n >\n {{\n title: 'Ubicación',\n content: renderPoints(pointsToList, false),\n key: 'ubicacion',\n }}\n {{ title: 'Horario', content: renderPoints(pointsToList, true), key: 'horario' }}\n \n */}\n \n \n );\n}\n","import { styled } from '@volkswagen-onehub/components-core';\nimport { css } from 'styled-components';\n\ninterface styledWrapperProps { \n notALayer?: boolean;\n isFiltrosSuggest: boolean;\n isLocating?: boolean;\n inputFocus?: boolean;\n formTheme?: string;\n isModeloSuggest?: boolean;\n isFullScreen?: boolean;\n goUp?: boolean;\n autoWidth?: boolean;\n}\n\n\nexport const MagnifierLabel = styled.div`\n color: ${(props) => (props.isFiltrosSuggest || props.formTheme === 'main' ? '#001e50' : '#ffffff')};\n padding-right: 8px;\n display: flex;\n align-items: center;\n\n & svg {\n fill: ${(props) =>\n props.isLocating\n ? props.isFiltrosSuggest || props.formTheme === 'main'\n ? '#dfe4e8'\n : '#6A767D'\n : props.isFiltrosSuggest || props.formTheme === 'main'\n ? '#001e50'\n : '#ffffff'};\n }\n`;\nexport const CloseButton = styled.button`\n cursor: pointer;\n border: none;\n outline: none;\n background: transparent;\n padding-left: 8px;\n display: flex;\n align-items: center;\n\n & svg {\n fill: ${(props) =>\n props.isLocating\n ? props.isFiltrosSuggest || props.formTheme === 'main'\n ? '#dfe4e8'\n : '#6A767D'\n : props.isFiltrosSuggest || props.formTheme === 'main'\n ? '#001e50'\n : '#ffffff'};\n }\n`;\n\nexport const StyledWrapper = styled.div`\n display: flex;\n justify-content: flex-start;\n margin-top: ${(props) => (props.isFiltrosSuggest ? '24px' : null)};\n box-shadow: ${(props) =>\n props.isLocating\n ? props.isFiltrosSuggest || props.formTheme === 'main'\n ? '0px 1px 0px 0px #dfe4e8'\n : '0px 1px 0px 0px #6A767D'\n : props.inputFocus\n ? props.isFiltrosSuggest || props.formTheme === 'main'\n ? '0 2px 0 0 #001E50'\n : '0 2px 0 0 #00B0F0'\n : props.isFiltrosSuggest || props.formTheme === 'main'\n ? '0px 1px 0px 0px #001E50'\n : '0px 1px 0px 0px #ffffff'};\n\n & .react-autosuggest__container {\n width: 100%;\n }\n\n & .react-autosuggest__input {\n width: 100%;\n padding: 8px 0;\n border: none;\n background-color: ${(props) => (props.isFiltrosSuggest || props.formTheme === 'main' ? '#ffffff' : '#001e50')};\n color: ${(props) =>\n props.isLocating\n ? props.isFiltrosSuggest || props.formTheme === 'main'\n ? '#dfe4e8'\n : '#6A767D'\n : props.isFiltrosSuggest || props.formTheme === 'main'\n ? '#001e50'\n : '#ffffff'};\n /* Añadir puntos suspensivos para el placeholder en mobile */\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n /* WebKit, Edge */\n ::-webkit-input-placeholder {\n color: ${(props) =>\n props.isLocating\n ? props.isFiltrosSuggest || props.formTheme === 'main'\n ? '#dfe4e8'\n : '#6A767D'\n : props.isFiltrosSuggest || props.formTheme === 'main'\n ? '#001e50'\n : '#ffffff'};\n }\n /* Firefox 4-18 */\n :-moz-placeholder {\n color: ${(props) =>\n props.isLocating\n ? props.isFiltrosSuggest || props.formTheme === 'main'\n ? '#dfe4e8'\n : '#6A767D'\n : props.isFiltrosSuggest || props.formTheme === 'main'\n ? '#001e50'\n : '#ffffff'};\n opacity: 1;\n }\n /* Firefox 19+ */\n ::-moz-placeholder {\n color: ${(props) =>\n props.isLocating\n ? props.isFiltrosSuggest || props.formTheme === 'main'\n ? '#dfe4e8'\n : '#6A767D'\n : props.isFiltrosSuggest || props.formTheme === 'main'\n ? '#001e50'\n : '#ffffff'};\n opacity: 1;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n }\n /* IE 10-11 */\n :-ms-input-placeholder {\n color: ${(props) =>\n props.isLocating\n ? props.isFiltrosSuggest || props.formTheme === 'main'\n ? '#dfe4e8'\n : '#6A767D'\n : props.isFiltrosSuggest || props.formTheme === 'main'\n ? '#001e50'\n : '#ffffff'};\n }\n /* Edge */\n ::-ms-input-placeholder {\n color: ${(props) =>\n props.isLocating\n ? props.isFiltrosSuggest || props.formTheme === 'main'\n ? '#dfe4e8'\n : '#6A767D'\n : props.isFiltrosSuggest || props.formTheme === 'main'\n ? '#001e50'\n : '#ffffff'};\n }\n /* MODERN BROWSER */\n ::placeholder {\n color: ${(props) =>\n props.isLocating\n ? props.isFiltrosSuggest || props.formTheme === 'main'\n ? '#dfe4e8'\n : '#6A767D'\n : props.isFiltrosSuggest || props.formTheme === 'main'\n ? '#001e50'\n : '#ffffff'};\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n }\n }\n\n & .react-autosuggest__input--focused {\n outline: none;\n }\n\n & .react-autosuggest__input--open {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n & .react-autosuggest__suggestions-container {\n display: none;\n width: 100%;\n }\n\n & .react-autosuggest__suggestions-container--open {\n display: block;\n position: absolute;\n height: max-content;\n border: 1px solid #aaa;\n background-color: #fff; \n font-family: Helvetica, sans-serif;\n font-weight: 300;\n font-size: 16px;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n z-index: 1060;\n overflow: hidden;\n border: none;\n box-shadow: 0px 12px 24px 0px rgba(0, 0, 0, 0.12);\n\n left: 0;\n top: ${(props)=>props.goUp ? '0' : '36px'};\n transform: ${(props)=>props.goUp ? 'translateY(-100%)' : null};\n \n ${(props) =>\n props.isFiltrosSuggest\n ? css`\n width: calc( 100% + 68x); \n @media screen and (min-width: 960px) {\n width: 400px; \n }\n `\n : props.isModeloSuggest ?\n css`\n width: var(--size-grid020);\n @media all and (min-width: 560px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid013)' : '303px')};\n }\n @media all and (min-width: 960px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid008)' : '320px')};\n }\n @media all and (min-width: 1280px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid006)' : '320px')};\n }\n @media all and (min-width: 1920px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid005)' : '320px')};\n }\n @media all and (min-width: 2560px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid004)' : '320px')};\n } \n `\n : props.isFullScreen ? \n css`\n width: var(--size-grid020);\n @media all and (min-width: 960px) {\n width: ${(props) => (props.autoWidth ? '100%' : 'var(--size-grid013)')};\n }\n @media all and (min-width: 1280px) {\n width:${(props) => (props.autoWidth ? '100%' : 'var(--size-grid014)')};\n }\n @media all and (min-width: 1920px) {\n width: ${(props) => (props.autoWidth ? '100%' : 'var(--size-grid012)')};\n }\n @media all and (min-width: 2560px) {\n width: ${(props) => (props.autoWidth ? '100%' : 'var(--size-grid010)')};\n }\n `\n :css`\n width: calc( 100% + 68x); \n @media screen and (min-width: 960px) {\n width: 720px;\n }\n `}\n }\n\n & .react-autosuggest__suggestions-list {\n margin: 0;\n padding: 0;\n list-style-type: none;\n overflow: hidden scroll;\n height: max-content;\n max-height: 170px;\n @media all and (min-height: 500px) {\n max-height: 230px;\n }\n @media all and (min-height: 800px) {\n max-height: 300px;\n }\n @media all and (min-height: 800px) {\n max-height: 350px;\n }\n }\n\n & .react-autosuggest__suggestion {\n cursor: pointer;\n padding: 10px 20px;\n left: 0;\n :hover {\n * {\n color: #0040c5;\n }\n svg {\n fill: #0040c5;\n }\n }\n }\n\n & .react-autosuggest__suggestion--highlighted {\n /* background-color: #ddd; */\n }\n`;\n\nexport const SuggestionWrapper = styled.div`\n width: 100%;\n display: flex;\n align-items: flex-start;\n text-align: left;\n color: #001e50;\n`;\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","/**\n * Copyright 2019 Google LLC. All Rights Reserved.\n *\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 *\n * Http://www.apache.org/licenses/LICENSE-2.0.\n *\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.\n */\n\nimport isEqual from \"fast-deep-equal\";\n\n/**\n * @ignore\n */\ndeclare global {\n interface Window {\n __googleMapsCallback: (e: Event) => void;\n }\n}\n\nexport const DEFAULT_ID = \"__googleMapsScriptId\";\n\ntype Libraries = (\n | \"drawing\"\n | \"geometry\"\n | \"localContext\"\n | \"places\"\n | \"visualization\"\n)[];\n\n/**\n * The Google Maps JavaScript API\n * [documentation](https://developers.google.com/maps/documentation/javascript/tutorial)\n * is the authoritative source for [[LoaderOptions]].\n/**\n * Loader options\n */\nexport interface LoaderOptions {\n /**\n * See https://developers.google.com/maps/documentation/javascript/get-api-key.\n */\n apiKey: string;\n /**\n * @deprecated See https://developers.google.com/maps/premium/overview.\n */\n channel?: string;\n /**\n * @deprecated See https://developers.google.com/maps/premium/overview, use `apiKey` instead.\n */\n client?: string;\n /**\n * In your application you can specify release channels or version numbers:\n *\n * The weekly version is specified with `version=weekly`. This version is\n * updated once per week, and is the most current.\n *\n * ```\n * const loader = Loader({apiKey, version: 'weekly'});\n * ```\n *\n * The quarterly version is specified with `version=quarterly`. This version\n * is updated once per quarter, and is the most predictable.\n *\n * ```\n * const loader = Loader({apiKey, version: 'quarterly'});\n * ```\n *\n * The version number is specified with `version=n.nn`. You can choose\n * `version=3.40`, `version=3.39`, or `version=3.38`. Version numbers are\n * updated once per quarter.\n *\n * ```\n * const loader = Loader({apiKey, version: '3.40'});\n * ```\n *\n * If you do not explicitly specify a version, you will receive the\n * weekly version by default.\n */\n version?: string;\n /**\n * The id of the script tag. Before adding a new script, the Loader will check for an existing one.\n */\n id?: string;\n /**\n * When loading the Maps JavaScript API via the URL you may optionally load\n * additional libraries through use of the libraries URL parameter. Libraries\n * are modules of code that provide additional functionality to the main Maps\n * JavaScript API but are not loaded unless you specifically request them.\n *\n * ```\n * const loader = Loader({\n * apiKey,\n * libraries: ['drawing', 'geometry', 'places', 'visualization'],\n * });\n * ```\n *\n * Set the [list of libraries](https://developers.google.com/maps/documentation/javascript/libraries) for more options.\n */\n libraries?: Libraries;\n /**\n * By default, the Maps JavaScript API uses the user's preferred language\n * setting as specified in the browser, when displaying textual information\n * such as the names for controls, copyright notices, driving directions and\n * labels on maps. In most cases, it's preferable to respect the browser\n * setting. However, if you want the Maps JavaScript API to ignore the\n * browser's language setting, you can force it to display information in a\n * particular language when loading the Maps JavaScript API code.\n *\n * For example, the following example localizes the language to the United\n * Kingdom:\n *\n * ```\n * const loader = Loader({apiKey, language: 'ja', region: 'JP'});\n * ```\n *\n * See the [list of supported\n * languages](https://developers.google.com/maps/faq#languagesupport). Note\n * that new languages are added often, so this list may not be exhaustive.\n *\n */\n language?: string;\n /**\n * When you load the Maps JavaScript API from maps.googleapis.com it applies a\n * default bias for application behavior towards the United States. If you\n * want to alter your application to serve different map tiles or bias the\n * application (such as biasing geocoding results towards the region), you can\n * override this default behavior by adding a region parameter when loading\n * the Maps JavaScript API code.\n *\n * The region parameter accepts Unicode region subtag identifiers which\n * (generally) have a one-to-one mapping to country code Top-Level Domains\n * (ccTLDs). Most Unicode region identifiers are identical to ISO 3166-1\n * codes, with some notable exceptions. For example, Great Britain's ccTLD is\n * \"uk\" (corresponding to the domain .co.uk) while its region identifier is\n * \"GB.\"\n *\n * For example, the following example localizes the map to the United Kingdom:\n *\n * ```\n * const loader = Loader({apiKey, region: 'GB'});\n * ```\n */\n region?: string;\n /**\n * (Beta) You can add multiple Map IDs to your map using the map_ids paramenter in\n * your bootstrap request.\n */\n mapIds?: string[];\n /**\n * Use a custom url and path to load the Google Maps API script.\n */\n url?: string;\n /**\n * Use a cryptographic nonce attribute.\n */\n nonce?: string;\n /**\n * The number of script load retries.\n */\n retries?: number;\n}\n\n/**\n * [[Loader]] makes it easier to add Google Maps JavaScript API to your application\n * dynamically using\n * [Promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise).\n * It works by dynamically creating and appending a script node to the the\n * document head and wrapping the callback function so as to return a promise.\n *\n * ```\n * const loader = new Loader({\n * apiKey: \"\",\n * version: \"weekly\",\n * libraries: [\"places\"]\n * });\n *\n * loader.load().then(() => {\n * const map = new google.maps.Map(...)\n * })\n * ```\n */\nexport class Loader {\n /**\n * See [[LoaderOptions.version]]\n */\n version: string;\n /**\n * See [[LoaderOptions.apiKey]]\n */\n apiKey: string;\n /**\n * See [[LoaderOptions.channel]]\n */\n channel: string;\n /**\n * See [[LoaderOptions.client]]\n */\n client: string;\n /**\n * See [[LoaderOptions.id]]\n */\n id: string;\n /**\n * See [[LoaderOptions.libraries]]\n */\n libraries: Libraries;\n /**\n * See [[LoaderOptions.language]]\n */\n language: string;\n\n /**\n * See [[LoaderOptions.region]]\n */\n region: string;\n\n /**\n * See [[LoaderOptions.mapIds]]\n */\n mapIds: string[];\n\n /**\n * See [[LoaderOptions.nonce]]\n */\n nonce: string | null;\n\n /**\n * See [[LoaderOptions.retries]]\n */\n retries: number;\n\n /**\n * See [[LoaderOptions.url]]\n */\n url: string;\n\n private CALLBACK = \"__googleMapsCallback\";\n private callbacks: ((e: Event) => void)[] = [];\n private done = false;\n private loading = false;\n private onerrorEvent: Event;\n private static instance: Loader;\n private errors: ErrorEvent[] = [];\n\n /**\n * Creates an instance of Loader using [[LoaderOptions]]. No defaults are set\n * using this library, instead the defaults are set by the Google Maps\n * JavaScript API server.\n *\n * ```\n * const loader = Loader({apiKey, version: 'weekly', libraries: ['places']});\n * ```\n */\n constructor({\n apiKey,\n channel,\n client,\n id = DEFAULT_ID,\n libraries = [],\n language,\n region,\n version,\n mapIds,\n nonce,\n retries = 3,\n url = \"https://maps.googleapis.com/maps/api/js\",\n }: LoaderOptions) {\n this.version = version;\n this.apiKey = apiKey;\n this.channel = channel;\n this.client = client;\n this.id = id || DEFAULT_ID; // Do not allow empty string\n this.libraries = libraries;\n this.language = language;\n this.region = region;\n this.mapIds = mapIds;\n this.nonce = nonce;\n this.retries = retries;\n this.url = url;\n\n if (Loader.instance) {\n if (!isEqual(this.options, Loader.instance.options)) {\n throw new Error(\n `Loader must not be called again with different options. ${JSON.stringify(\n this.options\n )} !== ${JSON.stringify(Loader.instance.options)}`\n );\n }\n\n return Loader.instance;\n }\n\n Loader.instance = this;\n }\n\n get options(): LoaderOptions {\n return {\n version: this.version,\n apiKey: this.apiKey,\n channel: this.channel,\n client: this.client,\n id: this.id,\n libraries: this.libraries,\n language: this.language,\n region: this.region,\n mapIds: this.mapIds,\n nonce: this.nonce,\n url: this.url,\n };\n }\n\n /**\n * CreateUrl returns the Google Maps JavaScript API script url given the [[LoaderOptions]].\n *\n * @ignore\n */\n createUrl(): string {\n let url = this.url;\n\n url += `?callback=${this.CALLBACK}`;\n\n if (this.apiKey) {\n url += `&key=${this.apiKey}`;\n }\n\n if (this.channel) {\n url += `&channel=${this.channel}`;\n }\n\n if (this.client) {\n url += `&client=${this.client}`;\n }\n\n if (this.libraries.length > 0) {\n url += `&libraries=${this.libraries.join(\",\")}`;\n }\n\n if (this.language) {\n url += `&language=${this.language}`;\n }\n\n if (this.region) {\n url += `®ion=${this.region}`;\n }\n\n if (this.version) {\n url += `&v=${this.version}`;\n }\n\n if (this.mapIds) {\n url += `&map_ids=${this.mapIds.join(\",\")}`;\n }\n\n return url;\n }\n\n /**\n * Load the Google Maps JavaScript API script and return a Promise.\n */\n load(): Promise {\n return this.loadPromise();\n }\n\n /**\n * Load the Google Maps JavaScript API script and return a Promise.\n *\n * @ignore\n */\n loadPromise(): Promise {\n return new Promise((resolve, reject) => {\n this.loadCallback((err: Event) => {\n if (!err) {\n resolve();\n } else {\n reject(err);\n }\n });\n });\n }\n\n /**\n * Load the Google Maps JavaScript API script with a callback.\n */\n loadCallback(fn: (e: Event) => void): void {\n this.callbacks.push(fn);\n this.execute();\n }\n\n /**\n * Set the script on document.\n */\n private setScript(): void {\n if (document.getElementById(this.id)) {\n // TODO wrap onerror callback for cases where the script was loaded elsewhere\n this.callback();\n return;\n }\n\n const url = this.createUrl();\n const script = document.createElement(\"script\");\n script.id = this.id;\n script.type = \"text/javascript\";\n script.src = url;\n script.onerror = this.loadErrorCallback.bind(this);\n script.defer = true;\n script.async = true;\n\n if (this.nonce) {\n script.nonce = this.nonce;\n }\n\n document.head.appendChild(script);\n }\n\n deleteScript(): void {\n const script = document.getElementById(this.id);\n if (script) {\n script.remove();\n }\n }\n\n private resetIfRetryingFailed(): void {\n const possibleAttempts = this.retries + 1;\n if (this.done && !this.loading && this.errors.length >= possibleAttempts) {\n this.deleteScript();\n this.done = false;\n this.loading = false;\n this.errors = [];\n }\n }\n\n private loadErrorCallback(e: ErrorEvent): void {\n this.errors.push(e);\n\n if (this.errors.length <= this.retries) {\n const delay = this.errors.length * 2 ** this.errors.length;\n\n console.log(\n `Failed to load Google Maps script, retrying in ${delay} ms.`\n );\n\n setTimeout(() => {\n this.deleteScript();\n this.setScript();\n }, delay);\n } else {\n this.onerrorEvent = e;\n this.callback();\n }\n }\n\n private setCallback(): void {\n window.__googleMapsCallback = this.callback.bind(this);\n }\n\n private callback(): void {\n this.done = true;\n this.loading = false;\n\n this.callbacks.forEach((cb) => {\n cb(this.onerrorEvent);\n });\n\n this.callbacks = [];\n }\n\n private execute(): void {\n if (window.google && window.google.maps && window.google.maps.version) {\n console.warn(\n \"Aborted attempt to load Google Maps JS with @googlemaps/js-api-loader.\" +\n \"This may result in undesirable behavior as script parameters may not match.\"\n );\n this.callback();\n }\n\n this.resetIfRetryingFailed();\n if (this.done) {\n this.callback();\n } else {\n if (this.loading) {\n // do nothing but wait\n } else {\n this.loading = true;\n this.setCallback();\n this.setScript();\n }\n }\n }\n}\n","import React, { Component } from 'react';\n\nconst style = {\n width: '100%',\n height: '100%',\n left: 0,\n top: 0,\n margin: 0,\n padding: 0,\n position: 'absolute',\n};\n\nexport default class GoogleMapMap extends Component {\n shouldComponentUpdate() {\n return false; // disable react on this div\n }\n\n render() {\n const { registerChild } = this.props;\n return
    ;\n }\n}\n","import EventEmitter from 'eventemitter3';\n\nexport default class MarkerDispatcher extends EventEmitter {\n constructor(gmapInstance) {\n super();\n this.gmapInstance = gmapInstance;\n }\n\n getChildren() {\n return this.gmapInstance.props.children;\n }\n\n getMousePosition() {\n return this.gmapInstance.mouse_;\n }\n\n getUpdateCounter() {\n return this.gmapInstance.updateCounter_;\n }\n\n dispose() {\n this.gmapInstance = null;\n this.removeAllListeners();\n }\n}\n","// https://github.com/acdlite/recompose/blob/master/src/packages/recompose/utils/omit.js\nconst omit = (obj, keys) => {\n const { ...rest } = obj;\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (key in rest) {\n delete rest[key];\n }\n }\n return rest;\n};\n\nexport default omit;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @providesModule shallowEqual\n * @typechecks\n * @flow\n */\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n // Added the nonzero y check to make Flow happy, but it is redundant\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n }\n // Step 6.a: NaN == NaN\n // eslint-disable-next-line no-self-compare\n return x !== x && y !== y;\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) {\n return true;\n }\n\n if (\n typeof objA !== 'object' ||\n objA === null ||\n typeof objB !== 'object' ||\n objB === null\n ) {\n return false;\n }\n\n const keysA = Object.keys(objA);\n const keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n for (let i = 0; i < keysA.length; i++) {\n if (\n !hasOwnProperty.call(objB, keysA[i]) ||\n !is(objA[keysA[i]], objB[keysA[i]])\n ) {\n return false;\n }\n }\n\n return true;\n}\n\nexport default shallowEqual;\n/* src: https://github.com/facebook/fbjs/blob/master/packages/fbjs/src/core/shallowEqual.js */\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\n// utils\nimport omit from './utils/omit';\nimport shallowEqual from './utils/shallowEqual';\n\nconst mainStyle = {\n width: '100%',\n height: '100%',\n left: 0,\n top: 0,\n margin: 0,\n padding: 0,\n position: 'absolute',\n};\n\nconst style = {\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n backgroundColor: 'transparent',\n position: 'absolute',\n};\n\nexport default class GoogleMapMarkers extends Component {\n /* eslint-disable react/forbid-prop-types */\n static propTypes = {\n geoService: PropTypes.any,\n style: PropTypes.any,\n distanceToMouse: PropTypes.func,\n dispatcher: PropTypes.any,\n onChildClick: PropTypes.func,\n onChildMouseDown: PropTypes.func,\n onChildMouseLeave: PropTypes.func,\n onChildMouseEnter: PropTypes.func,\n getHoverDistance: PropTypes.func,\n insideMapPanes: PropTypes.bool,\n prerender: PropTypes.bool,\n };\n /* eslint-enable react/forbid-prop-types */\n\n static defaultProps = {\n insideMapPanes: false,\n prerender: false,\n };\n\n constructor(props) {\n super(props);\n\n this.dimensionsCache_ = {};\n this.hoverKey_ = null;\n this.hoverChildProps_ = null;\n this.allowMouse_ = true;\n\n this.state = { ...this._getState(), hoverKey: null };\n }\n\n componentDidMount() {\n this.props.dispatcher.on('kON_CHANGE', this._onChangeHandler);\n this.props.dispatcher.on(\n 'kON_MOUSE_POSITION_CHANGE',\n this._onMouseChangeHandler\n );\n this.props.dispatcher.on('kON_CLICK', this._onChildClick);\n this.props.dispatcher.on('kON_MDOWN', this._onChildMouseDown);\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n if (this.props.experimental === true) {\n return (\n !shallowEqual(this.props, nextProps) ||\n !shallowEqual(\n omit(this.state, ['hoverKey']),\n omit(nextState, ['hoverKey'])\n )\n );\n }\n\n return (\n !shallowEqual(this.props, nextProps) ||\n !shallowEqual(this.state, nextState)\n );\n }\n\n componentWillUnmount() {\n this.props.dispatcher.removeListener('kON_CHANGE', this._onChangeHandler);\n this.props.dispatcher.removeListener(\n 'kON_MOUSE_POSITION_CHANGE',\n this._onMouseChangeHandler\n );\n this.props.dispatcher.removeListener('kON_CLICK', this._onChildClick);\n this.props.dispatcher.removeListener('kON_MDOWN', this._onChildMouseDown);\n\n this.dimensionsCache_ = null;\n }\n\n _getState = () => ({\n children: this.props.dispatcher.getChildren(),\n updateCounter: this.props.dispatcher.getUpdateCounter(),\n });\n\n _onChangeHandler = () => {\n if (!this.dimensionsCache_) {\n return;\n }\n\n const prevChildCount = (this.state.children || []).length;\n const state = this._getState();\n\n this.setState(\n state,\n () =>\n (state.children || []).length !== prevChildCount &&\n this._onMouseChangeHandler()\n );\n };\n\n _onChildClick = () => {\n if (this.props.onChildClick) {\n if (this.hoverChildProps_) {\n const hoverKey = this.hoverKey_;\n const childProps = this.hoverChildProps_;\n // click works only on hovered item\n this.props.onChildClick(hoverKey, childProps);\n }\n }\n };\n\n _onChildMouseDown = () => {\n if (this.props.onChildMouseDown) {\n if (this.hoverChildProps_) {\n const hoverKey = this.hoverKey_;\n const childProps = this.hoverChildProps_;\n // works only on hovered item\n this.props.onChildMouseDown(hoverKey, childProps);\n }\n }\n };\n\n _onChildMouseEnter = (hoverKey, childProps) => {\n if (!this.dimensionsCache_) {\n return;\n }\n\n if (this.props.onChildMouseEnter) {\n this.props.onChildMouseEnter(hoverKey, childProps);\n }\n\n this.hoverChildProps_ = childProps;\n this.hoverKey_ = hoverKey;\n this.setState({ hoverKey });\n };\n\n _onChildMouseLeave = () => {\n if (!this.dimensionsCache_) {\n return;\n }\n\n const hoverKey = this.hoverKey_;\n const childProps = this.hoverChildProps_;\n\n if (hoverKey !== undefined && hoverKey !== null) {\n if (this.props.onChildMouseLeave) {\n this.props.onChildMouseLeave(hoverKey, childProps);\n }\n\n this.hoverKey_ = null;\n this.hoverChildProps_ = null;\n this.setState({ hoverKey: null });\n }\n };\n\n _onMouseAllow = (value) => {\n if (!value) {\n this._onChildMouseLeave();\n }\n\n this.allowMouse_ = value;\n };\n\n _onMouseChangeHandler = () => {\n if (this.allowMouse_) {\n this._onMouseChangeHandlerRaf();\n }\n };\n\n _onMouseChangeHandlerRaf = () => {\n if (!this.dimensionsCache_) {\n return;\n }\n\n const mp = this.props.dispatcher.getMousePosition();\n\n if (mp) {\n const distances = [];\n const hoverDistance = this.props.getHoverDistance();\n\n React.Children.forEach(this.state.children, (child, childIndex) => {\n if (!child) return;\n // layers\n if (\n child.props.latLng === undefined &&\n child.props.lat === undefined &&\n child.props.lng === undefined\n ) {\n return;\n }\n\n const childKey =\n child.key !== undefined && child.key !== null\n ? child.key\n : childIndex;\n const dist = this.props.distanceToMouse(\n this.dimensionsCache_[childKey],\n mp,\n child.props\n );\n if (dist < hoverDistance) {\n distances.push({\n key: childKey,\n dist,\n props: child.props,\n });\n }\n });\n\n if (distances.length) {\n distances.sort((a, b) => a.dist - b.dist);\n const hoverKey = distances[0].key;\n const childProps = distances[0].props;\n\n if (this.hoverKey_ !== hoverKey) {\n this._onChildMouseLeave();\n\n this._onChildMouseEnter(hoverKey, childProps);\n }\n } else {\n this._onChildMouseLeave();\n }\n } else {\n this._onChildMouseLeave();\n }\n };\n\n _getDimensions = (key) => {\n const childKey = key;\n return this.dimensionsCache_[childKey];\n };\n\n render() {\n const mainElementStyle = this.props.style || mainStyle;\n this.dimensionsCache_ = {};\n\n const markers = React.Children.map(\n this.state.children,\n (child, childIndex) => {\n if (!child) return undefined;\n if (\n child.props.latLng === undefined &&\n child.props.lat === undefined &&\n child.props.lng === undefined\n ) {\n return React.cloneElement(child, {\n $geoService: this.props.geoService,\n $onMouseAllow: this._onMouseAllow,\n $prerender: this.props.prerender,\n });\n }\n\n const latLng =\n child.props.latLng !== undefined\n ? child.props.latLng\n : { lat: child.props.lat, lng: child.props.lng };\n\n const pt = this.props.insideMapPanes\n ? this.props.geoService.fromLatLngToDivPixel(latLng)\n : this.props.geoService.fromLatLngToCenterPixel(latLng);\n\n const stylePtPos = {\n left: pt.x,\n top: pt.y,\n };\n\n // If the component has a southeast corner defined (either as a LatLng, or a separate\n // lat and lng pair), set the width and height based on the distance between the northwest\n // and the southeast corner to lock the overlay to the correct geographic bounds.\n if (\n child.props.seLatLng !== undefined ||\n (child.props.seLat !== undefined && child.props.seLng !== undefined)\n ) {\n const seLatLng =\n child.props.seLatLng !== undefined\n ? child.props.seLatLng\n : { lat: child.props.seLat, lng: child.props.seLng };\n\n const sePt = this.props.insideMapPanes\n ? this.props.geoService.fromLatLngToDivPixel(seLatLng)\n : this.props.geoService.fromLatLngToCenterPixel(seLatLng);\n\n stylePtPos.width = sePt.x - pt.x;\n stylePtPos.height = sePt.y - pt.y;\n }\n\n const containerPt = this.props.geoService.fromLatLngToContainerPixel(\n latLng\n );\n\n // to prevent rerender on child element i need to pass\n // const params $getDimensions and $dimensionKey instead of dimension object\n const childKey =\n child.key !== undefined && child.key !== null\n ? child.key\n : childIndex;\n\n this.dimensionsCache_[childKey] = {\n x: containerPt.x,\n y: containerPt.y,\n ...latLng,\n };\n\n return (\n \n {React.cloneElement(child, {\n $hover: childKey === this.state.hoverKey,\n $getDimensions: this._getDimensions,\n $dimensionKey: childKey,\n $geoService: this.props.geoService,\n $onMouseAllow: this._onMouseAllow,\n $prerender: this.props.prerender,\n })}\n
    \n );\n }\n );\n\n return
    {markers}
    ;\n }\n}\n","import React from 'react';\nimport GoogleMapMarkers from './google_map_markers';\n\nconst style = {\n width: '50%',\n height: '50%',\n left: '50%',\n top: '50%',\n // backgroundColor: 'red',\n margin: 0,\n padding: 0,\n position: 'absolute',\n // opacity: 0.3\n};\n\nexport default function (props) {\n return (\n
    \n \n
    \n );\n}\n","import { Loader } from '@googlemaps/js-api-loader';\n\nlet loader_;\nlet loadPromise_;\nlet resolveCustomPromise_;\n\nconst _customPromise = new Promise((resolve) => {\n resolveCustomPromise_ = resolve;\n});\n\n// TODO add libraries language and other map options\nexport default (bootstrapURLKeys, heatmapLibrary) => {\n // call from outside google-map-react\n // will be as soon as loadPromise resolved\n if (!bootstrapURLKeys) {\n return _customPromise;\n }\n\n // avoid api to be loaded multiple times\n if (loadPromise_) {\n return loadPromise_;\n }\n\n if (!bootstrapURLKeys.libraries) {\n bootstrapURLKeys.libraries = [];\n }\n\n const libraries = [...bootstrapURLKeys.libraries];\n\n // note: heatmapLibrary will be deprecated on next major\n if (heatmapLibrary) {\n // if heatmapLibrary is present\n // check if we need to add visualization library\n if (libraries.length === 0 || !libraries.includes('visualization')) {\n // if the array isEmpty or visualization is\n // not present, push the visualization library\n libraries.push('visualization');\n }\n console.warn(\n \"heatmapLibrary will be deprecated in the future. Please use { libraries: ['visualization'] } in bootstrapURLKeys property instead\"\n );\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (Object.keys(bootstrapURLKeys).indexOf('callback') > -1) {\n const message = `\"callback\" key in bootstrapURLKeys is not allowed,\n use onGoogleApiLoaded property instead`;\n // eslint-disable-next-line no-console\n console.error(message);\n throw new Error(message);\n }\n }\n\n if (typeof window === 'undefined') {\n throw new Error('google map cannot be loaded outside browser env');\n }\n\n const { key, ...restKeys } = bootstrapURLKeys;\n\n // use single instance of Loader to avoid multiple api loads\n if (!loader_) {\n loader_ = new Loader({\n // need to keep key as a prop for backwards compatibility\n apiKey: key || '',\n ...restKeys,\n libraries,\n });\n }\n\n loadPromise_ = loader_.load().then(() => {\n resolveCustomPromise_(window.google.maps);\n return window.google.maps;\n });\n\n resolveCustomPromise_(loadPromise_);\n\n return loadPromise_;\n};\n","/* eslint-disable import/prefer-default-export */\n\nexport function wrap(n, min, max) {\n const d = max - min;\n return n === max ? n : ((((n - min) % d) + d) % d) + min;\n}\n","import { wrap } from './wrap';\n\nexport default class LatLng {\n static convert = (a) => {\n if (a instanceof LatLng) {\n return a;\n }\n\n if (Array.isArray(a)) {\n return new LatLng(a[0], a[1]);\n }\n\n if ('lng' in a && 'lat' in a) {\n return new LatLng(a.lat, a.lng);\n }\n\n return a;\n };\n\n constructor(lat, lng) {\n if (isNaN(lat) || isNaN(lng)) {\n throw new Error(`Invalid LatLng object: (${lat}, ${lng})`);\n }\n this.lat = +lat;\n this.lng = +lng;\n }\n\n wrap() {\n return new LatLng(this.lat, wrap(this.lng, -180, 180));\n }\n}\n","/* eslint-disable class-methods-use-this */\nimport Point from '@mapbox/point-geometry';\nimport LatLng from './lat_lng';\nimport { wrap } from './wrap';\n\n// A single transform, generally used for a single tile to be scaled, rotated, and zoomed.\nexport default class Transform {\n constructor(tileSize, minZoom, maxZoom) {\n this.tileSize = tileSize || 512; // constant\n\n this._minZoom = minZoom || 0;\n this._maxZoom = maxZoom || 52;\n\n this.latRange = [-85.05113, 85.05113];\n\n this.width = 0;\n this.height = 0;\n this.zoom = 0;\n this.center = new LatLng(0, 0);\n this.angle = 0;\n }\n\n get minZoom() {\n return this._minZoom;\n }\n\n set minZoom(zoom) {\n this._minZoom = zoom;\n this.zoom = Math.max(this.zoom, zoom);\n }\n\n get maxZoom() {\n return this._maxZoom;\n }\n\n set maxZoom(zoom) {\n this._maxZoom = zoom;\n this.zoom = Math.min(this.zoom, zoom);\n }\n\n get worldSize() {\n return this.tileSize * this.scale;\n }\n\n get centerPoint() {\n return new Point(0, 0); // this.size._div(2);\n }\n\n get size() {\n return new Point(this.width, this.height);\n }\n\n get bearing() {\n return (-this.angle / Math.PI) * 180;\n }\n\n set bearing(bearing) {\n this.angle = (-wrap(bearing, -180, 180) * Math.PI) / 180;\n }\n\n get zoom() {\n return this._zoom;\n }\n\n set zoom(zoom) {\n const zoomV = Math.min(Math.max(zoom, this.minZoom), this.maxZoom);\n this._zoom = zoomV;\n this.scale = this.zoomScale(zoomV);\n this.tileZoom = Math.floor(zoomV);\n this.zoomFraction = zoomV - this.tileZoom;\n }\n\n zoomScale(zoom) {\n return Math.pow(2, zoom);\n }\n\n scaleZoom(scale) {\n return Math.log(scale) / Math.LN2;\n }\n\n project(latlng, worldSize) {\n return new Point(\n this.lngX(latlng.lng, worldSize),\n this.latY(latlng.lat, worldSize)\n );\n }\n\n unproject(point, worldSize) {\n return new LatLng(\n this.yLat(point.y, worldSize),\n this.xLng(point.x, worldSize)\n );\n }\n\n get x() {\n return this.lngX(this.center.lng);\n }\n\n get y() {\n return this.latY(this.center.lat);\n }\n\n get point() {\n return new Point(this.x, this.y);\n }\n\n // lat/lon <-> absolute pixel coords convertion\n lngX(lon, worldSize) {\n return ((180 + lon) * (worldSize || this.worldSize)) / 360;\n }\n\n // latitude to absolute y coord\n latY(lat, worldSize) {\n const y =\n (180 / Math.PI) * Math.log(Math.tan(Math.PI / 4 + (lat * Math.PI) / 360));\n return ((180 - y) * (worldSize || this.worldSize)) / 360;\n }\n\n xLng(x, worldSize) {\n return (x * 360) / (worldSize || this.worldSize) - 180;\n }\n\n yLat(y, worldSize) {\n const y2 = 180 - (y * 360) / (worldSize || this.worldSize);\n return (360 / Math.PI) * Math.atan(Math.exp((y2 * Math.PI) / 180)) - 90;\n }\n\n locationPoint(latlng) {\n const p = this.project(latlng);\n return this.centerPoint._sub(this.point._sub(p)._rotate(this.angle));\n }\n\n pointLocation(p) {\n const p2 = this.centerPoint._sub(p)._rotate(-this.angle);\n return this.unproject(this.point.sub(p2));\n }\n}\n","import Point from '@mapbox/point-geometry';\n\nimport LatLng from './lat_lng';\nimport Transform from './transform';\n\nexport default class Geo {\n constructor(tileSize) {\n // left_top view пользует гугл\n // super();\n this.hasSize_ = false;\n this.hasView_ = false;\n this.transform_ = new Transform(tileSize || 512);\n }\n\n setView(center, zoom, bearing) {\n this.transform_.center = LatLng.convert(center);\n this.transform_.zoom = +zoom;\n this.transform_.bearing = +bearing;\n this.hasView_ = true;\n }\n\n setViewSize(width, height) {\n this.transform_.width = width;\n this.transform_.height = height;\n this.hasSize_ = true;\n }\n\n setMapCanvasProjection(maps, mapCanvasProjection) {\n this.maps_ = maps;\n this.mapCanvasProjection_ = mapCanvasProjection;\n }\n\n canProject() {\n return this.hasSize_ && this.hasView_;\n }\n\n hasSize() {\n return this.hasSize_;\n }\n\n /** Returns the pixel position relative to the map center. */\n fromLatLngToCenterPixel(ptLatLng) {\n return this.transform_.locationPoint(LatLng.convert(ptLatLng));\n }\n\n /**\n * Returns the pixel position relative to the map panes,\n * or relative to the map center if there are no panes.\n */\n fromLatLngToDivPixel(ptLatLng) {\n if (this.mapCanvasProjection_) {\n const latLng = new this.maps_.LatLng(ptLatLng.lat, ptLatLng.lng);\n return this.mapCanvasProjection_.fromLatLngToDivPixel(latLng);\n }\n return this.fromLatLngToCenterPixel(ptLatLng);\n }\n\n /** Returns the pixel position relative to the map top-left. */\n fromLatLngToContainerPixel(ptLatLng) {\n if (this.mapCanvasProjection_) {\n const latLng = new this.maps_.LatLng(ptLatLng.lat, ptLatLng.lng);\n return this.mapCanvasProjection_.fromLatLngToContainerPixel(latLng);\n }\n\n const pt = this.fromLatLngToCenterPixel(ptLatLng);\n pt.x -=\n this.transform_.worldSize * Math.round(pt.x / this.transform_.worldSize);\n\n pt.x += this.transform_.width / 2;\n pt.y += this.transform_.height / 2;\n\n return pt;\n }\n\n /** Returns the LatLng for the given offset from the map top-left. */\n fromContainerPixelToLatLng(ptXY) {\n if (this.mapCanvasProjection_) {\n const latLng = this.mapCanvasProjection_.fromContainerPixelToLatLng(ptXY);\n return { lat: latLng.lat(), lng: latLng.lng() };\n }\n\n const ptxy = { ...ptXY };\n ptxy.x -= this.transform_.width / 2;\n ptxy.y -= this.transform_.height / 2;\n const ptRes = this.transform_.pointLocation(Point.convert(ptxy));\n\n ptRes.lng -= 360 * Math.round(ptRes.lng / 360); // convert 2 google format\n return ptRes;\n }\n\n getWidth() {\n return this.transform_.width;\n }\n\n getHeight() {\n return this.transform_.height;\n }\n\n getZoom() {\n return this.transform_.zoom;\n }\n\n getCenter() {\n const ptRes = this.transform_.pointLocation({ x: 0, y: 0 });\n\n return ptRes;\n }\n\n getBounds(margins, roundFactor) {\n const bndT = (margins && margins[0]) || 0;\n const bndR = (margins && margins[1]) || 0;\n const bndB = (margins && margins[2]) || 0;\n const bndL = (margins && margins[3]) || 0;\n\n if (\n this.getWidth() - bndR - bndL > 0 &&\n this.getHeight() - bndT - bndB > 0\n ) {\n const topLeftCorner = this.transform_.pointLocation(\n Point.convert({\n x: bndL - this.getWidth() / 2,\n y: bndT - this.getHeight() / 2,\n })\n );\n const bottomRightCorner = this.transform_.pointLocation(\n Point.convert({\n x: this.getWidth() / 2 - bndR,\n y: this.getHeight() / 2 - bndB,\n })\n );\n\n let res = [\n topLeftCorner.lat,\n topLeftCorner.lng, // NW\n bottomRightCorner.lat,\n bottomRightCorner.lng, // SE\n bottomRightCorner.lat,\n topLeftCorner.lng, // SW\n topLeftCorner.lat,\n bottomRightCorner.lng, // NE\n ];\n\n if (roundFactor) {\n res = res.map((r) => Math.round(r * roundFactor) / roundFactor);\n }\n return res;\n }\n\n return [0, 0, 0, 0];\n }\n}\n","export default function raf(callback) {\n if (window.requestAnimationFrame) {\n return window.requestAnimationFrame(callback);\n }\n\n const nativeRaf =\n window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame;\n\n return nativeRaf\n ? nativeRaf(callback)\n : window.setTimeout(callback, 1e3 / 60);\n}\n","const log2 = Math.log2 ? Math.log2 : (x) => Math.log(x) / Math.LN2;\n\nexport default log2;\n","// source taken from https://github.com/rackt/redux/blob/master/src/utils/pick.js\n\nexport default function pick(obj, fn) {\n return Object.keys(obj).reduce((result, key) => {\n if (fn(obj[key])) {\n result[key] = obj[key]; // eslint-disable-line\n }\n return result;\n }, {});\n}\n","const isEmpty = (val) => {\n // check for empty object {}, array []\n if (val !== null && typeof val === 'object') {\n if (Object.keys(val).length === 0) {\n return true;\n }\n } else if (val === null || val === undefined || val === '') {\n // check for undefined, null and \"\"\n return true;\n }\n return false;\n};\n\nexport default isEmpty;\n","function isObjectLike(value) {\n return !!value && typeof value === 'object';\n}\n\nconst objectToString = Object.prototype.toString;\n\nexport default function isNumber(value) {\n const numberTag = '[object Number]';\n return (\n typeof value === 'number' ||\n (isObjectLike(value) && objectToString.call(value) === numberTag)\n );\n}\n","// http://stackoverflow.com/questions/5899783/detect-safari-chrome-ie-firefox-opera-with-user-agent\nlet detectBrowserResult_ = null;\n\nexport default function detectBrowser() {\n if (detectBrowserResult_) {\n return detectBrowserResult_;\n }\n\n if (typeof navigator !== 'undefined') {\n const isExplorer = navigator.userAgent.indexOf('MSIE') > -1;\n const isFirefox = navigator.userAgent.indexOf('Firefox') > -1;\n const isOpera = navigator.userAgent.toLowerCase().indexOf('op') > -1;\n\n let isChrome = navigator.userAgent.indexOf('Chrome') > -1;\n let isSafari = navigator.userAgent.indexOf('Safari') > -1;\n\n if (isChrome && isSafari) {\n isSafari = false;\n }\n\n if (isChrome && isOpera) {\n isChrome = false;\n }\n\n detectBrowserResult_ = {\n isExplorer,\n isFirefox,\n isOpera,\n isChrome,\n isSafari,\n };\n return detectBrowserResult_;\n }\n\n detectBrowserResult_ = {\n isChrome: true,\n isExplorer: false,\n isFirefox: false,\n isOpera: false,\n isSafari: false,\n };\n\n return detectBrowserResult_;\n}\n","// source taken from https://github.com/rackt/redux/blob/master/src/utils/isPlainObject.js\nconst fnToString = (fn) => Function.prototype.toString.call(fn);\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nexport default function isPlainObject(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n const proto =\n typeof obj.constructor === 'function'\n ? Object.getPrototypeOf(obj)\n : Object.prototype;\n\n if (proto === null) {\n return true;\n }\n\n const constructor = proto.constructor;\n\n return (\n typeof constructor === 'function' &&\n constructor instanceof constructor &&\n fnToString(constructor) === fnToString(Object)\n );\n}\n","// feature detection for passive support\n// see: https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\nfunction hasPassiveSupport() {\n let passiveSupported = false;\n\n try {\n const options = Object.defineProperty({}, 'passive', {\n get() {\n passiveSupported = true;\n },\n });\n\n window.addEventListener('test', options, options);\n window.removeEventListener('test', options, options);\n } catch (err) {\n passiveSupported = false;\n }\n\n return passiveSupported;\n}\n\nexport default function addPassiveEventListener(\n element,\n eventName,\n func,\n capture\n) {\n element.addEventListener(\n eventName,\n func,\n hasPassiveSupport()\n ? {\n capture,\n passive: true,\n }\n : capture\n );\n}\n","/* eslint-disable */\n/**\n* Detect Element Resize.\n* Forked in order to guard against unsafe 'window' and 'document' references.\n*\n* https://github.com/sdecima/javascript-detect-element-resize\n* Sebastian Decima\n*\n* version: 0.5.3\n**/\n\nimport addPassiveEventListener from './passiveEvents';\n\n// Reliable `window` and `document` detection\nvar canUseDOM = !!(typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement);\n\n// Check `document` and `window` in case of server-side rendering\nvar _window;\nif (canUseDOM) {\n _window = window;\n} else if (typeof self !== 'undefined') {\n _window = self;\n} else {\n _window = this;\n}\n\nvar attachEvent = typeof document !== 'undefined' && document.attachEvent;\nvar stylesCreated = false;\n\nif (canUseDOM && !attachEvent) {\n var requestFrame = (function () {\n var raf = _window.requestAnimationFrame ||\n _window.mozRequestAnimationFrame ||\n _window.webkitRequestAnimationFrame ||\n function (fn) {\n return _window.setTimeout(fn, 20);\n };\n return function (fn) {\n return raf(fn);\n };\n })();\n\n var cancelFrame = (function () {\n var cancel = _window.cancelAnimationFrame ||\n _window.mozCancelAnimationFrame ||\n _window.webkitCancelAnimationFrame ||\n _window.clearTimeout;\n return function (id) {\n return cancel(id);\n };\n })();\n\n var resetTriggers = function (element) {\n var triggers = element.__resizeTriggers__,\n expand = triggers.firstElementChild,\n contract = triggers.lastElementChild,\n expandChild = expand.firstElementChild;\n contract.scrollLeft = contract.scrollWidth;\n contract.scrollTop = contract.scrollHeight;\n expandChild.style.width = expand.offsetWidth + 1 + 'px';\n expandChild.style.height = expand.offsetHeight + 1 + 'px';\n expand.scrollLeft = expand.scrollWidth;\n expand.scrollTop = expand.scrollHeight;\n };\n\n var checkTriggers = function (element) {\n return element.offsetWidth != element.__resizeLast__.width ||\n element.offsetHeight != element.__resizeLast__.height;\n };\n\n var scrollListener = function (e) {\n var element = this;\n resetTriggers(this);\n if (this.__resizeRAF__) cancelFrame(this.__resizeRAF__);\n this.__resizeRAF__ = requestFrame(function () {\n if (checkTriggers(element)) {\n element.__resizeLast__.width = element.offsetWidth;\n element.__resizeLast__.height = element.offsetHeight;\n element.__resizeListeners__.forEach(function (fn) {\n fn.call(element, e);\n });\n }\n });\n };\n\n /* Detect CSS Animations support to detect element display/re-attach */\n var animation = false,\n animationstring = 'animation',\n keyframeprefix = '',\n animationstartevent = 'animationstart',\n domPrefixes = 'Webkit Moz O ms'.split(' '),\n startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(\n ' '\n ),\n pfx = '';\n\n if (canUseDOM) {\n var elm = document.createElement('fakeelement');\n if (elm.style.animationName !== undefined) {\n animation = true;\n }\n\n if (animation === false) {\n for (var i = 0; i < domPrefixes.length; i++) {\n if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) {\n pfx = domPrefixes[i];\n animationstring = pfx + 'Animation';\n keyframeprefix = '-' + pfx.toLowerCase() + '-';\n animationstartevent = startEvents[i];\n animation = true;\n break;\n }\n }\n }\n }\n\n var animationName = 'resizeanim';\n var animationKeyframes = '@' +\n keyframeprefix +\n 'keyframes ' +\n animationName +\n ' { from { opacity: 0; } to { opacity: 0; } } ';\n var animationStyle = keyframeprefix +\n 'animation: 1ms ' +\n animationName +\n '; ';\n}\n\nvar createStyles = function () {\n if (!stylesCreated) {\n //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360\n var css = (animationKeyframes ? animationKeyframes : '') +\n '.resize-triggers { ' +\n (animationStyle ? animationStyle : '') +\n 'visibility: hidden; opacity: 0; } ' +\n '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',\n head = document.head || document.getElementsByTagName('head')[0],\n style = document.createElement('style');\n\n style.type = 'text/css';\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n\n head.appendChild(style);\n stylesCreated = true;\n }\n};\n\nvar addResizeListener = function (element, fn) {\n if (element.parentNode === undefined) {\n var tempParentDiv = document.createElement('div');\n element.parentNode = tempParentDiv;\n }\n element = element.parentNode;\n if (attachEvent)\n element.attachEvent('onresize', fn);\n else {\n if (!element.__resizeTriggers__) {\n if (getComputedStyle(element).position == 'static')\n element.style.position = 'relative';\n createStyles();\n element.__resizeLast__ = {};\n element.__resizeListeners__ = [];\n (element.__resizeTriggers__ = document.createElement(\n 'div'\n )).className = 'resize-triggers';\n element.__resizeTriggers__.innerHTML = '
    ' +\n '
    ';\n element.appendChild(element.__resizeTriggers__);\n resetTriggers(element);\n\n addPassiveEventListener(element, 'scroll', scrollListener, true);\n\n /* Listen for a css animation to detect element display/re-attach */\n animationstartevent &&\n element.__resizeTriggers__.addEventListener(\n animationstartevent,\n function (e) {\n if (e.animationName == animationName) resetTriggers(element);\n }\n );\n }\n element.__resizeListeners__.push(fn);\n }\n};\n\nvar removeResizeListener = function (element, fn) {\n element = element.parentNode;\n if (attachEvent)\n element.detachEvent('onresize', fn);\n else {\n element.__resizeListeners__.splice(\n element.__resizeListeners__.indexOf(fn),\n 1\n );\n if (!element.__resizeListeners__.length) {\n element.removeEventListener('scroll', scrollListener);\n element.__resizeTriggers__ = !element.removeChild(\n element.__resizeTriggers__\n );\n }\n }\n};\n\nexport {\n addResizeListener,\n removeResizeListener,\n};\n","/* eslint-disable import/no-extraneous-dependencies, react/forbid-prop-types, react/no-find-dom-node, no-console, no-undef */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\n\n// helpers\nimport GoogleMapMap from './google_map_map';\nimport MarkerDispatcher from './marker_dispatcher';\nimport GoogleMapMarkers from './google_map_markers';\nimport GoogleMapMarkersPrerender from './google_map_markers_prerender';\nimport { generateHeatmap, optionsHeatmap } from './google_heatmap';\n\n// loaders\nimport googleMapLoader from './loaders/google_map_loader';\n\n// lib\nimport Geo from './lib/geo';\n\n// tools\nimport raf from './utils/raf';\nimport log2 from './utils/log2';\nimport omit from './utils/omit';\nimport pick from './utils/pick';\nimport isEmpty from './utils/isEmpty';\nimport isNumber from './utils/isNumber';\nimport detectBrowser from './utils/detect';\nimport shallowEqual from './utils/shallowEqual';\nimport isPlainObject from './utils/isPlainObject';\nimport isArraysEqualEps from './utils/isArraysEqualEps';\nimport {\n addResizeListener,\n removeResizeListener,\n} from './utils/detectElementResize';\nimport addPassiveEventListener from './utils/passiveEvents';\n\n// consts\nconst kEPS = 0.00001;\nconst K_GOOGLE_TILE_SIZE = 256;\n// real minZoom calculated here _getMinZoom\nconst K_IDLE_TIMEOUT = 100;\nconst K_IDLE_CLICK_TIMEOUT = 300;\nconst DEFAULT_MIN_ZOOM = 3;\n// Starting with version 3.32, the maps API calls `draw()` each frame during\n// a zoom animation.\nconst DRAW_CALLED_DURING_ANIMATION_VERSION = 32;\nconst IS_REACT_16 = ReactDOM.createPortal !== undefined;\n\nconst createPortal = IS_REACT_16\n ? ReactDOM.createPortal\n : ReactDOM.unstable_renderSubtreeIntoContainer;\n\nfunction defaultOptions_(/* maps */) {\n return {\n overviewMapControl: false,\n streetViewControl: false,\n rotateControl: true,\n mapTypeControl: false,\n // disable poi\n styles: [\n {\n featureType: 'poi',\n elementType: 'labels',\n stylers: [{ visibility: 'off' }],\n },\n ],\n minZoom: DEFAULT_MIN_ZOOM, // dynamically recalculted if possible during init\n };\n}\n\nconst latLng2Obj = (latLng) =>\n isPlainObject(latLng) ? latLng : { lat: latLng[0], lng: latLng[1] };\n\nconst _checkMinZoom = (zoom, minZoom) => {\n if (process.env.NODE_ENV !== 'production') {\n if (zoom < minZoom) {\n console.warn(\n 'GoogleMap: ' + // eslint-disable-line\n 'minZoom option is less than recommended ' +\n 'minZoom option for your map sizes.\\n' +\n 'overrided to value ' +\n minZoom\n );\n }\n }\n\n if (minZoom < zoom) {\n return zoom;\n }\n return minZoom;\n};\n\nconst isFullScreen = () =>\n document.fullscreen ||\n document.webkitIsFullScreen ||\n document.mozFullScreen ||\n document.msFullscreenElement;\n\nclass GoogleMap extends Component {\n static propTypes = {\n apiKey: PropTypes.string,\n bootstrapURLKeys: PropTypes.any,\n\n defaultCenter: PropTypes.oneOfType([\n PropTypes.array,\n PropTypes.shape({\n lat: PropTypes.number,\n lng: PropTypes.number,\n }),\n ]),\n center: PropTypes.oneOfType([\n PropTypes.array,\n PropTypes.shape({\n lat: PropTypes.number,\n lng: PropTypes.number,\n }),\n ]),\n defaultZoom: PropTypes.number,\n zoom: PropTypes.number,\n onBoundsChange: PropTypes.func,\n onChange: PropTypes.func,\n onClick: PropTypes.func,\n onChildClick: PropTypes.func,\n onChildMouseDown: PropTypes.func,\n onChildMouseUp: PropTypes.func,\n onChildMouseMove: PropTypes.func,\n onChildMouseEnter: PropTypes.func,\n onChildMouseLeave: PropTypes.func,\n onZoomAnimationStart: PropTypes.func,\n onZoomAnimationEnd: PropTypes.func,\n onDrag: PropTypes.func,\n onDragEnd: PropTypes.func,\n onMapTypeIdChange: PropTypes.func,\n onTilesLoaded: PropTypes.func,\n options: PropTypes.any,\n distanceToMouse: PropTypes.func,\n hoverDistance: PropTypes.number,\n debounced: PropTypes.bool,\n margin: PropTypes.array,\n googleMapLoader: PropTypes.any,\n onGoogleApiLoaded: PropTypes.func,\n yesIWantToUseGoogleMapApiInternals: PropTypes.bool,\n draggable: PropTypes.bool,\n style: PropTypes.any,\n resetBoundsOnResize: PropTypes.bool,\n layerTypes: PropTypes.arrayOf(PropTypes.string), // ['TransitLayer', 'TrafficLayer']\n shouldUnregisterMapOnUnmount: PropTypes.bool,\n };\n\n static defaultProps = {\n distanceToMouse(pt, mousePos /* , markerProps */) {\n return Math.sqrt(\n (pt.x - mousePos.x) * (pt.x - mousePos.x) +\n (pt.y - mousePos.y) * (pt.y - mousePos.y)\n );\n },\n hoverDistance: 30,\n debounced: true,\n options: defaultOptions_,\n googleMapLoader,\n yesIWantToUseGoogleMapApiInternals: false,\n style: {\n width: '100%',\n height: '100%',\n margin: 0,\n padding: 0,\n position: 'relative',\n },\n layerTypes: [],\n heatmap: {},\n heatmapLibrary: false,\n shouldUnregisterMapOnUnmount: true,\n };\n\n static googleMapLoader = googleMapLoader; // eslint-disable-line\n\n constructor(props) {\n super(props);\n this.mounted_ = false;\n this.initialized_ = false;\n this.googleApiLoadedCalled_ = false;\n\n this.map_ = null;\n this.maps_ = null;\n this.prevBounds_ = null;\n this.heatmap = null;\n\n this.layers_ = {};\n\n this.mouse_ = null;\n this.mouseMoveTime_ = 0;\n this.boundingRect_ = null;\n this.mouseInMap_ = true;\n\n this.dragTime_ = 0;\n this.fireMouseEventOnIdle_ = false;\n this.updateCounter_ = 0;\n\n this.markersDispatcher_ = new MarkerDispatcher(this);\n this.geoService_ = new Geo(K_GOOGLE_TILE_SIZE);\n this.centerIsObject_ = isPlainObject(this.props.center);\n\n this.minZoom_ = DEFAULT_MIN_ZOOM;\n this.defaultDraggableOption_ = true;\n\n this.zoomControlClickTime_ = 0;\n\n this.childMouseDownArgs_ = null;\n this.childMouseUpTime_ = 0;\n\n this.googleMapDom_ = null;\n\n if (process.env.NODE_ENV !== 'production') {\n if (this.props.apiKey) {\n console.warn(\n 'GoogleMap: ' + // eslint-disable-line no-console\n 'apiKey is deprecated, use ' +\n 'bootstrapURLKeys={{key: YOUR_API_KEY}} instead.'\n );\n }\n\n if (this.props.onBoundsChange) {\n console.warn(\n 'GoogleMap: ' + // eslint-disable-line no-console\n 'onBoundsChange is deprecated, use ' +\n 'onChange({center, zoom, bounds, ...other}) instead.'\n );\n }\n\n if (isEmpty(this.props.center) && isEmpty(this.props.defaultCenter)) {\n console.warn(\n 'GoogleMap: center or defaultCenter property must be defined' // eslint-disable-line no-console\n );\n }\n\n if (isEmpty(this.props.zoom) && isEmpty(this.props.defaultZoom)) {\n console.warn(\n 'GoogleMap: zoom or defaultZoom property must be defined' // eslint-disable-line no-console\n );\n }\n }\n\n if (this._isCenterDefined(this.props.center || this.props.defaultCenter)) {\n const propsCenter = latLng2Obj(\n this.props.center || this.props.defaultCenter\n );\n this.geoService_.setView(\n propsCenter,\n this.props.zoom || this.props.defaultZoom,\n 0\n );\n }\n\n this.zoomAnimationInProgress_ = false;\n\n this.state = {\n overlay: null,\n };\n }\n\n componentDidMount() {\n this.mounted_ = true;\n addPassiveEventListener(window, 'resize', this._onWindowResize, false);\n addPassiveEventListener(window, 'keydown', this._onKeyDownCapture, true);\n const mapDom = ReactDOM.findDOMNode(this.googleMapDom_);\n // gmap can't prevent map drag if mousedown event already occured\n // the only workaround I find is prevent mousedown native browser event\n\n if (mapDom) {\n addPassiveEventListener(\n mapDom,\n 'mousedown',\n this._onMapMouseDownNative,\n true\n );\n }\n\n addPassiveEventListener(window, 'mouseup', this._onChildMouseUp, false);\n const bootstrapURLKeys = {\n ...(this.props.apiKey && { key: this.props.apiKey }),\n ...this.props.bootstrapURLKeys,\n };\n\n this.props.googleMapLoader(bootstrapURLKeys, this.props.heatmapLibrary); // we can start load immediatly\n\n setTimeout(\n () => {\n // to detect size\n this._setViewSize();\n if (\n this._isCenterDefined(this.props.center || this.props.defaultCenter)\n ) {\n this._initMap();\n }\n },\n 0,\n this\n );\n if (this.props.resetBoundsOnResize) {\n const that = this;\n addResizeListener(mapDom, that._mapDomResizeCallback);\n }\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n // draggable does not affect inner components\n return (\n !shallowEqual(\n omit(this.props, ['draggable']),\n omit(nextProps, ['draggable'])\n ) || !shallowEqual(this.state, nextState)\n );\n }\n\n componentDidUpdate(prevProps) {\n if (process.env.NODE_ENV !== 'production') {\n if (!shallowEqual(prevProps.defaultCenter, this.props.defaultCenter)) {\n console.warn(\n \"GoogleMap: defaultCenter prop changed. You can't change default props.\"\n );\n }\n\n if (!shallowEqual(prevProps.defaultZoom, this.props.defaultZoom)) {\n console.warn(\n \"GoogleMap: defaultZoom prop changed. You can't change default props.\"\n );\n }\n }\n\n if (\n !this._isCenterDefined(prevProps.center) &&\n this._isCenterDefined(this.props.center)\n ) {\n setTimeout(() => this._initMap(), 0);\n }\n\n if (this.map_) {\n const centerLatLng = this.geoService_.getCenter();\n if (this._isCenterDefined(this.props.center)) {\n const currentCenter = latLng2Obj(this.props.center);\n const prevCenter = this._isCenterDefined(prevProps.center)\n ? latLng2Obj(prevProps.center)\n : null;\n\n if (\n !prevCenter ||\n Math.abs(currentCenter.lat - prevCenter.lat) +\n Math.abs(currentCenter.lng - prevCenter.lng) >\n kEPS\n ) {\n if (\n Math.abs(currentCenter.lat - centerLatLng.lat) +\n Math.abs(currentCenter.lng - centerLatLng.lng) >\n kEPS\n ) {\n this.map_.panTo({\n lat: currentCenter.lat,\n lng: currentCenter.lng,\n });\n }\n }\n }\n\n if (!isEmpty(this.props.zoom)) {\n // if zoom chaged by user\n if (Math.abs(this.props.zoom - prevProps.zoom) > 0) {\n this.map_.setZoom(this.props.zoom);\n }\n }\n\n if (!isEmpty(prevProps.draggable) && isEmpty(this.props.draggable)) {\n // reset to default\n this.map_.setOptions({ draggable: this.defaultDraggableOption_ });\n } else if (!shallowEqual(prevProps.draggable, this.props.draggable)) {\n // also prevent this on window 'mousedown' event to prevent map move\n this.map_.setOptions({ draggable: this.props.draggable });\n }\n\n // use shallowEqual to try avoid calling map._setOptions if only the ref changes\n if (\n !isEmpty(this.props.options) &&\n !shallowEqual(prevProps.options, this.props.options)\n ) {\n const mapPlainObjects = pick(this.maps_, isPlainObject);\n let options =\n typeof this.props.options === 'function'\n ? this.props.options(mapPlainObjects)\n : this.props.options;\n // remove zoom, center and draggable options as these are managed by google-maps-react\n options = omit(options, ['zoom', 'center', 'draggable']);\n\n if ('minZoom' in options) {\n const minZoom = this._computeMinZoom(options.minZoom);\n options.minZoom = _checkMinZoom(options.minZoom, minZoom);\n }\n\n this.map_.setOptions(options);\n }\n\n if (!shallowEqual(this.props.layerTypes, prevProps.layerTypes)) {\n Object.keys(this.layers_).forEach((layerKey) => {\n this.layers_[layerKey].setMap(null);\n delete this.layers_[layerKey];\n });\n this._setLayers(this.props.layerTypes);\n }\n\n if (\n this.heatmap &&\n !shallowEqual(this.props.heatmap.positions, prevProps.heatmap.positions)\n ) {\n this.heatmap.setData(\n this.props.heatmap.positions.map((p) => ({\n location: new this.maps_.LatLng(p.lat, p.lng),\n weight: p.weight,\n }))\n );\n }\n if (\n this.heatmap &&\n !shallowEqual(this.props.heatmap.options, prevProps.heatmap.options)\n ) {\n Object.keys(this.props.heatmap.options).forEach((option) => {\n this.heatmap.set(option, this.props.heatmap.options[option]);\n });\n }\n }\n // emit actions\n this.markersDispatcher_.emit('kON_CHANGE');\n\n if (!shallowEqual(this.props.hoverDistance, prevProps.hoverDistance)) {\n this.markersDispatcher_.emit('kON_MOUSE_POSITION_CHANGE');\n }\n }\n\n componentWillUnmount() {\n this.mounted_ = false;\n const mapDom = ReactDOM.findDOMNode(this.googleMapDom_);\n if (mapDom) {\n mapDom.removeEventListener('mousedown', this._onMapMouseDownNative, true);\n }\n window.removeEventListener('resize', this._onWindowResize);\n window.removeEventListener('keydown', this._onKeyDownCapture);\n window.removeEventListener('mouseup', this._onChildMouseUp, false);\n if (this.props.resetBoundsOnResize) {\n removeResizeListener(mapDom, this._mapDomResizeCallback);\n }\n\n if (this.overlay_) {\n // this triggers overlay_.onRemove(), which will unmount the \n this.overlay_.setMap(null);\n }\n\n if (this.maps_ && this.map_ && this.props.shouldUnregisterMapOnUnmount) {\n // fix google, as otherwise listeners works even without map\n this.map_.setOptions({ scrollwheel: false });\n this.maps_.event.clearInstanceListeners(this.map_);\n }\n\n if (this.props.shouldUnregisterMapOnUnmount) {\n this.map_ = null;\n this.maps_ = null;\n }\n this.markersDispatcher_.dispose();\n\n this.resetSizeOnIdle_ = false;\n\n if (this.props.shouldUnregisterMapOnUnmount) {\n delete this.map_;\n delete this.markersDispatcher_;\n }\n }\n\n // calc minZoom if map size available\n // it's better to not set minZoom less than this calculation gives\n // otherwise there is no homeomorphism between screen coordinates and map\n // (one map coordinate can have different screen coordinates)\n _getMinZoom = () => {\n if (this.geoService_.getWidth() > 0 || this.geoService_.getHeight() > 0) {\n const tilesPerWidth =\n Math.ceil(this.geoService_.getWidth() / K_GOOGLE_TILE_SIZE) + 2;\n const tilesPerHeight =\n Math.ceil(this.geoService_.getHeight() / K_GOOGLE_TILE_SIZE) + 2;\n const maxTilesPerDim = Math.max(tilesPerWidth, tilesPerHeight);\n return Math.ceil(log2(maxTilesPerDim));\n }\n return DEFAULT_MIN_ZOOM;\n };\n\n _computeMinZoom = (minZoom) => {\n if (!isEmpty(minZoom)) {\n return minZoom;\n }\n return this._getMinZoom();\n };\n\n _mapDomResizeCallback = () => {\n this.resetSizeOnIdle_ = true;\n if (this.maps_) {\n const originalCenter = this.props.center || this.props.defaultCenter;\n const currentCenter = this.map_.getCenter();\n this.maps_.event.trigger(this.map_, 'resize');\n this.map_.setCenter(\n this.props.resetBoundsOnResize ? originalCenter : currentCenter\n );\n }\n };\n\n _setLayers = (layerTypes) => {\n layerTypes.forEach((layerType) => {\n this.layers_[layerType] = new this.maps_[layerType]();\n this.layers_[layerType].setMap(this.map_);\n });\n };\n\n _renderPortal = () => (\n \n );\n\n _initMap = () => {\n // only initialize the map once\n if (this.initialized_) {\n return;\n }\n this.initialized_ = true;\n\n const propsCenter = latLng2Obj(\n this.props.center || this.props.defaultCenter\n );\n this.geoService_.setView(\n propsCenter,\n this.props.zoom || this.props.defaultZoom,\n 0\n );\n\n this._onBoundsChanged(); // now we can calculate map bounds center etc...\n\n const bootstrapURLKeys = {\n ...(this.props.apiKey && { key: this.props.apiKey }),\n ...this.props.bootstrapURLKeys,\n };\n\n this.props\n .googleMapLoader(bootstrapURLKeys, this.props.heatmapLibrary)\n .then((maps) => {\n if (!this.mounted_) {\n return;\n }\n\n const centerLatLng = this.geoService_.getCenter();\n\n const propsOptions = {\n zoom: this.props.zoom || this.props.defaultZoom,\n center: new maps.LatLng(centerLatLng.lat, centerLatLng.lng),\n };\n\n // Start Heatmap\n if (this.props.heatmap.positions) {\n Object.assign(this, {\n heatmap: generateHeatmap(maps, this.props.heatmap),\n });\n optionsHeatmap(this.heatmap, this.props.heatmap);\n }\n // End Heatmap\n\n // prevent to exapose full api\n // next props must be exposed (console.log(Object.keys(pick(maps, isPlainObject))))\n // \"Animation\", \"ControlPosition\", \"MapTypeControlStyle\", \"MapTypeId\",\n // \"NavigationControlStyle\", \"ScaleControlStyle\", \"StrokePosition\",\n // \"SymbolPath\", \"ZoomControlStyle\",\n // \"event\", \"DirectionsStatus\", \"DirectionsTravelMode\", \"DirectionsUnitSystem\",\n // \"DistanceMatrixStatus\",\n // \"DistanceMatrixElementStatus\", \"ElevationStatus\", \"GeocoderLocationType\",\n // \"GeocoderStatus\", \"KmlLayerStatus\",\n // \"MaxZoomStatus\", \"StreetViewStatus\", \"TransitMode\", \"TransitRoutePreference\",\n // \"TravelMode\", \"UnitSystem\"\n const mapPlainObjects = pick(maps, isPlainObject);\n const options =\n typeof this.props.options === 'function'\n ? this.props.options(mapPlainObjects)\n : this.props.options;\n const defaultOptions = defaultOptions_(mapPlainObjects);\n\n const draggableOptions = !isEmpty(this.props.draggable) && {\n draggable: this.props.draggable,\n };\n\n const minZoom = this._computeMinZoom(options.minZoom);\n this.minZoom_ = minZoom;\n\n const preMapOptions = {\n ...defaultOptions,\n minZoom,\n ...options,\n ...propsOptions,\n };\n\n this.defaultDraggableOption_ = !isEmpty(preMapOptions.draggable)\n ? preMapOptions.draggable\n : this.defaultDraggableOption_;\n\n const mapOptions = {\n ...preMapOptions,\n ...draggableOptions,\n };\n\n mapOptions.minZoom = _checkMinZoom(mapOptions.minZoom, minZoom);\n\n const map = new maps.Map(\n ReactDOM.findDOMNode(this.googleMapDom_),\n mapOptions\n );\n\n this.map_ = map;\n this.maps_ = maps;\n\n this._setLayers(this.props.layerTypes);\n\n // Parse `google.maps.version` to capture the major version number.\n const versionMatch = maps.version.match(/^3\\.(\\d+)\\./);\n // The major version is the first (and only) captured group.\n const mapsVersion = versionMatch && Number(versionMatch[1]);\n\n // render in overlay\n const this_ = this;\n const overlay = Object.assign(new maps.OverlayView(), {\n onAdd() {\n const K_MAX_WIDTH =\n typeof screen !== 'undefined' ? `${screen.width}px` : '2000px';\n const K_MAX_HEIGHT =\n typeof screen !== 'undefined' ? `${screen.height}px` : '2000px';\n\n const div = document.createElement('div');\n div.style.backgroundColor = 'transparent';\n div.style.position = 'absolute';\n div.style.left = '0px';\n div.style.top = '0px';\n div.style.width = K_MAX_WIDTH; // prevents some chrome draw defects\n div.style.height = K_MAX_HEIGHT;\n\n if (this_.props.overlayViewDivStyle) {\n const { overlayViewDivStyle } = this_.props;\n if (typeof overlayViewDivStyle === 'object') {\n Object.keys(overlayViewDivStyle).forEach((property) => {\n div.style[property] = overlayViewDivStyle[property];\n });\n }\n }\n\n const panes = this.getPanes();\n panes.overlayMouseTarget.appendChild(div);\n this_.geoService_.setMapCanvasProjection(\n maps,\n overlay.getProjection()\n );\n\n if (!IS_REACT_16) {\n createPortal(\n this_,\n this_._renderPortal(),\n div,\n // remove prerendered markers\n () => this_.setState({ overlay: div })\n );\n } else {\n this_.setState({ overlay: div });\n }\n },\n\n onRemove() {\n const renderedOverlay = this_.state.overlay;\n if (renderedOverlay && !IS_REACT_16) {\n ReactDOM.unmountComponentAtNode(renderedOverlay);\n }\n this_.setState({ overlay: null });\n },\n\n draw() {\n this_.updateCounter_++;\n this_._onBoundsChanged(map, maps, !this_.props.debounced);\n\n if (!this_.googleApiLoadedCalled_) {\n this_._onGoogleApiLoaded({ map, maps, ref: this_.googleMapDom_ });\n this_.googleApiLoadedCalled_ = true;\n }\n\n if (this_.mouse_) {\n const latLng = this_.geoService_.fromContainerPixelToLatLng(\n this_.mouse_\n );\n this_.mouse_.lat = latLng.lat;\n this_.mouse_.lng = latLng.lng;\n }\n\n this_._onChildMouseMove();\n\n if (this_.markersDispatcher_) {\n this_.markersDispatcher_.emit('kON_CHANGE');\n if (this_.fireMouseEventOnIdle_) {\n this_.markersDispatcher_.emit('kON_MOUSE_POSITION_CHANGE');\n }\n }\n },\n });\n\n this.overlay_ = overlay;\n\n overlay.setMap(map);\n if (this.props.heatmap.positions) {\n this.heatmap.setMap(map);\n }\n\n if (this.props.onTilesLoaded) {\n maps.event.addListener(map, 'tilesloaded', () => {\n this_._onTilesLoaded();\n });\n }\n\n maps.event.addListener(map, 'zoom_changed', () => {\n // recalc position at zoom start\n if (this_.geoService_.getZoom() !== map.getZoom()) {\n if (!this_.zoomAnimationInProgress_) {\n this_.zoomAnimationInProgress_ = true;\n this_._onZoomAnimationStart(map.zoom);\n }\n\n // If draw() is not called each frame during a zoom animation,\n // simulate it.\n if (mapsVersion < DRAW_CALLED_DURING_ANIMATION_VERSION) {\n const TIMEOUT_ZOOM = 300;\n\n if (\n new Date().getTime() - this.zoomControlClickTime_ <\n TIMEOUT_ZOOM\n ) {\n // there is strange Google Map Api behavior in chrome when zoom animation of map\n // is started only on second raf call, if was click on zoom control\n // or +- keys pressed, so i wait for two rafs before change state\n\n // this does not fully prevent animation jump\n // but reduce it's occurence probability\n raf(() =>\n raf(() => {\n this_.updateCounter_++;\n this_._onBoundsChanged(map, maps);\n })\n );\n } else {\n this_.updateCounter_++;\n this_._onBoundsChanged(map, maps);\n }\n }\n }\n });\n\n maps.event.addListener(map, 'idle', () => {\n if (this.resetSizeOnIdle_) {\n this._setViewSize();\n const currMinZoom = this._computeMinZoom(options.minZoom);\n\n if (currMinZoom !== this.minZoom_) {\n this.minZoom_ = currMinZoom;\n map.setOptions({ minZoom: currMinZoom });\n }\n\n this.resetSizeOnIdle_ = false;\n }\n\n if (this_.zoomAnimationInProgress_) {\n this_.zoomAnimationInProgress_ = false;\n this_._onZoomAnimationEnd(map.zoom);\n }\n\n this_.updateCounter_++;\n this_._onBoundsChanged(map, maps);\n\n this_.dragTime_ = 0;\n\n if (this_.markersDispatcher_) {\n this_.markersDispatcher_.emit('kON_CHANGE');\n }\n });\n\n maps.event.addListener(map, 'mouseover', () => {\n // has advantage over div MouseLeave\n this_.mouseInMap_ = true;\n });\n\n // an alternative way to know the mouse is back within the map\n // This would not fire when clicking/interacting with google maps\n // own on-map countrols+markers. This handles an edge case for touch devices\n // + 'draggable:false' custom option. See #332 for more details.\n maps.event.addListener(map, 'click', () => {\n this_.mouseInMap_ = true;\n });\n\n maps.event.addListener(map, 'mouseout', () => {\n // has advantage over div MouseLeave\n this_.mouseInMap_ = false;\n this_.mouse_ = null;\n this_.markersDispatcher_.emit('kON_MOUSE_POSITION_CHANGE');\n });\n\n maps.event.addListener(map, 'drag', () => {\n this_.dragTime_ = new Date().getTime();\n this_._onDrag(map);\n });\n\n maps.event.addListener(map, 'dragend', () => {\n // 'dragend' fires on mouse release.\n // 'idle' listener waits until drag inertia ends before firing `onDragEnd`\n const idleListener = maps.event.addListener(map, 'idle', () => {\n maps.event.removeListener(idleListener);\n this_._onDragEnd(map);\n });\n });\n // user choosing satellite vs roads, etc\n maps.event.addListener(map, 'maptypeid_changed', () => {\n this_._onMapTypeIdChange(map.getMapTypeId());\n });\n })\n .catch((e) => {\n // notify callback of load failure\n this._onGoogleApiLoaded({\n map: null,\n maps: null,\n ref: this.googleMapDom_,\n });\n console.error(e); // eslint-disable-line no-console\n throw e;\n });\n };\n\n _onGoogleApiLoaded = (...args) => {\n if (this.props.onGoogleApiLoaded) {\n if (\n process.env.NODE_ENV !== 'production' &&\n this.props.yesIWantToUseGoogleMapApiInternals !== true\n ) {\n console.warn(\n 'GoogleMap: ' + // eslint-disable-line\n 'Usage of internal api objects is dangerous ' +\n 'and can cause a lot of issues.\\n' +\n 'To hide this warning add yesIWantToUseGoogleMapApiInternals={true} ' +\n 'to this.props.hoverDistance;\n\n _onDrag = (...args) => this.props.onDrag && this.props.onDrag(...args);\n\n _onDragEnd = (...args) =>\n this.props.onDragEnd && this.props.onDragEnd(...args);\n\n _onMapTypeIdChange = (...args) =>\n this.props.onMapTypeIdChange && this.props.onMapTypeIdChange(...args);\n\n _onZoomAnimationStart = (...args) =>\n this.props.onZoomAnimationStart && this.props.onZoomAnimationStart(...args);\n\n _onZoomAnimationEnd = (...args) =>\n this.props.onZoomAnimationEnd && this.props.onZoomAnimationEnd(...args);\n\n _onTilesLoaded = () => this.props.onTilesLoaded && this.props.onTilesLoaded();\n\n _onChildClick = (...args) => {\n if (this.props.onChildClick) {\n return this.props.onChildClick(...args);\n }\n return undefined;\n };\n\n _onChildMouseDown = (hoverKey, childProps) => {\n this.childMouseDownArgs_ = [hoverKey, childProps];\n if (this.props.onChildMouseDown) {\n this.props.onChildMouseDown(hoverKey, childProps, { ...this.mouse_ });\n }\n };\n\n // this method works only if this.props.onChildMouseDown was called\n _onChildMouseUp = () => {\n if (this.childMouseDownArgs_) {\n if (this.props.onChildMouseUp) {\n this.props.onChildMouseUp(...this.childMouseDownArgs_, {\n ...this.mouse_,\n });\n }\n this.childMouseDownArgs_ = null;\n this.childMouseUpTime_ = new Date().getTime();\n }\n };\n\n // this method works only if this.props.onChildMouseDown was called\n _onChildMouseMove = () => {\n if (this.childMouseDownArgs_) {\n if (this.props.onChildMouseMove) {\n this.props.onChildMouseMove(...this.childMouseDownArgs_, {\n ...this.mouse_,\n });\n }\n }\n };\n\n _onChildMouseEnter = (...args) => {\n if (this.props.onChildMouseEnter) {\n return this.props.onChildMouseEnter(...args);\n }\n return undefined;\n };\n\n _onChildMouseLeave = (...args) => {\n if (this.props.onChildMouseLeave) {\n return this.props.onChildMouseLeave(...args);\n }\n return undefined;\n };\n\n _setViewSize = () => {\n if (!this.mounted_) return;\n if (isFullScreen()) {\n this.geoService_.setViewSize(window.innerWidth, window.innerHeight);\n } else {\n const mapDom = ReactDOM.findDOMNode(this.googleMapDom_);\n this.geoService_.setViewSize(mapDom.clientWidth, mapDom.clientHeight);\n }\n this._onBoundsChanged();\n };\n\n _onWindowResize = () => {\n this.resetSizeOnIdle_ = true;\n };\n\n _onMapMouseMove = (e) => {\n if (!this.mouseInMap_) return;\n\n const currTime = new Date().getTime();\n const K_RECALC_CLIENT_RECT_MS = 50;\n\n if (currTime - this.mouseMoveTime_ > K_RECALC_CLIENT_RECT_MS) {\n this.boundingRect_ = e.currentTarget.getBoundingClientRect();\n }\n this.mouseMoveTime_ = currTime;\n\n const mousePosX = e.clientX - this.boundingRect_.left;\n const mousePosY = e.clientY - this.boundingRect_.top;\n\n if (!this.mouse_) {\n this.mouse_ = { x: 0, y: 0, lat: 0, lng: 0 };\n }\n\n this.mouse_.x = mousePosX;\n this.mouse_.y = mousePosY;\n\n const latLng = this.geoService_.fromContainerPixelToLatLng(this.mouse_);\n this.mouse_.lat = latLng.lat;\n this.mouse_.lng = latLng.lng;\n\n this._onChildMouseMove();\n\n if (currTime - this.dragTime_ < K_IDLE_TIMEOUT) {\n this.fireMouseEventOnIdle_ = true;\n } else {\n this.markersDispatcher_.emit('kON_MOUSE_POSITION_CHANGE');\n this.fireMouseEventOnIdle_ = false;\n }\n };\n\n // K_IDLE_CLICK_TIMEOUT - looks like 300 is enough\n _onClick = (...args) =>\n this.props.onClick &&\n !this.childMouseDownArgs_ &&\n new Date().getTime() - this.childMouseUpTime_ > K_IDLE_CLICK_TIMEOUT &&\n this.dragTime_ === 0 &&\n this.props.onClick(...args);\n\n _onMapClick = (event) => {\n if (this.markersDispatcher_) {\n // support touch events and recalculate mouse position on click\n this._onMapMouseMove(event);\n const currTime = new Date().getTime();\n if (currTime - this.dragTime_ > K_IDLE_TIMEOUT) {\n if (this.mouse_) {\n this._onClick({\n ...this.mouse_,\n event,\n });\n }\n\n this.markersDispatcher_.emit('kON_CLICK', event);\n }\n }\n };\n\n // gmap can't prevent map drag if mousedown event already occured\n // the only workaround I find is prevent mousedown native browser event\n _onMapMouseDownNative = (event) => {\n if (!this.mouseInMap_) return;\n\n this._onMapMouseDown(event);\n };\n\n _onMapMouseDown = (event) => {\n if (this.markersDispatcher_) {\n const currTime = new Date().getTime();\n if (currTime - this.dragTime_ > K_IDLE_TIMEOUT) {\n // Hovered marker detected at mouse move could be deleted at mouse down time\n // so it will be good to force hovered marker recalculation\n this._onMapMouseMove(event);\n this.markersDispatcher_.emit('kON_MDOWN', event);\n }\n }\n };\n\n _onMapMouseDownCapture = () => {\n if (detectBrowser().isChrome) {\n // to fix strange zoom in chrome\n this.zoomControlClickTime_ = new Date().getTime();\n }\n };\n\n _onKeyDownCapture = () => {\n if (detectBrowser().isChrome) {\n this.zoomControlClickTime_ = new Date().getTime();\n }\n };\n\n _isCenterDefined = (center) =>\n center &&\n ((isPlainObject(center) && isNumber(center.lat) && isNumber(center.lng)) ||\n (center.length === 2 && isNumber(center[0]) && isNumber(center[1])));\n\n _onBoundsChanged = (map, maps, callExtBoundsChange) => {\n if (map) {\n const gmC = map.getCenter();\n this.geoService_.setView([gmC.lat(), gmC.lng()], map.getZoom(), 0);\n }\n\n if (\n (this.props.onChange || this.props.onBoundsChange) &&\n this.geoService_.canProject()\n ) {\n const zoom = this.geoService_.getZoom();\n const bounds = this.geoService_.getBounds();\n const centerLatLng = this.geoService_.getCenter();\n\n if (!isArraysEqualEps(bounds, this.prevBounds_, kEPS)) {\n if (callExtBoundsChange !== false) {\n const marginBounds = this.geoService_.getBounds(this.props.margin);\n if (this.props.onBoundsChange) {\n this.props.onBoundsChange(\n this.centerIsObject_\n ? { ...centerLatLng }\n : [centerLatLng.lat, centerLatLng.lng],\n zoom,\n bounds,\n marginBounds\n );\n }\n\n if (this.props.onChange) {\n this.props.onChange({\n center: { ...centerLatLng },\n zoom,\n bounds: {\n nw: {\n lat: bounds[0],\n lng: bounds[1],\n },\n se: {\n lat: bounds[2],\n lng: bounds[3],\n },\n sw: {\n lat: bounds[4],\n lng: bounds[5],\n },\n ne: {\n lat: bounds[6],\n lng: bounds[7],\n },\n },\n marginBounds: {\n nw: {\n lat: marginBounds[0],\n lng: marginBounds[1],\n },\n se: {\n lat: marginBounds[2],\n lng: marginBounds[3],\n },\n sw: {\n lat: marginBounds[4],\n lng: marginBounds[5],\n },\n ne: {\n lat: marginBounds[6],\n lng: marginBounds[7],\n },\n },\n\n size: this.geoService_.hasSize()\n ? {\n width: this.geoService_.getWidth(),\n height: this.geoService_.getHeight(),\n }\n : {\n width: 0,\n height: 0,\n },\n });\n }\n\n this.prevBounds_ = bounds;\n }\n }\n }\n };\n\n _registerChild = (ref) => {\n this.googleMapDom_ = ref;\n };\n\n render() {\n const overlay = this.state.overlay;\n const mapMarkerPrerender = !overlay ? (\n \n ) : null;\n\n return (\n \n \n {IS_REACT_16 && overlay && createPortal(this._renderPortal(), overlay)}\n\n {/* render markers before map load done */}\n {mapMarkerPrerender}\n
    \n );\n }\n}\n\nexport default GoogleMap;\n","export const generateHeatmap = (instance, { positions }) =>\n new instance.visualization.HeatmapLayer({\n data: positions.reduce((acc, { lat, lng, weight = 1 }) => {\n acc.push({\n location: new instance.LatLng(lat, lng),\n weight,\n });\n return acc;\n }, []),\n });\n\nexport const optionsHeatmap = (instance, { options = {} }) =>\n Object.keys(options).map((option) => instance.set(option, options[option]));\n","export default function isArraysEqualEps(arrayA, arrayB, eps) {\n if (arrayA && arrayB) {\n for (let i = 0; i !== arrayA.length; ++i) {\n if (Math.abs(arrayA[i] - arrayB[i]) > eps) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n","import {\n styled\n} from '@volkswagen-onehub/components-core';\nimport { keyframes } from 'styled-components';\nimport { MarkerDimensions } from 'src/feature-app/NewMap/MapGeneralController';\n\n\nconst beatKeyframe = keyframes`\n from {\n opacity: 1;\n transform: translate3d(50%, 50%, 0) scale(0);\n }\n to {\n opacity: 0;\n transform: translate3d(50%, 50%, 0) scale(1);\n }\n`;\n\nexport const Wrapper = styled.div<{ onTop?: boolean }>`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate3d(-50%, -100%, 0);\n z-index: ${(props) => (props.onTop ? '3' : '2')};\n &.geoloc {\n transform: translate3d(-50%, -50%, 0);\n z-index: 1;\n }\n .circle-beat {\n animation: ${beatKeyframe} 2s ease 0s infinite normal none running;\n }\n`;\n\nexport const TextWrapper = styled(Wrapper as any)`\n /* https://github.com/microsoft/TypeScript/issues/37597#issuecomment-628089901 */\n top: 68%;\n color: #ffffff;\n & div {\n color: #ffffff;\n }\n`;\n\nexport const Img = styled.img<{ markerDimensions: MarkerDimensions }>`\n width: ${(props) => `${props.markerDimensions.width}px`};\n height: ${(props) => `${props.markerDimensions.height}px`};\n &.dealer-marker {\n margin-bottom: 4px;\n }\n`;\n","import React from 'react';\nimport { Wrapper } from 'src/feature-app/NewMap/components/CommonStyledComponents';\n\nexport const CenterMarker = React.memo((props: { lat: number; lng: number }) => {\n return (\n \n \n \n \n \n \n );\n});\n","import { Text } from '@volkswagen-onehub/components-core';\nimport React, { useState } from 'react';\nimport { Points } from 'src/types';\nimport { Img, TextWrapper, Wrapper } from 'src/feature-app/NewMap/components/CommonStyledComponents';\nimport { useMapGeneralController } from 'src/feature-app/NewMap/MapGeneralController';\n\ninterface ClusterMarkerProps {\n lat: number;\n lng: number;\n pointCount: number;\n onClick: any;\n isHover: boolean;\n}\n\nexport const sameClusterId = (selectedPoint: Points, point: Points) => {\n if (selectedPoint?.properties?.parent_cluster_id && point.id) {\n return selectedPoint.properties.parent_cluster_id === point.id;\n }\n return false;\n};\n\nexport const ClusterMarker = React.memo(({ onClick, pointCount, isHover }: ClusterMarkerProps) => {\n const { markerDimensions } = useMapGeneralController();\n const [mouseEntered, setMouseEntered] = useState(false);\n\n return (\n {\n e.preventDefault();\n onClick();\n }}\n onMouseEnter={(e) => {\n e.preventDefault();\n setMouseEntered(true);\n }}\n onMouseLeave={(e) => {\n e.preventDefault();\n setMouseEntered(false);\n }}\n >\n \n \n {pointCount}\n \n \n );\n});\n","import { styled } from '@volkswagen-onehub/components-core';\nimport React, { useState } from 'react';\nimport { Points } from 'src/types';\nimport { Img, Wrapper } from 'src/feature-app/NewMap/components/CommonStyledComponents';\nimport { useMapGeneralController } from 'src/feature-app/NewMap/MapGeneralController';\n\nconst Dot = styled.div<{ greyCard: boolean }>`\n height: 4px;\n width: 4px;\n background-color: ${(props) => (props.greyCard ? '#6A767D' : '#0040c5')};\n border-radius: 100%;\n display: inline;\n position: absolute;\n bottom: 0;\n left: 44%;\n`;\n\ninterface DealerMarkerProps {\n onClick: (event: React.MouseEvent) => void;\n lat: number;\n lng: number;\n isGrey: boolean;\n isActive: boolean;\n isHover: boolean;\n isFavouriteDealer: boolean;\n}\n\nexport const isDealerGrey = (carPickupSelected: boolean, replacementCarSelected: boolean, point: Points) =>\n pickupSelectedAndDealerHasIt(carPickupSelected, point) ||\n replacementCarSelectedAndDealerHasIt(replacementCarSelected, point);\n\nexport const isDealerActive = (selectedPoint: Points, point: Points) =>\n selectedPoint?.properties?.dealer?.kvps === point?.properties?.dealer?.kvps;\n\nexport const isDealerFavourite = (favouriteDealer: Points, point: Points) =>\nfavouriteDealer?.properties?.dealer?.kvps === point?.properties?.dealer?.kvps;\n\nexport const isDealerHovered = (hoverPoint: Points, point: Points) =>\nhoverPoint?.properties?.dealer?.kvps === point?.properties?.dealer?.kvps;\n\nconst pickupSelectedAndDealerHasIt = (carPickupSelected: boolean, point: Points) =>\n carPickupSelected && !point?.properties?.dealer?.dmsInfo?.pickupCarServiceAvailabe;\nconst replacementCarSelectedAndDealerHasIt = (replacementCarSelected: boolean, point: Points) =>\n replacementCarSelected && !point?.properties?.dealer?.dmsInfo?.replacementCarServiceAvailable;\n\nexport const DealerMarker = React.memo(\n ({\n onClick,\n isGrey,\n isActive,\n isHover,\n isFavouriteDealer\n }: DealerMarkerProps) => {\n const markerDimensions = useMapGeneralController().markerDimensions;\n const [mouseEntered, setMouseEntered] = useState(false);\n\n return (\n {\n e.preventDefault();\n setMouseEntered(true);\n }}\n onMouseLeave={(e) => {\n e.preventDefault();\n setMouseEntered(false);\n }}\n onTop={isActive || isHover ||mouseEntered ? true : false}\n >\n \n {isActive ? : null}\n \n );\n }\n);\n","import { Breakpoints, BreakpointWrapper, CTA, styled, ThemeProvider } from '@volkswagen-onehub/components-core';\nimport GoogleMapReact from 'google-map-react';\nimport React, { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { getGoogleApiKey } from 'src/bff';\nimport { useTrackingManager } from 'src/feature-app/hooks/use-tracking-manager';\nimport { Add, ContactDealer, Locate, Reload, Remove } from 'src/icons-core-imports';\nimport { OneFormState, Points, SelectedTab } from 'src/types';\nimport { mapStyles } from 'src/feature-app/NewMap';\nimport { CenterMarker } from 'src/feature-app/NewMap/components/CenterMarker';\nimport { ClusterMarker, sameClusterId } from 'src/feature-app/NewMap/components/ClusterMarker';\nimport { DealerMarker, isDealerGrey, isDealerActive, isDealerFavourite, isDealerHovered } from 'src/feature-app/NewMap/components/DealerMarker';\nimport { useMapGeneralController } from 'src/feature-app/NewMap/MapGeneralController';\n\nconst RecalcularWrapper = styled.div<{ isPosventa?: boolean }>`\n position: fixed;\n top: ${(props) => (props.isPosventa ? '96px' : '68px')};\n transform: translateX(-50%);\n left: 50%;\n background-color: #ffffff;\n border-radius: 500px;\n width: fit-content;\n @media all and (min-width: 960px) {\n top: 24px;\n transform: translateX(0);\n left: unset;\n right: 183px;\n }\n`;\n\nconst GoogleMaps = styled.div`\n & .gm-control-active[aria-label='Ampliar'] {\n display: none !important;\n }\n\n & .gm-control-active[aria-label='Reducir'] {\n display: none !important;\n }\n\n & .gmnoprint {\n display: none;\n }\n`;\n\ninterface MapHeightWrapperProps {\n isTrigger?: boolean;\n isWidget?: boolean;\n}\n\nconst MapHeigthWrapper = styled.div`\n width: 100%;\n height: ${(props) => (props.isWidget ? '85vh' : props.isTrigger ? 'var(--size-grid020)' : '100vh')};\n\n @media all and (min-width: 560px) {\n height: ${(props) => (props.isWidget ? '82vh' : props.isTrigger ? 'var(--size-grid010)' : '100vh')};\n }\n\n @media all and (min-width: 768px) {\n height: ${(props) => (props.isWidget ? '85vh' : props.isTrigger ? 'var(--size-grid010)' : '100vh')};\n }\n @media all and (min-width: 960px) {\n height: ${(props) => (props.isWidget ? '60vh' : props.isTrigger ? '636px' : '100vh')};\n }\n @media all and (min-width: 1600px) {\n height: ${(props) => (props.isWidget ? '70vh' : props.isTrigger ? '684px' : '100vh')};\n }\n`;\n\ninterface newMapProps {\n searchIsDealer?: boolean;\n setTranslateCarousel?: any;\n translateCarousel?: boolean;\n preSelectedOrderValue?: SelectedTab;\n isTrigger?: boolean;\n preselectedDealerForm?: boolean;\n replacementCarSelected?: boolean;\n carPickupSelected?: boolean;\n isPosventa?: boolean;\n isWidget?: boolean;\n}\n\nexport const NewMap = React.memo((props: newMapProps) => {\n const {\n centerRef,\n clusters,\n handleApiLoaded,\n geoLocatedCenterRef,\n getNewClusters,\n handlePointClickAndCarouselMove,\n selectedPoint,\n handleClusterClick,\n mapMaxZoom,\n searchMoreDealers,\n handleMapMovement,\n setSearchIsDealer,\n hoverPoint,\n handleHoverPoint,\n userIsGeoLocated,\n mapHasMoved,\n } = useMapGeneralController();\n const { dealersInfo, formInfo } = useSelector((state: OneFormState) => state);\n const { dealersOrInstallationsMode, favouriteDealer } = dealersInfo;\n const { suggestionIsAddress } = formInfo;\n const {\n searchIsDealer,\n setTranslateCarousel,\n preSelectedOrderValue,\n isTrigger,\n carPickupSelected,\n replacementCarSelected,\n isPosventa,\n isWidget,\n } = props;\n const trackingManager = useTrackingManager();\n\n const [gelocalizationActive, setGelocalizationActive] = useState(false);\n\n useEffect(() => {\n if (userIsGeoLocated) {\n setGelocalizationActive(true);\n } else {\n setGelocalizationActive(false);\n }\n }, [userIsGeoLocated]);\n\n return (\n // Important! Always set the container height explicitly\n \n \n {\n handleApiLoaded(map, maps);\n }}\n defaultCenter={{\n lat: 40.58869349456487,\n lng: -3.0047240000000075,\n }}\n yesIWantToUseGoogleMapApiInternals\n onDrag={() => {\n handleMapMovement();\n }}\n defaultZoom={5}\n options={{\n styles: mapStyles,\n clickableIcons: false,\n streetViewControl: false,\n fullscreenControl: false,\n mapTypeControl: false,\n maxZoom: mapMaxZoom,\n }}\n >\n {clusters\n ? clusters.map((point: Points) => {\n if (point.geometry) {\n const [longitude, latitude] = point.geometry.coordinates;\n return point.properties.cluster ? (\n {\n handleClusterClick(point);\n }}\n pointCount={point.properties.point_count}\n />\n ) : (\n {\n e.preventDefault();\n if (!searchIsDealer) {\n handlePointClickAndCarouselMove(point, true, preSelectedOrderValue);\n }\n }}\n />\n );\n }\n return null;\n })\n : null}\n {(geoLocatedCenterRef.current && gelocalizationActive) || (suggestionIsAddress && centerRef.current) ? (\n \n ) : null}\n \n {isTrigger ? (\n \n \n \n ) : (\n <>\n \n \n \n {clusters && mapHasMoved && !isWidget ? (\n searchIsDealer ? (\n \n \n {\n e.preventDefault();\n setSearchIsDealer(false);\n\n trackingManager.trackFormButtonClick({\n contentId:\n dealersOrInstallationsMode === 'dealers'\n ? 'Ver más talleres cerca'\n : 'Ver más concesionarios cerca',\n });\n searchMoreDealers();\n if (setTranslateCarousel) {\n setTranslateCarousel(false);\n }\n e.stopPropagation();\n }}\n ariaLabel=\"aria label\"\n icon={}\n >\n {dealersOrInstallationsMode === 'dealers'\n ? 'Ver más talleres cerca'\n : 'Ver más concesionarios cerca'}\n \n \n \n ) : (\n \n \n {\n e.preventDefault();\n trackingManager.trackFormButtonClick({\n contentId: 'Buscar en esta zona',\n });\n getNewClusters();\n {\n /*if (setTranslateCarousel) {\n setTranslateCarousel(false);\n }*/\n }\n e.stopPropagation();\n }}\n ariaLabel=\"aria label\"\n icon={}\n >\n Buscar en esta zona\n \n \n \n )\n ) : null}\n \n )}\n \n \n );\n});\n\n/* MAP CONTROLLLERS (!el botón de geolocaclización en versión mobile está en la propia vista. \n Estos controladores actualmente solo están visibles a partir de 960px)\n*/\nconst ControllerBackground = styled.div`\n border-radius: 100%;\n background-color: #ffffff;\n height: 44px;\n width: 44px;\n`;\n\ninterface ControllersWrapperProps {\n isTrigger?: boolean;\n}\n\nconst ControllersWrapper = styled.div`\n position: ${(props) => (props.isTrigger ? 'absolute' : 'absolute')};\n bottom: ${(props) => (props.isTrigger ? '24px' : '240px')};\n right: ${(props) => (props.isTrigger ? 'calc(var(--size-grid002) + 24px)' : '20px')};\n\n @media all and (min-width: 960px) {\n bottom: 24px;\n right: ${(props) => (props.isTrigger ? 'calc(var(--size-grid002) + 24px)' : '24px')};\n }\n @media all and (min-width: 1920px) {\n right: ${(props) => (props.isTrigger ? 'calc(var(--size-grid003) + 24px)' : '24px')};\n }\n @media all and (min-width: 2560px) {\n right: ${(props) => (props.isTrigger ? 'calc(var(--size-grid004) + 24px)' : '24px')};\n }\n`;\n\nconst ZoomWrapper = styled.div`\n display: flex;\n flex-direction: column;\n margin-top: 14px;\n\n & div {\n margin: 6px 0px;\n }\n`;\n\nconst IconLess = 'https://cdn.volkswagen.es/repository/app/vw-oneform/assets/icons/ic_less.svg';\nconst IconMore = 'https://cdn.volkswagen.es/repository/app/vw-oneform/assets/icons/ic_more.svg';\n\nconst Controllers = (props: { gelocalizationActive: boolean; suggestionIsAddress: boolean; isTrigger?: boolean }) => {\n const { handleChangeInMapZoom, centerInGeoLocatedCenter, centerRef, centerMap } = useMapGeneralController();\n\n const { gelocalizationActive, isTrigger, suggestionIsAddress } = props;\n\n return (\n \n \n {gelocalizationActive || (suggestionIsAddress && centerRef.current) ? (\n \n {\n e.preventDefault();\n if (suggestionIsAddress && centerRef.current) {\n centerMap(centerRef.current);\n } else {\n centerInGeoLocatedCenter();\n }\n }}\n ariaLabel=\"aria label\"\n icon={}\n />\n \n ) : null}\n \n \n {\n e.preventDefault();\n handleChangeInMapZoom(true);\n }}\n ariaLabel=\"aria label\"\n icon={}\n />\n \n \n {\n e.preventDefault();\n handleChangeInMapZoom(false);\n }}\n ariaLabel=\"aria label\"\n icon={}\n />\n \n \n \n \n );\n};\n","import { styled } from '@volkswagen-onehub/components-core';\nimport React, { ReactElement, useEffect, useRef } from 'react';\nimport Slider from 'react-slick';\nimport { NewDealerCard } from 'src/feature-app';\nimport { Points } from 'src/types';\nimport { useMapGeneralController } from 'src/feature-app/NewMap/MapGeneralController';\nimport { getDistanceFromLatLngCenter } from 'src/feature-app/NewMap/utils';\n\nconst CSSDiv = styled.div`\n /* Slider */\n .slick-slider {\n position: relative;\n\n display: block;\n box-sizing: border-box;\n\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n -webkit-touch-callout: none;\n -khtml-user-select: none;\n -ms-touch-action: pan-y;\n touch-action: pan-y;\n -webkit-tap-highlight-color: transparent;\n }\n\n .slick-list {\n position: relative;\n\n display: block;\n overflow: hidden;\n\n margin: 0;\n padding: 0;\n }\n .slick-list:focus {\n outline: none;\n }\n .slick-list.dragging {\n cursor: pointer;\n cursor: hand;\n }\n\n .slick-slider .slick-track,\n .slick-slider .slick-list {\n -webkit-transform: translate3d(0, 0, 0);\n -moz-transform: translate3d(0, 0, 0);\n -ms-transform: translate3d(0, 0, 0);\n -o-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n .slick-track {\n position: relative;\n top: 0;\n left: 0;\n\n display: block;\n }\n .slick-track:before,\n .slick-track:after {\n display: table;\n\n content: '';\n }\n .slick-track:after {\n clear: both;\n }\n .slick-loading .slick-track {\n visibility: hidden;\n }\n\n .slick-slide {\n display: none;\n float: left;\n\n height: 100%;\n min-height: 1px;\n }\n [dir='rtl'] .slick-slide {\n float: right;\n }\n .slick-slide img {\n display: block;\n }\n .slick-slide.slick-loading img {\n display: none;\n }\n .slick-slide.dragging img {\n pointer-events: none;\n }\n .slick-initialized .slick-slide {\n display: block;\n }\n .slick-loading .slick-slide {\n visibility: hidden;\n }\n .slick-vertical .slick-slide {\n display: block;\n\n height: auto;\n\n border: 1px solid transparent;\n }\n .slick-arrow.slick-hidden {\n display: none;\n }\n\n /* Slider */\n .slick-slider {\n position: relative;\n\n display: block;\n box-sizing: border-box;\n\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n -webkit-touch-callout: none;\n -khtml-user-select: none;\n -ms-touch-action: pan-y;\n touch-action: pan-y;\n -webkit-tap-highlight-color: transparent;\n }\n\n .slick-list {\n position: relative;\n\n display: block;\n overflow: hidden;\n\n margin: 0;\n padding: 0;\n }\n .slick-list:focus {\n outline: none;\n }\n .slick-list.dragging {\n cursor: pointer;\n cursor: hand;\n }\n\n .slick-slider .slick-track,\n .slick-slider .slick-list {\n -webkit-transform: translate3d(0, 0, 0);\n -moz-transform: translate3d(0, 0, 0);\n -ms-transform: translate3d(0, 0, 0);\n -o-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n .slick-track {\n position: relative;\n top: 0;\n left: 0;\n\n display: block;\n }\n .slick-track:before,\n .slick-track:after {\n display: table;\n\n content: '';\n }\n .slick-track:after {\n clear: both;\n }\n .slick-loading .slick-track {\n visibility: hidden;\n }\n\n .slick-slide {\n display: none;\n float: left;\n\n height: 100%;\n min-height: 1px;\n }\n [dir='rtl'] .slick-slide {\n float: right;\n }\n .slick-slide img {\n display: block;\n }\n .slick-slide.slick-loading img {\n display: none;\n }\n .slick-slide.dragging img {\n pointer-events: none;\n }\n .slick-initialized .slick-slide {\n display: block;\n }\n .slick-loading .slick-slide {\n visibility: hidden;\n }\n .slick-vertical .slick-slide {\n display: block;\n\n height: auto;\n\n border: 1px solid transparent;\n }\n .slick-arrow.slick-hidden {\n display: none;\n }\n`;\n\nconst BackgroundCard = styled.div`\n background-color: #001e50;\n margin: 0 4px;\n`;\n\ninterface CarouselCardsProps {\n handleShowCalendarOnClick?: any;\n handleSeleccionarOnClick: any;\n handleShowSlots?: (point: Points) => string | null;\n pointsToList: Points[];\n isCitaPosventa?: boolean;\n replacementCarSelected?: boolean;\n carPickupSelected?: boolean;\n}\n\nexport const Carousel = (props: CarouselCardsProps) => {\n const {\n clusters,\n handlePointClickAndCarouselMove,\n centerToCalculateDistance,\n handleSelectedPoint,\n handleClusterClick,\n selectedPoint,\n } = useMapGeneralController();\n const { \n handleSeleccionarOnClick, \n handleShowCalendarOnClick, \n handleShowSlots, \n pointsToList, \n isCitaPosventa,\n carPickupSelected,\n replacementCarSelected \n } = props;\n const sliderRef = useRef(null);\n const childrenRef = useRef(null);\n\n useEffect(() => {\n if (pointsToList.length) {\n const firstPoint = selectedPoint ? selectedPoint : pointsToList[0];\n // handleCarouselMovement(firstPoint);\n handleSelectedPoint(firstPoint);\n // handleSelectedCard(firstPoint);\n }\n }, [pointsToList]);\n\n useEffect(() => {\n // Movimiento del carousel en caso de que se haga click en un Dealer Marker.\n if (selectedPoint) {\n // handleSelectedCard(selectedPoint);\n handleCarouselMovement(selectedPoint);\n }\n }, [selectedPoint, pointsToList]);\n\n const handleSelectedCard = (point: Points) => {\n if (!point.properties.cluster) {\n const { kvps } = point.properties.dealer;\n\n const index = pointsToList.findIndex((dealer) => {\n if (dealer.properties.dealer.kvps === kvps) {\n return true;\n }\n });\n sliderRef.current.slickGoTo(index);\n }\n };\n\n const handleCarouselMovement = (point: Points) => {\n if (point.properties.parent_cluster_id) {\n const parentCluster = clusters.find(\n (cluster) => cluster.properties.cluster && cluster.id === point.properties.parent_cluster_id\n );\n if (parentCluster) {\n // En caso de que el dealer esté dentro de un cluster dentro de otro fijamos el valor de isCluster como true para que llegue hasta el final\n // y no rompa únicamente el primer cluster.\n // handleClusterClick(point, true);\n handleSelectedPoint(point);\n } else {\n handlePointClickAndCarouselMove(point, false);\n handleSelectedCard(point);\n }\n } else {\n handlePointClickAndCarouselMove(point, false);\n handleSelectedCard(point);\n }\n };\n\n const settings = {\n className: 'center',\n infinite: false,\n centerMode: true,\n centerPadding: '60px',\n slidesToShow: 1,\n swipe: true,\n speed: 500,\n arrows: false,\n beforeChange: (current: number, next: number) => {\n const point: Points = pointsToList.find((point) => {\n if (!point.properties.cluster) {\n if (point.properties.dealer.kvps === childrenRef.current[next].key) {\n return point;\n }\n }\n });\n\n handleCarouselMovement(point);\n },\n };\n return (\n \n {\n sliderRef.current = el;\n if (el && el.props && el.props.children) {\n childrenRef.current = el.props.children.filter((c:any) => c !== null);\n }\n }}\n >\n {pointsToList\n ? pointsToList.map((point: Points, i) => {\n const distanceFromCenter = getDistanceFromLatLngCenter(centerToCalculateDistance.current, point);\n\n return !point.properties.cluster ? (\n
    \n {/* este div es necesario para el funcionamiento de la libreria */}\n \n \n \n
    \n ) : null;\n })\n : null}\n
    \n \n );\n};\n","import {\n Breakpoints,\n Container,\n ContainerHorizontalAlignment,\n ContainerPadding,\n ContainerWrap,\n CTA,\n Layout,\n styled,\n Text,\n TextAlignment,\n TextAppearance,\n ThemeProvider,\n} from '@volkswagen-onehub/components-core';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useDispatch, useSelector, useStore } from 'react-redux';\nimport { Suggest, useFeatureAppConfig, useMapGeneralController } from 'src/feature-app';\nimport { Horario, Installation, isDealerData, OneFormState, SelectedTab } from 'src/types';\nimport { isGooglePlace, updateMapVariables, Suggestion } from 'src/feature-app/NewMap';\nimport {\n useTrackingManager,\n useLocateUser,\n useShowOverflow,\n useFeatureAppEnvironment,\n useFeatureServices,\n} from 'src/feature-app/hooks';\nimport LoadScriptInstance from 'src/feature-app/NewMap/Loadscript';\nimport { renderAvisoIslasCanariasLayer } from 'src/components';\nimport { getGeocode } from 'src/feature-app/NewMap/utils';\nimport { GooglePlace } from 'src/feature-app/NewMap/components/suggest';\n\nconst FiltrosWrapper = styled.div<{ onlySuggest?: boolean; showOverflow?: boolean }>`\n min-height: 100vh;\n position: relative;\n padding-bottom: 117px;\n padding-top: 56px;\n overflow: ${(props) => (props.showOverflow ? 'visible' : 'auto')};\n .filtros {\n &__header {\n text-align: center;\n }\n &__body {\n flex-grow: 1;\n padding-bottom: ${(props) => (props.onlySuggest ? '4px' : null)};\n }\n &__controls {\n position: fixed;\n bottom: 0;\n width: 100%;\n padding: 14px 0;\n background: #ffffff;\n border-top: 1px solid #dfe4e8;\n }\n }\n`;\n\nconst MultipleCTAWrapper = styled.div`\n text-align: left;\n & > button {\n margin: 24px 24px 0 0;\n }\n`;\n\nconst Divider = styled.div`\n background-color: #dfe4e8;\n width: 100vw;\n height: 1px;\n margin-bottom: 14px;\n\n @media all and (min-width: 960px) {\n display: none;\n margin-bottom: 0;\n }\n`;\n\n//revisar width aButtonsWrapper a partir de 960 en navegadores/dispositivos con barra de scroll.\n//Está puesto con valor fijo porqué por algun motivo no pilla bien el 100%\n\nconst ActionButtonsWrapper = styled.div`\n display: flex;\n justify-content: flex-end;\n @media all and (min-width: 960px) {\n width: 400px;\n }\n button {\n div {\n font-size: 14px;\n }\n &:first-of-type {\n margin-right: 32px;\n }\n }\n`;\n\ninterface FiltrosProps {\n closeFiltros: any;\n showFiltros: boolean;\n setShowFiltros: React.Dispatch>;\n setPreSelectedOrderValue?: React.Dispatch>;\n preSelectedOrderValue?: SelectedTab;\n onlySuggest?: boolean;\n concesionario?: boolean;\n citaPosventa?: boolean;\n}\n\nexport const Filtros = (props: FiltrosProps) => {\n return (\n {}}>\n \n \n );\n};\n\nexport interface SelectedSuggestion {\n name: string;\n suggestion: Suggestion;\n}\n\nconst getSelectedSuggestion = (suggestion: Suggestion) => {\n if (isGooglePlace(suggestion)) {\n return { name: suggestion.name, suggestion };\n } else {\n if (!isDealerData(suggestion)) {\n return {\n name: `${(suggestion as Installation).TXT_V_Installation_Data_Name__c}, ${\n (suggestion as Installation).TXT_V_Address__c\n }`,\n suggestion,\n };\n } else {\n return {\n name: `${suggestion.name}, ${suggestion.markerInfo.dealerInfo.address}`,\n suggestion,\n };\n }\n }\n};\n\nexport const FiltrosComponent = (props: FiltrosProps) => {\n const {\n closeFiltros,\n showFiltros,\n setShowFiltros,\n setPreSelectedOrderValue,\n preSelectedOrderValue,\n onlySuggest,\n concesionario,\n citaPosventa,\n } = props;\n const { formData, formInfo } = useSelector((state: OneFormState) => state);\n\n //Si se necesita que el overflow sea visible. Selectsno nativos, suggests, etc. Añadir en la definicion del step showOverflow.\n\n const { showOverflow } = useShowOverflow(false);\n\n const [aplicarDisabled, setAplicarDisabled] = useState(true);\n const [tabsOrder, setTabsOrder] = useState('horario');\n const [currentHorario, setCurrentHorario] = useState<{ label: string; value: string }>({\n label: 'Lo antes posible',\n value: 'before',\n });\n // guardar suggestion seleccionada previo a hacer submit\n // sirve para activar o desactivar el setAplicarDisabled\n const [selectedSuggestion, setSelectedSuggestion] = useState(null);\n const { register } = useFormContext();\n const trackingManager = useTrackingManager();\n const filtrosRef = useRef(null);\n\n const { userSuggestion: userSuggest, suggestionIsInCanaryIslands } = formInfo;\n\n const CTAsHorario = [\n { label: 'Lo antes posible', value: 'before' },\n { label: 'Por la mañana', value: 'morning' },\n { label: 'Al mediodía', value: 'afternon' },\n { label: 'Por la tarde', value: 'evening' },\n ];\n\n const CTAsOrden: { value: SelectedTab; label: string }[] = [\n { value: 'ubicacion', label: 'Ubicación' },\n { value: 'horario', label: 'Horario' },\n ];\n\n const {\n value,\n setValue,\n icon,\n locationSuccess,\n setLocationSuccess,\n loading,\n locationDisabled,\n isLocating,\n handleLocateFilters,\n } = useLocateUser();\n const dispatch = useDispatch();\n\n const { moreDealersSearched, setMoreDealersSearched } = useMapGeneralController();\n const { trigger } = useFeatureAppConfig();\n const store = useStore();\n const env = useFeatureAppEnvironment();\n const layerManager = useFeatureServices()['layer-manager'];\n\n const validateSubmission = () => {\n const { suggestionIsInCanaryIslands } = store.getState().formInfo;\n\n if (suggestionIsInCanaryIslands) {\n renderAvisoIslasCanariasLayer(store, env, layerManager);\n return;\n }\n\n if (preSelectedOrderValue && setPreSelectedOrderValue && tabsOrder !== preSelectedOrderValue) {\n setPreSelectedOrderValue(tabsOrder);\n }\n setShowFiltros(false);\n };\n\n const handleFiltrosSubmit = (selectedSuggestionFromClick?: SelectedSuggestion) => {\n if (selectedSuggestion && !selectedSuggestionFromClick) {\n // if (isGooglePlace(selectedSuggestion.suggestion) && selectedSuggestion.suggestion.isGeoLocated) {\n // // Parche para que se actualize la ubicación a la geolocalización. El bug viene de que en use-locate-user.tsx\n // // se detecta el cambio de suggestion en un useeffect y eso dispara la función updateMapVariables, pero en el caso de\n // // la geolocalización, ésta función se dispara automáticamente al clickar sobre el cta. Si queremos esperar a que los cambios\n // // se hagan efectivos al clickar \"Aplicar filtros\" hay que llamarla desde aquí.\n\n updateMapVariables(dispatch, selectedSuggestion.suggestion).then(() => {\n validateSubmission();\n });\n }\n // Pasamos este valor al seleccionar en la lista desplegable un valor.\n if (selectedSuggestionFromClick) {\n updateMapVariables(dispatch, selectedSuggestionFromClick.suggestion).then(() => {\n validateSubmission();\n });\n }\n };\n\n useEffect(() => {\n if (!moreDealersSearched) {\n if (userSuggest && showFiltros) {\n if (!isGooglePlace(userSuggest) && isDealerData(userSuggest)) {\n setValue(`${userSuggest?.name}, ${userSuggest?.markerInfo?.dealerInfo?.address}`);\n } else if (!isGooglePlace(userSuggest) && !isDealerData(userSuggest)) {\n setValue(\n `${(userSuggest as Installation)?.TXT_V_Installation_Data_Name__c}, ${\n (userSuggest as Installation)?.TXT_V_Address__c\n }`\n );\n } else {\n setValue(userSuggest?.name);\n }\n }\n } else {\n setValue('');\n }\n if (showFiltros) setAplicarDisabled(true);\n }, [showFiltros]);\n\n useEffect(() => {\n if (value && !aplicarDisabled) {\n if (value !== selectedSuggestion.name) {\n setAplicarDisabled(true);\n }\n }\n }, [value]);\n\n useEffect(() => {\n const val = CTAsHorario.find((el: any) => formData.fields.horario === el.value);\n setCurrentHorario(val);\n }, [formData]);\n\n useEffect(() => {\n if (preSelectedOrderValue) {\n setTabsOrder(preSelectedOrderValue);\n }\n }, [preSelectedOrderValue]);\n\n useEffect(() => {\n if (moreDealersSearched && locationSuccess) setLocationSuccess(false);\n }, [moreDealersSearched]);\n\n useEffect(() => {\n // Necesario para que cada vez que se selecciona un resultado de google en filtros se compruebe si\n // pertenece a las islas canarias y dispare el popup antes de que se apliquen los filtros.\n const checkGeocode = async () => {\n const geometry = await getGeocode(selectedSuggestion);\n };\n if (selectedSuggestion?.suggestion?.isGooglePlace) {\n checkGeocode();\n }\n }, [selectedSuggestion]);\n\n useEffect(() => {\n if (!moreDealersSearched) {\n // cuando se monta la componente, si está geolocalizado forzar el locationSuccess a\n // true porque el boton el hook se resetea al montar de nuevo la componente\n // también porque en mobile la componente Filtros se renderiza cada vez que se abre\n if (!userSuggest) {\n return;\n }\n if ((userSuggest as GooglePlace)?.isGeoLocated) {\n setLocationSuccess(true);\n }\n if (!isGooglePlace(userSuggest) && isDealerData(userSuggest)) {\n setValue(`${userSuggest.name}, ${userSuggest.markerInfo.dealerInfo.address}`);\n } else if (!isGooglePlace(userSuggest) && !isDealerData(userSuggest)) {\n setValue(\n `${(userSuggest as Installation).TXT_V_Installation_Data_Name__c}, ${\n (userSuggest as Installation).TXT_V_Address__c\n }`\n );\n } else {\n setValue(userSuggest.name);\n }\n }\n }, []);\n\n const onSuggestionSelectedFn = (suggestion: Suggestion) => {\n const selectedSuggestion = getSelectedSuggestion(suggestion);\n setSelectedSuggestion(selectedSuggestion);\n setLocationSuccess(false);\n setAplicarDisabled(false);\n if (moreDealersSearched) setMoreDealersSearched(false);\n // Cierra la parte de filtros\n handleFiltrosSubmit(selectedSuggestion);\n };\n\n return (\n \n \n \n {citaPosventa ? null : (\n
    \n \n Filtros\n \n
    \n )}\n\n {!onlySuggest ? (\n
    \n \n \n {citaPosventa ? (\n <>Buscar de nuevo\n ) : (\n <>Busca tu {!concesionario ? taller : concesionario}\n )}\n \n
    \n \n
    \n \n {\n e.preventDefault();\n if (!locationSuccess) {\n const { suggestion } = await handleLocateFilters();\n setSelectedSuggestion({ name: suggestion.name, suggestion });\n setAplicarDisabled(false);\n setMoreDealersSearched(false);\n }\n }}\n disabled={loading ? true : false}\n size=\"small\"\n >\n Localiza mi posición actual\n \n {locationDisabled ? (\n
    \n \n Tu localización está deshabilitada\n \n
    \n ) : null}\n \n {/* */}\n \n {/* */}\n
    \n ) : (\n
    \n \n \n {citaPosventa ? (\n <>Buscar de nuevo\n ) : (\n <>Busca tu {!concesionario ? taller : concesionario}\n )}\n \n
    \n \n
    \n \n {\n e.preventDefault();\n if (!locationSuccess) {\n const { suggestion } = await handleLocateFilters();\n setSelectedSuggestion({ name: suggestion.name, suggestion });\n setAplicarDisabled(false);\n setMoreDealersSearched(false);\n }\n }}\n disabled={loading ? true : false}\n size=\"small\"\n >\n Localiza mi posición actual\n \n {locationDisabled ? (\n
    \n \n Tu localización está deshabilitada\n \n
    \n ) : null}\n \n \n
    \n )}\n \n
    \n \n \n {\n closeFiltros();\n trackingManager.trackFormButtonClick({\n contentId: 'Cancelar',\n });\n }}\n ariaLabel=\"aria label\"\n >\n Cancelar\n \n {\n e.preventDefault();\n trackingManager.trackFormButtonClick({\n contentId: 'Aplicar filtros',\n });\n setTimeout(() => {\n handleFiltrosSubmit();\n }, 1000);\n }}\n ariaLabel=\"aria label\"\n disabled={aplicarDisabled}\n >\n {citaPosventa ? <>Buscar : <>Aplicar filtros}\n \n \n \n
    \n \n
    \n );\n};\n\ninterface SortByProps {\n setTabsOrder: React.Dispatch>;\n setAplicarDisabled: React.Dispatch>;\n preSelectedOrderValue: SelectedTab;\n CTAsOrden: {\n value: SelectedTab;\n label: string;\n }[];\n tabsOrder: SelectedTab;\n}\n\nconst SortBy = (props: SortByProps) => {\n const { setTabsOrder, setAplicarDisabled, preSelectedOrderValue, tabsOrder, CTAsOrden } = props;\n const trackingManager = useTrackingManager();\n\n return (\n <>\n \n Ordenar por\n \n \n {CTAsOrden.map((el) => {\n return (\n {\n e.preventDefault();\n trackingManager.trackFormButtonClick({\n contentId: el.label,\n });\n setTabsOrder(el.value);\n if (preSelectedOrderValue !== el.value) {\n setAplicarDisabled(false);\n }\n }}\n size=\"small\"\n key={el.value}\n >\n {el.label}\n \n );\n })}\n \n \n );\n};\n\ninterface ChangeHorarioProps {\n setCurrentHorario: React.Dispatch>;\n setAplicarDisabled: React.Dispatch>;\n CTAsHorario: {\n label: string;\n value: string;\n }[];\n currentHorario: { label: string; value: string };\n horario: Horario;\n}\n\nconst ChangeHorario = (props: ChangeHorarioProps) => {\n const { setCurrentHorario, setAplicarDisabled, CTAsHorario, currentHorario, horario } = props;\n const trackingManager = useTrackingManager();\n\n return (\n \n \n Selecciona una franja horaria\n \n \n {CTAsHorario.map((cta: { label: string; value: string }) => {\n return (\n {\n e.preventDefault();\n trackingManager.trackFormButtonClick({\n contentId: cta.label,\n });\n if (cta.label !== currentHorario.label) {\n setCurrentHorario(cta);\n }\n if (cta.value !== horario) {\n setAplicarDisabled(false);\n }\n }}\n size=\"small\"\n key={cta.value}\n >\n {cta.label}\n \n );\n })}\n \n \n );\n};\n","import { Text, TextAppearance, TextColor, ThemeProvider } from '@volkswagen-onehub/components-core';\nimport { Close, ContactDealer, Magnifier, Route } from 'src/icons-core-imports';\nimport { MagnifierLabel, CloseButton, SuggestionWrapper, StyledWrapper } from '.';\nimport React, { useEffect, useRef, useState } from 'react';\nimport Autosuggest from 'react-autosuggest';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { DealersData } from 'src/types';\nimport { useAddressPredictions } from 'src/feature-app';\nimport { DealersOrInstallationsMode, Geometry, Installation, isDealerData, OneFormState } from 'src/types';\nimport { useOneFormContext } from 'src/feature-app/OneForm';\nimport { isGooglePlace } from 'src/feature-app/NewMap/utils';\nimport { useDropdowPosition, useTrackingManager } from 'src/feature-app/hooks';\nexport interface GooglePlace {\n isGooglePlace: boolean;\n name: string;\n isGeoLocated: boolean;\n skipSearch?: boolean;\n moreDealersSearched?: boolean;\n geometry?: Geometry;\n}\n\nexport type Suggestion = DealersData | GooglePlace;\n\n// https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions#Using_Special_Characters\nconst escapeRegexCharacters = (str: string) => {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n};\n\nconst getSuggestions = (\n list: DealersData[] | Installation[],\n value: string,\n dealersOrInstallationsMode: DealersOrInstallationsMode\n) => {\n if (value.length < 2) return [];\n const escapedValue = escapeRegexCharacters(value.trim());\n\n if (escapedValue === '') {\n return [];\n }\n const regex = new RegExp(escapedValue, 'i');\n\n if (dealersOrInstallationsMode === 'dealers') {\n return list.filter((dealer: DealersData) => regex.test(dealer.markerInfo.dealerInfo.name));\n } else {\n return list.filter((installation: Installation) => regex.test(installation.TXT_V_Installation_Data_Name__c));\n }\n};\n\nconst getSuggestionValue = (suggestion: Suggestion) => {\n if (isGooglePlace(suggestion)) {\n return suggestion.name;\n } else {\n if (isDealerData(suggestion)) {\n return suggestion.markerInfo.dealerInfo.name;\n } else {\n return (suggestion as Installation).TXT_V_Installation_Data_Name__c;\n }\n }\n};\n\nconst renderSuggestion = (suggestion: Suggestion) => {\n if (isGooglePlace(suggestion)) {\n return (\n \n \n \n {suggestion.name}\n \n \n );\n } else {\n let name;\n let address;\n let zipCode;\n let city;\n let province;\n if (isDealerData(suggestion)) {\n name = suggestion.markerInfo.dealerInfo.name;\n address = suggestion.markerInfo.dealerInfo.address;\n zipCode = suggestion.markerInfo.dealerInfo.zipCode;\n city = suggestion.markerInfo.dealerInfo.city;\n province = suggestion.markerInfo.dealerInfo.province;\n } else {\n name = (suggestion as Installation).TXT_V_Installation_Data_Name__c;\n address = (suggestion as Installation).TXT_V_Address__c;\n zipCode = (suggestion as Installation).TXT_V_Postal_Code__c;\n city = (suggestion as Installation).TXT_V_Location__c;\n province = (suggestion as Installation).TXT_Code_Concession__c;\n }\n return (\n \n \n \n
    \n \n {name}\n \n \n {address}\n
    \n {zipCode} {city}, {province}\n
    \n
    \n
    \n );\n }\n};\n\nconst getValueFormatted = (suggestion: Suggestion) => {\n if (isGooglePlace(suggestion)) {\n return suggestion.name;\n }\n if (!isGooglePlace(suggestion) && isDealerData(suggestion)) {\n return `${suggestion.name}, ${suggestion.markerInfo.dealerInfo.address}`;\n } else if (!isGooglePlace(suggestion) && !isDealerData(suggestion)) {\n return `${(suggestion as Installation).TXT_V_Installation_Data_Name__c}, ${\n (suggestion as Installation).TXT_V_Address__c\n }`;\n } else {\n return '';\n }\n};\n\ninterface SuggestProps {\n setSuggestion?: React.Dispatch>;\n setValue: React.Dispatch>;\n setAplicarDisabled?: React.Dispatch>;\n value: string;\n isFiltrosSuggest?: boolean;\n isLocating?: boolean;\n moreDealersSearched?: boolean;\n setLocationSuccess?: React.Dispatch>;\n formTheme?: string;\n onSuggestionSelectedFn?: (suggestion: Suggestion) => void;\n autoWidth?: boolean;\n}\n\nexport function Suggest(props: SuggestProps) {\n const {\n setSuggestion,\n setValue,\n value,\n isFiltrosSuggest,\n setAplicarDisabled,\n isLocating,\n moreDealersSearched,\n setLocationSuccess,\n formTheme,\n onSuggestionSelectedFn,\n autoWidth\n } = props;\n const [suggestions, setSuggestions] = useState([]);\n const [selectedValue, setSelectedValue] = useState(false); // Controla que una vez seleccionado un valor en el input, no siga buscando en google maps.\n const predictions = useAddressPredictions(value, selectedValue);\n const [inputPlaceholder, setInputPlaceHolder] = useState('Localidad, código postal o nombre del taller');\n const trackingManager = useTrackingManager();\n const suggestRef = useRef(null);\n const inputRef = useRef(null);\n\n const { formInfo, dealersInfo } = useSelector((state: OneFormState) => state);\n const { dealers, installations, dealersOrInstallationsMode } = dealersInfo;\n\n const [inputFocus, setInputFocus] = useState(false);\n const dispatch = useDispatch();\n const { setDisableIntroNextStep, setError, handleNextStep } = useOneFormContext();\n\n useEffect(() => {\n if (isFiltrosSuggest) {\n setDisableIntroNextStep(true);\n // inputRef.current.input.addEventListener('keydown', handleIntroKeyDown)\n }\n return () => {\n if (isFiltrosSuggest) {\n setDisableIntroNextStep(false);\n // inputRef.current.input.removeEventListener('keydown', handleIntroKeyDown)\n }\n };\n }, []);\n\n const onChange = (e: any, { newValue }: { newValue: string }) => {\n e.stopPropagation();\n if (setSelectedValue) {\n setSelectedValue(false);\n }\n setError(false);\n setValue(newValue);\n };\n\n //desplegar el dropdown para arriba o para abajo según la posicinón del input en el window\n const { goUp, getAndUpdateState } = useDropdowPosition('.react-autosuggest__container');\n\n const onClick = () => {\n getAndUpdateState();\n\n trackingManager.trackFormFieldClick(\n {\n contentId: 'Localidad, código postal o nombre del taller',\n },\n {\n FormFieldName: 'location', // Corregir\n }\n );\n };\n\n const onSuggestionsFetchRequested = async ({ value }: { value: string }) => {\n const list = dealersOrInstallationsMode === 'dealers' ? dealers : installations;\n const dealerSuggestions = getSuggestions(list, value, dealersOrInstallationsMode);\n setSuggestions(dealerSuggestions);\n };\n\n const onSuggestionsClearRequested = () => {\n setSuggestions([]);\n };\n\n const [placeHolder, setPlaceHolder] = useState('');\n\n useEffect(() => {\n if (dealersOrInstallationsMode === 'dealers') {\n setPlaceHolder('Localidad, código postal, dirección, nombre del taller, etc.');\n } else {\n setPlaceHolder('Localidad, código postal o nombre del concesionario');\n }\n }, []);\n\n useEffect(() => {\n if (isFiltrosSuggest && moreDealersSearched) {\n setInputPlaceHolder('Zona del mapa seleccionada');\n } else {\n setInputPlaceHolder(placeHolder);\n }\n }, [moreDealersSearched, placeHolder]);\n\n const inputProps = {\n placeholder: inputPlaceholder,\n value,\n onChange,\n onClick,\n disabled: isLocating ? true : false,\n };\n\n // REFACTORIZAR\n useEffect(() => {\n if (selectedValue) return;\n const predictionsFormatted: GooglePlace[] = predictions.map((prediction) => {\n return {\n name: prediction,\n isGooglePlace: true,\n isGeoLocated: false,\n };\n });\n setSuggestions([...suggestions, ...predictionsFormatted]);\n }, [predictions]);\n\n return (\n {\n setInputFocus(true);\n }}\n onBlur={() => setInputFocus(false)}\n isFullScreen={formInfo.notALayer ? true : false}\n goUp={goUp}\n autoWidth={autoWidth}\n className=\"styled-wrapper-suggest\"\n >\n \n \n \n {\n if (!isGooglePlace(suggestion)) {\n dispatch({ type: 'SUGGESTION_IS_IN_CANARY_ISLANDS', payload: false });\n }\n const value = getValueFormatted(suggestion);\n setValue(value);\n setSelectedValue(true);\n if (onSuggestionSelectedFn) {\n setTimeout(() => {\n onSuggestionSelectedFn(suggestion);\n }, 0);\n }\n }}\n inputProps={inputProps}\n />\n {value !== '' && (\n \n {\n e.preventDefault();\n setValue('');\n if (!isFiltrosSuggest && !isLocating) {\n setLocationSuccess(false);\n setSuggestion(null);\n setValue('');\n setSelectedValue(false);\n } else if (isFiltrosSuggest) {\n setAplicarDisabled(true);\n }\n }}\n >\n \n \n \n )}\n \n );\n}\n","export const mapStyles = [\n {\n elementType: 'geometry',\n stylers: [\n {\n color: '#f5f5f5',\n },\n ],\n },\n {\n elementType: 'labels.icon',\n stylers: [\n {\n visibility: 'off',\n },\n ],\n },\n {\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#616161',\n },\n ],\n },\n {\n elementType: 'labels.text.stroke',\n stylers: [\n {\n color: '#f5f5f5',\n },\n ],\n },\n {\n featureType: 'administrative.land_parcel',\n elementType: 'labels',\n stylers: [\n {\n visibility: 'off',\n },\n ],\n },\n {\n featureType: 'administrative.land_parcel',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#bdbdbd',\n },\n ],\n },\n {\n featureType: 'landscape',\n stylers: [\n {\n color: '#dfe4e8',\n },\n ],\n },\n {\n featureType: 'landscape.natural',\n elementType: 'labels',\n stylers: [\n {\n color: '#757575',\n },\n {\n visibility: 'simplified',\n },\n {\n weight: 0.5,\n },\n ],\n },\n {\n featureType: 'poi',\n elementType: 'geometry',\n stylers: [\n {\n color: '#eeeeee',\n },\n ],\n },\n {\n featureType: 'poi',\n elementType: 'labels.text',\n stylers: [\n {\n visibility: 'off',\n },\n ],\n },\n {\n featureType: 'poi',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#757575',\n },\n ],\n },\n {\n featureType: 'poi.business',\n stylers: [\n {\n visibility: 'off',\n },\n ],\n },\n {\n featureType: 'poi.park',\n elementType: 'geometry',\n stylers: [\n {\n color: '#e5e5e5',\n },\n ],\n },\n {\n featureType: 'poi.park',\n elementType: 'geometry.fill',\n stylers: [\n {\n color: '#ade5a1',\n },\n ],\n },\n {\n featureType: 'poi.park',\n elementType: 'labels',\n stylers: [\n {\n visibility: 'on',\n },\n ],\n },\n {\n featureType: 'poi.park',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#00662f',\n },\n ],\n },\n {\n featureType: 'poi.park',\n elementType: 'labels.text.stroke',\n stylers: [\n {\n visibility: 'off',\n },\n ],\n },\n {\n featureType: 'road',\n elementType: 'geometry',\n stylers: [\n {\n color: '#ffffff',\n },\n ],\n },\n {\n featureType: 'road',\n elementType: 'labels',\n stylers: [\n {\n visibility: 'on',\n },\n ],\n },\n {\n featureType: 'road',\n elementType: 'labels.icon',\n stylers: [\n {\n visibility: 'off',\n },\n ],\n },\n {\n featureType: 'road.arterial',\n elementType: 'labels',\n stylers: [\n {\n visibility: 'on',\n },\n ],\n },\n {\n featureType: 'road.arterial',\n elementType: 'labels.icon',\n stylers: [\n {\n visibility: 'on',\n },\n ],\n },\n {\n featureType: 'road.arterial',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#757575',\n },\n ],\n },\n {\n featureType: 'road.highway',\n elementType: 'geometry',\n stylers: [\n {\n color: '#dadada',\n },\n ],\n },\n {\n featureType: 'road.highway',\n elementType: 'geometry.fill',\n stylers: [\n {\n color: '#ffe856',\n },\n ],\n },\n {\n featureType: 'road.highway',\n elementType: 'geometry.stroke',\n stylers: [\n {\n visibility: 'off',\n },\n ],\n },\n {\n featureType: 'road.highway',\n elementType: 'labels',\n stylers: [\n {\n visibility: 'on',\n },\n ],\n },\n {\n featureType: 'road.highway',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#616161',\n },\n ],\n },\n {\n featureType: 'road.local',\n stylers: [\n {\n visibility: 'off',\n },\n ],\n },\n {\n featureType: 'road.local',\n elementType: 'geometry',\n stylers: [\n {\n color: '#ffffff',\n },\n {\n visibility: 'on',\n },\n {\n weight: 0.5,\n },\n ],\n },\n {\n featureType: 'road.local',\n elementType: 'labels',\n stylers: [\n {\n visibility: 'on',\n },\n ],\n },\n {\n featureType: 'road.local',\n elementType: 'labels.text',\n stylers: [\n {\n visibility: 'on',\n },\n ],\n },\n {\n featureType: 'road.local',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#9e9e9e',\n },\n ],\n },\n {\n featureType: 'transit',\n stylers: [\n {\n visibility: 'off',\n },\n ],\n },\n {\n featureType: 'transit.line',\n elementType: 'geometry',\n stylers: [\n {\n color: '#e5e5e5',\n },\n ],\n },\n {\n featureType: 'transit.station',\n elementType: 'geometry',\n stylers: [\n {\n color: '#eeeeee',\n },\n ],\n },\n {\n featureType: 'water',\n elementType: 'geometry',\n stylers: [\n {\n color: '#4cc7f4',\n },\n ],\n },\n {\n featureType: 'water',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#0066a1',\n },\n ],\n },\n];\n","import {\n styled\n} from '@volkswagen-onehub/components-core';\n\n//Layer styles\n\nexport const MapAndTabsWrapper = styled.div<{ showFilters: boolean }>`\n display: flex;\n .wrapper {\n width: 50%;\n height: 100vh;\n &--tabs {\n background-color: #001e50;\n overflow-y: hidden;\n color: white;\n }\n &--map {\n z-index: 4;\n height: 100%;\n background-color: grey;\n }\n }\n .opacity-layer {\n position: absolute;\n width: 50%;\n height: 100%;\n left: 0;\n background: rgba(0, 0, 0, 0.4);\n z-index: ${(props) => (props.showFilters ? 6 : -1)};\n opacity: ${(props) => (props.showFilters ? 1 : 0)};\n transition: opacity 0.4s;\n }\n`;\n\nexport const FilterButton = styled.div`\n position: absolute;\n top: 24px;\n right: 24px;\n button {\n background: #ffffff;\n }\n`;\n\nexport const FiltrosWrapperLayer = styled.div`\n min-height: 100vh;\n width: 50%;\n background-color: white;\n position: absolute;\n top: 0;\n right: 0;\n z-index: 5;\n transform: translate3d(100%, 0, 0);\n display: none;\n .back-btn {\n position: absolute;\n z-index: 4;\n top: 20px;\n left: 24px;\n @media screen and (min-width: 1600px) {\n top: 24px;\n }\n }\n &.filtros-enter {\n display: block;\n transform: translate3d(100%, 0, 0);\n }\n &.filtros-enter-active {\n display: block;\n transform: translate3d(0, 0, 0);\n transition: all 0.4s;\n }\n &.filtros-enter-done {\n display: block;\n transform: translate3d(0, 0, 0);\n }\n &.filtros-exit {\n display: block;\n transform: translate3d(0, 0, 0);\n }\n &.filtros-exit-active {\n display: block;\n transform: translate3d(100%, 0, 0);\n transition: all 0.4s;\n }\n &.filtros-exit-done {\n display: none;\n transform: translate3d(100%, 0, 0);\n }\n`;\n\nexport const ListWrapper = styled.div<{paddingBottom?: string}>`\n height: calc(100vh - 120px);\n overflow-y: auto;\n @media all and (min-width: 960px) {\n padding-bottom: ${(props)=> props.paddingBottom ? props.paddingBottom : null};\n }\n`;\n\nexport const SmallerSVG = styled.div`\n svg {\n height: 12px;\n width: 12px;\n }\n button {\n height: 24px;\n min-height: 24px; \n }\n div{\n font-size: 12px;\n }\n`;\n\n//Mobile Layer styled components\n\nexport const FilterMobileNavbar = styled.div`\n position: fixed;\n top: 0;\n width: 100vw;\n padding: 8px 20px;\n z-index: 20;\n background-color: #ffffff; \n`;\n\nexport const CTAsNavigationWrapper = styled.div<{services?: boolean}>`\n display:flex;\n justify-content: space-between;\n padding-bottom: ${(props) => props.services ? '16px' : null} ;\n`;\n\ninterface VerMasYCarouselPositionProps {\n translateCarousel: boolean;\n userIsGeoLocated: boolean;\n}\n\nexport const VerMasYCarouselPosition = styled.div`\n position: absolute;\n bottom: 8px;\n height: fit-content;\n width: 100%;\n`;\nexport const SoloCardWrapper = styled.div`\n background-color: #001e50;\n bottom: 8px;\n height: fit-content;\n position: absolute;\n margin: 0 var(--size-grid002);\n width: var(--size-grid020);\n .box-card-wrapper {\n border: none;\n margin-top: 0;\n }\n`;\n\nexport const CTASwrapper = styled.div`\n padding-right: 20px;\n padding-bottom: 12px;\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n`;\n\nexport const VerMasTalleresCTA = styled.div`\n height: 32px;\n padding-right: 16px;\n padding-left: 16px;\n background-color: #ffffff;\n border: 1px solid #001e50;\n border-radius: 500px;\n color: #001e50;\n display: flex;\n align-items: center;\n width: 100px;\n`;\n\nexport const ControllerBackground = styled.div`\n border-radius: 100%;\n background-color: #ffffff;\n height: 44px;\n width: 44px;\n margin-bottom: 12px;\n button {\n border: 1px solid #001e50;\n }\n`;\n\ninterface CloseButtonProps {\n isTabsClose?: boolean;\n isFiltrosClose?: boolean;\n}\nexport const CloseButtonWrapper = styled.div`\n position: absolute;\n padding-bottom: ${(props) => (props.isTabsClose || props.isFiltrosClose ? '12px' : null)};\n background-color: ${(props) => (props.isTabsClose ? '#001E50' : '#FFFFFF')};\n width: 100%;\n padding-top: 12px;\n padding-left: 12px;\n z-index: 4;\n top: ${(props) => (props.isTabsClose || props.isFiltrosClose ? '0' : null)};\n @media screen and (min-width: 560px) {\n left: 20px;\n }\n button {\n color: ${(props) => (props.isTabsClose ? '#FFFFFF' : null)};\n }\n`;\n\nexport const MoblieListWrapper = styled.div<{paddingTop?: string}>`\n padding-top: ${(props)=> props.paddingTop ? props.paddingTop : null};\n`;\n","import {\n Breakpoints,\n Container,\n ContainerGutter,\n ContainerHorizontalAlignment,\n ContainerPadding,\n CTA,\n Layout,\n ThemeProvider,\n} from '@volkswagen-onehub/components-core';\nimport { ArrowLeft, Magnifier, FleetServicePrivate, CarPickupService } from 'src/icons-core-imports';\n\nimport React, { useEffect, useRef, useState } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport { useFeatureAppConfig } from 'src/feature-app';\nimport { CloseComponent } from 'src/feature-app/Screen';\nimport { SelectedTab } from 'src/types';\nimport { Filtros } from 'src/feature-app/NewMap';\nimport { Points } from 'src/types';\nimport { useOneFormContext } from 'src/feature-app/OneForm';\nimport { NewMap } from 'src/feature-app/NewMap/components/Map';\nimport { useMapGeneralController } from 'src/feature-app/NewMap/MapGeneralController';\nimport { \n MapAndTabsWrapper, \n FilterButton, \n FiltrosWrapperLayer, \n ListWrapper, \n SmallerSVG, \n handleClickCarPickup,\n handleClickReplacementCar \n} from '.';\n\ninterface ViewCitaPosventaProps {\n handleSeleccionarOnClick: any;\n handleShowSlots?: (point: Points) => string | null;\n renderPoints(points: any, carPickupSelected?: boolean, replacementCarSelected?: boolean, isTime?: boolean ): JSX.Element[];\n renderCalendar?(): JSX.Element;\n showCalendar?: boolean;\n preSelectedOrderValue?: SelectedTab;\n setPreSelectedOrderValue?: React.Dispatch>;\n pointsToList: Points[];\n services?: boolean;\n paddingBottomList?: string;\n isPosventa?: boolean;\n concesionario?: boolean;\n onlySuggest?: boolean; \n}\n\nexport const LayerDesktopView = (props: ViewCitaPosventaProps) => {\n const {\n renderPoints,\n renderCalendar,\n showCalendar,\n preSelectedOrderValue,\n setPreSelectedOrderValue,\n pointsToList,\n services, paddingBottomList, isPosventa, concesionario, onlySuggest,\n } = props;\n\n const [showFiltros, setShowFiltros] = useState(false);\n const [ preselectedDealerForm, setPreselectedDealerForm ] = useState(false);\n const config = useFeatureAppConfig();\n const sustitucionRef = useRef(null);\n const recogidaRef = useRef(null);\n\n useEffect(()=>{\n if(config.trigger === 'cita-posventa-dealer') {\n setPreselectedDealerForm(true);\n } else {\n setPreselectedDealerForm(false);\n }\n }, []);\n\n const { searchIsDealer } = useMapGeneralController();\n const { handleAreYouSureLayer } = useOneFormContext();\n\n const handleShowFiltros = () => {\n setShowFiltros(!showFiltros);\n };\n\n //seleccionar los que tiene coche de sustitucion o servicio de recogida\n\n const [ carPickupSelected, setCarPickupSelected] = useState(false);\n const [ replacementCarSelected, setReplacementCarSelected ] = useState(false);\n\n return showCalendar ? (\n renderCalendar()\n ) : (\n \n \n
    \n \n {\n services? (\n \n \n {\n e.preventDefault();\n handleClickReplacementCar(replacementCarSelected, setReplacementCarSelected);\n sustitucionRef.current.blur();\n }} \n ariaLabel='aria label'\n icon={}\n >\n Coche de sustitución\n \n \n \n {\n e.preventDefault();\n handleClickCarPickup(carPickupSelected, setCarPickupSelected);\n recogidaRef.current.blur();\n }} \n ariaLabel='aria label'\n icon={}\n >\n Servicio de recogida y entrega\n \n \n \n ) : null\n }\n \n
    \n {pointsToList ? (\n \n \n {renderPoints(pointsToList, carPickupSelected, replacementCarSelected)}\n \n \n ) : null}\n
    \n \n
    \n
    \n \n {\n preselectedDealerForm ? null : (\n \n \n {\n e.preventDefault();\n handleShowFiltros();\n }}\n ariaLabel=\"aria label\"\n icon={}\n >\n Buscar de nuevo\n \n \n \n )\n } \n
    \n
    setShowFiltros(false)} />\n \n\n \n \n \n
    \n {\n e.preventDefault();\n handleShowFiltros();\n }}\n ariaLabel=\"aria label\"\n icon={}\n />\n
    \n handleShowFiltros()}\n showFiltros={showFiltros}\n setShowFiltros={setShowFiltros}\n setPreSelectedOrderValue={setPreSelectedOrderValue}\n preSelectedOrderValue={preSelectedOrderValue}\n citaPosventa = {isPosventa}\n onlySuggest={true}\n concesionario={true}\n />\n
    \n
    \n
    \n \n );\n};\n","import {\n Breakpoints,\n Container,\n ContainerHorizontalAlignment,\n ContainerPadding,\n ContainerWrap,\n ContainerGutter,\n CTA,\n Layout,\n styled,\n Text,\n TextAppearance,\n ThemeProvider,\n} from '@volkswagen-onehub/components-core';\nimport { ArrowLeft, Close, Locate, Magnifier, CarPickupService, FleetServicePrivate } from 'src/icons-core-imports';\n\nimport React, { useEffect, useState } from 'react';\nimport { useFeatureAppConfig } from 'src/feature-app';\nimport { SelectedTab } from 'src/types';\nimport { Carousel, Filtros, NewMap, useMapGeneralController } from 'src/feature-app/NewMap';\nimport { Points } from 'src/types';\nimport { useOneFormContext } from 'src/feature-app/OneForm';\nimport { useRef } from 'react';\nimport { \n CloseButtonWrapper, \n ControllerBackground, \n CTAsNavigationWrapper, \n CTASwrapper, \n FilterMobileNavbar, \n SmallerSVG, \n SoloCardWrapper, \n VerMasTalleresCTA, \n VerMasYCarouselPosition,\n handleClickCarPickup,\n handleClickReplacementCar,\n MoblieListWrapper \n} from '.';\nimport { useFeatureServices } from 'src/feature-app/hooks';\n\nconst listIcon = require('../../../feature-app/NewMap/assets/filter-ic_list.svg');\n\ninterface ViewCitaPosventaProps {\n handleSeleccionarOnClick: any;\n handleShowSlots?: (point: Points) => string | null;\n handleShowCalendarOnClick?: (point: Points) => Promise;\n renderPoints(points: any, carPickupSelected?: boolean, replacementCarSelected?: boolean, isTime?: boolean, isCarouselCard?: boolean ): JSX.Element[];\n renderCalendar?(): JSX.Element;\n showCalendar?: boolean;\n preSelectedOrderValue?: SelectedTab;\n setPreSelectedOrderValue?: React.Dispatch>;\n pointsToList: Points[];\n isPosventa?: boolean;\n services?: boolean;\n concesionario?: boolean;\n onlySuggest?: boolean; \n paddingTopList?: string;\n}\n\nexport const LayerMobileView = (props: ViewCitaPosventaProps) => {\n const {\n handleSeleccionarOnClick,\n handleShowSlots,\n renderPoints,\n handleShowCalendarOnClick,\n showCalendar,\n renderCalendar,\n preSelectedOrderValue,\n setPreSelectedOrderValue,\n pointsToList, isPosventa, services,\n concesionario, onlySuggest, paddingTopList\n } = props;\n const { handlePreviousStep } = useOneFormContext();\n\n const {\n centerInGeoLocatedCenter,\n userIsGeoLocated,\n searchIsDealer,\n } = useMapGeneralController();\n\n //controladores de vista\n\n const [showFiltros, setShowFiltros] = useState(false);\n const [showTalleres, setShowTalleres] = useState(false);\n const [showMap, setShowMap] = useState(true);\n const [translateCarousel, setTranselateCarousel] = useState(false);\n const [ preselectedDealerForm, setPreselectedDealerForm ] = useState(false);\n const config = useFeatureAppConfig();\n const sustitucionMapRef = useRef(null);\n const recogidaMapRef = useRef(null);\n const sustitucionRef = useRef(null);\n const recogidaRef = useRef(null);\n const layerManager = useFeatureServices()['layer-manager'];\n useEffect(()=>{\n if(config.trigger === 'cita-posventa-dealer') {\n setPreselectedDealerForm(true);\n } else {\n setPreselectedDealerForm(false);\n }\n }, []);\n\n //otros\n const [gelocalizationActive, setGelocalizationActive] = useState(false);\n\n useEffect(() => {\n if (userIsGeoLocated) {\n setGelocalizationActive(true);\n }\n }, [userIsGeoLocated]);\n\n const handleShowFiltros = () => {\n setShowFiltros(!showFiltros);\n setShowTalleres(false);\n };\n const handleShowTalleres = () => {\n setShowTalleres(!showTalleres);\n setShowFiltros(false);\n };\n\n useEffect(() => {\n if (showFiltros === false && showTalleres === false) {\n setShowMap(true);\n } else {\n setShowMap(false);\n }\n }, [showFiltros, showTalleres]);\n\n //seleccionar los que tiene coche de sustitucion o servicio de recogida\n\n const [ carPickupSelected, setCarPickupSelected] = useState(false);\n const [ replacementCarSelected, setReplacementCarSelected ] = useState(false);\n\n return showCalendar ? (\n renderCalendar()\n ) : (\n
    \n {showMap ? (\n <>\n \n \n \n {\n e.preventDefault();\n const layers = layerManager.getLayers();\n const layer = layers.find(\n (layer) => layer.layer.options.id === 'mapaLeadInPage'\n ); \n if (layer) {\n layer.layer?.close();\n }\n handlePreviousStep(e);\n }}\n ariaLabel=\"aria label\"\n icon={}\n />\n {\n preselectedDealerForm ? null : (\n {\n e.preventDefault();\n handleShowFiltros();\n }}\n ariaLabel=\"aria label\"\n icon={}\n >\n Buscar de nuevo\n \n )\n }\n \n {\n services ? (\n \n \n {\n e.preventDefault();\n handleClickReplacementCar(replacementCarSelected, setReplacementCarSelected);\n sustitucionMapRef.current.blur();\n }} \n ariaLabel='aria label'\n icon={}\n >\n Coche de sustitución\n \n \n \n {\n e.preventDefault();\n handleClickCarPickup(replacementCarSelected, setReplacementCarSelected);\n recogidaMapRef.current.blur();\n }} \n ariaLabel='aria label'\n icon={}\n >\n Servicio de recogida\n \n \n \n ) : null\n }\n \n \n \n \n
    \n\n {pointsToList ? (\n searchIsDealer ? (\n \n {renderPoints(pointsToList, carPickupSelected, replacementCarSelected)}\n \n ) : (\n \n \n \n {gelocalizationActive ? (\n {\n e.preventDefault();\n centerInGeoLocatedCenter();\n e.stopPropagation();\n }}\n >\n {\n e.preventDefault();\n centerInGeoLocatedCenter();\n e.stopPropagation();\n }}\n ariaLabel=\"aria label\"\n icon={}\n />\n \n ) : null}\n {\n e.preventDefault();\n e.stopPropagation();\n }}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n handleShowTalleres();\n }}\n >\n \n \n Ver lista\n \n \n \n \n\n {/* Aunque en principio no debería devolver nunca sólo un resultado, dejo el siguiente\n render condicional por is acaso */}\n {pointsToList.length === 1 ? (\n \n {renderPoints(pointsToList, carPickupSelected, replacementCarSelected)}\n \n ) : (\n \n )}\n \n )\n ) : null}\n \n ) : (\n <>\n {showTalleres ? (\n \n \n \n {\n e.preventDefault();\n handleShowTalleres();\n }}\n ariaLabel=\"aria label\"\n icon={}\n />\n \n {\n services ? (\n \n \n {\n e.preventDefault();\n handleClickReplacementCar(replacementCarSelected, setReplacementCarSelected);\n sustitucionRef.current.blur();\n }} \n ariaLabel='aria label'\n icon={}\n >\n Coche de sustitución\n \n \n \n {\n e.preventDefault();\n handleClickCarPickup(carPickupSelected, setCarPickupSelected);\n recogidaRef.current.blur();\n }} \n ariaLabel='aria label'\n icon={}\n >\n Servicio de recogida\n \n \n \n ) : null\n }\n \n \n \n \n {renderPoints(pointsToList, carPickupSelected, replacementCarSelected)}\n \n \n \n
    \n
    \n ) : showFiltros ? (\n \n \n \n {\n e.preventDefault();\n handleShowFiltros();\n }}\n ariaLabel=\"aria label\"\n icon={}\n />\n \n handleShowFiltros()}\n preSelectedOrderValue={preSelectedOrderValue}\n setPreSelectedOrderValue={setPreSelectedOrderValue}\n showFiltros={showFiltros}\n setShowFiltros={setShowFiltros}\n citaPosventa = {isPosventa}\n onlySuggest={onlySuggest}\n concesionario={concesionario}\n />\n
    \n \n ) : null}\n \n )}\n
    \n );\n};\n","export const handleClickCarPickup = (carPickupSelected: boolean, setCarPickupSelected: (value: boolean) => void ) => {\n if(!carPickupSelected) {\n setCarPickupSelected(true);\n } else {\n setCarPickupSelected(false);\n }\n};\n\nexport const handleClickReplacementCar = (replacementCarSelected: boolean, setReplacementCarSelected: (value: boolean) => void) => {\n if(!replacementCarSelected) {\n setReplacementCarSelected(true);\n } else {\n setReplacementCarSelected(false);\n }\n};\n","export * from './BajaComunicaciones';\nexport * from './CallMe';\nexport * from './Cem';\nexport * from './CitaPosventa';\nexport * from './Empresa';\nexport * from './FormsAdhoc';\nexport * from './LEM';\nexport * from './Leads';\nexport * from './LeadsInPage';\nexport * from './MGM';\nexport * from './Newsletter';\nexport * from './NoCompra';\nexport * from './NoRenovacion';\nexport * from './Prospects';\nexport * from './Race';\nexport * from './SAC';\nexport * from './dps-utils';\nexport * from './format-fields';\nexport * from './helpers';\nexport * from './SAC/SACOneShop';\n\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):t.dayjs=e()}(this,function(){\"use strict\";var t=\"millisecond\",e=\"second\",n=\"minute\",r=\"hour\",i=\"day\",s=\"week\",u=\"month\",a=\"quarter\",o=\"year\",f=\"date\",h=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[^0-9]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?.?(\\d+)?$/,c=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,d={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\")},$=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},l={s:$,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+$(r,2,\"0\")+\":\"+$(i,2,\"0\")},m:function t(e,n){if(e.date() {\n return {\n url: window ? window.location.href : undefined,\n name: name ? name : undefined,\n };\n};\n\nexport const createPartner = (store: Store, dealerData?: DealersData): TrackingPartner => {\n const { formData, dealersInfo } = store.getState();\n const { dealer } = formData.fields;\n const { selectedDealer } = dealersInfo;\n\n const dealerFromStore = dealer ? dealer : selectedDealer ? selectedDealer : undefined;\n\n const dealerToUse = dealerData ? dealerData : dealerFromStore;\n\n return {\n informationBnr: dealerToUse?.kvps,\n informationDepartment: undefined,\n informationZIP: dealerToUse?.markerInfo?.dealerInfo?.zipCode,\n informationName: dealerToUse?.name,\n };\n};\n\nexport const createPartnerWithSearch = (store: Store, dealerData?: DealersData): TrackingPartner => {\n const { formData, formInfo } = store.getState();\n const basePartner = createPartner(store, dealerData);\n const SearchType = formInfo.suggestionIsDealer\n ? 'DealerSuggestion'\n : !formInfo.suggestionIsDealer\n ? 'GooglePlacesSuggestion'\n : undefined;\n\n return {\n ...basePartner,\n SearchSearchTerm: formData.fields.location,\n SearchType,\n SearchNumberOfResults: undefined,\n };\n};\n\nconst getStepNumber = (formInfo: FormInfo) => {\n const { step } = formInfo;\n\n if (!step) return undefined;\n\n return String(step.screenIndex + 1);\n};\n\nconst getStepName = (formInfo: FormInfo, processInfo?: TrackingProcess): string | undefined => {\n if (processInfo) return processInfo.StepName;\n\n const { step, multiStepScreenIndex, multiSteps } = formInfo;\n\n if (!step) return undefined;\n if (step.multiStep && multiStepScreenIndex >= 0) return multiSteps[multiStepScreenIndex].name; // Devolvemos el nombre del step dentro del multsitep.\n\n return step.name ? step.name : undefined;\n};\n\nexport const createTrackingProcess = (store: Store, processInfo?: TrackingProcess): TrackingProcess => {\n const { formInfo } = store.getState();\n\n let StepName = getStepName(formInfo, processInfo);\n let StepNumber = getStepNumber(formInfo);\n\n return {\n StepName,\n StepNumber,\n };\n};\n\nexport const getFormAppointments = (store: Store): TrackingForm => {\n const { formData } = store.getState();\n const { slot }: { slot?: Slot } = formData.fields;\n\n let Appointments;\n let NumberOfAppointments;\n\n if (slot) {\n Appointments = [dayjs(slot.from).utc().format('YYYY-MM-DDTHH:mm:ss[Z]')];\n NumberOfAppointments = 1;\n }\n return {\n Appointments,\n NumberOfAppointments,\n };\n};\n\nexport const getMarketingConsent = (store: Store): TrackingForm => {\n const { formData } = store.getState();\n const { lssi, tmk } = formData.fields;\n\n if (!lssi || !tmk) {\n return {\n MarketingConsent: [],\n };\n }\n\n return {\n MarketingConsent: [\n {\n comunicaciones: lssi === 'PERMITE',\n perfilado: tmk === 'PERMITE',\n },\n ],\n };\n};\n\nexport const getBaseEventInfo = (store: Store, brand: 'V' | 'N'): TrackingEventInfo => {\n const { pageCategory } = store.getState().formData.fields;\n\n const baseEventInfo: TrackingEventInfo = {\n brand: brand === 'N' ? 'commercial' : 'passenger',\n pageCategory,\n sectionName: undefined,\n templateType: 'Feature App Template',\n };\n return baseEventInfo;\n};\n\nexport const getCompleteConfigurationFromVicci = (vicciData: VicciData): TrackingConfiguration => {\n if (!vicciData) return emptyConfigurationFromVicci;\n\n const { vehicleConfiguration } = vicciData.consolidatedData;\n const { COD_VEH_WHEELS, DESC_VEH_WHEELS } = getWheelsParams(vicciData.featuresData.vehicleCatalogue.features);\n return {\n ...emptyConfigurationFromVicci,\n ModelId: vehicleConfiguration.modelKey.split('$')[0],\n ModelModelVersion: vehicleConfiguration.modelVersion,\n ModelName: vehicleConfiguration.modelName,\n ModelYear: vehicleConfiguration.modelYear,\n ExteriorColorCode: vehicleConfiguration.exterior?.code,\n ExteriorColorName: vehicleConfiguration.exterior?.name,\n InteriorColorCode: vehicleConfiguration.interior?.code,\n InteriorColorName: vehicleConfiguration.interior?.name,\n WheelsBasicId: COD_VEH_WHEELS,\n WheelsBasicName: DESC_VEH_WHEELS,\n };\n};\n\nexport const getCarlineConfigurationFromVicci = (vicciData: VicciData): TrackingConfiguration => {\n if (!vicciData) return {};\n\n const { vehicleConfiguration } = vicciData.consolidatedData;\n\n return {\n CarlineId: vehicleConfiguration.carlineKey,\n CarlineName: vehicleConfiguration.carlineName,\n SalesgroupId: vehicleConfiguration.salesgroupKey,\n SalesgroupName: vehicleConfiguration.salesgroupName,\n EquipmentlineName: getEquipmentlineName(vehicleConfiguration.modelFilters),\n };\n};\n\nexport const getCarlineConfigurationFromMkc = (marketingCode: any): TrackingConfiguration => {\n if (!marketingCode) return {};\n\n const { carlineKey, carlineName, salesgroupKey, salesgroupName, modelFilters } = marketingCode.consolidatedData;\n\n return {\n CarlineId: carlineKey,\n CarlineName: carlineName,\n SalesgroupId: salesgroupKey,\n SalesgroupName: salesgroupName,\n EquipmentlineName: getEquipmentlineName(modelFilters),\n };\n};\n\nexport const getCarlineConfiguration = (store: Store): TrackingConfiguration => {\n const { dealersInfo, formData } = store.getState();\n const { selectedCarline, oferta, salesGroup, match } = dealersInfo;\n const { vicciData, matchMarketingCodeData, marketingCodeResponse } = formData.fields;\n\n if (vicciData) {\n return getCarlineConfigurationFromVicci(vicciData);\n }\n\n if (marketingCodeResponse) {\n return getCarlineConfigurationFromMkc(marketingCodeResponse);\n }\n\n let configuration: TrackingConfiguration = {};\n if (selectedCarline) {\n configuration = {\n CarlineId: String(selectedCarline.code),\n CarlineName: selectedCarline.title,\n };\n }\n if (oferta) {\n configuration = {\n ...configuration,\n CarlineId: String(oferta.carlineCode),\n CarlineName: oferta.carlineTitle,\n };\n }\n if (salesGroup) {\n configuration = {\n ...configuration,\n SalesgroupId: salesGroup.salesGroupId,\n SalesgroupName: salesGroup.salesGroupName,\n };\n }\n\n if (match && matchMarketingCodeData) {\n configuration = {\n ...configuration,\n ...getDataFromMarketingCode(matchMarketingCodeData),\n };\n }\n return configuration;\n};\n\nexport const getDataFromMarketingCode = (marketingCodeData: StoredConfigurationResponse) => {\n return {\n SalesgroupId: marketingCodeData?.vehicleConfiguration?.salesgroupKey,\n SalesgroupName: marketingCodeData?.consolidatedData?.salesgroupName,\n EquipmentlineName: getEquipmentlineName(marketingCodeData?.consolidatedData?.modelFilters),\n ModelId: marketingCodeData?.vehicleConfiguration?.modelKey.split('$')[0],\n ModelName: marketingCodeData?.consolidatedData?.modelName,\n ModelYear: marketingCodeData?.vehicleConfiguration?.modelYear,\n };\n};\n","import { isMobileOnly, isTablet } from 'react-device-detect';\n\nexport const getParamsForm = () => {\n let tc: string;\n if (typeof s !== 'undefined') {\n tc = s.persCmp ? s.persCmp : '';\n } else {\n tc = '';\n }\n\n const date = new Date();\n const today = date.toISOString().slice(0, 10) + ' ' + date.toLocaleString('es-ES').slice(-8);\n const referalUrl = document.referrer.substring(0, 30);\n const url = window.location.origin + window.location.pathname;\n const device = isMobileOnly ? 'mobile' : isTablet ? 'tablet' : 'desktop';\n\n return {\n tc,\n today,\n referalUrl,\n url,\n device,\n };\n};\n","import { styled, Text, TextAlignment, TextAppearance, TextColor } from '@volkswagen-onehub/components-core';\n// // import store from './store';\nimport { CloseHandleV2, FocusLayerSizeV2 } from '@volkswagen-onehub/layer-manager';\nimport React, { SyntheticEvent, useEffect, useState } from 'react';\nimport { deviceType } from 'react-device-detect';\nimport { FormContext, useForm } from 'react-hook-form';\nimport { useDispatch, useSelector, useStore } from 'react-redux';\nimport { setObjectValues, useFeatureServices, formInfoInitialState } from 'src/feature-app';\nimport { TIME_FOR_TRANSFORM } from 'src/globals';\nimport { FormDataGroup, FormInfo, OneFormState, Steps } from 'src/types';\nimport { ErrorFormFields } from './tracking-types';\nimport { useTrackingManager } from 'src/feature-app/hooks/use-tracking-manager';\nimport { BehaviorSubject, config } from 'rxjs';\nimport { useFeatureAppConfig, useFeatureAppEnvironment } from './hooks';\nimport { removeConfigurationHash } from './remove-configuration-hash';\nimport { GenericErrorLayer, AvisoIslasCanarias, renderAvisoIslasCanariasLayer } from 'src/components';\nimport { LayerManagerWrapper } from './LayerManagerWrapper';\n\nconst Form = styled.form``;\n\ninterface errorMessageProps {\n notALayer: boolean;\n}\nconst ErrorMessage = styled.div`\n position: absolute;\n bottom: ${(props) => (props.notALayer ? '88px' : '122px')};\n right: 20px;\n z-index: 1000;\n width: max-content;\n padding: 4px 8px;\n border-radius: 4px;\n background-color: #e4002c;\n color: #ffffff;\n @media all and (min-width: 560px) {\n right: ${(props) => (props.notALayer ? 'var(--size-grid002)' : '40px')};\n }\n @media all and (min-width: 960px) {\n right: ${(props) => (props.notALayer ? 'var(--size-grid003)' : '52px')};\n bottom: ${(props) => (props.notALayer ? '88px' : '136px')};\n }\n @media all and (min-width: 1280px) {\n right: ${(props) => (props.notALayer ? 'var(--size-grid005)' : '52px')};\n }\n @media all and (min-width: 1920px) {\n right: ${(props) => (props.notALayer ? 'var(--size-grid006)' : '52px')};\n }\n @media all and (min-width: 2560px) {\n right: ${(props) => (props.notALayer ? 'var(--size-grid007)' : '52px')};\n }\n`;\n\ninterface UseFormMethods {\n closeLayer: () => void;\n handlePreviousStep: (e: any) => void;\n handleScreenChange: (newNumber?: number) => void;\n handleSubmit: (e: SyntheticEvent) => Promise;\n nextStep: () => void;\n previousStep: () => void;\n sendForm: () => void;\n handleShowFinalScreen: () => void;\n /**\n * Flag que activa algunas funcionalidades para facilitar el desarrollo.\n */\n debug: boolean;\n /**\n * Flag que controla si el formulario está dentro de un multistep y se tiene que esperar para realizar un next step del formulario genérico.\n */\n // waitForNextStep: boolean;\n /**\n * Flag que controla si el formulario está dentro de un multistep y se tiene que esperar para realizar un previous step del formulario genérico.\n */\n waitForPreviousStep: boolean;\n // setWaitForNextStep: React.Dispatch>;\n setWaitForPreviousStep: React.Dispatch>;\n initializeForm: (\n initialFormInfo: Partial,\n initialFormData: Partial,\n skipLayerInit?: boolean\n ) => void;\n /**\n * La propiedad nextMultiStep contiene la función que (en caso de que haya un multiStep) controlará el CTA de siguiente pantalla para navegar por las subsiguientes pantallas del multiStep sin cambiar de pantalla en el formulario principal.\n */\n nextMultiStep?: () => void;\n /**\n * Al guardar una función dentro del nextMultiStep necesitamos envolverla en otra función para que React no crea que es una inicialización -> https://medium.com/swlh/how-to-store-a-function-with-the-usestate-hook-in-react-8a88dd4eede1\n */\n setNextMultiStep?: React.Dispatch void>>;\n /**\n * La propiedad previousMultiStep contiene la función que (en caso de que haya un multiStep) controlará el CTA de siguiente pantalla para navegar por las anteriores pantallas del multiStep sin cambiar de pantalla en el formulario principal.\n */\n previousMultiStep?: () => void;\n /**\n * Al guardar una función dentro del previousMultiStep necesitamos envolverla en otra función para que React no crea que es una inicialización -> https://medium.com/swlh/how-to-store-a-function-with-the-usestate-hook-in-react-8a88dd4eede1\n */\n setPreviousMultiStep?: React.Dispatch void>>;\n\n handleNextStep: (e?: any) => void;\n /**\n * Flag que controla si se muestra o no el previousStep (ej: en CitaPrevia no se muestra en el multiStep 2 de mapa)\n */\n showPreviousStep: boolean;\n setShowPreviousStep: React.Dispatch>;\n setIsFullScreen: React.Dispatch>;\n isFullScreen: boolean;\n /**\n * Flag para validacion\n */\n error: boolean;\n setError: React.Dispatch>;\n /**\n * Flags para gestionar transiciones entre pantallas\n */\n nextScreenIndex: number;\n setNextScreenIndex: React.Dispatch>;\n nextMultiStepScreenIndex: number;\n setNextMultiStepScreenIndex: React.Dispatch>;\n distanceToMove: Array;\n setDistanceToMove: React.Dispatch>>;\n moveForward: boolean;\n setMoveForward: React.Dispatch>;\n /**\n * En alguna casuística el intro no debería pasar de página, causando el cierre de la feature app. Este flag lo desactiva.\n */\n setDisableIntroNextStep: React.Dispatch>;\n /**\n * Trigger para algunos casos en que el handleClick de ScreenController no funciona bien y el next step no se activa\n * al seleccionar una opción de las disponibles en la pantalla porque no se produce ningún click.\n * EJEMPLO: Pantalla locateUser citaPosventa en la casuística que el usuario elije geolacalización\n */\n isValueSelected: boolean;\n setIsValueSelected: React.Dispatch>;\n handleAreYouSureLayer: any;\n nextStepEventEmitter: BehaviorSubject;\n}\nexport const OneFormContext = React.createContext(null);\n\nexport const useOneFormContext = (): UseFormMethods => React.useContext(OneFormContext) as UseFormMethods;\n\ninterface OneFormProviderProps {\n children: JSX.Element;\n closeLayerCallback: CloseHandleV2;\n handleAreYouSureLayer: any;\n}\n\ninterface OneFormDebug {\n debug: boolean;\n toggleDebugMode: () => void;\n}\n\ndeclare global {\n interface Window {\n OneForm: OneFormDebug;\n }\n}\n\nexport const OneFormProvider = (props: OneFormProviderProps): any => {\n const { closeLayerCallback, handleAreYouSureLayer } = props;\n const { formData, formInfo } = useSelector((state: OneFormState) => state);\n const {\n sendFormCallback,\n screenIndex,\n formEnded,\n steps,\n stepsHistory,\n nextStepCallback,\n numberOfScreens,\n lastStep,\n step,\n formSubmitted,\n notALayer,\n suggestionIsInCanaryIslands,\n } = formInfo;\n const methods = useForm();\n // const { getValues, triggerValidation } = useFormContext();\n\n const dispatch = useDispatch();\n const store = useStore();\n const [waitForPreviousStep, setWaitForPreviousStep] = useState(false);\n const [nextMultiStep, setNextMultiStep] = useState<() => void>(() => () => {});\n const [isFullScreen, setIsFullScreen] = useState(false);\n const [previousMultiStep, setPreviousMultiStep] = useState<() => void>(() => () => {});\n const [showPreviousStep, setShowPreviousStep] = useState(false);\n const [error, setError] = useState(false);\n const [nextScreenIndex, setNextScreenIndex] = useState(null);\n const [nextMultiStepScreenIndex, setNextMultiStepScreenIndex] = useState(null);\n const [distanceToMove, setDistanceToMove] = useState>([]);\n const [moveForward, setMoveForward] = useState(true);\n const oneFormService = useFeatureServices()['es:oneform-core'];\n const trackingManager = useTrackingManager();\n const [debug, setDebug] = useState(false);\n const [disableIntroNextStep, setDisableIntroNextStep] = useState(false);\n const [isValueSelected, setIsValueSelected] = useState(false);\n const [closed, setClosed] = useState(false);\n const nextStepEventEmitter: BehaviorSubject = new BehaviorSubject(false);\n const layerManager = useFeatureServices()['layer-manager'];\n const history = useFeatureServices()['s2:history'];\n const config = useFeatureAppConfig();\n const env = useFeatureAppEnvironment();\n\n useEffect(() => {\n window.OneForm = { debug, toggleDebugMode };\n // setTimeout(() => {\n // const { person } = oneFormService.get();\n // if (person) {\n // dispatch({ type: 'UPDATE_FIELDS', payload: { ...person } });\n // setObjectValues(person, methods.setValue);\n // }\n // }, 1000);\n }, []);\n\n const toggleDebugMode = () => {\n setDebug(!debug);\n window.OneForm.debug = !debug;\n };\n\n const initializeForm = (\n initialFormInfo: Partial,\n initialFormData: Partial,\n skipLayerInit?: boolean\n ) => {\n // En algunos casos al finalizar el formulario y cerrar el layer se vuelve a disparar el evento;\n if (formSubmitted || closed) {\n return;\n }\n\n dispatch({ type: 'UPDATE_FORM', payload: initialFormData });\n dispatch({ type: 'SET_FORM_INFO', payload: { ...formInfoInitialState, ...initialFormInfo } });\n dispatch({ type: 'SET_INITIAL_STEPS', payload: initialFormInfo.steps });\n setTimeout(() => {\n // Solucion al bug que se produce cuando hay un error genérico. Al resetear el estado\n // se añade el último screenIndex que había antes de producirse el error, por lo que\n // la navegación se ve alterada.\n dispatch({ type: 'SET_STEPS_HISTORY', payload: initialFormInfo.stepsHistory });\n if (!skipLayerInit) {\n trackingManager.trackFormLayerLoad();\n }\n }, 0);\n };\n\n useEffect(() => {\n if (screenIndex !== 0 && screenIndex !== null) {\n dispatch({ type: 'UPDATE_STEPS_HISTORY', payload: screenIndex });\n }\n if (screenIndex !== 2 && nextMultiStepScreenIndex !== null) setNextMultiStepScreenIndex(null);\n setTimeout(() => {\n setObjectValues(formData.fields, methods.setValue);\n }, 500);\n }, [screenIndex]);\n\n /**\n * En el journey de no compra al llegar al mapa se abre un layer. Se necesita que interactue con el next step, por lo que lo tenemos que cerrar desde aquí\n */\n const handleMapFullScreenLayer = (isNext: boolean) => {\n const layers = layerManager.getLayers();\n const layer = layers.find(\n (layer) => layer.layer.options.id === 'mapaNoCompra' || layer.layer.options.id === 'mapaNoRenovacion' || layer.layer.options.id === 'mapaLeadInPage'\n );\n\n if (layer) {\n layer.layer?.close();\n isNext ? nextStep() : previousStep();\n dispatch({ type: 'UPDATE_WAIT_FOR_NEXT_STEP', payload: false });\n setWaitForPreviousStep(false);\n }\n };\n\n const handleNextStep = async (e?: any) => {\n if (e) e.preventDefault();\n\n const { step } = store.getState().formInfo;\n\n if (step && step.isLastStep) {\n return;\n }\n const values = methods.getValues();\n\n const isValid = await methods.triggerValidation();\n const { waitForNextStep } = store.getState().formInfo;\n\n // if (isValid && suggestionIsInCanaryIslands) {\n // renderAvisoIslasCanariasLayer(store, env, layerManager);\n\n // return;\n // }\n\n if (isValid) {\n if (!moveForward) setMoveForward(true);\n setError(false);\n dispatch({ type: 'UPDATE_FIELDS', payload: values });\n\n if (\n formData.fields.formName.includes('no_compra') ||\n formData.fields.formName.includes('no_renovacion') ||\n formData.fields.formName.includes('no_renovacion') ||\n formData.fields.formName.includes('configure') \n ) {\n handleMapFullScreenLayer(true);\n }\n\n if (waitForNextStep) {\n nextMultiStep();\n } else {\n nextStep();\n }\n } else {\n setError(true);\n const keys = Object.keys(methods.errors);\n\n const errorFields: ErrorFormFields[] = keys.map((key) => {\n return { 'form field id': 'id', 'form field name': key };\n });\n\n keys.map((err) => trackingManager.trackFormErrorMessageLoad({ message: err }, errorFields));\n }\n };\n\n const nextStep = () => {\n let nextStepNumber: number;\n let nextStep: Steps;\n\n // En algunos casos según como se inicializa el form ni el screenIndex ni los steps están disponibles, por lo que hay que\n // utilizar el getState para obtener el estado actual.\n const { screenIndex, steps } = store.getState().formInfo;\n\n if (formEnded && lastStep) {\n nextStepNumber = lastStep.screenIndex;\n nextStep = lastStep;\n } else {\n nextStepNumber = nextStepCallback ? nextStepCallback() : screenIndex + 1;\n nextStep = steps[nextStepNumber];\n }\n\n handleStepChange(nextStep, nextStepNumber, true);\n };\n\n const handlePreviousStep = (e: any) => {\n e.preventDefault();\n if (moveForward) {\n setMoveForward(false);\n }\n\n if (formData.fields.formName.includes('no_compra') || formData.fields.formName.includes('no_renovacion') || formData.fields.formName.includes('lead_inpage')) {\n handleMapFullScreenLayer(false);\n }\n const values = methods.getValues();\n // Comprobar si es correcto antes de actualizar?\n // dispatch({ type: 'UPDATE_FIELDS', payload: values });\n waitForPreviousStep ? previousMultiStep() : previousStep();\n if (formEnded) dispatch({ type: 'UPDATE_FORM_ENDED', payload: false });\n };\n\n const previousStep = () => {\n // Es necesario poder sobreescribir previousStep?\n const { screenIndex, steps, stepsHistory } = store.getState().formInfo;\n\n const indexActualScreen = stepsHistory.indexOf(screenIndex);\n const newScreenIndex = stepsHistory[indexActualScreen - 1];\n const indexInSteps = steps.findIndex((step: any) => step.screenIndex === newScreenIndex);\n const previousStep = steps[indexInSteps];\n\n // Falta eliminar el último elemento de stepsHistory\n handleStepChange(previousStep, newScreenIndex, false);\n };\n\n const handleStepChange = (step: Steps, screenIndex: number, isMovingForward: boolean) => {\n handleScreenChange(screenIndex);\n dispatch({ type: 'SET_NAVIGATION_MOVING_FORWARD', payload: isMovingForward });\n setTimeout(() => {\n dispatch({ type: 'UPDATE_STEP', payload: step });\n // dispatch({ type: 'UPDATE_STEPS_HISTORY', payload: screenIndex });\n dispatch({ type: 'UPDATE_FULLSCREEN', payload: step.fullScreen });\n setIsFullScreen(step.fullScreen);\n }, TIME_FOR_TRANSFORM);\n };\n\n const handleScreenChange = (newNumber?: number) => {\n if (typeof newNumber === 'number') setNextScreenIndex(newNumber);\n dispatch({ type: 'TRIGGER_EXIT_ANIMATION', payload: true });\n setTimeout(() => {\n dispatch({ type: 'TRIGGER_EXIT_ANIMATION', payload: false });\n if (typeof newNumber === 'number') {\n dispatch({ type: 'UPDATE_SCREEN', payload: newNumber });\n }\n }, TIME_FOR_TRANSFORM);\n };\n\n const handleShowFinalScreen = () => {\n dispatch({ type: 'SHOW_FINAL_SCREEN', payload: true });\n };\n\n const closeLayer = () => {\n dispatch({ type: 'RESET_STATE' });\n setClosed(true);\n closeLayerCallback({}, {}, {});\n\n if (env.done) {\n env.done();\n }\n return;\n };\n\n const sendForm = async (): Promise => {\n return new Promise((resolve) => {\n sendFormCallback\n ? resolve(sendFormCallback())\n : setTimeout(() => {\n resolve(true);\n }, 2000);\n });\n };\n\n const handleSubmit = async (e: SyntheticEvent) => {\n e.preventDefault();\n const responseIsValid = await sendForm();\n return responseIsValid;\n };\n\n const renderAvisoCanarias = () => {\n let redirect: string;\n\n if (formData.fields.formName === 'cita-posventa') {\n redirect = 'https://www.vwcanarias.com/es/cita-previa.html';\n } else {\n redirect = 'https://cita.vwcanarias.com/';\n }\n\n return (\n \n \n \n );\n };\n\n return (\n \n \n {\n const values = methods.getValues();\n\n if (e.keyCode === 13 && !disableIntroNextStep && Object.keys(values).length > 0) {\n handleNextStep(e);\n } else if (e.keyCode === 13 && disableIntroNextStep) {\n e.preventDefault();\n }\n }}\n className=\"form-provider\"\n >\n {props.children}\n \n {error && screenIndex !== numberOfScreens - 1 ? (\n \n \n Necesitamos esta información para seguir\n \n \n ) : null}\n \n \n );\n};\n\nexport const getDeviceType = (): string => (deviceType === 'browser' ? 'desktop' : deviceType.toLowerCase());\n\nexport const getTrackingCode = (): string => (typeof s !== 'undefined' ? (s.persCmp ? s.persCmp : null) : null);\n","module.exports = require('./lib/axios');","import React from 'react';\nimport { useStore } from 'react-redux';\nimport { Store } from 'redux';\nimport { useFeatureAppConfig, useGetBrand } from 'src/feature-app';\nimport {\n createPartner,\n createPartnerWithSearch,\n createTrackingLink,\n createTrackingProcess,\n getBaseEventInfo,\n getCarlineConfiguration,\n getCompleteConfigurationFromVicci,\n getFormAppointments,\n getMarketingConsent,\n} from 'src/feature-app/tracking-helpers';\nimport {\n emptyCarlineConfig,\n emptyConfig,\n emptyLatLongZip,\n emptyOwnership,\n emptyPersonalization,\n} from 'src/feature-app/tracking-objects';\nimport {\n ErrorFormFields,\n OffersTrackingEvent,\n OneFormTrackingManager,\n TrackingError,\n TrackingEvent,\n TrackingEventInfo,\n TrackingFilter,\n TrackingForm,\n TrackingPartner,\n TrackingProcess,\n} from 'src/feature-app/tracking-types';\nimport { DealersData, OneFormState } from 'src/types';\nimport { useFeatureServices } from './use-feature-services';\n\nconst defaultTrackingEvent: OffersTrackingEvent = {\n personalization: emptyPersonalization,\n};\n\nexport function useTrackingManager(): OneFormTrackingManager {\n const { tracking: trackingManager } = useFeatureServices();\n const store: Store = useStore();\n const config = useFeatureAppConfig();\n const brand = useGetBrand();\n\n return React.useMemo((): OneFormTrackingManager => {\n function track(action: string, event: OffersTrackingEvent): void {\n const { trackingIsDisabled } = store.getState().formInfo;\n if (trackingManager && !trackingIsDisabled) {\n trackingManager.track(action, event as TrackingEvent);\n }\n }\n\n return {\n trackFormButtonClick(eventInfo: TrackingEventInfo, dealer?: DealersData) {\n const { formName, formType } = store.getState().formData.fields;\n\n track('VWBasic_FormButton_Click', {\n ...defaultTrackingEvent,\n form: {\n FormType: formType,\n FormName: `vw-oneform-${formName}`,\n PrefContactChannels: undefined,\n FormVersion: `vw-oneform-${formName}-${process.env.VERSION}`,\n NewsletterType: undefined,\n Questionnaire: undefined,\n ...getMarketingConsent(store),\n },\n eventInfo: { ...getBaseEventInfo(store, brand), ...eventInfo },\n configuration: {\n ...emptyConfig,\n PriceType: 'price',\n PriceTypeParameter: undefined,\n ...getCarlineConfiguration(store),\n },\n partner: createPartner(store, dealer),\n ownership: emptyOwnership,\n link: createTrackingLink(eventInfo.contentId),\n environment: { featureAppIdAppVersion: process.env.VERSION },\n });\n },\n trackFormStepButtonClick(eventInfo: TrackingEventInfo) {\n const { formName, formType, pageCategory } = store.getState().formData.fields;\n\n const emptyConfigStep = { ...emptyConfig };\n delete emptyConfigStep.PriceTotalTotal;\n\n track('VWBasic_FormStepButton_Click', {\n ...defaultTrackingEvent,\n form: {\n FormType: formType,\n FormName: `vw-oneform-${formName}`,\n PrefContactChannels: undefined,\n FormVersion: `vw-oneform-${formName}-${process.env.VERSION}`,\n NewsletterType: undefined,\n Questionnaire: undefined,\n ...getMarketingConsent(store),\n },\n eventInfo: { ...getBaseEventInfo(store, brand), ...eventInfo },\n configuration: {\n ...emptyConfigStep,\n WheelsAdditionalExternalRollingNoise: undefined,\n ...getCarlineConfiguration(store),\n },\n process: {\n Name: pageCategory,\n ...createTrackingProcess(store),\n },\n partner: createPartner(store),\n ownership: emptyOwnership,\n link: createTrackingLink(eventInfo.contentId),\n environment: { featureAppIdAppVersion: process.env.VERSION },\n });\n },\n trackFormStepLoad(eventInfo: TrackingEventInfo, formInfo?: TrackingForm, processInfo?: TrackingProcess) {\n const { formName, formType, pageCategory } = store.getState().formData.fields;\n\n const baseEventInfoForLoad = { ...getBaseEventInfo(store, brand) };\n delete baseEventInfoForLoad.sectionName;\n\n const emptyConfigLoad = { ...emptyConfig };\n delete emptyConfigLoad.PriceTotalTotal;\n\n track('VWBasic_FormStep_Load', {\n ...defaultTrackingEvent,\n form: {\n ...formInfo,\n FormType: formType,\n FormName: `vw-oneform-${formName}`,\n FormVersion: `vw-oneform-${formName}-${process.env.VERSION}`,\n },\n eventInfo: { ...baseEventInfoForLoad, ...eventInfo, contentLabels: undefined },\n configuration: {\n ...emptyConfigLoad,\n WheelsAdditionalExternalRollingNoise: undefined,\n ...getCarlineConfiguration(store),\n },\n user: { ...emptyLatLongZip },\n process: {\n Name: pageCategory,\n ...createTrackingProcess(store, processInfo),\n },\n partner: createPartner(store),\n ownership: emptyOwnership,\n environment: { featureAppIdAppVersion: process.env.VERSION },\n });\n },\n trackButtonClick(eventInfo: TrackingEventInfo, dealer?: DealersData) {\n const processInfo = createTrackingProcess(store);\n track('VWBasic_Button_Click', {\n ...defaultTrackingEvent,\n eventInfo: { ...getBaseEventInfo(store, brand), ...eventInfo },\n configuration: {\n ...emptyCarlineConfig,\n ...getCarlineConfiguration(store),\n },\n partner: createPartner(store, dealer),\n ownership: emptyOwnership,\n process: processInfo,\n link: createTrackingLink(eventInfo.contentId),\n environment: { featureAppIdAppVersion: process.env.VERSION },\n questionnaire: { QuestionAnswerSet: undefined },\n SC: {\n ResultsRecommendationPosition: undefined,\n ResultsRecommendationFirst: undefined,\n ResultsRecommendationSecond: undefined,\n },\n });\n },\n trackFormCTAClick(eventInfo: TrackingEventInfo, dealer?: DealersData) {\n const { formName, formType } = store.getState().formData.fields;\n\n track('VWBasic_FormCTA_Click', {\n ...defaultTrackingEvent,\n form: {\n FormType: formType,\n FormName: `vw-oneform-${formName}`,\n PrefContactChannels: undefined,\n FormVersion: `vw-oneform-${formName}-${process.env.VERSION}`,\n NewsletterType: undefined,\n Questionnaire: undefined,\n ...getMarketingConsent(store),\n },\n eventInfo: { ...getBaseEventInfo(store, brand), ...eventInfo },\n configuration: {\n ...emptyConfig,\n PriceType: undefined,\n PriceTypeParameter: undefined,\n ...getCarlineConfiguration(store),\n },\n partner: createPartner(store, dealer),\n ownership: emptyOwnership,\n link: createTrackingLink(eventInfo.contentId),\n environment: { featureAppIdAppVersion: process.env.VERSION },\n });\n },\n trackFormSubmissionSuccessMessageLoad(eventInfo: TrackingEventInfo, formInfo?: TrackingForm) {\n const { formName, formType, vicciData, pageCategory } = store.getState().formData.fields;\n const processInfo = createTrackingProcess(store);\n\n track('VWBasic_FormSubmissionSuccessMessage_Load', {\n ...defaultTrackingEvent,\n form: {\n FormType: formType,\n FormName: `vw-oneform-${formName}`,\n PrefContactChannels: undefined,\n FormVersion: `vw-oneform-${formName}-${process.env.VERSION}`,\n NewsletterType: undefined,\n ErrorFormFields: undefined,\n Questionnaire: undefined,\n SourceID: undefined,\n OpportunityUID: undefined,\n CycleID: undefined,\n FormStart: false,\n LeadID: undefined,\n ...getFormAppointments(store),\n ...getMarketingConsent(store),\n ...formInfo,\n },\n eventInfo: { ...getBaseEventInfo(store, brand), ...eventInfo },\n user: { ...emptyLatLongZip },\n configuration: {\n ...emptyConfig,\n ...getCompleteConfigurationFromVicci(vicciData),\n ...getCarlineConfiguration(store),\n },\n process: { ...processInfo, StepName: 'ThankYou', Name: pageCategory },\n partner: createPartnerWithSearch(store),\n ownership: emptyOwnership,\n environment: { featureAppIdAppVersion: process.env.VERSION },\n });\n },\n trackFormLayerLoad() {\n const { formName, formType, pageCategory } = store.getState().formData.fields;\n\n const emptyConfigLoad = { ...emptyConfig };\n delete emptyConfigLoad.PriceTypeParameter;\n delete emptyConfigLoad.PriceType;\n\n track('VWBasic_FormLayer_Load', {\n ...defaultTrackingEvent,\n form: {\n FormType: formType,\n FormName: `vw-oneform-${formName}`,\n FormVersion: `vw-oneform-${formName}-${process.env.VERSION}`,\n NewsletterType: undefined,\n CycleID: undefined,\n FormStart: true,\n },\n eventInfo: {\n ...getBaseEventInfo(store, brand),\n contentId: config.trigger ? config.trigger : undefined,\n contentLabels: undefined,\n },\n configuration: { ...emptyConfigLoad, ...getCarlineConfiguration(store) },\n process: {\n Name: pageCategory,\n ...createTrackingProcess(store),\n },\n partner: createPartner(store),\n environment: { featureAppIdAppVersion: process.env.VERSION },\n });\n },\n trackFormLoad() {\n const { formName, formType, pageCategory } = store.getState().formData.fields;\n const emptyConfigLoad = { ...emptyConfig };\n\n track('VWBasic_Form_Pageload', {\n ...defaultTrackingEvent,\n environment: { featureAppIdAppVersion: process.env.VERSION },\n form: {\n FormType: formType,\n FormName: `vw-oneform-${formName}`,\n FormVersion: `vw-oneform-${formName}-${process.env.VERSION}`,\n FormStart: true,\n },\n eventInfo: {\n ...getBaseEventInfo(store, brand),\n contentId: config.trigger ? config.trigger : undefined,\n contentLabels: undefined,\n },\n user: { ...emptyLatLongZip },\n configuration: { ...emptyConfigLoad, ...getCarlineConfiguration(store) },\n process: {\n Name: pageCategory,\n ...createTrackingProcess(store),\n },\n partner: createPartner(store),\n });\n },\n trackFormLoadRace() {\n const { formName, formType, pageCategory } = store.getState().formData.fields;\n const emptyConfigLoad = { ...emptyConfig };\n\n track('VWBasic_Form_Load', {\n ...defaultTrackingEvent,\n environment: { featureAppIdAppVersion: process.env.VERSION },\n form: {\n FormType: formType,\n FormName: `vw-oneform-${formName}`,\n FormVersion: `vw-oneform-${formName}-${process.env.VERSION}`,\n FormStart: true,\n },\n eventInfo: {\n ...getBaseEventInfo(store, brand),\n contentId: config.trigger ? config.trigger : undefined,\n contentLabels: undefined,\n },\n user: { ...emptyLatLongZip },\n configuration: { ...emptyConfigLoad, ...getCarlineConfiguration(store) },\n process: {\n Name: pageCategory,\n ...createTrackingProcess(store),\n },\n partner: createPartner(store),\n });\n },\n\n trackFormErrorMessageLoad(errorInfo?: TrackingError, errorFields?: ErrorFormFields[]) {\n const { formName, formType } = store.getState().formData.fields;\n\n track('VWBasic_FormErrorMessage_Load', {\n ...defaultTrackingEvent,\n form: {\n FormType: formType,\n FormName: `vw-oneform-${formName}`,\n FormVersion: `vw-oneform-${formName}-${process.env.VERSION}`,\n ErrorFormFields: { FieldNameandID: [...errorFields] },\n ErrorAdressValidationFields: undefined,\n },\n eventInfo: { ...getBaseEventInfo(store, brand) },\n error: { message: errorInfo.message, code: undefined, referringUrl: undefined },\n partner: createPartner(store),\n environment: { featureAppIdAppVersion: process.env.VERSION },\n });\n },\n trackFormFieldClick(eventInfo: TrackingEventInfo, form: TrackingForm) {\n const { formName, formType } = store.getState().formData.fields;\n\n track('VWBasic_FormField_Click', {\n ...defaultTrackingEvent,\n form: {\n FormType: formType,\n FormName: `vw-oneform-${formName}`,\n FormVersion: `vw-oneform-${formName}-${process.env.VERSION}`,\n ...form,\n },\n eventInfo: { ...getBaseEventInfo(store, brand), ...eventInfo },\n configuration: {\n ...emptyCarlineConfig,\n ...getCarlineConfiguration(store),\n },\n process: createTrackingProcess(store),\n partner: createPartner(store),\n environment: { featureAppIdAppVersion: process.env.VERSION },\n });\n },\n trackFormFilterSelect(eventInfo: TrackingEventInfo, filter: TrackingFilter, form: TrackingForm) {\n const { formName, formType } = store.getState().formData.fields;\n\n track('VWBasic_FormFilterSelect_Click', {\n ...defaultTrackingEvent,\n form: {\n FormType: formType,\n FormName: `vw-oneform-${formName}`,\n FormVersion: `vw-oneform-${formName}-${process.env.VERSION}`,\n ...form,\n },\n eventInfo: { ...getBaseEventInfo(store, brand), ...eventInfo },\n configuration: {\n ...emptyCarlineConfig,\n ...getCarlineConfiguration(store),\n },\n filter,\n process: createTrackingProcess(store),\n partner: createPartner(store),\n environment: { featureAppIdAppVersion: process.env.VERSION },\n });\n },\n trackFormCloseClick(eventInfo: TrackingEventInfo, formInfo?: TrackingForm) {\n const baseEventInfoCloseClick = { ...getBaseEventInfo(store, brand) };\n delete baseEventInfoCloseClick.templateType;\n\n const partner: TrackingPartner = createPartnerWithSearch(store);\n delete partner.informationDepartment;\n\n const processInfo = createTrackingProcess(store);\n delete processInfo.StepNumber;\n const { formName, formType, vicciData } = store.getState().formData.fields;\n\n track('VWBasic_FormClose_Click', {\n ...defaultTrackingEvent,\n form: {\n ...formInfo,\n FormType: formType,\n FormName: `vw-oneform-${formName}`,\n PrefContactChannels: undefined,\n SourceID: undefined,\n ErrorFormFields: undefined,\n OpportunityUID: undefined,\n FormVersion: `vw-oneform-${formName}-${process.env.VERSION}`,\n CycleID: undefined,\n FormFields: undefined,\n ...getFormAppointments(store),\n },\n eventInfo: { ...baseEventInfoCloseClick, ...eventInfo },\n configuration: {\n ...emptyCarlineConfig,\n ...getCompleteConfigurationFromVicci(vicciData),\n ...getCarlineConfiguration(store),\n },\n process: processInfo,\n partner,\n link: createTrackingLink(eventInfo.contentId),\n environment: { featureAppIdAppVersion: process.env.VERSION },\n });\n },\n };\n }, [trackingManager]);\n}\n","export var DesignTokenSizeEnum;\n(function (DesignTokenSizeEnum) {\n DesignTokenSizeEnum[\"static0\"] = \"static0\";\n DesignTokenSizeEnum[\"static100\"] = \"static100\";\n DesignTokenSizeEnum[\"static150\"] = \"static150\";\n DesignTokenSizeEnum[\"static200\"] = \"static200\";\n DesignTokenSizeEnum[\"static250\"] = \"static250\";\n DesignTokenSizeEnum[\"static300\"] = \"static300\";\n DesignTokenSizeEnum[\"static350\"] = \"static350\";\n DesignTokenSizeEnum[\"static370\"] = \"static370\";\n DesignTokenSizeEnum[\"static400\"] = \"static400\";\n DesignTokenSizeEnum[\"static450\"] = \"static450\";\n DesignTokenSizeEnum[\"static500\"] = \"static500\";\n DesignTokenSizeEnum[\"static510\"] = \"static510\";\n DesignTokenSizeEnum[\"static515\"] = \"static515\";\n DesignTokenSizeEnum[\"static520\"] = \"static520\";\n DesignTokenSizeEnum[\"static530\"] = \"static530\";\n DesignTokenSizeEnum[\"static535\"] = \"static535\";\n DesignTokenSizeEnum[\"static550\"] = \"static550\";\n DesignTokenSizeEnum[\"static565\"] = \"static565\";\n DesignTokenSizeEnum[\"static575\"] = \"static575\";\n DesignTokenSizeEnum[\"static600\"] = \"static600\";\n DesignTokenSizeEnum[\"static625\"] = \"static625\";\n DesignTokenSizeEnum[\"static650\"] = \"static650\";\n DesignTokenSizeEnum[\"static700\"] = \"static700\";\n DesignTokenSizeEnum[\"static750\"] = \"static750\";\n DesignTokenSizeEnum[\"static800\"] = \"static800\";\n DesignTokenSizeEnum[\"static900\"] = \"static900\";\n DesignTokenSizeEnum[\"static1000\"] = \"static1000\";\n DesignTokenSizeEnum[\"static1100\"] = \"static1100\";\n DesignTokenSizeEnum[\"static1200\"] = \"static1200\";\n DesignTokenSizeEnum[\"grid001\"] = \"grid001\";\n DesignTokenSizeEnum[\"grid002\"] = \"grid002\";\n DesignTokenSizeEnum[\"grid003\"] = \"grid003\";\n DesignTokenSizeEnum[\"grid004\"] = \"grid004\";\n DesignTokenSizeEnum[\"grid005\"] = \"grid005\";\n DesignTokenSizeEnum[\"grid006\"] = \"grid006\";\n DesignTokenSizeEnum[\"grid007\"] = \"grid007\";\n DesignTokenSizeEnum[\"grid008\"] = \"grid008\";\n DesignTokenSizeEnum[\"grid009\"] = \"grid009\";\n DesignTokenSizeEnum[\"grid010\"] = \"grid010\";\n DesignTokenSizeEnum[\"grid011\"] = \"grid011\";\n DesignTokenSizeEnum[\"grid012\"] = \"grid012\";\n DesignTokenSizeEnum[\"grid013\"] = \"grid013\";\n DesignTokenSizeEnum[\"grid014\"] = \"grid014\";\n DesignTokenSizeEnum[\"grid015\"] = \"grid015\";\n DesignTokenSizeEnum[\"grid016\"] = \"grid016\";\n DesignTokenSizeEnum[\"grid017\"] = \"grid017\";\n DesignTokenSizeEnum[\"grid018\"] = \"grid018\";\n DesignTokenSizeEnum[\"grid019\"] = \"grid019\";\n DesignTokenSizeEnum[\"grid020\"] = \"grid020\";\n DesignTokenSizeEnum[\"grid021\"] = \"grid021\";\n DesignTokenSizeEnum[\"grid022\"] = \"grid022\";\n DesignTokenSizeEnum[\"grid023\"] = \"grid023\";\n DesignTokenSizeEnum[\"grid024\"] = \"grid024\";\n DesignTokenSizeEnum[\"dynamic0020\"] = \"dynamic0020\";\n DesignTokenSizeEnum[\"dynamic0040\"] = \"dynamic0040\";\n DesignTokenSizeEnum[\"dynamic0050\"] = \"dynamic0050\";\n DesignTokenSizeEnum[\"dynamic0100\"] = \"dynamic0100\";\n DesignTokenSizeEnum[\"dynamic0120\"] = \"dynamic0120\";\n DesignTokenSizeEnum[\"dynamic0130\"] = \"dynamic0130\";\n DesignTokenSizeEnum[\"dynamic0140\"] = \"dynamic0140\";\n DesignTokenSizeEnum[\"dynamic0150\"] = \"dynamic0150\";\n DesignTokenSizeEnum[\"dynamic0200\"] = \"dynamic0200\";\n DesignTokenSizeEnum[\"dynamic0250\"] = \"dynamic0250\";\n DesignTokenSizeEnum[\"dynamic0270\"] = \"dynamic0270\";\n DesignTokenSizeEnum[\"dynamic0300\"] = \"dynamic0300\";\n DesignTokenSizeEnum[\"dynamic0350\"] = \"dynamic0350\";\n DesignTokenSizeEnum[\"dynamic0450\"] = \"dynamic0450\";\n})(DesignTokenSizeEnum || (DesignTokenSizeEnum = {}));\nexport var DesignTokenFontSizes;\n(function (DesignTokenFontSizes) {\n DesignTokenFontSizes[\"size0100\"] = \"size0100\";\n DesignTokenFontSizes[\"size0150\"] = \"size0150\";\n DesignTokenFontSizes[\"size0200\"] = \"size0200\";\n DesignTokenFontSizes[\"size0250\"] = \"size0250\";\n DesignTokenFontSizes[\"size0300\"] = \"size0300\";\n DesignTokenFontSizes[\"size0350\"] = \"size0350\";\n DesignTokenFontSizes[\"size0400\"] = \"size0400\";\n DesignTokenFontSizes[\"size0450\"] = \"size0450\";\n DesignTokenFontSizes[\"size0500\"] = \"size0500\";\n DesignTokenFontSizes[\"size0550\"] = \"size0550\";\n DesignTokenFontSizes[\"size0600\"] = \"size0600\";\n})(DesignTokenFontSizes || (DesignTokenFontSizes = {}));\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nexport var ChevronUp = React.forwardRef(Object.assign(function (props, forwardRef) {\n var variant = props.variant || \"default\";\n if (variant === \"default\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M22.016 17.708 12.55 7.814c-.28-.298-.418-.397-.551-.397-.145 0-.31.114-.572.393l-9.443 9.897-.962-.918 9.439-9.893A2.108 2.108 0 0 1 12 6.086a2.083 2.083 0 0 1 1.517.813l9.46 9.89z\" }));\n }\n if (variant === \"large\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"48\", height: \"48\", viewBox: \"0 0 48 48\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M44.301 35.205 25.344 15.387c-1.085-1.159-1.482-1.338-2.732-.005L3.699 35.204l-1.447-1.381 18.906-19.816A3.943 3.943 0 0 1 24 12.487a3.883 3.883 0 0 1 2.797 1.526l18.95 19.809z\" }));\n }\n if (variant === \"small\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"12\", height: \"12\", viewBox: \"0 0 12 12\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M10.784 9.092 6.037 4.13l-.043-.046-.04.041-4.737 4.966-.962-.918 4.734-4.962A1.39 1.39 0 0 1 6 2.703a1.365 1.365 0 0 1 1.003.513l4.742 4.956z\" }));\n }\n return null;\n}, { displayName: 'ChevronUp' }));\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nexport var ChevronDown = React.forwardRef(Object.assign(function (props, forwardRef) {\n var variant = props.variant || \"default\";\n if (variant === \"default\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"m1.984 6.19 9.465 9.893c.28.299.418.397.551.397.145 0 .31-.114.572-.392l9.443-9.898.962.918-9.439 9.893a2.108 2.108 0 0 1-1.538.81 2.083 2.083 0 0 1-1.517-.813l-9.46-9.889z\" }));\n }\n if (variant === \"large\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"48\", height: \"48\", viewBox: \"0 0 48 48\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"m3.698 12.641 18.957 19.817c1.085 1.16 1.482 1.34 2.732.006l18.912-19.822 1.447 1.381L26.84 33.839a3.943 3.943 0 0 1-2.842 1.52 3.883 3.883 0 0 1-2.797-1.526L2.252 14.023z\" }));\n }\n if (variant === \"small\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"12\", height: \"12\", viewBox: \"0 0 12 12\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"m1.216 2.805 4.746 4.962.043.046.04-.041 4.738-4.966.962.918L7.01 8.686A1.39 1.39 0 0 1 6 9.195a1.365 1.365 0 0 1-1.004-.514L.255 3.725z\" }));\n }\n return null;\n}, { displayName: 'ChevronDown' }));\n","import {\n Breakpoints,\n Container,\n ContainerGutter,\n ContainerHorizontalAlignment,\n ContainerPadding,\n ContainerVerticalAlignment,\n ContainerWrap,\n CTA,\n Fieldset,\n Layout,\n LayoutRowGap,\n RadioButton,\n styled,\n Switch,\n Text,\n TextAlignment,\n TextAppearance,\n} from '@volkswagen-onehub/components-core';\nimport { CloseHandleV2, FocusLayerSizeV2, LayerManagerV2 } from '@volkswagen-onehub/layer-manager';\nimport React, { useEffect, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useDispatch, useStore, useSelector } from 'react-redux';\nimport { Store } from 'redux';\nimport {\n Apellido,\n AreYouSureLayer,\n Email,\n LegalesFormatoLayer,\n LssiTkmQuestions,\n MatriculaYModelo,\n Nombre,\n SelectExtended,\n Telefono,\n CarlineSelect,\n PoliticaPrivacidad,\n LastNavigation,\n} from 'src/components';\nimport {\n LayerManagerWrapper,\n useFaContent,\n useFeatureAppConfig,\n useFeatureAppEnvironment,\n useFeatureServices,\n useOneFormContext,\n weekDay_DayNumber_Month,\n weekDay_DayNumber_Month_Hour,\n} from 'src/feature-app';\nimport { VehiclesIdentityKit } from 'src/feature-service/es-oneform-core-feature-service/types';\nimport { TIME_FOR_TRANSFORM } from 'src/globals';\nimport { OneFormState, Steps } from 'src/types';\nimport { useIsComerciales } from 'src/feature-app/hooks';\nimport { getKilometrosInfo, franjaHoraria } from 'src/feature-app/InputsValues';\nimport { ArrowDown, ArrowUp, ChevronDown, ChevronUp } from '@volkswagen-onehub/icons-core';\n\nconst AllWrapper = styled.div`\n padding-top: 82px;\n`;\n\nconst TopInfoBox = styled.div`\n border: 1px solid rgba(255, 255, 255, 0.44);\n padding: 0 20px;\n width: 100%;\n @media all and (min-width: 560px) {\n padding: 0 24px;\n }\n`;\n\ntype BorderType = 'top' | 'bottom' | 'none';\n\ntype ItemProps = {\n boxItem?: boolean;\n border: BorderType;\n showEdit?: boolean;\n noPaddingTop?: boolean;\n showOperacionesMantenimiento?: boolean;\n};\n\nconst ItemWrapper = styled.div`\n width: 100%;\n text-align: left;\n border-bottom: ${(props) => (props.border === 'bottom' ? '1px solid rgba(255,255,255,0.45)' : 'none')};\n border-top: ${(props) => (props.border === 'top' ? '1px solid rgba(255,255,255,0.45)' : 'none')};\n padding: ${(props) => (props.boxItem ? '24px 0' : props.noPaddingTop ? '0 24px 44px' : '44px 24px')};\n\n .item-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-bottom: ${(props) => (props.showOperacionesMantenimiento ? '32px' : props.showEdit ? '44px' : '12px')};\n button > * {\n font-weight: ${(props) => (props.showEdit ? 'normal' : 'bold')};\n }\n &--legal {\n padding-bottom: ${(props) => (props.showEdit ? 'unset' : '31.5px')};\n }\n }\n .edit-wrapper {\n display: flex;\n flex-direction: column;\n label:first-of-type {\n margin-bottom: 23px;\n }\n }\n .input-error {\n margin-left: 0px !important;\n }\n`;\n\nconst SelectWrapper = styled.div`\n margin-bottom: 2px;\n label {\n width: 100%;\n @media all and (min-width: 560px) {\n width: 303px;\n }\n @media all and (min-width: 960px) {\n width: 320px;\n }\n }\n`;\n\nconst InputWidthWrapper = styled.div`\n width: 100%;\n margin-bottom: 2px;\n @media all and (min-width: 560px) {\n width: 303px;\n }\n @media all and (min-width: 960px) {\n width: 320px;\n }\n`;\n\nconst RadioButtonWrapper = styled.div`\n border: 1px solid white;\n padding: 20px;\n`;\n\nconst MotivoCalculadora = styled.div`\n width: 100%;\n display: flex;\n justify-content: space-between;\n`;\n\nconst isCalculadoraForm = (formName: string) => formName === 'cita-posventa-calculadora';\n\n/**\n * En calculadora se tiene que ocultar el CTA ya que el motivo no es editable.\n * @param formName\n * @returns\n */\nconst showCTAEditMotivo = (formName: string) => !isCalculadoraForm(formName);\n\n/**\n * En calculadora se tiene que ocultar el CTA ya que el taller no es editable.\n * @param formName\n * @returns\n */\nconst showCTAEditTaller = (formName: string) => formName !== 'cita-posventa-calculadora';\n\n/**\n * En calculadora se tiene que ocultar el CTA ya que el vehículo no es editable.\n * @param formName\n * @returns\n */\nconst showCTAEditVW = (formName: string) => formName !== 'cita-posventa-calculadora';\n\nconst getStepNumber = (steps: Steps[], layerName: 'isMotivoLayer' | 'isTimeLayer' | 'isTallerLayer') => {\n const index = steps.findIndex((step) => {\n if (layerName === 'isMotivoLayer' && step.name === 'Motivo') {\n return step;\n }\n if (layerName !== 'isMotivoLayer' && step.name === 'Mapa') {\n return step;\n }\n });\n return index;\n};\n\nconst formatPlateDate = (plateDate: string) => {\n if (plateDate.includes('-')) {\n return plateDate.split('-')[0];\n }\n return plateDate;\n};\n\nexport const ConfirmacionCita = () => {\n const { formData, formInfo } = useSelector((state: OneFormState) => state);\n const { userIsAuthenticated } = formInfo;\n const { fields } = formData;\n const { tmk: tmkData, lssi: lssiData, userVehicles, matricula } = formData.fields;\n const dispatch = useDispatch();\n const { handleScreenChange, setShowPreviousStep } = useOneFormContext();\n const { getValues, register, triggerValidation } = useFormContext();\n const faContent = useFaContent();\n const isComerciales = useIsComerciales();\n const { kilometrosValues, millageValues } = getKilometrosInfo(isComerciales);\n\n const [fechaHora, setFechaHora] = useState('');\n const [cocheAlTaller, setCocheAlTaller] = useState(false);\n const [cocheSustitucion, setCocheSustitucion] = useState(false);\n\n const [showEditServicios, setShowEditServicios] = useState(false);\n const [showEditSobreVW, setShowEditSobreVW] = useState(false);\n const [showEditSobreTi, setShowEditSobreTi] = useState(false);\n\n const [inputValueMatricula, setInputValueMatricula] = useState('');\n const [errorMatricula, setErrorMatricula] = useState(false);\n const [irConOtroCoche, setIrConOtroCoche] = useState(false);\n\n const [lssi, setLssi] = useState(() => (lssiData ? lssiData : null));\n const [tmk, setTmk] = useState(() => (tmkData ? tmkData : null));\n const [lssiError, setLssiError] = useState(false);\n const [tmkError, setTmkError] = useState(false);\n\n const [preselectedDealerForm, setPreselectedDealerForm] = useState(false);\n const config = useFeatureAppConfig();\n\n const useLoggedJourney = false; // De momento no es necesario usar todas las funciones del journey logueado/no logueado, tan solo el fill de los datos\n\n useEffect(() => {\n if (config.trigger === 'cita-posventa-dealer') {\n setPreselectedDealerForm(true);\n } else {\n setPreselectedDealerForm(false);\n }\n }, []);\n\n //Layer confirmacion edicion:\n\n const layerManager = useFeatureServices()['layer-manager'] as LayerManagerV2;\n const store: Store = useStore();\n const env = useFeatureAppEnvironment();\n\n const handleEdit = (layerName: 'isMotivoLayer' | 'isTimeLayer' | 'isTallerLayer') => {\n const { steps } = formInfo;\n const stepNumber = getStepNumber(steps, layerName);\n\n handleScreenChange(stepNumber);\n dispatch({ type: 'UPDATE_STEP', payload: steps[stepNumber] });\n if (layerName !== 'isMotivoLayer') {\n dispatch({ type: 'SET_SHOW_CALENDAR_ON_LOAD', payload: layerName === 'isTimeLayer' });\n dispatch({ type: 'UPDATE_MULTISTEP_SCREENINDEX', payload: 1 });\n dispatch({ type: 'SET_NAVIGATION_MOVING_FORWARD', payload: false });\n\n setTimeout(() => {\n setShowPreviousStep(false);\n }, TIME_FOR_TRANSFORM + 200);\n }\n };\n\n const handleAreYouSureLayer = (layerName: string) => {\n const layer = layerManager.openFocusLayer(renderAreYouSureLayer, { layerName }, { size: FocusLayerSizeV2.A });\n return layer;\n };\n\n const renderAreYouSureLayer = (state: any, close: CloseHandleV2) => {\n return (\n \n {\n handleEdit(state.layerName);\n }}\n />\n \n );\n };\n //fin códgo layers\n\n const showLegales = () => userIsAuthenticated && useLoggedJourney && tmk && lssi;\n\n const getKmInitialValue = () => {\n if (fields.kilometros && Array.isArray(fields.kilometros)) {\n const indexOfMillage = millageValues.findIndex((e) => e[0] === fields.kilometros[0]);\n return indexOfMillage !== -1 ? kilometrosValues[indexOfMillage] : kilometrosValues[kilometrosValues.length - 2];\n } else {\n return kilometrosValues[kilometrosValues.length - 2];\n }\n };\n\n const [kilometros, setKilometros] = useState(getKmInitialValue());\n\n const CTAsSiNo = [{ label: 'Sí' }, { label: 'No' }];\n\n const [millageValue, setMillageValue] = useState(null);\n\n function updateKilometros(event: any) {\n const newMillVal = event.currentTarget.value;\n setKilometros(newMillVal);\n newMillVal ? setMillageValue(newMillVal) : setMillageValue(0);\n const newIndex = kilometrosValues?.findIndex((value) => value === event.target.value);\n if (newIndex !== -1) {\n const newValues = millageValues[newIndex];\n dispatch({ type: 'UPDATE_FIELDS', payload: { kilometros: newValues } });\n }\n }\n\n async function updateValues(showEdit: React.Dispatch>) {\n const values = getValues();\n const isValid = await triggerValidation();\n if (isValid) {\n dispatch({ type: 'UPDATE_FIELDS', payload: values });\n showEdit(false);\n }\n }\n\n // función para checkear que no se haya dejado ninguna sección editada sin guardar\n function checkNotSavedFields() {\n if (showEditServicios && !showEditSobreVW && !showEditSobreTi) {\n return 'en Servicios Adicionales';\n } else if (!showEditServicios && showEditSobreVW && !showEditSobreTi) {\n return 'en Sobre tu Volkswagen';\n } else if (!showEditServicios && !showEditSobreVW && showEditSobreTi) {\n return 'en Sobre ti';\n } else if (\n (showEditServicios && showEditSobreVW && !showEditSobreTi) ||\n (showEditServicios && showEditSobreVW && showEditSobreTi) ||\n (showEditServicios && !showEditSobreVW && showEditSobreTi) ||\n (!showEditServicios && showEditSobreVW && showEditSobreTi)\n ) {\n return '';\n } else {\n return null;\n }\n }\n\n useEffect(() => {\n if (inputValueMatricula === '' || inputValueMatricula.length > 10) {\n setErrorMatricula(true);\n } else {\n setErrorMatricula(false);\n }\n }, [inputValueMatricula]);\n\n useEffect(() => {\n if (lssi) {\n const values = { lssi: lssi };\n dispatch({ type: 'UPDATE_FIELDS', payload: values });\n setLssiError(false);\n }\n if (tmk) {\n const values = { tmk: tmk };\n dispatch({ type: 'UPDATE_FIELDS', payload: values });\n setTmkError(false);\n }\n }, [lssi, tmk]);\n\n useEffect(() => {\n dispatch({ type: 'UPDATE_FORM_ENDED', payload: true });\n\n const selectedSlot = fields.slot;\n let fromFormatted;\n\n if (fields.dealer.dmsInfo && fields.dealer.dmsInfo.dmsAvailable) {\n const momentSlot = weekDay_DayNumber_Month_Hour(selectedSlot.from);\n const capitalizedSlot =\n momentSlot.charAt(0).toUpperCase() +\n momentSlot.split(',')[0].slice(1) +\n ' de ' +\n momentSlot.split(',')[1].charAt(0).toLowerCase() +\n momentSlot.split(',')[1].slice(1);\n fromFormatted = capitalizedSlot.replace('-', ' a las ').replace(',', ' de ').concat('h');\n setFechaHora(fromFormatted);\n } else {\n const momentSlot = weekDay_DayNumber_Month(selectedSlot.from);\n const horarioTranslate = franjaHoraria.find((h) => h.code === selectedSlot.dayMoment.code);\n const capitalizedSlot =\n momentSlot.charAt(0).toUpperCase() +\n momentSlot.split(',')[0].slice(1) +\n ' de ' +\n momentSlot.split(',')[1].charAt(0).toLowerCase() +\n momentSlot.split(',')[1].slice(1);\n\n fromFormatted = capitalizedSlot.concat(horarioTranslate.name);\n setFechaHora(fromFormatted);\n }\n if (fields.cocheAlTaller !== null) {\n fields.cocheAlTaller === 'true' ? setCocheAlTaller(true) : setCocheAlTaller(false);\n }\n if (fields.cocheAlTaller !== null) {\n fields.cocheSustitucion === 'true' ? setCocheSustitucion(true) : setCocheSustitucion(false);\n }\n\n setShowPreviousStep(false);\n if (fields.kilometros || fields.kilometros === 0) {\n setMillageValue(fields.kilometros);\n }\n\n if (fields.matricula) setInputValueMatricula(fields.matricula);\n }, []);\n\n useEffect(() => {\n const values = { cocheAlTaller: cocheAlTaller ? 'true' : 'false' };\n dispatch({ type: 'UPDATE_FIELDS', payload: values });\n }, [cocheAlTaller]);\n\n useEffect(() => {\n const values = { cocheSustitucion: cocheSustitucion ? 'true' : 'false' };\n dispatch({ type: 'UPDATE_FIELDS', payload: values });\n }, [cocheSustitucion]);\n\n return (\n \n \n \n \n Así quedaría tu cita. ¿Quieres confirmarla?\n \n \n \n {faContent?.motivo ? null : }\n \n
    \n \n Fecha y hora\n \n {\n e.preventDefault();\n handleAreYouSureLayer('isTimeLayer');\n }}\n >\n Editar\n \n
    \n {fechaHora}\n
    \n \n
    \n \n Taller\n \n {preselectedDealerForm || !showCTAEditTaller(fields.formName) ? null : (\n {\n e.preventDefault();\n handleAreYouSureLayer('isTallerLayer');\n }}\n >\n Editar\n \n )}\n
    \n \n \n {fields.dealer.name}\n \n \n \n {fields.dealer.markerInfo.dealerInfo.address}, {fields.dealer.markerInfo.dealerInfo.zipCode}{' '}\n {fields.dealer.markerInfo.dealerInfo.city}\n \n {fields.assessor && fields.dealer.dmsInfo && fields.dealer.dmsInfo.dmsAvailable ? (\n \n Asesor {fields.assessor.name}\n \n ) : null}\n
    \n
    \n\n {isComerciales || fields.dealer?.dmsInfo && fields.dealer?.dmsInfo?.pickupCarServiceAvailabe ||\n fields.dealer?.dmsInfo && fields.dealer?.dmsInfo?.replacementCarServiceAvailable ? (\n \n
    \n \n Servicios adicionales\n \n {showEditServicios ? (\n {\n e.preventDefault();\n setShowEditServicios(false);\n }}\n size=\"small\"\n >\n Guardar\n \n ) : (\n {\n e.preventDefault();\n setShowEditServicios(!showEditServicios);\n }}\n >\n Editar\n \n )}\n
    \n {showEditServicios ? (\n \n
    \n {isComerciales || fields.dealer?.dmsInfo && fields.dealer?.dmsInfo?.replacementCarServiceAvailable ? (\n setCocheSustitucion(!cocheSustitucion)}\n defaultChecked={cocheSustitucion ? true : false}\n >\n Coche de sustitución\n \n ) : null}\n {isComerciales || fields.dealer?.dmsInfo && fields.dealer?.dmsInfo?.pickupCarServiceAvailabe ? (\n setCocheAlTaller(!cocheAlTaller)}\n defaultChecked={cocheAlTaller ? true : false}\n >\n Servicio de recogida y entrega\n \n ) : null}\n
    \n
    \n ) : (\n <>\n {isComerciales || fields.dealer?.dmsInfo && fields.dealer?.dmsInfo?.replacementCarServiceAvailable ? (\n \n Coche de sustitución: {cocheSustitucion ? 'Sí' : 'No'}\n \n ) : null}\n {isComerciales || fields.dealer?.dmsInfo && fields.dealer?.dmsInfo?.pickupCarServiceAvailabe ? (\n \n Servicio de recogida y entrega: {cocheAlTaller ? 'Sí' : 'No'}\n \n ) : null}\n \n )}\n
    \n ) : null}\n\n \n
    \n \n Sobre tu Volkswagen\n \n {showCTAEditVW(fields.formName) ? (\n showEditSobreVW ? (\n {\n e.preventDefault();\n updateValues(setShowEditSobreVW);\n setIrConOtroCoche(false);\n }}\n size=\"small\"\n >\n Guardar\n \n ) : (\n {\n e.preventDefault();\n setShowEditSobreVW(!showEditSobreVW);\n }}\n >\n Editar\n \n )\n ) : null}\n
    \n {showEditSobreVW ? (\n userVehicles && userIsAuthenticated && useLoggedJourney && !irConOtroCoche ? (\n <>\n
    \n {userVehicles.map((vehicle: VehiclesIdentityKit) => {\n return (\n \n }\n onClick={(e) => {\n e.preventDefault();\n dispatch({\n type: 'UPDATE_FIELDS',\n payload: {\n matricula: vehicle.matricula,\n kilometros: vehicle.kilometros,\n modelo: vehicle.modelo,\n },\n });\n }}\n checked={matricula === vehicle.matricula ? true : false}\n />\n \n );\n })}\n \n {\n e.preventDefault();\n setIrConOtroCoche(true);\n }}\n checked={false}\n />\n \n
    \n ;\n \n ) : (\n <>\n \n
    \n \n
    \n \n \n {\n event.preventDefault();\n updateKilometros(event);\n }}\n onClick={() => null}\n updateFields\n setOption={setKilometros}\n isRequired={true}\n />\n \n \n \n )\n ) : (\n <>\n \n {fields.countryPlate} {fields.matricula}\n \n Año {formatPlateDate(fields.anoMatriculacion)}\n {fields.modelo}\n {kilometros === 'No estoy seguro' ? null : kilometros}\n \n )}\n
    \n\n \n
    \n \n Sobre ti\n \n {showEditSobreTi ? (\n {\n e.preventDefault();\n updateValues(setShowEditSobreTi);\n }}\n size=\"small\"\n >\n Guardar\n \n ) : (\n {\n e.preventDefault();\n setShowEditSobreTi(!showEditSobreTi);\n }}\n >\n Editar\n \n )}\n
    \n {showEditSobreTi ? (\n \n \n \n \n \n \n \n \n \n \n
    \n \n
    \n
    \n \n
    \n \n ) : (\n <>\n \n {fields.name} {fields.surname} {fields.secondSurname}\n \n \n {fields.prefix} {fields.cellphone}\n \n {fields.email}\n \n )}\n
    \n\n {/* START Checks legales */}\n {showLegales() ? null : (\n <>\n
    \n \n
    \n {/* END Checks legales */}\n
    \n \n
    \n \n )}\n \n \n \n
    \n );\n};\n\nconst VehicleLabel = (props: { vehicle: VehiclesIdentityKit }) => {\n return (\n \n {props.vehicle.matricula}\n \n {props.vehicle.modelo} |{props.vehicle.kilometros}\n \n \n );\n};\n\nconst OperacionDiv = styled(MotivoCalculadora)<{ isLast: boolean }>`\n padding-bottom: ${(props) => (props.isLast ? '0px' : '16px')};\n`;\n\nconst OperacionesDiv = styled.div`\n padding-bottom: 24px;\n`;\n\nconst MotivoCita = ({ fields, handleAreYouSureLayer }: any) => {\n const [showOperacionesMantenimiento, setShowOperacionesMantenimiento] = useState(false);\n const faContent = useFaContent();\n\n const formatPvp = (pvp: string) => `${Number(pvp).toFixed(0)}€`;\n\n const renderMotivoCalculadora = () => {\n return (\n \n Presupuesto total\n {formatPvp(faContent?.quotePvp)}\n \n );\n };\n\n const renderOperacionesMantenimiento = () => {\n return (\n <>\n \n {faContent?.quoteOperations\n ? faContent?.quoteOperations.map((operation, indx) => {\n return (\n \n {operation.name}\n {formatPvp(operation.pvp)}\n \n );\n })\n : null}\n \n \n \n Presupuesto Total\n \n \n {formatPvp(faContent?.quotePvp)}\n \n \n \n );\n };\n\n return (\n \n
    \n \n {isCalculadoraForm(fields.formName) ? 'Operaciones de mantenimiento' : 'Motivo de tu cita'}\n \n {showCTAEditMotivo(fields.formName) ? (\n {\n e.preventDefault();\n handleAreYouSureLayer('isMotivoLayer');\n }}\n >\n Editar\n \n ) : isCalculadoraForm(fields.formName) ? (\n : }\n emphasis=\"primary\"\n onClick={(e) => {\n e.preventDefault();\n setShowOperacionesMantenimiento(!showOperacionesMantenimiento);\n }}\n >\n {showOperacionesMantenimiento ? 'Cerrar' : 'Ver más'}\n \n ) : null}\n
    \n {isCalculadoraForm(fields.formName) ? (\n showOperacionesMantenimiento ? null : (\n renderMotivoCalculadora()\n )\n ) : (\n \n {fields.motivoLabel ? fields.motivoLabel : fields.motivo ? fields.motivo : 'Revisión de mantenimiento'}\n \n )}\n {showOperacionesMantenimiento ? renderOperacionesMantenimiento() : null}\n
    \n );\n};\n","import {\n Breakpoints,\n Container,\n ContainerGutter,\n ContainerWrap,\n Layout,\n Spinner,\n styled,\n Text,\n} from '@volkswagen-onehub/components-core';\nimport React from 'react';\n\nconst Content = styled.div`\n background-color: white;\n padding: 44px 31px;\n flex: auto;\n text-align: center;\n width: 100%;\n @media screen and (min-width: 560px) {\n padding: 52px 46px;\n }\n @media screen and (min-width: 960px) {\n padding: var(--size-grid001);\n }\n`;\n\ninterface loadingComponentProps {\n copy?: string;\n}\n\nexport function LoadingLayer(props: loadingComponentProps) {\n return (\n \n \n \n );\n}\n\n\n\nfunction LoadingComponent(props: loadingComponentProps) {\n\n return (\n \n \n \n {\n props.copy ?(\n {props.copy}\n ) : (\n Confirmando tu cita\n ) \n }\n \n \n );\n}\n","import {\n Breakpoints,\n Container,\n ContainerPadding,\n ContainerWrap,\n CTA,\n Layout,\n Text,\n TextAlignment,\n TextAppearance,\n ContainerGutter,\n} from '@volkswagen-onehub/components-core';\nimport { PaddingWrapper } from 'src/components';\nimport React from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { isGooglePlace, Suggest, Suggestion } from 'src/feature-app';\nimport { useLocateUser } from 'src/feature-app/hooks';\nimport { Installation, isDealerData } from 'src/types';\n\ninterface LocateUserProps {\n isFiltrosSuggest?: boolean;\n}\n\nexport function LocateUser(props: LocateUserProps) {\n const { isFiltrosSuggest } = props;\n const { register } = useFormContext();\n const {\n value,\n setValue,\n suggestion,\n setSuggestion,\n icon,\n locationSuccess,\n setLocationSuccess,\n handleLocate,\n loading,\n locationDisabled,\n isLocating,\n onSuggestionSelectedFn,\n } = useLocateUser();\n\n const getSuggestionValue = (suggestion: Suggestion) => {\n if (!isGooglePlace(suggestion) && !isDealerData(suggestion)) {\n return (suggestion as Installation).TXT_V_Installation_Data_Name__c;\n } else {\n return suggestion.name;\n }\n };\n\n return (\n <>\n \n \n \n
    \n \n
    \n \n {\n e.preventDefault();\n if (!locationSuccess) handleLocate();\n }}\n disabled={loading ? true : false}\n size=\"small\"\n >\n Localiza mi posición actual\n \n {locationDisabled ? (\n
    \n \n Tu localización está deshabilitada\n \n
    \n ) : null}\n
    \n \n
    \n \n \n \n );\n}\n","import {\n Breakpoints,\n BreakpointWrapper,\n Container,\n ContainerPadding,\n Layout,\n Text,\n TextAlignment,\n TextAppearance,\n} from '@volkswagen-onehub/components-core';\nimport Axios, { AxiosResponse } from 'axios';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector, useStore } from 'react-redux';\nimport { appadapAppointmentCreate, getCarlinesCita } from 'src/bff';\nimport { getDealerKvps } from 'src/bff/api/get-dealer-kvps';\nimport {\n DetalleMotivo,\n Email,\n Kilometros,\n MatriculaYModelo,\n MultipleCTASelection,\n PantallaNombreApellido,\n Telefono,\n SelectExtendedList,\n} from 'src/components';\nimport {\n formatPrefix,\n getDeviceType,\n getTrackingCode,\n removeWhiteSpace,\n useFaContent,\n useOneFormContext,\n useGetWaidLitera,\n} from 'src/feature-app';\nimport { MapaCitaDealer, NewMapaCita } from 'src/forms/CitaPosventa/MapaCita';\nimport { OneElementTemplate, TwoElementsTemplate } from 'src/feature-app/Screen';\nimport { resetStepsScreenIndex, removeMultipleStepsAndResetScreenIndex } from 'src/forms/helpers/add-remove-steps';\nimport { AppadapResponse, DealerInfo, DmsInfo, FormDataGroup, FormInfo, OneFormState, Steps } from 'src/types';\nimport { NuevaCitaPosventaFormDefault, NuevaCitaPosventaFormLogged } from '..';\nimport { CitaFormDataFields } from '../types';\nimport { ConfirmacionCita } from './ConfirmacionCita';\nimport { CTAsSiNo, CTAsMotivo, CTAsMotivoDef } from 'src/feature-app/InputsValues/CTAsObjects';\nimport { getParamsForm } from 'src/feature-app/get-params-form';\nimport { Store } from 'redux';\nimport { appendJsonKey } from 'src/forms';\nimport { useIsComerciales, useGetBrand } from 'src/feature-app/hooks';\nimport { DealersData, FormDataFields } from 'src';\n\nexport enum CitaPosventaSteps {\n Motivo,\n MasInformacion,\n Mapa,\n NombreApellido,\n Matricula,\n Kilometros,\n Telefono,\n Email,\n CocheSustitucion,\n CocheAlTaller,\n Confirmacion,\n}\n\ninterface NuevaCitaPosventaFormProps {\n isCitaPosventaDealer?: boolean;\n isCitaPosventaEmbeddedCalculadora?: boolean;\n isCitaPosventaEmbeddedBonos?: boolean;\n isCitaPosventaEmbeddedBeneficios?: boolean;\n updatedFormData?: Partial;\n updatedFormInfo?: Partial;\n}\n\nconst spliceSteps = (steps: Steps[], step: string, stepName: string) => {\n if (step) {\n const index = steps.findIndex((step) => step.name === stepName);\n steps.splice(index, 1);\n return steps;\n }\n return steps;\n};\n\nfunction updateTitle(detalles: any): any {\n return (\n <>\n ¿Quieres contarnos algo más sobre {detalles ? detalles : 'el motivo de tu visita?'}?\n \n );\n}\n\nconst getFormName = (\n isCitaPosventaDealer: boolean,\n isCitaPosventaEmbeddedCalculadora: boolean,\n isCitaPosventaEmbeddedBonos: boolean,\n isCitaPosventaEmbeddedBeneficios: boolean\n) => {\n return isCitaPosventaDealer\n ? 'cita-posventa-dealer'\n : isCitaPosventaEmbeddedCalculadora\n ? 'cita-posventa-calculadora'\n : isCitaPosventaEmbeddedBonos\n ? 'cita-posventa-bono'\n : isCitaPosventaEmbeddedBeneficios\n ? 'cita-posventa-beneficios'\n : 'cita-posventa';\n};\n\nexport const NuevaCitaPosventaFormController = ({\n isCitaPosventaDealer,\n isCitaPosventaEmbeddedCalculadora,\n isCitaPosventaEmbeddedBonos,\n isCitaPosventaEmbeddedBeneficios,\n updatedFormData,\n}: NuevaCitaPosventaFormProps) => {\n const { initializeForm, nextScreenIndex } = useOneFormContext();\n const { formData, formInfo, dealersInfo } = useSelector((state: OneFormState) => state);\n const { motivo } = formData.fields;\n const { selectedDealer } = dealersInfo;\n const { userIsAuthenticated } = formInfo;\n const dispatch = useDispatch();\n const store: Store = useStore();\n const faContent = useFaContent();\n const [loaded, setLoaded] = useState(false);\n const [steps, setSteps] = useState([]);\n const [firstStep, setFirstStep] = useState(null);\n const [stepsHistory, setStepsHistory] = useState(null);\n const isComerciales = useIsComerciales();\n const groupBrand = useGetBrand();\n const waid = useGetWaidLitera();\n const useLoggedJourney = false; // De momento no es necesario usar todas las funciones del journey logueado/no logueado, tan solo el fill de los datos\n\n const CitaPosventaData: Partial = {\n headers: {\n DESC_BRAND: 'VW',\n DESC_CAMPAIGNBLOCK: '7011n000000Ajm0AAC',\n DESC_FORMOBJECTIVE: 'Call Me Now',\n DESC_ID_CAMPAIGN: '9. VW LEM',\n DESC_TOKEN: 'VW_DDB_FRM_CALL_ME',\n DESC_VN_VO: 'VN',\n DESC_GDPR_ADAPTED: 'true',\n ...updatedFormData?.headers,\n },\n fields: {\n formName: getFormName(\n isCitaPosventaDealer,\n isCitaPosventaEmbeddedCalculadora,\n isCitaPosventaEmbeddedBonos,\n isCitaPosventaEmbeddedBeneficios\n ),\n formType: 'servicerequest',\n pageCategory: 'Cita Posventa',\n ...updatedFormData?.fields,\n },\n };\n const [citaPosventaData, setCitaPosventaData] = useState(CitaPosventaData);\n\n // Lógica común a los formularios independientemente del estado del login.\n const getMotivoTitle = (): JSX.Element => {\n if (!formData.fields || !formData.fields.motivo)\n return (\n <>\n ¿Quieres contarnos algo más sobre el motivo de tu{' '}\n visita?\n \n );\n else {\n const selectedMotivo = CTAsMotivo.find((motivo) => motivo.value === formData.fields.motivo);\n const detalles = selectedMotivo ? selectedMotivo.detalles : 'string';\n return (\n <>\n ¿Quieres contarnos algo más sobre {detalles ? detalles : 'el motivo de tu visita?'}?\n \n );\n }\n };\n\n useEffect(() => {\n const selectedMotivo = CTAsMotivo.find((ctaMotivo) => ctaMotivo.value === motivo);\n\n if (selectedMotivo && formInfo?.steps) {\n const formSteps = formInfo.steps;\n\n const masInformacionIndex = formSteps.findIndex((step) => step.name === 'MasInformacion');\n\n if (masInformacionIndex !== -1) {\n formSteps[masInformacionIndex].title = updateTitle(selectedMotivo.detalles);\n }\n }\n }, [motivo]);\n\n const defaultSteps: Steps[] = [\n {\n title: (\n <>\n ¿Por qué motivo quieres{' '}\n \n visitarnos?*\n \n \n ),\n alternateTitle: (\n \n ¿Por qué motivo quieres{' '}\n \n visitarnos?*\n \n \n ),\n\n fields: (\n <>\n \n {nextScreenIndex !== null && nextScreenIndex === 1 ? null : (\n \n Selecciona la razón principal de tu visita.\n \n )}\n \n \n \n \n \n ),\n hidePreviousStep: false,\n isFirstStep: true,\n screenIndex: CitaPosventaSteps.Motivo,\n name: 'Motivo',\n outputs: ['motivo'],\n outputsText: ['motivo'],\n },\n {\n title: getMotivoTitle(),\n fields: } />,\n screenIndex: CitaPosventaSteps.MasInformacion,\n name: 'MasInformacion',\n outputs: ['masInformacion'],\n outputsText: ['masInformacion'],\n },\n {\n screenIndex: CitaPosventaSteps.Mapa,\n name: 'Mapa',\n multiStep: true,\n component: isCitaPosventaDealer ? : ,\n },\n {\n title: (\n <>\n Para poder preparar tu visita, necesitamos saber quién eres\n \n ),\n fields: (\n \n \n \n }\n />\n ),\n screenIndex: CitaPosventaSteps.NombreApellido,\n name: 'NombreApellido',\n outputs: ['name', 'surname', 'secondSurname'],\n outputsText: ['name', 'surname', 'secondSurname'],\n },\n {\n title: (\n <>\n Cuéntanos más sobre tu coche. ¿Qué matrícula tiene y qué modelo es?\n \n ),\n fields: (\n \n \n \n }\n />\n ),\n screenIndex: CitaPosventaSteps.Matricula,\n name: 'Matricula',\n outputs: ['modelo', 'matricula'],\n outputsText: ['modelo', 'con matrícula', 'matricula'],\n },\n {\n title: (\n <>\n Y, ¿cuántos kilómetros?\n *\n \n ),\n fields: ,\n screenIndex: CitaPosventaSteps.Kilometros,\n name: 'Kilometros',\n outputs: ['kilometros'],\n outputsText: ['kilometros'],\n },\n {\n title: (\n <>\n En caso de necesitar contactar contigo, ¿a qué número podemos llamarte?\n \n ),\n fields: } />,\n screenIndex: CitaPosventaSteps.Telefono,\n name: 'Telefono',\n outputs: ['cellphone'],\n outputsText: ['cellphone'],\n },\n\n {\n title: (\n <>\n Y, ¿a qué email te enviamos la confirmación y los datos de tu cita?\n \n ),\n fields: (\n \n \n \n }\n />\n ),\n screenIndex: CitaPosventaSteps.Email,\n name: 'Email',\n outputs: ['email'],\n outputsText: ['email'],\n },\n {\n title: (\n <>\n ¿Necesitarás otro coche mientras el tuyo está en el{' '}\n \n taller?\n *\n \n \n ),\n fields: (\n \n \n \n \n Coche de sustitución: desde 20€ al día o totalmente gratuito si tienes un Volkswagen\n con My Renting, eres de Volkswagen Long Drive o has sufrido una avería en el periodo de garantía de tu\n coche. Una vez seleccionado este servicio, un asesor te llamará para confirmar el precio final.\n \n \n \n }\n />\n ),\n screenIndex: CitaPosventaSteps.CocheSustitucion,\n name: 'CocheSustitucion',\n outputs: ['cocheSustitucion'],\n outputsText: ['cocheSustitucion', 'quiero otro coche'],\n trueOrFalseQuestion: true,\n },\n {\n title: (\n <>\n Y para facilitar tu visita,{' '}\n \n ¿llevamos tu coche al{' '}\n \n taller?*\n \n \n \n ),\n fields: (\n \n \n \n \n Recogida a domicilio: desde 10€ el trayecto solo en Madrid, Barcelona, Sevilla,\n Bilbao, Zaragoza y Valencia. Una vez seleccionado este servicio, un asesor te llamará para confirmar\n el precio final.\n \n \n \n }\n />\n ),\n screenIndex: CitaPosventaSteps.CocheAlTaller,\n name: 'CocheAlTaller',\n outputs: ['cocheAlTaller'],\n outputsText: ['cocheAlTaller', 'quiero servicio de recogida y entrega'],\n trueOrFalseQuestion: true,\n },\n {\n title: <>,\n fields: ,\n screenIndex: CitaPosventaSteps.Confirmacion,\n name: 'Confirmacion',\n isLastStep: true,\n hidePreviousStep: true,\n },\n ];\n\n const getLssiTmk = (value: string) => (value === 'PERMITE' ? 'PERMITIDO' : null);\n\n const getModelo = (fields: FormDataFields, carlines: SelectExtendedList[]) => {\n return fields.modeloList\n ? fields.modeloList\n : carlines?.length > 0 && fields.modelo\n ? carlines.find((carline) => carline.name === fields.modelo)\n : {\n code: null,\n key: null,\n name: null,\n };\n };\n\n const sendForm = async (): Promise => {\n return new Promise(async (resolve) => {\n const { formData, dealersInfo } = store.getState();\n const { fields } = formData;\n const { citaCarlines } = dealersInfo;\n const { dealer } = fields;\n const { tc, today, url, device } = getParamsForm();\n\n const { dmsInfo, markerInfo }: { dmsInfo: DmsInfo; markerInfo: DealerInfo } = dealer;\n const data: CitaFormDataFields = {\n group_brand: groupBrand,\n kvps: dealer.kvps,\n cod_instalacion: dealer.codInstalacion,\n appointment: {\n comments: fields.masInformacion,\n customer: {\n contactPhone: `${formatPrefix(fields.prefix)}${fields.cellphone}`,\n customerType: 'F',\n documentNumber: null,\n documentType: null, // Parametrizar [DNI,NIF,NIE] || null\n email: removeWhiteSpace(fields.email),\n gender: 'M', // Parametrizar [M,V]\n name: fields.name.trim(),\n owner: false,\n surname: fields.surname?.trim(),\n surname2: fields.secondSurname?.trim(),\n },\n vehicle: fields.vehicleForCalculadora\n ? fields.vehicleForCalculadora\n : {\n brand: groupBrand,\n frame: null,\n millage: Array.isArray(fields.kilometros) ? fields.kilometros[0] : fields.kilometros,\n modelVersion: null,\n modelYear: 0,\n plate: fields.matricula?.toUpperCase(),\n // countryPlate: fields.countryPlate,\n plateDate: `${fields.anoMatriculacion}-1-1 00:00:00`,\n tmaimg: null,\n model: getModelo(fields, citaCarlines),\n },\n dealer: {\n ...fields.appointmentDealer,\n },\n slot: {\n from: fields.slot.from,\n to: fields.slot.to,\n replacementCarServiceAvailable: fields.slot.replacementCarServiceAvailable,\n dayMoment: fields.slot.dayMoment,\n assessorCode: fields.slot.assessorCode,\n },\n assessor: {\n code: fields.assessor.code,\n name: fields.assessor.name,\n },\n intervention: {\n code: fields.motivo, // Parametrizar [NEUMATICOS, OTROS, MANTENIMIENTO, CARROCERIA, REPARACION, ACCESORIOS, EA189, PREITV, ITV]\n name: CTAsMotivo.find((ctaMotivo) => ctaMotivo.value === fields.motivo).label, // motivo literal\n },\n lopd: 'PERMITIDO',\n lssi: getLssiTmk(fields.lssi),\n pickupServiceRequired:\n typeof fields.cocheAlTaller === 'string' ? JSON.parse(fields.cocheAlTaller) : undefined,\n replacementCarServiceRequired:\n typeof fields.cocheSustitucion === 'string' ? JSON.parse(fields.cocheSustitucion) : undefined,\n status: 'P',\n tmk: getLssiTmk(fields.tmk),\n },\n survey: {\n dealer: {\n dmsInfo: dmsInfo,\n markerInfo: markerInfo,\n },\n deviceType: getDeviceType(),\n formId: `vw-oneform-${fields.formName}`,\n formVersion: `vw-oneform-${fields.formName}-${process.env.VERSION}`,\n tc: getTrackingCode(),\n url,\n urlOrigin: document.referrer || null,\n deepLink: fields.deepLink,\n budget: fields.budget,\n waid,\n },\n };\n\n let customFormData = new FormData();\n\n for (const key in data) {\n if (typeof data[key] === 'object') customFormData.append(key, JSON.stringify(data[key]));\n else customFormData.append(key, data[key]);\n }\n\n const result = await appadapAppointmentCreate(customFormData);\n\n if (result?.data?.status?.result === 'success') {\n dispatch({ type: 'SET_FORM_RESPONSE', payload: result.data });\n return resolve(true);\n } else if (!result?.data?.contentNDPS && dmsInfo?.dmsAvailable) {\n dispatch({ type: 'SET_SEND_DMS_FAILED', payload: true });\n resolve(false);\n } else {\n resolve(false);\n }\n });\n };\n\n const repeatKvpsRequest = async (kvps: string) => {\n const newSelectedDealer = await getDealerKvps(kvps);\n\n if (newSelectedDealer) {\n setCitaPosventaData({ ...citaPosventaData, fields: { ...citaPosventaData.fields, dealer: newSelectedDealer } });\n // CitaPosventaData.fields.dealer = newSelectedDealer;\n }\n };\n\n const getFinalSteps = (steps: Steps[], motivo: string, observaciones: string) => {\n let newSteps = [...steps];\n\n newSteps = spliceSteps(newSteps, motivo, 'Motivo');\n newSteps = spliceSteps(newSteps, observaciones, 'MasInformacion');\n\n const finalSteps = resetStepsScreenIndex(newSteps);\n\n return finalSteps;\n };\n\n /**\n * Dependiendo del journey que siga el usuario se empezará en una pantalla o en otra, pero hay que adaptar stepHistory para que aun así pueda volver hacia atrás.\n */\n const getFirstStepAndStepsHistory = (): { firstStep: Steps; stepsHistory: number[]; finalSteps: Steps[] } => {\n // Obtención de los parametros de la url\n let selectedMotivo: CTAsMotivoDef = null;\n let motivo: string;\n let observaciones = faContent?.observaciones;\n\n if (isCitaPosventaEmbeddedCalculadora) {\n const stepsWithoutMap = removeMultipleStepsAndResetScreenIndex(defaultSteps, [\n 'Motivo',\n 'MasInformacion',\n 'Matricula',\n 'Kilometros',\n ]);\n\n return { finalSteps: stepsWithoutMap, stepsHistory: [0], firstStep: stepsWithoutMap[0] };\n }\n\n if (isCitaPosventaEmbeddedBonos) {\n const stepsWithoutMap = removeMultipleStepsAndResetScreenIndex(defaultSteps, ['Motivo', 'MasInformacion']);\n\n return { finalSteps: stepsWithoutMap, stepsHistory: [0], firstStep: stepsWithoutMap[0] };\n }\n\n if (window && window.location) {\n const urlParams = new URLSearchParams(window.location.search);\n const motivo = urlParams.get('motivo');\n const dealer = urlParams.get('dealer');\n\n if (motivo) {\n selectedMotivo = CTAsMotivo.find((CTAmotivo) => {\n return CTAmotivo.value === motivo;\n });\n }\n if (dealer && selectedDealer) {\n // CitaPosventaData.fields.dealer = selectedDealer;\n setCitaPosventaData({ ...citaPosventaData, fields: { ...citaPosventaData.fields, dealer: selectedDealer } });\n } else if (dealer && !selectedDealer) {\n // En caso de que por algun motivo haya dealer pero no se haya cargado correctamente en el cms repetimos la request\n repeatKvpsRequest(dealer);\n }\n }\n\n motivo = faContent?.motivo ? faContent.motivo : motivo;\n const finalSteps = getFinalSteps(defaultSteps, motivo, observaciones);\n\n const defaultFirstStep = finalSteps[CitaPosventaSteps.Motivo];\n\n let firstStep = finalSteps.find((step: Steps) => {\n if (selectedMotivo && (!faContent || !faContent.motivo)) {\n return step.screenIndex === CitaPosventaSteps.MasInformacion;\n } else {\n return step.screenIndex === defaultFirstStep.screenIndex;\n }\n });\n\n firstStep = firstStep ? firstStep : defaultFirstStep;\n firstStep.isFirstStep = true;\n\n let stepsHistory = [0];\n if (firstStep.screenIndex === defaultFirstStep.screenIndex) {\n stepsHistory = [0];\n } else {\n stepsHistory = [0, firstStep.screenIndex];\n }\n\n const motivoData = faContent?.motivo ? faContent.motivo : selectedMotivo ? selectedMotivo.value : null;\n const masInformacionData = faContent?.observaciones ? faContent.observaciones : null;\n\n setCitaPosventaData({\n ...citaPosventaData,\n fields: { ...citaPosventaData.fields, motivo: motivoData, masInformacion: masInformacionData },\n });\n\n return { firstStep, stepsHistory, finalSteps };\n };\n\n const handleStepsOfCitaDealer = (steps: Steps[], dealer: DealersData) => {\n let newSteps = [...steps];\n\n if(isComerciales) {\n return;\n }\n\n if (!dealer.dmsInfo?.pickupCarServiceAvailabe) {\n newSteps = removeMultipleStepsAndResetScreenIndex(newSteps, ['CocheAlTaller']);\n }\n if (!dealer.dmsInfo?.replacementCarServiceAvailable) {\n newSteps = removeMultipleStepsAndResetScreenIndex(newSteps, ['CocheSustitucion']);\n }\n\n setSteps(newSteps);\n setFirstStep(newSteps[0]);\n setStepsHistory(stepsHistory);\n setLoaded(true);\n };\n\n const getSteps = (steps: Steps[]) => {\n if (isCitaPosventaDealer && selectedDealer) {\n handleStepsOfCitaDealer(defaultSteps, selectedDealer);\n return;\n }\n const { firstStep, stepsHistory, finalSteps } = getFirstStepAndStepsHistory();\n setSteps(finalSteps);\n setFirstStep(firstStep);\n setStepsHistory(stepsHistory);\n setLoaded(true);\n };\n\n useEffect(() => {\n getSteps(defaultSteps);\n getCarlinesCita(isComerciales).then((response) => {\n dispatch({ type: 'SET_CITA_CARLINES', payload: response });\n });\n }, []);\n\n return loaded ? (\n userIsAuthenticated && useLoggedJourney ? (\n \n ) : (\n \n )\n ) : null;\n};\n","import {\n Breakpoints,\n BreakpointWrapper,\n Container,\n ContainerGutter,\n ContainerHorizontalAlignment,\n ContainerPadding,\n ContainerVerticalAlignment,\n ContainerWrap,\n CTA,\n Layout,\n styled,\n Text,\n TextAlignment,\n TextAppearance,\n} from '@volkswagen-onehub/components-core';\nimport Axios from 'axios';\nimport FileDownload from 'js-file-download';\nimport React, { useEffect, useState } from 'react';\nimport { connect, useDispatch, useSelector } from 'react-redux';\nimport { getMolecularUrl } from 'src/bff';\nimport {\n useFeatureAppConfig,\n weekDay_DayNumber_Month,\n weekDay_DayNumber_Month_Hour,\n useTrackingManager,\n TrackingForm,\n} from 'src/feature-app';\nimport { RenderController } from 'src/feature-app/Screen';\nimport { DealersData, FormDataFields, FormInfo, OneFormState, Steps } from 'src/types';\nimport { keyframes } from 'styled-components';\n\nconst lineKeyframe = keyframes`\n 0% {\n transform: rotate(-360deg);\n }\n 80% {\n transform: rotate(45deg);\n }\n 100% {\n transform: rotate(0deg);\n }\n`;\n\nconst AnimatedCheckmark = styled.div`\n animation: ${lineKeyframe} 0.5s ease-in;\n`;\n\ninterface FieldProps {\n copyBook?: string;\n}\n\ninterface NDPSField {\n name: string;\n value: string;\n}\n\nfunction Fields(props: FieldProps) {\n const { formData, formInfo } = useSelector((state: OneFormState) => state);\n const { dealer }: { dealer?: DealersData } = formData.fields;\n const { pincode }: { pincode: string } = formInfo.formResponse.content;\n const config = useFeatureAppConfig();\n\n const handleGuardar = async () => {\n // console.log(formInfo, 'formInfo');\n const MOLECULAR_URL = getMolecularUrl();\n // const pincode: string = undefined;\n\n const response = await Axios.get(\n `${MOLECULAR_URL}/request-appadap-appointment-ics.php?group_brand=V&pincode=${pincode}`\n );\n\n FileDownload(response.data, 'cita.ics');\n };\n\n return (\n \n
    \n \n \n {props.copyBook}\n \n \n {dealer.dmsInfo.dmsAvailable ? (\n \n {\n e.preventDefault();\n handleGuardar();\n }}\n >\n Guárdala en tu calendario\n \n \n ) : null}\n
    \n \n );\n}\n\ninterface ThankYouProps {\n formData: FormDataFields;\n formInfo: FormInfo;\n}\n\nfunction ThankYouNuevaCita(props: ThankYouProps) {\n const { formData, formInfo } = props;\n const { formResponse } = formInfo;\n const [fechaHora, setFechaHora] = useState('');\n const [copyBook, setCopyBook] = useState('');\n\n const trackingManager = useTrackingManager();\n const dispatch = useDispatch();\n const getTrackingForm = (): TrackingForm => {\n let LeadID;\n if (\n formResponse &&\n formResponse.contentNDPS &&\n formResponse.contentNDPS.data &&\n formResponse.contentNDPS.data.fields\n ) {\n const leadField: NDPSField = formResponse.contentNDPS.data.fields.find(\n (field: NDPSField) => field.name === 'COD_LEAD_ID'\n );\n LeadID = leadField ? leadField.value : undefined;\n }\n return {\n LeadID,\n FormFields: undefined,\n };\n };\n\n useEffect(() => {\n dispatch({ type: 'SET_FORM_SUBMITTED', payload: true });\n\n const selectedSlot = formData.slot;\n const franjaHoraria = [\n { code: 'MANANA', name: ' por la mañana' },\n { code: 'MEDIODIA', name: ' al mediodía' },\n { code: 'TARDE', name: ' por la tarde' },\n ];\n let fromFormatted;\n\n if (formInfo.sendDmsFailed) {\n const momentSlot = weekDay_DayNumber_Month(selectedSlot.from);\n const formattedSlot =\n momentSlot.split(',')[0] +\n ' de ' +\n momentSlot.split(',')[1].charAt(0).toLowerCase() +\n momentSlot.split(',')[1].slice(1);\n const horarioTranslate = franjaHoraria.find((h) => h.code === selectedSlot.dayMoment.code);\n fromFormatted = formattedSlot.replace(',', ' de ').concat(horarioTranslate.name);\n setFechaHora(fromFormatted);\n } else {\n if (formData.dealer.dmsInfo.dmsAvailable) {\n const momentSlot = weekDay_DayNumber_Month_Hour(selectedSlot.from);\n const formattedSlot =\n momentSlot.split(',')[0] +\n ' de ' +\n momentSlot.split(',')[1].charAt(0).toLowerCase() +\n momentSlot.split(',')[1].slice(1);\n fromFormatted = formattedSlot.replace('-', ' a las ').concat('h');\n setFechaHora(fromFormatted);\n } else {\n const momentSlot = weekDay_DayNumber_Month(selectedSlot.from);\n const formattedSlot =\n momentSlot.split(',')[0] +\n ' de ' +\n momentSlot.split(',')[1].charAt(0).toLowerCase() +\n momentSlot.split(',')[1].slice(1);\n const horarioTranslate = franjaHoraria.find((h) => h.code === selectedSlot.dayMoment.code);\n fromFormatted = formattedSlot.replace(',', ' de ').concat(horarioTranslate.name);\n setFechaHora(fromFormatted);\n }\n }\n\n trackingManager.trackFormSubmissionSuccessMessageLoad(\n {\n contentId: undefined,\n },\n getTrackingForm()\n );\n }, []);\n\n useEffect(() => {\n const copyDms =\n 'Te acabamos de enviar un email con los detalles de tu cita para que los revises siempre que quieras.';\n const copySinDms =\n 'Tu asesor te llamará pronto para terminar de confirmar contigo los detalles de la cita. Te acabamos de enviar un email con toda la información.';\n\n if (formData.dealer.dmsInfo.dmsAvailable) {\n setCopyBook(copyDms);\n } else {\n setCopyBook(copySinDms);\n }\n }, []);\n\n const renderTitle = (dmsFailed: boolean) => {\n if (!dmsFailed && formData.dealer.dmsInfo.dmsAvailable) {\n return (\n <>\n \n \n Nos vemos el {fechaHora} en{' '}\n {formData.dealer.name}\n \n \n \n \n Nos vemos el {fechaHora} en{' '}\n {formData.dealer.name}\n \n \n \n );\n } else {\n return (\n <>\n \n \n Hemos enviado tu consulta para el {fechaHora} en{' '}\n {formData.dealer.name}\n \n \n \n \n Hemos enviado tu consulta para el {fechaHora} en{' '}\n {formData.dealer.name}\n \n \n \n );\n }\n };\n\n const screen: Steps = {\n title: <>{renderTitle(formInfo.sendDmsFailed)},\n fields: ,\n };\n return (\n \n );\n}\n\nconst mapStateToProps = (state: OneFormState) => {\n return {\n formData: state.formData.fields,\n formInfo: state.formInfo,\n };\n};\n\nconst ConnectedComponent = connect(mapStateToProps)(ThankYouNuevaCita);\n\nexport { ConnectedComponent as ThankYouNuevaCita };\n","import React, { useEffect } from 'react';\nimport { FormController, useOneFormContext } from 'src/feature-app';\nimport { FormDataGroup, FormInfo, Steps } from 'src/types';\nimport { ThankYouNuevaCita } from './ThankYouNuevaCita';\n\ninterface NuevaCitaPosventaFormProps {\n isCitaPosventaDealer?: boolean;\n}\n\ninterface FormProps {\n defaultSteps: Steps[];\n sendForm: any;\n firstStep: Steps;\n CitaPosventaData: Partial;\n stepsHistory?: number[];\n}\n\nexport function NuevaCitaPosventaFormDefault({ defaultSteps, sendForm, firstStep, CitaPosventaData, stepsHistory }: FormProps) {\n const { initializeForm, nextScreenIndex } = useOneFormContext();\n\n useEffect(() => {\n const lastStep = defaultSteps[defaultSteps.length - 1];\n\n const CitaPosventaInfo: Partial = {\n formEnded: false,\n formStarted: true,\n sendFormCallback: sendForm,\n fullScreen: firstStep.fullScreen ? true : false,\n lastStep,\n numberOfScreens: defaultSteps.length,\n screenIndex: firstStep.screenIndex,\n step: firstStep,\n notALayer: false,\n formType: 'layer',\n formTheme: 'inverted',\n steps: defaultSteps,\n stepsHistory: stepsHistory ? stepsHistory : [],\n thankYouComponent: ,\n };\n\n initializeForm(CitaPosventaInfo, CitaPosventaData);\n }, []);\n\n return ;\n}\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector, useStore } from 'react-redux';\nimport {\n FormController,\n useFaContent,\n useFeatureAppConfig,\n useFeatureServices,\n useOneFormContext,\n} from 'src/feature-app';\nimport { VehiclesIdentityKit } from 'src/feature-service/es-oneform-core-feature-service/types';\nimport { removeStep, resetStepsScreenIndex } from 'src/forms/helpers/add-remove-steps';\nimport { FormDataGroup, FormInfo, OneFormState, Steps } from 'src/types';\nimport { ThankYouNuevaCita } from './ThankYouNuevaCita';\n\ninterface NuevaCitaPosventaFormProps {\n isCitaPosventaDealer?: boolean;\n}\n\ninterface FormProps {\n defaultSteps: Steps[];\n sendForm: any;\n firstStep: Steps;\n CitaPosventaData: Partial;\n}\n\nexport function NuevaCitaPosventaFormLogged({ defaultSteps, sendForm, firstStep, CitaPosventaData }: FormProps) {\n const { initializeForm, nextScreenIndex } = useOneFormContext();\n const { formData, formInfo, dealersInfo } = useSelector((state: OneFormState) => state);\n const dispatch = useDispatch();\n\n const oneFormService = useFeatureServices()['es:oneform-core'];\n const { person } = oneFormService.get();\n const config = useFeatureAppConfig();\n\n const userHasFavouriteDealer = (steps: Steps[]) => {\n if (person?.favouriteDealer) {\n const selectedDealer = dealersInfo.dealers?.find((dealer) => dealer.kvps === person.favouriteDealer);\n if (selectedDealer) {\n // Sobreescribir el selected dealer en el caso de cita posventa da problemas a la hora de cargar el calendario.\n if (config.trigger !== 'cita-posventa-dealer') {\n dispatch({ type: 'SET_SELECTED_DEALER', payload: selectedDealer });\n dispatch({ type: 'UPDATE_SUGGESTION', payload: selectedDealer });\n }\n dispatch({ type: 'SET_FAVOURITE_DEALER', payload: selectedDealer });\n dispatch({ type: 'SET_SHOW_CALENDAR_ON_LOAD', payload: true });\n }\n }\n\n return steps;\n };\n const userHasPersonalData = (steps: Steps[]) => {\n let personalDataSteps = [...steps];\n\n if (person?.name && person?.surname) {\n personalDataSteps = removeStep(personalDataSteps, 'NombreApellido');\n }\n if (person?.cellphone) {\n personalDataSteps = removeStep(personalDataSteps, 'Telefono');\n }\n personalDataSteps = removeStep(personalDataSteps, 'Email');\n personalDataSteps = resetStepsScreenIndex(personalDataSteps);\n return personalDataSteps;\n };\n\n const userHasVehicleData = (steps: Steps[]) => {\n let vehicleDataSteps = [...steps];\n\n if (person?.userVehicles && person?.userVehicles.length > 0) {\n const { userVehicles } = person;\n let mainVehicle: VehiclesIdentityKit;\n if (userVehicles.length === 1) {\n mainVehicle = userVehicles[0];\n } else {\n mainVehicle = userVehicles.find((vehicle) => vehicle.isMainVehicle);\n }\n\n dispatch({\n type: 'UPDATE_FIELDS',\n payload: { matricula: mainVehicle.matricula, kilometros: mainVehicle.kilometros, modelo: mainVehicle.modelo },\n });\n\n // Consultar si se eliminan las páginas en caso de que falte algún dato (año de matriculación no parece estar disponible desde identity kit)\n if (mainVehicle.matricula && mainVehicle.modelo && mainVehicle.anoMatriculacion) {\n vehicleDataSteps = removeStep(vehicleDataSteps, 'Matricula');\n }\n if (mainVehicle.kilometros) {\n vehicleDataSteps = removeStep(vehicleDataSteps, 'Kilometros');\n }\n\n vehicleDataSteps = resetStepsScreenIndex(vehicleDataSteps);\n }\n return vehicleDataSteps;\n };\n\n const getLoggedSteps = (steps: Steps[]) => {\n let finalSteps = [...steps];\n finalSteps = userHasFavouriteDealer(finalSteps);\n finalSteps = userHasPersonalData(finalSteps);\n finalSteps = userHasVehicleData(finalSteps);\n\n return finalSteps;\n };\n\n useEffect(() => {\n const finalSteps = getLoggedSteps(defaultSteps);\n\n const lastStep = finalSteps[finalSteps.length - 1];\n\n const CitaPosventaInfo: Partial = {\n formEnded: false,\n formStarted: true,\n sendFormCallback: sendForm,\n fullScreen: firstStep.fullScreen ? true : false,\n lastStep,\n numberOfScreens: defaultSteps.length,\n screenIndex: firstStep.screenIndex,\n step: firstStep,\n steps: finalSteps,\n notALayer: false,\n formType: 'layer',\n stepsHistory: [],\n thankYouComponent: ,\n };\n\n initializeForm(CitaPosventaInfo, CitaPosventaData);\n }, []);\n\n return ;\n}\n","import {\n Breakpoints,\n BreakpointWrapper,\n Container,\n ContainerGutter,\n ContainerHorizontalAlignment,\n ContainerPadding,\n ContainerWrap,\n CTA,\n Spinner,\n styled,\n Text,\n TextAlignment,\n TextAppearance,\n} from '@volkswagen-onehub/components-core';\nimport { CloseHandleV2 } from '@volkswagen-onehub/layer-manager';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport {\n getFranjaAndDayFrom,\n isNull,\n weekDay_DayNumber_De_Month,\n year_MonthNumber_DayNumber,\n getToAndFromForCheckCita,\n} from 'src/feature-app';\nimport { useTrackingManager } from 'src/feature-app/hooks/use-tracking-manager';\nimport {\n Assessors,\n Availability,\n CalendarSlot,\n DealersData,\n Horario as HorarioType,\n OneFormState,\n Points,\n Slot,\n SlotsTime,\n} from 'src/types';\nimport { getEarliestSlot } from 'src/feature-app/NewMap/sort-points';\nimport { Close } from '@volkswagen-onehub/icons-core';\n\nconst ZIndexLayer = styled.div`\n z-index: 25;\n position: relative;\n`;\n\nconst Content = styled.div`\n background-color: white;\n position: relative;\n padding: 44px 31px;\n flex: auto;\n text-align: center;\n width: 100%;\n @media screen and (min-width: 560px) {\n padding: 52px 46px;\n }\n @media screen and (min-width: 960px) {\n padding: var(--size-grid001);\n }\n`;\n\nconst CloseDiv = styled.div`\n position: absolute;\n top: var(--size-dynamic0050);\n right: var(--size-dynamic0050);\n cursor: pointer;\n`;\n\nconst CTAWrapper = styled.div`\n display: flex;\n flex-direction: column;\n padding-top: 44px;\n\n @media screen and (min-width: 960px) {\n flex-direction: row;\n align-items: center;\n }\n`;\ninterface LayerComponentProps {\n selectedPoint: Points;\n handleShowSlots: (point: Points) => string | null;\n handleDmsMapExit: (slot: CalendarSlot, point: Points) => void;\n handleNoDmsMapExit: (franjaHoraria: string, day: string, point: Points) => void;\n getAvailability: (dealer: DealersData, start: number, end: number) => Promise;\n // handleAvailability: (a: Availability, d: DealersData) => void;\n closeLayerCallback?: CloseHandleV2;\n // waitForNextStep: any;\n handleShowCalendarOnClick: (point: Points) => void;\n}\n\nexport function ReservaCitaLayer(props: LayerComponentProps) {\n return (\n \n \n \n );\n}\n\ninterface SlotHorario {\n from: number;\n to: number;\n}\n\nfunction ReservaCita(props: LayerComponentProps) {\n const {\n selectedPoint,\n handleShowSlots,\n handleDmsMapExit,\n handleNoDmsMapExit,\n getAvailability,\n // handleAvailability,\n closeLayerCallback,\n // waitForNextStep\n handleShowCalendarOnClick,\n } = props;\n\n const trackingManager = useTrackingManager();\n const [assessorName, setAssessorName] = useState('');\n\n const { dealer } = selectedPoint.properties;\n const { motivo, horario, motivoLabel }: { motivo: string; motivoLabel: string; horario: HorarioType } = useSelector(\n (state: OneFormState) => state.formData.fields\n );\n const { name, address, city, zipCode } = dealer.markerInfo.dealerInfo;\n\n const [loading, setLoading] = useState(false);\n const [DMSError, setDMSError] = useState(false);\n const [slotNotAvailable, setSlotNotAvailable] = useState(false);\n const slotHorarioRef = useRef(null);\n\n useEffect(() => {\n checkSlot();\n if (selectedPoint) {\n getAssessorName();\n }\n }, []);\n\n const checkSlot = () => {\n const { slots } = dealer;\n let from: number;\n let to: number = null;\n if (!isNull(slots)) {\n from = getEarliestSlot(slots);\n }\n\n slotHorarioRef.current = { from, to };\n };\n\n const getAssessorName = () => {\n const { assessors } = dealer.dmsInfo;\n if (horario !== 'before' && dealer?.slots[horario]) {\n const assessorCode = dealer.slots[horario].assessorCode;\n const assessor = findAssessor(assessors, assessorCode);\n setAssessorName(assessor.name);\n } else {\n // Primero se comprueba si el dealer tiene disponibles slots en mañana, mediodía o tarde\n // y luego se comparan estos slots con el earliestSlot para seleccionarlo.\n const { slots } = selectedPoint.properties.dealer;\n const keys = Object.keys(slots) as SlotsTime[];\n keys.map((time: SlotsTime) => {\n if (slots[time] && selectedPoint.properties.earliestSlot === slots[time].from) {\n const slot: Slot = slots[time];\n const assessor = findAssessor(assessors, slot.assessorCode);\n setAssessorName(assessor.name);\n }\n });\n }\n };\n\n const findAssessor = (assessors: Assessors[], code: string) => {\n return assessors.find((assessor) => assessor.code === code);\n };\n\n const handleCitaDisponible = (slot: CalendarSlot, assessors: Assessors[]) => {\n setLoading(false);\n closeLayerCallback({}, {}, {});\n handleDmsMapExit(slot, selectedPoint);\n return;\n };\n\n const handleCitaNoDisponible = (availability: Availability) => {\n setLoading(false);\n if (availability?.content?.calendar) {\n setSlotNotAvailable(true);\n setDMSError(false);\n } else {\n const { franjaHoraria } = getFranjaAndDayFrom(slotHorarioRef.current.from);\n setDay(weekDay_DayNumber_De_Month(slotHorarioRef.current.from));\n setFranjaHoraria(franjaHoraria.toLowerCase());\n setDMSError(true);\n setSlotNotAvailable(false);\n }\n };\n\n //\n const [day, setDay] = useState(null);\n const [franjaHoraria, setFranjaHoraria] = useState(null);\n\n const continueWithoutDms = (from: number, point: Points) => {\n const { day, franjaHoraria } = getFranjaAndDayFrom(from);\n\n handleNoDmsMapExit(franjaHoraria, day, point);\n };\n\n const checkCita = async () => {\n setLoading(true);\n const { from, to } = getToAndFromForCheckCita(slotHorarioRef.current.from);\n\n const availability = await getAvailability(dealer, from, to);\n\n if (availability?.content?.calendar) {\n const fromFormatted = year_MonthNumber_DayNumber(slotHorarioRef.current.from);\n const selectedDay = availability.content.calendar.find((day) => day.date === fromFormatted);\n const assessors = dealer.dmsInfo.assessors;\n\n if (selectedDay) {\n const finalSlot = selectedDay.slots\n .map((slot) => {\n if (slot.from === slotHorarioRef.current.from) {\n return slot;\n }\n })\n .filter((a) => a !== undefined);\n\n finalSlot.length > 0 ? handleCitaDisponible(finalSlot[0], assessors) : handleCitaNoDisponible(availability);\n } else {\n handleCitaNoDisponible(availability);\n }\n } else {\n handleCitaNoDisponible(availability);\n }\n };\n\n return (\n <>\n {\n e.preventDefault();\n closeLayerCallback({}, {}, {});\n }}\n >\n \n \n \n {!loading && !slotNotAvailable && !DMSError ? (\n <>\n \n ¿Quieres reservar esta cita?\n \n \n
    \n \n Motivo de tu visita\n \n \n {motivoLabel ? motivoLabel : motivo ? motivo : 'Revisión de mantenimiento'}\n \n
    \n
    \n \n Fecha y hora\n \n \n {handleShowSlots(selectedPoint)}\n \n
    \n
    \n \n Taller\n \n \n {name}\n \n \n {address},
    {zipCode} {city}\n
    \n {assessorName ? (\n \n Asesor {assessorName}\n \n ) : null}\n
    \n \n \n \n {\n e.preventDefault();\n trackingManager.trackFormCTAClick(\n {\n contentId: 'Sí, quiero esta cita',\n },\n dealer\n );\n checkCita();\n }}\n stretchContent\n >\n Sí­, quiero esta cita\n \n
    \n {\n e.preventDefault();\n trackingManager.trackFormButtonClick(\n {\n contentId: 'Ver más horas',\n },\n dealer\n );\n handleShowCalendarOnClick(selectedPoint);\n closeLayerCallback({}, {}, {});\n }}\n stretchContent\n >\n Ver más horas\n \n \n \n {\n e.preventDefault();\n trackingManager.trackFormCTAClick(\n {\n contentId: 'Sí, quiero esta cita',\n },\n dealer\n );\n checkCita();\n }}\n >\n Sí, quiero esta cita\n \n
    \n {\n e.preventDefault();\n trackingManager.trackFormButtonClick(\n {\n contentId: 'Ver más horas',\n },\n dealer\n );\n handleShowCalendarOnClick(selectedPoint);\n closeLayerCallback({}, {}, {});\n }}\n >\n Ver más horas\n \n \n \n \n ) : null}\n\n {loading ? (\n <>\n \n Confirmando con la agenda del taller\n \n ) : null}\n {!loading && DMSError ? (\n <>\n \n \n No hemos podido confirmar tu cita para el{' '}\n {handleShowSlots(selectedPoint)}\n \n \n ¿Quieres continuar con el proceso y que {name} se\n ponga en contacto contigo para cerrar tu cita el {day} por la {franjaHoraria}?\n \n \n \n \n {\n e.preventDefault();\n trackingManager.trackFormCTAClick(\n {\n contentId: 'Continuar',\n },\n dealer\n );\n checkCita();\n }}\n stretchContent\n >\n Continuar\n \n
    \n {\n e.preventDefault();\n trackingManager.trackFormButtonClick(\n {\n contentId: 'Buscar una nueva cita',\n },\n dealer\n );\n closeLayerCallback({}, {}, {});\n }}\n stretchContent\n >\n Buscar una nueva cita\n \n \n \n {\n e.preventDefault();\n trackingManager.trackFormCTAClick(\n {\n contentId: 'Continuar',\n },\n dealer\n );\n continueWithoutDms(slotHorarioRef.current.from, selectedPoint);\n closeLayerCallback({}, {}, {});\n }}\n >\n Continuar\n \n
    \n {\n e.preventDefault();\n trackingManager.trackFormButtonClick(\n {\n contentId: 'Buscar una nueva cita',\n },\n dealer\n );\n closeLayerCallback({}, {}, {});\n }}\n >\n Buscar una nueva cita\n \n \n \n \n ) : null}\n {!loading && slotNotAvailable ? (\n \n Lamentablemente la cita seleccionada no está disponible\n {\n e.preventDefault();\n trackingManager.trackFormButtonClick(\n {\n contentId: 'Seguir buscando',\n },\n dealer\n );\n handleShowCalendarOnClick(selectedPoint);\n closeLayerCallback({}, {}, {});\n }}\n >\n Seguir buscando\n \n \n ) : null}\n \n \n );\n}\n","import {\n Breakpoints,\n BreakpointWrapper,\n Container,\n ContainerPadding,\n ContainerHorizontalAlignment,\n Layout,\n styled,\n Tabs,\n Text,\n TextAlignment,\n TextAppearance,\n CTA,\n TextColor,\n} from '@volkswagen-onehub/components-core';\nimport { getFirstAndLastDayOfMonth, isNull, useOneFormContext } from 'src/feature-app';\nimport { ArrowLeft } from 'src/icons-core-imports';\n\nimport React, { createRef, useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { DealerCard } from 'src/components';\nimport { SeleccionDealerTabs } from 'src/feature-app';\nimport { CloseComponent } from 'src/feature-app/Screen';\nimport { Availability, DealersData, OneFormState, Points, Center } from 'src/types';\n\ninterface SeleccionDealerProps {\n pointsByDistance: Points[];\n pointsByTime: Points[];\n // setShowMap: React.Dispatch>;\n setShowCards: React.Dispatch>;\n setLoading: React.Dispatch>;\n setSelectedPoint: React.Dispatch>;\n getAvailability: (dealer: DealersData, start: number, end: number) => Promise;\n selectedPoint: Points;\n\n handleShowSlots: (point: Points) => string | null;\n showAllCardsMobile: boolean;\n center: Center;\n handleReservaCitaLayer: (p: Points) => void;\n hideCards?: () => void;\n}\n\ninterface BoxProps {\n selected: boolean;\n oneCard: boolean;\n}\n\nconst GoBackWrapper = styled.div`\n padding-top: 24px;\n\n & button {\n color: #ffffff;\n }\n`;\n\nconst Box = styled.div`\n width: 100%;\n border: ${(props) => (props.selected ? '2px solid #FFFFFF' : '1px solid rgba(255,255,255,0.44)')};\n padding: 24px;\n margin-top: ${(props) => (props.oneCard ? '0' : '44px')};\n\n :hover {\n border: ${(props) => (props.selected ? '2px solid #FFFFFF' : '1px solid #4cc7f4')};\n }\n`;\nconst ScrollWrapper = styled.div`\n height: calc(100vh - 80px);\n overflow-y: auto;\n margin: auto;\n`;\n\nconst TabsWrapper = styled.div`\n width: 83vw;\n padding-top: 24px;\n height: 100%;\n\n @media all and (min-width: 960px) {\n width: 380px;\n overflow-y: auto;\n margin: auto;\n }\n ul {\n padding-left: 5px;\n }\n\n & > div {\n padding-bottom: 24px;\n }\n`;\n\nconst ArrowLeftWrapper = styled.div`\n padding: 24px 0px;\n\n & svg {\n fill: #ffffff;\n }\n`;\n\ninterface Ref {\n ref: React.RefObject;\n kvps: string;\n}\n\nexport function SeleccionDealer(props: SeleccionDealerProps) {\n const {\n pointsByDistance,\n pointsByTime,\n selectedPoint,\n setSelectedPoint,\n getAvailability,\n setLoading,\n handleShowSlots,\n handleReservaCitaLayer,\n center,\n hideCards,\n setShowCards,\n } = props;\n\n const { horario } = useSelector((state: OneFormState) => state.formData.fields);\n const { handleAreYouSureLayer } = useOneFormContext();\n\n const [defaultIndex, setDefaultIndex] = useState(0);\n const [selectedPoints, setSelectedPoints] = useState(null);\n\n const createRefs = (points: Points[]) => {\n const refs = [];\n const length = points.length;\n for (let ix = 0; ix < length; ix++) {\n let refObject: Ref = { ref: createRef(), kvps: points[ix].properties.dealer.kvps };\n refs.push(refObject);\n refObject = null;\n }\n return refs;\n };\n const [isTimeSelected, setIsTimeSelected] = useState(false);\n const [timeRefs, setTimeRefs] = useState(null);\n const [distanceRefs, setDistanceRefs] = useState(null);\n\n useEffect(() => {\n if (horario === 'before') {\n setIsTimeSelected(true);\n setDefaultIndex(1);\n }\n }, []);\n\n useEffect(() => {\n // setSelectedPoint(null);\n setTimeRefs(null);\n setDistanceRefs(null);\n\n const timeRefs = createRefs(pointsByTime);\n const distanceRefs = createRefs(pointsByDistance);\n setTimeRefs(timeRefs);\n setDistanceRefs(distanceRefs);\n }, [pointsByDistance]);\n\n useEffect(() => {\n setSelectedPoints(pointsByDistance); // Actualizar con el que está seleccionado.\n }, [selectedPoints]);\n\n const handleShowCalendarOnClick = async (point: Points) => {\n setSelectedPoint(point);\n setLoading(true);\n const { firstDayOfMonth, lastDayOfMonth } = getFirstAndLastDayOfMonth();\n const availability = await getAvailability(point.properties.dealer, firstDayOfMonth, lastDayOfMonth); // Devuelve el availability.\n setLoading(false);\n };\n\n const handleSeleccionarOnClick = (point: any) => {\n setSelectedPoint(point);\n handleReservaCitaLayer(point);\n };\n\n const renderPoints = (points: any, isTime?: boolean): JSX.Element => {\n return points.map((point: Points, i: number) => {\n const { kvps } = point.properties.dealer;\n const { cluster } = point.properties;\n const selected = selectedPoint && selectedPoint.properties.dealer.kvps === kvps ? true : false;\n\n if (selected && !cluster) {\n if (\n isTimeSelected &&\n timeRefs[i] &&\n timeRefs[i].ref &&\n timeRefs[i].ref.current &&\n timeRefs[i].kvps === selectedPoint.properties.dealer.kvps\n ) {\n timeRefs[i].ref.current.scrollIntoView({ block: 'center', behavior: 'smooth' });\n } else if (\n !isTimeSelected &&\n distanceRefs[i] &&\n distanceRefs[i].ref &&\n distanceRefs[i].ref.current &&\n distanceRefs[i].kvps === selectedPoint.properties.dealer.kvps\n ) {\n distanceRefs[i].ref.current.scrollIntoView({ block: 'center', behavior: 'smooth' });\n }\n }\n return (\n <>\n {\n if (!cluster && !isNull(timeRefs) && timeRefs.length > 0 && !isNull(ref) && isTime) {\n if (timeRefs[i] && timeRefs[i].ref) {\n timeRefs[i].ref.current = ref;\n }\n } else if (!cluster && !isNull(distanceRefs) && distanceRefs.length > 0 && !isNull(ref) && !isTime) {\n if (distanceRefs[i] && distanceRefs[i].ref) {\n distanceRefs[i].ref.current = ref;\n }\n }\n }}\n className=\"Box\"\n >\n \n \n \n );\n });\n };\n\n return selectedPoints ? (\n <>\n \n {props.showAllCardsMobile ? (\n \n \n \n }\n onClick={(e) => {\n e.preventDefault();\n hideCards();\n }}\n >\n \n Ir al mapa\n \n \n \n \n Ordenar por:\n \n \n {/* \n \n Ordenar por:\n \n {\n setDefaultIndex(index);\n setIsTimeSelected(!isTimeSelected);\n }}\n defaultIndex={defaultIndex}\n >\n {{\n title: 'Ubicación',\n content: renderPoints(pointsByDistance, false),\n key: 'ubicacion',\n }}\n {{ title: 'Horario', content: renderPoints(pointsByTime, true), key: 'horario' }}\n \n */}\n \n \n ) : null}\n \n\n \n \n \n \n \n \n Ordenar por:\n \n \n \n \n \n \n \n \n \n ) : null;\n}\n","// The minimum length of the national significant number.\r\nexport const MIN_LENGTH_FOR_NSN = 2\r\n\r\n// The ITU says the maximum length should be 15,\r\n// but one can find longer numbers in Germany.\r\nexport const MAX_LENGTH_FOR_NSN = 17\r\n\r\n// The maximum length of the country calling code.\r\nexport const MAX_LENGTH_COUNTRY_CODE = 3\r\n\r\n// Digits accepted in phone numbers\r\n// (ascii, fullwidth, arabic-indic, and eastern arabic digits).\r\nexport const VALID_DIGITS = '0-9\\uFF10-\\uFF19\\u0660-\\u0669\\u06F0-\\u06F9'\r\n\r\n// `DASHES` will be right after the opening square bracket of the \"character class\"\r\nconst DASHES = '-\\u2010-\\u2015\\u2212\\u30FC\\uFF0D'\r\nconst SLASHES = '\\uFF0F/'\r\nconst DOTS = '\\uFF0E.'\r\nexport const WHITESPACE = ' \\u00A0\\u00AD\\u200B\\u2060\\u3000'\r\nconst BRACKETS = '()\\uFF08\\uFF09\\uFF3B\\uFF3D\\\\[\\\\]'\r\n// export const OPENING_BRACKETS = '(\\uFF08\\uFF3B\\\\\\['\r\nconst TILDES = '~\\u2053\\u223C\\uFF5E'\r\n\r\n// Regular expression of acceptable punctuation found in phone numbers. This\r\n// excludes punctuation found as a leading character only. This consists of dash\r\n// characters, white space characters, full stops, slashes, square brackets,\r\n// parentheses and tildes. Full-width variants are also present.\r\nexport const VALID_PUNCTUATION = `${DASHES}${SLASHES}${DOTS}${WHITESPACE}${BRACKETS}${TILDES}`\r\n\r\nexport const PLUS_CHARS = '+\\uFF0B'\r\n// const LEADING_PLUS_CHARS_PATTERN = new RegExp('^[' + PLUS_CHARS + ']+')","import { css } from '../theme-provider';\nexport var InputAppearance;\n(function (InputAppearance) {\n InputAppearance[InputAppearance[\"Default\"] = 0] = \"Default\";\n InputAppearance[InputAppearance[\"Disabled\"] = 1] = \"Disabled\";\n InputAppearance[InputAppearance[\"Error\"] = 2] = \"Error\";\n InputAppearance[InputAppearance[\"Success\"] = 3] = \"Success\";\n InputAppearance[InputAppearance[\"ReadOnly\"] = 4] = \"ReadOnly\";\n})(InputAppearance || (InputAppearance = {}));\nexport const getMainColor = css `${({ theme, appearance }) => {\n switch (appearance) {\n case InputAppearance.ReadOnly:\n return theme.interaction.recipe100.default;\n case InputAppearance.Disabled:\n return theme.interaction.recipe500.disabled;\n default:\n return theme.interaction.recipe500.default;\n }\n}}`;\nexport const getLabelColor = css `${({ theme, appearance }) => {\n switch (appearance) {\n case InputAppearance.ReadOnly:\n return theme.interaction.recipe100.default;\n case InputAppearance.Disabled:\n return theme.interaction.recipe500.disabled;\n default:\n return theme.interaction.recipe450.default;\n }\n}}`;\nexport const getAuxillaryColor = css `${({ theme, appearance }) => {\n switch (appearance) {\n case InputAppearance.Error:\n return theme.interaction.recipe360.default;\n case InputAppearance.Success:\n return theme.interaction.recipe350.default;\n case InputAppearance.Disabled:\n return theme.interaction.recipe200.disabled;\n default:\n return theme.interaction.recipe200.default;\n }\n}}`;\nexport const getAuxillaryTextColor = css `${({ theme, appearance }) => {\n switch (appearance) {\n case InputAppearance.Disabled:\n return theme.interaction.recipe200.disabled;\n case InputAppearance.Error:\n case InputAppearance.Success:\n default:\n return theme.interaction.recipe200.default;\n }\n}}`;\nexport const getNotificationColor = css `${({ theme, appearance }) => {\n switch (appearance) {\n case InputAppearance.Error:\n return theme.interaction.recipe360.default;\n case InputAppearance.Success:\n return theme.interaction.recipe350.default;\n default:\n return theme.interaction.recipe370.default;\n }\n}}`;\n","import { PincodeResponseOk } from 'src/bff';\nimport { DpsData } from 'src/feature-service/es-oneform-core-feature-service/types';\nimport { IdLead, IdOrder, IdPerson, IdVehicle } from 'src/types';\n\nexport const createPincodeEntity = (dpsData: DpsData, stringToFind: 'LEAD' | 'PERSON' | 'ORDER' | 'VEHICLE' | 'DEALER') => {\n if (!dpsData.pincode?.pincodeResponse) {\n return null;\n }\n const atts = (dpsData.pincode?.pincodeResponse?.content as PincodeResponseOk[]).find((att: any) =>\n att.attributes.find((att: any) => att.name === 'ID' && att.value === stringToFind)\n );\n\n if (!atts) {\n return null;\n }\n\n const id: IdLead | IdPerson | IdOrder | IdVehicle = atts.attributes.reduce((obj: any, att: any) => {\n const key = Object.values(att)[0];\n const value = Object.values(att)[1];\n obj[key] = value;\n return obj;\n }, {});\n\n return id;\n};\n","// Copy-pasted from:\r\n// https://github.com/substack/semver-compare/blob/master/index.js\r\n//\r\n// Inlining this function because some users reported issues with\r\n// importing from `semver-compare` in a browser with ES6 \"native\" modules.\r\n//\r\n// Fixes `semver-compare` not being able to compare versions with alpha/beta/etc \"tags\".\r\n// https://github.com/catamphetamine/libphonenumber-js/issues/381\r\nexport default function(a, b) {\r\n a = a.split('-')\r\n b = b.split('-')\r\n var pa = a[0].split('.')\r\n var pb = b[0].split('.')\r\n for (var i = 0; i < 3; i++) {\r\n var na = Number(pa[i])\r\n var nb = Number(pb[i])\r\n if (na > nb) return 1\r\n if (nb > na) return -1\r\n if (!isNaN(na) && isNaN(nb)) return 1\r\n if (isNaN(na) && !isNaN(nb)) return -1\r\n }\r\n if (a[1] && b[1]) {\r\n return a[1] > b[1] ? 1 : (a[1] < b[1] ? -1 : 0)\r\n }\r\n return !a[1] && b[1] ? 1 : (a[1] && !b[1] ? -1 : 0)\r\n}","import compare from './tools/semver-compare'\r\n\r\n// Added \"possibleLengths\" and renamed\r\n// \"country_phone_code_to_countries\" to \"country_calling_codes\".\r\nconst V2 = '1.0.18'\r\n\r\n// Added \"idd_prefix\" and \"default_idd_prefix\".\r\nconst V3 = '1.2.0'\r\n\r\n// Moved `001` country code to \"nonGeographic\" section of metadata.\r\nconst V4 = '1.7.35'\r\n\r\nconst DEFAULT_EXT_PREFIX = ' ext. '\r\n\r\nconst CALLING_CODE_REG_EXP = /^\\d+$/\r\n\r\n/**\r\n * See: https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md\r\n */\r\nexport default class Metadata {\r\n\tconstructor(metadata) {\r\n\t\tvalidateMetadata(metadata)\r\n\t\tthis.metadata = metadata\r\n\t\tsetVersion.call(this, metadata)\r\n\t}\r\n\r\n\tgetCountries() {\r\n\t\treturn Object.keys(this.metadata.countries).filter(_ => _ !== '001')\r\n\t}\r\n\r\n\tgetCountryMetadata(countryCode) {\r\n\t\treturn this.metadata.countries[countryCode]\r\n\t}\r\n\r\n\tnonGeographic() {\r\n\t\tif (this.v1 || this.v2 || this.v3) return\r\n\t\t// `nonGeographical` was a typo.\r\n\t\t// It's present in metadata generated from `1.7.35` to `1.7.37`.\r\n\t\treturn this.metadata.nonGeographic || this.metadata.nonGeographical\r\n\t}\r\n\r\n\thasCountry(country) {\r\n\t\treturn this.getCountryMetadata(country) !== undefined\r\n\t}\r\n\r\n\thasCallingCode(callingCode) {\r\n\t\tif (this.getCountryCodesForCallingCode(callingCode)) {\r\n\t\t\treturn true\r\n\t\t}\r\n\t\tif (this.nonGeographic()) {\r\n\t\t\tif (this.nonGeographic()[callingCode]) {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// A hacky workaround for old custom metadata (generated before V4).\r\n\t\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\r\n\t\t\tif (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisNonGeographicCallingCode(callingCode) {\r\n\t\tif (this.nonGeographic()) {\r\n\t\t\treturn this.nonGeographic()[callingCode] ? true : false\r\n\t\t} else {\r\n\t\t\treturn this.getCountryCodesForCallingCode(callingCode) ? false : true\r\n\t\t}\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tcountry(countryCode) {\r\n\t\treturn this.selectNumberingPlan(countryCode)\r\n\t}\r\n\r\n\tselectNumberingPlan(countryCode, callingCode) {\r\n\t\t// Supports just passing `callingCode` as the first argument.\r\n\t\tif (countryCode && CALLING_CODE_REG_EXP.test(countryCode)) {\r\n\t\t\tcallingCode = countryCode\r\n\t\t\tcountryCode = null\r\n\t\t}\r\n\t\tif (countryCode && countryCode !== '001') {\r\n\t\t\tif (!this.hasCountry(countryCode)) {\r\n\t\t\t\tthrow new Error(`Unknown country: ${countryCode}`)\r\n\t\t\t}\r\n\t\t\tthis.numberingPlan = new NumberingPlan(this.getCountryMetadata(countryCode), this)\r\n\t\t} else if (callingCode) {\r\n\t\t\tif (!this.hasCallingCode(callingCode)) {\r\n\t\t\t\tthrow new Error(`Unknown calling code: ${callingCode}`)\r\n\t\t\t}\r\n\t\t\tthis.numberingPlan = new NumberingPlan(this.getNumberingPlanMetadata(callingCode), this)\r\n\t\t} else {\r\n\t\t\tthis.numberingPlan = undefined\r\n\t\t}\r\n\t\treturn this\r\n\t}\r\n\r\n\tgetCountryCodesForCallingCode(callingCode) {\r\n\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\r\n\t\tif (countryCodes) {\r\n\t\t\t// Metadata before V4 included \"non-geographic entity\" calling codes\r\n\t\t\t// inside `country_calling_codes` (for example, `\"881\":[\"001\"]`).\r\n\t\t\t// Now the semantics of `country_calling_codes` has changed:\r\n\t\t\t// it's specifically for \"countries\" now.\r\n\t\t\t// Older versions of custom metadata will simply skip parsing\r\n\t\t\t// \"non-geographic entity\" phone numbers with new versions\r\n\t\t\t// of this library: it's not considered a bug,\r\n\t\t\t// because such numbers are extremely rare,\r\n\t\t\t// and developers extremely rarely use custom metadata.\r\n\t\t\tif (countryCodes.length === 1 && countryCodes[0].length === 3) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\treturn countryCodes\r\n\t\t}\r\n\t}\r\n\r\n\tgetCountryCodeForCallingCode(callingCode) {\r\n\t\tconst countryCodes = this.getCountryCodesForCallingCode(callingCode)\r\n\t\tif (countryCodes) {\r\n\t\t\treturn countryCodes[0]\r\n\t\t}\r\n\t}\r\n\r\n\tgetNumberingPlanMetadata(callingCode) {\r\n\t\tconst countryCode = this.getCountryCodeForCallingCode(callingCode)\r\n\t\tif (countryCode) {\r\n\t\t\treturn this.getCountryMetadata(countryCode)\r\n\t\t}\r\n\t\tif (this.nonGeographic()) {\r\n\t\t\tconst metadata = this.nonGeographic()[callingCode]\r\n\t\t\tif (metadata) {\r\n\t\t\t\treturn metadata\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// A hacky workaround for old custom metadata (generated before V4).\r\n\t\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\r\n\t\t\tif (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\r\n\t\t\t\treturn this.metadata.countries['001']\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tcountryCallingCode() {\r\n\t\treturn this.numberingPlan.callingCode()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tIDDPrefix() {\r\n\t\treturn this.numberingPlan.IDDPrefix()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tdefaultIDDPrefix() {\r\n\t\treturn this.numberingPlan.defaultIDDPrefix()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tnationalNumberPattern() {\r\n\t\treturn this.numberingPlan.nationalNumberPattern()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tpossibleLengths() {\r\n\t\treturn this.numberingPlan.possibleLengths()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tformats() {\r\n\t\treturn this.numberingPlan.formats()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tnationalPrefixForParsing() {\r\n\t\treturn this.numberingPlan.nationalPrefixForParsing()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tnationalPrefixTransformRule() {\r\n\t\treturn this.numberingPlan.nationalPrefixTransformRule()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tleadingDigits() {\r\n\t\treturn this.numberingPlan.leadingDigits()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\thasTypes() {\r\n\t\treturn this.numberingPlan.hasTypes()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\ttype(type) {\r\n\t\treturn this.numberingPlan.type(type)\r\n\t}\r\n\r\n\t// Deprecated.\r\n\text() {\r\n\t\treturn this.numberingPlan.ext()\r\n\t}\r\n\r\n\tcountryCallingCodes() {\r\n\t\tif (this.v1) return this.metadata.country_phone_code_to_countries\r\n\t\treturn this.metadata.country_calling_codes\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tchooseCountryByCountryCallingCode(callingCode) {\r\n\t\treturn this.selectNumberingPlan(callingCode)\r\n\t}\r\n\r\n\thasSelectedNumberingPlan() {\r\n\t\treturn this.numberingPlan !== undefined\r\n\t}\r\n}\r\n\r\nclass NumberingPlan {\r\n\tconstructor(metadata, globalMetadataObject) {\r\n\t\tthis.globalMetadataObject = globalMetadataObject\r\n\t\tthis.metadata = metadata\r\n\t\tsetVersion.call(this, globalMetadataObject.metadata)\r\n\t}\r\n\r\n\tcallingCode() {\r\n\t\treturn this.metadata[0]\r\n\t}\r\n\r\n\t// Formatting information for regions which share\r\n\t// a country calling code is contained by only one region\r\n\t// for performance reasons. For example, for NANPA region\r\n\t// (\"North American Numbering Plan Administration\",\r\n\t// which includes USA, Canada, Cayman Islands, Bahamas, etc)\r\n\t// it will be contained in the metadata for `US`.\r\n\tgetDefaultCountryMetadataForRegion() {\r\n\t\treturn this.globalMetadataObject.getNumberingPlanMetadata(this.callingCode())\r\n\t}\r\n\r\n\t// Is always present.\r\n\tIDDPrefix() {\r\n\t\tif (this.v1 || this.v2) return\r\n\t\treturn this.metadata[1]\r\n\t}\r\n\r\n\t// Is only present when a country supports multiple IDD prefixes.\r\n\tdefaultIDDPrefix() {\r\n\t\tif (this.v1 || this.v2) return\r\n\t\treturn this.metadata[12]\r\n\t}\r\n\r\n\tnationalNumberPattern() {\r\n\t\tif (this.v1 || this.v2) return this.metadata[1]\r\n\t\treturn this.metadata[2]\r\n\t}\r\n\r\n\t// Is always present.\r\n\tpossibleLengths() {\r\n\t\tif (this.v1) return\r\n\t\treturn this.metadata[this.v2 ? 2 : 3]\r\n\t}\r\n\r\n\t_getFormats(metadata) {\r\n\t\treturn metadata[this.v1 ? 2 : this.v2 ? 3 : 4]\r\n\t}\r\n\r\n\t// For countries of the same region (e.g. NANPA)\r\n\t// formats are all stored in the \"main\" country for that region.\r\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\r\n\tformats() {\r\n\t\tconst formats = this._getFormats(this.metadata) || this._getFormats(this.getDefaultCountryMetadataForRegion()) || []\r\n\t\treturn formats.map(_ => new Format(_, this))\r\n\t}\r\n\r\n\tnationalPrefix() {\r\n\t\treturn this.metadata[this.v1 ? 3 : this.v2 ? 4 : 5]\r\n\t}\r\n\r\n\t_getNationalPrefixFormattingRule(metadata) {\r\n\t\treturn metadata[this.v1 ? 4 : this.v2 ? 5 : 6]\r\n\t}\r\n\r\n\t// For countries of the same region (e.g. NANPA)\r\n\t// national prefix formatting rule is stored in the \"main\" country for that region.\r\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\r\n\tnationalPrefixFormattingRule() {\r\n\t\treturn this._getNationalPrefixFormattingRule(this.metadata) || this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion())\r\n\t}\r\n\r\n\t_nationalPrefixForParsing() {\r\n\t\treturn this.metadata[this.v1 ? 5 : this.v2 ? 6 : 7]\r\n\t}\r\n\r\n\tnationalPrefixForParsing() {\r\n\t\t// If `national_prefix_for_parsing` is not set explicitly,\r\n\t\t// then infer it from `national_prefix` (if any)\r\n\t\treturn this._nationalPrefixForParsing() || this.nationalPrefix()\r\n\t}\r\n\r\n\tnationalPrefixTransformRule() {\r\n\t\treturn this.metadata[this.v1 ? 6 : this.v2 ? 7 : 8]\r\n\t}\r\n\r\n\t_getNationalPrefixIsOptionalWhenFormatting() {\r\n\t\treturn !!this.metadata[this.v1 ? 7 : this.v2 ? 8 : 9]\r\n\t}\r\n\r\n\t// For countries of the same region (e.g. NANPA)\r\n\t// \"national prefix is optional when formatting\" flag is\r\n\t// stored in the \"main\" country for that region.\r\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\r\n\tnationalPrefixIsOptionalWhenFormattingInNationalFormat() {\r\n\t\treturn this._getNationalPrefixIsOptionalWhenFormatting(this.metadata) ||\r\n\t\t\tthis._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion())\r\n\t}\r\n\r\n\tleadingDigits() {\r\n\t\treturn this.metadata[this.v1 ? 8 : this.v2 ? 9 : 10]\r\n\t}\r\n\r\n\ttypes() {\r\n\t\treturn this.metadata[this.v1 ? 9 : this.v2 ? 10 : 11]\r\n\t}\r\n\r\n\thasTypes() {\r\n\t\t// Versions 1.2.0 - 1.2.4: can be `[]`.\r\n\t\t/* istanbul ignore next */\r\n\t\tif (this.types() && this.types().length === 0) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\t// Versions <= 1.2.4: can be `undefined`.\r\n\t\t// Version >= 1.2.5: can be `0`.\r\n\t\treturn !!this.types()\r\n\t}\r\n\r\n\ttype(type) {\r\n\t\tif (this.hasTypes() && getType(this.types(), type)) {\r\n\t\t\treturn new Type(getType(this.types(), type), this)\r\n\t\t}\r\n\t}\r\n\r\n\text() {\r\n\t\tif (this.v1 || this.v2) return DEFAULT_EXT_PREFIX\r\n\t\treturn this.metadata[13] || DEFAULT_EXT_PREFIX\r\n\t}\r\n}\r\n\r\nclass Format {\r\n\tconstructor(format, metadata) {\r\n\t\tthis._format = format\r\n\t\tthis.metadata = metadata\r\n\t}\r\n\r\n\tpattern() {\r\n\t\treturn this._format[0]\r\n\t}\r\n\r\n\tformat() {\r\n\t\treturn this._format[1]\r\n\t}\r\n\r\n\tleadingDigitsPatterns() {\r\n\t\treturn this._format[2] || []\r\n\t}\r\n\r\n\tnationalPrefixFormattingRule() {\r\n\t\treturn this._format[3] || this.metadata.nationalPrefixFormattingRule()\r\n\t}\r\n\r\n\tnationalPrefixIsOptionalWhenFormattingInNationalFormat() {\r\n\t\treturn !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormattingInNationalFormat()\r\n\t}\r\n\r\n\tnationalPrefixIsMandatoryWhenFormattingInNationalFormat() {\r\n\t\t// National prefix is omitted if there's no national prefix formatting rule\r\n\t\t// set for this country, or when the national prefix formatting rule\r\n\t\t// contains no national prefix itself, or when this rule is set but\r\n\t\t// national prefix is optional for this phone number format\r\n\t\t// (and it is not enforced explicitly)\r\n\t\treturn this.usesNationalPrefix() && !this.nationalPrefixIsOptionalWhenFormattingInNationalFormat()\r\n\t}\r\n\r\n\t// Checks whether national prefix formatting rule contains national prefix.\r\n\tusesNationalPrefix() {\r\n\t\treturn this.nationalPrefixFormattingRule() &&\r\n\t\t\t// Check that national prefix formatting rule is not a \"dummy\" one.\r\n\t\t\t!FIRST_GROUP_ONLY_PREFIX_PATTERN.test(this.nationalPrefixFormattingRule())\r\n\t\t\t// In compressed metadata, `this.nationalPrefixFormattingRule()` is `0`\r\n\t\t\t// when `national_prefix_formatting_rule` is not present.\r\n\t\t\t// So, `true` or `false` are returned explicitly here, so that\r\n\t\t\t// `0` number isn't returned.\r\n\t\t\t? true\r\n\t\t\t: false\r\n\t}\r\n\r\n\tinternationalFormat() {\r\n\t\treturn this._format[5] || this.format()\r\n\t}\r\n}\r\n\r\n/**\r\n * A pattern that is used to determine if the national prefix formatting rule\r\n * has the first group only, i.e., does not start with the national prefix.\r\n * Note that the pattern explicitly allows for unbalanced parentheses.\r\n */\r\nconst FIRST_GROUP_ONLY_PREFIX_PATTERN = /^\\(?\\$1\\)?$/\r\n\r\nclass Type {\r\n\tconstructor(type, metadata) {\r\n\t\tthis.type = type\r\n\t\tthis.metadata = metadata\r\n\t}\r\n\r\n\tpattern() {\r\n\t\tif (this.metadata.v1) return this.type\r\n\t\treturn this.type[0]\r\n\t}\r\n\r\n\tpossibleLengths() {\r\n\t\tif (this.metadata.v1) return\r\n\t\treturn this.type[1] || this.metadata.possibleLengths()\r\n\t}\r\n}\r\n\r\nfunction getType(types, type) {\r\n\tswitch (type) {\r\n\t\tcase 'FIXED_LINE':\r\n\t\t\treturn types[0]\r\n\t\tcase 'MOBILE':\r\n\t\t\treturn types[1]\r\n\t\tcase 'TOLL_FREE':\r\n\t\t\treturn types[2]\r\n\t\tcase 'PREMIUM_RATE':\r\n\t\t\treturn types[3]\r\n\t\tcase 'PERSONAL_NUMBER':\r\n\t\t\treturn types[4]\r\n\t\tcase 'VOICEMAIL':\r\n\t\t\treturn types[5]\r\n\t\tcase 'UAN':\r\n\t\t\treturn types[6]\r\n\t\tcase 'PAGER':\r\n\t\t\treturn types[7]\r\n\t\tcase 'VOIP':\r\n\t\t\treturn types[8]\r\n\t\tcase 'SHARED_COST':\r\n\t\t\treturn types[9]\r\n\t}\r\n}\r\n\r\nexport function validateMetadata(metadata) {\r\n\tif (!metadata) {\r\n\t\tthrow new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.')\r\n\t}\r\n\r\n\t// `country_phone_code_to_countries` was renamed to\r\n\t// `country_calling_codes` in `1.0.18`.\r\n\tif (!is_object(metadata) || !is_object(metadata.countries)) {\r\n\t\tthrow new Error(`[libphonenumber-js] \\`metadata\\` argument was passed but it's not a valid metadata. Must be an object having \\`.countries\\` child object property. Got ${is_object(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + type_of(metadata) + ': ' + metadata}.`)\r\n\t}\r\n}\r\n\r\n// Babel transforms `typeof` into some \"branches\"\r\n// so istanbul will show this as \"branch not covered\".\r\n/* istanbul ignore next */\r\nconst is_object = _ => typeof _ === 'object'\r\n\r\n// Babel transforms `typeof` into some \"branches\"\r\n// so istanbul will show this as \"branch not covered\".\r\n/* istanbul ignore next */\r\nconst type_of = _ => typeof _\r\n\r\n/**\r\n * Returns extension prefix for a country.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string?}\r\n * @example\r\n * // Returns \" ext. \"\r\n * getExtPrefix(\"US\")\r\n */\r\nexport function getExtPrefix(country, metadata) {\r\n\tmetadata = new Metadata(metadata)\r\n\tif (metadata.hasCountry(country)) {\r\n\t\treturn metadata.country(country).ext()\r\n\t}\r\n\treturn DEFAULT_EXT_PREFIX\r\n}\r\n\r\n/**\r\n * Returns \"country calling code\" for a country.\r\n * Throws an error if the country doesn't exist or isn't supported by this library.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string}\r\n * @example\r\n * // Returns \"44\"\r\n * getCountryCallingCode(\"GB\")\r\n */\r\nexport function getCountryCallingCode(country, metadata) {\r\n\tmetadata = new Metadata(metadata)\r\n\tif (metadata.hasCountry(country)) {\r\n\t\treturn metadata.country(country).countryCallingCode()\r\n\t}\r\n\tthrow new Error(`Unknown country: ${country}`)\r\n}\r\n\r\nexport function isSupportedCountry(country, metadata) {\r\n\t// metadata = new Metadata(metadata)\r\n\t// return metadata.hasCountry(country)\r\n\treturn metadata.countries[country] !== undefined\r\n}\r\n\r\nfunction setVersion(metadata) {\r\n\tconst { version } = metadata\r\n\tif (typeof version === 'number') {\r\n\t\tthis.v1 = version === 1\r\n\t\tthis.v2 = version === 2\r\n\t\tthis.v3 = version === 3\r\n\t\tthis.v4 = version === 4\r\n\t} else {\r\n\t\tif (!version) {\r\n\t\t\tthis.v1 = true\r\n\t\t} else if (compare(version, V3) === -1) {\r\n\t\t\tthis.v2 = true\r\n\t\t} else if (compare(version, V4) === -1) {\r\n\t\t\tthis.v3 = true\r\n\t\t} else {\r\n\t\t\tthis.v4 = true\r\n\t\t}\r\n\t}\r\n}\r\n\r\n// const ISO_COUNTRY_CODE = /^[A-Z]{2}$/\r\n// function isCountryCode(countryCode) {\r\n// \treturn ISO_COUNTRY_CODE.test(countryCodeOrCountryCallingCode)\r\n// }","import {\n Container,\n ContainerGutter,\n ContainerHorizontalAlignment,\n ContainerWrap,\n CTA,\n styled,\n Text,\n TextAlignment,\n TextAppearance,\n} from '@volkswagen-onehub/components-core';\nimport { Alert } from 'src/icons-core-imports';\nimport { CloseHandleV2 } from '@volkswagen-onehub/layer-manager';\nimport React from 'react';\n\nconst Content = styled.div`\n background-color: white;\n padding: 44px 31px;\n flex: auto;\n text-align: center;\n width: 100%;\n @media screen and (min-width: 560px) {\n padding: 52px 46px;\n }\n @media screen and (min-width: 960px) {\n padding: var(--size-grid001);\n }\n`;\n\ninterface LayerComponentProps {\n closeLayerCallback?: CloseHandleV2;\n}\n\nexport function AvailabilityErrorLayer(props: LayerComponentProps) {\n return (\n \n \n \n );\n}\n\ninterface SlotHorario {\n from: number;\n to: number;\n}\n\nfunction AvailabilityError(props: LayerComponentProps) {\n const { closeLayerCallback } = props;\n\n return (\n \n
    \n \n
    \n \n Uy, algo ha pasado\n \n \n \n No hemos podido cargar los datos que nos pides. ¿Lo intentamos de nuevo en un rato?\n \n {\n e.preventDefault();\n closeLayerCallback({}, {}, {});\n }}\n >\n Cerrar\n \n \n \n );\n}\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport {\n Container,\n ContainerGutter,\n ContainerHorizontalAlignment,\n ContainerPadding,\n ContainerWrap,\n CTA,\n styled,\n Text,\n TextAlignment,\n TextAppearance,\n BreakpointWrapper,\n Breakpoints,\n} from '@volkswagen-onehub/components-core';\nimport { CloseHandleV2 } from '@volkswagen-onehub/layer-manager';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useTrackingManager, useFeatureAppConfig, useFeatureAppEnvironment } from 'src/feature-app';\nimport { OneFormState } from 'src/types';\nimport { removeConfigurationHash } from 'src/feature-app/remove-configuration-hash';\n\nconst Content = styled.div`\n background-color: white;\n padding: 44px 28px;\n flex: auto;\n text-align: center;\n width: 100%;\n @media screen and (min-width: 560px) {\n padding: 52px 46px;\n }\n @media screen and (min-width: 960px) {\n padding: var(--size-grid001);\n }\n`;\n\nconst copys = [\n {\n name: 'isCloseLayer',\n pregunta: '¿Seguro que quieres salir?',\n bodyCopy: 'Si lo haces, no se enviará el formulario.',\n },\n {\n name: 'isMotivoLayer',\n pregunta: '¿Seguro que quieres cambiar el motivo de tu visita?',\n bodyCopy: 'Si lo cambias, puede que tengas elegir un taller distinto. ',\n },\n {\n name: 'isTallerLayer',\n pregunta: '¿Seguro que quieres cambiar el taller para tu visita?',\n bodyCopy: 'Si lo cambias, puede que tengas que elegir una hora distinta.',\n },\n {\n name: 'isTimeLayer',\n pregunta: '¿Seguro que quieres cambiar la hora de tu visita?',\n bodyCopy: 'Si la cambias, puede que tengas que elegir un taller distinto.',\n },\n];\n\ninterface AreYouSureProps {\n layerName: string;\n closeLayerCallback?: CloseHandleV2;\n closeOneForm?: CloseHandleV2;\n onClickProp: () => void;\n}\n\nexport const AreYouSureLayer = (props: AreYouSureProps) => {\n const { layerName, closeLayerCallback, closeOneForm, onClickProp } = props;\n const dispatch = useDispatch();\n const [layerInfo, setLayerInfo] = useState(null);\n const trackingManager = useTrackingManager();\n const { screenIndex } = useSelector((state: OneFormState) => state.formInfo);\n const config = useFeatureAppConfig();\n const env = useFeatureAppEnvironment();\n\n useEffect(() => {\n const aux = copys.filter((a) => a.name === layerName);\n setLayerInfo(aux);\n }, []);\n\n return (\n \n {layerInfo ? (\n <>\n \n {layerInfo[0].pregunta}\n \n \n {\n config.trigger === 'cita-posventa-dealer' && layerName !== 'isCloseLayer' ? null : (\n {layerInfo[0].bodyCopy}\n )\n }\n \n {layerName === 'isCloseLayer' ? (\n <>\n \n \n {\n e.preventDefault();\n closeLayerCallback({}, {}, {});\n }}\n stretchContent\n >\n No, quiero seguir\n \n {\n e.preventDefault();\n dispatch({ type: 'RESET_STATE' });\n closeLayerCallback({}, {}, {});\n closeOneForm({}, {}, {});\n if (config.trigger === 'lead-configurador') {\n removeConfigurationHash();\n }\n if (env.done) {\n env.done();\n }\n }}\n stretchContent\n >\n Sí, estoy seguro\n \n \n \n \n \n
    \n {\n e.preventDefault();\n closeLayerCallback({}, {}, {});\n }}\n >\n No, quiero seguir\n \n
    \n {\n e.preventDefault();\n trackingManager.trackFormCloseClick(\n {\n contentId: 'Cerrar',\n },\n { FormStart: screenIndex === 0 ? true : false }\n );\n dispatch({ type: 'RESET_STATE' });\n closeLayerCallback({}, {}, {});\n closeOneForm({}, {}, {});\n if (config.trigger === 'lead-configurador') {\n removeConfigurationHash();\n }\n if (env.done) {\n env.done();\n }\n }}\n >\n Sí, estoy seguro\n \n \n
    \n \n ) : (\n <>\n \n \n {\n e.preventDefault();\n onClickProp();\n closeLayerCallback({}, {}, {});\n if (config.trigger === 'lead-configurador') {\n removeConfigurationHash();\n }\n if (env.done) {\n env.done();\n }\n }}\n stretchContent\n >\n Sí, estoy seguro\n \n {\n e.preventDefault();\n closeLayerCallback({}, {}, {});\n }}\n stretchContent\n >\n No, quiero seguir en esta página\n \n \n \n \n \n
    \n {\n e.preventDefault();\n onClickProp();\n closeLayerCallback({}, {}, {});\n if (config.trigger === 'lead-configurador') {\n removeConfigurationHash();\n }\n }}\n >\n Sí, estoy seguro\n \n
    \n {\n e.preventDefault();\n closeLayerCallback({}, {}, {});\n }}\n >\n No, quiero seguir en esta página\n \n \n
    \n \n )}\n \n ) : null}\n
    \n );\n};\n","import {\n Container,\n ContainerGutter,\n ContainerHorizontalAlignment,\n ContainerWrap,\n CTA,\n styled,\n Text,\n TextAlignment,\n TextAppearance,\n} from '@volkswagen-onehub/components-core';\nimport { Alert } from 'src/icons-core-imports';\n\nimport { CloseHandleV2 } from '@volkswagen-onehub/layer-manager';\nimport React, { useRef, useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\n\ninterface contentProps {\n notALayer?: boolean;\n formHeight?: string;\n}\n\nconst Content = styled.div`\n background-color: white;\n padding: ${(props) => (props.notALayer ? '0 var(--size-grid002)' : '44px 31px')};\n flex: auto;\n text-align: ${(props) => (props.notALayer ? 'left' : 'center')};\n width: 100%;\n display: ${(props) => (props.notALayer ? 'flex' : null)};\n align-items: ${(props) => (props.notALayer ? 'center' : null)};\n height: ${(props) => (props.notALayer ? 'calc(100vh - 84px)' : '100%')};\n @media all and (min-width: 560px) {\n padding: ${(props) => (props.notALayer ? '0 var(--size-grid002)' : '52px 46px')};\n height: ${(props) => (props.notALayer ? 'calc(100vh - 92px)' : '100%')};\n }\n @media all and (min-width: 960px) {\n padding: ${(props) => (props.notALayer ? '0 var(--size-grid003)' : 'var(--size-grid001)')};\n height: ${(props) => (props.notALayer ? 'calc(100vh - 100px)' : '100%')};\n }\n @media all and (min-width: 1280px) {\n padding: ${(props) => (props.notALayer ? '0 var(--size-grid005)' : 'var(--size-grid001)')};\n }\n @media all and (min-width: 1920px) {\n padding: ${(props) => (props.notALayer ? '0 var(--size-grid006)' : 'var(--size-grid001)')};\n height: ${(props) => (props.notALayer ? 'calc(100vh - 116px)' : '100%')};\n }\n @media all and (min-width: 2560px) {\n padding: ${(props) => (props.notALayer ? '0 var(--size-grid007)' : 'var(--size-grid001)')};\n }\n`;\n\ninterface LayerComponentProps {\n closeLayerCallback?: CloseHandleV2;\n closeOneForm?: CloseHandleV2;\n bodycopy?: string;\n title?: string;\n icon?: boolean;\n onClick?: any;\n ctaLayer?: string;\n notALayer?: boolean;\n notShowCTA?: boolean;\n ctaType?: 'a' | 'button';\n urlHref?: string;\n ctaTextAlign?: 'left' | 'center';\n secondCta?: JSX.Element;\n}\n\n//admite formato, title, bodycopy, si debe mostrar o no el icono de alert\n//así como la siguiente info del CTA: si mostarlo o no, el texto del layer y la funciona de onClick\n\nexport function GenericErrorLayer(props: LayerComponentProps) {\n const {\n closeLayerCallback,\n closeOneForm,\n bodycopy,\n title,\n icon,\n onClick,\n ctaLayer,\n notALayer,\n notShowCTA,\n ctaType,\n urlHref,\n ctaTextAlign,\n secondCta,\n } = props;\n const dispatch = useDispatch();\n\n const handleCloseLayers = () => {\n closeLayerCallback({}, {}, {});\n closeOneForm({}, {}, {});\n dispatch({ type: 'UPDATE_GENERIC_ERROR', payload: false });\n };\n\n //calc height stuff\n const content = useRef(null);\n const viewportHeight = window.innerHeight;\n const [formHeight, setFormHeight] = useState('100%');\n\n useEffect(() => {\n if (!notALayer) {\n return;\n }\n\n if (content.current) {\n const minHeight = viewportHeight - 252;\n const contentHeight = content.current.clientHeight;\n if (minHeight > contentHeight) {\n setFormHeight(`${minHeight}px`);\n } else {\n setFormHeight(`${contentHeight}px`);\n }\n }\n }, []);\n\n return (\n \n \n {icon ? (\n
    \n \n
    \n ) : null}\n <>\n \n {title ? title : 'Uy, algo ha pasado'}\n \n \n \n \n {bodycopy\n ? bodycopy\n : 'Parece que no podemos seguir con el proceso de cita en este momento. ¿Lo intentamos de nuevo más tarde?'}\n \n \n {notShowCTA ? null : (\n <>\n {ctaType === 'a' ? (\n
    \n \n {ctaLayer ? <>{ctaLayer} : <>Cerrar}\n \n
    \n ) : (\n
    \n {\n if (onClick) {\n e.preventDefault();\n onClick();\n } else {\n e.preventDefault();\n handleCloseLayers();\n }\n }}\n >\n {ctaLayer ? <>{ctaLayer} : <>Cerrar}\n \n
    \n )}\n \n )}\n {secondCta ?
    {secondCta}
    : null}\n \n \n \n
    \n );\n}\n","export * from './CitaVenta';\nexport * from './ConfirmacionLeads';\nexport * from './LeadGenericoComercialesForm';\nexport * from './LeadGenericoForm';\nexport * from './MapaLeads';\nexport * from './MasInformacion';\nexport * from './Oferta';\nexport * from './Presupuesto';\nexport * from './TestDrive';\nexport * from './Stock';\nexport * from './ThankYouLeads';\nexport * from './helpers';\nexport * from './types';\nexport * from './use-initialize-lead-form';\n","export * from './CTAsObjects';\nexport * from './OtherInputTypesObjects';\nexport * from './CTAsObjectsFormsAdhoc';\n","import { TrackingConfiguration, TrackingOwnership, TrackingPersonalization, TrackingUser } from './tracking-types';\n\nexport const emptyPersonalization: TrackingPersonalization = {\n status: false,\n moduleId: undefined,\n placeholderId: undefined,\n contentId: undefined,\n activityId: undefined,\n personalizable: undefined,\n activityName: undefined,\n experienceId: undefined,\n experienceName: undefined,\n offerId: undefined,\n offerName: undefined,\n};\n\nexport const emptyPriceConfiguration: TrackingConfiguration = {\n PriceType: 'price',\n PriceTypeParameter: undefined,\n PriceRateCurrency: undefined,\n PriceRateBasic: undefined,\n PriceRateAdditional: undefined,\n PriceRateTotal: undefined,\n PriceRateType: undefined,\n PriceTotalCurrency: undefined,\n PriceTotalBasic: undefined,\n PriceTotalAdditional: undefined,\n PriceTotalTotal: undefined,\n};\n\nexport const emptyCarlineConfig: TrackingConfiguration = {\n SalesgroupId: undefined,\n SalesgroupName: undefined,\n EquipmentlineName: undefined,\n CarlineId: undefined,\n CarlineName: undefined,\n};\n\nexport const emptyLatLongZip: TrackingUser = {\n locationLatitude: undefined,\n locationLongitude: undefined,\n locationZIP: undefined,\n};\n\nexport const emptyConfig = { ...emptyPriceConfiguration, ...emptyCarlineConfig };\n\nexport const emptyOwnership: TrackingOwnership = {\n vehicle: undefined,\n};\n\nexport const emptyConfigurationFromVicci = {\n CarlineIsRecommendation: undefined,\n SalesgroupIsRecommendation: undefined,\n BodyTypeName: undefined,\n PriceTotalTotal: undefined,\n ModelId: undefined,\n ModelTrimFeatures: undefined,\n ModelModelVersion: undefined,\n ModelIsRecommendation: undefined,\n ModelName: undefined,\n ModelDriveType: undefined,\n ModelGearType: undefined,\n ModelYear: undefined,\n EnginePowerHPKW: undefined,\n EngineFuelTypePrimary: undefined,\n EngineFuelTypeNonPrimary: undefined,\n ConsumptionCombinedPrimary: undefined,\n ConsumptionCombinedNonPrimary: undefined,\n EmissionConsumptionEfficiencyClass: undefined,\n EmissionConsumptionTestingMethod: undefined,\n ExteriorColorCode: undefined,\n ExteriorColorName: undefined,\n ExteriorColorIsRecommendation: undefined,\n InteriorColorCode: undefined,\n InteriorColorName: undefined,\n InteriorColorIsRecommendation: undefined,\n WheelsBasicId: undefined,\n WheelsBasicName: undefined,\n WheelsBasicIsRecommendation: undefined,\n PriceCurrency: undefined,\n PriceBasis: undefined,\n PriceExterior: undefined,\n PriceOptions: undefined,\n PriceTotalConfiguration: undefined,\n PriceCampaignID: undefined,\n PriceCampaignDescription: undefined,\n PriceCampaignValue: undefined,\n PriceCustomerType: undefined,\n OptionsNumber: undefined,\n OptionsList: undefined,\n};\n","var __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};\nimport * as React from 'react';\nimport { css, styled } from '../theme-provider';\nimport { Text, TextAppearance, TextColor } from '../text';\nimport { createStylesForBreakpoints, isBreakpointConfig, } from '../helpers/breakpoint';\nconst isLink = (props) => Boolean(props.tag === 'a');\nconst colorStyle = css `${(props) => {\n const textRecipe = props.theme.interaction[props.emphasis === 'primary'\n ? 'recipe750'\n : props.emphasis === 'tertiary'\n ? 'recipe400'\n : 'recipe450'];\n const transparentRecipe = {\n default: 'transparent',\n disabled: 'transparent',\n hover: 'transparent',\n active: 'transparent',\n };\n const backgroundRecipe = props.emphasis === 'primary'\n ? props.theme.interaction.recipe450\n : transparentRecipe;\n const borderRecipe = props.theme.interaction.recipe450;\n return props.disabled\n ? css `background:${backgroundRecipe.disabled};border-color:${borderRecipe.disabled};color:${textRecipe.disabled};` : css `background:${backgroundRecipe.default};border-color:${borderRecipe.default};color:${textRecipe.default};`;\n}};`;\nconst focusStyle = css `outline:none;background-color:${({ theme }) => theme.focus.background};color:${({ theme }) => theme.focus.foreground};`;\nconst focusStyleBoxShadow = css `box-shadow:0 0 0 1px inset ${({ theme }) => theme.interaction.recipe450.default};`;\nconst StyledLinkIcon = styled.span.withConfig({ displayName: \"StyledLinkIcon\", componentId: \"sc-wjrax8\" }) `border-radius:50%;line-height:0;position:relative;order:${(props) => (props.iconPosition === 'end' ? 1 : 'initial')};${({ iconPosition, theme }) => iconPosition === 'top' && css `display:flex;justify-content:center;align-items:center;width:44px;height:44px;border-radius:50%;border:2px solid currentColor;margin-bottom:${theme.size.static100};`}`;\nconst StyledButtonIcon = styled.span.withConfig({ displayName: \"StyledButtonIcon\", componentId: \"sc-bk7es1\" }) `order:${(props) => (props.iconPosition === 'end' ? 1 : 'initial')};`;\nconst StyledLinkText = styled.span.withConfig({ displayName: \"StyledLinkText\", componentId: \"sc-12fkfup\" }) `position:relative;text-decoration:underline;text-underline-offset:0.2em;text-decoration-thickness:1px;${(props) => props.emphasis === 'none' && 'text-decoration: none;'} ${(props) => props.disabled\n ? css `pointer-events:none;cursor:not-allowed;` : css `cursor:pointer;`}`;\nconst StyledButtonWrapper = styled.div.withConfig({ displayName: \"StyledButtonWrapper\", componentId: \"sc-grwi6b\" }) `align-items:center;${(props) => {\n if (props.iconPosition === 'top') {\n return css `display:flex;flex-direction:column;`;\n }\n const templateColumns = props.iconPosition === 'end'\n ? `repeat(\n\t\t\t\t\t${React.Children.count(props.children) - 1},\n\t\t\t\t\tauto\n\t\t\t\t) max-content`\n : `max-content repeat(\n\t\t\t\t\t${React.Children.count(props.children) - 1},\n\t\t\t\t\tauto\n\t\t\t\t)`;\n return css `display:grid;grid-template-columns:${templateColumns};grid-column-gap:${props.theme.size.static150};`;\n}}`;\nconst StyledLinkWrapper = styled.div.withConfig({ displayName: \"StyledLinkWrapper\", componentId: \"sc-x60dy3\" }) `align-items:center;${(props) => {\n if (props.iconPosition === 'top') {\n return css `display:flex;flex-direction:column;`;\n }\n return css `display:grid;grid-template-columns:max-content auto;grid-column-gap:${(props) => props.theme.size.static150};align-items:center;`;\n}}`;\nconst createStretchContentForBreakpoints = (props) => {\n if (!props.stretchContent) {\n return '';\n }\n if (isBreakpointConfig(props.stretchContent)) {\n return createStylesForBreakpoints(props.stretchContent, (stretchContent) => (stretchContent ? 'width: 100%;' : 'width: initial;'));\n }\n return props.stretchContent && 'width: 100%;';\n};\nconst StyledButton = styled.button.withConfig({ displayName: \"StyledButton\", componentId: \"sc-1208ax7\" }) `position:relative;${createStretchContentForBreakpoints} display:inline-flex;text-align:center;justify-content:center;align-items:center;${(props) => {\n const width = props.size === 'small' ? props.theme.size.static400 : '44px';\n const padding = props.size === 'small'\n ? `${props.theme.size.static100} ${props.theme.size.static250}`\n : `0 ${props.theme.size.static400}`;\n const border = props.size === 'small'\n ? `${props.theme.size.border.light}`\n : `${props.theme.size.border.heavy}`;\n return css `min-height:${width};min-width:${width};${props.circular\n ? css `width:${width};padding:0;` : css `padding:${padding};`} border:${border} solid;${!props.disabled && css `:hover,:active{::before{content:'';border-radius:500px;position:absolute;top:0;right:0;left:0;bottom:0;margin:-${border};}}:hover{::before{background-color:${props.emphasis === 'primary'\n ? props.theme.hoverIndicatorColor.filledElement.default\n : props.theme.hoverIndicatorColor.outlinedElement.default};}}:active{::before{background-color:${props.emphasis === 'primary'\n ? props.theme.hoverIndicatorColor.filledElement.active\n : props.theme.hoverIndicatorColor.outlinedElement.active};}}:focus{${focusStyle};${focusStyleBoxShadow};}`}`;\n}} margin:0;border-radius:500px;transition:all 0.2s ease-in-out;text-decoration:none;cursor:${(props) => (props.disabled ? 'not-allowed' : 'pointer')};-webkit-tap-highlight-color:transparent;${colorStyle}`;\nconst iconBoxShadowSpreadRadius = '9px';\nconst StyledLink = styled.a.withConfig({ displayName: \"StyledLink\", componentId: \"sc-afbv6g\" }) `font-weight:inherit;display:inline;${createStretchContentForBreakpoints} border:none;position:relative;text-decoration:none;cursor:${(props) => (props.disabled ? 'not-allowed' : 'pointer')};padding:0;${colorStyle} ${(props) => !props.disabled && css `:hover,:active{${props.circular\n ? css `::before{content:'';border-radius:50%;width:100%;height:100%;position:absolute;top:0;}` : css `${StyledLinkIcon}{::before{content:'';border-radius:50%;width:100%;height:100%;position:absolute;top:0;}}`}}:hover:not(:focus){${StyledLinkText}{background-color:${props.theme.hoverIndicatorColor.outlinedElement\n .default};}${StyledLinkWrapper} ${StyledLinkText}{background-color:inherit;}${props.circular\n ? css `::before{background-color:${props.theme.hoverIndicatorColor\n .outlinedElement.default};}` : css `${StyledLinkIcon}{::before{background-color:${props.theme.hoverIndicatorColor\n .outlinedElement.default};box-shadow:${props.iconPosition !== 'top' &&\n `0 0 0 ${iconBoxShadowSpreadRadius}\n\t\t\t\t\t\t\t\t\t${props.theme.hoverIndicatorColor.outlinedElement.default}`};}}`}}:active ${StyledLinkText}::before{content:'';position:absolute;top:0;right:0;bottom:0;left:0;background-color:${props.theme.hoverIndicatorColor.outlinedElement\n .active};}:focus{outline:none;${props.circular && css `${focusStyle} ${focusStyleBoxShadow} border-color:${props.theme.interaction.recipe450.default};`} ${StyledLinkText}{${focusStyle} text-underline-offset:0.2em;text-decoration-thickness:2px;text-decoration-skip-ink:none;text-decoration-color:${props.theme.interaction.recipe450.default};}}`} text-align:inherit;${(props) => props.circular && css `display:inline-flex;align-items:center;text-align:center;justify-content:center;width:${props.size === 'small' ? props.theme.size.static400 : '44px'};height:${props.size === 'small' ? props.theme.size.static400 : '44px'};border:${props.size === 'small'\n ? props.theme.size.border.light\n : props.theme.size.border.heavy} solid transparent;border-radius:50%;`} -webkit-tap-highlight-color:transparent;`;\nconst CTALink = (props) => {\n const { ariaLabel, children, disabled, emphasis, forwardRef, icon, iconPosition, size, tag, onClick } = props, rest = __rest(props, [\"ariaLabel\", \"children\", \"disabled\", \"emphasis\", \"forwardRef\", \"icon\", \"iconPosition\", \"size\", \"tag\", \"onClick\"]);\n const hasChildren = React.Children.count(children) > 0;\n const additionalProps = isLink(props) && !disabled ? { href: props.href } : {};\n const ref = forwardRef;\n return (React.createElement(StyledLink, Object.assign({ as: tag, \"aria-label\": ariaLabel, disabled: disabled }, rest, additionalProps, { ref: ref, emphasis: emphasis, circular: icon && !hasChildren, size: size, onClick: onClick, iconPosition: iconPosition }),\n icon && hasChildren && (React.createElement(StyledLinkWrapper, { iconPosition: iconPosition },\n React.createElement(StyledLinkIcon, { iconPosition: iconPosition }, icon),\n React.createElement(\"span\", null,\n React.createElement(StyledLinkText, { emphasis: emphasis, disabled: disabled }, children)))),\n icon && !hasChildren && React.createElement(StyledLinkIcon, null, icon),\n hasChildren && !icon && (React.createElement(StyledLinkText, { emphasis: emphasis, disabled: disabled }, children))));\n};\nconst CTAButton = (props) => {\n const { ariaLabel, children, disabled, emphasis, forwardRef, icon, iconPosition, size, tag, onClick } = props, rest = __rest(props, [\"ariaLabel\", \"children\", \"disabled\", \"emphasis\", \"forwardRef\", \"icon\", \"iconPosition\", \"size\", \"tag\", \"onClick\"]);\n const hasChildren = React.Children.count(children) > 0;\n const additionalProps = isLink(props) && !disabled ? { href: props.href } : {};\n const ref = forwardRef;\n return (React.createElement(StyledButton, Object.assign({ as: tag, \"aria-label\": ariaLabel, disabled: disabled }, rest, additionalProps, { ref: ref, emphasis: emphasis, circular: icon && !hasChildren, size: size, onClick: onClick }),\n icon && !hasChildren && React.createElement(StyledButtonIcon, null, icon),\n icon && hasChildren && (React.createElement(StyledButtonWrapper, { iconPosition: iconPosition },\n React.createElement(StyledButtonIcon, { iconPosition: iconPosition }, icon),\n React.createElement(Text, { appearance: size === 'small'\n ? TextAppearance.label0150\n : TextAppearance.label0200, color: TextColor.inherit, staticSize: true }, children))),\n hasChildren && !icon && (React.createElement(Text, { appearance: size === 'small'\n ? TextAppearance.label0150\n : TextAppearance.label0200, color: TextColor.inherit, staticSize: true }, children))));\n};\nexport const CTA = React.forwardRef((props, forwardRef) => {\n const { emphasis = 'primary', size = 'large' } = props, rest = __rest(props, [\"emphasis\", \"size\"]);\n if (emphasis === 'tertiary' || emphasis === 'none') {\n return (React.createElement(CTALink, Object.assign({}, rest, { forwardRef: forwardRef, emphasis: emphasis, size: size })));\n }\n else {\n return (React.createElement(CTAButton, Object.assign({}, rest, { forwardRef: forwardRef, emphasis: emphasis, size: size })));\n }\n});\nCTA.displayName = 'CTA';\n","import React, { useEffect } from 'react';\nimport { TriggerProps, useFaContent, ScreenController } from 'src/feature-app';\nimport { BajaComunicacionesController } from 'src/forms/BajaComunicaciones';\n\nexport function BajaComunicacionesTrigger({ setSelectedJourney }: TriggerProps): JSX.Element {\n const faContent = useFaContent();\n\n return (\n <>\n }\n closeLayerCallback={close}\n handleAreYouSureLayer={() => null}\n notALayer={true}\n formType = 'inPage'\n />\n \n );\n}\n","import React, { useEffect } from 'react';\nimport { TriggerProps, useFaContent } from 'src/feature-app';\nimport { CallMeOfertaForm } from 'src/forms';\n\nexport function CallMeOfertasTrigger({ setSelectedJourney }: TriggerProps): JSX.Element {\n const faContent = useFaContent();\n const getCtaLabel = () => (faContent?.cta ? faContent.cta : 'Llámame');\n\n useEffect(() => {\n setSelectedJourney(, true);\n }, []);\n\n return null;\n\n}\n","import React from 'react';\nimport { EmbeddedFeatureApp, TriggerProps, useFaContent } from 'src/feature-app';\nimport { CallMeOfertasTrigger } from './CallMeOfertasTrigger';\n\nconst renderTrigger = (featureApp: EmbeddedFeatureApp, props: TriggerProps) => {\n if (featureApp === 'es-ofertas') {\n return ;\n }\n\n return null;\n};\n\nexport function CallMeEmbeddedTrigger(props: TriggerProps) {\n const faContent = useFaContent();\n\n return renderTrigger(faContent.featureApp, props);\n}\n","import React, { useEffect, useState } from 'react';\nimport {\n Breakpoints,\n Container,\n ContainerGutter,\n ContainerPadding,\n ContainerWrap,\n CTA,\n Layout,\n Text,\n TextAlignment,\n TextAppearance,\n ThemeProvider,\n Spinner,\n Divider,\n ContainerHorizontalAlignment,\n LayoutRowGap,\n} from '@volkswagen-onehub/components-core';\nimport { Mail, Phone, CarPickupService, FleetServicePrivate } from 'src/icons-core-imports';\nimport { useGetDealer, useFeatureServices, LayerManagerWrapper, useFeatureAppEnvironment, useNavigate } from 'src/feature-app';\nimport { NuevaCitaPosventaFormController } from '../forms/CitaPosventa/NuevaCitaPosventa';\nimport { MapGeneralController, NewMap } from 'src/feature-app/NewMap';\nimport { useSelector, useStore, useDispatch } from 'react-redux';\nimport { DealersData, OneFormState } from 'src/types';\nimport { GenericErrorLayer } from 'src/components/layers';\nimport { FocusLayerSizeV2 } from '@volkswagen-onehub/layer-manager';\n\ninterface CitaPosventaDEalerTriggerProps {\n setSelectedJourney: any;\n setCTALabel?: any;\n}\n\nexport const CitaPosventaDealerTrigger = (props: CitaPosventaDEalerTriggerProps) => {\n const { dealerName, selectedDealer, loading } = useGetDealer();\n const { setSelectedJourney } = props;\n const { points } = useSelector((state: OneFormState) => state.dealersInfo);\n const [error, setError] = useState(false);\n const [dealerInfo, setDealerInfo] = useState(null);\n const [dealerDmsInfo, setDealerDmsInfo] = useState(null);\n const [pointsLodaded, setPointsLoaded] = useState(false);\n const layerManager = useFeatureServices()['layer-manager'];\n const store = useStore();\n const env = useFeatureAppEnvironment();\n const {navigateToCita} = useNavigate();\n const dispatch = useDispatch();\n\n const renderErrorScreen = () => {\n return (\n \n {\n navigateToCita();\n }}\n />\n \n );\n };\n\n const handleErrorLayer = () => {\n const layer = layerManager.openFocusLayer(renderErrorScreen, {}, { size: FocusLayerSizeV2.A });\n\n return layer;\n };\n\n // la altura del mapa en 375 debe ser = al width, mientras que en 560 tiene que ser 50% del width\n\n const initializeState = (selectedDealer: DealersData) => {\n if (selectedDealer) {\n if (selectedDealer.dmsInfo.dmsAvailable === true) {\n setDealerDmsInfo(selectedDealer.dmsInfo);\n }\n setDealerInfo(selectedDealer.markerInfo.dealerInfo);\n } else {\n setError(true);\n handleErrorLayer();\n }\n };\n\n useEffect(() => {\n if (points) {\n setPointsLoaded(true);\n }\n }, [points]);\n\n useEffect(() => {\n if (!loading) {\n initializeState(selectedDealer);\n }\n }, [selectedDealer, loading]);\n\n return error ? null : (\n \n \n \n \n ¿Quieres visitar nuestro Servicio Oficial?\n \n \n \n {dealerInfo && pointsLodaded ? (\n \n
    \n \n \n \n {dealerDmsInfo ? dealerDmsInfo.name : dealerInfo.name}\n \n \n \n {\n e.preventDefault();\n initializeState(selectedDealer);\n setSelectedJourney();\n }}\n ariaLabel=\"aria label\"\n >\n Pide tu cita\n \n \n \n Dirección\n \n \n {dealerInfo.address}, {dealerInfo.zipCode} {dealerInfo.city}\n \n \n \n \n \n Datos de contacto\n \n
    \n
    \n \n
    \n \n {dealerDmsInfo ? dealerDmsInfo.phone : dealerInfo.phone} \n \n
    \n
    \n
    \n \n
    \n \n {dealerDmsInfo ? dealerDmsInfo.email : dealerInfo.mail}\n \n
    \n
    \n {!dealerDmsInfo ? null : (\n <>\n {dealerDmsInfo.pickupCarServiceAvailabe || dealerDmsInfo.replacementCarServiceAvailable ? (\n \n \n \n \n {' '}\n Servicios adicionales{' '}\n \n {dealerDmsInfo.pickupCarServiceAvailabe ? (\n
    \n
    \n \n
    \n Servicio de recogida y entrega \n
    \n ) : null}\n {dealerDmsInfo.replacementCarServiceAvailable ? (\n
    \n
    \n \n
    \n Coche de sustitución \n
    \n ) : null}\n
    \n
    \n ) : null}\n \n )}\n
    \n
    \n
    \n \n \n \n \n ) : (\n \n
    \n \n Cargando los datos de la instalación\n
    \n \n )}\n
    \n );\n};\n","import { useWindowWidth } from '@react-hook/window-size';\nimport {\n Breakpoints,\n BreakpointWrapper,\n Container,\n ContainerGutter,\n ContainerPadding,\n ContainerWrap,\n CTA,\n Layout,\n styled,\n Text,\n TextAppearance,\n TextColor,\n} from '@volkswagen-onehub/components-core';\nimport { Close } from '@volkswagen-onehub/icons-core/dist/Close';\nimport { Phone } from '@volkswagen-onehub/icons-core/dist/Phone';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useDispatch, useSelector, useStore } from 'react-redux';\nimport {\n ScreenController,\n TriggerProps,\n useFeatureAppConfig,\n useOneFormContext,\n useFeatureServices,\n LayerManagerWrapper,\n useTrackingManager,\n useFeatureAppEnvironment,\n useOnScreen,\n} from 'src/feature-app';\nimport { RaceForm, useRaceFormController } from 'src/forms';\nimport { GenericErrorLayer } from 'src/components';\nimport { OneFormState } from 'src/types';\nimport { CloseHandleV2, FocusLayerSizeV2 } from '@volkswagen-onehub/layer-manager';\n\nconst RaceDiv = styled.div`\n position: fixed;\n right: 10px;\n bottom: 5%;\n z-index: 2;\n\n & button {\n background-color: #ffaa27;\n border: 2px solid #ffaa27;\n color: #001e50;\n }\n\n & button[disabled] {\n background-color: rgb(223, 228, 232);\n border: 2px solid rgb(223, 228, 232);\n }\n`;\nexport function RaceTrigger(props: TriggerProps) {\n const config = useFeatureAppConfig();\n return config.trigger === 'race' ? (\n }\n closeLayerCallback={close}\n handleAreYouSureLayer={() => null}\n formType='module'\n />\n ) : (\n \n );\n}\n\nconst Box = styled.div`\n width: 100%;\n border: 2px solid #ffaa27;\n height: 100%;\n`;\n\nconst StyledImage = styled.img`\n height: auto;\n width: 100%;\n\n @media screen and (min-width: 960px) {\n width: var(--size-grid008);\n }\n\n @media screen and (min-width: 1280px) {\n width: var(--size-grid007);\n }\n @media screen and (min-width: 1920px) {\n width: var(--size-grid006);\n }\n`;\n\nconst ImageWrapper = styled.div`\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 24px;\n @media screen and (min-width: 960px) {\n margin-bottom: 0px;\n }\n`;\nconst ContentWrapper = styled.div`\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n width: 100%;\n\n @media screen and (min-width: 960px) {\n width: var(--size-grid009);\n }\n @media screen and (min-width: 1280px) {\n width: var(--size-grid010);\n }\n @media screen and (min-width: 1920px) {\n width: var(--size-grid011);\n }\n`;\nconst ImageAndContentWrapper = styled.div`\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n\n @media screen and (min-width: 960px) {\n flex-direction: row;\n gap: var(--size-grid001);\n }\n\n @media screen and (min-width: 2560px) {\n padding-top: calc(var(--size-grid001) / 2);\n padding-bottom: calc(var(--size-grid001) / 2);\n }\n`;\n\nexport const RaceTriggerFullScreen = () => {\n const { raceCellphone } = useSelector((state: OneFormState) => state.formData.fields);\n const { isSent, isSending, isPristine, disabledButton, error, sendForm, reset, setIsPristine, successful, retry } =\n useRaceFormController(raceCellphone);\n const ref = useRef(null);\n const containerRef = useRef(null);\n const isVisible = useOnScreen(containerRef);\n const [copyWidth, setCopyWidth] = useState(0);\n const { initializeForm } = useOneFormContext();\n const windowWidth = useWindowWidth();\n const dispatch = useDispatch();\n const store = useStore();\n const env = useFeatureAppEnvironment();\n const layerManager = useFeatureServices()['layer-manager'];\n const trackingManager = useTrackingManager();\n const firstView = useRef(true);\n\n useEffect(() => {\n if (ref) {\n setCopyWidth(ref.current.offsetWidth);\n }\n }, [windowWidth]);\n\n useEffect(() => {\n // Disparamos el evento de analítica solo cuando el trigger es visible en pantalla.\n if (isVisible && firstView.current) {\n trackingManager.trackFormLoadRace();\n firstView.current = false;\n }\n }, [isVisible]);\n\n useEffect(() => {\n if (raceCellphone && isPristine) {\n // bug al enviar el formulario y volver a abrirlo, se puede reenviar sin introducir teléfono.\n dispatch({ type: 'UPDATE_FIELDS', payload: { raceCellphone: undefined } });\n }\n }, [raceCellphone, isPristine]);\n\n useEffect(() => {\n if (error) {\n handleErrorLayer();\n }\n }, [error]);\n\n useEffect(() => { }, []);\n\n const renderErrorScreen = (state: any, close: CloseHandleV2) => {\n return (\n \n {\n retry();\n close({}, {}, {});\n }}\n icon={false}\n ctaTextAlign=\"left\"\n secondCta={\n {\n reset();\n close({}, {}, {});\n }}\n >\n Volver a probar más tarde\n \n }\n />\n \n );\n };\n\n const handleErrorLayer = () => {\n layerManager.openFocusLayer(renderErrorScreen, {}, { size: FocusLayerSizeV2.A });\n };\n\n return (\n <>\n
    \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n
    \n \n Habla con un experto\n \n
    \n \n ¿Te gustaría preguntar algo sobre la mecánica de tu coche? ¿Se ha encendido una luz que no\n identificas? Tenemos las respuestas que necesitas.\n \n
    \n
    \n \n \n
    \n
    \n \n
    \n \n
    \n \n );\n};\n\nexport const RaceTriggerPopUp = ({ setSelectedFocusJourney, setCTALabel, selectedFocusJourney }: TriggerProps) => {\n const [ctaDisabled, setCtaDisabled] = useState(false);\n const trackingManager = useTrackingManager();\n\n useEffect(() => {\n if (!selectedFocusJourney && ctaDisabled) {\n setCtaDisabled(false);\n }\n }, [selectedFocusJourney]);\n\n useEffect(() => {\n trackingManager.trackFormLoadRace();\n }, []);\n\n return (\n \n }\n onClick={() => {\n setSelectedFocusJourney();\n setCTALabel('Te llamamos');\n setCtaDisabled(true);\n }}\n stretchContent\n >\n Habla con un experto\n \n \n );\n};\n\nconst TitleDiv = styled.div`\n background-color: #f2ad47;\n`;\nconst TitleInside = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n\nconst CloseDiv = styled.div`\n cursor: pointer;\n`;\n\ninterface RacePopUpProps {\n setCtaDisabled: React.Dispatch>;\n}\n\nconst RacePopUp = ({ setCtaDisabled }: RacePopUpProps) => {\n const { closeLayer } = useOneFormContext();\n const { fields } = useSelector((state: OneFormState) => state.formData);\n const { raceCellphone } = fields;\n const { isSent, isSending, isPristine, disabledButton, error, sendForm, retry, setIsPristine, successful } =\n useRaceFormController(raceCellphone);\n const ref = useRef(null);\n const [copyWidth, setCopyWidth] = useState(0);\n const windowWidth = useWindowWidth();\n const dispatch = useDispatch();\n\n useEffect(() => {\n if (ref) {\n setCopyWidth(ref.current.offsetWidth);\n }\n }, [windowWidth]);\n\n useEffect(() => {\n if (raceCellphone && isPristine) {\n // bug al enviar el formulario y volver a abrirlo, se puede reenviar sin introducir teléfono.\n dispatch({ type: 'UPDATE_FIELDS', payload: { raceCellphone: undefined } });\n }\n }, [raceCellphone, isPristine]);\n\n return (\n <>\n \n \n \n \n Habla con un experto\n \n {\n closeLayer();\n setCtaDisabled(false);\n }}\n >\n \n \n \n \n \n\n \n {!error ? (\n <>\n
    \n \n ¿Te gustaría preguntar algo sobre la mecánica de tu coche? ¿Se ha encendido una luz que no identificas?\n Tenemos las respuestas que necesitas.\n \n
    \n \n \n \n ) : (\n \n )}\n \n \n );\n};\n\ninterface ErrorPageProps {\n retry: () => void;\n close: () => void;\n setCtaDisabled: React.Dispatch>;\n}\n\nconst LegalWrapper = styled.div`\n color: #6a767d;\n`;\n\nconst Legal = () => {\n return (\n \n \n Tu número de teléfono será tratado por Volkswagen Group España Distribución, S.A.U. como responsable del\n tratamiento con el fin de contactar contigo. Si quieres más información, puedes consultar nuestra{' '}\n \n \n política de privacidad\n \n .\n \n \n );\n};\n\nconst ErrorPage = ({ retry, close, setCtaDisabled }: ErrorPageProps) => {\n return (\n <>\n \n \n Uy, algo ha pasado\n \n \n Por alguna razón no hemos podido guardar tu petición. ¿Lo intentamos de nuevo?\n \n \n \n {\n retry();\n }}\n >\n Reintentar\n \n {\n close();\n setCtaDisabled(false);\n }}\n >\n Volver a probar más tarde\n \n \n \n );\n};\n","import {\n Breakpoints,\n BreakpointWrapper,\n Container,\n ContainerGutter,\n ContainerPadding,\n ContainerWrap,\n CTA,\n Layout,\n styled,\n Text,\n TextAlignment,\n TextAppearance,\n ThemeProvider,\n} from '@volkswagen-onehub/components-core';\nimport React from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport {\n useFaContent,\n} from 'src/feature-app';\nimport { OneFormState } from 'src/types';\nimport { TriggerCitaProps } from 'src/triggers';\nimport { NuevaCitaPosventaFormController } from '../forms/CitaPosventa/NuevaCitaPosventa';\nimport { RaceTrigger } from './RaceTrigger';\n\ninterface contentProps {\n themeColor: 'main' | 'inverted' | 'image';\n}\n\nconst Content = styled.div`\n overflow: hidden;\n display: flex;\n justify-content: center;\n align-items: center;\n background: ${(props) =>\n props.themeColor === 'inverted' ? 'radial-gradient(circle at bottom, #00437a 0%, #001e50 100%)' : '#FFFFFF'};\n padding: ${(props) => (props.themeColor === 'inverted' ? '44px 0' : '0')};\n\n @media all and (min-width: 560px) {\n padding: ${(props) => (props.themeColor === 'inverted' ? '68px 0' : '0')};\n }\n @media all and (min-width: 1600px) {\n padding: ${(props) => (props.themeColor === 'inverted' ? '84px 0' : '0')};\n }\n\n & > div {\n width: 100%;\n }\n`;\n//background-color: ${(props) => props.theme.global.backgroundColor};\n\nconst CenterCTA = styled.div`\n text-align: center;\n`;\nexport function CitaPosventaDefaultTrigger({\n setSelectedJourney,\n setCTALabel,\n setSelectedFocusJourney,\n selectedFocusJourney,\n theme,\n getTitle,\n getBodyCopy,\n getCtaLabel,\n getCtaRegister,\n}: TriggerCitaProps) {\n const { formInfo } = useSelector((state: OneFormState) => state);\n const { userIsAuthenticated } = formInfo;\n const faContent = useFaContent();\n const dispatch = useDispatch();\n const useLoggedJourney = false; // De momento no es necesario usar todas las funciones del journey logueado/no logueado, tan solo el fill de los datos\n\n return (\n <>\n \n \n \n \n \n \n
    \n \n {getBodyCopy()}\n \n \n \n \n {\n dispatch({ type: 'RESET_STATE' });\n setCTALabel(getCtaLabel());\n setSelectedJourney();\n }}\n stretchContent\n >\n {getCtaLabel()}\n \n \n\n \n {\n dispatch({ type: 'RESET_STATE' });\n setCTALabel(getCtaLabel());\n setSelectedJourney();\n }}\n >\n {getCtaLabel()}\n \n \n \n {!userIsAuthenticated && useLoggedJourney ? (\n \n \n {getCtaRegister('Regístrate')} o {getCtaRegister('inicia sesión')} para disfrutar de una mejor\n experiencia.\n \n \n ) : null}\n \n \n \n \n \n {faContent?.race === 'true' ? (\n \n ) : null}\n \n );\n}\n","import React, { useEffect } from 'react';\nimport { NuevaCitaPosventaFormController } from 'src/forms';\nimport { TriggerProps, useFaContent } from 'src/feature-app';\nimport { CitaPosventaCalculadoraForm, CitaPosventaBonosForm } from '../forms/CitaPosventa/CitaPosventaEmbedded';\n\nexport function CitaPosventaEmbeddedTrigger({ setSelectedJourney }: TriggerProps) {\n const faContent = useFaContent();\n\n switch (faContent.featureApp) {\n case 'es-calculadora':\n return ;\n case 'es-bono':\n return ;\n case 'es-mis_beneficios':\n return ;\n }\n return null;\n}\n","import { useScrollPosition } from '@n8tb1t/use-scroll-position';\nimport {\n Breakpoints,\n Container,\n ContainerGutter,\n ContainerHorizontalAlignment,\n ContainerPadding,\n ContainerWrap,\n CTA,\n Image,\n Layout,\n styled,\n Text,\n TextAlignment,\n TextAppearance,\n ThemeProvider,\n} from '@volkswagen-onehub/components-core';\nimport React, { useState } from 'react';\nimport { useFaContent, useGetDealers } from 'src/feature-app';\nimport { TriggerCitaProps } from 'src/triggers';\nimport { NuevaCitaPosventaFormController } from '../forms/CitaPosventa/NuevaCitaPosventa';\nimport { useDispatch } from 'react-redux';\n\n\nconst MediaWrapper = styled.div<{ scrollY: number }>`\n transform: ${(props) => `translateY(${props.scrollY / 2}px)`};\n grid-area: 1 / 1 / 2 / 25;\n overflow: hidden;\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100vw;\n height: 70vh;\n\n & img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: 66% 50%;\n }\n`;\n\nconst CTAWrapper = styled.div`\n display: inline-block;\n\n & a {\n color: #ffffff;\n font-weight: bold;\n }\n & svg {\n fill: #ffffff;\n width: 17px;\n height: 14px;\n }\n`;\n\nconst ContentStage = styled.div<{ themeColor: string }>`\n overflow: hidden;\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n background: ${(props) =>\n props.themeColor === 'inverted' ? 'radial-gradient(circle at bottom, #00437a 0%, #001e50 100%)' : '#FFFFFF'};\n\n & > div {\n width: 100%;\n }\n`;\n\nconst ContainerNew = styled.div`\n display: grid;\n grid-template-rows: 70vh;\n grid-auto-rows: minmax(min-content, max-content);\n grid-template-columns: repeat(24, 1fr);\n`;\n\nexport const CitaPosventaStageTrigger = ({\n setSelectedJourney,\n setCTALabel,\n theme,\n getTitle,\n getBodyCopy,\n getCtaLabel,\n getIntro,\n}: TriggerCitaProps) => {\n const [scrollY, setScrollY] = useState(-window.scrollY);\n const faContent = useFaContent();\n const dispatch = useDispatch();\n\n useScrollPosition(({ prevPos, currPos }) => {\n setScrollY(currPos.y);\n }, []);\n\n return (\n \n \n \"Volkswagen\"\n \n
    \n \n \n \n \n \n \n {getIntro()}\n \n \n {/* Como en Volkswagen, en ningún sitio */}\n
    \n \n \n {getBodyCopy(TextAlignment.left)}\n \n \n \n {\n dispatch({ type: 'RESET_STATE' });\n setCTALabel(getCtaLabel());\n setSelectedJourney();\n }}\n >\n {getCtaLabel()}\n \n \n \n \n \n \n
    \n \n );\n};\n","import { CTA, Text, TextAlignment, TextAppearance, WhiteSpace } from '@volkswagen-onehub/components-core';\nimport React, { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport {\n CitaPreviaTile,\n CitaPreviaTileGrid,\n TriggerProps,\n useFaContent,\n useFeatureAppConfig,\n useFeatureServices,\n useGetDealers,\n useTransformToHtml,\n} from 'src/feature-app';\nimport { useGetAuthService } from 'src/feature-app/hooks/use-get-auth-service';\nimport { OneFormState } from 'src/types';\nimport { NuevaCitaPosventaFormController } from '../forms/CitaPosventa/NuevaCitaPosventa';\nimport { CitaPosventaDefaultTrigger, CitaPosventaStageTrigger } from './';\nexport interface TriggerCitaProps extends TriggerProps {\n theme?: 'main' | 'inverted' | 'image';\n getCtaLabel: () => string;\n getBodyCopy: (textAlignment?: TextAlignment) => JSX.Element;\n getTitle: () => {\n __html: string;\n };\n getCtaRegister: (copy: string) => JSX.Element;\n getIntro: () => string;\n setSelectedFocusJourney?: any\n}\n\nexport function CitaPosventaTrigger({ setSelectedJourney, setCTALabel, setSelectedFocusJourney }: TriggerProps) {\n const config = useFeatureAppConfig();\n const faContent = useFaContent();\n const userInteractionService = useFeatureServices()['user-interaction-service'];\n const { formData, formInfo } = useSelector((state: OneFormState) => state);\n const { userIsAuthenticated } = formInfo;\n const { name } = formData.fields;\n const { dealerName } = useGetDealers();\n const authService = useGetAuthService();\n const useLoggedJourney = false; // De momento no es necesario usar todas las funciones del journey logueado/no logueado, tan solo el fill de los datos\n\n const [theme, setTheme] = useState<'main' | 'inverted' | 'image'>('inverted');\n\n const getCtaLabel = () => (faContent?.cta ? faContent.cta : 'Pide cita en tu taller');\n\n const getIntro = () => (faContent?.intro ? faContent.intro : '');\n\n const alternativeHeadline = '¿Necesitas pasar por el taller?';\n const getTitle = () => {\n if (userIsAuthenticated && useLoggedJourney) {\n return faContent?.['headline-logged']\n ? useTransformToHtml(faContent?.['headline-logged'])\n : useTransformToHtml('Usuario Logueado');\n }\n return faContent?.headline ? useTransformToHtml(faContent.headline) : useTransformToHtml(alternativeHeadline);\n };\n\n const getBodyCopy = (textAlignment?: TextAlignment) => {\n if (userIsAuthenticated && useLoggedJourney) {\n return faContent?.['bodycopy-logged'] ? (\n \n
    \n \n ) : (\n \n
    hola')} />\n \n );\n }\n return faContent?.bodycopy ? (\n \n
    \n \n ) : dealerName ? (\n \n Elige el día y la hora que prefieras para que cuiden de tu Volkswagen en\n {dealerName}.\n \n ) : (\n \n Elige el día, la hora y el Servicio Oficial que prefieras para que cuiden de tu Volkswagen.\n \n );\n };\n\n const getCtaRegister = (copy: string) => {\n return (\n {\n e.preventDefault();\n authService.login();\n }}\n >\n {copy}\n \n );\n };\n\n useEffect(() => {\n if (faContent?.modo === 'Light') {\n setTheme('main');\n }\n if (faContent?.userInteraction === 'true') {\n userInteractionService.register('es-oneform::cita-posventa', {\n action: () => {\n // setCTALabel(getCtaLabel());\n setSelectedJourney();\n },\n });\n }\n }, []);\n\n return config.trigger === 'cita-posventa-tile-grid' ? (\n \n ) : config.trigger === 'cita-posventa-tile' ? (\n \n ) : faContent.isCitaPosventaStageOrDefault === 'Stage' ? (\n \n ) : (\n \n );\n}\n","import {\n Breakpoints,\n BreakpointWrapper,\n Container,\n ContainerGutter,\n ContainerPadding,\n ContainerWrap,\n CTA,\n Layout,\n styled,\n Text,\n TextAlignment,\n TextAppearance,\n ThemeProvider,\n} from '@volkswagen-onehub/components-core';\nimport React from 'react';\nimport { TriggerProps, useFaContent, useTransformToHtml } from 'src/feature-app';\nimport { EmpresasForm } from 'src/forms';\nimport { useDispatch } from 'react-redux';\n\nconst Content = styled.div`\n overflow: hidden;\n display: flex;\n justify-content: center;\n align-items: center;\n background: radial-gradient(circle at bottom, #00437a 0%, #001e50 100%);\n\n & > div {\n width: 100%;\n }\n`;\n\nconst CenterCTA = styled.div`\n text-align: center;\n`;\n\nexport function EmpresasTrigger(props: TriggerProps) {\n const { setSelectedJourney, setCTALabel } = props;\n const dispatch = useDispatch();\n\n const faContent = useFaContent();\n\n const getCtaLabel = () => (faContent?.cta ? faContent.cta : 'Pide presupuesto para tu proyecto');\n\n const alternativeHeadline = '¿Necesitas una flota de hasta 50 coches?';\n const getTriggerHeadline = () =>\n faContent?.headline ? useTransformToHtml(faContent.headline) : useTransformToHtml(alternativeHeadline);\n\n const alternativeBodyCopy = 'Solo cuéntanos qué estás buscando y te haremos una propuesta a medida.';\n const getTriggerbodycopy = () =>\n faContent?.bodycopy ? useTransformToHtml(faContent.bodycopy) : useTransformToHtml(alternativeBodyCopy);\n\n return (\n \n \n \n \n \n \n
    \n \n\n \n
    \n \n \n \n \n \n {\n dispatch({ type: 'RESET_STATE' });\n setCTALabel(getCtaLabel());\n setSelectedJourney();\n }}\n stretchContent\n >\n {getCtaLabel()}\n \n \n\n \n {\n dispatch({ type: 'RESET_STATE' });\n setCTALabel(getCtaLabel());\n setSelectedJourney();\n }}\n >\n {getCtaLabel()}\n \n \n \n \n \n \n \n \n );\n}\n","import {\n BreakpointWrapper,\n Breakpoints,\n styled,\n Text,\n TextAppearance,\n TextColor,\n TextAlignment,\n ThemeProvider,\n Container,\n ContainerPadding,\n ContainerHorizontalAlignment,\n CTA,\n} from '@volkswagen-onehub/components-core';\nimport { CloseHandleV2, FocusLayerSizeV2, LayerHandleV2, LayerManagerV2 } from '@volkswagen-onehub/layer-manager';\nimport React, { useEffect, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useDispatch, useStore, useSelector } from 'react-redux';\nimport {\n LayerManagerWrapper,\n useFeatureAppEnvironment,\n useFeatureServices,\n useOneFormContext,\n useTrackingManager,\n} from 'src/feature-app';\nimport { KoScreen, LoadingScreen } from '../../CitaPosventa/NuevaCitaPosventa/ConfirmarCitaLayer';\nimport { OneFormState } from 'src/types';\n\ninterface lastNavigationProps {\n refProps?: any;\n formMin?: any;\n setShowError?: any;\n}\n\nconst NavigationWrapper = styled.div`\n display: block;\n padding-top: 44px;\n`;\n\nexport const LastNavigationCEMOneShop = (props: lastNavigationProps) => {\n const { setShowError } = props;\n // const dispatch = useDispatch();\n const { handleShowFinalScreen, handleSubmit } = useOneFormContext();\n const { reset, getValues, triggerValidation } = useFormContext();\n const { fields } = useSelector((state: OneFormState) => state.formData);\n const [layerVisible, setLayerVisible] = useState(false);\n const [koLayer, setKoLayer] = useState>(null);\n const [koScreen, setKoScreen] = useState(false);\n\n const layerManager = useFeatureServices()['layer-manager'] as LayerManagerV2;\n const store = useStore();\n const env = useFeatureAppEnvironment();\n const dispatch = useDispatch();\n const trackingManager = useTrackingManager();\n const [isValid, setIsValid] = useState(false);\n\n //Loading and Ko layers\n\n const handleKoLayer = () => {\n const layer = layerManager.openFocusLayer(renderKoLayer, {}, { size: FocusLayerSizeV2.A });\n setKoLayer(layer);\n };\n\n const renderKoLayer = (state: any, close: CloseHandleV2) => {\n return (\n \n \n \n );\n };\n\n const handleLoadingScreenLayer = () => {\n const layer = layerManager.openFocusLayer(renderLoadingScreen, {}, { size: FocusLayerSizeV2.A });\n\n return layer;\n };\n\n const renderLoadingScreen = (state: any, close: CloseHandleV2) => {\n return (\n \n \n \n );\n };\n\n const handleConfirmarEnvio = async (e: any) => {\n const values = getValues();\n const isValid = await triggerValidation();\n setShowError(false);\n\n if (isValid) {\n setShowError(false);\n\n dispatch({ type: 'UPDATE_FIELDS', payload: values });\n\n trackingManager.trackFormCTAClick({\n contentId: 'Enviar',\n });\n\n const loadingLayer = handleLoadingScreenLayer();\n setLayerVisible(true);\n\n const value = await handleSubmit(e);\n\n loadingLayer.close();\n\n if (value) {\n handleShowFinalScreen();\n } else {\n handleKoLayer();\n }\n } else {\n setShowError(true);\n }\n };\n\n async function retrySubmit(e: any) {\n if (koLayer) {\n koLayer.close();\n }\n setKoScreen(false);\n const loadingLayer = handleLoadingScreenLayer();\n const value = await handleSubmit(e);\n loadingLayer.close();\n if (value) {\n handleShowFinalScreen();\n } else {\n handleKoLayer();\n setKoScreen(true);\n }\n }\n\n useEffect(() => {\n if (!layerVisible && koScreen) setKoScreen(false);\n }, [layerVisible]);\n\n useEffect(() => {\n if (fields.enviarInformacion) setIsValid(true);\n }, [fields]);\n\n useEffect(() => {\n dispatch({ type: 'UPDATE_FORM_ENDED', payload: true });\n }, []);\n\n return (\n \n \n \n Enviando este formulario, estás aceptando nuestra \n \n política de privacidad.\n \n \n \n\n \n \n \n {\n e.preventDefault();\n handleConfirmarEnvio(e);\n }}\n stretchContent\n >\n Enviar\n \n \n \n \n \n {\n e.preventDefault();\n handleConfirmarEnvio(e);\n }}\n >\n Enviar\n \n \n \n \n \n );\n};\n","import { Text, TextAppearance } from '@volkswagen-onehub/components-core';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector, useStore } from 'react-redux';\nimport { dpsSend } from 'src/bff';\nimport { RatingStars, DetalleMotivo, MultipleCTASelection } from 'src/components';\nimport { FormController, useOneFormContext } from 'src/feature-app';\nimport { getParamsForm } from 'src/feature-app/get-params-form';\nimport { OneElementTemplateFullScreen } from 'src/feature-app/Screen';\nimport { FormDataGroup, FormInfo, IdLead, MolecularResponse, OneFormState, Steps } from 'src/types';\nimport { formDataBuilder } from '../../format-fields';\nimport { useInitializeLEMForm } from '.';\nimport { ThankYouCEMOneShop, ConfirmacionCEMOneShop } from 'src/forms/Cem/CEM OneShop';\nimport { CEMOneShopFormProps } from './CEMOneShopController';\nimport { CTAsSiNo } from 'src/feature-app/InputsValues/CTAsObjects';\n\nexport enum CEMOneShopSteps {\n Atencion,\n Planificacion,\n Organizacion,\n ExplicacionConfiguracion,\n ExplicacionPersonalizacion,\n VehiculoProbado,\n MasInformacion,\n Confirmacion,\n}\n\nexport function CEMOneShopForm(props: CEMOneShopFormProps) {\n const { dpsData, idLead, idPerson, handleError, presubmit, trackFormLoad } = props;\n const [loadingPresubmit, setLoadingPresubmit] = useState(true);\n const { initializeForm } = useOneFormContext();\n const store = useStore();\n const dispatch = useDispatch();\n const stepsWithModel: Steps[] = [\n {\n title: (\n <>\n Tenemos curiosidad, \n ¿cómo fue la atención recibida?\n \n ),\n fields: (\n \n \n Nos gustaría saber si desde la Concesión te ayudaron en todo lo que necesitabas.\n \n \n \n }\n />\n ),\n screenIndex: CEMOneShopSteps.Atencion,\n name: 'Atencion',\n outputs: ['atencion'],\n outputsText: ['atencion'],\n outputsIsStars: true,\n },\n {\n title: (\n <>\n ¿Fue fácil planificar la entrega?\n \n ),\n fields: (\n \n \n Nos preguntamos si te ofrecieron opciones que se adaptaban a tus horarios.\n \n \n \n }\n />\n ),\n screenIndex: CEMOneShopSteps.Planificacion,\n name: 'Planificacion',\n outputs: ['planificacion'],\n outputsText: ['planificacion'],\n outputsIsStars: true,\n },\n {\n title: (\n <>\n ¿Estaba todo organizado el día de la entrega?\n \n ),\n fields: (\n \n \n Nos gustaría saber si te recibieron con puntualidad y estaba todo listo para llevarte tu T-Cross clic2go.\n \n \n
    \n }\n />\n ),\n screenIndex: CEMOneShopSteps.Organizacion,\n name: 'Organizacion',\n trueOrFalseQuestion: true,\n outputs: ['organizacion'],\n outputsText: ['organizacion'],\n },\n {\n title: (\n <>\n Una duda, \n ¿te explicaron cómo funcionaban y cómo se configuraban los asistentes de tu coche?\n \n ),\n fields: (\n \n \n Nos preguntamos si saliste del Concesionario sabiendo sacar el máximo partido a tu Volkswagen.\n \n \n
    \n }\n />\n ),\n screenIndex: CEMOneShopSteps.ExplicacionConfiguracion,\n name: 'ExplicacionConfiguracion',\n trueOrFalseQuestion: true,\n outputs: ['explicacionConfiguracion'],\n outputsText: ['explicacionConfiguracion'],\n },\n {\n title: (\n <>\n ¿Te explicaron cómo personalizar tu coche con Accesorios Originales?\n \n ),\n fields: (\n \n \n Nos preguntamos si en el Concesionario te informaron sobre la gama de Accesorios Volkswagen.\n \n \n
    \n }\n />\n ),\n screenIndex: CEMOneShopSteps.ExplicacionPersonalizacion,\n name: 'ExplicacionPersonalizacion',\n trueOrFalseQuestion: true,\n outputs: ['explicacionPersonalizacion'],\n outputsText: ['explicacionPersonalizacion'],\n },\n {\n title: (\n <>\n ¿Probaste tu T-Cross clic2go antes de salir del Concesionario?\n \n ),\n fields: (\n \n \n Nos preguntamos si te ayudaron a poner en práctica todo lo explicado durante la entrega.\n \n \n
    \n }\n />\n ),\n screenIndex: CEMOneShopSteps.VehiculoProbado,\n name: 'VehiculoProbado',\n trueOrFalseQuestion: true,\n outputs: ['vehiculoProbado'],\n outputsText: ['vehiculoProbado'],\n },\n {\n title: (\n <>\n Antes de terminar, \n ¿hay algo más que nos quieras contar?\n \n *\n \n \n ),\n fields: } />,\n screenIndex: CEMOneShopSteps.MasInformacion,\n name: 'MasInformacion',\n outputs: ['masInformacion'],\n outputsText: ['masInformacion'],\n },\n {\n fields: ,\n screenIndex: CEMOneShopSteps.Confirmacion,\n name: 'Confirmacion',\n outputs: ['confirmacion'],\n outputsText: ['confirmacion'],\n },\n ];\n\n const CEMOneShopData: Partial = {\n headers: {},\n fields: {\n formName: 'cem-oneshop',\n formType: 'otherform',\n pageCategory: 'Encuesta',\n }, // Analítica\n };\n\n useEffect(() => {\n const sendPresubmit = async () => {\n const result = await sendForm(true);\n\n if (!result) {\n handleError();\n }\n setLoadingPresubmit(false);\n };\n if (presubmit) {\n sendPresubmit();\n } else {\n setLoadingPresubmit(false);\n }\n }, []);\n\n const generateData = (data?: Partial) => {\n const { formData, dealersInfo }: OneFormState = store.getState();\n const { fields, headers } = formData;\n const { tc, today, url, device } = getParamsForm();\n\n return {\n\n 'headers[DESC_ID_CAMPAIGN]': 'PENDING',\n 'headers[PINCODE]': dpsData.pincode.pincodeResponse.params.pincode,\n 'headers[DESC_TOKEN]': 'VW_DDB_FRM_CEM_ONESHOP_CONTESTADO',\n 'headers[TC]': tc,\n 'headers[FECHA_INSERTION_DATE]': today,\n 'headers[DESC_URLORIGIN]': url,\n 'headers[DESC_ID_CLIMAPRO]': idPerson.ID_Person_DIM_IMP__c,\n 'headers[DESC_FORM_DETAIL]': 'CEM OneShop Contactado',\n 'headers[DESC_FORMOBJECTIVE]': 'Encuesta',\n 'headers[DESC_DEVICETYPE]': device,\n 'headers[DESC_CAMPAIGNBLOCK]': 'PENDIENTE',\n 'headers[DESC_BRAND]': 'VW',\n 'headers[COD_FORM_ID]': fields.formName ? `vw-oneform-${fields.formName}` : `vw-oneform-${data.fields.formName}`,\n\n 'fields[DESC_FORM_VERSION]': fields.formName\n ? `vw-oneform-${fields.formName}-${process.env.VERSION}`\n : `vw-oneform-${data.fields.formName}-${process.env.VERSION}`,\n 'fields[DESC_NAME]': idPerson.FirstName,\n 'fields[DESC_SURNAME_1]': idPerson.LastName,\n 'fields[DESC_SURNAME_2]': idPerson.TXT_2_Surname__c,\n 'fields[DESC_EMAIL_ADDRESS]': idPerson.TXT_Email__c,\n 'fields[NUM_CELLPHONE]': idPerson.NUM_Phone_mobile__c,\n 'fields[DESC_LOPD]': 'PERMITE',\n 'fields[DESC_TRANF_DATA_THIRD]': 'NO INFORMADO',\n 'fields[DESC_LSSI]': idPerson.LSSI__c === 'PERMITE' ? 'NO INFORMADO' : fields.lssi,\n 'fields[DESC_LOPD_GDPR_PERFILADO]': idPerson.LSSI__c === 'PERMITE' ? 'NO INFORMADO' : fields.tmk,\n 'fields[DESC_AUXFIELD1]': dpsData.rating,\n 'fields[DESC_AUXFIELD2]': fields.Atencion,\n 'fields[DESC_AUXFIELD3]': fields.Planificacion,\n 'fields[DESC_AUXFIELD4]': fields.Organizacion,\n 'fields[DESC_AUXFIELD5]': fields.ExplicacionConfiguracion,\n 'fields[DESC_AUXFIELD6]': fields.ExplicacionPersonalizacion,\n 'fields[DESC_AUXFIELD7]': fields.VehiculoProbado,\n 'fields[DESC_AUXFIELD8]': fields.MasInformacion,\n\n };\n };\n\n /**\n * Generamos la misma data que para el submit y eliminamos todos los campos que no son necesarios para el presubmit.\n */\n const generatePresubmitData = () => {\n const data = generateData(CEMOneShopData);\n\n delete data['headers[PINCODE]'];\n delete data['fields[DESC_NAME]'];\n delete data['fields[DESC_SURNAME_1]'];\n delete data['fields[DESC_SURNAME_2]'];\n delete data['fields[DESC_EMAIL_ADDRESS]'];\n delete data['fields[NUM_CELLPHONE]'];\n delete data['fields[DESC_AUXFIELD1]'];\n delete data['fields[DESC_AUXFIELD2]'];\n delete data['fields[DESC_AUXFIELD3]'];\n delete data['fields[DESC_AUXFIELD4]'];\n delete data['fields[DESC_AUXFIELD5]'];\n delete data['fields[DESC_AUXFIELD6]'];\n delete data['fields[DESC_AUXFIELD7]'];\n delete data['fields[DESC_AUXFIELD8]'];\n\n data['headers[DESC_FORM_DETAIL]'] = 'CEM OneShop Pregrabación';\n data['headers[DESC_TOKEN]'] = 'VW_DDB_FRM_CEM_ONESHOP_ENCUESTA';\n\n return data;\n };\n const generateSubmitData = () => generateData();\n\n const sendForm = (isPresubmit?: boolean): Promise => {\n return new Promise(async (resolve, reject) => {\n const data = isPresubmit ? generatePresubmitData() : generateSubmitData();\n //resolve(true);\n const dataStringified = JSON.stringify(data);\n const dataParsed = JSON.parse(dataStringified);\n const formData = formDataBuilder(dataParsed);\n\n const response = await dpsSend(formData);\n\n if (response && response.data && response.data.content && response.data.content.code === '200') {\n dispatch({ type: 'SET_FORM_RESPONSE', payload: response.data });\n resolve(true);\n } else {\n resolve(false);\n }\n });\n };\n\n const { loading, steps, firstStep, lastStep } = useInitializeLEMForm(stepsWithModel, idLead);\n\n useEffect(() => {\n const CEMOneShopInfo: Partial = {\n formStarted: true,\n sendFormCallback: sendForm,\n fullScreen: firstStep.fullScreen ? true : false,\n lastStep,\n numberOfScreens: steps.length,\n screenIndex: firstStep.screenIndex,\n formTheme: 'main',\n notALayer: true,\n step: firstStep,\n steps,\n stepsHistory: [0],\n thankYouComponent: ,\n };\n if (!loading) {\n initializeForm(CEMOneShopInfo, CEMOneShopData, true);\n trackFormLoad();\n }\n }, [loading]);\n\n return loading || loadingPresubmit || !steps ? null : ;\n}\n","import { Text } from '@volkswagen-onehub/components-core';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch, useStore } from 'react-redux';\nimport { getCarlines } from 'src/bff';\nimport { useFaContent, useFeatureServices } from 'src/feature-app';\nimport { CarlineBase, IdLead, Steps } from 'src/types';\n\nconst getLastItemOfSteps = (steps: Steps[]) => steps[steps.length - 1];\n\nconst propertyHasValue = (property: string) => property !== 'null';\n\nexport const checkIdLeadHasCarline = (idLead: IdLead) =>\n idLead &&\n idLead.NUM_COD_INTEREST_CARLINE__c &&\n idLead.DESC_Model__c &&\n propertyHasValue(idLead.NUM_COD_INTEREST_CARLINE__c) &&\n propertyHasValue(idLead.DESC_Model__c);\n\nexport function useInitializeLEMForm(defaultSteps: Steps[], idLead: IdLead) {\n const dispatch = useDispatch();\n const [loading, setLoading] = useState(true);\n\n const [steps, setSteps] = useState(defaultSteps);\n const [firstStep, setFirstStep] = useState(defaultSteps[0]);\n const [lastStep, setLastStep] = useState(getLastItemOfSteps(defaultSteps));\n\n const removeModelFromSteps = async () => {\n return new Promise((resolve) => {\n let updatedSteps = [...steps];\n const indexOfModelo = updatedSteps.findIndex((step) => step.name === 'Modelo');\n updatedSteps.splice(indexOfModelo, 1); // Eliminado el step de Modelo.\n updatedSteps[0].hidePreviousStep = true;\n const updatedStepsWithIndex = updatedSteps.map((step, index) => {\n step.screenIndex = index;\n return step;\n });\n\n setSteps(updatedStepsWithIndex);\n setFirstStep(updatedStepsWithIndex[0]);\n setLastStep(getLastItemOfSteps(updatedStepsWithIndex));\n\n resolve(true);\n });\n };\n\n useEffect(() => {\n const remove = async () => {\n await removeModelFromSteps();\n setLoading(false);\n };\n\n const requestCarlines = async () => {\n const carlines = await getCarlines();\n\n dispatch({ type: 'SET_CARLINES', payload: carlines });\n setSteps(defaultSteps);\n setLoading(false);\n };\n\n if (checkIdLeadHasCarline(idLead)) {\n remove();\n } else {\n requestCarlines();\n }\n }, []);\n\n return { loading, steps, firstStep, lastStep };\n}\n","import { Spinner, Text, styled } from '@volkswagen-onehub/components-core';\nimport dayjs from 'dayjs';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useFeatureServices, useTrackingManager } from 'src/feature-app';\nimport { DpsData, EsOneformCoreServiceV1 } from 'src/feature-service/es-oneform-core-feature-service/types';\nimport { CarlineBase, DealersData, IdLead, IdPerson } from 'src/types';\nimport { CEMOneShopForm } from './CEMOneShopForm';\nimport { GenericErrorLayer } from 'src/components/layers';\nimport { checkIdLeadHasCarline } from './use-initialize-lem-form';\nimport { createPincodeEntity } from '../../dps-utils';\nimport { LoadingEncuestas } from 'src/components';\n\nexport interface CEMOneShopFormProps {\n idLead: IdLead;\n idPerson: IdPerson;\n dpsData: DpsData;\n handleError: () => void;\n presubmit: boolean;\n trackFormLoad: () => void;\n showPantallaModelo: boolean;\n}\n\nexport function CEMOneShopController() {\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(false);\n const [usado, setUsado] = useState(false);\n const [presubmit, setPresubmit] = useState(false);\n const [showPantallaModelo, setShowPantallaModelo] = useState(false);\n const today = dayjs(new Date());\n const trackingManager = useTrackingManager();\n const dpsDataRef = useRef(null);\n const idLeadRef = useRef(null);\n const idPersonRef = useRef(null);\n const dispatch = useDispatch();\n const oneFormService = useFeatureServices()['es:oneform-core'] as EsOneformCoreServiceV1;\n\n const handleNext = (value: any) => {};\n const handleComplete = () => {\n const dpsData = oneFormService.getDpsData();\n\n if (dpsData.pincode === null || dpsData.pincode.noPincodeFound || dpsData.pincode.pincodeError) {\n handleError();\n } else if (dpsData.pincode.pincodeUsed) {\n setUsado(true);\n setLoading(false);\n } else {\n const idLead = createPincodeEntity(dpsData, 'LEAD');\n const idPerson = createPincodeEntity(dpsData, 'PERSON');\n\n dpsDataRef.current = dpsData;\n idLeadRef.current = idLead;\n idPersonRef.current = idPerson;\n setLoading(false);\n }\n };\n\n const handleError = () => {\n setError(true);\n setLoading(false);\n };\n\n const trackFormLoad = () => {\n if (idLeadRef.current) {\n const customDealer: DealersData = {\n kvps: idLeadRef.current.TXT_DESC_DEALER_CODE__c,\n name: idLeadRef.current.DESC_Dealer_Code__c,\n markerInfo: { dealerInfo: { zipCode: idLeadRef.current.TXT_Postal_Code__c } },\n };\n dispatch({ type: 'SET_SELECTED_DEALER', payload: customDealer });\n\n if (checkIdLeadHasCarline(idLeadRef.current)) {\n setShowPantallaModelo(true);\n\n const carline: Partial = {\n title: idLeadRef.current.DESC_Model__c,\n code: Number(idLeadRef.current.NUM_COD_INTEREST_CARLINE__c),\n };\n\n dispatch({ type: 'SET_SELECTED_CARLINE', payload: carline });\n }\n }\n\n trackingManager.trackFormLoad();\n };\n\n useEffect(() => {\n const oneFormCoreDpsIsLoaded = oneFormService.getLoadedState();\n\n oneFormCoreDpsIsLoaded.subscribe({\n next(value) {\n handleNext(value);\n },\n error(err) {\n console.error(err);\n handleError();\n },\n complete() {\n handleComplete();\n },\n });\n }, []);\n\n // función para layer de error\n const handleTryAgain = async () => {\n // oneFormService.\n setError(false);\n setLoading(true);\n await oneFormService.retryPincodeLoad();\n handleComplete();\n };\n\n if (loading) {\n return ;\n } else if (error) {\n return (\n <>\n \n \n );\n } else if (usado) {\n return (\n <>\n \n \n );\n } else {\n return (\n <>\n \n \n \n \n );\n }\n}\n","import React, { useState, useEffect} from 'react';\nimport { CTA, Text, TextAppearance, TextColor, TextAlignment } from '@volkswagen-onehub/components-core';\nimport styled from 'styled-components';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useTrackingManager } from 'src/feature-app/hooks';\nimport { OneElementTemplateFullScreen } from 'src/feature-app';\nimport { OneFormState } from 'src/types';\nimport {LastNavigationCEMOneShop} from '.';\n\nconst CTAWrapper = styled.div`\n text-align: left;\n margin: -10px;\n margin-top: 32px;\n & > button {\n margin: 12px;\n width: 81px;\n }\n`;\n\nconst ErrorMessage = styled.div`\n width: max-content;\n padding: 4px 8px;\n border-radius: 4px;\n background-color: #e4002c;\n color: #ffffff;\n`;\n\nfunction Fields() {\n const trackingManager = useTrackingManager();\n const dispatch = useDispatch();\n const [ selectedValue, setSelectedValue] = useState('');\n const { control, register, setValue } = useFormContext();\n const { fields } = useSelector((state: OneFormState) => state.formData);\n const [showError, setShowError] = useState(false);\n\n const CTAValues = ['Sí', 'No'];\n\n useEffect(() => {\n if (fields.enviarInformacion) setSelectedValue(fields.enviarInformacion);\n }, []);\n\n return (\n <>\n \n {CTAValues.map((el, i) => {\n return (\n {\n e.preventDefault();\n trackingManager.trackFormButtonClick({\n contentId: el,\n });\n dispatch({ type: 'UPDATE_FIELDS', payload: { enviarInformacion: el } });\n setValue('enviarInformacion', el);\n setSelectedValue(el);\n }}\n >\n {el}\n \n }\n key={i}\n name='enviarInformacion'\n control={control}\n />\n );\n })}\n \n {\n showError ? (\n \n \n Necesitamos esta información para seguir\n \n \n ) : null\n }\n \n \n );\n}\n\nexport function CEMOneShopLastScreenFields() {\n return (\n } />\n );\n}\n","import { Breakpoints, styled, Text, TextAppearance, Layout } from '@volkswagen-onehub/components-core';\nimport React, { useEffect } from 'react';\nimport { LssiTkmQuestions, PoliticaPrivacidad, LastNavigation } from 'src/components';\nimport { useDispatch } from 'react-redux';\nimport { IdPerson } from 'src/types';\n\nconst GeneralconfirmacionWrapper = styled.div``;\n\ninterface ConfirmacionCEMOneShopProps {\n idPerson: IdPerson;\n}\nexport const ConfirmacionCEMOneShop = (props: ConfirmacionCEMOneShopProps) => {\n const dispatch = useDispatch();\n\n useEffect(() => {\n if (props.idPerson.LSSI__c === 'PERMITE') {\n dispatch({ type: 'UPDATE_FIELDS', payload: { lssi: 'NO INFORMADO', tkm: 'NO INFORMADO' } });\n } \n }, [props.idPerson]);\n\n return (\n \n \n {props.idPerson.LSSI__c === 'PERMITE' ? (\n
    \n \n ¿Listo para enviar?\n \n
    \n ) : (\n \n ¡Gracias! Unas últimas preguntas para tenerlo todo claro\n \n )}\n\n {props.idPerson.LSSI__c === 'PERMITE' ? null : (\n \n )}\n\n \n\n \n \n
    \n );\n};\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useTrackingManager, getTrackingForm} from 'src/feature-app';\nimport { RenderController } from 'src/feature-app/Screen';\nimport { OneFormState, Steps } from 'src/types';\nimport { ThankYouTitle, ThankYouFields } from 'src/components';\n\nexport const ThankYouCEMOneShop = () => {\n const { formInfo } = useSelector((state: OneFormState) => state);\n const { formResponse } = formInfo;\n\n const trackingManager = useTrackingManager();\n const dispatch = useDispatch();\n\n useEffect(() => {\n dispatch({ type: 'SET_FORM_SUBMITTED', payload: true });\n\n trackingManager.trackFormSubmissionSuccessMessageLoad(\n {\n contentId: undefined,\n },\n getTrackingForm(formResponse)\n );\n }, []);\n\n const screen: Steps = {\n title: ,\n fields: ,\n };\n return (\n \n );\n};\n","import React from 'react';\nimport { ScreenController, useFaContent } from 'src/feature-app';\nimport { CemController, LEMController, NoCompraController, NoRenovacionController } from 'src/forms';\nimport { CEMOneShopController } from \"src/forms/Cem/CEM OneShop\";\n\nexport function EncuestasTrigger() {\n const faContent = useFaContent();\n\n const renderTrigger = (Controller: JSX.Element) => {\n return (\n <>\n null}\n formType = 'inPage'\n />\n \n );\n };\n\n switch (faContent?.encuesta) {\n case 'CEM - POSVENTA':\n case 'CEM - VENTA':\n return renderTrigger();\n case 'CEM - ONESHOP':\n return renderTrigger();\n case 'LEM':\n return renderTrigger();\n case 'NO COMPRA':\n return renderTrigger();\n case 'NO RENOVACIÓN':\n return renderTrigger();\n\n default:\n throw new Error('No property encuesta in FA Content.');\n }\n}\n","import React from 'react';\nimport { TriggerProps, useInitiateBonosTriggers } from 'src/feature-app';\nimport { PresupuestoForm } from 'src/forms';\nimport { FormDataGroup } from 'src/types';\n\nconst leadBonoPartialData: Partial = {\n headers: { DESC_FORMOBJECTIVE: 'Presupuesto' },\n fields: {\n formFields: {},\n formularioFlag: 'presupuesto',\n formName: 'lead-presupuesto-bono',\n formType: 'quote',\n pageCategory: 'Presupuesto',\n },\n};\n\nexport function LeadBonoTrigger({ setSelectedJourney }: TriggerProps): JSX.Element {\n useInitiateBonosTriggers(\n setSelectedJourney,\n \n );\n\n return null;\n}\n","import React from 'react';\nimport { TriggerProps, useInitiateMatchTriggers } from 'src/feature-app';\nimport { PresupuestoForm } from 'src/forms';\nimport { FormDataGroup } from 'src/types';\n\nconst leadMatchPartialData: Partial = {\n headers: { DESC_FORMOBJECTIVE: 'Presupuesto' },\n fields: {\n formFields: {},\n formularioFlag: 'presupuesto',\n formName: 'lead-match',\n formType: 'quote',\n pageCategory: 'Presupuesto',\n },\n};\n\nexport function LeadMatchTrigger({ setSelectedJourney }: TriggerProps): JSX.Element {\n useInitiateMatchTriggers(\n setSelectedJourney,\n \n );\n\n return null;\n}\n","import React, { useEffect } from 'react';\nimport { TriggerProps } from 'src/feature-app';\nimport { OfertaForm } from 'src/forms';\n\nexport function LeadOfertasTrigger({ setSelectedJourney }: TriggerProps): JSX.Element {\n\n useEffect(() => {\n setSelectedJourney(, true);\n }, []);\n\n return null;\n}\n","import React, { useEffect } from 'react';\nimport { TriggerProps, useFaContent } from 'src/feature-app';\nimport { StockForm } from 'src/forms/Leads/Stock/StockForm';\n\nexport function LeadStockTrigger({ setSelectedJourney }: TriggerProps): JSX.Element {\n const faContent = useFaContent();\n\n useEffect(() => {\n setSelectedJourney(, true);\n }, []);\n\n return null;\n}\n","import React from 'react';\nimport { EmbeddedFeatureApp, TriggerProps, useFaContent } from 'src/feature-app';\nimport { LeadBonoTrigger } from './LeadBonoTrigger';\nimport { LeadMatchTrigger } from './LeadMatchTrigger';\nimport { LeadOfertasTrigger } from './LeadOfertasTrigger';\nimport { LeadStockTrigger } from './LeadStockTrigger';\n\nconst renderTrigger = (featureApp: EmbeddedFeatureApp, props: TriggerProps) => {\n if (featureApp === 'es-ofertas') {\n return ;\n } else if (featureApp === 'es-stock-teaser') {\n return ;\n } else if (featureApp === 'es-match') {\n return ;\n }else if (featureApp === 'es-bono') {\n return ;\n }\n\n return null;\n};\n\nexport function LeadEmbededTrigger(props: TriggerProps) {\n const faContent = useFaContent();\n\n return renderTrigger(faContent.featureApp, props);\n}\n","import {\n Breakpoints,\n BreakpointWrapper,\n Container,\n ContainerGutter,\n ContainerPadding,\n ContainerWrap,\n CTA,\n Layout,\n styled,\n Text,\n TextAppearance,\n TextAlignment,\n ThemeProvider,\n} from '@volkswagen-onehub/components-core';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { TriggerProps, useTransformToHtml, useFeatureServices } from 'src/feature-app';\nimport { useFaContent, OneFormContent } from 'src/feature-app/hooks';\nimport { CitaVentaForm, MasInformacionForm, PresupuestoForm, TestDriveForm, StockForm } from 'src/forms';\nimport { Calc, Calendar, Info, Interior } from 'src/icons-core-imports';\ninterface ContentProps {\n centerGradient?: boolean;\n themeColor: 'main' | 'inverted' | 'image';\n}\n\nconst Content = styled.div`\n overflow: hidden;\n display: flex;\n justify-content: center;\n align-items: center;\n & > div {\n width: 100%;\n }\n\n background: ${(props) =>\n props.themeColor === 'main'\n ? '#ffffff'\n : `radial-gradient(circle at bottom, #00437A 0%, ${props.theme.global.backgroundColor} 100%)`};\n\n @media all and (min-width: 960px) {\n background: ${(props) =>\n props.themeColor === 'main'\n ? '#ffffff'\n : props.centerGradient\n ? `radial-gradient(circle at bottom, #00437A 0%, ${props.theme.global.backgroundColor} 100%)`\n : `radial-gradient(circle at right, #00437A 0%, ${props.theme.global.backgroundColor} 100%)`};\n }\n`;\nconst TextWrapper = styled.div`\n padding-bottom: 44px;\n\n @media all and (min-width: 960px) {\n padding-bottom: 0;\n padding-right: var(--size-grid002);\n width: var(--size-grid012);\n }\n @media all and (min-width: 1280px) {\n padding-right: var(--size-grid002);\n width: var(--size-grid013);\n }\n @media all and (min-width: 1600px) {\n padding-right: var(--size-grid003);\n width: var(--size-grid013);\n }\n @media all and (min-width: 1920px) {\n padding-right: var(--size-grid002);\n width: var(--size-grid013);\n }\n @media all and (min-width: 2560px) {\n padding-right: var(--size-grid002);\n width: var(--size-grid014);\n }\n`;\nconst Box = styled.div`\n margin: 44px 0;\n padding: var(--size-grid001);\n border: ${(props) => (props.theme.global.backgroundColor === '#ffffff' ? '2px solid #001e50' : '2px solid white')};\n width: 100%;\n display: flex;\n flex-direction: column;\n\n @media all and (min-width: 560px) {\n margin: 68px 0;\n padding: var(--size-grid002);\n }\n @media all and (min-width: 960px) {\n flex-direction: row;\n padding: var(--size-grid001);\n }\n @media all and (min-width: 1600px) {\n margin: 84px 0;\n padding: var(--size-grid001);\n }\n`;\n\nconst CenterCTA = styled.div`\n text-align: center;\n`;\n\nconst thereIsOnlyOneForm = (faContent: OneFormContent) => faContent && faContent.forms && faContent.forms.length === 1;\n\nexport function LeadTrigger({ setSelectedJourney, setCTALabel }: TriggerProps) {\n const faContent = useFaContent();\n const dispatch = useDispatch();\n const userInteractionService = useFeatureServices()['user-interaction-service'];\n\n const [firstCta, setFirstCta] = useState(null);\n const [secondCta, setSecondCta] = useState(null);\n const [thirdCta, setThirdCta] = useState(null);\n const [fourthCta, setFourthCta] = useState(null);\n const [fiveCta, setFiveCta] = useState(null);\n\n const [theme, setTheme] = useState<'main' | 'inverted' | 'image'>('inverted');\n\n const openTestDriveLayer = () => {\n handleLayerOpen(, 'Pruébalo');\n };\n const openPresupuestoLayer = () => {\n handleLayerOpen(, 'Pide presupuesto');\n };\n const openMasInformacionLayer = () => {\n handleLayerOpen(, 'Pide más información');\n };\n const openCitaVentaLayer = () => {\n handleLayerOpen(, 'Pide cita');\n };\n const openStockLayer = () => {\n handleLayerOpen(, 'Stock');\n };\n\n useEffect(() => {\n if (faContent?.modo === 'Light') {\n setTheme('main');\n }\n\n if (faContent?.userInteraction === 'true') {\n userInteractionService.register('es-oneform::lead-test_drive', {\n action: () => {\n openTestDriveLayer();\n },\n });\n userInteractionService.register('es-oneform::lead-presupuesto', {\n action: () => {\n openPresupuestoLayer();\n },\n });\n userInteractionService.register('es-oneform::lead-mas_informacion', {\n action: () => {\n openMasInformacionLayer();\n },\n });\n userInteractionService.register('es-oneform::lead-cita', {\n action: () => {\n openCitaVentaLayer();\n },\n });\n userInteractionService.register('es-oneform::lead-stock', {\n action: () => {\n openStockLayer();\n },\n });\n }\n }, []);\n\n const renderTestDriveCta = (strechContent?: boolean) => {\n let icon = ;\n\n if (thereIsOnlyOneForm(faContent)) {\n icon = null;\n }\n\n return (\n openTestDriveLayer()} stretchContent={strechContent}>\n Pruébalo\n \n );\n };\n\n const renderMasInformacionCta = (strechContent?: boolean) => {\n let icon = ;\n\n if (thereIsOnlyOneForm(faContent)) {\n icon = null;\n }\n\n return (\n openMasInformacionLayer()} stretchContent={strechContent}>\n Pide más información\n \n );\n };\n\n const renderPidePresupuestoCta = (strechContent?: boolean) => {\n let icon = ;\n\n if (thereIsOnlyOneForm(faContent)) {\n icon = null;\n }\n\n return (\n openPresupuestoLayer()} stretchContent={strechContent}>\n Pide presupuesto\n \n );\n };\n\n const renderPideCitaCta = (strechContent?: boolean) => {\n let icon = ;\n\n if (thereIsOnlyOneForm(faContent)) {\n icon = null;\n }\n\n return (\n openCitaVentaLayer()} stretchContent={strechContent}>\n Pide cita en tu concesionario\n \n );\n };\n\n const renderStockCta = (strechContent?: boolean) => {\n let icon = ;\n\n if (thereIsOnlyOneForm(faContent)) {\n icon = null;\n }\n\n return (\n openStockLayer()} stretchContent={strechContent}>\n Pide información del stock\n \n );\n };\n\n const handleLayerOpen = (journey: JSX.Element, label: string) => {\n dispatch({ type: 'RESET_STATE' });\n setCTALabel(label);\n setSelectedJourney(journey);\n };\n\n const handleFaContent = () => {\n const width = window.innerWidth;\n let strechContent = false;\n\n if (width < 560 && thereIsOnlyOneForm(faContent)) {\n strechContent = true;\n }\n\n if (faContent?.forms) {\n const renderOrder = faContent.forms.map((form) => {\n switch (form) {\n case 'lead-cita':\n return renderPideCitaCta(strechContent);\n case 'lead-mas_informacion':\n return renderMasInformacionCta(strechContent);\n case 'lead-test_drive':\n return renderTestDriveCta(strechContent);\n case 'lead-presupuesto':\n return renderPidePresupuestoCta(strechContent);\n case 'lead-stock':\n return renderStockCta(strechContent);\n default:\n return null;\n }\n });\n if (renderOrder.length <= 5) {\n if (renderOrder[0]) {\n setFirstCta(renderOrder[0]);\n }\n if (renderOrder[0]) {\n setSecondCta(renderOrder[1]);\n }\n if (renderOrder[2]) {\n setThirdCta(renderOrder[2]);\n }\n if (renderOrder[3]) {\n setFourthCta(renderOrder[3]);\n }\n if (renderOrder[4]) {\n setFiveCta(renderOrder[4]);\n }\n }\n }\n };\n\n useEffect(() => {\n // getCarlines();\n handleFaContent();\n }, []);\n\n const alternativeHeadline = '¿Qué te gustaría hacer ahora?';\n const getTriggerHeadline = () =>\n faContent?.headline ? useTransformToHtml(faContent.headline) : useTransformToHtml(alternativeHeadline);\n\n const alternativeBodyCopy =\n 'Estás un paso más cerca de disfrutar del Volkswagen que te gusta. Solo dinos cómo podemos acompañarte para terminar de resolver tus dudas.';\n const getTriggerbodycopy = () =>\n faContent?.bodycopy ? useTransformToHtml(faContent.bodycopy) : useTransformToHtml(alternativeBodyCopy);\n\n return (\n // Dinamizar el theme a través de la config de la feature-app\n <>\n {thereIsOnlyOneForm(faContent) ? (\n \n \n \n \n \n \n
    \n \n\n \n
    \n \n \n \n \n \n {firstCta ? firstCta : null}\n {secondCta ? secondCta : null}\n {thirdCta ? thirdCta : null}\n {fourthCta ? fourthCta : null}\n {fiveCta ? fiveCta : null}\n \n\n \n {firstCta ? firstCta : null}\n {secondCta ? secondCta : null}\n {thirdCta ? thirdCta : null}\n {fourthCta ? fourthCta : null}\n {fiveCta ? fiveCta : null}\n \n \n \n \n \n \n \n ) : (\n \n \n \n \n \n \n \n \n {faContent?.headline ? faContent.headline : '¿Qué te gustaría hacer ahora?'}\n \n \n \n \n {faContent?.headline ? faContent.headline : '¿Qué te gustaría hacer ahora?'}\n \n \n \n \n {faContent?.headline ? faContent.headline : '¿Qué te gustaría hacer ahora?'}\n \n \n \n \n \n {faContent?.bodycopy\n ? faContent.bodycopy\n : 'Estás un paso más cerca de disfrutar del Volkswagen que te gusta. Solo dinos cómo podemos acompañarte para terminar de resolver tus dudas.'}\n \n \n \n \n \n \n {firstCta ? firstCta : null}\n {secondCta ? secondCta : null}\n {thirdCta ? thirdCta : null}\n {fourthCta ? fourthCta : null}\n {fiveCta ? fiveCta : null}\n \n \n \n \n \n )}\n \n );\n}\n","import React from 'react';\nimport { ScreenController, TriggerProps, useFaContent } from 'src/feature-app';\nimport { MGMController } from 'src/forms/MGM';\n\nexport function MGMTrigger(props: TriggerProps) {\n\n\n return (\n
    \n }\n closeLayerCallback={close}\n handleAreYouSureLayer={() => null}\n notALayer={true}\n formType = 'inPage'\n />\n
    \n );\n}\n","import {\n Breakpoints,\n BreakpointWrapper,\n Container,\n ContainerGutter,\n ContainerPadding,\n ContainerWrap,\n CTA,\n Layout,\n styled,\n Text,\n TextAlignment,\n TextAppearance,\n ThemeProvider,\n} from '@volkswagen-onehub/components-core';\nimport React from 'react';\nimport { TriggerProps, useFaContent, useTransformToHtml } from 'src/feature-app';\nimport { NewsletterForm } from '../forms/Newsletter/NewsletterForm';\nimport { useDispatch } from 'react-redux';\n\nconst Content = styled.div`\n overflow: hidden;\n display: flex;\n justify-content: center;\n align-items: center;\n background: radial-gradient(circle at bottom, #00437a 0%, #001e50 100%);\n\n & > div {\n width: 100%;\n }\n`;\n\nconst CenterCTA = styled.div`\n text-align: center;\n`;\n\nexport function NewsletterTrigger(props: TriggerProps) {\n const { setSelectedJourney, setCTALabel } = props;\n\n const faContent = useFaContent();\n const dispatch = useDispatch();\n\n const getCtaLabel = () => (faContent?.cta ? faContent.cta : 'Suscríbete');\n\n const alternativeHeadline = '¿Quieres estar al día?';\n const getTriggerHeadline = () =>\n faContent?.headline ? useTransformToHtml(faContent.headline) : useTransformToHtml(alternativeHeadline);\n\n const alternativeBodyCopy =\n 'Suscríbete a la newsletter y adelántate a las novedades sobre movilidad eléctrica y la familia ID.';\n const getTriggerbodycopy = () =>\n faContent?.bodycopy ? useTransformToHtml(faContent.bodycopy) : useTransformToHtml(alternativeBodyCopy);\n\n return (\n \n \n \n \n \n \n
    \n \n\n \n
    \n \n \n \n \n \n {\n dispatch({ type: 'RESET_STATE' });\n setCTALabel(getCtaLabel());\n setSelectedJourney();\n }}\n stretchContent\n >\n {getCtaLabel()}\n \n \n\n \n {\n dispatch({ type: 'RESET_STATE' });\n setCTALabel(getCtaLabel());\n setSelectedJourney();\n }}\n >\n {getCtaLabel()}\n \n \n \n \n \n \n \n \n );\n}\n","import { styled } from '@volkswagen-onehub/components-core';\nimport {\n CloseHandleV2,\n FocusLayerSizeV2,\n InteractionLayerSizeV2,\n LayerHandleV2,\n LayerManagerV2,\n} from '@volkswagen-onehub/layer-manager';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useSelector, useStore, shallowEqual, useDispatch } from 'react-redux';\nimport { AreYouSureLayer, GenericErrorLayer } from 'src/components';\nimport {\n getTrigger,\n LayerManagerWrapper,\n useFeatureAppConfig,\n useFeatureAppEnvironment,\n useFeatureServices,\n useTrackingManager,\n useIsDevStage,\n} from 'src/feature-app';\nimport { ScreenController } from 'src/feature-app/Screen';\nimport { getSentryHub, setSentryTag } from 'src/feature-app/sentry';\nimport { OneFormState } from 'src/types';\n\nconst basis = 24;\n\nfunction assertCountGridColumn(count: number): void {\n if (process.env.NODE_ENV !== 'production') {\n if (Math.floor(count) !== count) {\n throw new Error('count has to be an integer.');\n }\n\n if (count < 0 || count > basis) {\n throw new Error(`count has to be between 0 and ${basis}.`);\n }\n }\n}\n\nexport function getGridColumn(count: number): string {\n assertCountGridColumn(count);\n\n // Round down to two decimal places\n // two decimal places because Edge has issues with too many decimal places\n // round down, so (positive) rounding errors do not add up\n return `${Math.floor((100 / basis) * count * 100) / 100}vw`;\n}\n\nexport function getColumnsWidthForBreakpoint(columns: number, breakpoint: number): string {\n assertCountGridColumn(columns);\n\n // Round down to two decimal places\n // two decimal places because Edge has issues with too many decimal places\n // round down, so (positive) rounding errors do not add up\n return `${Math.floor((breakpoint / basis) * columns * 100) / 100}px`;\n}\n\n// Background determina el color del background, y la altura mínima que debe ocupar este color.\n// Por los errores del layer también determina el width.\n\nexport const BackgroundOneForm = styled.div`\n background-color: ${(props) => props.theme.global.backgroundColor};\n min-height: 100vh;\n width: 100vw;\n @media all and (min-width: 960px) {\n width: 960px;\n }\n`;\n\nconst getConfigFormattedName = (name: string) =>\n name\n .replace('_', '-')\n .split('-')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n\nexport function OneFormTrigger() {\n const layerManager = useFeatureServices()['layer-manager'] as LayerManagerV2;\n const { formTheme, genericError } = useSelector(\n (state: OneFormState) => state.formInfo,\n (prev, next) => prev.formTheme === next.formTheme && prev.genericError === next.genericError\n );\n const formName = useSelector((state: OneFormState) => state.formData.fields.formName);\n const oneFormLayer = useRef>(null);\n const oneFormLayerFocus = useRef>(null);\n const genericErrorLayer = useRef>(null);\n const [selectedJourneyElement, setSelectedJourneyElement] = useState(null);\n const [selectedFocusJourney, setSelectedFocusJourney] = useState(null);\n const [CTALabel, setCTALabel] = useState(null);\n const [skipTrackButtonClick, setSkipTrackButtonClick] = useState(false);\n const trackingManager = useTrackingManager();\n const store = useStore();\n const env = useFeatureAppEnvironment();\n const config = useFeatureAppConfig();\n const triggerLoaded = useRef(null);\n const isDevStage = useIsDevStage();\n const sentryHub = getSentryHub();\n\n useEffect(() => {\n if (selectedJourneyElement) {\n handleOneFormLayer();\n // sentryHub.setTag('Form', 'Test');\n }\n\n if (selectedFocusJourney) {\n handleOneFormFocusLayer();\n }\n }, [selectedJourneyElement, selectedFocusJourney]);\n\n useEffect(() => {\n if (genericError) {\n handleGenericErrorLayer();\n }\n }, [genericError]);\n\n useEffect(() => {\n if (triggerLoaded.current && isDevStage) {\n setSentryTag('oneform.trigger', triggerLoaded.current);\n const name = getConfigFormattedName(triggerLoaded.current);\n console.log('%cLoading Trigger:', 'font-weight: 700', name);\n }\n }, [triggerLoaded]);\n\n useEffect(() => {\n if (formName) {\n setSentryTag('oneform.form', formName);\n }\n }, [formName]);\n\n const setSelectedJourney = (selectedJourney: JSX.Element, skipTrackButtonClick?: boolean) => {\n if (skipTrackButtonClick) {\n setSkipTrackButtonClick(skipTrackButtonClick);\n }\n setSelectedJourneyElement(selectedJourney);\n };\n\n const renderOneForm = (state: any, close: CloseHandleV2): JSX.Element => {\n return (\n \n \n \n \n \n );\n };\n\n const renderOneFormFocus = (state: any, close: CloseHandleV2): JSX.Element => {\n return (\n \n \n \n );\n };\n\n const renderGenericErrorLayer = (state: any, close: CloseHandleV2) => {\n return (\n \n \n \n );\n };\n\n const renderAreYouSureLayer = (state: any, close: CloseHandleV2) => {\n return (\n \n {}}\n />\n \n );\n };\n\n const handleOneFormLayer = () => {\n if (!skipTrackButtonClick) {\n trackingManager.trackButtonClick({ contentId: CTALabel });\n }\n const layer = layerManager.openInteractionLayer(renderOneForm, {}, { size: InteractionLayerSizeV2.D });\n oneFormLayer.current = layer;\n };\n\n const handleOneFormFocusLayer = () => {\n if (!skipTrackButtonClick) {\n trackingManager.trackButtonClick({ contentId: CTALabel });\n }\n\n const layer = layerManager.openFocusLayer(\n renderOneFormFocus,\n {},\n { size: FocusLayerSizeV2.A, onClose: () => setSelectedFocusJourney(null) }\n );\n oneFormLayerFocus.current = layer;\n };\n\n const handleGenericErrorLayer = () => {\n const layer = layerManager.openFocusLayer(renderGenericErrorLayer, {}, { size: FocusLayerSizeV2.A });\n genericErrorLayer.current = layer;\n };\n\n const handleAreYouSureLayer = () => {\n const layer = layerManager.openFocusLayer(renderAreYouSureLayer, {}, { size: FocusLayerSizeV2.A });\n return layer;\n };\n\n return React.useMemo(\n () =>\n getTrigger(\n config,\n setSelectedJourney,\n setCTALabel,\n selectedJourneyElement,\n setSelectedFocusJourney,\n selectedFocusJourney,\n triggerLoaded\n ),\n []\n );\n}\n\n// export const OneFormTrigger = React.memo(OneFormTriggerComp);\n","import React from 'react';\nimport { TriggerProps, useInitiateMatchTriggers } from 'src/feature-app';\nimport { MatchProspectForm } from 'src/forms';\n\nexport function ProspectEmbeddedTrigger({ setSelectedJourney }: TriggerProps): JSX.Element {\n useInitiateMatchTriggers(setSelectedJourney, );\n\n return null;\n}\n","import React, { useEffect } from 'react';\nimport { getDealerKvps } from 'src/bff';\nimport { TriggerProps, useFaContent } from 'src/feature-app';\nimport { ProspectsPosventaForm, transformMillage } from 'src/forms';\nimport { FormDataFields } from 'src/types';\n\nexport function ProspectPosventaEmbedded({ setSelectedJourney }: TriggerProps) {\n const faContent = useFaContent();\n if (faContent.featureApp === 'es-calculadora') {\n return ;\n }\n return null;\n}\n\nexport function ProspectPosventaCalculadora({ setSelectedJourney }: TriggerProps) {\n const faContent = useFaContent();\n const renderForm = (fields: FormDataFields) => {\n setSelectedJourney(\n ,\n true\n );\n };\n useEffect(() => {\n const fields = {\n motivo: 'MANTENIMIENTO',\n formName: 'prospect-posventa-calculadora',\n matricula: faContent?.vehicle[0]?.plate,\n kilometros: transformMillage(faContent?.vehicle[0]?.mileage),\n anoMatriculacion: faContent?.vehicle[0]?.plateDate,\n modelo: faContent?.vehicle[0]?.familyDesc,\n budget: { pvp: faContent?.quotePvp, operations: [...faContent?.quoteOperations] },\n deepLink: faContent?.deepLink,\n };\n const kvps = faContent?.dealer;\n\n getDealerKvps(kvps)\n .then((dealer) => {\n renderForm({ ...fields, dealer });\n })\n .catch((err) => {\n console.error(err);\n renderForm({ ...fields, dealer: {} }); // Hay que ver que hacer en estos casos.\n });\n }, []);\n\n return <>;\n}\n","import {\n Breakpoints,\n Container,\n ContainerGutter,\n ContainerWrap,\n CTA,\n Layout,\n LayoutRowGap,\n styled,\n Text,\n TextAppearance,\n} from '@volkswagen-onehub/components-core';\nimport React from 'react';\nimport { TriggerProps } from 'src/feature-app';\nimport { ProspectsVentaForm } from '../forms/Prospects/ProspectsVentaForm';\nimport { useDispatch } from 'react-redux';\n\nconst taigoImage = 'https://cdn.volkswagen.es/repository/app/vw-oneform/assets/images/taigo.png';\n\nconst ImageWrapper = styled.div`\n img {\n width: 100%;\n }\n`;\n\nexport function ProspectsTrigger(props: TriggerProps) {\n const { setSelectedJourney } = props;\n\n const dispatch = useDispatch();\n\n return (\n \n \n \n Nuevo Taigo\n \n \n \n Nuevo Taigo\n \n \n Carácter{' '}todos los días\n \n \n El Nuevo Taigo es para aquellos que marcan sus propias tendencias. Que no solo tienen estilo, sino también\n carácter. Y que cada día encuentran lo extraordinario en lo cotidiano. ¿Será también para ti?\n \n {\n dispatch({ type: 'RESET_STATE' });\n e.preventDefault();\n setSelectedJourney();\n }}\n emphasis='primary'\n >\n Pide más información\n \n \n \n );\n}\n\n","import {\n Breakpoints,\n BreakpointWrapper,\n Container,\n ContainerGutter,\n ContainerPadding,\n ContainerWrap,\n CTA,\n Layout,\n styled,\n Text,\n TextAlignment,\n TextAppearance,\n ThemeProvider,\n} from '@volkswagen-onehub/components-core';\nimport React from 'react';\nimport { TriggerProps, useFaContent, useTransformToHtml, ScreenController } from 'src/feature-app';\nimport { SACForm } from '../forms/SAC';\nimport { SACOneShopController } from '../forms/SAC/SACOneShop';\nimport { useDispatch } from 'react-redux';\n\n\nconst Content = styled.div`\n overflow: hidden;\n display: flex;\n justify-content: center;\n align-items: center;\n background: radial-gradient(circle at bottom, #00437a 0%, #001e50 100%);\n\n & > div {\n width: 100%;\n }\n`;\n\nconst CenterCTA = styled.div`\n text-align: center;\n`;\n\nexport function SACTrigger(props: TriggerProps) {\n const { setSelectedJourney, setCTALabel } = props;\n const dispatch = useDispatch();\n\n const faContent = useFaContent();\n\n const getCtaLabel = () => (faContent?.cta ? faContent.cta : 'Contáctanos');\n\n const alternativeHeadline = '¿Quieres hablar con nosotros?';\n const getTriggerHeadline = () =>\n faContent?.headline ? useTransformToHtml(faContent.headline) : useTransformToHtml(alternativeHeadline);\n\n const alternativeBodyCopy = 'Explícanos cómo podemos ayudarte y te responderemos muy pronto.';\n const getTriggerbodycopy = () =>\n faContent?.bodycopy ? useTransformToHtml(faContent.bodycopy) : useTransformToHtml(alternativeBodyCopy);\n\n return (\n \n faContent.triggerCase === 'Generico'?\n \n\n \n \n \n \n \n
    \n \n\n \n
    \n \n \n \n \n \n {\n dispatch({ type: 'RESET_STATE' });\n setCTALabel(getCtaLabel());\n setSelectedJourney();\n }}\n stretchContent\n >\n {getCtaLabel()}\n \n \n\n \n {\n dispatch({ type: 'RESET_STATE' });\n setCTALabel(getCtaLabel());\n setSelectedJourney();\n }}\n >\n {getCtaLabel()}\n \n \n \n \n \n \n \n \n :\n <>\n }\n closeLayerCallback={close}\n handleAreYouSureLayer={() => null}\n notALayer={true}\n formType = 'inPage'\n />\n \n \n );\n}\n","import {\n CTA\n} from '@volkswagen-onehub/components-core';\nimport React from 'react';\nimport { Magnifier, Reload } from 'src/icons-core-imports';\n\nexport interface CTAMapaProps {\n mapHasMoved: boolean;\n handleSearchArea: () => void\n handleSearchAgain: () => void \n}\n\nexport function CTAMapa({ mapHasMoved, handleSearchArea, handleSearchAgain }: CTAMapaProps) {\n return (\n
    \n {mapHasMoved ? (\n {\n e.preventDefault();\n handleSearchArea();\n e.stopPropagation();\n }}\n ariaLabel=\"aria label\"\n icon={}\n >\n Buscar en esta zona\n \n ) : null}\n {\n e.preventDefault();\n handleSearchAgain();\n }}\n ariaLabel=\"aria label\"\n icon={}\n >\n Buscar de nuevo\n \n
    \n );\n}\n","import {\n Container,\n ContainerGutter,\n ContainerHorizontalAlignment,\n ContainerPadding,\n ContainerWrap,\n CTA,\n styled,\n} from '@volkswagen-onehub/components-core';\nimport React, { useRef } from 'react';\nimport { CarPickupService, FleetServicePrivate } from 'src/icons-core-imports';\n\nconst SmallerSVG = styled.div`\n svg {\n height: 12px;\n width: 12px;\n }\n button {\n height: 24px;\n min-height: 24px;\n }\n div {\n font-size: 12px;\n }\n`;\n\nexport interface CTAServicesProps {\n handleClickCarPickup: () => void;\n handleClickReplacementCar: () => void;\n carPickupSelected: boolean;\n replacementCarSelected: boolean;\n}\n\nexport function CTAServices({\n handleClickCarPickup,\n carPickupSelected,\n replacementCarSelected,\n handleClickReplacementCar,\n}: CTAServicesProps) {\n\n\n const sustitucionRef = useRef(null);\n const recogidaRef = useRef(null);\n\n return (\n \n \n {\n e.preventDefault();\n handleClickReplacementCar();\n sustitucionRef.current.blur();\n }}\n ariaLabel=\"aria label\"\n icon={}\n >\n Coche de sustitución\n \n \n \n {\n e.preventDefault();\n handleClickCarPickup();\n recogidaRef.current.blur();\n }}\n ariaLabel=\"aria label\"\n icon={}\n >\n Servicio de recogida\n \n \n \n );\n}\n","import { styled } from '@volkswagen-onehub/components-core';\nimport React, { ReactElement, useEffect, useRef } from 'react';\nimport Slider from 'react-slick';\nimport { NewDealerCard, getDistanceFromLatLngCenter, useMapGeneralController } from 'src/feature-app';\nimport { Points } from 'src/types';\nimport { DealerCardWidget } from 'src/widgets';\n\nconst CSSDiv = styled.div`\n /* Slider */\n .slick-slider {\n position: relative;\n\n display: block;\n box-sizing: border-box;\n\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n -webkit-touch-callout: none;\n -khtml-user-select: none;\n -ms-touch-action: pan-y;\n touch-action: pan-y;\n -webkit-tap-highlight-color: transparent;\n }\n\n .slick-list {\n position: relative;\n\n display: block;\n overflow: hidden;\n\n margin: 0;\n padding: 0;\n }\n .slick-list:focus {\n outline: none;\n }\n .slick-list.dragging {\n cursor: pointer;\n cursor: hand;\n }\n\n .slick-slider .slick-track,\n .slick-slider .slick-list {\n -webkit-transform: translate3d(0, 0, 0);\n -moz-transform: translate3d(0, 0, 0);\n -ms-transform: translate3d(0, 0, 0);\n -o-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n .slick-track {\n position: relative;\n top: 0;\n left: 0;\n\n display: block;\n }\n .slick-track:before,\n .slick-track:after {\n display: table;\n\n content: '';\n }\n .slick-track:after {\n clear: both;\n }\n .slick-loading .slick-track {\n visibility: hidden;\n }\n\n .slick-slide {\n display: none;\n float: left;\n\n height: 100%;\n min-height: 1px;\n }\n [dir='rtl'] .slick-slide {\n float: right;\n }\n .slick-slide img {\n display: block;\n }\n .slick-slide.slick-loading img {\n display: none;\n }\n .slick-slide.dragging img {\n pointer-events: none;\n }\n .slick-initialized .slick-slide {\n display: block;\n }\n .slick-loading .slick-slide {\n visibility: hidden;\n }\n .slick-vertical .slick-slide {\n display: block;\n\n height: auto;\n\n border: 1px solid transparent;\n }\n .slick-arrow.slick-hidden {\n display: none;\n }\n\n /* Slider */\n .slick-slider {\n position: relative;\n\n display: block;\n box-sizing: border-box;\n\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n -webkit-touch-callout: none;\n -khtml-user-select: none;\n -ms-touch-action: pan-y;\n touch-action: pan-y;\n -webkit-tap-highlight-color: transparent;\n }\n\n .slick-list {\n position: relative;\n\n display: block;\n overflow: hidden;\n\n margin: 0;\n padding: 0;\n }\n .slick-list:focus {\n outline: none;\n }\n .slick-list.dragging {\n cursor: pointer;\n cursor: hand;\n }\n\n .slick-slider .slick-track,\n .slick-slider .slick-list {\n -webkit-transform: translate3d(0, 0, 0);\n -moz-transform: translate3d(0, 0, 0);\n -ms-transform: translate3d(0, 0, 0);\n -o-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n\n .slick-track {\n position: relative;\n top: 0;\n left: 0;\n\n display: block;\n }\n .slick-track:before,\n .slick-track:after {\n display: table;\n\n content: '';\n }\n .slick-track:after {\n clear: both;\n }\n .slick-loading .slick-track {\n visibility: hidden;\n }\n\n .slick-slide {\n display: none;\n float: left;\n\n height: 100%;\n min-height: 1px;\n }\n [dir='rtl'] .slick-slide {\n float: right;\n }\n .slick-slide img {\n display: block;\n }\n .slick-slide.slick-loading img {\n display: none;\n }\n .slick-slide.dragging img {\n pointer-events: none;\n }\n .slick-initialized .slick-slide {\n display: block;\n }\n .slick-loading .slick-slide {\n visibility: hidden;\n }\n .slick-vertical .slick-slide {\n display: block;\n\n height: auto;\n\n border: 1px solid transparent;\n }\n .slick-arrow.slick-hidden {\n display: none;\n }\n`;\n\nconst BackgroundCard = styled.div`\n background-color: #ffffff;\n margin: 0 4px;\n`;\n\ninterface CarouselCardsProps {\n handleShowCalendarOnClick?: any;\n handleSeleccionarOnClick: any;\n handleShowSlots?: (point: Points) => string | null;\n pointsToList: Points[];\n isCitaPosventa?: boolean;\n replacementCarSelected?: boolean;\n carPickupSelected?: boolean;\n}\n\nexport const CarouselWidget = (props: CarouselCardsProps) => {\n const {\n clusters,\n handlePointClickAndCarouselMove,\n centerToCalculateDistance,\n handleSelectedPoint,\n handleClusterClick,\n selectedPoint,\n } = useMapGeneralController();\n const {\n handleSeleccionarOnClick,\n handleShowCalendarOnClick,\n handleShowSlots,\n pointsToList,\n isCitaPosventa,\n carPickupSelected,\n replacementCarSelected,\n } = props;\n const sliderRef = useRef(null);\n const childrenRef = useRef(null);\n\n useEffect(() => {\n if (pointsToList.length) {\n const firstPoint = selectedPoint ? selectedPoint : pointsToList[0];\n // handleCarouselMovement(firstPoint);\n handleSelectedPoint(firstPoint);\n // handleSelectedCard(firstPoint);\n }\n }, [pointsToList]);\n\n useEffect(() => {\n // Movimiento del carousel en caso de que se haga click en un Dealer Marker.\n if (selectedPoint) {\n // handleSelectedCard(selectedPoint);\n handleCarouselMovement(selectedPoint);\n }\n }, [selectedPoint, pointsToList]);\n\n const handleSelectedCard = (point: Points) => {\n if (!point.properties.cluster) {\n const { kvps } = point.properties.dealer;\n\n const index = pointsToList.findIndex((dealer) => {\n if (dealer.properties.dealer.kvps === kvps) {\n return true;\n }\n });\n sliderRef.current.slickGoTo(index);\n }\n };\n\n const handleCarouselMovement = (point: Points) => {\n if (point.properties.parent_cluster_id) {\n const parentCluster = clusters.find(\n (cluster) => cluster.properties.cluster && cluster.id === point.properties.parent_cluster_id\n );\n if (parentCluster) {\n // En caso de que el dealer esté dentro de un cluster dentro de otro fijamos el valor de isCluster como true para que llegue hasta el final\n // y no rompa únicamente el primer cluster.\n // handleClusterClick(point, true);\n handleSelectedPoint(point);\n } else {\n handlePointClickAndCarouselMove(point, false);\n handleSelectedCard(point);\n }\n } else {\n handlePointClickAndCarouselMove(point, false);\n handleSelectedCard(point);\n }\n };\n\n const settings = {\n className: 'center',\n infinite: false,\n centerMode: true,\n centerPadding: '60px',\n slidesToShow: 1,\n swipe: true,\n speed: 500,\n arrows: false,\n beforeChange: (current: number, next: number) => {\n const point: Points = pointsToList.find((point) => {\n if (!point.properties.cluster) {\n if (point.properties.dealer.kvps === childrenRef.current[next].key) {\n return point;\n }\n }\n });\n\n handleCarouselMovement(point);\n },\n };\n return (\n \n {\n sliderRef.current = el;\n if (el && el.props && el.props.children) {\n childrenRef.current = el.props.children.filter((c: any) => c !== null);\n }\n }}\n >\n {pointsToList\n ? pointsToList.map((point: Points, i) => {\n const distanceFromCenter = getDistanceFromLatLngCenter(centerToCalculateDistance.current, point);\n\n return !point.properties.cluster ? (\n
    \n {/* este div es necesario para el funcionamiento de la libreria */}\n \n \n \n
    \n ) : null;\n })\n : null}\n
    \n \n );\n};\n","import {\n Breakpoints,\n Container,\n ContainerHorizontalAlignment,\n ContainerPadding,\n ContainerVerticalAlignment,\n ContainerWrap,\n CTA,\n Layout,\n styled,\n Text,\n TextAlignment,\n TextAppearance,\n TextColor,\n} from '@volkswagen-onehub/components-core';\nimport { Calendar, FleetServicePrivate, CarPickupService } from 'src/icons-core-imports';\nimport React, { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useMapGeneralController, getDistanceFromLatLngCenter, usePinState } from 'src/feature-app';\nimport { Points } from 'src/types';\nimport { Horario, OneFormState } from 'src/types';\nimport {} from 'src/feature-app';\nimport { useTrackingManager } from 'src/feature-app/hooks/use-tracking-manager';\n\ninterface BoxCardProps {\n selected?: boolean;\n isCarousel: boolean;\n isHover?: boolean;\n isFirstDesktop?: boolean;\n greyCard?: boolean;\n isInverted?: boolean;\n}\n\nconst BoxCard = styled.div`\n width: 100%;\n margin-bottom: ${(props) => (props.isCarousel || props.isFirstDesktop ? '0' : '20px')};\n padding: ${(props) => (props.isCarousel ? '12px' : '20px')};\n border: ${(props) =>\n props.selected && props.greyCard && !props.isCarousel\n ? '2px solid #6A767D'\n : props.selected && props.isInverted && !props.isCarousel\n ? '2px solid #001E50'\n : props.greyCard && !props.isCarousel\n ? '1px solid #6A767D'\n : props.isInverted\n ? '1px solid #C2CACF'\n : props.selected && !props.isCarousel\n ? '2px solid #FFFFFF'\n : props.isCarousel\n ? 'none'\n : '1px solid rgba(255,255,255,0.44)'};\n :hover {\n border: ${(props) =>\n props.isCarousel\n ? 'none'\n : props.selected && props.greyCard\n ? '2px solid #6A767D'\n : props.selected && props.isInverted\n ? '2px solid #001E50'\n : props.greyCard\n ? '1px solid #6A767D'\n : props.selected\n ? '2px solid #FFFFFF'\n : '1px solid #4cc7f4'};\n }\n\n @media all and (min-width: 560px) {\n margin-bottom: ${(props) => (props.isCarousel || props.isFirstDesktop ? '0' : '24px')};\n padding: 20px;\n }\n @media screen and (min-width: 960px) {\n .main {\n border: ${(props) =>\n props.isCarousel\n ? 'none'\n : props.selected\n ? '2px solid #001e50;'\n : props.isHover\n ? '1px solid #0040C5'\n : '1px solid #DFE4E8'};\n }\n .inverted {\n border: ${(props) =>\n props.isCarousel\n ? 'none'\n : props.selected\n ? '2px solid #FFFFFF'\n : props.isHover\n ? '1px solid #4cc7f4'\n : '1px solid rgba(255,255,255,0.44)'};\n }\n }\n @media all and (min-width: 1600px) {\n margin-top: ${(props) => (props.isCarousel || props.isFirstDesktop ? '0' : '28px')};\n }\n`;\n\ninterface isCarouselProps {\n isCarousel: boolean;\n}\n\nconst EllipsisTextWrapper = styled.p<{ greyCard?: boolean }>`\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin-top: 0px;\n margin-bottom: 0px;\n color: ${(props) => (props.greyCard ? '#6A767D' : '#000000')};\n`;\nconst GreyText = styled.span<{ greyCard?: boolean }>`\n color: ${(props) => (props.greyCard ? '#6A767D' : '#000000')};\n`;\nconst SVGSize = styled.div<{ greyCard: boolean }>`\n padding-left: 16px;\n svg {\n height: 20px;\n width: auto;\n color: ${(props) => (props.greyCard ? '#6A767D' : '#000000')};\n }\n`;\n\nconst CustomCTA = styled.button<{ greyCard?: boolean }>`\n height: 32px;\n width: max-content;\n padding: 8px 16px;\n border: none;\n cursor: pointer;\n border-radius: 22px;\n display: flex;\n align-items: center;\n background-color: ${(props) => (props.greyCard ? '#6A767D' : '#001E50')};\n color: ${(props) => (props.greyCard ? '#DFE4E8' : '#FFFFFF')};\n\n :hover {\n background-color: ${(props) => (props.greyCard ? '#6A767D' : '#001E50')};\n }\n`;\n\ninterface DealerCardProps {\n distanceFromCenter: string;\n handleSeleccionarOnClick?: any;\n handleShowCalendarOnClick?: any;\n // center?: Center,\n isCarousel: boolean;\n dealerInfo: any;\n point: Points;\n slots: any;\n handleShowSlots?: (point: Points) => string | null;\n isCitaPosventa?: boolean;\n isFirstDesktop?: boolean;\n carPickupSelected?: boolean;\n replacementCarSelected?: boolean;\n isInverted?: boolean;\n}\n\nexport const DealerCardWidget = React.memo((props: DealerCardProps) => {\n const {\n distanceFromCenter,\n isCarousel,\n dealerInfo,\n point,\n isFirstDesktop,\n carPickupSelected,\n replacementCarSelected,\n isInverted,\n } = props;\n const { suggestionIsAddress } = useSelector((state: OneFormState) => state.formInfo);\n const dealerCompletAdress = `${dealerInfo.markerInfo.dealerInfo.address}, ${dealerInfo.markerInfo.dealerInfo.zipCode} ${dealerInfo.markerInfo.dealerInfo.city}`;\n const {\n centerToCalculateDistance,\n handlePointClickAndCarouselMove,\n handleHoverPoint,\n hoverPoint,\n selectedPoint,\n userIsGeoLocated,\n handleClusterClick,\n } = useMapGeneralController();\n\n const { isActive, isHover } = usePinState(selectedPoint, hoverPoint, point);\n\n const [greyCard, setGreyCard] = useState(false);\n\n useEffect(() => {\n if (point) {\n if (carPickupSelected && !point.properties.dealer.dmsInfo.pickupCarServiceAvailabe) {\n setGreyCard(true);\n } else if (replacementCarSelected && !point.properties.dealer.dmsInfo.replacementCarServiceAvailable) {\n setGreyCard(true);\n } else {\n setGreyCard(false);\n }\n }\n }, [carPickupSelected, replacementCarSelected, point]);\n\n return (\n {\n e.preventDefault();\n if (point.properties.parent_cluster_id) {\n if (window.innerWidth <= 959) {\n handleClusterClick(point, true, true);\n } else {\n handleClusterClick(point, true);\n }\n } else {\n handlePointClickAndCarouselMove(point);\n }\n }}\n onMouseEnter={(e) => {\n if (!isCarousel) {\n e.preventDefault();\n handleHoverPoint(point);\n }\n }}\n onMouseLeave={(e) => {\n if (!isCarousel) {\n e.preventDefault();\n handleHoverPoint(null);\n }\n }}\n >\n
    \n {isCarousel ? (\n <>\n {/*card para el carousel*/}\n \n
    \n {userIsGeoLocated || suggestionIsAddress ? (\n \n \n \n {dealerInfo.name ? dealerInfo.name : null}\n \n \n\n \n \n {userIsGeoLocated || suggestionIsAddress\n ? distanceFromCenter\n ? `${distanceFromCenter}km`\n : `${getDistanceFromLatLngCenter(centerToCalculateDistance.current, point)}km`\n : null}\n \n \n \n ) : (\n \n \n {dealerInfo.name ? dealerInfo.name : null}\n \n \n )}\n
    \n \n {!point.properties.dealer.dmsInfo || !point.properties.dealer.dmsInfo.dmsAvailable ? (\n

    \n {dealerCompletAdress}\n

    \n ) : (\n {dealerCompletAdress}\n )}\n
    \n
    \n <>\n {(point?.properties?.dealer?.dmsInfo &&\n point?.properties?.dealer?.dmsInfo?.replacementCarServiceAvailable) ||\n (point?.properties?.dealer?.dmsInfo && point?.properties?.dealer?.dmsInfo?.pickupCarServiceAvailabe) ? (\n \n
    \n {point.properties.dealer.dmsInfo.replacementCarServiceAvailable ? (\n \n \n \n ) : null}\n {point.properties.dealer.dmsInfo.pickupCarServiceAvailabe ? (\n \n \n \n ) : null}\n
    \n \n \n ) : (\n \n )}\n \n \n ) : (\n <>\n {/*card para los tabs, cualquier breakpoint*/}\n \n
    \n {userIsGeoLocated || suggestionIsAddress ? (\n \n \n {dealerInfo.name ? dealerInfo.name : null}\n \n \n \n {userIsGeoLocated || suggestionIsAddress\n ? distanceFromCenter\n ? `${distanceFromCenter}km`\n : `${getDistanceFromLatLngCenter(centerToCalculateDistance.current, point)}km`\n : null}\n \n \n \n ) : (\n \n {dealerInfo.name ? dealerInfo.name : null}\n \n )}\n
    \n \n

    \n {dealerCompletAdress}\n

    \n
    \n
    \n <>\n {(point.properties.dealer.dmsInfo && point.properties.dealer.dmsInfo.replacementCarServiceAvailable) ||\n (point.properties.dealer.dmsInfo && point.properties.dealer.dmsInfo.pickupCarServiceAvailabe) ? (\n \n
    \n \n
    \n
    \n {point.properties.dealer.dmsInfo.replacementCarServiceAvailable ? (\n \n \n \n ) : null}\n {point.properties.dealer.dmsInfo.pickupCarServiceAvailabe ? (\n \n \n \n ) : null}\n
    \n \n ) : (\n \n )}\n \n \n )}\n {/* */}\n
    \n \n );\n});\n\nconst LeadsCTAs = (props: DealerCardProps) => {\n const { handleSeleccionarOnClick, dealerInfo, point, carPickupSelected, replacementCarSelected } = props;\n const [greyCard, setGreyCard] = useState(false);\n\n const trackingManager = useTrackingManager();\n\n useEffect(() => {\n if (point) {\n if (carPickupSelected && !point.properties.dealer.dmsInfo.pickupCarServiceAvailabe) {\n setGreyCard(true);\n } else if (replacementCarSelected && !point.properties.dealer.dmsInfo.replacementCarServiceAvailable) {\n setGreyCard(true);\n } else {\n setGreyCard(false);\n }\n }\n }, [carPickupSelected, replacementCarSelected, point]);\n\n return (\n \n {/* {\n e.preventDefault();\n trackingManager.trackFormButtonClick(\n {\n contentId: 'Seleccionar',\n },\n dealerInfo\n );\n\n handleSeleccionarOnClick(point);\n }}\n >\n Seleccionar\n */}\n {\n e.preventDefault();\n trackingManager.trackFormButtonClick(\n {\n contentId: 'Seleccionar',\n },\n dealerInfo\n );\n\n handleSeleccionarOnClick(point);\n }}\n >\n \n Seleccionar\n \n \n \n );\n};\n","import { Breakpoints, BreakpointWrapper, styled } from '@volkswagen-onehub/components-core';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { Points } from 'src';\nimport { sortPointsByDistance, useTrackingManager, useFeatureServices } from 'src/feature-app';\nimport { getDistanceFromLatLngCenter, useMapGeneralController } from 'src/feature-app/NewMap';\nimport { CTAServicesProps, DealerCardWidget, ViewDesktopWidgetMapa, ViewMobileWidgetMapa } from 'src/widgets';\nimport { CTAMapaProps } from './CTAMapa';\n\nconst ContentWrapper = styled.div`\n width: 100%;\n /* height: 100%; */\n overflow: visible;\n height: 85vh;\n\n @media all and (min-width: 560px) {\n height: 82vh;\n }\n\n @media all and (min-width: 560px) {\n height: 85vh;\n }\n @media all and (min-width: 960px) {\n height: 60vh;\n }\n @media all and (min-width: 1600px) {\n height: 70vh;\n }\n`;\n\nexport interface ViewWidgetMapaProps {\n handleSeleccionarOnClick: (point: Points) => void;\n renderPoints(\n points: any,\n carPickupSelected?: boolean,\n replacementCarSelected?: boolean,\n isCarousel?: boolean\n ): JSX.Element[];\n pointsToList: Points[];\n CTAServicesProps: CTAServicesProps;\n CTAMapaProps: CTAMapaProps;\n}\n\ninterface MapaScreenProps {\n setShowMap: React.Dispatch>;\n}\n\nexport const MapaScreen = ({ setShowMap }: MapaScreenProps) => {\n const {\n clusters,\n centerToCalculateDistance,\n superClusterRef,\n cardsDistanceRef,\n getNewClusters,\n mapHasMoved,\n resetMap,\n } = useMapGeneralController();\n const trackingManager = useTrackingManager();\n\n const calculadoraFeatureService = useFeatureServices()['calculator-feature-service'];\n\n const [pointsToList, setPointsToList] = useState(null);\n const [carPickupSelected, setCarPickupSelected] = useState(false);\n const [replacementCarSelected, setReplacementCarSelected] = useState(false);\n\n const handleClickCarPickup = () => {\n if (!carPickupSelected) {\n setCarPickupSelected(true);\n } else {\n setCarPickupSelected(false);\n }\n };\n\n const handleClickReplacementCar = () => {\n if (!replacementCarSelected) {\n setReplacementCarSelected(true);\n } else {\n setReplacementCarSelected(false);\n }\n };\n\n const handleSeleccionarOnClick = (point: Points) => {\n if (calculadoraFeatureService) {\n const dealer = point?.properties?.dealer;\n calculadoraFeatureService.setInstallation({ name: dealer.name, code: dealer.kvps });\n } else {\n console.error('calculator-feature-service is not registered');\n }\n };\n\n useEffect(() => {\n if (clusters && superClusterRef.current) {\n const pointsByDistance = sortPointsByDistance(\n clusters,\n centerToCalculateDistance.current,\n superClusterRef.current\n );\n setPointsToList(pointsByDistance);\n }\n }, [clusters, superClusterRef.current]);\n\n const handleSearchArea = () => {\n trackingManager.trackFormButtonClick({\n contentId: 'Buscar en esta zona',\n });\n getNewClusters();\n {\n /*if (setTranslateCarousel) {\n setTranslateCarousel(false);\n }*/\n }\n };\n\n const handleSearchAgain = () => {\n setShowMap(false);\n resetMap();\n };\n\n const renderPoints = (\n points: Points[],\n carPickupSelected?: boolean,\n replacementCarSelected?: boolean,\n isCarousel?: boolean\n ): JSX.Element[] => {\n return points\n ? points.map((point: Points, index: number) => {\n if (!point.properties.cluster) {\n const { dealer } = point.properties;\n const distanceFromCenter = getDistanceFromLatLngCenter(centerToCalculateDistance.current, point);\n\n return (\n {\n cardsDistanceRef.current[index] = el;\n }}\n >\n \n
    \n );\n }\n return null;\n })\n : null;\n };\n // De momento la versión mobile no se ve bien ya que están los paddings de la feature app insertados y descuadra el 100vh del content wrapper.\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import {\n Container,\n ContainerGutter,\n ContainerPadding,\n ContainerWrap,\n CTA,\n styled,\n Text,\n TextAlignment,\n TextAppearance\n} from '@volkswagen-onehub/components-core';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { Suggestion } from 'src';\nimport { Suggest, updateMapVariables, useLocateUser } from 'src/feature-app';\nimport LoadScriptInstance from 'src/feature-app/NewMap/Loadscript';\n\ninterface SuggestionScreenProps {\n setShowMap: React.Dispatch>;\n}\n\nconst LocateWrapper = styled.div`\n overflow: visible;\n padding-top: 44px;\n padding-bottom: 15vh;\n \n @media all and (min-width: 1600px) {\n padding-bottom: 20vh;\n }\n`;\n\nexport const SuggestionScreen = ({ setShowMap }: SuggestionScreenProps) => {\n const dispatch = useDispatch();\n const {\n value,\n setValue,\n suggestion,\n setSuggestion,\n icon,\n locationSuccess,\n setLocationSuccess,\n handleLocate,\n isLocating,\n loading,\n locationDisabled,\n } = useLocateUser();\n const [searchDisabled, setSearchDisabled] = useState(true);\n\n const onSuggestionSelectedFn = (suggestion: Suggestion) => {\n updateMapVariables(dispatch, suggestion).then(() => {\n setShowMap(true);\n });\n };\n\n useEffect(() => {\n if (suggestion) {\n updateMapVariables(dispatch, suggestion).then(() => {\n setSearchDisabled(false);\n });\n }\n }, [suggestion]);\n\n return (\n {}}>\n \n \n \n ¿Qué taller quieres que se{' '}\n \n encargue?*\n \n \n \n \n
    \n \n
    \n \n
    \n {\n e.preventDefault();\n if (!locationSuccess) handleLocate();\n }}\n disabled={loading ? true : false}\n size=\"small\"\n >\n Localiza mi posición actual\n \n {locationDisabled ? (\n
    \n \n Tu localización está deshabilitada\n \n
    \n ) : null}\n
    \n {\n setShowMap(true);\n }}\n disabled={loading || searchDisabled ? true : false}\n >\n Buscar\n \n
    \n
    \n
    \n
    \n );\n};\n","import {\n Container,\n ContainerHorizontalAlignment,\n CTA,\n styled,\n ThemeProvider,\n} from '@volkswagen-onehub/components-core';\nimport React, { useState } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport { Filtros, NewMap, useMapGeneralController } from 'src/feature-app';\nimport { ArrowLeft } from 'src/icons-core-imports';\nimport { CTAMapa, CTAServices, ViewWidgetMapaProps } from 'src/widgets';\n\nconst MapAndTabsWrapper = styled.div<{ showFilters: boolean }>`\n display: flex;\n\n .wrapper {\n width: 50%;\n height: 100vh;\n &--tabs {\n max-width: 441px;\n overflow-y: hidden;\n }\n &--map {\n position: relative;\n width: 100%;\n z-index: 4;\n height: 100%;\n background-color: grey;\n }\n }\n .opacity-layer {\n position: absolute;\n width: 50%;\n height: 100%;\n left: 0;\n background: rgba(0, 0, 0, 0.4);\n z-index: ${(props) => (props.showFilters ? 6 : -1)};\n opacity: ${(props) => (props.showFilters ? 1 : 0)};\n transition: opacity 0.4s;\n }\n`;\n\nconst ListWrapper = styled.div`\n overflow-y: auto;\n padding-right: 40px;\n // 36px es la medida de los ctas de coche de sustitución y servicio de recogida\n height: calc(85vh - 36px);\n\n @media all and (min-width: 560px) {\n height: calc(82vh - 36px);\n }\n @media all and (min-width: 768px) {\n height: calc(85vh - 36px);\n }\n @media all and (min-width: 960px) {\n height: calc(60vh - 36px);\n }\n @media all and (min-width: 1600px) {\n height: calc(70vh - 36px);\n}\n`;\n\nconst FilterButton = styled.div`\n position: absolute;\n width: 100%;\n top: 24px;\n /* right: 24px; */\n button {\n background: #ffffff;\n }\n`;\n\nconst FiltrosWrapper = styled.div`\n min-height: 100vh;\n width: 50%;\n background-color: white;\n position: absolute;\n top: 0;\n right: 0;\n z-index: 5;\n transform: translate3d(100%, 0, 0);\n display: none;\n .back-btn {\n position: absolute;\n z-index: 4;\n top: 20px;\n left: 24px;\n @media screen and (min-width: 1600px) {\n top: 24px;\n }\n /* style={{ paddingTop: '12px', paddingLeft: '24px' }} */\n }\n .filtros-component {\n padding-bottom: 0;\n min-height: calc(100vh - 44px);\n }\n &.filtros-enter {\n display: block;\n transform: translate3d(100%, 0, 0);\n }\n &.filtros-enter-active {\n display: block;\n transform: translate3d(0, 0, 0);\n transition: all 0.4s;\n }\n &.filtros-enter-done {\n display: block;\n transform: translate3d(0, 0, 0);\n }\n &.filtros-exit {\n display: block;\n transform: translate3d(0, 0, 0);\n }\n &.filtros-exit-active {\n display: block;\n transform: translate3d(100%, 0, 0);\n transition: all 0.4s;\n }\n &.filtros-exit-done {\n display: none;\n transform: translate3d(100%, 0, 0);\n }\n`;\n\nexport const ViewDesktopWidgetMapa = (props: ViewWidgetMapaProps) => {\n const { renderPoints, pointsToList, CTAServicesProps, CTAMapaProps } = props;\n const { carPickupSelected, replacementCarSelected } = CTAServicesProps;\n const [showFiltros, setShowFiltros] = useState(false);\n\n const { searchIsDealer } = useMapGeneralController();\n\n const handleShowFiltros = () => {\n setShowFiltros(!showFiltros);\n };\n\n return (\n <>\n \n
    \n {/* */}\n \n \n
    \n {pointsToList ? (\n \n
    \n {renderPoints(pointsToList, carPickupSelected, replacementCarSelected, false)}\n
    \n
    \n ) : null}\n
    \n
    \n
    \n
    \n \n {/* Problemas con el scroll */}\n \n \n \n \n \n
    \n
    setShowFiltros(false)} />\n \n {/* {showFiltros ? ( */}\n\n \n {/* provar primer així i després amb render condicional .\n si es passa a condicional reisar front, probablement s'hauran de treure les css asignades a la clase\n filtros-component del component filtros-wrapper.\n */}\n \n \n
    \n {\n e.preventDefault();\n handleShowFiltros();\n }}\n ariaLabel=\"aria label\"\n icon={}\n />\n
    \n handleShowFiltros()}\n showFiltros={showFiltros}\n setShowFiltros={setShowFiltros}\n onlySuggest={true}\n concesionario={true}\n />\n
    \n
    \n
    \n {/* ) : null}*/}\n \n );\n};\n","import {\n Container,\n ContainerHorizontalAlignment,\n ContainerPadding,\n ContainerWrap,\n CTA,\n styled,\n Text,\n TextAppearance,\n ThemeProvider,\n} from '@volkswagen-onehub/components-core';\nimport React, { useEffect, useState } from 'react';\nimport { Filtros, NewMap, useMapGeneralController, useOneFormContext } from 'src/feature-app';\nimport { Close, Locate } from 'src/icons-core-imports';\nimport { CarouselWidget, CTAMapa, CTAServices, ViewWidgetMapaProps } from 'src/widgets';\n\n//Mobile styled components\n\nconst Wrapper = styled.div`\n display: flex;\n position: relative;\n`;\n\nconst WrapperCTAMapa = styled.div`\n z-index: 20;\n width: 100%;\n padding-top: 12px;\n position: absolute;\n\n & button {\n background: #ffffff;\n }\n`;\n\nconst FilterMobileNavbar = styled.div`\n position: relative;\n top: 0;\n width: 100vw;\n padding: 0px 20px;\n z-index: 20;\n background-color: #ffffff;\n display: flex;\n justify-content: space-between;\n`;\n\ninterface VerMasYCarouselPositionProps {\n translateCarousel: boolean;\n userIsGeoLocated: boolean;\n}\n\nconst VerMasYCarouselPosition = styled.div`\n position: absolute;\n bottom: 38px;\n height: ${(props) => (props.userIsGeoLocated ? '216px' : '160px')};\n width: 100%;\n transform: ${(props) => (props.translateCarousel ? 'translateY(116px)' : null)};\n @media all and (min-width: 560px) {\n height: ${(props) => (props.userIsGeoLocated ? '244px' : '184px')};\n }\n`;\nconst SoloCardWrapper = styled.div`\n background-color: #ffffff;\n bottom: 8px;\n height: fit-content;\n position: absolute;\n margin: 0 var(--size-grid002);\n width: var(--size-grid020);\n\n .box-card-wrapper {\n border: none;\n margin-top: 0;\n }\n`;\nconst CTASwrapper = styled.div`\n padding-right: 20px;\n padding-bottom: 12px;\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n`;\nconst VerMasTalleresCTA = styled.div`\n height: 32px;\n padding-right: 16px;\n padding-left: 16px;\n background-color: #ffffff;\n border: 1px solid #001e50;\n border-radius: 500px;\n color: #001e50;\n display: flex;\n align-items: center;\n width: 100px;\n`;\nconst ControllerBackground = styled.div`\n border-radius: 100%;\n background-color: #ffffff;\n height: 44px;\n width: 44px;\n margin-bottom: 12px;\n button {\n border: 1px solid #001e50;\n }\n`;\n\ninterface CloseButtonProps {\n isTabsClose?: boolean;\n}\nconst CloseButtonWrapper = styled.div`\n position: absolute;\n padding-bottom: ${(props) => (props.isTabsClose ? '12px' : null)};\n /* background-color: ${(props) => (props.isTabsClose ? '#FFFFFF' : '#FFFFFF')}; */\n background-color: #ffffff;\n width: 100%;\n padding-top: 12px;\n padding-left: 12px;\n z-index: 4;\n @media screen and (min-width: 560px) {\n left: 20px;\n }\n button {\n color: ${(props) => (props.isTabsClose ? '#001E50' : null)};\n }\n`;\nconst listIcon = require('../../feature-app/NewMap/assets/filter-ic_list.svg');\n\nexport const ViewMobileWidgetMapa = (props: ViewWidgetMapaProps) => {\n const { handleSeleccionarOnClick, renderPoints, pointsToList, CTAServicesProps, CTAMapaProps } = props;\n const { carPickupSelected, replacementCarSelected } = CTAServicesProps;\n\n const { handlePreviousStep } = useOneFormContext();\n\n const { centerInGeoLocatedCenter, userIsGeoLocated, searchIsDealer } = useMapGeneralController();\n\n //controladores de vista\n\n const [showFiltros, setShowFiltros] = useState(false);\n const [showTalleres, setShowTalleres] = useState(false);\n const [showMap, setShowMap] = useState(true);\n const [translateCarousel, setTranselateCarousel] = useState(false);\n\n //otros\n const [gelocalizationActive, setGelocalizationActive] = useState(false);\n\n useEffect(() => {\n if (userIsGeoLocated) {\n setGelocalizationActive(true);\n }\n }, [userIsGeoLocated]);\n\n const handleShowFiltros = () => {\n setShowFiltros(!showFiltros);\n setShowTalleres(false);\n };\n const handleShowTalleres = () => {\n setShowTalleres(!showTalleres);\n setShowFiltros(false);\n };\n\n useEffect(() => {\n if (showFiltros === false && showTalleres === false) {\n setShowMap(true);\n } else {\n setShowMap(false);\n }\n }, [showFiltros, showTalleres]);\n\n return (\n
    \n {showMap ? (\n <>\n \n {\n e.preventDefault();\n setTranselateCarousel(false);\n }}\n onTouchStart={(e) => {\n setTranselateCarousel(false);\n }}\n >\n \n \n \n \n \n \n \n \n \n
    \n \n\n {pointsToList ? (\n searchIsDealer ? (\n \n {renderPoints(pointsToList, carPickupSelected, replacementCarSelected, true)}\n \n ) : (\n {\n e.preventDefault();\n setTranselateCarousel(false);\n }}\n onTouchStart={(e) => {\n e.preventDefault();\n setTranselateCarousel(false);\n }}\n userIsGeoLocated={userIsGeoLocated}\n >\n \n \n {gelocalizationActive ? (\n {\n e.preventDefault();\n centerInGeoLocatedCenter();\n e.stopPropagation();\n }}\n >\n {\n e.preventDefault();\n centerInGeoLocatedCenter();\n e.stopPropagation();\n }}\n ariaLabel=\"aria label\"\n icon={}\n />\n \n ) : null}\n {\n e.preventDefault();\n e.stopPropagation();\n }}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n handleShowTalleres();\n setTranselateCarousel(false);\n }}\n >\n \n \n Ver lista\n \n \n \n \n\n {/* Aunque en principio no debería devolver nunca sólo un resultado, dejo el siguiente\n render condicional por is acaso */}\n {pointsToList.length === 1 ? (\n \n {renderPoints(pointsToList, carPickupSelected, replacementCarSelected, true)}\n \n ) : (\n \n )}\n \n )\n ) : null}\n \n ) : (\n <>\n {showTalleres ? (\n \n \n {\n e.preventDefault();\n handleShowTalleres();\n }}\n ariaLabel=\"aria label\"\n icon={}\n />\n \n \n \n\n {renderPoints(pointsToList, carPickupSelected, replacementCarSelected, false)}\n \n
    \n ) : showFiltros ? (\n \n \n \n {\n e.preventDefault();\n handleShowFiltros();\n }}\n ariaLabel=\"aria label\"\n icon={}\n />\n \n handleShowFiltros()}\n showFiltros={showFiltros}\n setShowFiltros={setShowFiltros}\n onlySuggest={true}\n concesionario={true}\n />\n
    \n
    \n ) : null}\n \n )}\n
    \n );\n};\n","import React, { useEffect, useRef, useState } from 'react';\nimport { useDispatch, useStore } from 'react-redux';\nimport { DealersData, Suggestion } from 'src';\nimport {\n useGetDealers,\n useFeatureAppEnvironment,\n FullScreen,\n ScreenController,\n updateMapVariables,\n LayerManagerWrapper,\n useFeatureServices,\n} from 'src/feature-app';\nimport { LoadingLayer } from 'src/forms';\nimport { MapGeneralController } from 'src/feature-app/NewMap';\nimport { MapaScreen } from './MapaScreen';\nimport { SuggestionScreen } from './SuggestionScreen';\nimport { FocusLayerSizeV2, LayerManagerV2 } from '@volkswagen-onehub/layer-manager';\n\nexport function WidgetMapa() {\n const { selectedDealer, dealers, loading } = useGetDealers();\n const [showMap, setShowMap] = useState(false);\n const store = useStore();\n const dispatch = useDispatch();\n const env = useFeatureAppEnvironment();\n const onSuggestionSelectedFn = (suggestion: Suggestion) => {\n updateMapVariables(dispatch, suggestion).then(() => {\n setShowMap(true);\n closeLoadingLayer();\n });\n };\n const loadingLayer = useRef(null);\n const calculadoraFeatureService = useFeatureServices()['calculator-feature-service'];\n const layerManager = useFeatureServices()['layer-manager'] as LayerManagerV2;\n\n const renderLoadingLayer = () => {\n return (\n \n \n \n );\n };\n\n const openLoadingLayer = () => {\n if (!loadingLayer.current) {\n const layer = layerManager.openFocusLayer(renderLoadingLayer, {}, { size: FocusLayerSizeV2.A });\n loadingLayer.current = layer;\n }\n };\n\n const closeLoadingLayer = () => {\n if (loadingLayer.current) {\n loadingLayer.current.close();\n loadingLayer.current = null;\n }\n };\n\n useEffect(() => {\n const kvps = calculadoraFeatureService?.getCalculatorData()?.installation?.code;\n dispatch({ type: 'DISABLE_TRACKING' });\n if (!kvps) {\n return;\n }\n openLoadingLayer();\n\n if (dealers) {\n const dealer: DealersData = dealers?.find((dealer) => dealer.kvps === kvps);\n if (dealer) {\n onSuggestionSelectedFn(dealer);\n }\n }\n }, [dealers, loading]);\n\n return (\n \n null}\n selectedJourney={\n showMap ? : \n }\n />\n \n );\n}\n","import React from 'react';\nimport { TriggerProps, useFaContent } from 'src/feature-app';\nimport { WidgetMapa } from 'src/widgets';\n\nexport function WidgetTrigger({ setSelectedJourney }: TriggerProps) {\n const faContent = useFaContent();\n\n if (faContent.widget === 'Mapa') {\n return ;\n }\n return null;\n }\n","import {\n Container, ContainerPadding\n} from '@volkswagen-onehub/components-core';\nimport React from 'react';\nimport { TriggerProps } from 'src/feature-app';\nimport { DisplayImagenesYCTATrigger, SectionMensajes } from 'src/forms/FormsAdhoc/DiaDeLaMadre/componentsAndViews';\n\nexport function DiaDeLaMadreTrigger(props: TriggerProps) {\n\n const { setSelectedJourney, setCTALabel } = props;\n\n return (\n <>\n \n \n \n \n \n );\n}\n","import React from 'react';\nimport { TriggerProps } from 'src/feature-app';\nimport { EurocopaForm } from 'src/forms/FormsAdhoc/Eurocopa';\nimport { ScreenController } from 'src/feature-app/Screen';\n\nexport function EurocopaTrigger(props: TriggerProps) {\n\n return (\n
    \n }\n closeLayerCallback={close}\n handleAreYouSureLayer={() => null}\n notALayer={true}\n />\n
    \n );\n}\n","import React from 'react';\nimport { ScreenController, TriggerProps, useFaContent } from 'src/feature-app';\nimport { FidelizacionController } from 'src/forms/FormsAdhoc/Fidelizacion';\n\nexport function FidelizacionTrigger(props: TriggerProps) {\n const { setSelectedJourney, setCTALabel } = props;\n const faContent = useFaContent();\n\n const getCtaLabel = () => (faContent?.cta ? faContent.cta : 'Pide esta oferta');\n\n return (\n
    \n }\n closeLayerCallback={close}\n handleAreYouSureLayer={() => null}\n notALayer={true}\n />\n
    \n );\n}\n","import { createGlobalStyle } from 'styled-components';\n\nexport const GlobalStyle = createGlobalStyle`\n @font-face {\n font-family: 'LatinoTypeVersusBlack';\n src: url('https://cdn.volkswagen.es/repository/fonts/latinotype/latinotype_versus_black.otf');\n }\n @font-face {\n font-family: 'LatinoTypeVersusBold';\n src: url('https://cdn.volkswagen.es/repository/fonts/latinotype/latinotype_versus_bold.otf');\n }\n`;\n","// Polyfills\n\nif ( Number.EPSILON === undefined ) {\n\n\tNumber.EPSILON = Math.pow( 2, - 52 );\n\n}\n\nif ( Number.isInteger === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger\n\n\tNumber.isInteger = function ( value ) {\n\n\t\treturn typeof value === 'number' && isFinite( value ) && Math.floor( value ) === value;\n\n\t};\n\n}\n\n//\n\nif ( Math.sign === undefined ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign\n\n\tMath.sign = function ( x ) {\n\n\t\treturn ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : + x;\n\n\t};\n\n}\n\nif ( 'name' in Function.prototype === false ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name\n\n\tObject.defineProperty( Function.prototype, 'name', {\n\n\t\tget: function () {\n\n\t\t\treturn this.toString().match( /^\\s*function\\s*([^\\(\\s]*)/ )[ 1 ];\n\n\t\t}\n\n\t} );\n\n}\n\nif ( Object.assign === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n\n\t( function () {\n\n\t\tObject.assign = function ( target ) {\n\n\t\t\tif ( target === undefined || target === null ) {\n\n\t\t\t\tthrow new TypeError( 'Cannot convert undefined or null to object' );\n\n\t\t\t}\n\n\t\t\tvar output = Object( target );\n\n\t\t\tfor ( var index = 1; index < arguments.length; index ++ ) {\n\n\t\t\t\tvar source = arguments[ index ];\n\n\t\t\t\tif ( source !== undefined && source !== null ) {\n\n\t\t\t\t\tfor ( var nextKey in source ) {\n\n\t\t\t\t\t\tif ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) {\n\n\t\t\t\t\t\t\toutput[ nextKey ] = source[ nextKey ];\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn output;\n\n\t\t};\n\n\t} )();\n\n}\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nfunction EventDispatcher() {}\n\nObject.assign( EventDispatcher.prototype, {\n\n\taddEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tvar listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t},\n\n\thasEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tvar listeners = this._listeners;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t},\n\n\tremoveEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tvar listeners = this._listeners;\n\t\tvar listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tvar index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tdispatchEvent: function ( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tvar listeners = this._listeners;\n\t\tvar listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\tvar array = listenerArray.slice( 0 );\n\n\t\t\tfor ( var i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nvar REVISION = '107';\nvar MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nvar TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nvar CullFaceNone = 0;\nvar CullFaceBack = 1;\nvar CullFaceFront = 2;\nvar CullFaceFrontBack = 3;\nvar FrontFaceDirectionCW = 0;\nvar FrontFaceDirectionCCW = 1;\nvar BasicShadowMap = 0;\nvar PCFShadowMap = 1;\nvar PCFSoftShadowMap = 2;\nvar FrontSide = 0;\nvar BackSide = 1;\nvar DoubleSide = 2;\nvar FlatShading = 1;\nvar SmoothShading = 2;\nvar NoColors = 0;\nvar FaceColors = 1;\nvar VertexColors = 2;\nvar NoBlending = 0;\nvar NormalBlending = 1;\nvar AdditiveBlending = 2;\nvar SubtractiveBlending = 3;\nvar MultiplyBlending = 4;\nvar CustomBlending = 5;\nvar AddEquation = 100;\nvar SubtractEquation = 101;\nvar ReverseSubtractEquation = 102;\nvar MinEquation = 103;\nvar MaxEquation = 104;\nvar ZeroFactor = 200;\nvar OneFactor = 201;\nvar SrcColorFactor = 202;\nvar OneMinusSrcColorFactor = 203;\nvar SrcAlphaFactor = 204;\nvar OneMinusSrcAlphaFactor = 205;\nvar DstAlphaFactor = 206;\nvar OneMinusDstAlphaFactor = 207;\nvar DstColorFactor = 208;\nvar OneMinusDstColorFactor = 209;\nvar SrcAlphaSaturateFactor = 210;\nvar NeverDepth = 0;\nvar AlwaysDepth = 1;\nvar LessDepth = 2;\nvar LessEqualDepth = 3;\nvar EqualDepth = 4;\nvar GreaterEqualDepth = 5;\nvar GreaterDepth = 6;\nvar NotEqualDepth = 7;\nvar MultiplyOperation = 0;\nvar MixOperation = 1;\nvar AddOperation = 2;\nvar NoToneMapping = 0;\nvar LinearToneMapping = 1;\nvar ReinhardToneMapping = 2;\nvar Uncharted2ToneMapping = 3;\nvar CineonToneMapping = 4;\nvar ACESFilmicToneMapping = 5;\n\nvar UVMapping = 300;\nvar CubeReflectionMapping = 301;\nvar CubeRefractionMapping = 302;\nvar EquirectangularReflectionMapping = 303;\nvar EquirectangularRefractionMapping = 304;\nvar SphericalReflectionMapping = 305;\nvar CubeUVReflectionMapping = 306;\nvar CubeUVRefractionMapping = 307;\nvar RepeatWrapping = 1000;\nvar ClampToEdgeWrapping = 1001;\nvar MirroredRepeatWrapping = 1002;\nvar NearestFilter = 1003;\nvar NearestMipmapNearestFilter = 1004;\nvar NearestMipMapNearestFilter = 1004;\nvar NearestMipmapLinearFilter = 1005;\nvar NearestMipMapLinearFilter = 1005;\nvar LinearFilter = 1006;\nvar LinearMipmapNearestFilter = 1007;\nvar LinearMipMapNearestFilter = 1007;\nvar LinearMipmapLinearFilter = 1008;\nvar LinearMipMapLinearFilter = 1008;\nvar UnsignedByteType = 1009;\nvar ByteType = 1010;\nvar ShortType = 1011;\nvar UnsignedShortType = 1012;\nvar IntType = 1013;\nvar UnsignedIntType = 1014;\nvar FloatType = 1015;\nvar HalfFloatType = 1016;\nvar UnsignedShort4444Type = 1017;\nvar UnsignedShort5551Type = 1018;\nvar UnsignedShort565Type = 1019;\nvar UnsignedInt248Type = 1020;\nvar AlphaFormat = 1021;\nvar RGBFormat = 1022;\nvar RGBAFormat = 1023;\nvar LuminanceFormat = 1024;\nvar LuminanceAlphaFormat = 1025;\nvar RGBEFormat = RGBAFormat;\nvar DepthFormat = 1026;\nvar DepthStencilFormat = 1027;\nvar RedFormat = 1028;\nvar RGB_S3TC_DXT1_Format = 33776;\nvar RGBA_S3TC_DXT1_Format = 33777;\nvar RGBA_S3TC_DXT3_Format = 33778;\nvar RGBA_S3TC_DXT5_Format = 33779;\nvar RGB_PVRTC_4BPPV1_Format = 35840;\nvar RGB_PVRTC_2BPPV1_Format = 35841;\nvar RGBA_PVRTC_4BPPV1_Format = 35842;\nvar RGBA_PVRTC_2BPPV1_Format = 35843;\nvar RGB_ETC1_Format = 36196;\nvar RGBA_ASTC_4x4_Format = 37808;\nvar RGBA_ASTC_5x4_Format = 37809;\nvar RGBA_ASTC_5x5_Format = 37810;\nvar RGBA_ASTC_6x5_Format = 37811;\nvar RGBA_ASTC_6x6_Format = 37812;\nvar RGBA_ASTC_8x5_Format = 37813;\nvar RGBA_ASTC_8x6_Format = 37814;\nvar RGBA_ASTC_8x8_Format = 37815;\nvar RGBA_ASTC_10x5_Format = 37816;\nvar RGBA_ASTC_10x6_Format = 37817;\nvar RGBA_ASTC_10x8_Format = 37818;\nvar RGBA_ASTC_10x10_Format = 37819;\nvar RGBA_ASTC_12x10_Format = 37820;\nvar RGBA_ASTC_12x12_Format = 37821;\nvar LoopOnce = 2200;\nvar LoopRepeat = 2201;\nvar LoopPingPong = 2202;\nvar InterpolateDiscrete = 2300;\nvar InterpolateLinear = 2301;\nvar InterpolateSmooth = 2302;\nvar ZeroCurvatureEnding = 2400;\nvar ZeroSlopeEnding = 2401;\nvar WrapAroundEnding = 2402;\nvar TrianglesDrawMode = 0;\nvar TriangleStripDrawMode = 1;\nvar TriangleFanDrawMode = 2;\nvar LinearEncoding = 3000;\nvar sRGBEncoding = 3001;\nvar GammaEncoding = 3007;\nvar RGBEEncoding = 3002;\nvar LogLuvEncoding = 3003;\nvar RGBM7Encoding = 3004;\nvar RGBM16Encoding = 3005;\nvar RGBDEncoding = 3006;\nvar BasicDepthPacking = 3200;\nvar RGBADepthPacking = 3201;\nvar TangentSpaceNormalMap = 0;\nvar ObjectSpaceNormalMap = 1;\n\nvar ZeroStencilOp = 0;\nvar KeepStencilOp = 7680;\nvar ReplaceStencilOp = 7681;\nvar IncrementStencilOp = 7682;\nvar DecrementStencilOp = 7683;\nvar IncrementWrapStencilOp = 34055;\nvar DecrementWrapStencilOp = 34056;\nvar InvertStencilOp = 5386;\n\nvar NeverStencilFunc = 512;\nvar LessStencilFunc = 513;\nvar EqualStencilFunc = 514;\nvar LessEqualStencilFunc = 515;\nvar GreaterStencilFunc = 516;\nvar NotEqualStencilFunc = 517;\nvar GreaterEqualStencilFunc = 518;\nvar AlwaysStencilFunc = 519;\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _Math = {\n\n\tDEG2RAD: Math.PI / 180,\n\tRAD2DEG: 180 / Math.PI,\n\n\tgenerateUUID: ( function () {\n\n\t\t// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\n\n\t\tvar lut = [];\n\n\t\tfor ( var i = 0; i < 256; i ++ ) {\n\n\t\t\tlut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 );\n\n\t\t}\n\n\t\treturn function generateUUID() {\n\n\t\t\tvar d0 = Math.random() * 0xffffffff | 0;\n\t\t\tvar d1 = Math.random() * 0xffffffff | 0;\n\t\t\tvar d2 = Math.random() * 0xffffffff | 0;\n\t\t\tvar d3 = Math.random() * 0xffffffff | 0;\n\t\t\tvar uuid = lut[ d0 & 0xff ] + lut[ d0 >> 8 & 0xff ] + lut[ d0 >> 16 & 0xff ] + lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t\tlut[ d1 & 0xff ] + lut[ d1 >> 8 & 0xff ] + '-' + lut[ d1 >> 16 & 0x0f | 0x40 ] + lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t\tlut[ d2 & 0x3f | 0x80 ] + lut[ d2 >> 8 & 0xff ] + '-' + lut[ d2 >> 16 & 0xff ] + lut[ d2 >> 24 & 0xff ] +\n\t\t\t\tlut[ d3 & 0xff ] + lut[ d3 >> 8 & 0xff ] + lut[ d3 >> 16 & 0xff ] + lut[ d3 >> 24 & 0xff ];\n\n\t\t\t// .toUpperCase() here flattens concatenated strings to save heap memory space.\n\t\t\treturn uuid.toUpperCase();\n\n\t\t};\n\n\t} )(),\n\n\tclamp: function ( value, min, max ) {\n\n\t\treturn Math.max( min, Math.min( max, value ) );\n\n\t},\n\n\t// compute euclidian modulo of m % n\n\t// https://en.wikipedia.org/wiki/Modulo_operation\n\n\teuclideanModulo: function ( n, m ) {\n\n\t\treturn ( ( n % m ) + m ) % m;\n\n\t},\n\n\t// Linear mapping from range to range \n\n\tmapLinear: function ( x, a1, a2, b1, b2 ) {\n\n\t\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n\t},\n\n\t// https://en.wikipedia.org/wiki/Linear_interpolation\n\n\tlerp: function ( x, y, t ) {\n\n\t\treturn ( 1 - t ) * x + t * y;\n\n\t},\n\n\t// http://en.wikipedia.org/wiki/Smoothstep\n\n\tsmoothstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * ( 3 - 2 * x );\n\n\t},\n\n\tsmootherstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n\t},\n\n\t// Random integer from interval\n\n\trandInt: function ( low, high ) {\n\n\t\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n\t},\n\n\t// Random float from interval\n\n\trandFloat: function ( low, high ) {\n\n\t\treturn low + Math.random() * ( high - low );\n\n\t},\n\n\t// Random float from <-range/2, range/2> interval\n\n\trandFloatSpread: function ( range ) {\n\n\t\treturn range * ( 0.5 - Math.random() );\n\n\t},\n\n\tdegToRad: function ( degrees ) {\n\n\t\treturn degrees * _Math.DEG2RAD;\n\n\t},\n\n\tradToDeg: function ( radians ) {\n\n\t\treturn radians * _Math.RAD2DEG;\n\n\t},\n\n\tisPowerOfTwo: function ( value ) {\n\n\t\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n\t},\n\n\tceilPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tfloorPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author philogb / http://blog.thejit.org/\n * @author egraether / http://egraether.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nfunction Vector2( x, y ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\n}\n\nObject.defineProperties( Vector2.prototype, {\n\n\t\"width\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.x = value;\n\n\t\t}\n\n\t},\n\n\t\"height\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.y = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tisVector2: true,\n\n\tset: function ( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tvar x = this.x, y = this.y;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tvar length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t},\n\n\tcross: function ( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tangle: function () {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tvar angle = Math.atan2( this.y, this.x );\n\n\t\tif ( angle < 0 ) angle += 2 * Math.PI;\n\n\t\treturn angle;\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tvar dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t},\n\n\tmanhattanDistanceTo: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t},\n\n\trotateAround: function ( center, angle ) {\n\n\t\tvar c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tvar x = this.x - center.x;\n\t\tvar y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nfunction Quaternion( x, y, z, w ) {\n\n\tthis._x = x || 0;\n\tthis._y = y || 0;\n\tthis._z = z || 0;\n\tthis._w = ( w !== undefined ) ? w : 1;\n\n}\n\nObject.assign( Quaternion, {\n\n\tslerp: function ( qa, qb, qm, t ) {\n\n\t\treturn qm.copy( qa ).slerp( qb, t );\n\n\t},\n\n\tslerpFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tvar x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ],\n\n\t\t\tx1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tvar s = 1 - t,\n\n\t\t\t\tcos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tvar sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tvar tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tvar f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n} );\n\nObject.defineProperties( Quaternion.prototype, {\n\n\tx: {\n\n\t\tget: function () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\ty: {\n\n\t\tget: function () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tz: {\n\n\t\tget: function () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tw: {\n\n\t\tget: function () {\n\n\t\t\treturn this._w;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._w = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Quaternion.prototype, {\n\n\tisQuaternion: true,\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t},\n\n\tcopy: function ( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromEuler: function ( euler, update ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tvar x = euler._x, y = euler._y, z = euler._z, order = euler.order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tvar cos = Math.cos;\n\t\tvar sin = Math.sin;\n\n\t\tvar c1 = cos( x / 2 );\n\t\tvar c2 = cos( y / 2 );\n\t\tvar c3 = cos( z / 2 );\n\n\t\tvar s1 = sin( x / 2 );\n\t\tvar s2 = sin( y / 2 );\n\t\tvar s3 = sin( z / 2 );\n\n\t\tif ( order === 'XYZ' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'YXZ' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t} else if ( order === 'ZXY' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'ZYX' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t} else if ( order === 'YZX' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'XZY' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t}\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromAxisAngle: function ( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tvar halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33,\n\t\t\ts;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\ts = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromUnitVectors: function ( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tvar EPS = 0.000001;\n\n\t\tvar r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < EPS ) {\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t},\n\n\tangleTo: function ( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( _Math.clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t},\n\n\trotateTowards: function ( q, step ) {\n\n\t\tvar angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tvar t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t},\n\n\tinverse: function () {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t},\n\n\tconjugate: function () {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\tvar l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( q, p ) {\n\n\t\tif ( p !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\n\t\t\treturn this.multiplyQuaternions( q, p );\n\n\t\t}\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t},\n\n\tpremultiply: function ( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t},\n\n\tmultiplyQuaternions: function ( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tvar qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tvar qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tslerp: function ( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tvar x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tvar cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tvar s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize();\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tvar halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tvar ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t},\n\n\t_onChange: function ( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\t_onChangeCallback: function () {}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author kile / http://kile.stravaganza.org/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Vector3( x, y, z ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\tthis.z = z || 0;\n\n}\n\nObject.assign( Vector3.prototype, {\n\n\tisVector3: true,\n\n\tset: function ( x, y, z ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\n\t\t\treturn this.multiplyVectors( v, w );\n\n\t\t}\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyVectors: function ( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyEuler: function () {\n\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function applyEuler( euler ) {\n\n\t\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\t\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t\t}\n\n\t\t\treturn this.applyQuaternion( quaternion.setFromEuler( euler ) );\n\n\t\t};\n\n\t}(),\n\n\tapplyAxisAngle: function () {\n\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function applyAxisAngle( axis, angle ) {\n\n\t\t\treturn this.applyQuaternion( quaternion.setFromAxisAngle( axis, angle ) );\n\n\t\t};\n\n\t}(),\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tvar w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tvar ix = qw * x + qy * z - qz * y;\n\t\tvar iy = qw * y + qz * x - qx * z;\n\t\tvar iz = qw * z + qx * y - qy * x;\n\t\tvar iw = - qx * x - qy * y - qz * z;\n\n\t\t// calculate result * inverse quat\n\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\treturn this;\n\n\t},\n\n\tproject: function ( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t},\n\n\tunproject: function ( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t},\n\n\ttransformDirection: function ( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tvar length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t},\n\n\t// TODO lengthSquared?\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tcross: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\n\t\t\treturn this.crossVectors( v, w );\n\n\t\t}\n\n\t\treturn this.crossVectors( this, v );\n\n\t},\n\n\tcrossVectors: function ( a, b ) {\n\n\t\tvar ax = a.x, ay = a.y, az = a.z;\n\t\tvar bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t},\n\n\tprojectOnVector: function ( vector ) {\n\n\t\tvar scalar = vector.dot( this ) / vector.lengthSq();\n\n\t\treturn this.copy( vector ).multiplyScalar( scalar );\n\n\t},\n\n\tprojectOnPlane: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function projectOnPlane( planeNormal ) {\n\n\t\t\tv1.copy( this ).projectOnVector( planeNormal );\n\n\t\t\treturn this.sub( v1 );\n\n\t\t};\n\n\t}(),\n\n\treflect: function () {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function reflect( normal ) {\n\n\t\t\treturn this.sub( v1.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t\t};\n\n\t}(),\n\n\tangleTo: function ( v ) {\n\n\t\tvar theta = this.dot( v ) / ( Math.sqrt( this.lengthSq() * v.lengthSq() ) );\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( _Math.clamp( theta, - 1, 1 ) );\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tvar dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t},\n\n\tmanhattanDistanceTo: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t},\n\n\tsetFromSpherical: function ( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t},\n\n\tsetFromSphericalCoords: function ( radius, phi, theta ) {\n\n\t\tvar sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCylindrical: function ( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t},\n\n\tsetFromCylindricalCoords: function ( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixPosition: function ( m ) {\n\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixScale: function ( m ) {\n\n\t\tvar sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tvar sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tvar sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixColumn: function ( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n * @author tschw\n */\n\nvar _vector;\n\nfunction Matrix3() {\n\n\tthis.elements = [\n\n\t\t1, 0, 0,\n\t\t0, 1, 0,\n\t\t0, 0, 1\n\n\t];\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nObject.assign( Matrix3.prototype, {\n\n\tisMatrix3: true,\n\n\tset: function ( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrix4: function ( m ) {\n\n\t\tvar me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tapplyToBufferAttribute: function ( attribute ) {\n\n\t\tif ( _vector === undefined ) _vector = new Vector3();\n\n\t\tfor ( var i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\t_vector.x = attribute.getX( i );\n\t\t\t_vector.y = attribute.getY( i );\n\t\t\t_vector.z = attribute.getZ( i );\n\n\t\t\t_vector.applyMatrix3( this );\n\n\t\t\tattribute.setXYZ( i, _vector.x, _vector.y, _vector.z );\n\n\t\t}\n\n\t\treturn attribute;\n\n\t},\n\n\tmultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tvar ae = a.elements;\n\t\tvar be = b.elements;\n\t\tvar te = this.elements;\n\n\t\tvar a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tvar a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tvar a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tvar b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tvar b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tvar b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tdeterminant: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t},\n\n\tgetInverse: function ( matrix, throwOnDegenerate ) {\n\n\t\tif ( matrix && matrix.isMatrix4 ) {\n\n\t\t\tconsole.error( \"THREE.Matrix3: .getInverse() no longer takes a Matrix4 argument.\" );\n\n\t\t}\n\n\t\tvar me = matrix.elements,\n\t\t\tte = this.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ],\n\t\t\tn12 = me[ 3 ], n22 = me[ 4 ], n32 = me[ 5 ],\n\t\t\tn13 = me[ 6 ], n23 = me[ 7 ], n33 = me[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) {\n\n\t\t\tvar msg = \"THREE.Matrix3: .getInverse() can't invert matrix, determinant is 0\";\n\n\t\t\tif ( throwOnDegenerate === true ) {\n\n\t\t\t\tthrow new Error( msg );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( msg );\n\n\t\t\t}\n\n\t\t\treturn this.identity();\n\n\t\t}\n\n\t\tvar detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\ttranspose: function () {\n\n\t\tvar tmp, m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tgetNormalMatrix: function ( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).getInverse( this ).transpose();\n\n\t},\n\n\ttransposeIntoArray: function ( r ) {\n\n\t\tvar m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetUvTransform: function ( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tvar c = Math.cos( rotation );\n\t\tvar s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t},\n\n\tscale: function ( sx, sy ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx;\n\t\tte[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy;\n\n\t\treturn this;\n\n\t},\n\n\trotate: function ( theta ) {\n\n\t\tvar c = Math.cos( theta );\n\t\tvar s = Math.sin( theta );\n\n\t\tvar te = this.elements;\n\n\t\tvar a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ];\n\t\tvar a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ];\n\n\t\tte[ 0 ] = c * a11 + s * a21;\n\t\tte[ 3 ] = c * a12 + s * a22;\n\t\tte[ 6 ] = c * a13 + s * a23;\n\n\t\tte[ 1 ] = - s * a11 + c * a21;\n\t\tte[ 4 ] = - s * a12 + c * a22;\n\t\tte[ 7 ] = - s * a13 + c * a23;\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( tx, ty ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ];\n\t\tte[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = matrix.elements;\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tvar te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n */\n\nvar _canvas;\n\nvar ImageUtils = {\n\n\tgetDataURL: function ( image ) {\n\n\t\tvar canvas;\n\n\t\tif ( typeof HTMLCanvasElement == 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t} else if ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tvar context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t} else {\n\n\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t}\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n */\n\nvar textureId = 0;\n\nfunction Texture( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\tObject.defineProperty( this, 'id', { value: textureId ++ } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\n\tthis.image = image !== undefined ? image : Texture.DEFAULT_IMAGE;\n\tthis.mipmaps = [];\n\n\tthis.mapping = mapping !== undefined ? mapping : Texture.DEFAULT_MAPPING;\n\n\tthis.wrapS = wrapS !== undefined ? wrapS : ClampToEdgeWrapping;\n\tthis.wrapT = wrapT !== undefined ? wrapT : ClampToEdgeWrapping;\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearMipmapLinearFilter;\n\n\tthis.anisotropy = anisotropy !== undefined ? anisotropy : 1;\n\n\tthis.format = format !== undefined ? format : RGBAFormat;\n\tthis.type = type !== undefined ? type : UnsignedByteType;\n\n\tthis.offset = new Vector2( 0, 0 );\n\tthis.repeat = new Vector2( 1, 1 );\n\tthis.center = new Vector2( 0, 0 );\n\tthis.rotation = 0;\n\n\tthis.matrixAutoUpdate = true;\n\tthis.matrix = new Matrix3();\n\n\tthis.generateMipmaps = true;\n\tthis.premultiplyAlpha = false;\n\tthis.flipY = true;\n\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t//\n\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\tthis.encoding = encoding !== undefined ? encoding : LinearEncoding;\n\n\tthis.version = 0;\n\tthis.onUpdate = null;\n\n}\n\nTexture.DEFAULT_IMAGE = undefined;\nTexture.DEFAULT_MAPPING = UVMapping;\n\nTexture.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Texture,\n\n\tisTexture: true,\n\n\tupdateMatrix: function () {\n\n\t\tthis.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.image = source.image;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.encoding = source.encoding;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tvar output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\tmapping: this.mapping,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\ttype: this.type,\n\t\t\tencoding: this.encoding,\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY,\n\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( this.image !== undefined ) {\n\n\t\t\t// TODO: Move to THREE.Image\n\n\t\t\tvar image = this.image;\n\n\t\t\tif ( image.uuid === undefined ) {\n\n\t\t\t\timage.uuid = _Math.generateUUID(); // UGH\n\n\t\t\t}\n\n\t\t\tif ( ! isRootObject && meta.images[ image.uuid ] === undefined ) {\n\n\t\t\t\tvar url;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\t// process array of images e.g. CubeTexture\n\n\t\t\t\t\turl = [];\n\n\t\t\t\t\tfor ( var i = 0, l = image.length; i < l; i ++ ) {\n\n\t\t\t\t\t\turl.push( ImageUtils.getDataURL( image[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// process single image\n\n\t\t\t\t\turl = ImageUtils.getDataURL( image );\n\n\t\t\t\t}\n\n\t\t\t\tmeta.images[ image.uuid ] = {\n\t\t\t\t\tuuid: image.uuid,\n\t\t\t\t\turl: url\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\toutput.image = image.uuid;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t},\n\n\ttransformUv: function ( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n} );\n\nObject.defineProperty( Texture.prototype, \"needsUpdate\", {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\n/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Vector4( x, y, z, w ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\tthis.z = z || 0;\n\tthis.w = ( w !== undefined ) ? w : 1;\n\n}\n\nObject.defineProperties( Vector4.prototype, {\n\n\t\"width\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.z = value;\n\n\t\t}\n\n\t},\n\n\t\"height\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.w;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.w = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Vector4.prototype, {\n\n\tisVector4: true,\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tsetAxisAngleFromQuaternion: function ( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tvar s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetAxisAngleFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar angle, x, y, z,\t\t// variables for result\n\t\t\tepsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tvar xx = ( m11 + 1 ) / 2;\n\t\t\tvar yy = ( m22 + 1 ) / 2;\n\t\t\tvar zz = ( m33 + 1 ) / 2;\n\t\t\tvar xy = ( m12 + m21 ) / 4;\n\t\t\tvar xz = ( m13 + m31 ) / 4;\n\t\t\tvar yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tvar s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t ( m13 - m31 ) * ( m13 - m31 ) +\n\t\t ( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\t\tthis.w = Math.max( minVal, Math.min( maxVal, this.w ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tvar length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author szimek / https://github.com/szimek/\n * @author alteredq / http://alteredqualia.com/\n * @author Marius Kintel / https://github.com/kintel\n */\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nfunction WebGLRenderTarget( width, height, options ) {\n\n\tthis.width = width;\n\tthis.height = height;\n\n\tthis.scissor = new Vector4( 0, 0, width, height );\n\tthis.scissorTest = false;\n\n\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\toptions = options || {};\n\n\tthis.texture = new Texture( undefined, undefined, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\tthis.texture.image = {};\n\tthis.texture.image.width = width;\n\tthis.texture.image.height = height;\n\n\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : true;\n\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n}\n\nWebGLRenderTarget.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: WebGLRenderTarget,\n\n\tisWebGLRenderTarget: true,\n\n\tsetSize: function ( width, height ) {\n\n\t\tif ( this.width !== width || this.height !== height ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\n\t\t\tthis.texture.image.width = width;\n\t\t\tthis.texture.image.height = height;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\tthis.depthTexture = source.depthTexture;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n * @author Matt DesLauriers / @mattdesl\n */\n\nfunction WebGLMultisampleRenderTarget( width, height, options ) {\n\n\tWebGLRenderTarget.call( this, width, height, options );\n\n\tthis.samples = 4;\n\n}\n\nWebGLMultisampleRenderTarget.prototype = Object.assign( Object.create( WebGLRenderTarget.prototype ), {\n\n\tconstructor: WebGLMultisampleRenderTarget,\n\n\tisWebGLMultisampleRenderTarget: true,\n\n\tcopy: function ( source ) {\n\n\t\tWebGLRenderTarget.prototype.copy.call( this, source );\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author jordi_ros / http://plattsoft.com\n * @author D1plo1d / http://github.com/D1plo1d\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author timknip / http://www.floorplanner.com/\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Matrix4() {\n\n\tthis.elements = [\n\n\t\t1, 0, 0, 0,\n\t\t0, 1, 0, 0,\n\t\t0, 0, 1, 0,\n\t\t0, 0, 0, 1\n\n\t];\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nObject.assign( Matrix4.prototype, {\n\n\tisMatrix4: true,\n\n\tset: function ( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t},\n\n\tcopyPosition: function ( m ) {\n\n\t\tvar te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\textractBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmakeBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\textractRotation: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function extractRotation( m ) {\n\n\t\t\t// this method does not support reflection matrices\n\n\t\t\tvar te = this.elements;\n\t\t\tvar me = m.elements;\n\n\t\t\tvar scaleX = 1 / v1.setFromMatrixColumn( m, 0 ).length();\n\t\t\tvar scaleY = 1 / v1.setFromMatrixColumn( m, 1 ).length();\n\t\t\tvar scaleZ = 1 / v1.setFromMatrixColumn( m, 2 ).length();\n\n\t\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\t\tte[ 3 ] = 0;\n\n\t\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\t\tte[ 7 ] = 0;\n\n\t\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\t\tte[ 11 ] = 0;\n\n\t\t\tte[ 12 ] = 0;\n\t\t\tte[ 13 ] = 0;\n\t\t\tte[ 14 ] = 0;\n\t\t\tte[ 15 ] = 1;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tmakeRotationFromEuler: function ( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tvar te = this.elements;\n\n\t\tvar x = euler.x, y = euler.y, z = euler.z;\n\t\tvar a = Math.cos( x ), b = Math.sin( x );\n\t\tvar c = Math.cos( y ), d = Math.sin( y );\n\t\tvar e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tvar ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tvar ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tvar ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tvar ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tvar ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tvar ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationFromQuaternion: function () {\n\n\t\tvar zero = new Vector3( 0, 0, 0 );\n\t\tvar one = new Vector3( 1, 1, 1 );\n\n\t\treturn function makeRotationFromQuaternion( q ) {\n\n\t\t\treturn this.compose( zero, q, one );\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\tvar x = new Vector3();\n\t\tvar y = new Vector3();\n\t\tvar z = new Vector3();\n\n\t\treturn function lookAt( eye, target, up ) {\n\n\t\t\tvar te = this.elements;\n\n\t\t\tz.subVectors( eye, target );\n\n\t\t\tif ( z.lengthSq() === 0 ) {\n\n\t\t\t\t// eye and target are in the same position\n\n\t\t\t\tz.z = 1;\n\n\t\t\t}\n\n\t\t\tz.normalize();\n\t\t\tx.crossVectors( up, z );\n\n\t\t\tif ( x.lengthSq() === 0 ) {\n\n\t\t\t\t// up and z are parallel\n\n\t\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t\tz.x += 0.0001;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz.z += 0.0001;\n\n\t\t\t\t}\n\n\t\t\t\tz.normalize();\n\t\t\t\tx.crossVectors( up, z );\n\n\t\t\t}\n\n\t\t\tx.normalize();\n\t\t\ty.crossVectors( z, x );\n\n\t\t\tte[ 0 ] = x.x; te[ 4 ] = y.x; te[ 8 ] = z.x;\n\t\t\tte[ 1 ] = x.y; te[ 5 ] = y.y; te[ 9 ] = z.y;\n\t\t\tte[ 2 ] = x.z; te[ 6 ] = y.z; te[ 10 ] = z.z;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tmultiply: function ( m, n ) {\n\n\t\tif ( n !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\n\t\t\treturn this.multiplyMatrices( m, n );\n\n\t\t}\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tvar ae = a.elements;\n\t\tvar be = b.elements;\n\t\tvar te = this.elements;\n\n\t\tvar a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tvar a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tvar a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tvar a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tvar b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tvar b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tvar b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tvar b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tapplyToBufferAttribute: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function applyToBufferAttribute( attribute ) {\n\n\t\t\tfor ( var i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\t\tv1.x = attribute.getX( i );\n\t\t\t\tv1.y = attribute.getY( i );\n\t\t\t\tv1.z = attribute.getZ( i );\n\n\t\t\t\tv1.applyMatrix4( this );\n\n\t\t\t\tattribute.setXYZ( i, v1.x, v1.y, v1.z );\n\n\t\t\t}\n\n\t\t\treturn attribute;\n\n\t\t};\n\n\t}(),\n\n\tdeterminant: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tvar n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tvar n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tvar n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t},\n\n\ttranspose: function () {\n\n\t\tvar te = this.elements;\n\t\tvar tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tsetPosition: function ( x, y, z ) {\n\n\t\tvar te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetInverse: function ( m, throwOnDegenerate ) {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tvar te = this.elements,\n\t\t\tme = m.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ],\n\t\t\tn12 = me[ 4 ], n22 = me[ 5 ], n32 = me[ 6 ], n42 = me[ 7 ],\n\t\t\tn13 = me[ 8 ], n23 = me[ 9 ], n33 = me[ 10 ], n43 = me[ 11 ],\n\t\t\tn14 = me[ 12 ], n24 = me[ 13 ], n34 = me[ 14 ], n44 = me[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tvar det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) {\n\n\t\t\tvar msg = \"THREE.Matrix4: .getInverse() can't invert matrix, determinant is 0\";\n\n\t\t\tif ( throwOnDegenerate === true ) {\n\n\t\t\t\tthrow new Error( msg );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( msg );\n\n\t\t\t}\n\n\t\t\treturn this.identity();\n\n\t\t}\n\n\t\tvar detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( v ) {\n\n\t\tvar te = this.elements;\n\t\tvar x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxScaleOnAxis: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tvar scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tvar scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t},\n\n\tmakeTranslation: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, x,\n\t\t\t0, 1, 0, y,\n\t\t\t0, 0, 1, z,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationX: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationY: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationZ: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationAxis: function ( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tvar c = Math.cos( angle );\n\t\tvar s = Math.sin( angle );\n\t\tvar t = 1 - c;\n\t\tvar x = axis.x, y = axis.y, z = axis.z;\n\t\tvar tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\t return this;\n\n\t},\n\n\tmakeScale: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeShear: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, y, z, 0,\n\t\t\tx, 1, z, 0,\n\t\t\tx, y, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tcompose: function ( position, quaternion, scale ) {\n\n\t\tvar te = this.elements;\n\n\t\tvar x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tvar x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tvar xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tvar yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tvar wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tvar sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tdecompose: function () {\n\n\t\tvar vector = new Vector3();\n\t\tvar matrix = new Matrix4();\n\n\t\treturn function decompose( position, quaternion, scale ) {\n\n\t\t\tvar te = this.elements;\n\n\t\t\tvar sx = vector.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\t\tvar sy = vector.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\t\tvar sz = vector.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t\t// if determine is negative, we need to invert one scale\n\t\t\tvar det = this.determinant();\n\t\t\tif ( det < 0 ) sx = - sx;\n\n\t\t\tposition.x = te[ 12 ];\n\t\t\tposition.y = te[ 13 ];\n\t\t\tposition.z = te[ 14 ];\n\n\t\t\t// scale the rotation part\n\t\t\tmatrix.copy( this );\n\n\t\t\tvar invSX = 1 / sx;\n\t\t\tvar invSY = 1 / sy;\n\t\t\tvar invSZ = 1 / sz;\n\n\t\t\tmatrix.elements[ 0 ] *= invSX;\n\t\t\tmatrix.elements[ 1 ] *= invSX;\n\t\t\tmatrix.elements[ 2 ] *= invSX;\n\n\t\t\tmatrix.elements[ 4 ] *= invSY;\n\t\t\tmatrix.elements[ 5 ] *= invSY;\n\t\t\tmatrix.elements[ 6 ] *= invSY;\n\n\t\t\tmatrix.elements[ 8 ] *= invSZ;\n\t\t\tmatrix.elements[ 9 ] *= invSZ;\n\t\t\tmatrix.elements[ 10 ] *= invSZ;\n\n\t\t\tquaternion.setFromRotationMatrix( matrix );\n\n\t\t\tscale.x = sx;\n\t\t\tscale.y = sy;\n\t\t\tscale.z = sz;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tmakePerspective: function ( left, right, top, bottom, near, far ) {\n\n\t\tif ( far === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' );\n\n\t\t}\n\n\t\tvar te = this.elements;\n\t\tvar x = 2 * near / ( right - left );\n\t\tvar y = 2 * near / ( top - bottom );\n\n\t\tvar a = ( right + left ) / ( right - left );\n\t\tvar b = ( top + bottom ) / ( top - bottom );\n\t\tvar c = - ( far + near ) / ( far - near );\n\t\tvar d = - 2 * far * near / ( far - near );\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t},\n\n\tmakeOrthographic: function ( left, right, top, bottom, near, far ) {\n\n\t\tvar te = this.elements;\n\t\tvar w = 1.0 / ( right - left );\n\t\tvar h = 1.0 / ( top - bottom );\n\t\tvar p = 1.0 / ( far - near );\n\n\t\tvar x = ( right + left ) * w;\n\t\tvar y = ( top + bottom ) * h;\n\t\tvar z = ( far + near ) * p;\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = matrix.elements;\n\n\t\tfor ( var i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor ( var i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tvar te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nvar _matrix, _quaternion;\n\nfunction Euler( x, y, z, order ) {\n\n\tthis._x = x || 0;\n\tthis._y = y || 0;\n\tthis._z = z || 0;\n\tthis._order = order || Euler.DefaultOrder;\n\n}\n\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nEuler.DefaultOrder = 'XYZ';\n\nObject.defineProperties( Euler.prototype, {\n\n\tx: {\n\n\t\tget: function () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\ty: {\n\n\t\tget: function () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tz: {\n\n\t\tget: function () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t},\n\n\torder: {\n\n\t\tget: function () {\n\n\t\t\treturn this._order;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._order = value;\n\t\t\tthis._onChangeCallback();\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Euler.prototype, {\n\n\tisEuler: true,\n\n\tset: function ( x, y, z, order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order || this._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t},\n\n\tcopy: function ( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m, order, update ) {\n\n\t\tvar clamp = _Math.clamp;\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar te = m.elements;\n\t\tvar m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tvar m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tvar m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\torder = order || this._order;\n\n\t\tif ( order === 'XYZ' ) {\n\n\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m13 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\tthis._z = 0;\n\n\t\t\t}\n\n\t\t} else if ( order === 'YXZ' ) {\n\n\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m23 ) < 0.99999 ) {\n\n\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\tthis._z = 0;\n\n\t\t\t}\n\n\t\t} else if ( order === 'ZXY' ) {\n\n\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m32 ) < 0.99999 ) {\n\n\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._y = 0;\n\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t}\n\n\t\t} else if ( order === 'ZYX' ) {\n\n\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m31 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t}\n\n\t\t} else if ( order === 'YZX' ) {\n\n\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m21 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t}\n\n\t\t} else if ( order === 'XZY' ) {\n\n\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m12 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\tthis._y = 0;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() given unsupported order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromQuaternion: function ( q, order, update ) {\n\n\t\tif ( _matrix === undefined ) _matrix = new Matrix4();\n\n\t\t_matrix.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix, order, update );\n\n\t},\n\n\tsetFromVector3: function ( v, order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order || this._order );\n\n\t},\n\n\treorder: function ( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\tif ( _quaternion === undefined ) _quaternion = new Quaternion();\n\n\t\t_quaternion.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion, newOrder );\n\n\t},\n\n\tequals: function ( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t},\n\n\tfromArray: function ( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t},\n\n\ttoVector3: function ( optionalResult ) {\n\n\t\tif ( optionalResult ) {\n\n\t\t\treturn optionalResult.set( this._x, this._y, this._z );\n\n\t\t} else {\n\n\t\t\treturn new Vector3( this._x, this._y, this._z );\n\n\t\t}\n\n\t},\n\n\t_onChange: function ( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\t_onChangeCallback: function () {}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Layers() {\n\n\tthis.mask = 1 | 0;\n\n}\n\nObject.assign( Layers.prototype, {\n\n\tset: function ( channel ) {\n\n\t\tthis.mask = 1 << channel | 0;\n\n\t},\n\n\tenable: function ( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t},\n\n\ttoggle: function ( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t},\n\n\tdisable: function ( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t},\n\n\ttest: function ( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author elephantatwork / www.elephantatwork.ch\n */\n\nvar object3DId = 0;\n\nfunction Object3D() {\n\n\tObject.defineProperty( this, 'id', { value: object3DId ++ } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Object3D';\n\n\tthis.parent = null;\n\tthis.children = [];\n\n\tthis.up = Object3D.DefaultUp.clone();\n\n\tvar position = new Vector3();\n\tvar rotation = new Euler();\n\tvar quaternion = new Quaternion();\n\tvar scale = new Vector3( 1, 1, 1 );\n\n\tfunction onRotationChange() {\n\n\t\tquaternion.setFromEuler( rotation, false );\n\n\t}\n\n\tfunction onQuaternionChange() {\n\n\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t}\n\n\trotation._onChange( onRotationChange );\n\tquaternion._onChange( onQuaternionChange );\n\n\tObject.defineProperties( this, {\n\t\tposition: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: position\n\t\t},\n\t\trotation: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: rotation\n\t\t},\n\t\tquaternion: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: quaternion\n\t\t},\n\t\tscale: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: scale\n\t\t},\n\t\tmodelViewMatrix: {\n\t\t\tvalue: new Matrix4()\n\t\t},\n\t\tnormalMatrix: {\n\t\t\tvalue: new Matrix3()\n\t\t}\n\t} );\n\n\tthis.matrix = new Matrix4();\n\tthis.matrixWorld = new Matrix4();\n\n\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\tthis.matrixWorldNeedsUpdate = false;\n\n\tthis.layers = new Layers();\n\tthis.visible = true;\n\n\tthis.castShadow = false;\n\tthis.receiveShadow = false;\n\n\tthis.frustumCulled = true;\n\tthis.renderOrder = 0;\n\n\tthis.userData = {};\n\n}\n\nObject3D.DefaultUp = new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\n\nObject3D.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Object3D,\n\n\tisObject3D: true,\n\n\tonBeforeRender: function () {},\n\tonAfterRender: function () {},\n\n\tapplyMatrix: function ( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t},\n\n\tsetRotationFromAxisAngle: function ( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t},\n\n\tsetRotationFromEuler: function ( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t},\n\n\tsetRotationFromMatrix: function ( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t},\n\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t},\n\n\trotateOnAxis: function () {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\tvar q1 = new Quaternion();\n\n\t\treturn function rotateOnAxis( axis, angle ) {\n\n\t\t\tq1.setFromAxisAngle( axis, angle );\n\n\t\t\tthis.quaternion.multiply( q1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateOnWorldAxis: function () {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\tvar q1 = new Quaternion();\n\n\t\treturn function rotateOnWorldAxis( axis, angle ) {\n\n\t\t\tq1.setFromAxisAngle( axis, angle );\n\n\t\t\tthis.quaternion.premultiply( q1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateX: function () {\n\n\t\tvar v1 = new Vector3( 1, 0, 0 );\n\n\t\treturn function rotateX( angle ) {\n\n\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t};\n\n\t}(),\n\n\trotateY: function () {\n\n\t\tvar v1 = new Vector3( 0, 1, 0 );\n\n\t\treturn function rotateY( angle ) {\n\n\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t};\n\n\t}(),\n\n\trotateZ: function () {\n\n\t\tvar v1 = new Vector3( 0, 0, 1 );\n\n\t\treturn function rotateZ( angle ) {\n\n\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t};\n\n\t}(),\n\n\ttranslateOnAxis: function () {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function translateOnAxis( axis, distance ) {\n\n\t\t\tv1.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\t\tthis.position.add( v1.multiplyScalar( distance ) );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslateX: function () {\n\n\t\tvar v1 = new Vector3( 1, 0, 0 );\n\n\t\treturn function translateX( distance ) {\n\n\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t};\n\n\t}(),\n\n\ttranslateY: function () {\n\n\t\tvar v1 = new Vector3( 0, 1, 0 );\n\n\t\treturn function translateY( distance ) {\n\n\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t};\n\n\t}(),\n\n\ttranslateZ: function () {\n\n\t\tvar v1 = new Vector3( 0, 0, 1 );\n\n\t\treturn function translateZ( distance ) {\n\n\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t};\n\n\t}(),\n\n\tlocalToWorld: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t},\n\n\tworldToLocal: function () {\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function worldToLocal( vector ) {\n\n\t\t\treturn vector.applyMatrix4( m1.getInverse( this.matrixWorld ) );\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tvar q1 = new Quaternion();\n\t\tvar m1 = new Matrix4();\n\t\tvar target = new Vector3();\n\t\tvar position = new Vector3();\n\n\t\treturn function lookAt( x, y, z ) {\n\n\t\t\tif ( x.isVector3 ) {\n\n\t\t\t\ttarget.copy( x );\n\n\t\t\t} else {\n\n\t\t\t\ttarget.set( x, y, z );\n\n\t\t\t}\n\n\t\t\tvar parent = this.parent;\n\n\t\t\tthis.updateWorldMatrix( true, false );\n\n\t\t\tposition.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t\tm1.lookAt( position, target, this.up );\n\n\t\t\t} else {\n\n\t\t\t\tm1.lookAt( target, position, this.up );\n\n\t\t\t}\n\n\t\t\tthis.quaternion.setFromRotationMatrix( m1 );\n\n\t\t\tif ( parent ) {\n\n\t\t\t\tm1.extractRotation( parent.matrixWorld );\n\t\t\t\tq1.setFromRotationMatrix( m1 );\n\t\t\t\tthis.quaternion.premultiply( q1.inverse() );\n\n\t\t\t}\n\n\t\t};\n\n\t}(),\n\n\tadd: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( var i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object can't be added as a child of itself.\", object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( ( object && object.isObject3D ) ) {\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( { type: 'added' } );\n\n\t\t} else {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object not an instance of THREE.Object3D.\", object );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tremove: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( var i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( { type: 'removed' } );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tattach: function () {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\tvar m = new Matrix4();\n\n\t\treturn function attach( object ) {\n\n\t\t\tthis.updateWorldMatrix( true, false );\n\n\t\t\tm.getInverse( this.matrixWorld );\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t\tm.multiply( object.parent.matrixWorld );\n\n\t\t\t}\n\n\t\t\tobject.applyMatrix( m );\n\n\t\t\tobject.updateWorldMatrix( false, false );\n\n\t\t\tthis.add( object );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tgetObjectById: function ( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t},\n\n\tgetObjectByName: function ( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t},\n\n\tgetObjectByProperty: function ( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( var i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tvar child = this.children[ i ];\n\t\t\tvar object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t},\n\n\tgetWorldPosition: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldPosition() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t},\n\n\tgetWorldQuaternion: function () {\n\n\t\tvar position = new Vector3();\n\t\tvar scale = new Vector3();\n\n\t\treturn function getWorldQuaternion( target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Object3D: .getWorldQuaternion() target is now required' );\n\t\t\t\ttarget = new Quaternion();\n\n\t\t\t}\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.matrixWorld.decompose( position, target, scale );\n\n\t\t\treturn target;\n\n\t\t};\n\n\t}(),\n\n\tgetWorldScale: function () {\n\n\t\tvar position = new Vector3();\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function getWorldScale( target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Object3D: .getWorldScale() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.matrixWorld.decompose( position, quaternion, target );\n\n\t\t\treturn target;\n\n\t\t};\n\n\t}(),\n\n\tgetWorldDirection: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldDirection() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tvar e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t},\n\n\traycast: function () {},\n\n\ttraverse: function ( callback ) {\n\n\t\tcallback( this );\n\n\t\tvar children = this.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseVisible: function ( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tvar children = this.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseAncestors: function ( callback ) {\n\n\t\tvar parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t},\n\n\tupdateMatrix: function () {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tvar children = this.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( force );\n\n\t\t}\n\n\t},\n\n\tupdateWorldMatrix: function ( updateParents, updateChildren ) {\n\n\t\tvar parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.parent === null ) {\n\n\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t} else {\n\n\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t}\n\n\t\t// update children\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\tvar children = this.children;\n\n\t\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateWorldMatrix( false, true );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tvar isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tvar output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tvar object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isMesh && this.drawMode !== TrianglesDrawMode ) object.drawMode = this.drawMode;\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tvar parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tvar shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( var i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tvar shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tvar uuids = [];\n\n\t\t\t\tfor ( var i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( var i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tvar geometries = extractFromCache( meta.geometries );\n\t\t\tvar materials = extractFromCache( meta.materials );\n\t\t\tvar textures = extractFromCache( meta.textures );\n\t\t\tvar images = extractFromCache( meta.images );\n\t\t\tvar shapes = extractFromCache( meta.shapes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tvar values = [];\n\t\t\tfor ( var key in cache ) {\n\n\t\t\t\tvar data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\t\t\treturn values;\n\n\t\t}\n\n\t},\n\n\tclone: function ( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t},\n\n\tcopy: function ( source, recursive ) {\n\n\t\tif ( recursive === undefined ) recursive = true;\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( var i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tvar child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Scene() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Scene';\n\n\tthis.background = null;\n\tthis.fog = null;\n\tthis.overrideMaterial = null;\n\n\tthis.autoUpdate = true; // checked by the renderer\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t}\n\n}\n\nScene.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Scene,\n\n\tisScene: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tif ( this.background !== null ) data.object.background = this.background.toJSON( meta );\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\treturn data;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Box3( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity );\n\n}\n\nObject.assign( Box3.prototype, {\n\n\tisBox3: true,\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromArray: function ( array ) {\n\n\t\tvar minX = + Infinity;\n\t\tvar minY = + Infinity;\n\t\tvar minZ = + Infinity;\n\n\t\tvar maxX = - Infinity;\n\t\tvar maxY = - Infinity;\n\t\tvar maxZ = - Infinity;\n\n\t\tfor ( var i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\tvar x = array[ i ];\n\t\t\tvar y = array[ i + 1 ];\n\t\t\tvar z = array[ i + 2 ];\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromBufferAttribute: function ( attribute ) {\n\n\t\tvar minX = + Infinity;\n\t\tvar minY = + Infinity;\n\t\tvar minZ = + Infinity;\n\n\t\tvar maxX = - Infinity;\n\t\tvar maxY = - Infinity;\n\t\tvar maxZ = - Infinity;\n\n\t\tfor ( var i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\tvar x = attribute.getX( i );\n\t\t\tvar y = attribute.getY( i );\n\t\t\tvar z = attribute.getZ( i );\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function setFromCenterAndSize( center, size ) {\n\n\t\t\tvar halfSize = v1.copy( size ).multiplyScalar( 0.5 );\n\n\t\t\tthis.min.copy( center ).sub( halfSize );\n\t\t\tthis.max.copy( center ).add( halfSize );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tsetFromObject: function ( object ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getSize() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\texpandByObject: function () {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tvar scope, i, l;\n\n\t\tvar v1 = new Vector3();\n\n\t\tfunction traverse( node ) {\n\n\t\t\tvar geometry = node.geometry;\n\n\t\t\tif ( geometry !== undefined ) {\n\n\t\t\t\tif ( geometry.isGeometry ) {\n\n\t\t\t\t\tvar vertices = geometry.vertices;\n\n\t\t\t\t\tfor ( i = 0, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tv1.copy( vertices[ i ] );\n\t\t\t\t\t\tv1.applyMatrix4( node.matrixWorld );\n\n\t\t\t\t\t\tscope.expandByPoint( v1 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( geometry.isBufferGeometry ) {\n\n\t\t\t\t\tvar attribute = geometry.attributes.position;\n\n\t\t\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\t\t\tfor ( i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tv1.fromBufferAttribute( attribute, i ).applyMatrix4( node.matrixWorld );\n\n\t\t\t\t\t\t\tscope.expandByPoint( v1 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn function expandByObject( object ) {\n\n\t\t\tscope = this;\n\n\t\t\tobject.updateMatrixWorld( true );\n\n\t\t\tobject.traverse( traverse );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t},\n\n\tgetParameter: function ( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getParameter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t},\n\n\tintersectsSphere: ( function () {\n\n\t\tvar closestPoint = new Vector3();\n\n\t\treturn function intersectsSphere( sphere ) {\n\n\t\t\t// Find the point on the AABB closest to the sphere center.\n\t\t\tthis.clampPoint( sphere.center, closestPoint );\n\n\t\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\t\treturn closestPoint.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t\t};\n\n\t} )(),\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tvar min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t},\n\n\tintersectsTriangle: ( function () {\n\n\t\t// triangle centered vertices\n\t\tvar v0 = new Vector3();\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\n\t\t// triangle edge vectors\n\t\tvar f0 = new Vector3();\n\t\tvar f1 = new Vector3();\n\t\tvar f2 = new Vector3();\n\n\t\tvar testAxis = new Vector3();\n\n\t\tvar center = new Vector3();\n\t\tvar extents = new Vector3();\n\n\t\tvar triangleNormal = new Vector3();\n\n\t\tfunction satForAxes( axes ) {\n\n\t\t\tvar i, j;\n\n\t\t\tfor ( i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t\t\ttestAxis.fromArray( axes, i );\n\t\t\t\t// project the aabb onto the seperating axis\n\t\t\t\tvar r = extents.x * Math.abs( testAxis.x ) + extents.y * Math.abs( testAxis.y ) + extents.z * Math.abs( testAxis.z );\n\t\t\t\t// project all 3 vertices of the triangle onto the seperating axis\n\t\t\t\tvar p0 = v0.dot( testAxis );\n\t\t\t\tvar p1 = v1.dot( testAxis );\n\t\t\t\tvar p2 = v2.dot( testAxis );\n\t\t\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\t\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t\t\t// the axis is seperating and we can exit\n\t\t\t\t\treturn false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn function intersectsTriangle( triangle ) {\n\n\t\t\tif ( this.isEmpty() ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t\t// compute box center and extents\n\t\t\tthis.getCenter( center );\n\t\t\textents.subVectors( this.max, center );\n\n\t\t\t// translate triangle to aabb origin\n\t\t\tv0.subVectors( triangle.a, center );\n\t\t\tv1.subVectors( triangle.b, center );\n\t\t\tv2.subVectors( triangle.c, center );\n\n\t\t\t// compute edge vectors for triangle\n\t\t\tf0.subVectors( v1, v0 );\n\t\t\tf1.subVectors( v2, v1 );\n\t\t\tf2.subVectors( v0, v2 );\n\n\t\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\t\tvar axes = [\n\t\t\t\t0, - f0.z, f0.y, 0, - f1.z, f1.y, 0, - f2.z, f2.y,\n\t\t\t\tf0.z, 0, - f0.x, f1.z, 0, - f1.x, f2.z, 0, - f2.x,\n\t\t\t\t- f0.y, f0.x, 0, - f1.y, f1.x, 0, - f2.y, f2.x, 0\n\t\t\t];\n\t\t\tif ( ! satForAxes( axes ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t\t// test 3 face normals from the aabb\n\t\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\t\tif ( ! satForAxes( axes ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t\t// finally testing the face normal of the triangle\n\t\t\t// use already existing triangle edge vectors here\n\t\t\ttriangleNormal.crossVectors( f0, f1 );\n\t\t\taxes = [ triangleNormal.x, triangleNormal.y, triangleNormal.z ];\n\t\t\treturn satForAxes( axes );\n\n\t\t};\n\n\t} )(),\n\n\tclampPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function distanceToPoint( point ) {\n\n\t\t\tvar clampedPoint = v1.copy( point ).clamp( this.min, this.max );\n\t\t\treturn clampedPoint.sub( point ).length();\n\n\t\t};\n\n\t}(),\n\n\tgetBoundingSphere: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function getBoundingSphere( target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.error( 'THREE.Box3: .getBoundingSphere() target is now required' );\n\t\t\t\t//target = new Sphere(); // removed to avoid cyclic dependency\n\n\t\t\t}\n\n\t\t\tthis.getCenter( target.center );\n\n\t\t\ttarget.radius = this.getSize( v1 ).length() * 0.5;\n\n\t\t\treturn target;\n\n\t\t};\n\n\t}(),\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function () {\n\n\t\tvar points = [\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3()\n\t\t];\n\n\t\treturn function applyMatrix4( matrix ) {\n\n\t\t\t// transform of empty box is an empty box.\n\t\t\tif ( this.isEmpty() ) return this;\n\n\t\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t\tpoints[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t\tpoints[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t\tpoints[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t\tpoints[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t\tpoints[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t\tpoints[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t\tpoints[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t\tpoints[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\t\tthis.setFromPoints( points );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _box;\n\nfunction Sphere( center, radius ) {\n\n\tthis.center = ( center !== undefined ) ? center : new Vector3();\n\tthis.radius = ( radius !== undefined ) ? radius : 0;\n\n}\n\nObject.assign( Sphere.prototype, {\n\n\tset: function ( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points, optionalCenter ) {\n\n\t\tif ( _box === undefined ) _box = new Box3();\n\n\t\tvar center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box.setFromPoints( points ).getCenter( center );\n\n\t\t}\n\n\t\tvar maxRadiusSq = 0;\n\n\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t},\n\n\tempty: function () {\n\n\t\treturn ( this.radius <= 0 );\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tvar radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tvar deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t},\n\n\tgetBoundingBox: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .getBoundingBox() target is now required' );\n\t\t\ttarget = new Box3();\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Ray( origin, direction ) {\n\n\tthis.origin = ( origin !== undefined ) ? origin : new Vector3();\n\tthis.direction = ( direction !== undefined ) ? direction : new Vector3();\n\n}\n\nObject.assign( Ray.prototype, {\n\n\tset: function ( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t},\n\n\tat: function ( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t},\n\n\tlookAt: function ( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\trecast: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function recast( t ) {\n\n\t\t\tthis.origin.copy( this.at( t, v1 ) );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclosestPointToPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tvar directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t},\n\n\tdistanceSqToPoint: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function distanceSqToPoint( point ) {\n\n\t\t\tvar directionDistance = v1.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t\t// point behind the ray\n\n\t\t\tif ( directionDistance < 0 ) {\n\n\t\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t\t}\n\n\t\t\tv1.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\t\treturn v1.distanceToSquared( point );\n\n\t\t};\n\n\t}(),\n\n\tdistanceSqToSegment: function () {\n\n\t\tvar segCenter = new Vector3();\n\t\tvar segDir = new Vector3();\n\t\tvar diff = new Vector3();\n\n\t\treturn function distanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t\t// It returns the min distance between the ray and the segment\n\t\t\t// defined by v0 and v1\n\t\t\t// It can also set two optional targets :\n\t\t\t// - The closest point on the ray\n\t\t\t// - The closest point on the segment\n\n\t\t\tsegCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t\tsegDir.copy( v1 ).sub( v0 ).normalize();\n\t\t\tdiff.copy( this.origin ).sub( segCenter );\n\n\t\t\tvar segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\t\tvar a01 = - this.direction.dot( segDir );\n\t\t\tvar b0 = diff.dot( this.direction );\n\t\t\tvar b1 = - diff.dot( segDir );\n\t\t\tvar c = diff.lengthSq();\n\t\t\tvar det = Math.abs( 1 - a01 * a01 );\n\t\t\tvar s0, s1, sqrDist, extDet;\n\n\t\t\tif ( det > 0 ) {\n\n\t\t\t\t// The ray and segment are not parallel.\n\n\t\t\t\ts0 = a01 * b1 - b0;\n\t\t\t\ts1 = a01 * b0 - b1;\n\t\t\t\textDet = segExtent * det;\n\n\t\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\t\tvar invDet = 1 / det;\n\t\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 5\n\n\t\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t\t// region 4\n\n\t\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 3\n\n\t\t\t\t\t\ts0 = 0;\n\t\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 2\n\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Ray and segment are parallel.\n\n\t\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t}\n\n\t\t\tif ( optionalPointOnRay ) {\n\n\t\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t\t}\n\n\t\t\tif ( optionalPointOnSegment ) {\n\n\t\t\t\toptionalPointOnSegment.copy( segDir ).multiplyScalar( s1 ).add( segCenter );\n\n\t\t\t}\n\n\t\t\treturn sqrDist;\n\n\t\t};\n\n\t}(),\n\n\tintersectSphere: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function intersectSphere( sphere, target ) {\n\n\t\t\tv1.subVectors( sphere.center, this.origin );\n\t\t\tvar tca = v1.dot( this.direction );\n\t\t\tvar d2 = v1.dot( v1 ) - tca * tca;\n\t\t\tvar radius2 = sphere.radius * sphere.radius;\n\n\t\t\tif ( d2 > radius2 ) return null;\n\n\t\t\tvar thc = Math.sqrt( radius2 - d2 );\n\n\t\t\t// t0 = first intersect point - entrance on front of sphere\n\t\t\tvar t0 = tca - thc;\n\n\t\t\t// t1 = second intersect point - exit point on back of sphere\n\t\t\tvar t1 = tca + thc;\n\n\t\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\n\t\t\tif ( t0 < 0 && t1 < 0 ) return null;\n\n\t\t\t// test to see if t0 is behind the ray:\n\t\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t\t// in order to always return an intersect point that is in front of the ray.\n\t\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\t\treturn this.at( t0, target );\n\n\t\t};\n\n\t}(),\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t},\n\n\tdistanceToPlane: function ( plane ) {\n\n\t\tvar denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t},\n\n\tintersectPlane: function ( plane, target ) {\n\n\t\tvar t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tvar distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tvar denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t},\n\n\tintersectBox: function ( box, target ) {\n\n\t\tvar tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tvar invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tvar origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t},\n\n\tintersectsBox: ( function () {\n\n\t\tvar v = new Vector3();\n\n\t\treturn function intersectsBox( box ) {\n\n\t\t\treturn this.intersectBox( box, v ) !== null;\n\n\t\t};\n\n\t} )(),\n\n\tintersectTriangle: function () {\n\n\t\t// Compute the offset origin, edges, and normal.\n\t\tvar diff = new Vector3();\n\t\tvar edge1 = new Vector3();\n\t\tvar edge2 = new Vector3();\n\t\tvar normal = new Vector3();\n\n\t\treturn function intersectTriangle( a, b, c, backfaceCulling, target ) {\n\n\t\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t\tedge1.subVectors( b, a );\n\t\t\tedge2.subVectors( c, a );\n\t\t\tnormal.crossVectors( edge1, edge2 );\n\n\t\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\t\tvar DdN = this.direction.dot( normal );\n\t\t\tvar sign;\n\n\t\t\tif ( DdN > 0 ) {\n\n\t\t\t\tif ( backfaceCulling ) return null;\n\t\t\t\tsign = 1;\n\n\t\t\t} else if ( DdN < 0 ) {\n\n\t\t\t\tsign = - 1;\n\t\t\t\tDdN = - DdN;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tdiff.subVectors( this.origin, a );\n\t\t\tvar DdQxE2 = sign * this.direction.dot( edge2.crossVectors( diff, edge2 ) );\n\n\t\t\t// b1 < 0, no intersection\n\t\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tvar DdE1xQ = sign * this.direction.dot( edge1.cross( diff ) );\n\n\t\t\t// b2 < 0, no intersection\n\t\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\t// b1+b2 > 1, no intersection\n\t\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\t// Line intersects triangle, check if ray does.\n\t\t\tvar QdN = - sign * diff.dot( normal );\n\n\t\t\t// t < 0, no intersection\n\t\t\tif ( QdN < 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\t// Ray intersects triangle.\n\t\t\treturn this.at( QdN / DdN, target );\n\n\t\t};\n\n\t}(),\n\n\tapplyMatrix4: function ( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Triangle( a, b, c ) {\n\n\tthis.a = ( a !== undefined ) ? a : new Vector3();\n\tthis.b = ( b !== undefined ) ? b : new Vector3();\n\tthis.c = ( c !== undefined ) ? c : new Vector3();\n\n}\n\nObject.assign( Triangle, {\n\n\tgetNormal: function () {\n\n\t\tvar v0 = new Vector3();\n\n\t\treturn function getNormal( a, b, c, target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Triangle: .getNormal() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\n\n\t\t\ttarget.subVectors( c, b );\n\t\t\tv0.subVectors( a, b );\n\t\t\ttarget.cross( v0 );\n\n\t\t\tvar targetLengthSq = target.lengthSq();\n\t\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t\t}\n\n\t\t\treturn target.set( 0, 0, 0 );\n\n\t\t};\n\n\t}(),\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tgetBarycoord: function () {\n\n\t\tvar v0 = new Vector3();\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\n\t\treturn function getBarycoord( point, a, b, c, target ) {\n\n\t\t\tv0.subVectors( c, a );\n\t\t\tv1.subVectors( b, a );\n\t\t\tv2.subVectors( point, a );\n\n\t\t\tvar dot00 = v0.dot( v0 );\n\t\t\tvar dot01 = v0.dot( v1 );\n\t\t\tvar dot02 = v0.dot( v2 );\n\t\t\tvar dot11 = v1.dot( v1 );\n\t\t\tvar dot12 = v1.dot( v2 );\n\n\t\t\tvar denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Triangle: .getBarycoord() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\n\n\t\t\t// collinear or singular triangle\n\t\t\tif ( denom === 0 ) {\n\n\t\t\t\t// arbitrary location outside of triangle?\n\t\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\t\treturn target.set( - 2, - 1, - 1 );\n\n\t\t\t}\n\n\t\t\tvar invDenom = 1 / denom;\n\t\t\tvar u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\t\tvar v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t\t// barycentric coordinates must always sum to 1\n\t\t\treturn target.set( 1 - u - v, v, u );\n\n\t\t};\n\n\t}(),\n\n\tcontainsPoint: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function containsPoint( point, a, b, c ) {\n\n\t\t\tTriangle.getBarycoord( point, a, b, c, v1 );\n\n\t\t\treturn ( v1.x >= 0 ) && ( v1.y >= 0 ) && ( ( v1.x + v1.y ) <= 1 );\n\n\t\t};\n\n\t}(),\n\n\tgetUV: function () {\n\n\t\tvar barycoord = new Vector3();\n\n\t\treturn function getUV( point, p1, p2, p3, uv1, uv2, uv3, target ) {\n\n\t\t\tthis.getBarycoord( point, p1, p2, p3, barycoord );\n\n\t\t\ttarget.set( 0, 0 );\n\t\t\ttarget.addScaledVector( uv1, barycoord.x );\n\t\t\ttarget.addScaledVector( uv2, barycoord.y );\n\t\t\ttarget.addScaledVector( uv3, barycoord.z );\n\n\t\t\treturn target;\n\n\t\t};\n\n\t}(),\n\n\tisFrontFacing: function () {\n\n\t\tvar v0 = new Vector3();\n\t\tvar v1 = new Vector3();\n\n\t\treturn function isFrontFacing( a, b, c, direction ) {\n\n\t\t\tv0.subVectors( c, b );\n\t\t\tv1.subVectors( a, b );\n\n\t\t\t// strictly front facing\n\t\t\treturn ( v0.cross( v1 ).dot( direction ) < 0 ) ? true : false;\n\n\t\t};\n\n\t}()\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tset: function ( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPointsAndIndices: function ( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t},\n\n\tgetArea: function () {\n\n\t\tvar v0 = new Vector3();\n\t\tvar v1 = new Vector3();\n\n\t\treturn function getArea() {\n\n\t\t\tv0.subVectors( this.c, this.b );\n\t\t\tv1.subVectors( this.a, this.b );\n\n\t\t\treturn v0.cross( v1 ).length() * 0.5;\n\n\t\t};\n\n\t}(),\n\n\tgetMidpoint: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getMidpoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t},\n\n\tgetNormal: function ( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t},\n\n\tgetPlane: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getPlane() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t},\n\n\tgetBarycoord: function ( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t},\n\n\tgetUV: function ( point, uv1, uv2, uv3, target ) {\n\n\t\treturn Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, target );\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t},\n\n\tisFrontFacing: function ( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t},\n\n\tclosestPointToPoint: function () {\n\n\t\tvar vab = new Vector3();\n\t\tvar vac = new Vector3();\n\t\tvar vbc = new Vector3();\n\t\tvar vap = new Vector3();\n\t\tvar vbp = new Vector3();\n\t\tvar vcp = new Vector3();\n\n\t\treturn function closestPointToPoint( p, target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Triangle: .closestPointToPoint() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\n\n\t\t\tvar a = this.a, b = this.b, c = this.c;\n\t\t\tvar v, w;\n\n\t\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t\tvab.subVectors( b, a );\n\t\t\tvac.subVectors( c, a );\n\t\t\tvap.subVectors( p, a );\n\t\t\tvar d1 = vab.dot( vap );\n\t\t\tvar d2 = vac.dot( vap );\n\t\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\t\treturn target.copy( a );\n\n\t\t\t}\n\n\t\t\tvbp.subVectors( p, b );\n\t\t\tvar d3 = vab.dot( vbp );\n\t\t\tvar d4 = vac.dot( vbp );\n\t\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\t\treturn target.copy( b );\n\n\t\t\t}\n\n\t\t\tvar vc = d1 * d4 - d3 * d2;\n\t\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\t\treturn target.copy( a ).addScaledVector( vab, v );\n\n\t\t\t}\n\n\t\t\tvcp.subVectors( p, c );\n\t\t\tvar d5 = vab.dot( vcp );\n\t\t\tvar d6 = vac.dot( vcp );\n\t\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\t\treturn target.copy( c );\n\n\t\t\t}\n\n\t\t\tvar vb = d5 * d2 - d1 * d6;\n\t\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\t\treturn target.copy( a ).addScaledVector( vac, w );\n\n\t\t\t}\n\n\t\t\tvar va = d3 * d6 - d5 * d4;\n\t\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t\tvbc.subVectors( c, b );\n\t\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\t\treturn target.copy( b ).addScaledVector( vbc, w ); // edge region of BC\n\n\t\t\t}\n\n\t\t\t// face region\n\t\t\tvar denom = 1 / ( va + vb + vc );\n\t\t\t// u = va * denom\n\t\t\tv = vb * denom;\n\t\t\tw = vc * denom;\n\t\t\treturn target.copy( a ).addScaledVector( vab, v ).addScaledVector( vac, w );\n\n\t\t};\n\n\t}(),\n\n\tequals: function ( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar ColorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nfunction Color( r, g, b ) {\n\n\tif ( g === undefined && b === undefined ) {\n\n\t\t// r is THREE.Color, hex or string\n\t\treturn this.set( r );\n\n\t}\n\n\treturn this.setRGB( r, g, b );\n\n}\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\nfunction SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nfunction LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n\nObject.assign( Color.prototype, {\n\n\tisColor: true,\n\n\tr: 1, g: 1, b: 1,\n\n\tset: function ( value ) {\n\n\t\tif ( value && value.isColor ) {\n\n\t\t\tthis.copy( value );\n\n\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\tthis.setHex( value );\n\n\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\tthis.setStyle( value );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetHex: function ( hex ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\treturn this;\n\n\t},\n\n\tsetRGB: function ( r, g, b ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\treturn this;\n\n\t},\n\n\tsetHSL: function ( h, s, l ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = _Math.euclideanModulo( h, 1 );\n\t\ts = _Math.clamp( s, 0, 1 );\n\t\tl = _Math.clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tvar p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tvar q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetStyle: function ( style ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tvar m;\n\n\t\tif ( m = /^((?:rgb|hsl)a?)\\(\\s*([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tvar color;\n\t\t\tvar name = m[ 1 ];\n\t\t\tvar components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^([0-9]*\\.?[0-9]+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\tvar h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\tvar s = parseInt( color[ 2 ], 10 ) / 100;\n\t\t\t\t\t\tvar l = parseInt( color[ 3 ], 10 ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this.setHSL( h, s, l );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f0-9]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tvar hex = m[ 1 ];\n\t\t\tvar size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( style && style.length > 0 ) {\n\n\t\t\t// color keywords\n\t\t\tvar hex = ColorKeywords[ style ];\n\n\t\t\tif ( hex !== undefined ) {\n\n\t\t\t\t// red\n\t\t\t\tthis.setHex( hex );\n\n\t\t\t} else {\n\n\t\t\t\t// unknown color\n\t\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t},\n\n\tcopy: function ( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t},\n\n\tcopyGammaToLinear: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tthis.r = Math.pow( color.r, gammaFactor );\n\t\tthis.g = Math.pow( color.g, gammaFactor );\n\t\tthis.b = Math.pow( color.b, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopyLinearToGamma: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tvar safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0;\n\n\t\tthis.r = Math.pow( color.r, safeInverse );\n\t\tthis.g = Math.pow( color.g, safeInverse );\n\t\tthis.b = Math.pow( color.b, safeInverse );\n\n\t\treturn this;\n\n\t},\n\n\tconvertGammaToLinear: function ( gammaFactor ) {\n\n\t\tthis.copyGammaToLinear( this, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToGamma: function ( gammaFactor ) {\n\n\t\tthis.copyLinearToGamma( this, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopySRGBToLinear: function ( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t},\n\n\tcopyLinearToSRGB: function ( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t},\n\n\tconvertSRGBToLinear: function () {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToSRGB: function () {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t},\n\n\tgetHex: function () {\n\n\t\treturn ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;\n\n\t},\n\n\tgetHexString: function () {\n\n\t\treturn ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 );\n\n\t},\n\n\tgetHSL: function ( target ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Color: .getHSL() target is now required' );\n\t\t\ttarget = { h: 0, s: 0, l: 0 };\n\n\t\t}\n\n\t\tvar r = this.r, g = this.g, b = this.b;\n\n\t\tvar max = Math.max( r, g, b );\n\t\tvar min = Math.min( r, g, b );\n\n\t\tvar hue, saturation;\n\t\tvar lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tvar delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t},\n\n\tgetStyle: function () {\n\n\t\treturn 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')';\n\n\t},\n\n\toffsetHSL: function () {\n\n\t\tvar hsl = {};\n\n\t\treturn function ( h, s, l ) {\n\n\t\t\tthis.getHSL( hsl );\n\n\t\t\thsl.h += h; hsl.s += s; hsl.l += l;\n\n\t\t\tthis.setHSL( hsl.h, hsl.s, hsl.l );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tadd: function ( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t},\n\n\taddColors: function ( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t},\n\n\tlerp: function ( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpHSL: function () {\n\n\t\tvar hslA = { h: 0, s: 0, l: 0 };\n\t\tvar hslB = { h: 0, s: 0, l: 0 };\n\n\t\treturn function lerpHSL( color, alpha ) {\n\n\t\t\tthis.getHSL( hslA );\n\t\t\tcolor.getHSL( hslB );\n\n\t\t\tvar h = _Math.lerp( hslA.h, hslB.h, alpha );\n\t\t\tvar s = _Math.lerp( hslA.s, hslB.s, alpha );\n\t\t\tvar l = _Math.lerp( hslA.l, hslB.l, alpha );\n\n\t\t\tthis.setHSL( h, s, l );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tequals: function ( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn this.getHex();\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Face3( a, b, c, normal, color, materialIndex ) {\n\n\tthis.a = a;\n\tthis.b = b;\n\tthis.c = c;\n\n\tthis.normal = ( normal && normal.isVector3 ) ? normal : new Vector3();\n\tthis.vertexNormals = Array.isArray( normal ) ? normal : [];\n\n\tthis.color = ( color && color.isColor ) ? color : new Color();\n\tthis.vertexColors = Array.isArray( color ) ? color : [];\n\n\tthis.materialIndex = materialIndex !== undefined ? materialIndex : 0;\n\n}\n\nObject.assign( Face3.prototype, {\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.a = source.a;\n\t\tthis.b = source.b;\n\t\tthis.c = source.c;\n\n\t\tthis.normal.copy( source.normal );\n\t\tthis.color.copy( source.color );\n\n\t\tthis.materialIndex = source.materialIndex;\n\n\t\tfor ( var i = 0, il = source.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexNormals[ i ] = source.vertexNormals[ i ].clone();\n\n\t\t}\n\n\t\tfor ( var i = 0, il = source.vertexColors.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexColors[ i ] = source.vertexColors[ i ].clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nvar materialId = 0;\n\nfunction Material() {\n\n\tObject.defineProperty( this, 'id', { value: materialId ++ } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Material';\n\n\tthis.fog = true;\n\tthis.lights = true;\n\n\tthis.blending = NormalBlending;\n\tthis.side = FrontSide;\n\tthis.flatShading = false;\n\tthis.vertexTangents = false;\n\tthis.vertexColors = NoColors; // THREE.NoColors, THREE.VertexColors, THREE.FaceColors\n\n\tthis.opacity = 1;\n\tthis.transparent = false;\n\n\tthis.blendSrc = SrcAlphaFactor;\n\tthis.blendDst = OneMinusSrcAlphaFactor;\n\tthis.blendEquation = AddEquation;\n\tthis.blendSrcAlpha = null;\n\tthis.blendDstAlpha = null;\n\tthis.blendEquationAlpha = null;\n\n\tthis.depthFunc = LessEqualDepth;\n\tthis.depthTest = true;\n\tthis.depthWrite = true;\n\n\tthis.stencilFunc = AlwaysStencilFunc;\n\tthis.stencilRef = 0;\n\tthis.stencilMask = 0xff;\n\tthis.stencilFail = KeepStencilOp;\n\tthis.stencilZFail = KeepStencilOp;\n\tthis.stencilZPass = KeepStencilOp;\n\tthis.stencilWrite = false;\n\n\tthis.clippingPlanes = null;\n\tthis.clipIntersection = false;\n\tthis.clipShadows = false;\n\n\tthis.shadowSide = null;\n\n\tthis.colorWrite = true;\n\n\tthis.precision = null; // override the renderer's default precision for this material\n\n\tthis.polygonOffset = false;\n\tthis.polygonOffsetFactor = 0;\n\tthis.polygonOffsetUnits = 0;\n\n\tthis.dithering = false;\n\n\tthis.alphaTest = 0;\n\tthis.premultipliedAlpha = false;\n\n\tthis.visible = true;\n\n\tthis.userData = {};\n\n\tthis.needsUpdate = true;\n\n}\n\nMaterial.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Material,\n\n\tisMaterial: true,\n\n\tonBeforeCompile: function () {},\n\n\tsetValues: function ( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( var key in values ) {\n\n\t\t\tvar newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.Material: '\" + key + \"' parameter is undefined.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// for backward compatability if shading is set in the constructor\n\t\t\tif ( key === 'shading' ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\t\tthis.flatShading = ( newValue === FlatShading ) ? true : false;\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tvar currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.\" + this.type + \": '\" + key + \"' is not a property of this material.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar isRoot = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRoot ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearCoat !== undefined ) data.clearCoat = this.clearCoat;\n\t\tif ( this.clearCoatRoughness !== undefined ) data.clearCoatRoughness = this.clearCoatRoughness;\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\t\tif ( this.lightMap && this.lightMap.isTexture ) data.lightMap = this.lightMap.toJSON( meta ).uuid;\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\t\t\tdata.reflectivity = this.reflectivity; // Scale behind envMap\n\t\t\tdata.refractionRatio = this.refractionRatio;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\t\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\n\t\t}\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.flatShading === true ) data.flatShading = this.flatShading;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors !== NoColors ) data.vertexColors = this.vertexColors;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = this.transparent;\n\n\t\tdata.depthFunc = this.depthFunc;\n\t\tdata.depthTest = this.depthTest;\n\t\tdata.depthWrite = this.depthWrite;\n\n\t\tdata.stencilWrite = this.stencilWrite;\n\t\tdata.stencilFunc = this.stencilFunc;\n\t\tdata.stencilRef = this.stencilRef;\n\t\tdata.stencilMask = this.stencilMask;\n\t\tdata.stencilFail = this.stencilFail;\n\t\tdata.stencilZFail = this.stencilZFail;\n\t\tdata.stencilZPass = this.stencilZPass;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation && this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.polygonOffset === true ) data.polygonOffset = true;\n\t\tif ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor;\n\t\tif ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits;\n\n\t\tif ( this.linewidth && this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\n\n\t\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.morphTargets === true ) data.morphTargets = true;\n\t\tif ( this.morphNormals === true ) data.morphNormals = true;\n\t\tif ( this.skinning === true ) data.skinning = true;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tvar values = [];\n\n\t\t\tfor ( var key in cache ) {\n\n\t\t\t\tvar data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRoot ) {\n\n\t\t\tvar textures = extractFromCache( meta.textures );\n\t\t\tvar images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.fog = source.fog;\n\t\tthis.lights = source.lights;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.flatShading = source.flatShading;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.stencilWrite = source.stencilWrite;\n\t\tthis.stencilFunc = source.stencilFunc;\n\t\tthis.stencilRef = source.stencilRef;\n\t\tthis.stencilMask = source.stencilMask;\n\t\tthis.stencilFail = source.stencilFail;\n\t\tthis.stencilZFail = source.stencilZFail;\n\t\tthis.stencilZPass = source.stencilZPass;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\n\t\tthis.visible = source.visible;\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tthis.clipShadows = source.clipShadows;\n\t\tthis.clipIntersection = source.clipIntersection;\n\n\t\tvar srcPlanes = source.clippingPlanes,\n\t\t\tdstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tvar n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( var i = 0; i !== n; ++ i )\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * depthTest: ,\n * depthWrite: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: \n * }\n */\n\nfunction MeshBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshBasicMaterial';\n\n\tthis.color = new Color( 0xffffff ); // emissive\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshBasicMaterial.prototype = Object.create( Material.prototype );\nMeshBasicMaterial.prototype.constructor = MeshBasicMaterial;\n\nMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\n\nMeshBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BufferAttribute( array, itemSize, normalized ) {\n\n\tif ( Array.isArray( array ) ) {\n\n\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t}\n\n\tthis.name = '';\n\n\tthis.array = array;\n\tthis.itemSize = itemSize;\n\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\tthis.normalized = normalized === true;\n\n\tthis.dynamic = false;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n}\n\nObject.defineProperty( BufferAttribute.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( BufferAttribute.prototype, {\n\n\tisBufferAttribute: true,\n\n\tonUploadCallback: function () {},\n\n\tsetArray: function ( array ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.count = array !== undefined ? array.length / this.itemSize : 0;\n\t\tthis.array = array;\n\n\t\treturn this;\n\n\t},\n\n\tsetDynamic: function ( value ) {\n\n\t\tthis.dynamic = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.dynamic = source.dynamic;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( var i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyArray: function ( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t},\n\n\tcopyColorsArray: function ( colors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = colors.length; i < l; i ++ ) {\n\n\t\t\tvar color = colors[ i ];\n\n\t\t\tif ( color === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i );\n\t\t\t\tcolor = new Color();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = color.r;\n\t\t\tarray[ offset ++ ] = color.g;\n\t\t\tarray[ offset ++ ] = color.b;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector2sArray: function ( vectors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector2();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector3sArray: function ( vectors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector3();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector4sArray: function ( vectors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector4();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\t\t\tarray[ offset ++ ] = vector.w;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize ];\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 1 ];\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 2 ];\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 3 ];\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.prototype.slice.call( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t}\n\n} );\n\n//\n\nfunction Int8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int8Array( array ), itemSize, normalized );\n\n}\n\nInt8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt8BufferAttribute.prototype.constructor = Int8BufferAttribute;\n\n\nfunction Uint8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8Array( array ), itemSize, normalized );\n\n}\n\nUint8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8BufferAttribute.prototype.constructor = Uint8BufferAttribute;\n\n\nfunction Uint8ClampedBufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8ClampedArray( array ), itemSize, normalized );\n\n}\n\nUint8ClampedBufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8ClampedBufferAttribute.prototype.constructor = Uint8ClampedBufferAttribute;\n\n\nfunction Int16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int16Array( array ), itemSize, normalized );\n\n}\n\nInt16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt16BufferAttribute.prototype.constructor = Int16BufferAttribute;\n\n\nfunction Uint16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint16Array( array ), itemSize, normalized );\n\n}\n\nUint16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint16BufferAttribute.prototype.constructor = Uint16BufferAttribute;\n\n\nfunction Int32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int32Array( array ), itemSize, normalized );\n\n}\n\nInt32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt32BufferAttribute.prototype.constructor = Int32BufferAttribute;\n\n\nfunction Uint32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint32Array( array ), itemSize, normalized );\n\n}\n\nUint32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint32BufferAttribute.prototype.constructor = Uint32BufferAttribute;\n\n\nfunction Float32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float32Array( array ), itemSize, normalized );\n\n}\n\nFloat32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat32BufferAttribute.prototype.constructor = Float32BufferAttribute;\n\n\nfunction Float64BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float64Array( array ), itemSize, normalized );\n\n}\n\nFloat64BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat64BufferAttribute.prototype.constructor = Float64BufferAttribute;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectGeometry() {\n\n\tthis.vertices = [];\n\tthis.normals = [];\n\tthis.colors = [];\n\tthis.uvs = [];\n\tthis.uvs2 = [];\n\n\tthis.groups = [];\n\n\tthis.morphTargets = {};\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\t// this.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.verticesNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nObject.assign( DirectGeometry.prototype, {\n\n\tcomputeGroups: function ( geometry ) {\n\n\t\tvar group;\n\t\tvar groups = [];\n\t\tvar materialIndex = undefined;\n\n\t\tvar faces = geometry.faces;\n\n\t\tfor ( var i = 0; i < faces.length; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\t// materials\n\n\t\t\tif ( face.materialIndex !== materialIndex ) {\n\n\t\t\t\tmaterialIndex = face.materialIndex;\n\n\t\t\t\tif ( group !== undefined ) {\n\n\t\t\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\t\t\tgroups.push( group );\n\n\t\t\t\t}\n\n\t\t\t\tgroup = {\n\t\t\t\t\tstart: i * 3,\n\t\t\t\t\tmaterialIndex: materialIndex\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( group !== undefined ) {\n\n\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\tgroups.push( group );\n\n\t\t}\n\n\t\tthis.groups = groups;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tvar faces = geometry.faces;\n\t\tvar vertices = geometry.vertices;\n\t\tvar faceVertexUvs = geometry.faceVertexUvs;\n\n\t\tvar hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0;\n\t\tvar hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0;\n\n\t\t// morphs\n\n\t\tvar morphTargets = geometry.morphTargets;\n\t\tvar morphTargetsLength = morphTargets.length;\n\n\t\tvar morphTargetsPosition;\n\n\t\tif ( morphTargetsLength > 0 ) {\n\n\t\t\tmorphTargetsPosition = [];\n\n\t\t\tfor ( var i = 0; i < morphTargetsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsPosition[ i ] = {\n\t\t\t\t\tname: morphTargets[ i ].name,\n\t\t\t\t \tdata: []\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.position = morphTargetsPosition;\n\n\t\t}\n\n\t\tvar morphNormals = geometry.morphNormals;\n\t\tvar morphNormalsLength = morphNormals.length;\n\n\t\tvar morphTargetsNormal;\n\n\t\tif ( morphNormalsLength > 0 ) {\n\n\t\t\tmorphTargetsNormal = [];\n\n\t\t\tfor ( var i = 0; i < morphNormalsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsNormal[ i ] = {\n\t\t\t\t\tname: morphNormals[ i ].name,\n\t\t\t\t \tdata: []\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.normal = morphTargetsNormal;\n\n\t\t}\n\n\t\t// skins\n\n\t\tvar skinIndices = geometry.skinIndices;\n\t\tvar skinWeights = geometry.skinWeights;\n\n\t\tvar hasSkinIndices = skinIndices.length === vertices.length;\n\t\tvar hasSkinWeights = skinWeights.length === vertices.length;\n\n\t\t//\n\n\t\tif ( vertices.length > 0 && faces.length === 0 ) {\n\n\t\t\tconsole.error( 'THREE.DirectGeometry: Faceless geometries are not supported.' );\n\n\t\t}\n\n\t\tfor ( var i = 0; i < faces.length; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tthis.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] );\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tthis.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tvar normal = face.normal;\n\n\t\t\t\tthis.normals.push( normal, normal, normal );\n\n\t\t\t}\n\n\t\t\tvar vertexColors = face.vertexColors;\n\n\t\t\tif ( vertexColors.length === 3 ) {\n\n\t\t\t\tthis.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tvar color = face.color;\n\n\t\t\t\tthis.colors.push( color, color, color );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv === true ) {\n\n\t\t\t\tvar vertexUvs = faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i );\n\n\t\t\t\t\tthis.uvs.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv2 === true ) {\n\n\t\t\t\tvar vertexUvs = faceVertexUvs[ 1 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i );\n\n\t\t\t\t\tthis.uvs2.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// morphs\n\n\t\t\tfor ( var j = 0; j < morphTargetsLength; j ++ ) {\n\n\t\t\t\tvar morphTarget = morphTargets[ j ].vertices;\n\n\t\t\t\tmorphTargetsPosition[ j ].data.push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] );\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0; j < morphNormalsLength; j ++ ) {\n\n\t\t\t\tvar morphNormal = morphNormals[ j ].vertexNormals[ i ];\n\n\t\t\t\tmorphTargetsNormal[ j ].data.push( morphNormal.a, morphNormal.b, morphNormal.c );\n\n\t\t\t}\n\n\t\t\t// skins\n\n\t\t\tif ( hasSkinIndices ) {\n\n\t\t\t\tthis.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] );\n\n\t\t\t}\n\n\t\t\tif ( hasSkinWeights ) {\n\n\t\t\t\tthis.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeGroups( geometry );\n\n\t\tthis.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\tthis.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\tthis.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\tthis.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction arrayMax( array ) {\n\n\tif ( array.length === 0 ) return - Infinity;\n\n\tvar max = array[ 0 ];\n\n\tfor ( var i = 1, l = array.length; i < l; ++ i ) {\n\n\t\tif ( array[ i ] > max ) max = array[ i ];\n\n\t}\n\n\treturn max;\n\n}\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar bufferGeometryId = 1; // BufferGeometry uses odd numbers as Id\n\nfunction BufferGeometry() {\n\n\tObject.defineProperty( this, 'id', { value: bufferGeometryId += 2 } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'BufferGeometry';\n\n\tthis.index = null;\n\tthis.attributes = {};\n\n\tthis.morphAttributes = {};\n\n\tthis.groups = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\tthis.drawRange = { start: 0, count: Infinity };\n\n\tthis.userData = {};\n\n}\n\nBufferGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: BufferGeometry,\n\n\tisBufferGeometry: true,\n\n\tgetIndex: function () {\n\n\t\treturn this.index;\n\n\t},\n\n\tsetIndex: function ( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayMax( index ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t},\n\n\taddAttribute: function ( name, attribute ) {\n\n\t\tif ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' );\n\n\t\t\treturn this.addAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) );\n\n\t\t}\n\n\t\tif ( name === 'index' ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' );\n\t\t\tthis.setIndex( attribute );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t},\n\n\tgetAttribute: function ( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t},\n\n\tremoveAttribute: function ( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t},\n\n\taddGroup: function ( start, count, materialIndex ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex !== undefined ? materialIndex : 0\n\n\t\t} );\n\n\t},\n\n\tclearGroups: function () {\n\n\t\tthis.groups = [];\n\n\t},\n\n\tsetDrawRange: function ( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t},\n\n\tapplyMatrix: function ( matrix ) {\n\n\t\tvar position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tmatrix.applyToBufferAttribute( position );\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tvar normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tvar normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormalMatrix.applyToBufferAttribute( normal );\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tvar tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\tvar normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\t// Tangent is vec4, but the '.w' component is a sign value (+1/-1).\n\t\t\tnormalMatrix.applyToBufferAttribute( tangent );\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function () {\n\n\t\t// rotate geometry around world x-axis\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function rotateX( angle ) {\n\n\t\t\tm1.makeRotationX( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateY: function () {\n\n\t\t// rotate geometry around world y-axis\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function rotateY( angle ) {\n\n\t\t\tm1.makeRotationY( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateZ: function () {\n\n\t\t// rotate geometry around world z-axis\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function rotateZ( angle ) {\n\n\t\t\tm1.makeRotationZ( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function () {\n\n\t\t// translate geometry\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function translate( x, y, z ) {\n\n\t\t\tm1.makeTranslation( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tscale: function () {\n\n\t\t// scale geometry\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function scale( x, y, z ) {\n\n\t\t\tm1.makeScale( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\tvar obj = new Object3D();\n\n\t\treturn function lookAt( vector ) {\n\n\t\t\tobj.lookAt( vector );\n\n\t\t\tobj.updateMatrix();\n\n\t\t\tthis.applyMatrix( obj.matrix );\n\n\t\t};\n\n\t}(),\n\n\tcenter: function () {\n\n\t\tvar offset = new Vector3();\n\n\t\treturn function center() {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t\tthis.boundingBox.getCenter( offset ).negate();\n\n\t\t\tthis.translate( offset.x, offset.y, offset.z );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tsetFromObject: function ( object ) {\n\n\t\t// console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this );\n\n\t\tvar geometry = object.geometry;\n\n\t\tif ( object.isPoints || object.isLine ) {\n\n\t\t\tvar positions = new Float32BufferAttribute( geometry.vertices.length * 3, 3 );\n\t\t\tvar colors = new Float32BufferAttribute( geometry.colors.length * 3, 3 );\n\n\t\t\tthis.addAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) );\n\t\t\tthis.addAttribute( 'color', colors.copyColorsArray( geometry.colors ) );\n\n\t\t\tif ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) {\n\n\t\t\t\tvar lineDistances = new Float32BufferAttribute( geometry.lineDistances.length, 1 );\n\n\t\t\t\tthis.addAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) );\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t\t}\n\n\t\t} else if ( object.isMesh ) {\n\n\t\t\tif ( geometry && geometry.isGeometry ) {\n\n\t\t\t\tthis.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tvar position = [];\n\n\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tvar point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.addAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\treturn this;\n\n\t},\n\n\tupdateFromObject: function ( object ) {\n\n\t\tvar geometry = object.geometry;\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tvar direct = geometry.__directGeometry;\n\n\t\t\tif ( geometry.elementsNeedUpdate === true ) {\n\n\t\t\t\tdirect = undefined;\n\t\t\t\tgeometry.elementsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( direct === undefined ) {\n\n\t\t\t\treturn this.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t\tdirect.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\t\tdirect.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\t\tdirect.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\t\tdirect.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\t\tdirect.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\t\t\tgeometry.normalsNeedUpdate = false;\n\t\t\tgeometry.colorsNeedUpdate = false;\n\t\t\tgeometry.uvsNeedUpdate = false;\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t\tgeometry = direct;\n\n\t\t}\n\n\t\tvar attribute;\n\n\t\tif ( geometry.verticesNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.position;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.vertices );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.normalsNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.normal;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.normals );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.normalsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.colorsNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.color;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyColorsArray( geometry.colors );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.colorsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.uvsNeedUpdate ) {\n\n\t\t\tattribute = this.attributes.uv;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector2sArray( geometry.uvs );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.uvsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.lineDistancesNeedUpdate ) {\n\n\t\t\tattribute = this.attributes.lineDistance;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyArray( geometry.lineDistances );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.lineDistancesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.groupsNeedUpdate ) {\n\n\t\t\tgeometry.computeGroups( object.geometry );\n\t\t\tthis.groups = geometry.groups;\n\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tgeometry.__directGeometry = new DirectGeometry().fromGeometry( geometry );\n\n\t\treturn this.fromDirectGeometry( geometry.__directGeometry );\n\n\t},\n\n\tfromDirectGeometry: function ( geometry ) {\n\n\t\tvar positions = new Float32Array( geometry.vertices.length * 3 );\n\t\tthis.addAttribute( 'position', new BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) );\n\n\t\tif ( geometry.normals.length > 0 ) {\n\n\t\t\tvar normals = new Float32Array( geometry.normals.length * 3 );\n\t\t\tthis.addAttribute( 'normal', new BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) );\n\n\t\t}\n\n\t\tif ( geometry.colors.length > 0 ) {\n\n\t\t\tvar colors = new Float32Array( geometry.colors.length * 3 );\n\t\t\tthis.addAttribute( 'color', new BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs.length > 0 ) {\n\n\t\t\tvar uvs = new Float32Array( geometry.uvs.length * 2 );\n\t\t\tthis.addAttribute( 'uv', new BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs2.length > 0 ) {\n\n\t\t\tvar uvs2 = new Float32Array( geometry.uvs2.length * 2 );\n\t\t\tthis.addAttribute( 'uv2', new BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) );\n\n\t\t}\n\n\t\t// groups\n\n\t\tthis.groups = geometry.groups;\n\n\t\t// morphs\n\n\t\tfor ( var name in geometry.morphTargets ) {\n\n\t\t\tvar array = [];\n\t\t\tvar morphTargets = geometry.morphTargets[ name ];\n\n\t\t\tfor ( var i = 0, l = morphTargets.length; i < l; i ++ ) {\n\n\t\t\t\tvar morphTarget = morphTargets[ i ];\n\n\t\t\t\tvar attribute = new Float32BufferAttribute( morphTarget.data.length * 3, 3 );\n\t\t\t\tattribute.name = morphTarget.name;\n\n\t\t\t\tarray.push( attribute.copyVector3sArray( morphTarget.data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\t// skinning\n\n\t\tif ( geometry.skinIndices.length > 0 ) {\n\n\t\t\tvar skinIndices = new Float32BufferAttribute( geometry.skinIndices.length * 4, 4 );\n\t\t\tthis.addAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) );\n\n\t\t}\n\n\t\tif ( geometry.skinWeights.length > 0 ) {\n\n\t\t\tvar skinWeights = new Float32BufferAttribute( geometry.skinWeights.length * 4, 4 );\n\t\t\tthis.addAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tvar box = new Box3();\n\n\t\treturn function computeBoundingBox() {\n\n\t\t\tif ( this.boundingBox === null ) {\n\n\t\t\t\tthis.boundingBox = new Box3();\n\n\t\t\t}\n\n\t\t\tvar position = this.attributes.position;\n\t\t\tvar morphAttributesPosition = this.morphAttributes.position;\n\n\t\t\tif ( position !== undefined ) {\n\n\t\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t\t// process morph attributes if present\n\n\t\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\t\tfor ( var i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t\tbox.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( box.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( box.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t\t}\n\n\t\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t};\n\n\t}(),\n\n\tcomputeBoundingSphere: function () {\n\n\t\tvar box = new Box3();\n\t\tvar boxMorphTargets = new Box3();\n\t\tvar vector = new Vector3();\n\n\t\treturn function computeBoundingSphere() {\n\n\t\t\tif ( this.boundingSphere === null ) {\n\n\t\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t\t}\n\n\t\t\tvar position = this.attributes.position;\n\t\t\tvar morphAttributesPosition = this.morphAttributes.position;\n\n\t\t\tif ( position ) {\n\n\t\t\t\t// first, find the center of the bounding sphere\n\n\t\t\t\tvar center = this.boundingSphere.center;\n\n\t\t\t\tbox.setFromBufferAttribute( position );\n\n\t\t\t\t// process morph attributes if present\n\n\t\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\t\tfor ( var i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t\tboxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\t\tbox.expandByPoint( boxMorphTargets.min );\n\t\t\t\t\t\tbox.expandByPoint( boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tbox.getCenter( center );\n\n\t\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\t\tvar maxRadiusSq = 0;\n\n\t\t\t\tfor ( var i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t\tvector.fromBufferAttribute( position, i );\n\n\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( vector ) );\n\n\t\t\t\t}\n\n\t\t\t\t// process morph attributes if present\n\n\t\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\t\tfor ( var i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar morphAttribute = morphAttributesPosition[ i ];\n\n\t\t\t\t\t\tfor ( var j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tvector.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( vector ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}(),\n\n\tcomputeFaceNormals: function () {\n\n\t\t// backwards compatibility\n\n\t},\n\n\tcomputeVertexNormals: function () {\n\n\t\tvar index = this.index;\n\t\tvar attributes = this.attributes;\n\n\t\tif ( attributes.position ) {\n\n\t\t\tvar positions = attributes.position.array;\n\n\t\t\tif ( attributes.normal === undefined ) {\n\n\t\t\t\tthis.addAttribute( 'normal', new BufferAttribute( new Float32Array( positions.length ), 3 ) );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tvar array = attributes.normal.array;\n\n\t\t\t\tfor ( var i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t\t\tarray[ i ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar normals = attributes.normal.array;\n\n\t\t\tvar vA, vB, vC;\n\t\t\tvar pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tvar cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tvar indices = index.array;\n\n\t\t\t\tfor ( var i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tvA = indices[ i + 0 ] * 3;\n\t\t\t\t\tvB = indices[ i + 1 ] * 3;\n\t\t\t\t\tvC = indices[ i + 2 ] * 3;\n\n\t\t\t\t\tpA.fromArray( positions, vA );\n\t\t\t\t\tpB.fromArray( positions, vB );\n\t\t\t\t\tpC.fromArray( positions, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormals[ vA ] += cb.x;\n\t\t\t\t\tnormals[ vA + 1 ] += cb.y;\n\t\t\t\t\tnormals[ vA + 2 ] += cb.z;\n\n\t\t\t\t\tnormals[ vB ] += cb.x;\n\t\t\t\t\tnormals[ vB + 1 ] += cb.y;\n\t\t\t\t\tnormals[ vB + 2 ] += cb.z;\n\n\t\t\t\t\tnormals[ vC ] += cb.x;\n\t\t\t\t\tnormals[ vC + 1 ] += cb.y;\n\t\t\t\t\tnormals[ vC + 2 ] += cb.z;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( var i = 0, il = positions.length; i < il; i += 9 ) {\n\n\t\t\t\t\tpA.fromArray( positions, i );\n\t\t\t\t\tpB.fromArray( positions, i + 3 );\n\t\t\t\t\tpC.fromArray( positions, i + 6 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormals[ i ] = cb.x;\n\t\t\t\t\tnormals[ i + 1 ] = cb.y;\n\t\t\t\t\tnormals[ i + 2 ] = cb.z;\n\n\t\t\t\t\tnormals[ i + 3 ] = cb.x;\n\t\t\t\t\tnormals[ i + 4 ] = cb.y;\n\t\t\t\t\tnormals[ i + 5 ] = cb.z;\n\n\t\t\t\t\tnormals[ i + 6 ] = cb.x;\n\t\t\t\t\tnormals[ i + 7 ] = cb.y;\n\t\t\t\t\tnormals[ i + 8 ] = cb.z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tattributes.normal.needsUpdate = true;\n\n\t\t}\n\n\t},\n\n\tmerge: function ( geometry, offset ) {\n\n\t\tif ( ! ( geometry && geometry.isBufferGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( offset === undefined ) {\n\n\t\t\toffset = 0;\n\n\t\t\tconsole.warn(\n\t\t\t\t'THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. '\n\t\t\t\t+ 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.'\n\t\t\t);\n\n\t\t}\n\n\t\tvar attributes = this.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tif ( geometry.attributes[ key ] === undefined ) continue;\n\n\t\t\tvar attribute1 = attributes[ key ];\n\t\t\tvar attributeArray1 = attribute1.array;\n\n\t\t\tvar attribute2 = geometry.attributes[ key ];\n\t\t\tvar attributeArray2 = attribute2.array;\n\n\t\t\tvar attributeOffset = attribute2.itemSize * offset;\n\t\t\tvar length = Math.min( attributeArray2.length, attributeArray1.length - attributeOffset );\n\n\t\t\tfor ( var i = 0, j = attributeOffset; i < length; i ++, j ++ ) {\n\n\t\t\t\tattributeArray1[ j ] = attributeArray2[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tnormalizeNormals: function () {\n\n\t\tvar vector = new Vector3();\n\n\t\treturn function normalizeNormals() {\n\n\t\t\tvar normals = this.attributes.normal;\n\n\t\t\tfor ( var i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t\tvector.x = normals.getX( i );\n\t\t\t\tvector.y = normals.getY( i );\n\t\t\t\tvector.z = normals.getZ( i );\n\n\t\t\t\tvector.normalize();\n\n\t\t\t\tnormals.setXYZ( i, vector.x, vector.y, vector.z );\n\n\t\t\t}\n\n\t\t};\n\n\t}(),\n\n\ttoNonIndexed: function () {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tvar array = attribute.array;\n\t\t\tvar itemSize = attribute.itemSize;\n\n\t\t\tvar array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tvar index = 0, index2 = 0;\n\n\t\t\tfor ( var i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\tfor ( var j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar geometry2 = new BufferGeometry();\n\n\t\tvar indices = this.index.array;\n\t\tvar attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( var name in attributes ) {\n\n\t\t\tvar attribute = attributes[ name ];\n\n\t\t\tvar newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.addAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tvar morphAttributes = this.morphAttributes;\n\n\t\tfor ( name in morphAttributes ) {\n\n\t\t\tvar morphArray = [];\n\t\t\tvar morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( var i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tvar attribute = morphAttribute[ i ];\n\n\t\t\t\tvar newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\t// groups\n\n\t\tvar groups = this.groups;\n\n\t\tfor ( var i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tvar group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tvar parameters = this.parameters;\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tdata.data = { attributes: {} };\n\n\t\tvar index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tvar attributes = this.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tvar attribute = attributes[ key ];\n\n\t\t\tvar attributeData = attribute.toJSON();\n\n\t\t\tif ( attribute.name !== '' ) attributeData.name = attribute.name;\n\n\t\t\tdata.data.attributes[ key ] = attributeData;\n\n\t\t}\n\n\t\tvar morphAttributes = {};\n\t\tvar hasMorphAttributes = false;\n\n\t\tfor ( var key in this.morphAttributes ) {\n\n\t\t\tvar attributeArray = this.morphAttributes[ key ];\n\n\t\t\tvar array = [];\n\n\t\t\tfor ( var i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tvar attribute = attributeArray[ i ];\n\n\t\t\t\tvar attributeData = attribute.toJSON();\n\n\t\t\t\tif ( attribute.name !== '' ) attributeData.name = attribute.name;\n\n\t\t\t\tarray.push( attributeData );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) data.data.morphAttributes = morphAttributes;\n\n\t\tvar groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tvar boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t var parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t var values = [];\n\n\t\t for ( var key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t var geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new BufferGeometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tvar name, i, l;\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tvar index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone() );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tvar attributes = source.attributes;\n\n\t\tfor ( name in attributes ) {\n\n\t\t\tvar attribute = attributes[ name ];\n\t\t\tthis.addAttribute( name, attribute.clone() );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tvar morphAttributes = source.morphAttributes;\n\n\t\tfor ( name in morphAttributes ) {\n\n\t\t\tvar array = [];\n\t\t\tvar morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone() );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\t// groups\n\n\t\tvar groups = source.groups;\n\n\t\tfor ( i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tvar group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tvar boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tvar boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author jonobr1 / http://jonobr1.com/\n */\n\nfunction Mesh( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Mesh';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new MeshBasicMaterial( { color: Math.random() * 0xffffff } );\n\n\tthis.drawMode = TrianglesDrawMode;\n\n\tthis.updateMorphTargets();\n\n}\n\nMesh.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Mesh,\n\n\tisMesh: true,\n\n\tsetDrawMode: function ( value ) {\n\n\t\tthis.drawMode = value;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.drawMode = source.drawMode;\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tvar geometry = this.geometry;\n\t\tvar m, ml, name;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tvar morphAttributes = geometry.morphAttributes;\n\t\t\tvar keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tvar morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tname = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\traycast: ( function () {\n\n\t\tvar inverseMatrix = new Matrix4();\n\t\tvar ray = new Ray();\n\t\tvar sphere = new Sphere();\n\n\t\tvar vA = new Vector3();\n\t\tvar vB = new Vector3();\n\t\tvar vC = new Vector3();\n\n\t\tvar tempA = new Vector3();\n\t\tvar tempB = new Vector3();\n\t\tvar tempC = new Vector3();\n\n\t\tvar morphA = new Vector3();\n\t\tvar morphB = new Vector3();\n\t\tvar morphC = new Vector3();\n\n\t\tvar uvA = new Vector2();\n\t\tvar uvB = new Vector2();\n\t\tvar uvC = new Vector2();\n\n\t\tvar intersectionPoint = new Vector3();\n\t\tvar intersectionPointWorld = new Vector3();\n\n\t\tfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\t\t\tvar intersect;\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t\t\t} else {\n\n\t\t\t\tintersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point );\n\n\t\t\t}\n\n\t\t\tif ( intersect === null ) return null;\n\n\t\t\tintersectionPointWorld.copy( point );\n\t\t\tintersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\t\t\tvar distance = raycaster.ray.origin.distanceTo( intersectionPointWorld );\n\n\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\t\t\treturn {\n\t\t\t\tdistance: distance,\n\t\t\t\tpoint: intersectionPointWorld.clone(),\n\t\t\t\tobject: object\n\t\t\t};\n\n\t\t}\n\n\t\tfunction checkBufferGeometryIntersection( object, material, raycaster, ray, position, morphPosition, uv, uv2, a, b, c ) {\n\n\t\t\tvA.fromBufferAttribute( position, a );\n\t\t\tvB.fromBufferAttribute( position, b );\n\t\t\tvC.fromBufferAttribute( position, c );\n\n\t\t\tvar morphInfluences = object.morphTargetInfluences;\n\n\t\t\tif ( material.morphTargets && morphPosition && morphInfluences ) {\n\n\t\t\t\tmorphA.set( 0, 0, 0 );\n\t\t\t\tmorphB.set( 0, 0, 0 );\n\t\t\t\tmorphC.set( 0, 0, 0 );\n\n\t\t\t\tfor ( var i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar influence = morphInfluences[ i ];\n\t\t\t\t\tvar morphAttribute = morphPosition[ i ];\n\n\t\t\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t\t\ttempA.fromBufferAttribute( morphAttribute, a );\n\t\t\t\t\ttempB.fromBufferAttribute( morphAttribute, b );\n\t\t\t\t\ttempC.fromBufferAttribute( morphAttribute, c );\n\n\t\t\t\t\tmorphA.addScaledVector( tempA.sub( vA ), influence );\n\t\t\t\t\tmorphB.addScaledVector( tempB.sub( vB ), influence );\n\t\t\t\t\tmorphC.addScaledVector( tempC.sub( vC ), influence );\n\n\t\t\t\t}\n\n\t\t\t\tvA.add( morphA );\n\t\t\t\tvB.add( morphB );\n\t\t\t\tvC.add( morphC );\n\n\t\t\t}\n\n\t\t\tvar intersection = checkIntersection( object, material, raycaster, ray, vA, vB, vC, intersectionPoint );\n\n\t\t\tif ( intersection ) {\n\n\t\t\t\tif ( uv ) {\n\n\t\t\t\t\tuvA.fromBufferAttribute( uv, a );\n\t\t\t\t\tuvB.fromBufferAttribute( uv, b );\n\t\t\t\t\tuvC.fromBufferAttribute( uv, c );\n\n\t\t\t\t\tintersection.uv = Triangle.getUV( intersectionPoint, vA, vB, vC, uvA, uvB, uvC, new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t\tif ( uv2 ) {\n\n\t\t\t\t\tuvA.fromBufferAttribute( uv2, a );\n\t\t\t\t\tuvB.fromBufferAttribute( uv2, b );\n\t\t\t\t\tuvC.fromBufferAttribute( uv2, c );\n\n\t\t\t\t\tintersection.uv2 = Triangle.getUV( intersectionPoint, vA, vB, vC, uvA, uvB, uvC, new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t\tvar face = new Face3( a, b, c );\n\t\t\t\tTriangle.getNormal( vA, vB, vC, face.normal );\n\n\t\t\t\tintersection.face = face;\n\n\t\t\t}\n\n\t\t\treturn intersection;\n\n\t\t}\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tvar geometry = this.geometry;\n\t\t\tvar material = this.material;\n\t\t\tvar matrixWorld = this.matrixWorld;\n\n\t\t\tif ( material === undefined ) return;\n\n\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\tsphere.applyMatrix4( matrixWorld );\n\n\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t//\n\n\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\t// Check boundingBox before continuing\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tif ( ray.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t\t}\n\n\t\t\tvar intersection;\n\n\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\tvar a, b, c;\n\t\t\t\tvar index = geometry.index;\n\t\t\t\tvar position = geometry.attributes.position;\n\t\t\t\tvar morphPosition = geometry.morphAttributes.position;\n\t\t\t\tvar uv = geometry.attributes.uv;\n\t\t\t\tvar uv2 = geometry.attributes.uv2;\n\t\t\t\tvar groups = geometry.groups;\n\t\t\t\tvar drawRange = geometry.drawRange;\n\t\t\t\tvar i, j, il, jl;\n\t\t\t\tvar group, groupMaterial;\n\t\t\t\tvar start, end;\n\n\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\t// indexed buffer geometry\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tfor ( i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\tgroup = groups[ i ];\n\t\t\t\t\t\t\tgroupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tstart = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\t\tend = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\t\tfor ( j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\t\ta = index.getX( j );\n\t\t\t\t\t\t\t\tb = index.getX( j + 1 );\n\t\t\t\t\t\t\t\tc = index.getX( j + 2 );\n\n\t\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, morphPosition, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstart = Math.max( 0, drawRange.start );\n\t\t\t\t\t\tend = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\t\ta = index.getX( i );\n\t\t\t\t\t\t\tb = index.getX( i + 1 );\n\t\t\t\t\t\t\tc = index.getX( i + 2 );\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, morphPosition, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( position !== undefined ) {\n\n\t\t\t\t\t// non-indexed buffer geometry\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tfor ( i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\tgroup = groups[ i ];\n\t\t\t\t\t\t\tgroupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tstart = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\t\tend = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\t\tfor ( j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\t\ta = j;\n\t\t\t\t\t\t\t\tb = j + 1;\n\t\t\t\t\t\t\t\tc = j + 2;\n\n\t\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, morphPosition, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstart = Math.max( 0, drawRange.start );\n\t\t\t\t\t\tend = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\t\ta = i;\n\t\t\t\t\t\t\tb = i + 1;\n\t\t\t\t\t\t\tc = i + 2;\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, morphPosition, uv, uv2, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\t\tvar fvA, fvB, fvC;\n\t\t\t\tvar isMultiMaterial = Array.isArray( material );\n\n\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\tvar faces = geometry.faces;\n\t\t\t\tvar uvs;\n\n\t\t\t\tvar faceVertexUvs = geometry.faceVertexUvs[ 0 ];\n\t\t\t\tif ( faceVertexUvs.length > 0 ) uvs = faceVertexUvs;\n\n\t\t\t\tfor ( var f = 0, fl = faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tvar face = faces[ f ];\n\t\t\t\t\tvar faceMaterial = isMultiMaterial ? material[ face.materialIndex ] : material;\n\n\t\t\t\t\tif ( faceMaterial === undefined ) continue;\n\n\t\t\t\t\tfvA = vertices[ face.a ];\n\t\t\t\t\tfvB = vertices[ face.b ];\n\t\t\t\t\tfvC = vertices[ face.c ];\n\n\t\t\t\t\tintersection = checkIntersection( this, faceMaterial, raycaster, ray, fvA, fvB, fvC, intersectionPoint );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tif ( uvs && uvs[ f ] ) {\n\n\t\t\t\t\t\t\tvar uvs_f = uvs[ f ];\n\t\t\t\t\t\t\tuvA.copy( uvs_f[ 0 ] );\n\t\t\t\t\t\t\tuvB.copy( uvs_f[ 1 ] );\n\t\t\t\t\t\t\tuvC.copy( uvs_f[ 2 ] );\n\n\t\t\t\t\t\t\tintersection.uv = Triangle.getUV( intersectionPoint, fvA, fvB, fvC, uvA, uvB, uvC, new Vector2() );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tintersection.face = face;\n\t\t\t\t\t\tintersection.faceIndex = f;\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author kile / http://kile.stravaganza.org/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author bhouston / http://clara.io\n */\n\nvar geometryId = 0; // Geometry uses even numbers as Id\n\nfunction Geometry() {\n\n\tObject.defineProperty( this, 'id', { value: geometryId += 2 } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Geometry';\n\n\tthis.vertices = [];\n\tthis.colors = [];\n\tthis.faces = [];\n\tthis.faceVertexUvs = [[]];\n\n\tthis.morphTargets = [];\n\tthis.morphNormals = [];\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\tthis.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.elementsNeedUpdate = false;\n\tthis.verticesNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.lineDistancesNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Geometry,\n\n\tisGeometry: true,\n\n\tapplyMatrix: function ( matrix ) {\n\n\t\tvar normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\tfor ( var i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tvar vertex = this.vertices[ i ];\n\t\t\tvertex.applyMatrix4( matrix );\n\n\t\t}\n\n\t\tfor ( var i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tvar face = this.faces[ i ];\n\t\t\tface.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\tfor ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tface.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.verticesNeedUpdate = true;\n\t\tthis.normalsNeedUpdate = true;\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function () {\n\n\t\t// rotate geometry around world x-axis\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function rotateX( angle ) {\n\n\t\t\tm1.makeRotationX( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateY: function () {\n\n\t\t// rotate geometry around world y-axis\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function rotateY( angle ) {\n\n\t\t\tm1.makeRotationY( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateZ: function () {\n\n\t\t// rotate geometry around world z-axis\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function rotateZ( angle ) {\n\n\t\t\tm1.makeRotationZ( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function () {\n\n\t\t// translate geometry\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function translate( x, y, z ) {\n\n\t\t\tm1.makeTranslation( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tscale: function () {\n\n\t\t// scale geometry\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function scale( x, y, z ) {\n\n\t\t\tm1.makeScale( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\tvar obj = new Object3D();\n\n\t\treturn function lookAt( vector ) {\n\n\t\t\tobj.lookAt( vector );\n\n\t\t\tobj.updateMatrix();\n\n\t\t\tthis.applyMatrix( obj.matrix );\n\n\t\t};\n\n\t}(),\n\n\tfromBufferGeometry: function ( geometry ) {\n\n\t\tvar scope = this;\n\n\t\tvar indices = geometry.index !== null ? geometry.index.array : undefined;\n\t\tvar attributes = geometry.attributes;\n\n\t\tvar positions = attributes.position.array;\n\t\tvar normals = attributes.normal !== undefined ? attributes.normal.array : undefined;\n\t\tvar colors = attributes.color !== undefined ? attributes.color.array : undefined;\n\t\tvar uvs = attributes.uv !== undefined ? attributes.uv.array : undefined;\n\t\tvar uvs2 = attributes.uv2 !== undefined ? attributes.uv2.array : undefined;\n\n\t\tif ( uvs2 !== undefined ) this.faceVertexUvs[ 1 ] = [];\n\n\t\tfor ( var i = 0; i < positions.length; i += 3 ) {\n\n\t\t\tscope.vertices.push( new Vector3().fromArray( positions, i ) );\n\n\t\t\tif ( colors !== undefined ) {\n\n\t\t\t\tscope.colors.push( new Color().fromArray( colors, i ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction addFace( a, b, c, materialIndex ) {\n\n\t\t\tvar vertexColors = ( colors === undefined ) ? [] : [\n\t\t\t\tscope.colors[ a ].clone(),\n\t\t\t\tscope.colors[ b ].clone(),\n\t\t\t\tscope.colors[ c ].clone() ];\n\n\t\t\tvar vertexNormals = ( normals === undefined ) ? [] : [\n\t\t\t\tnew Vector3().fromArray( normals, a * 3 ),\n\t\t\t\tnew Vector3().fromArray( normals, b * 3 ),\n\t\t\t\tnew Vector3().fromArray( normals, c * 3 )\n\t\t\t];\n\n\t\t\tvar face = new Face3( a, b, c, vertexNormals, vertexColors, materialIndex );\n\n\t\t\tscope.faces.push( face );\n\n\t\t\tif ( uvs !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 0 ].push( [\n\t\t\t\t\tnew Vector2().fromArray( uvs, a * 2 ),\n\t\t\t\t\tnew Vector2().fromArray( uvs, b * 2 ),\n\t\t\t\t\tnew Vector2().fromArray( uvs, c * 2 )\n\t\t\t\t] );\n\n\t\t\t}\n\n\t\t\tif ( uvs2 !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 1 ].push( [\n\t\t\t\t\tnew Vector2().fromArray( uvs2, a * 2 ),\n\t\t\t\t\tnew Vector2().fromArray( uvs2, b * 2 ),\n\t\t\t\t\tnew Vector2().fromArray( uvs2, c * 2 )\n\t\t\t\t] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar groups = geometry.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tfor ( var i = 0; i < groups.length; i ++ ) {\n\n\t\t\t\tvar group = groups[ i ];\n\n\t\t\t\tvar start = group.start;\n\t\t\t\tvar count = group.count;\n\n\t\t\t\tfor ( var j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\t\tif ( indices !== undefined ) {\n\n\t\t\t\t\t\taddFace( indices[ j ], indices[ j + 1 ], indices[ j + 2 ], group.materialIndex );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\taddFace( j, j + 1, j + 2, group.materialIndex );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( indices !== undefined ) {\n\n\t\t\t\tfor ( var i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t\taddFace( indices[ i ], indices[ i + 1 ], indices[ i + 2 ] );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( var i = 0; i < positions.length / 3; i += 3 ) {\n\n\t\t\t\t\taddFace( i, i + 1, i + 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeFaceNormals();\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tvar offset = new Vector3();\n\n\t\treturn function center() {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t\tthis.boundingBox.getCenter( offset ).negate();\n\n\t\t\tthis.translate( offset.x, offset.y, offset.z );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tnormalize: function () {\n\n\t\tthis.computeBoundingSphere();\n\n\t\tvar center = this.boundingSphere.center;\n\t\tvar radius = this.boundingSphere.radius;\n\n\t\tvar s = radius === 0 ? 1 : 1.0 / radius;\n\n\t\tvar matrix = new Matrix4();\n\t\tmatrix.set(\n\t\t\ts, 0, 0, - s * center.x,\n\t\t\t0, s, 0, - s * center.y,\n\t\t\t0, 0, s, - s * center.z,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\tthis.applyMatrix( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\tvar cb = new Vector3(), ab = new Vector3();\n\n\t\tfor ( var f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tvar face = this.faces[ f ];\n\n\t\t\tvar vA = this.vertices[ face.a ];\n\t\t\tvar vB = this.vertices[ face.b ];\n\t\t\tvar vC = this.vertices[ face.c ];\n\n\t\t\tcb.subVectors( vC, vB );\n\t\t\tab.subVectors( vA, vB );\n\t\t\tcb.cross( ab );\n\n\t\t\tcb.normalize();\n\n\t\t\tface.normal.copy( cb );\n\n\t\t}\n\n\t},\n\n\tcomputeVertexNormals: function ( areaWeighted ) {\n\n\t\tif ( areaWeighted === undefined ) areaWeighted = true;\n\n\t\tvar v, vl, f, fl, face, vertices;\n\n\t\tvertices = new Array( this.vertices.length );\n\n\t\tfor ( v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ] = new Vector3();\n\n\t\t}\n\n\t\tif ( areaWeighted ) {\n\n\t\t\t// vertex normals weighted by triangle areas\n\t\t\t// http://www.iquilezles.org/www/articles/normals/normals.htm\n\n\t\t\tvar vA, vB, vC;\n\t\t\tvar cb = new Vector3(), ab = new Vector3();\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tvA = this.vertices[ face.a ];\n\t\t\t\tvB = this.vertices[ face.b ];\n\t\t\t\tvC = this.vertices[ face.c ];\n\n\t\t\t\tcb.subVectors( vC, vB );\n\t\t\t\tab.subVectors( vA, vB );\n\t\t\t\tcb.cross( ab );\n\n\t\t\t\tvertices[ face.a ].add( cb );\n\t\t\t\tvertices[ face.b ].add( cb );\n\t\t\t\tvertices[ face.c ].add( cb );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.computeFaceNormals();\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tvertices[ face.a ].add( face.normal );\n\t\t\t\tvertices[ face.b ].add( face.normal );\n\t\t\t\tvertices[ face.c ].add( face.normal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ].normalize();\n\n\t\t}\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( vertices[ face.a ] );\n\t\t\t\tvertexNormals[ 1 ].copy( vertices[ face.b ] );\n\t\t\t\tvertexNormals[ 2 ].copy( vertices[ face.c ] );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = vertices[ face.a ].clone();\n\t\t\t\tvertexNormals[ 1 ] = vertices[ face.b ].clone();\n\t\t\t\tvertexNormals[ 2 ] = vertices[ face.c ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeFlatVertexNormals: function () {\n\n\t\tvar f, fl, face;\n\n\t\tthis.computeFaceNormals();\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 1 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 2 ].copy( face.normal );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 1 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 2 ] = face.normal.clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeMorphNormals: function () {\n\n\t\tvar i, il, f, fl, face;\n\n\t\t// save original normals\n\t\t// - create temp variables on first access\n\t\t// otherwise just copy (for faster repeated calls)\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tif ( ! face.__originalFaceNormal ) {\n\n\t\t\t\tface.__originalFaceNormal = face.normal.clone();\n\n\t\t\t} else {\n\n\t\t\t\tface.__originalFaceNormal.copy( face.normal );\n\n\t\t\t}\n\n\t\t\tif ( ! face.__originalVertexNormals ) face.__originalVertexNormals = [];\n\n\t\t\tfor ( i = 0, il = face.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\t\tif ( ! face.__originalVertexNormals[ i ] ) {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone();\n\n\t\t\t\t} else {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// use temp geometry to compute face and vertex normals for each morph\n\n\t\tvar tmpGeo = new Geometry();\n\t\ttmpGeo.faces = this.faces;\n\n\t\tfor ( i = 0, il = this.morphTargets.length; i < il; i ++ ) {\n\n\t\t\t// create on first access\n\n\t\t\tif ( ! this.morphNormals[ i ] ) {\n\n\t\t\t\tthis.morphNormals[ i ] = {};\n\t\t\t\tthis.morphNormals[ i ].faceNormals = [];\n\t\t\t\tthis.morphNormals[ i ].vertexNormals = [];\n\n\t\t\t\tvar dstNormalsFace = this.morphNormals[ i ].faceNormals;\n\t\t\t\tvar dstNormalsVertex = this.morphNormals[ i ].vertexNormals;\n\n\t\t\t\tvar faceNormal, vertexNormals;\n\n\t\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tfaceNormal = new Vector3();\n\t\t\t\t\tvertexNormals = { a: new Vector3(), b: new Vector3(), c: new Vector3() };\n\n\t\t\t\t\tdstNormalsFace.push( faceNormal );\n\t\t\t\t\tdstNormalsVertex.push( vertexNormals );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar morphNormals = this.morphNormals[ i ];\n\n\t\t\t// set vertices to morph target\n\n\t\t\ttmpGeo.vertices = this.morphTargets[ i ].vertices;\n\n\t\t\t// compute morph normals\n\n\t\t\ttmpGeo.computeFaceNormals();\n\t\t\ttmpGeo.computeVertexNormals();\n\n\t\t\t// store morph normals\n\n\t\t\tvar faceNormal, vertexNormals;\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tfaceNormal = morphNormals.faceNormals[ f ];\n\t\t\t\tvertexNormals = morphNormals.vertexNormals[ f ];\n\n\t\t\t\tfaceNormal.copy( face.normal );\n\n\t\t\t\tvertexNormals.a.copy( face.vertexNormals[ 0 ] );\n\t\t\t\tvertexNormals.b.copy( face.vertexNormals[ 1 ] );\n\t\t\t\tvertexNormals.c.copy( face.vertexNormals[ 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// restore original normals\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tface.normal = face.__originalFaceNormal;\n\t\t\tface.vertexNormals = face.__originalVertexNormals;\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.setFromPoints( this.vertices );\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.setFromPoints( this.vertices );\n\n\t},\n\n\tmerge: function ( geometry, matrix, materialIndexOffset ) {\n\n\t\tif ( ! ( geometry && geometry.isGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar normalMatrix,\n\t\t\tvertexOffset = this.vertices.length,\n\t\t\tvertices1 = this.vertices,\n\t\t\tvertices2 = geometry.vertices,\n\t\t\tfaces1 = this.faces,\n\t\t\tfaces2 = geometry.faces,\n\t\t\tcolors1 = this.colors,\n\t\t\tcolors2 = geometry.colors;\n\n\t\tif ( materialIndexOffset === undefined ) materialIndexOffset = 0;\n\n\t\tif ( matrix !== undefined ) {\n\n\t\t\tnormalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t}\n\n\t\t// vertices\n\n\t\tfor ( var i = 0, il = vertices2.length; i < il; i ++ ) {\n\n\t\t\tvar vertex = vertices2[ i ];\n\n\t\t\tvar vertexCopy = vertex.clone();\n\n\t\t\tif ( matrix !== undefined ) vertexCopy.applyMatrix4( matrix );\n\n\t\t\tvertices1.push( vertexCopy );\n\n\t\t}\n\n\t\t// colors\n\n\t\tfor ( var i = 0, il = colors2.length; i < il; i ++ ) {\n\n\t\t\tcolors1.push( colors2[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tfor ( i = 0, il = faces2.length; i < il; i ++ ) {\n\n\t\t\tvar face = faces2[ i ], faceCopy, normal, color,\n\t\t\t\tfaceVertexNormals = face.vertexNormals,\n\t\t\t\tfaceVertexColors = face.vertexColors;\n\n\t\t\tfaceCopy = new Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset );\n\t\t\tfaceCopy.normal.copy( face.normal );\n\n\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\tfaceCopy.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tnormal = faceVertexNormals[ j ].clone();\n\n\t\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\t\tnormal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\t}\n\n\t\t\t\tfaceCopy.vertexNormals.push( normal );\n\n\t\t\t}\n\n\t\t\tfaceCopy.color.copy( face.color );\n\n\t\t\tfor ( var j = 0, jl = faceVertexColors.length; j < jl; j ++ ) {\n\n\t\t\t\tcolor = faceVertexColors[ j ];\n\t\t\t\tfaceCopy.vertexColors.push( color.clone() );\n\n\t\t\t}\n\n\t\t\tfaceCopy.materialIndex = face.materialIndex + materialIndexOffset;\n\n\t\t\tfaces1.push( faceCopy );\n\n\t\t}\n\n\t\t// uvs\n\n\t\tfor ( var i = 0, il = geometry.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tvar faceVertexUvs2 = geometry.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) this.faceVertexUvs[ i ] = [];\n\n\t\t\tfor ( var j = 0, jl = faceVertexUvs2.length; j < jl; j ++ ) {\n\n\t\t\t\tvar uvs2 = faceVertexUvs2[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( var k = 0, kl = uvs2.length; k < kl; k ++ ) {\n\n\t\t\t\t\tuvsCopy.push( uvs2[ k ].clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tmergeMesh: function ( mesh ) {\n\n\t\tif ( ! ( mesh && mesh.isMesh ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( mesh.matrixAutoUpdate ) mesh.updateMatrix();\n\n\t\tthis.merge( mesh.geometry, mesh.matrix );\n\n\t},\n\n\t/*\n\t * Checks for duplicate vertices with hashmap.\n\t * Duplicated vertices are removed\n\t * and faces' vertices are updated.\n\t */\n\n\tmergeVertices: function () {\n\n\t\tvar verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n\t\tvar unique = [], changes = [];\n\n\t\tvar v, key;\n\t\tvar precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n\t\tvar precision = Math.pow( 10, precisionPoints );\n\t\tvar i, il, face;\n\t\tvar indices, j, jl;\n\n\t\tfor ( i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tv = this.vertices[ i ];\n\t\t\tkey = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision );\n\n\t\t\tif ( verticesMap[ key ] === undefined ) {\n\n\t\t\t\tverticesMap[ key ] = i;\n\t\t\t\tunique.push( this.vertices[ i ] );\n\t\t\t\tchanges[ i ] = unique.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\t//console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]);\n\t\t\t\tchanges[ i ] = changes[ verticesMap[ key ] ];\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// if faces are completely degenerate after merging vertices, we\n\t\t// have to remove them from the geometry.\n\t\tvar faceIndicesToRemove = [];\n\n\t\tfor ( i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tface = this.faces[ i ];\n\n\t\t\tface.a = changes[ face.a ];\n\t\t\tface.b = changes[ face.b ];\n\t\t\tface.c = changes[ face.c ];\n\n\t\t\tindices = [ face.a, face.b, face.c ];\n\n\t\t\t// if any duplicate vertices are found in a Face3\n\t\t\t// we have to remove the face as nothing can be saved\n\t\t\tfor ( var n = 0; n < 3; n ++ ) {\n\n\t\t\t\tif ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) {\n\n\t\t\t\t\tfaceIndicesToRemove.push( i );\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( i = faceIndicesToRemove.length - 1; i >= 0; i -- ) {\n\n\t\t\tvar idx = faceIndicesToRemove[ i ];\n\n\t\t\tthis.faces.splice( idx, 1 );\n\n\t\t\tfor ( j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tthis.faceVertexUvs[ j ].splice( idx, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Use unique set of vertices\n\n\t\tvar diff = this.vertices.length - unique.length;\n\t\tthis.vertices = unique;\n\t\treturn diff;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.vertices = [];\n\n\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tvar point = points[ i ];\n\t\t\tthis.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsortFacesByMaterialIndex: function () {\n\n\t\tvar faces = this.faces;\n\t\tvar length = faces.length;\n\n\t\t// tag faces\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tfaces[ i ]._id = i;\n\n\t\t}\n\n\t\t// sort faces\n\n\t\tfunction materialIndexSort( a, b ) {\n\n\t\t\treturn a.materialIndex - b.materialIndex;\n\n\t\t}\n\n\t\tfaces.sort( materialIndexSort );\n\n\t\t// sort uvs\n\n\t\tvar uvs1 = this.faceVertexUvs[ 0 ];\n\t\tvar uvs2 = this.faceVertexUvs[ 1 ];\n\n\t\tvar newUvs1, newUvs2;\n\n\t\tif ( uvs1 && uvs1.length === length ) newUvs1 = [];\n\t\tif ( uvs2 && uvs2.length === length ) newUvs2 = [];\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tvar id = faces[ i ]._id;\n\n\t\t\tif ( newUvs1 ) newUvs1.push( uvs1[ id ] );\n\t\t\tif ( newUvs2 ) newUvs2.push( uvs2[ id ] );\n\n\t\t}\n\n\t\tif ( newUvs1 ) this.faceVertexUvs[ 0 ] = newUvs1;\n\t\tif ( newUvs2 ) this.faceVertexUvs[ 1 ] = newUvs2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Geometry',\n\t\t\t\tgenerator: 'Geometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Geometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tvar parameters = this.parameters;\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tvar vertices = [];\n\n\t\tfor ( var i = 0; i < this.vertices.length; i ++ ) {\n\n\t\t\tvar vertex = this.vertices[ i ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tvar faces = [];\n\t\tvar normals = [];\n\t\tvar normalsHash = {};\n\t\tvar colors = [];\n\t\tvar colorsHash = {};\n\t\tvar uvs = [];\n\t\tvar uvsHash = {};\n\n\t\tfor ( var i = 0; i < this.faces.length; i ++ ) {\n\n\t\t\tvar face = this.faces[ i ];\n\n\t\t\tvar hasMaterial = true;\n\t\t\tvar hasFaceUv = false; // deprecated\n\t\t\tvar hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined;\n\t\t\tvar hasFaceNormal = face.normal.length() > 0;\n\t\t\tvar hasFaceVertexNormal = face.vertexNormals.length > 0;\n\t\t\tvar hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1;\n\t\t\tvar hasFaceVertexColor = face.vertexColors.length > 0;\n\n\t\t\tvar faceType = 0;\n\n\t\t\tfaceType = setBit( faceType, 0, 0 ); // isQuad\n\t\t\tfaceType = setBit( faceType, 1, hasMaterial );\n\t\t\tfaceType = setBit( faceType, 2, hasFaceUv );\n\t\t\tfaceType = setBit( faceType, 3, hasFaceVertexUv );\n\t\t\tfaceType = setBit( faceType, 4, hasFaceNormal );\n\t\t\tfaceType = setBit( faceType, 5, hasFaceVertexNormal );\n\t\t\tfaceType = setBit( faceType, 6, hasFaceColor );\n\t\t\tfaceType = setBit( faceType, 7, hasFaceVertexColor );\n\n\t\t\tfaces.push( faceType );\n\t\t\tfaces.push( face.a, face.b, face.c );\n\t\t\tfaces.push( face.materialIndex );\n\n\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\tvar faceVertexUvs = this.faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 0 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 1 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\tfaces.push( getNormalIndex( face.normal ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 0 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 1 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\tfaces.push( getColorIndex( face.color ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\tvar vertexColors = face.vertexColors;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetColorIndex( vertexColors[ 0 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 1 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction setBit( value, position, enabled ) {\n\n\t\t\treturn enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) );\n\n\t\t}\n\n\t\tfunction getNormalIndex( normal ) {\n\n\t\t\tvar hash = normal.x.toString() + normal.y.toString() + normal.z.toString();\n\n\t\t\tif ( normalsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn normalsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tnormalsHash[ hash ] = normals.length / 3;\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\treturn normalsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getColorIndex( color ) {\n\n\t\t\tvar hash = color.r.toString() + color.g.toString() + color.b.toString();\n\n\t\t\tif ( colorsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn colorsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tcolorsHash[ hash ] = colors.length;\n\t\t\tcolors.push( color.getHex() );\n\n\t\t\treturn colorsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getUvIndex( uv ) {\n\n\t\t\tvar hash = uv.x.toString() + uv.y.toString();\n\n\t\t\tif ( uvsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn uvsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tuvsHash[ hash ] = uvs.length / 2;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\treturn uvsHash[ hash ];\n\n\t\t}\n\n\t\tdata.data = {};\n\n\t\tdata.data.vertices = vertices;\n\t\tdata.data.normals = normals;\n\t\tif ( colors.length > 0 ) data.data.colors = colors;\n\t\tif ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility\n\t\tdata.data.faces = faces;\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t var parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t var values = [];\n\n\t\t for ( var key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t var geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new Geometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tvar i, il, j, jl, k, kl;\n\n\t\t// reset\n\n\t\tthis.vertices = [];\n\t\tthis.colors = [];\n\t\tthis.faces = [];\n\t\tthis.faceVertexUvs = [[]];\n\t\tthis.morphTargets = [];\n\t\tthis.morphNormals = [];\n\t\tthis.skinWeights = [];\n\t\tthis.skinIndices = [];\n\t\tthis.lineDistances = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// vertices\n\n\t\tvar vertices = source.vertices;\n\n\t\tfor ( i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\tthis.vertices.push( vertices[ i ].clone() );\n\n\t\t}\n\n\t\t// colors\n\n\t\tvar colors = source.colors;\n\n\t\tfor ( i = 0, il = colors.length; i < il; i ++ ) {\n\n\t\t\tthis.colors.push( colors[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tvar faces = source.faces;\n\n\t\tfor ( i = 0, il = faces.length; i < il; i ++ ) {\n\n\t\t\tthis.faces.push( faces[ i ].clone() );\n\n\t\t}\n\n\t\t// face vertex uvs\n\n\t\tfor ( i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tvar faceVertexUvs = source.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) {\n\n\t\t\t\tthis.faceVertexUvs[ i ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tvar uvs = faceVertexUvs[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( k = 0, kl = uvs.length; k < kl; k ++ ) {\n\n\t\t\t\t\tvar uv = uvs[ k ];\n\n\t\t\t\t\tuvsCopy.push( uv.clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tvar morphTargets = source.morphTargets;\n\n\t\tfor ( i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tvar morphTarget = {};\n\t\t\tmorphTarget.name = morphTargets[ i ].name;\n\n\t\t\t// vertices\n\n\t\t\tif ( morphTargets[ i ].vertices !== undefined ) {\n\n\t\t\t\tmorphTarget.vertices = [];\n\n\t\t\t\tfor ( j = 0, jl = morphTargets[ i ].vertices.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.vertices.push( morphTargets[ i ].vertices[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// normals\n\n\t\t\tif ( morphTargets[ i ].normals !== undefined ) {\n\n\t\t\t\tmorphTarget.normals = [];\n\n\t\t\t\tfor ( j = 0, jl = morphTargets[ i ].normals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.normals.push( morphTargets[ i ].normals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.push( morphTarget );\n\n\t\t}\n\n\t\t// morph normals\n\n\t\tvar morphNormals = source.morphNormals;\n\n\t\tfor ( i = 0, il = morphNormals.length; i < il; i ++ ) {\n\n\t\t\tvar morphNormal = {};\n\n\t\t\t// vertex normals\n\n\t\t\tif ( morphNormals[ i ].vertexNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.vertexNormals = [];\n\n\t\t\t\tfor ( j = 0, jl = morphNormals[ i ].vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar srcVertexNormal = morphNormals[ i ].vertexNormals[ j ];\n\t\t\t\t\tvar destVertexNormal = {};\n\n\t\t\t\t\tdestVertexNormal.a = srcVertexNormal.a.clone();\n\t\t\t\t\tdestVertexNormal.b = srcVertexNormal.b.clone();\n\t\t\t\t\tdestVertexNormal.c = srcVertexNormal.c.clone();\n\n\t\t\t\t\tmorphNormal.vertexNormals.push( destVertexNormal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// face normals\n\n\t\t\tif ( morphNormals[ i ].faceNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.faceNormals = [];\n\n\t\t\t\tfor ( j = 0, jl = morphNormals[ i ].faceNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphNormal.faceNormals.push( morphNormals[ i ].faceNormals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphNormals.push( morphNormal );\n\n\t\t}\n\n\t\t// skin weights\n\n\t\tvar skinWeights = source.skinWeights;\n\n\t\tfor ( i = 0, il = skinWeights.length; i < il; i ++ ) {\n\n\t\t\tthis.skinWeights.push( skinWeights[ i ].clone() );\n\n\t\t}\n\n\t\t// skin indices\n\n\t\tvar skinIndices = source.skinIndices;\n\n\t\tfor ( i = 0, il = skinIndices.length; i < il; i ++ ) {\n\n\t\t\tthis.skinIndices.push( skinIndices[ i ].clone() );\n\n\t\t}\n\n\t\t// line distances\n\n\t\tvar lineDistances = source.lineDistances;\n\n\t\tfor ( i = 0, il = lineDistances.length; i < il; i ++ ) {\n\n\t\t\tthis.lineDistances.push( lineDistances[ i ] );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tvar boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tvar boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// update flags\n\n\t\tthis.elementsNeedUpdate = source.elementsNeedUpdate;\n\t\tthis.verticesNeedUpdate = source.verticesNeedUpdate;\n\t\tthis.uvsNeedUpdate = source.uvsNeedUpdate;\n\t\tthis.normalsNeedUpdate = source.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = source.colorsNeedUpdate;\n\t\tthis.lineDistancesNeedUpdate = source.lineDistancesNeedUpdate;\n\t\tthis.groupsNeedUpdate = source.groupsNeedUpdate;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// BoxGeometry\n\nfunction BoxGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'BoxGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\tdepth: depth,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tdepthSegments: depthSegments\n\t};\n\n\tthis.fromBufferGeometry( new BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) );\n\tthis.mergeVertices();\n\n}\n\nBoxGeometry.prototype = Object.create( Geometry.prototype );\nBoxGeometry.prototype.constructor = BoxGeometry;\n\n// BoxBufferGeometry\n\nfunction BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'BoxBufferGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\tdepth: depth,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tdepthSegments: depthSegments\n\t};\n\n\tvar scope = this;\n\n\twidth = width || 1;\n\theight = height || 1;\n\tdepth = depth || 1;\n\n\t// segments\n\n\twidthSegments = Math.floor( widthSegments ) || 1;\n\theightSegments = Math.floor( heightSegments ) || 1;\n\tdepthSegments = Math.floor( depthSegments ) || 1;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar numberOfVertices = 0;\n\tvar groupStart = 0;\n\n\t// build each side of the box geometry\n\n\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\tvar segmentWidth = width / gridX;\n\t\tvar segmentHeight = height / gridY;\n\n\t\tvar widthHalf = width / 2;\n\t\tvar heightHalf = height / 2;\n\t\tvar depthHalf = depth / 2;\n\n\t\tvar gridX1 = gridX + 1;\n\t\tvar gridY1 = gridY + 1;\n\n\t\tvar vertexCounter = 0;\n\t\tvar groupCount = 0;\n\n\t\tvar ix, iy;\n\n\t\tvar vector = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tvar y = iy * segmentHeight - heightHalf;\n\n\t\t\tfor ( ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tvar x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t// set values to correct vector component\n\n\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t// set values to correct vector component\n\n\t\t\t\tvector[ u ] = 0;\n\t\t\t\tvector[ v ] = 0;\n\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t// uvs\n\n\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t// counters\n\n\t\t\t\tvertexCounter += 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// indices\n\n\t\t// 1. you need three indices to draw a single face\n\t\t// 2. a single segment consists of two faces\n\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\tfor ( iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\tvar a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\tvar b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\tvar c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tvar d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t// increase counter\n\n\t\t\t\tgroupCount += 6;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t\t// update total number of vertices\n\n\t\tnumberOfVertices += vertexCounter;\n\n\t}\n\n}\n\nBoxBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nBoxBufferGeometry.prototype.constructor = BoxBufferGeometry;\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms( src ) {\n\n\tvar dst = {};\n\n\tfor ( var u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( var p in src[ u ] ) {\n\n\t\t\tvar property = src[ u ][ p ];\n\n\t\t\tif ( property && ( property.isColor ||\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\n\t\t\t\tproperty.isTexture ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t} else if ( Array.isArray( property ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.slice();\n\n\t\t\t} else {\n\n\t\t\t\tdst[ u ][ p ] = property;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction mergeUniforms( uniforms ) {\n\n\tvar merged = {};\n\n\tfor ( var u = 0; u < uniforms.length; u ++ ) {\n\n\t\tvar tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( var p in tmp ) {\n\n\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t}\n\n\t}\n\n\treturn merged;\n\n}\n\n// Legacy\n\nvar UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * defines: { \"label\" : \"value\" },\n * uniforms: { \"parameter1\": { value: 1.0 }, \"parameter2\": { value2: 2 } },\n *\n * fragmentShader: ,\n * vertexShader: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * lights: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction ShaderMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShaderMaterial';\n\n\tthis.defines = {};\n\tthis.uniforms = {};\n\n\tthis.vertexShader = default_vertex;\n\tthis.fragmentShader = default_fragment;\n\n\tthis.linewidth = 1;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false; // set to use scene fog\n\tthis.lights = false; // set to use scene lights\n\tthis.clipping = false; // set to use user-defined clipping planes\n\n\tthis.skinning = false; // set to use skinning attribute streams\n\tthis.morphTargets = false; // set to use morph targets\n\tthis.morphNormals = false; // set to use morph normals\n\n\tthis.extensions = {\n\t\tderivatives: false, // set to use derivatives\n\t\tfragDepth: false, // set to use fragment depth values\n\t\tdrawBuffers: false, // set to use draw buffers\n\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t};\n\n\t// When rendered geometry doesn't include these attributes but the material does,\n\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\tthis.defaultAttributeValues = {\n\t\t'color': [ 1, 1, 1 ],\n\t\t'uv': [ 0, 0 ],\n\t\t'uv2': [ 0, 0 ]\n\t};\n\n\tthis.index0AttributeName = undefined;\n\tthis.uniformsNeedUpdate = false;\n\n\tif ( parameters !== undefined ) {\n\n\t\tif ( parameters.attributes !== undefined ) {\n\n\t\t\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n}\n\nShaderMaterial.prototype = Object.create( Material.prototype );\nShaderMaterial.prototype.constructor = ShaderMaterial;\n\nShaderMaterial.prototype.isShaderMaterial = true;\n\nShaderMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.fragmentShader = source.fragmentShader;\n\tthis.vertexShader = source.vertexShader;\n\n\tthis.uniforms = cloneUniforms( source.uniforms );\n\n\tthis.defines = Object.assign( {}, source.defines );\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.lights = source.lights;\n\tthis.clipping = source.clipping;\n\n\tthis.skinning = source.skinning;\n\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.extensions = source.extensions;\n\n\treturn this;\n\n};\n\nShaderMaterial.prototype.toJSON = function ( meta ) {\n\n\tvar data = Material.prototype.toJSON.call( this, meta );\n\n\tdata.uniforms = {};\n\n\tfor ( var name in this.uniforms ) {\n\n\t\tvar uniform = this.uniforms[ name ];\n\t\tvar value = uniform.value;\n\n\t\tif ( value && value.isTexture ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 't',\n\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t};\n\n\t\t} else if ( value && value.isColor ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'c',\n\t\t\t\tvalue: value.getHex()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v2',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v3',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v4',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'm3',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'm4',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\tvalue: value\n\t\t\t};\n\n\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t}\n\n\t}\n\n\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\tdata.vertexShader = this.vertexShader;\n\tdata.fragmentShader = this.fragmentShader;\n\n\tvar extensions = {};\n\n\tfor ( var key in this.extensions ) {\n\n\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t}\n\n\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\treturn data;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction Camera() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Camera';\n\n\tthis.matrixWorldInverse = new Matrix4();\n\n\tthis.projectionMatrix = new Matrix4();\n\tthis.projectionMatrixInverse = new Matrix4();\n\n}\n\nCamera.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Camera,\n\n\tisCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\treturn this;\n\n\t},\n\n\tgetWorldDirection: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Camera: .getWorldDirection() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tvar e = this.matrixWorld.elements;\n\n\t\treturn target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize();\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tthis.matrixWorldInverse.getInverse( this.matrixWorld );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author greggman / http://games.greggman.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author tschw\n */\n\nfunction PerspectiveCamera( fov, aspect, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'PerspectiveCamera';\n\n\tthis.fov = fov !== undefined ? fov : 50;\n\tthis.zoom = 1;\n\n\tthis.near = near !== undefined ? near : 0.1;\n\tthis.far = far !== undefined ? far : 2000;\n\tthis.focus = 10;\n\n\tthis.aspect = aspect !== undefined ? aspect : 1;\n\tthis.view = null;\n\n\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\tthis.updateProjectionMatrix();\n\n}\n\nPerspectiveCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: PerspectiveCamera,\n\n\tisPerspectiveCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t},\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength: function ( focalLength ) {\n\n\t\t// see http://www.bobatkins.com/photography/technical/field_of_view.html\n\t\tvar vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = _Math.RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength: function () {\n\n\t\tvar vExtentSlope = Math.tan( _Math.DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t},\n\n\tgetEffectiveFOV: function () {\n\n\t\treturn _Math.RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( _Math.DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t},\n\n\tgetFilmWidth: function () {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t},\n\n\tgetFilmHeight: function () {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t},\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t * var w = 1920;\n\t * var h = 1080;\n\t * var fullWidth = w * 3;\n\t * var fullHeight = h * 2;\n\t *\n\t * --A--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * --B--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * --C--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * --D--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * --E--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * --F--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function () {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tvar near = this.near,\n\t\t\ttop = near * Math.tan( _Math.DEG2RAD * 0.5 * this.fov ) / this.zoom,\n\t\t\theight = 2 * top,\n\t\t\twidth = this.aspect * height,\n\t\t\tleft = - 0.5 * width,\n\t\t\tview = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tvar fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tvar skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far );\n\n\t\tthis.projectionMatrixInverse.getInverse( this.projectionMatrix );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * Camera for rendering cube maps\n *\t- renders scene into axis-aligned cube\n *\n * @author alteredq / http://alteredqualia.com/\n */\n\nvar fov = 90, aspect = 1;\n\nfunction CubeCamera( near, far, cubeResolution, options ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'CubeCamera';\n\n\tvar cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPX.up.set( 0, - 1, 0 );\n\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\tthis.add( cameraPX );\n\n\tvar cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNX.up.set( 0, - 1, 0 );\n\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\tthis.add( cameraNX );\n\n\tvar cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPY.up.set( 0, 0, 1 );\n\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\tthis.add( cameraPY );\n\n\tvar cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNY.up.set( 0, 0, - 1 );\n\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\tthis.add( cameraNY );\n\n\tvar cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPZ.up.set( 0, - 1, 0 );\n\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\tthis.add( cameraPZ );\n\n\tvar cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNZ.up.set( 0, - 1, 0 );\n\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\tthis.add( cameraNZ );\n\n\toptions = options || { format: RGBFormat, magFilter: LinearFilter, minFilter: LinearFilter };\n\n\tthis.renderTarget = new WebGLRenderTargetCube( cubeResolution, cubeResolution, options );\n\tthis.renderTarget.texture.name = \"CubeCamera\";\n\n\tthis.update = function ( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tvar currentRenderTarget = renderer.getRenderTarget();\n\n\t\tvar renderTarget = this.renderTarget;\n\t\tvar generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0 );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1 );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2 );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3 );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4 );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5 );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t};\n\n\tthis.clear = function ( renderer, color, depth, stencil ) {\n\n\t\tvar currentRenderTarget = renderer.getRenderTarget();\n\n\t\tvar renderTarget = this.renderTarget;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( renderTarget, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t};\n\n}\n\nCubeCamera.prototype = Object.create( Object3D.prototype );\nCubeCamera.prototype.constructor = CubeCamera;\n\n/**\n * @author alteredq / http://alteredqualia.com\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction WebGLRenderTargetCube( width, height, options ) {\n\n\tWebGLRenderTarget.call( this, width, height, options );\n\n}\n\nWebGLRenderTargetCube.prototype = Object.create( WebGLRenderTarget.prototype );\nWebGLRenderTargetCube.prototype.constructor = WebGLRenderTargetCube;\n\nWebGLRenderTargetCube.prototype.isWebGLRenderTargetCube = true;\n\nWebGLRenderTargetCube.prototype.fromEquirectangularTexture = function ( renderer, texture ) {\n\n\tthis.texture.type = texture.type;\n\tthis.texture.format = texture.format;\n\tthis.texture.encoding = texture.encoding;\n\n\tvar scene = new Scene();\n\n\tvar shader = {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: [\n\n\t\t\t\"varying vec3 vWorldDirection;\",\n\n\t\t\t\"vec3 transformDirection( in vec3 dir, in mat4 matrix ) {\",\n\n\t\t\t\"\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\",\n\n\t\t\t\"}\",\n\n\t\t\t\"void main() {\",\n\n\t\t\t\"\tvWorldDirection = transformDirection( position, modelMatrix );\",\n\n\t\t\t\"\t#include \",\n\t\t\t\"\t#include \",\n\n\t\t\t\"}\"\n\n\t\t].join( '\\n' ),\n\n\t\tfragmentShader: [\n\n\t\t\t\"uniform sampler2D tEquirect;\",\n\n\t\t\t\"varying vec3 vWorldDirection;\",\n\n\t\t\t\"#define RECIPROCAL_PI 0.31830988618\",\n\t\t\t\"#define RECIPROCAL_PI2 0.15915494\",\n\n\t\t\t\"void main() {\",\n\n\t\t\t\"\tvec3 direction = normalize( vWorldDirection );\",\n\n\t\t\t\"\tvec2 sampleUV;\",\n\n\t\t\t\"\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\",\n\n\t\t\t\"\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\",\n\n\t\t\t\"\tgl_FragColor = texture2D( tEquirect, sampleUV );\",\n\n\t\t\t\"}\"\n\n\t\t].join( '\\n' ),\n\t};\n\n\tvar material = new ShaderMaterial( {\n\n\t\ttype: 'CubemapFromEquirect',\n\n\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\tvertexShader: shader.vertexShader,\n\t\tfragmentShader: shader.fragmentShader,\n\t\tside: BackSide,\n\t\tblending: NoBlending\n\n\t} );\n\n\tmaterial.uniforms.tEquirect.value = texture;\n\n\tvar mesh = new Mesh( new BoxBufferGeometry( 5, 5, 5 ), material );\n\n\tscene.add( mesh );\n\n\tvar camera = new CubeCamera( 1, 10, 1 );\n\n\tcamera.renderTarget = this;\n\tcamera.renderTarget.texture.name = 'CubeCameraTexture';\n\n\tcamera.update( renderer, scene );\n\n\tmesh.geometry.dispose();\n\tmesh.material.dispose();\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { data: data, width: width, height: height };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\tthis.unpackAlignment = 1;\n\n}\n\nDataTexture.prototype = Object.create( Texture.prototype );\nDataTexture.prototype.constructor = DataTexture;\n\nDataTexture.prototype.isDataTexture = true;\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Plane( normal, constant ) {\n\n\t// normal is assumed to be normalized\n\n\tthis.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 );\n\tthis.constant = ( constant !== undefined ) ? constant : 0;\n\n}\n\nObject.assign( Plane.prototype, {\n\n\tisPlane: true,\n\n\tset: function ( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponents: function ( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromNormalAndCoplanarPoint: function ( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCoplanarPoints: function () {\n\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\n\t\treturn function setFromCoplanarPoints( a, b, c ) {\n\n\t\t\tvar normal = v1.subVectors( c, b ).cross( v2.subVectors( a, b ) ).normalize();\n\n\t\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t},\n\n\tnormalize: function () {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tvar inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t},\n\n\tdistanceToSphere: function ( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t},\n\n\tprojectPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .projectPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point );\n\n\t},\n\n\tintersectLine: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function intersectLine( line, target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Plane: .intersectLine() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\n\n\t\t\tvar direction = line.delta( v1 );\n\n\t\t\tvar denominator = this.normal.dot( direction );\n\n\t\t\tif ( denominator === 0 ) {\n\n\t\t\t\t// line is coplanar, return origin\n\t\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\t\treturn target.copy( line.start );\n\n\t\t\t\t}\n\n\t\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\t\treturn undefined;\n\n\t\t\t}\n\n\t\t\tvar t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\t\treturn undefined;\n\n\t\t\t}\n\n\t\t\treturn target.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t\t};\n\n\t}(),\n\n\tintersectsLine: function ( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tvar startSign = this.distanceToPoint( line.start );\n\t\tvar endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t},\n\n\tcoplanarPoint: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .coplanarPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t},\n\n\tapplyMatrix4: function () {\n\n\t\tvar v1 = new Vector3();\n\t\tvar m1 = new Matrix3();\n\n\t\treturn function applyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\t\tvar normalMatrix = optionalNormalMatrix || m1.getNormalMatrix( matrix );\n\n\t\t\tvar referencePoint = this.coplanarPoint( v1 ).applyMatrix4( matrix );\n\n\t\t\tvar normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / http://clara.io\n */\n\nfunction Frustum( p0, p1, p2, p3, p4, p5 ) {\n\n\tthis.planes = [\n\n\t\t( p0 !== undefined ) ? p0 : new Plane(),\n\t\t( p1 !== undefined ) ? p1 : new Plane(),\n\t\t( p2 !== undefined ) ? p2 : new Plane(),\n\t\t( p3 !== undefined ) ? p3 : new Plane(),\n\t\t( p4 !== undefined ) ? p4 : new Plane(),\n\t\t( p5 !== undefined ) ? p5 : new Plane()\n\n\t];\n\n}\n\nObject.assign( Frustum.prototype, {\n\n\tset: function ( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tvar planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( frustum ) {\n\n\t\tvar planes = this.planes;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrix: function ( m ) {\n\n\t\tvar planes = this.planes;\n\t\tvar me = m.elements;\n\t\tvar me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tvar me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tvar me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tvar me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\tintersectsObject: function () {\n\n\t\tvar sphere = new Sphere();\n\n\t\treturn function intersectsObject( object ) {\n\n\t\t\tvar geometry = object.geometry;\n\n\t\t\tif ( geometry.boundingSphere === null )\n\t\t\t\tgeometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere )\n\t\t\t\t.applyMatrix4( object.matrixWorld );\n\n\t\t\treturn this.intersectsSphere( sphere );\n\n\t\t};\n\n\t}(),\n\n\tintersectsSprite: function () {\n\n\t\tvar sphere = new Sphere();\n\n\t\treturn function intersectsSprite( sprite ) {\n\n\t\t\tsphere.center.set( 0, 0, 0 );\n\t\t\tsphere.radius = 0.7071067811865476;\n\t\t\tsphere.applyMatrix4( sprite.matrixWorld );\n\n\t\t\treturn this.intersectsSphere( sphere );\n\n\t\t};\n\n\t}(),\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tvar planes = this.planes;\n\t\tvar center = sphere.center;\n\t\tvar negRadius = - sphere.radius;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tvar distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tintersectsBox: function () {\n\n\t\tvar p = new Vector3();\n\n\t\treturn function intersectsBox( box ) {\n\n\t\t\tvar planes = this.planes;\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\tvar plane = planes[ i ];\n\n\t\t\t\t// corner at max distance\n\n\t\t\t\tp.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t\tp.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t\tp.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\t\tif ( plane.distanceToPoint( p ) < 0 ) {\n\n\t\t\t\t\treturn false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t};\n\n\t}(),\n\n\tcontainsPoint: function ( point ) {\n\n\t\tvar planes = this.planes;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n} );\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar alphatest_fragment = \"#ifdef ALPHATEST\\n\\tif ( diffuseColor.a < ALPHATEST ) discard;\\n#endif\";\n\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_ENVMAP ) && defined( PHYSICAL )\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\\n\\t#endif\\n#endif\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\nvar bsdfs = \"vec2 integrateSpecularBRDF( const in float dotNV, const in float roughness ) {\\n\\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\\tvec4 r = roughness * c0 + c1;\\n\\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\\treturn vec2( -1.04, 1.04 ) * a004 + r.zw;\\n}\\nfloat punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\tif( cutoffDistance > 0.0 ) {\\n\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t}\\n\\treturn distanceFalloff;\\n#else\\n\\tif( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\\t\\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\\t}\\n\\treturn 1.0;\\n#endif\\n}\\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\\n\\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\\n\\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\\n}\\nvec3 F_Schlick_RoughnessDependent( const in vec3 F0, const in float dotNV, const in float roughness ) {\\n\\tfloat fresnel = exp2( ( -5.55473 * dotNV - 6.98316 ) * dotNV );\\n\\tvec3 Fr = max( vec3( 1.0 - roughness ), F0 ) - F0;\\n\\treturn Fr * fresnel + F0;\\n}\\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\treturn 1.0 / ( gl * gv );\\n}\\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\\n\\tfloat dotNL = saturate( dot( geometry.normal, incidentLight.direction ) );\\n\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\\n\\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, dotLH );\\n\\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\tfloat D = D_GGX( alpha, dotNH );\\n\\treturn F * ( G * D );\\n}\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\nvec3 BRDF_Specular_GGX_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\\n\\treturn specularColor * brdf.x + brdf.y;\\n}\\nvoid BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\tvec3 F = F_Schlick_RoughnessDependent( specularColor, dotNV, roughness );\\n\\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\\n\\tvec3 FssEss = F * brdf.x + brdf.y;\\n\\tfloat Ess = brdf.x + brdf.y;\\n\\tfloat Ems = 1.0 - Ess;\\n\\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\\tsingleScatter += FssEss;\\n\\tmultiScatter += Fms * Ems;\\n}\\nfloat G_BlinnPhong_Implicit( ) {\\n\\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\\n\\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\\n\\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, dotLH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n}\\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\\n\\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\\n}\\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\\n\\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\\n}\";\n\nvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\\tuniform sampler2D bumpMap;\\n\\tuniform float bumpScale;\\n\\tvec2 dHdxy_fwd() {\\n\\t\\tvec2 dSTdx = dFdx( vUv );\\n\\t\\tvec2 dSTdy = dFdy( vUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\\n\\t\\treturn vec2( dBx, dBy );\\n\\t}\\n\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\\n\\t\\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\\n\\t\\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\\n\\t\\tvec3 vN = surf_norm;\\n\\t\\tvec3 R1 = cross( vSigmaY, vN );\\n\\t\\tvec3 R2 = cross( vN, vSigmaX );\\n\\t\\tfloat fDet = dot( vSigmaX, R1 );\\n\\t\\tfDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\\t\\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\\t}\\n#endif\";\n\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\tplane = clippingPlanes[ i ];\\n\\t\\tif ( dot( vViewPosition, plane.xyz ) > plane.w ) discard;\\n\\t}\\n\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\tbool clipped = true;\\n\\t\\t#pragma unroll_loop\\n\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tclipped = ( dot( vViewPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t}\\n\\t\\tif ( clipped ) discard;\\n\\t#endif\\n#endif\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\t#if ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\\n\\t\\tvarying vec3 vViewPosition;\\n\\t#endif\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\";\n\nvar color_fragment = \"#ifdef USE_COLOR\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#ifdef USE_COLOR\\n\\tvColor.xyz = color.xyz;\\n#endif\";\n\nvar common = \"#define PI 3.14159265359\\n#define PI2 6.28318530718\\n#define PI_HALF 1.5707963267949\\n#define RECIPROCAL_PI 0.31830988618\\n#define RECIPROCAL_PI2 0.15915494\\n#define LOG2 1.442695\\n#define EPSILON 1e-6\\n#define saturate(a) clamp( a, 0.0, 1.0 )\\n#define whiteCompliment(a) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\\treturn fract(sin(sn) * c);\\n}\\nstruct IncidentLight {\\n\\tvec3 color;\\n\\tvec3 direction;\\n\\tbool visible;\\n};\\nstruct ReflectedLight {\\n\\tvec3 directDiffuse;\\n\\tvec3 directSpecular;\\n\\tvec3 indirectDiffuse;\\n\\tvec3 indirectSpecular;\\n};\\nstruct GeometricContext {\\n\\tvec3 position;\\n\\tvec3 normal;\\n\\tvec3 viewDir;\\n};\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\tfloat distance = dot( planeNormal, point - pointOnPlane );\\n\\treturn - distance * planeNormal + point;\\n}\\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\treturn sign( dot( point - pointOnPlane, planeNormal ) );\\n}\\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nfloat linearToRelativeLuminance( const in vec3 color ) {\\n\\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\\n\\treturn dot( weights, color.rgb );\\n}\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n#define cubeUV_textureSize (1024.0)\\nint getFaceFromDirection(vec3 direction) {\\n\\tvec3 absDirection = abs(direction);\\n\\tint face = -1;\\n\\tif( absDirection.x > absDirection.z ) {\\n\\t\\tif(absDirection.x > absDirection.y )\\n\\t\\t\\tface = direction.x > 0.0 ? 0 : 3;\\n\\t\\telse\\n\\t\\t\\tface = direction.y > 0.0 ? 1 : 4;\\n\\t}\\n\\telse {\\n\\t\\tif(absDirection.z > absDirection.y )\\n\\t\\t\\tface = direction.z > 0.0 ? 2 : 5;\\n\\t\\telse\\n\\t\\t\\tface = direction.y > 0.0 ? 1 : 4;\\n\\t}\\n\\treturn face;\\n}\\n#define cubeUV_maxLods1 (log2(cubeUV_textureSize*0.25) - 1.0)\\n#define cubeUV_rangeClamp (exp2((6.0 - 1.0) * 2.0))\\nvec2 MipLevelInfo( vec3 vec, float roughnessLevel, float roughness ) {\\n\\tfloat scale = exp2(cubeUV_maxLods1 - roughnessLevel);\\n\\tfloat dxRoughness = dFdx(roughness);\\n\\tfloat dyRoughness = dFdy(roughness);\\n\\tvec3 dx = dFdx( vec * scale * dxRoughness );\\n\\tvec3 dy = dFdy( vec * scale * dyRoughness );\\n\\tfloat d = max( dot( dx, dx ), dot( dy, dy ) );\\n\\td = clamp(d, 1.0, cubeUV_rangeClamp);\\n\\tfloat mipLevel = 0.5 * log2(d);\\n\\treturn vec2(floor(mipLevel), fract(mipLevel));\\n}\\n#define cubeUV_maxLods2 (log2(cubeUV_textureSize*0.25) - 2.0)\\n#define cubeUV_rcpTextureSize (1.0 / cubeUV_textureSize)\\nvec2 getCubeUV(vec3 direction, float roughnessLevel, float mipLevel) {\\n\\tmipLevel = roughnessLevel > cubeUV_maxLods2 - 3.0 ? 0.0 : mipLevel;\\n\\tfloat a = 16.0 * cubeUV_rcpTextureSize;\\n\\tvec2 exp2_packed = exp2( vec2( roughnessLevel, mipLevel ) );\\n\\tvec2 rcp_exp2_packed = vec2( 1.0 ) / exp2_packed;\\n\\tfloat powScale = exp2_packed.x * exp2_packed.y;\\n\\tfloat scale = rcp_exp2_packed.x * rcp_exp2_packed.y * 0.25;\\n\\tfloat mipOffset = 0.75*(1.0 - rcp_exp2_packed.y) * rcp_exp2_packed.x;\\n\\tbool bRes = mipLevel == 0.0;\\n\\tscale = bRes && (scale < a) ? a : scale;\\n\\tvec3 r;\\n\\tvec2 offset;\\n\\tint face = getFaceFromDirection(direction);\\n\\tfloat rcpPowScale = 1.0 / powScale;\\n\\tif( face == 0) {\\n\\t\\tr = vec3(direction.x, -direction.z, direction.y);\\n\\t\\toffset = vec2(0.0+mipOffset,0.75 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\\n\\t}\\n\\telse if( face == 1) {\\n\\t\\tr = vec3(direction.y, direction.x, direction.z);\\n\\t\\toffset = vec2(scale+mipOffset, 0.75 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\\n\\t}\\n\\telse if( face == 2) {\\n\\t\\tr = vec3(direction.z, direction.x, direction.y);\\n\\t\\toffset = vec2(2.0*scale+mipOffset, 0.75 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\\n\\t}\\n\\telse if( face == 3) {\\n\\t\\tr = vec3(direction.x, direction.z, direction.y);\\n\\t\\toffset = vec2(0.0+mipOffset,0.5 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\\n\\t}\\n\\telse if( face == 4) {\\n\\t\\tr = vec3(direction.y, direction.x, -direction.z);\\n\\t\\toffset = vec2(scale+mipOffset, 0.5 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\\n\\t}\\n\\telse {\\n\\t\\tr = vec3(direction.z, -direction.x, direction.y);\\n\\t\\toffset = vec2(2.0*scale+mipOffset, 0.5 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\\n\\t}\\n\\tr = normalize(r);\\n\\tfloat texelOffset = 0.5 * cubeUV_rcpTextureSize;\\n\\tvec2 s = ( r.yz / abs( r.x ) + vec2( 1.0 ) ) * 0.5;\\n\\tvec2 base = offset + vec2( texelOffset );\\n\\treturn base + s * ( scale - 2.0 * texelOffset );\\n}\\n#define cubeUV_maxLods3 (log2(cubeUV_textureSize*0.25) - 3.0)\\nvec4 textureCubeUV( sampler2D envMap, vec3 reflectedDirection, float roughness ) {\\n\\tfloat roughnessVal = roughness* cubeUV_maxLods3;\\n\\tfloat r1 = floor(roughnessVal);\\n\\tfloat r2 = r1 + 1.0;\\n\\tfloat t = fract(roughnessVal);\\n\\tvec2 mipInfo = MipLevelInfo(reflectedDirection, r1, roughness);\\n\\tfloat s = mipInfo.y;\\n\\tfloat level0 = mipInfo.x;\\n\\tfloat level1 = level0 + 1.0;\\n\\tlevel1 = level1 > 5.0 ? 5.0 : level1;\\n\\tlevel0 += min( floor( s + 0.5 ), 5.0 );\\n\\tvec2 uv_10 = getCubeUV(reflectedDirection, r1, level0);\\n\\tvec4 color10 = envMapTexelToLinear(texture2D(envMap, uv_10));\\n\\tvec2 uv_20 = getCubeUV(reflectedDirection, r2, level0);\\n\\tvec4 color20 = envMapTexelToLinear(texture2D(envMap, uv_20));\\n\\tvec4 result = mix(color10, color20, t);\\n\\treturn vec4(result.rgb, 1.0);\\n}\\n#endif\";\n\nvar defaultnormal_vertex = \"vec3 transformedNormal = normalMatrix * objectNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = normalMatrix * objectTangent;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, uv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar encodings_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\nvar encodings_pars_fragment = \"\\nvec4 LinearToLinear( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\\n}\\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\\n}\\nvec4 sRGBToLinear( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\\n}\\nvec4 LinearTosRGB( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\\n}\\nvec4 RGBEToLinear( in vec4 value ) {\\n\\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\\n}\\nvec4 LinearToRGBE( in vec4 value ) {\\n\\tfloat maxComponent = max( max( value.r, value.g ), value.b );\\n\\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\\n\\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\\n}\\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\\n}\\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\\n\\tM = ceil( M * 255.0 ) / 255.0;\\n\\treturn vec4( value.rgb / ( M * maxRange ), M );\\n}\\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\\n}\\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat D = max( maxRange / maxRGB, 1.0 );\\n\\tD = min( floor( D ) / 255.0, 1.0 );\\n\\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\\n}\\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\\nvec4 LinearToLogLuv( in vec4 value ) {\\n\\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\\n\\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\\n\\tvec4 vResult;\\n\\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\\n\\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\\n\\tvResult.w = fract( Le );\\n\\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\\n\\treturn vResult;\\n}\\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\\nvec4 LogLuvToLinear( in vec4 value ) {\\n\\tfloat Le = value.z * 255.0 + value.w;\\n\\tvec3 Xp_Y_XYZp;\\n\\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\\n\\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\\n\\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\\n\\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\\n\\treturn vec4( max( vRGB, 0.0 ), 1.0 );\\n}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\\t\\tvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\tvec2 sampleUV;\\n\\t\\treflectVec = normalize( reflectVec );\\n\\t\\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\t\\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\\n\\t\\tvec4 envColor = texture2D( envMap, sampleUV );\\n\\t#elif defined( ENVMAP_TYPE_SPHERE )\\n\\t\\treflectVec = normalize( reflectVec );\\n\\t\\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) );\\n\\t\\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\tenvColor = envMapTexelToLinear( envColor );\\n\\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\\t\\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_MIX )\\n\\t\\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_ADD )\\n\\t\\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\\t#endif\\n#endif\";\n\nvar envmap_pars_fragment = \"#if defined( USE_ENVMAP ) || defined( PHYSICAL )\\n\\tuniform float reflectivity;\\n\\tuniform float envMapIntensity;\\n#endif\\n#ifdef USE_ENVMAP\\n\\t#if ! defined( PHYSICAL ) && ( defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) )\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tuniform samplerCube envMap;\\n\\t#else\\n\\t\\tuniform sampler2D envMap;\\n\\t#endif\\n\\tuniform float flipEnvMap;\\n\\tuniform int maxMipLevel;\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( PHYSICAL )\\n\\t\\tuniform float refractionRatio;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t#endif\\n#endif\";\n\nvar envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n#endif\";\n\nvar envmap_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\\t\\tvWorldPosition = worldPosition.xyz;\\n\\t#else\\n\\t\\tvec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\\t\\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvReflect = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar fog_vertex = \"#ifdef USE_FOG\\n\\tfogDepth = -mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float fogDepth;\\n#endif\";\n\nvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = whiteCompliment( exp2( - fogDensity * fogDensity * fogDepth * fogDepth * LOG2 ) );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\\n\\t#endif\\n\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\n\nvar fog_pars_fragment = \"#ifdef USE_FOG\\n\\tuniform vec3 fogColor;\\n\\tvarying float fogDepth;\\n\\t#ifdef FOG_EXP2\\n\\t\\tuniform float fogDensity;\\n\\t#else\\n\\t\\tuniform float fogNear;\\n\\t\\tuniform float fogFar;\\n\\t#endif\\n#endif\";\n\nvar gradientmap_pars_fragment = \"#ifdef TOON\\n\\tuniform sampler2D gradientMap;\\n\\tvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\t\\tfloat dotNL = dot( normal, lightDirection );\\n\\t\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t\\t#ifdef USE_GRADIENTMAP\\n\\t\\t\\treturn texture2D( gradientMap, coord ).rgb;\\n\\t\\t#else\\n\\t\\t\\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\treflectedLight.indirectDiffuse += PI * texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\\n#endif\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\nvar lights_lambert_vertex = \"vec3 diffuse = vec3( 1.0 );\\nGeometricContext geometry;\\ngeometry.position = mvPosition.xyz;\\ngeometry.normal = normalize( transformedNormal );\\ngeometry.viewDir = normalize( -mvPosition.xyz );\\nGeometricContext backGeometry;\\nbackGeometry.position = geometry.position;\\nbackGeometry.normal = -geometry.normal;\\nbackGeometry.viewDir = geometry.viewDir;\\nvLightFront = vec3( 0.0 );\\nvIndirectFront = vec3( 0.0 );\\n#ifdef DOUBLE_SIDED\\n\\tvLightBack = vec3( 0.0 );\\n\\tvIndirectBack = vec3( 0.0 );\\n#endif\\nIncidentLight directLight;\\nfloat dotNL;\\nvec3 directLightColor_Diffuse;\\n#if NUM_POINT_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n#endif\\n#if NUM_DIR_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar lights_pars_begin = \"uniform vec3 ambientLightColor;\\nuniform vec3 lightProbe[ 9 ];\\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\\n\\tfloat x = normal.x, y = normal.y, z = normal.z;\\n\\tvec3 result = shCoefficients[ 0 ] * 0.886227;\\n\\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\\n\\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\\n\\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\\n\\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\\n\\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\\n\\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\\n\\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\\n\\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\\n\\treturn result;\\n}\\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in GeometricContext geometry ) {\\n\\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\\n\\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treturn irradiance;\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tint shadow;\\n\\t\\tfloat shadowBias;\\n\\t\\tfloat shadowRadius;\\n\\t\\tvec2 shadowMapSize;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tdirectLight.color = directionalLight.color;\\n\\t\\tdirectLight.direction = directionalLight.direction;\\n\\t\\tdirectLight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tint shadow;\\n\\t\\tfloat shadowBias;\\n\\t\\tfloat shadowRadius;\\n\\t\\tvec2 shadowMapSize;\\n\\t\\tfloat shadowCameraNear;\\n\\t\\tfloat shadowCameraFar;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tvec3 lVector = pointLight.position - geometry.position;\\n\\t\\tdirectLight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tdirectLight.color = pointLight.color;\\n\\t\\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t\\tint shadow;\\n\\t\\tfloat shadowBias;\\n\\t\\tfloat shadowRadius;\\n\\t\\tvec2 shadowMapSize;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tvec3 lVector = spotLight.position - geometry.position;\\n\\t\\tdirectLight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tfloat angleCos = dot( directLight.direction, spotLight.direction );\\n\\t\\tif ( angleCos > spotLight.coneCos ) {\\n\\t\\t\\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\t\\tdirectLight.color = spotLight.color;\\n\\t\\t\\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tdirectLight.visible = true;\\n\\t\\t} else {\\n\\t\\t\\tdirectLight.color = vec3( 0.0 );\\n\\t\\t\\tdirectLight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\\n\\t\\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tirradiance *= PI;\\n\\t\\t#endif\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\";\n\nvar envmap_physical_pars_fragment = \"#if defined( USE_ENVMAP ) && defined( PHYSICAL )\\n\\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\\n\\t\\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\t\\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, queryVec, 1.0 );\\n\\t\\t#else\\n\\t\\t\\tvec4 envMapColor = vec4( 0.0 );\\n\\t\\t#endif\\n\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t}\\n\\tfloat getSpecularMIPLevel( const in float blinnShininessExponent, const in int maxMIPLevel ) {\\n\\t\\tfloat maxMIPLevelScalar = float( maxMIPLevel );\\n\\t\\tfloat desiredMIPLevel = maxMIPLevelScalar + 0.79248 - 0.5 * log2( pow2( blinnShininessExponent ) + 1.0 );\\n\\t\\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\\n\\t}\\n\\tvec3 getLightProbeIndirectRadiance( const in GeometricContext geometry, const in float blinnShininessExponent, const in int maxMIPLevel ) {\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( -geometry.viewDir, geometry.normal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( -geometry.viewDir, geometry.normal, refractionRatio );\\n\\t\\t#endif\\n\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\tfloat specularMIPLevel = getSpecularMIPLevel( blinnShininessExponent, maxMIPLevel );\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\t\\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, queryReflectVec, BlinnExponentToGGXRoughness(blinnShininessExponent ));\\n\\t\\t#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\t\\tvec2 sampleUV;\\n\\t\\t\\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\t\\t\\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_SPHERE )\\n\\t\\t\\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#endif\\n\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t}\\n#endif\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\nstruct BlinnPhongMaterial {\\n\\tvec3\\tdiffuseColor;\\n\\tvec3\\tspecularColor;\\n\\tfloat\\tspecularShininess;\\n\\tfloat\\tspecularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t#ifdef TOON\\n\\t\\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\n\\t#else\\n\\t\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\t\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#endif\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nmaterial.specularRoughness = clamp( roughnessFactor, 0.04, 1.0 );\\n#ifdef STANDARD\\n\\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\\n\\tmaterial.clearCoat = saturate( clearCoat );\\tmaterial.clearCoatRoughness = clamp( clearCoatRoughness, 0.04, 1.0 );\\n#endif\";\n\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3\\tdiffuseColor;\\n\\tfloat\\tspecularRoughness;\\n\\tvec3\\tspecularColor;\\n\\t#ifndef STANDARD\\n\\t\\tfloat clearCoat;\\n\\t\\tfloat clearCoatRoughness;\\n\\t#endif\\n};\\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\\nfloat clearCoatDHRApprox( const in float roughness, const in float dotNL ) {\\n\\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometry.normal;\\n\\t\\tvec3 viewDir = geometry.viewDir;\\n\\t\\tvec3 position = geometry.position;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.specularRoughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3( 0, 1, 0 ),\\n\\t\\t\\tvec3( t1.z, 0, t1.w )\\n\\t\\t);\\n\\t\\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\\t\\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\t#ifndef STANDARD\\n\\t\\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\\n\\t#else\\n\\t\\tfloat clearCoatDHR = 0.0;\\n\\t#endif\\n\\treflectedLight.directSpecular += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry, material.specularColor, material.specularRoughness );\\n\\treflectedLight.directDiffuse += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n\\t#ifndef STANDARD\\n\\t\\treflectedLight.directSpecular += irradiance * material.clearCoat * BRDF_Specular_GGX( directLight, geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\\n\\t#endif\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t#ifndef ENVMAP_TYPE_CUBE_UV\\n\\t\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n\\t#endif\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearCoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\\t#ifndef STANDARD\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\tfloat dotNL = dotNV;\\n\\t\\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\\n\\t#else\\n\\t\\tfloat clearCoatDHR = 0.0;\\n\\t#endif\\n\\tfloat clearCoatInv = 1.0 - clearCoatDHR;\\n\\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec3 singleScattering = vec3( 0.0 );\\n\\t\\tvec3 multiScattering = vec3( 0.0 );\\n\\t\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\t\\tBRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering );\\n\\t\\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\\n\\t\\treflectedLight.indirectSpecular += clearCoatInv * radiance * singleScattering;\\n\\t\\treflectedLight.indirectDiffuse += multiScattering * cosineWeightedIrradiance;\\n\\t\\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n\\t#else\\n\\t\\treflectedLight.indirectSpecular += clearCoatInv * radiance * BRDF_Specular_GGX_Environment( geometry, material.specularColor, material.specularRoughness );\\n\\t#endif\\n\\t#ifndef STANDARD\\n\\t\\treflectedLight.indirectSpecular += clearCoatRadiance * material.clearCoat * BRDF_Specular_GGX_Environment( geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\\n\\t#endif\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Physical\\n#define RE_Direct_RectArea\\t\\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\\t\\tRE_IndirectSpecular_Physical\\n#define Material_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.specularRoughness )\\n#define Material_ClearCoat_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.clearCoatRoughness )\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\";\n\nvar lights_fragment_begin = \"\\nGeometricContext geometry;\\ngeometry.position = - vViewPosition;\\ngeometry.normal = normal;\\ngeometry.viewDir = normalize( vViewPosition );\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\\n\\t\\t#ifdef USE_SHADOWMAP\\n\\t\\tdirectLight.color *= all( bvec2( pointLight.shadow, directLight.visible ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\\n\\t\\t#ifdef USE_SHADOWMAP\\n\\t\\tdirectLight.color *= all( bvec2( spotLight.shadow, directLight.visible ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\\n\\t\\t#ifdef USE_SHADOWMAP\\n\\t\\tdirectLight.color *= all( bvec2( directionalLight.shadow, directLight.visible ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\\t\\trectAreaLight = rectAreaLights[ i ];\\n\\t\\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\\n\\t}\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\tirradiance += getLightProbeIrradiance( lightProbe, geometry );\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\\t\\t}\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearCoatRadiance = vec3( 0.0 );\\n#endif\";\n\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec3 lightMapIrradiance = texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tlightMapIrradiance *= PI;\\n\\t\\t#endif\\n\\t\\tirradiance += lightMapIrradiance;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( PHYSICAL ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tirradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\tradiance += getLightProbeIndirectRadiance( geometry, Material_BlinnShininessExponent( material ), maxMipLevel );\\n\\t#ifndef STANDARD\\n\\t\\tclearCoatRadiance += getLightProbeIndirectRadiance( geometry, Material_ClearCoat_BlinnShininessExponent( material ), maxMipLevel );\\n\\t#endif\\n#endif\";\n\nvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tRE_IndirectSpecular( radiance, irradiance, clearCoatRadiance, geometry, material, reflectedLight );\\n#endif\";\n\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tgl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\n\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tuniform float logDepthBufFC;\\n\\tvarying float vFragDepth;\\n#endif\";\n\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t#else\\n\\t\\tuniform float logDepthBufFC;\\n\\t#endif\\n#endif\";\n\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvFragDepth = 1.0 + gl_Position.w;\\n\\t#else\\n\\t\\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\\t\\tgl_Position.z *= gl_Position.w;\\n\\t#endif\\n#endif\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 texelColor = texture2D( map, vUv );\\n\\ttexelColor = mapTexelToLinear( texelColor );\\n\\tdiffuseColor *= texelColor;\\n#endif\";\n\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\n\nvar map_particle_fragment = \"#ifdef USE_MAP\\n\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n\\tvec4 mapTexel = texture2D( map, uv );\\n\\tdiffuseColor *= mapTexelToLinear( mapTexel );\\n#endif\";\n\nvar map_particle_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform mat3 uvTransform;\\n\\tuniform sampler2D map;\\n#endif\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];\\n\\tobjectNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];\\n\\tobjectNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];\\n\\tobjectNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];\\n#endif\";\n\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\t#ifndef USE_MORPHNORMALS\\n\\tuniform float morphTargetInfluences[ 8 ];\\n\\t#else\\n\\tuniform float morphTargetInfluences[ 4 ];\\n\\t#endif\\n#endif\";\n\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\\n\\ttransformed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\\n\\ttransformed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\\n\\ttransformed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\\n\\t#ifndef USE_MORPHNORMALS\\n\\ttransformed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\\n\\ttransformed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\\n\\ttransformed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\\n\\ttransformed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\\n\\t#endif\\n#endif\";\n\nvar normal_fragment_begin = \"#ifdef FLAT_SHADED\\n\\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\\n\\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\\n\\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\\tvec3 normal = normalize( vNormal );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t#endif\\n\\t#ifdef USE_TANGENT\\n\\t\\tvec3 tangent = normalize( vTangent );\\n\\t\\tvec3 bitangent = normalize( vBitangent );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\ttangent = tangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t\\tbitangent = bitangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar normal_fragment_maps = \"#ifdef USE_NORMALMAP\\n\\t#ifdef OBJECTSPACE_NORMALMAP\\n\\t\\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t\\t#ifdef FLIP_SIDED\\n\\t\\t\\tnormal = - normal;\\n\\t\\t#endif\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t#endif\\n\\t\\tnormal = normalize( normalMatrix * normal );\\n\\t#else\\n\\t\\t#ifdef USE_TANGENT\\n\\t\\t\\tmat3 vTBN = mat3( tangent, bitangent, normal );\\n\\t\\t\\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t\\t\\tmapN.xy = normalScale * mapN.xy;\\n\\t\\t\\tnormal = normalize( vTBN * mapN );\\n\\t\\t#else\\n\\t\\t\\tnormal = perturbNormal2Arb( -vViewPosition, normal );\\n\\t\\t#endif\\n\\t#endif\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\\n#endif\";\n\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n\\t#ifdef OBJECTSPACE_NORMALMAP\\n\\t\\tuniform mat3 normalMatrix;\\n\\t#else\\n\\t\\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\\n\\t\\t\\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\\n\\t\\t\\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\\n\\t\\t\\tvec2 st0 = dFdx( vUv.st );\\n\\t\\t\\tvec2 st1 = dFdy( vUv.st );\\n\\t\\t\\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\\n\\t\\t\\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\\n\\t\\t\\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\\n\\t\\t\\tvec3 N = normalize( surf_norm );\\n\\t\\t\\tmat3 tsn = mat3( S, T, N );\\n\\t\\t\\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t\\t\\tmapN.xy *= normalScale;\\n\\t\\t\\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t\\treturn normalize( tsn * mapN );\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\nconst float ShiftRight8 = 1. / 256.;\\nvec4 packDepthToRGBA( const in float v ) {\\n\\tvec4 r = vec4( fract( v * PackFactors ), v );\\n\\tr.yzw -= r.xyz * ShiftRight8;\\treturn r * PackUpscale;\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\\treturn dot( v, UnpackFactors );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\\n\\treturn linearClipZ * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\\n}\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n\nvar project_vertex = \"vec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );\\ngl_Position = projectionMatrix * mvPosition;\";\n\nvar dithering_fragment = \"#if defined( DITHERING )\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\nvar dithering_pars_fragment = \"#if defined( DITHERING )\\n\\tvec3 dithering( vec3 color ) {\\n\\t\\tfloat grid_position = rand( gl_FragCoord.xy );\\n\\t\\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\\t\\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\\t\\treturn color + dither_shift_RGB;\\n\\t}\\n#endif\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\nvar shadowmap_pars_fragment = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHTS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHTS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHTS > 0\\n\\t\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHTS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHTS > 0\\n\\t\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHTS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\\n\\t#endif\\n\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\\t\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\\t}\\n\\tfloat texture2DShadowLerp( sampler2D depths, vec2 size, vec2 uv, float compare ) {\\n\\t\\tconst vec2 offset = vec2( 0.0, 1.0 );\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / size;\\n\\t\\tvec2 centroidUV = floor( uv * size + 0.5 ) / size;\\n\\t\\tfloat lb = texture2DCompare( depths, centroidUV + texelSize * offset.xx, compare );\\n\\t\\tfloat lt = texture2DCompare( depths, centroidUV + texelSize * offset.xy, compare );\\n\\t\\tfloat rb = texture2DCompare( depths, centroidUV + texelSize * offset.yx, compare );\\n\\t\\tfloat rt = texture2DCompare( depths, centroidUV + texelSize * offset.yy, compare );\\n\\t\\tvec2 f = fract( uv * size + 0.5 );\\n\\t\\tfloat a = mix( lb, lt, f.y );\\n\\t\\tfloat b = mix( rb, rt, f.y );\\n\\t\\tfloat c = mix( a, b, f.x );\\n\\t\\treturn c;\\n\\t}\\n\\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tshadowCoord.xyz /= shadowCoord.w;\\n\\t\\tshadowCoord.z += shadowBias;\\n\\t\\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\\n\\t\\tbool inFrustum = all( inFrustumVec );\\n\\t\\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\\n\\t\\tbool frustumTest = all( frustumTestVec );\\n\\t\\tif ( frustumTest ) {\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx2 = dx0 / 2.0;\\n\\t\\t\\tfloat dy2 = dy0 / 2.0;\\n\\t\\t\\tfloat dx3 = dx1 / 2.0;\\n\\t\\t\\tfloat dy3 = dy1 / 2.0;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 17.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#else\\n\\t\\t\\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn shadow;\\n\\t}\\n\\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\\t\\tvec3 absV = abs( v );\\n\\t\\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\\t\\tabsV *= scaleToCube;\\n\\t\\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\\t\\tvec2 planar = v.xy;\\n\\t\\tfloat almostATexel = 1.5 * texelSizeY;\\n\\t\\tfloat almostOne = 1.0 - almostATexel;\\n\\t\\tif ( absV.z >= almostOne ) {\\n\\t\\t\\tif ( v.z > 0.0 )\\n\\t\\t\\t\\tplanar.x = 4.0 - v.x;\\n\\t\\t} else if ( absV.x >= almostOne ) {\\n\\t\\t\\tfloat signX = sign( v.x );\\n\\t\\t\\tplanar.x = v.z * signX + 2.0 * signX;\\n\\t\\t} else if ( absV.y >= almostOne ) {\\n\\t\\t\\tfloat signY = sign( v.y );\\n\\t\\t\\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\\t\\t\\tplanar.y = v.z * signY - 2.0;\\n\\t\\t}\\n\\t\\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\\t}\\n\\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\\t\\tvec3 lightToPosition = shadowCoord.xyz;\\n\\t\\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\t\\tdp += shadowBias;\\n\\t\\tvec3 bd3D = normalize( lightToPosition );\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\\t\\t\\treturn (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#else\\n\\t\\t\\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar shadowmap_pars_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHTS > 0\\n\\t\\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHTS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHTS > 0\\n\\t\\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHTS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHTS > 0\\n\\t\\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHTS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\\n\\t#endif\\n#endif\";\n\nvar shadowmap_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;\\n\\t}\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;\\n\\t}\\n\\t#endif\\n\\t#if NUM_POINT_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;\\n\\t}\\n\\t#endif\\n#endif\";\n\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHTS > 0\\n\\tDirectionalLight directionalLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tshadow *= bool( directionalLight.shadow ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHTS > 0\\n\\tSpotLight spotLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tshadow *= bool( spotLight.shadow ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#endif\\n\\t#if NUM_POINT_LIGHTS > 0\\n\\tPointLight pointLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tshadow *= bool( pointLight.shadow ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\";\n\nvar skinbase_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\\n\\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\\n\\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\\n\\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\\n#endif\";\n\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\\tuniform mat4 bindMatrix;\\n\\tuniform mat4 bindMatrixInverse;\\n\\t#ifdef BONE_TEXTURE\\n\\t\\tuniform highp sampler2D boneTexture;\\n\\t\\tuniform int boneTextureSize;\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tfloat j = i * 4.0;\\n\\t\\t\\tfloat x = mod( j, float( boneTextureSize ) );\\n\\t\\t\\tfloat y = floor( j / float( boneTextureSize ) );\\n\\t\\t\\tfloat dx = 1.0 / float( boneTextureSize );\\n\\t\\t\\tfloat dy = 1.0 / float( boneTextureSize );\\n\\t\\t\\ty = dy * ( y + 0.5 );\\n\\t\\t\\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\\n\\t\\t\\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\\n\\t\\t\\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\\n\\t\\t\\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\\n\\t\\t\\tmat4 bone = mat4( v1, v2, v3, v4 );\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#else\\n\\t\\tuniform mat4 boneMatrices[ MAX_BONES ];\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tmat4 bone = boneMatrices[ int(i) ];\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar skinning_vertex = \"#ifdef USE_SKINNING\\n\\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\\n\\tvec4 skinned = vec4( 0.0 );\\n\\tskinned += boneMatX * skinVertex * skinWeight.x;\\n\\tskinned += boneMatY * skinVertex * skinWeight.y;\\n\\tskinned += boneMatZ * skinVertex * skinWeight.z;\\n\\tskinned += boneMatW * skinVertex * skinWeight.w;\\n\\ttransformed = ( bindMatrixInverse * skinned ).xyz;\\n#endif\";\n\nvar skinnormal_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 skinMatrix = mat4( 0.0 );\\n\\tskinMatrix += skinWeight.x * boneMatX;\\n\\tskinMatrix += skinWeight.y * boneMatY;\\n\\tskinMatrix += skinWeight.z * boneMatZ;\\n\\tskinMatrix += skinWeight.w * boneMatW;\\n\\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\\n\\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\\n\\t#ifdef USE_TANGENT\\n\\t\\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#endif\\n#endif\";\n\nvar specularmap_fragment = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\\tvec4 texelSpecular = texture2D( specularMap, vUv );\\n\\tspecularStrength = texelSpecular.r;\\n#else\\n\\tspecularStrength = 1.0;\\n#endif\";\n\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\n\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n\\t#define saturate(a) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nuniform float toneMappingWhitePoint;\\nvec3 LinearToneMapping( vec3 color ) {\\n\\treturn toneMappingExposure * color;\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\n#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) )\\nvec3 Uncharted2ToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( ( color * ( 2.51 * color + 0.03 ) ) / ( color * ( 2.43 * color + 0.59 ) + 0.14 ) );\\n}\";\n\nvar uv_pars_fragment = \"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\\n\\tvarying vec2 vUv;\\n#endif\";\n\nvar uv_pars_vertex = \"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\\n\\tvarying vec2 vUv;\\n\\tuniform mat3 uvTransform;\\n#endif\";\n\nvar uv_vertex = \"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\n\nvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvarying vec2 vUv2;\\n#endif\";\n\nvar uv2_pars_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tattribute vec2 uv2;\\n\\tvarying vec2 vUv2;\\n#endif\";\n\nvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvUv2 = uv2;\\n#endif\";\n\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\\n\\tvec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );\\n#endif\";\n\nvar background_frag = \"uniform sampler2D t2D;\\nvarying vec2 vUv;\\nvoid main() {\\n\\tvec4 texColor = texture2D( t2D, vUv );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\t#include \\n\\t#include \\n}\";\n\nvar background_vert = \"varying vec2 vUv;\\nuniform mat3 uvTransform;\\nvoid main() {\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\tgl_Position = vec4( position.xy, 1.0, 1.0 );\\n}\";\n\nvar cube_frag = \"uniform samplerCube tCube;\\nuniform float tFlip;\\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\nvoid main() {\\n\\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\tgl_FragColor.a *= opacity;\\n\\t#include \\n\\t#include \\n}\";\n\nvar cube_vert = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n\\tgl_Position.z = gl_Position.w;\\n}\";\n\nvar depth_frag = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tdiffuseColor.a = opacity;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( 1.0 - gl_FragCoord.z ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( gl_FragCoord.z );\\n\\t#endif\\n}\";\n\nvar depth_vert = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar distanceRGBA_frag = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main () {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\n\nvar distanceRGBA_vert = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvWorldPosition = worldPosition.xyz;\\n}\";\n\nvar equirect_frag = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV;\\n\\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tvec4 texColor = texture2D( tEquirect, sampleUV );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\t#include \\n\\t#include \\n}\";\n\nvar equirect_vert = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n}\";\n\nvar linedashed_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar linedashed_vert = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvLineDistance = scale * lineDistance;\\n\\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshbasic_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\treflectedLight.indirectDiffuse += texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\\t#include \\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshbasic_vert = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifdef USE_ENVMAP\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshlambert_frag = \"uniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\treflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vIndirectFront;\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\\n\\t#else\\n\\t\\treflectedLight.directDiffuse = vLightFront;\\n\\t#endif\\n\\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshlambert_vert = \"#define LAMBERT\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshmatcap_frag = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 viewDir = normalize( vViewPosition );\\n\\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\\n\\tvec3 y = cross( viewDir, x );\\n\\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\\n\\t#ifdef USE_MATCAP\\n\\t\\tvec4 matcapColor = texture2D( matcap, uv );\\n\\t\\tmatcapColor = matcapTexelToLinear( matcapColor );\\n\\t#else\\n\\t\\tvec4 matcapColor = vec4( 1.0 );\\n\\t#endif\\n\\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshmatcap_vert = \"#define MATCAP\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifndef FLAT_SHADED\\n\\t\\tvNormal = normalize( transformedNormal );\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n}\";\n\nvar meshphong_frag = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#include \\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshphong_vert = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshphysical_frag = \"#define PHYSICAL\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifndef STANDARD\\n\\tuniform float clearCoat;\\n\\tuniform float clearCoatRoughness;\\n#endif\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshphysical_vert = \"#define PHYSICAL\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar normal_frag = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n}\";\n\nvar normal_vert = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\n\nvar points_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar points_vert = \"uniform float size;\\nuniform float scale;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_PointSize = size;\\n\\t#ifdef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 );\\n\\t\\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar shadow_frag = \"uniform vec3 color;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\\t#include \\n}\";\n\nvar shadow_vert = \"#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar sprite_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar sprite_vert = \"uniform float rotation;\\nuniform vec2 center;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\tvec2 scale;\\n\\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\\n\\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\\n\\t#ifndef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 );\\n\\t\\tif ( isPerspective ) scale *= - mvPosition.z;\\n\\t#endif\\n\\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\\n\\tvec2 rotatedPosition;\\n\\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\\n\\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\\n\\tmvPosition.xy += rotatedPosition;\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar ShaderChunk = {\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tencodings_fragment: encodings_fragment,\n\tencodings_pars_fragment: encodings_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_physical_pars_fragment: envmap_physical_pars_fragment,\n\tenvmap_vertex: envmap_vertex,\n\tfog_vertex: fog_vertex,\n\tfog_pars_vertex: fog_pars_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\tlightmap_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_vertex: lights_lambert_vertex,\n\tlights_pars_begin: lights_pars_begin,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_fragment_begin: lights_fragment_begin,\n\tlights_fragment_maps: lights_fragment_maps,\n\tlights_fragment_end: lights_fragment_end,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_fragment_begin: normal_fragment_begin,\n\tnormal_fragment_maps: normal_fragment_maps,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\tdithering_fragment: dithering_fragment,\n\tdithering_pars_fragment: dithering_pars_fragment,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tuv2_pars_fragment: uv2_pars_fragment,\n\tuv2_pars_vertex: uv2_pars_vertex,\n\tuv2_vertex: uv2_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tbackground_frag: background_frag,\n\tbackground_vert: background_vert,\n\tcube_frag: cube_frag,\n\tcube_vert: cube_vert,\n\tdepth_frag: depth_frag,\n\tdepth_vert: depth_vert,\n\tdistanceRGBA_frag: distanceRGBA_frag,\n\tdistanceRGBA_vert: distanceRGBA_vert,\n\tequirect_frag: equirect_frag,\n\tequirect_vert: equirect_vert,\n\tlinedashed_frag: linedashed_frag,\n\tlinedashed_vert: linedashed_vert,\n\tmeshbasic_frag: meshbasic_frag,\n\tmeshbasic_vert: meshbasic_vert,\n\tmeshlambert_frag: meshlambert_frag,\n\tmeshlambert_vert: meshlambert_vert,\n\tmeshmatcap_frag: meshmatcap_frag,\n\tmeshmatcap_vert: meshmatcap_vert,\n\tmeshphong_frag: meshphong_frag,\n\tmeshphong_vert: meshphong_vert,\n\tmeshphysical_frag: meshphysical_frag,\n\tmeshphysical_vert: meshphysical_vert,\n\tnormal_frag: normal_frag,\n\tnormal_vert: normal_vert,\n\tpoints_frag: points_frag,\n\tpoints_vert: points_vert,\n\tshadow_frag: shadow_frag,\n\tshadow_vert: shadow_vert,\n\tsprite_frag: sprite_frag,\n\tsprite_vert: sprite_vert\n};\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nvar UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tuvTransform: { value: new Matrix3() },\n\n\t\talphaMap: { value: null },\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 },\n\t\trefractionRatio: { value: 0.98 },\n\t\tmaxMipLevel: { value: 0 }\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalScale: { value: new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null }\n\n\t},\n\n\tgradientmap: {\n\n\t\tgradientMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tlightProbe: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {},\n\n\t\t\tshadow: {},\n\t\t\tshadowBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {},\n\n\t\t\tshadow: {},\n\t\t\tshadowBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotShadowMap: { value: [] },\n\t\tspotShadowMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {},\n\n\t\t\tshadow: {},\n\t\t\tshadowBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t}\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n */\n\nvar ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.gradientmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 0.5 },\n\t\t\t\tmetalness: { value: 0.5 },\n\t\t\t\tenvMapIntensity: { value: 1 } // temporary\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\tmatcap: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tmatcap: { value: null }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshmatcap_vert,\n\t\tfragmentShader: ShaderChunk.meshmatcap_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.normal_vert,\n\t\tfragmentShader: ShaderChunk.normal_frag\n\n\t},\n\n\tsprite: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.sprite,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.sprite_vert,\n\t\tfragmentShader: ShaderChunk.sprite_frag\n\n\t},\n\n\tbackground: {\n\n\t\tuniforms: {\n\t\t\tuvTransform: { value: new Matrix3() },\n\t\t\tt2D: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.background_vert,\n\t\tfragmentShader: ShaderChunk.background_frag\n\n\t},\n\t/* -------------------------------------------------------------------------\n\t//\tCube map shader\n\t ------------------------------------------------------------------------- */\n\n\tcube: {\n\n\t\tuniforms: {\n\t\t\ttCube: { value: null },\n\t\t\ttFlip: { value: - 1 },\n\t\t\topacity: { value: 1.0 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: new Vector3() },\n\t\t\t\tnearDistance: { value: 1 },\n\t\t\t\tfarDistance: { value: 1000 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t},\n\n\tshadow: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: new Color( 0x00000 ) },\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t},\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\tfragmentShader: ShaderChunk.shadow_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: mergeUniforms( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearCoat: { value: 0 },\n\t\t\tclearCoatRoughness: { value: 0 }\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLAnimation() {\n\n\tvar context = null;\n\tvar isAnimating = false;\n\tvar animationLoop = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tif ( isAnimating === false ) return;\n\n\t\tanimationLoop( time, frame );\n\n\t\tcontext.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\tcontext.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLAttributes( gl ) {\n\n\tvar buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tvar array = attribute.array;\n\t\tvar usage = attribute.dynamic ? 35048 : 35044;\n\n\t\tvar buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tvar type = 5126;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = 5126;\n\n\t\t} else if ( array instanceof Float64Array ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.' );\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\ttype = 5123;\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = 5122;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = 5125;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = 5124;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = 5120;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = 5121;\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tvar array = attribute.array;\n\t\tvar updateRange = attribute.updateRange;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( attribute.dynamic === false ) {\n\n\t\t\tgl.bufferData( bufferType, array, 35044 );\n\n\t\t} else if ( updateRange.count === - 1 ) {\n\n\t\t\t// Not using update ranges\n\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t} else if ( updateRange.count === 0 ) {\n\n\t\t\tconsole.error( 'THREE.WebGLObjects.updateBuffer: dynamic THREE.BufferAttribute marked as needsUpdate but updateRange.count is 0, ensure you are using set methods or updating manually.' );\n\n\t\t} else {\n\n\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tvar data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tvar data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// PlaneGeometry\n\nfunction PlaneGeometry( width, height, widthSegments, heightSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PlaneGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\tthis.fromBufferGeometry( new PlaneBufferGeometry( width, height, widthSegments, heightSegments ) );\n\tthis.mergeVertices();\n\n}\n\nPlaneGeometry.prototype = Object.create( Geometry.prototype );\nPlaneGeometry.prototype.constructor = PlaneGeometry;\n\n// PlaneBufferGeometry\n\nfunction PlaneBufferGeometry( width, height, widthSegments, heightSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PlaneBufferGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\twidth = width || 1;\n\theight = height || 1;\n\n\tvar width_half = width / 2;\n\tvar height_half = height / 2;\n\n\tvar gridX = Math.floor( widthSegments ) || 1;\n\tvar gridY = Math.floor( heightSegments ) || 1;\n\n\tvar gridX1 = gridX + 1;\n\tvar gridY1 = gridY + 1;\n\n\tvar segment_width = width / gridX;\n\tvar segment_height = height / gridY;\n\n\tvar ix, iy;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// generate vertices, normals and uvs\n\n\tfor ( iy = 0; iy < gridY1; iy ++ ) {\n\n\t\tvar y = iy * segment_height - height_half;\n\n\t\tfor ( ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\tvar x = ix * segment_width - width_half;\n\n\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\tuvs.push( ix / gridX );\n\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tfor ( iy = 0; iy < gridY; iy ++ ) {\n\n\t\tfor ( ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\tvar a = ix + gridX1 * iy;\n\t\t\tvar b = ix + gridX1 * ( iy + 1 );\n\t\t\tvar c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\tvar d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nPlaneBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPlaneBufferGeometry.prototype.constructor = PlaneBufferGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLBackground( renderer, state, objects, premultipliedAlpha ) {\n\n\tvar clearColor = new Color( 0x000000 );\n\tvar clearAlpha = 0;\n\n\tvar planeMesh;\n\tvar boxMesh;\n\t// Store the current background texture and its `version`\n\t// so we can recompile the material accordingly.\n\tvar currentBackground = null;\n\tvar currentBackgroundVersion = 0;\n\n\tfunction render( renderList, scene, camera, forceClear ) {\n\n\t\tvar background = scene.background;\n\n\t\t// Ignore background in AR\n\t\t// TODO: Reconsider this.\n\n\t\tvar vr = renderer.vr;\n\t\tvar session = vr.getSession && vr.getSession();\n\n\t\tif ( session && session.environmentBlendMode === 'additive' ) {\n\n\t\t\tbackground = null;\n\n\t\t}\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\t\t\tcurrentBackground = null;\n\t\t\tcurrentBackgroundVersion = 0;\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\t\t\tcurrentBackground = null;\n\t\t\tcurrentBackgroundVersion = 0;\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && ( background.isCubeTexture || background.isWebGLRenderTargetCube ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxBufferGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\ttype: 'BackgroundCubeMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.cube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.cube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.cube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tboxMesh.geometry.removeAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.removeAttribute( 'uv' );\n\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t};\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( boxMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.tCube.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( boxMesh );\n\n\t\t\t}\n\n\t\t\tvar texture = background.isWebGLRenderTargetCube ? background.texture : background;\n\t\t\tboxMesh.material.uniforms.tCube.value = texture;\n\t\t\tboxMesh.material.uniforms.tFlip.value = ( background.isWebGLRenderTargetCube ) ? 1 : - 1;\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t currentBackgroundVersion !== texture.version ) {\n\n\t\t\t\tboxMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = texture.version;\n\n\t\t\t}\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeMesh === undefined ) {\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneBufferGeometry( 2, 2 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\ttype: 'BackgroundMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.background.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\n\t\t\t\t\t\tside: FrontSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tplaneMesh.geometry.removeAttribute( 'normal' );\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( planeMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.t2D.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.t2D.value = background;\n\n\t\t\tif ( background.matrixAutoUpdate === true ) {\n\n\t\t\t\tbackground.updateMatrix();\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy( background.matrix );\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\t currentBackgroundVersion !== background.version ) {\n\n\t\t\t\tplaneMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\n\t\t\t}\n\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tstate.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha );\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha !== undefined ? alpha : 1;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tvar mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode );\n\n\t}\n\n\tfunction renderInstances( geometry, start, count ) {\n\n\t\tvar extension;\n\n\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\textension = gl;\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ capabilities.isWebGL2 ? 'drawArraysInstanced' : 'drawArraysInstancedANGLE' ]( mode, start, count, geometry.maxInstancedCount );\n\n\t\tinfo.update( count, mode, geometry.maxInstancedCount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tvar maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tvar extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36338 ).precision > 0 &&\n\t\t\t gl.getShaderPrecisionFormat( 35632, 36338 ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36337 ).precision > 0 &&\n\t\t\t gl.getShaderPrecisionFormat( 35632, 36337 ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\tvar isWebGL2 = typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext;\n\n\tvar precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tvar maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tvar logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tvar maxTextures = gl.getParameter( 34930 );\n\tvar maxVertexTextures = gl.getParameter( 35660 );\n\tvar maxTextureSize = gl.getParameter( 3379 );\n\tvar maxCubemapSize = gl.getParameter( 34076 );\n\n\tvar maxAttributes = gl.getParameter( 34921 );\n\tvar maxVertexUniforms = gl.getParameter( 36347 );\n\tvar maxVaryings = gl.getParameter( 36348 );\n\tvar maxFragmentUniforms = gl.getParameter( 36349 );\n\n\tvar vertexTextures = maxVertexTextures > 0;\n\tvar floatFragmentTextures = isWebGL2 || !! extensions.get( 'OES_texture_float' );\n\tvar floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\tvar maxSamples = isWebGL2 ? gl.getParameter( 36183 ) : 0;\n\n\treturn {\n\n\t\tisWebGL2: isWebGL2,\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures,\n\n\t\tmaxSamples: maxSamples\n\n\t};\n\n}\n\n/**\n * @author tschw\n */\n\nfunction WebGLClipping() {\n\n\tvar scope = this,\n\n\t\tglobalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false,\n\n\t\tplane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function ( planes, enableLocalClipping, camera ) {\n\n\t\tvar enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\t\tresetGlobalState();\n\n\t};\n\n\tthis.setState = function ( planes, clipIntersection, clipShadows, camera, cache, fromCache ) {\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4,\n\n\t\t\t\tdstArray = cache.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, fromCache );\n\n\t\t\tfor ( var i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tcache.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tvar nPlanes = planes !== null ? planes.length : 0,\n\t\t\tdstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tvar flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLExtensions( gl ) {\n\n\tvar extensions = {};\n\n\treturn {\n\n\t\tget: function ( name ) {\n\n\t\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\t\treturn extensions[ name ];\n\n\t\t\t}\n\n\t\t\tvar extension;\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\textension = gl.getExtension( name );\n\n\t\t\t}\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\textensions[ name ] = extension;\n\n\t\t\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLGeometries( gl, attributes, info ) {\n\n\tvar geometries = {};\n\tvar wireframeAttributes = {};\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tvar geometry = event.target;\n\t\tvar buffergeometry = geometries[ geometry.id ];\n\n\t\tif ( buffergeometry.index !== null ) {\n\n\t\t\tattributes.remove( buffergeometry.index );\n\n\t\t}\n\n\t\tfor ( var name in buffergeometry.attributes ) {\n\n\t\t\tattributes.remove( buffergeometry.attributes[ name ] );\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tdelete geometries[ geometry.id ];\n\n\t\tvar attribute = wireframeAttributes[ buffergeometry.id ];\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\tdelete wireframeAttributes[ buffergeometry.id ];\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tvar buffergeometry = geometries[ geometry.id ];\n\n\t\tif ( buffergeometry ) return buffergeometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tbuffergeometry = geometry;\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tif ( geometry._bufferGeometry === undefined ) {\n\n\t\t\t\tgeometry._bufferGeometry = new BufferGeometry().setFromObject( object );\n\n\t\t\t}\n\n\t\t\tbuffergeometry = geometry._bufferGeometry;\n\n\t\t}\n\n\t\tgeometries[ geometry.id ] = buffergeometry;\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tvar index = geometry.index;\n\t\tvar geometryAttributes = geometry.attributes;\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, 34963 );\n\n\t\t}\n\n\t\tfor ( var name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], 34962 );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tvar morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( var name in morphAttributes ) {\n\n\t\t\tvar array = morphAttributes[ name ];\n\n\t\t\tfor ( var i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], 34962 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateWireframeAttribute( geometry ) {\n\n\t\tvar indices = [];\n\n\t\tvar geometryIndex = geometry.index;\n\t\tvar geometryPosition = geometry.attributes.position;\n\t\tvar version = 0;\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tvar array = geometryIndex.array;\n\t\t\tversion = geometryIndex.version;\n\n\t\t\tfor ( var i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tvar a = array[ i + 0 ];\n\t\t\t\tvar b = array[ i + 1 ];\n\t\t\t\tvar c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar array = geometryPosition.array;\n\t\t\tversion = geometryPosition.version;\n\n\t\t\tfor ( var i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tvar a = i + 0;\n\t\t\t\tvar b = i + 1;\n\t\t\t\tvar c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar attribute = new ( arrayMax( indices ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\t\tattribute.version = version;\n\n\t\tattributes.update( attribute, 34963 );\n\n\t\t//\n\n\t\tvar previousAttribute = wireframeAttributes[ geometry.id ];\n\n\t\tif ( previousAttribute ) attributes.remove( previousAttribute );\n\n\t\t//\n\n\t\twireframeAttributes[ geometry.id ] = attribute;\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tvar currentAttribute = wireframeAttributes[ geometry.id ];\n\n\t\tif ( currentAttribute ) {\n\n\t\t\tvar geometryIndex = geometry.index;\n\n\t\t\tif ( geometryIndex !== null ) {\n\n\t\t\t\t// if the attribute is obsolete, create a new one\n\n\t\t\t\tif ( currentAttribute.version < geometryIndex.version ) {\n\n\t\t\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t}\n\n\t\treturn wireframeAttributes[ geometry.id ];\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tvar mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tvar type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode );\n\n\t}\n\n\tfunction renderInstances( geometry, start, count ) {\n\n\t\tvar extension;\n\n\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\textension = gl;\n\n\t\t} else {\n\n\t\t\tvar extension = extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ capabilities.isWebGL2 ? 'drawElementsInstanced' : 'drawElementsInstancedANGLE' ]( mode, count, type, start * bytesPerElement, geometry.maxInstancedCount );\n\n\t\tinfo.update( count, mode, geometry.maxInstancedCount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebGLInfo( gl ) {\n\n\tvar memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tvar render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\tinstanceCount = instanceCount || 1;\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase 4:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase 5:\n\t\t\tcase 6:\n\t\t\t\trender.triangles += instanceCount * ( count - 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase 0:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.frame ++;\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction absNumericalSort( a, b ) {\n\n\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\n\n}\n\nfunction WebGLMorphtargets( gl ) {\n\n\tvar influencesList = {};\n\tvar morphInfluences = new Float32Array( 8 );\n\n\tfunction update( object, geometry, material, program ) {\n\n\t\tvar objectInfluences = object.morphTargetInfluences;\n\n\t\tvar length = objectInfluences.length;\n\n\t\tvar influences = influencesList[ geometry.id ];\n\n\t\tif ( influences === undefined ) {\n\n\t\t\t// initialise list\n\n\t\t\tinfluences = [];\n\n\t\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\t\tinfluences[ i ] = [ i, 0 ];\n\n\t\t\t}\n\n\t\t\tinfluencesList[ geometry.id ] = influences;\n\n\t\t}\n\n\t\tvar morphTargets = material.morphTargets && geometry.morphAttributes.position;\n\t\tvar morphNormals = material.morphNormals && geometry.morphAttributes.normal;\n\n\t\t// Remove current morphAttributes\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tvar influence = influences[ i ];\n\n\t\t\tif ( influence[ 1 ] !== 0 ) {\n\n\t\t\t\tif ( morphTargets ) geometry.removeAttribute( 'morphTarget' + i );\n\t\t\t\tif ( morphNormals ) geometry.removeAttribute( 'morphNormal' + i );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Collect influences\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tvar influence = influences[ i ];\n\n\t\t\tinfluence[ 0 ] = i;\n\t\t\tinfluence[ 1 ] = objectInfluences[ i ];\n\n\t\t}\n\n\t\tinfluences.sort( absNumericalSort );\n\n\t\t// Add morphAttributes\n\n\t\tfor ( var i = 0; i < 8; i ++ ) {\n\n\t\t\tvar influence = influences[ i ];\n\n\t\t\tif ( influence ) {\n\n\t\t\t\tvar index = influence[ 0 ];\n\t\t\t\tvar value = influence[ 1 ];\n\n\t\t\t\tif ( value ) {\n\n\t\t\t\t\tif ( morphTargets ) geometry.addAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\t\t\t\t\tif ( morphNormals ) geometry.addAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tmorphInfluences[ i ] = 0;\n\n\t\t}\n\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLObjects( geometries, info ) {\n\n\tvar updateList = {};\n\n\tfunction update( object ) {\n\n\t\tvar frame = info.render.frame;\n\n\t\tvar geometry = object.geometry;\n\t\tvar buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateList[ buffergeometry.id ] !== frame ) {\n\n\t\t\tif ( geometry.isGeometry ) {\n\n\t\t\t\tbuffergeometry.updateFromObject( object );\n\n\t\t\t}\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateList[ buffergeometry.id ] = frame;\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateList = {};\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CubeTexture( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\timages = images !== undefined ? images : [];\n\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\tformat = format !== undefined ? format : RGBFormat;\n\n\tTexture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.flipY = false;\n\n}\n\nCubeTexture.prototype = Object.create( Texture.prototype );\nCubeTexture.prototype.constructor = CubeTexture;\n\nCubeTexture.prototype.isCubeTexture = true;\n\nObject.defineProperty( CubeTexture.prototype, 'images', {\n\n\tget: function () {\n\n\t\treturn this.image;\n\n\t},\n\n\tset: function ( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n} );\n\n/**\n * @author Takahiro https://github.com/takahirox\n */\n\nfunction DataTexture2DArray( data, width, height, depth ) {\n\n\tTexture.call( this, null );\n\n\tthis.image = { data: data, width: width, height: height, depth: depth };\n\n\tthis.magFilter = NearestFilter;\n\tthis.minFilter = NearestFilter;\n\n\tthis.wrapR = ClampToEdgeWrapping;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\n}\n\nDataTexture2DArray.prototype = Object.create( Texture.prototype );\nDataTexture2DArray.prototype.constructor = DataTexture2DArray;\nDataTexture2DArray.prototype.isDataTexture2DArray = true;\n\n/**\n * @author Artur Trzesiok\n */\n\nfunction DataTexture3D( data, width, height, depth ) {\n\n\t// We're going to add .setXXX() methods for setting properties later.\n\t// Users can still set in DataTexture3D directly.\n\t//\n\t//\tvar texture = new THREE.DataTexture3D( data, width, height, depth );\n\t// \ttexture.anisotropy = 16;\n\t//\n\t// See #14839\n\n\tTexture.call( this, null );\n\n\tthis.image = { data: data, width: width, height: height, depth: depth };\n\n\tthis.magFilter = NearestFilter;\n\tthis.minFilter = NearestFilter;\n\n\tthis.wrapR = ClampToEdgeWrapping;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\n}\n\nDataTexture3D.prototype = Object.create( Texture.prototype );\nDataTexture3D.prototype.constructor = DataTexture3D;\nDataTexture3D.prototype.isDataTexture3D = true;\n\n/**\n * @author tschw\n * @author Mugen87 / https://github.com/Mugen87\n * @author mrdoob / http://mrdoob.com/\n *\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [textures] )\n *\n * \t\tuploads a uniform value(s)\n * \tthe 'textures' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (textures factorizations):\n *\n * .upload( gl, seq, values, textures )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (textures factorizations):\n *\n * .setValue( gl, name, value, textures )\n *\n * \t\tsets uniform with name 'name' to 'value'\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\nvar emptyTexture = new Texture();\nvar emptyTexture2dArray = new DataTexture2DArray();\nvar emptyTexture3d = new DataTexture3D();\nvar emptyCubeTexture = new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nvar arrayCacheF32 = [];\nvar arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nvar mat4array = new Float32Array( 16 );\nvar mat3array = new Float32Array( 9 );\nvar mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tvar firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tvar n = nBlocks * blockSize,\n\t\tr = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( var i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\nfunction arraysEqual( a, b ) {\n\n\tif ( a.length !== b.length ) return false;\n\n\tfor ( var i = 0, l = a.length; i < l; i ++ ) {\n\n\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction copyArray( a, b ) {\n\n\tfor ( var i = 0, l = b.length; i < l; i ++ ) {\n\n\t\ta[ i ] = b[ i ];\n\n\t}\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( textures, n ) {\n\n\tvar r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( var i = 0; i !== n; ++ i )\n\t\tr[ i ] = textures.allocateTextureUnit();\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValueV1f( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1f( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValueV2f( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3f( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else if ( v.r !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\n\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\n\t\t\tcache[ 0 ] = v.r;\n\t\t\tcache[ 1 ] = v.g;\n\t\t\tcache[ 2 ] = v.b;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4f( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single matrix (from flat array or MatrixN)\n\nfunction setValueM2( gl, v ) {\n\n\tvar cache = this.cache;\n\tvar elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat2array.set( elements );\n\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM3( gl, v ) {\n\n\tvar cache = this.cache;\n\tvar elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat3array.set( elements );\n\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM4( gl, v ) {\n\n\tvar cache = this.cache;\n\tvar elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat4array.set( elements );\n\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, textures ) {\n\n\tvar cache = this.cache;\n\tvar unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTexture2D( v || emptyTexture, unit );\n\n}\n\nfunction setValueT2DArray1( gl, v, textures ) {\n\n\tvar cache = this.cache;\n\tvar unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2DArray( v || emptyTexture2dArray, unit );\n\n}\n\nfunction setValueT3D1( gl, v, textures ) {\n\n\tvar cache = this.cache;\n\tvar unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture3D( v || emptyTexture3d, unit );\n\n}\n\nfunction setValueT6( gl, v, textures ) {\n\n\tvar cache = this.cache;\n\tvar unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTextureCube( v || emptyCubeTexture, unit );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\n\nfunction setValueV1i( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1i( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\nfunction setValueV2i( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV3i( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV4i( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1f; // FLOAT\n\t\tcase 0x8b50: return setValueV2f; // _VEC2\n\t\tcase 0x8b51: return setValueV3f; // _VEC3\n\t\tcase 0x8b52: return setValueV4f; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2; // _MAT2\n\t\tcase 0x8b5b: return setValueM3; // _MAT3\n\t\tcase 0x8b5c: return setValueM4; // _MAT4\n\n\t\tcase 0x8b5e: case 0x8d66: return setValueT1; // SAMPLER_2D, SAMPLER_EXTERNAL_OES\n\t\tcase 0x8b5f: return setValueT3D1; // SAMPLER_3D\n\t\tcase 0x8b60: return setValueT6; // SAMPLER_CUBE\n\t\tcase 0x8DC1: return setValueT2DArray1; // SAMPLER_2D_ARRAY\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2i; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3i; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4i; // _VEC4\n\n\t}\n\n}\n\n// Array of scalars\nfunction setValueV1fArray( gl, v ) {\n\n\tgl.uniform1fv( this.addr, v );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\nfunction setValueV1iArray( gl, v ) {\n\n\tgl.uniform1iv( this.addr, v );\n\n}\n\nfunction setValueV2iArray( gl, v ) {\n\n\tgl.uniform2iv( this.addr, v );\n\n}\n\nfunction setValueV3iArray( gl, v ) {\n\n\tgl.uniform3iv( this.addr, v );\n\n}\n\nfunction setValueV4iArray( gl, v ) {\n\n\tgl.uniform4iv( this.addr, v );\n\n}\n\n\n// Array of vectors (flat or from THREE classes)\n\nfunction setValueV2fArray( gl, v ) {\n\n\tvar data = flatten( v, this.size, 2 );\n\n\tgl.uniform2fv( this.addr, data );\n\n}\n\nfunction setValueV3fArray( gl, v ) {\n\n\tvar data = flatten( v, this.size, 3 );\n\n\tgl.uniform3fv( this.addr, data );\n\n}\n\nfunction setValueV4fArray( gl, v ) {\n\n\tvar data = flatten( v, this.size, 4 );\n\n\tgl.uniform4fv( this.addr, data );\n\n}\n\n// Array of matrices (flat or from THREE clases)\n\nfunction setValueM2Array( gl, v ) {\n\n\tvar data = flatten( v, this.size, 4 );\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n}\n\nfunction setValueM3Array( gl, v ) {\n\n\tvar data = flatten( v, this.size, 9 );\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n}\n\nfunction setValueM4Array( gl, v ) {\n\n\tvar data = flatten( v, this.size, 16 );\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n}\n\n// Array of textures (2D / Cube)\n\nfunction setValueT1Array( gl, v, textures ) {\n\n\tvar n = v.length;\n\n\tvar units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( var i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6Array( gl, v, textures ) {\n\n\tvar n = v.length;\n\n\tvar units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( var i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1fArray; // FLOAT\n\t\tcase 0x8b50: return setValueV2fArray; // _VEC2\n\t\tcase 0x8b51: return setValueV3fArray; // _VEC3\n\t\tcase 0x8b52: return setValueV4fArray; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2Array; // _MAT2\n\t\tcase 0x8b5b: return setValueM3Array; // _MAT3\n\t\tcase 0x8b5c: return setValueM4Array; // _MAT4\n\n\t\tcase 0x8b5e: return setValueT1Array; // SAMPLER_2D\n\t\tcase 0x8b60: return setValueT6Array; // SAMPLER_CUBE\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nfunction SingleUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nfunction PureArrayUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.size = activeInfo.size;\n\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nPureArrayUniform.prototype.updateCache = function ( data ) {\n\n\tvar cache = this.cache;\n\n\tif ( data instanceof Float32Array && cache.length !== data.length ) {\n\n\t\tthis.cache = new Float32Array( data.length );\n\n\t}\n\n\tcopyArray( cache, data );\n\n};\n\nfunction StructuredUniform( id ) {\n\n\tthis.id = id;\n\n\tthis.seq = [];\n\tthis.map = {};\n\n}\n\nStructuredUniform.prototype.setValue = function ( gl, value, textures ) {\n\n\tvar seq = this.seq;\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar u = seq[ i ];\n\t\tu.setValue( gl, value[ u.id ], textures );\n\n\t}\n\n};\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nvar RePathPart = /([\\w\\d_]+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n// - followed by an optional right bracket (found when array index)\n// - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tvar path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\twhile ( true ) {\n\n\t\tvar match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex,\n\n\t\t\tid = match[ 1 ],\n\t\t\tidIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tvar map = container.map, next = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nfunction WebGLUniforms( gl, program ) {\n\n\tthis.seq = [];\n\tthis.map = {};\n\n\tvar n = gl.getProgramParameter( program, 35718 );\n\n\tfor ( var i = 0; i < n; ++ i ) {\n\n\t\tvar info = gl.getActiveUniform( program, i ),\n\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\tparseUniform( info, addr, this );\n\n\t}\n\n}\n\nWebGLUniforms.prototype.setValue = function ( gl, name, value, textures ) {\n\n\tvar u = this.map[ name ];\n\n\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n};\n\nWebGLUniforms.prototype.setOptional = function ( gl, object, name ) {\n\n\tvar v = object[ name ];\n\n\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n};\n\n\n// Static interface\n\nWebGLUniforms.upload = function ( gl, seq, values, textures ) {\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar u = seq[ i ],\n\t\t\tv = values[ u.id ];\n\n\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t}\n\n\t}\n\n};\n\nWebGLUniforms.seqWithValue = function ( seq, values ) {\n\n\tvar r = [];\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar u = seq[ i ];\n\t\tif ( u.id in values ) r.push( u );\n\n\t}\n\n\treturn r;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLShader( gl, type, string ) {\n\n\tvar shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\treturn shader;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar programIdCount = 0;\n\nfunction addLineNumbers( string ) {\n\n\tvar lines = string.split( '\\n' );\n\n\tfor ( var i = 0; i < lines.length; i ++ ) {\n\n\t\tlines[ i ] = ( i + 1 ) + ': ' + lines[ i ];\n\n\t}\n\n\treturn lines.join( '\\n' );\n\n}\n\nfunction getEncodingComponents( encoding ) {\n\n\tswitch ( encoding ) {\n\n\t\tcase LinearEncoding:\n\t\t\treturn [ 'Linear', '( value )' ];\n\t\tcase sRGBEncoding:\n\t\t\treturn [ 'sRGB', '( value )' ];\n\t\tcase RGBEEncoding:\n\t\t\treturn [ 'RGBE', '( value )' ];\n\t\tcase RGBM7Encoding:\n\t\t\treturn [ 'RGBM', '( value, 7.0 )' ];\n\t\tcase RGBM16Encoding:\n\t\t\treturn [ 'RGBM', '( value, 16.0 )' ];\n\t\tcase RGBDEncoding:\n\t\t\treturn [ 'RGBD', '( value, 256.0 )' ];\n\t\tcase GammaEncoding:\n\t\t\treturn [ 'Gamma', '( value, float( GAMMA_FACTOR ) )' ];\n\t\tdefault:\n\t\t\tthrow new Error( 'unsupported encoding: ' + encoding );\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tvar status = gl.getShaderParameter( shader, 35713 );\n\tvar log = gl.getShaderInfoLog( shader ).trim();\n\n\tif ( status && log === '' ) return '';\n\n\t// --enable-privileged-webgl-extension\n\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\tvar source = gl.getShaderSource( shader );\n\n\treturn 'THREE.WebGLShader: gl.getShaderInfoLog() ' + type + '\\n' + log + addLineNumbers( source );\n\n}\n\nfunction getTexelDecodingFunction( functionName, encoding ) {\n\n\tvar components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return ' + components[ 0 ] + 'ToLinear' + components[ 1 ] + '; }';\n\n}\n\nfunction getTexelEncodingFunction( functionName, encoding ) {\n\n\tvar components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }';\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tvar toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = 'Linear';\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = 'Reinhard';\n\t\t\tbreak;\n\n\t\tcase Uncharted2ToneMapping:\n\t\t\ttoneMappingName = 'Uncharted2';\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = 'OptimizedCineon';\n\t\t\tbreak;\n\n\t\tcase ACESFilmicToneMapping:\n\t\t\ttoneMappingName = 'ACESFilmic';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tthrow new Error( 'unsupported toneMapping: ' + toneMapping );\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nfunction generateExtensions( extensions, parameters, rendererExtensions ) {\n\n\textensions = extensions || {};\n\n\tvar chunks = [\n\t\t( extensions.derivatives || parameters.envMapCubeUV || parameters.bumpMap || ( parameters.normalMap && ! parameters.objectSpaceNormalMap ) || parameters.flatShading ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( extensions.fragDepth || parameters.logarithmicDepthBuffer ) && rendererExtensions.get( 'EXT_frag_depth' ) ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( extensions.drawBuffers ) && rendererExtensions.get( 'WEBGL_draw_buffers' ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( extensions.shaderTextureLOD || parameters.envMap ) && rendererExtensions.get( 'EXT_shader_texture_lod' ) ? '#extension GL_EXT_shader_texture_lod : enable' : ''\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tvar chunks = [];\n\n\tfor ( var name in defines ) {\n\n\t\tvar value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program ) {\n\n\tvar attributes = {};\n\n\tvar n = gl.getProgramParameter( program, 35721 );\n\n\tfor ( var i = 0; i < n; i ++ ) {\n\n\t\tvar info = gl.getActiveAttrib( program, i );\n\t\tvar name = info.name;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = gl.getAttribLocation( program, name );\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights );\n\n}\n\nfunction replaceClippingPlaneNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\n\n}\n\nfunction parseIncludes( string ) {\n\n\tvar pattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\n\tfunction replace( match, include ) {\n\n\t\tvar replace = ShaderChunk[ include ];\n\n\t\tif ( replace === undefined ) {\n\n\t\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t\t}\n\n\t\treturn parseIncludes( replace );\n\n\t}\n\n\treturn string.replace( pattern, replace );\n\n}\n\nfunction unrollLoops( string ) {\n\n\tvar pattern = /#pragma unroll_loop[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\n\n\tfunction replace( match, start, end, snippet ) {\n\n\t\tvar unroll = '';\n\n\t\tfor ( var i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\t\tunroll += snippet.replace( /\\[ i \\]/g, '[ ' + i + ' ]' );\n\n\t\t}\n\n\t\treturn unroll;\n\n\t}\n\n\treturn string.replace( pattern, replace );\n\n}\n\nfunction WebGLProgram( renderer, extensions, code, material, shader, parameters, capabilities ) {\n\n\tvar gl = renderer.getContext();\n\n\tvar defines = material.defines;\n\n\tvar vertexShader = shader.vertexShader;\n\tvar fragmentShader = shader.fragmentShader;\n\n\tvar shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t}\n\n\tvar envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\tvar envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\tvar envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( material.envMap.mapping ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t\tcase EquirectangularReflectionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_EQUIREC';\n\t\t\t\tbreak;\n\n\t\t\tcase SphericalReflectionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_SPHERE';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tswitch ( material.envMap.mapping ) {\n\n\t\t\tcase CubeRefractionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tswitch ( material.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tvar gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0;\n\n\t// console.log( 'building new program ' );\n\n\t//\n\n\tvar customExtensions = capabilities.isWebGL2 ? '' : generateExtensions( material.extensions, parameters, extensions );\n\n\tvar customDefines = generateDefines( defines );\n\n\t//\n\n\tvar program = gl.createProgram();\n\n\tvar prefixVertex, prefixFragment;\n\n\tif ( material.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\t'precision ' + parameters.precision + ' float;',\n\t\t\t'precision ' + parameters.precision + ' int;',\n\n\t\t\t'#define SHADER_NAME ' + shader.name,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t'#define MAX_BONES ' + parameters.maxBones,\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\t\t\tparameters.useVertexTexture ? '#define BONE_TEXTURE' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\tparameters.logarithmicDepthBuffer && ( capabilities.isWebGL2 || extensions.get( 'EXT_frag_depth' ) ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_TANGENT',\n\n\t\t\t'\tattribute vec4 tangent;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_COLOR',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_MORPHTARGETS',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\t'precision ' + parameters.precision + ' float;',\n\t\t\t'precision ' + parameters.precision + ' int;',\n\n\t\t\t'#define SHADER_NAME ' + shader.name,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest + ( parameters.alphaTest % 1 ? '' : '.0' ) : '', // add '.0' if integer\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.matcap ? '#define USE_MATCAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\n\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\n\n\t\t\tparameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\tparameters.logarithmicDepthBuffer && ( capabilities.isWebGL2 || extensions.get( 'EXT_frag_depth' ) ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\tparameters.envMap && ( capabilities.isWebGL2 || extensions.get( 'EXT_shader_texture_lod' ) ) ? '#define TEXTURE_LOD_EXT' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\n\n\t\t\tparameters.dithering ? '#define DITHERING' : '',\n\n\t\t\t( parameters.outputEncoding || parameters.mapEncoding || parameters.matcapEncoding || parameters.envMapEncoding || parameters.emissiveMapEncoding ) ?\n\t\t\t\tShaderChunk[ 'encodings_pars_fragment' ] : '', // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tparameters.mapEncoding ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '',\n\t\t\tparameters.matcapEncoding ? getTexelDecodingFunction( 'matcapTexelToLinear', parameters.matcapEncoding ) : '',\n\t\t\tparameters.envMapEncoding ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '',\n\t\t\tparameters.emissiveMapEncoding ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '',\n\t\t\tparameters.outputEncoding ? getTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ) : '',\n\n\t\t\tparameters.depthPacking ? '#define DEPTH_PACKING ' + material.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = parseIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = parseIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( capabilities.isWebGL2 && ! material.isRawShaderMaterial ) {\n\n\t\tvar isGLSL3ShaderMaterial = false;\n\n\t\tvar versionRegex = /^\\s*#version\\s+300\\s+es\\s*\\n/;\n\n\t\tif ( material.isShaderMaterial &&\n\t\t\tvertexShader.match( versionRegex ) !== null &&\n\t\t\tfragmentShader.match( versionRegex ) !== null ) {\n\n\t\t\tisGLSL3ShaderMaterial = true;\n\n\t\t\tvertexShader = vertexShader.replace( versionRegex, '' );\n\t\t\tfragmentShader = fragmentShader.replace( versionRegex, '' );\n\n\t\t}\n\n\t\t// GLSL 3.0 conversion\n\t\tprefixVertex = [\n\t\t\t'#version 300 es\\n',\n\t\t\t'#define attribute in',\n\t\t\t'#define varying out',\n\t\t\t'#define texture2D texture'\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\n\n\t\tprefixFragment = [\n\t\t\t'#version 300 es\\n',\n\t\t\t'#define varying in',\n\t\t\tisGLSL3ShaderMaterial ? '' : 'out highp vec4 pc_fragColor;',\n\t\t\tisGLSL3ShaderMaterial ? '' : '#define gl_FragColor pc_fragColor',\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\n\t\t\t'#define texture2D texture',\n\t\t\t'#define textureCube texture',\n\t\t\t'#define texture2DProj textureProj',\n\t\t\t'#define texture2DLodEXT textureLod',\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\n\t\t\t'#define textureCubeLodEXT textureLod',\n\t\t\t'#define texture2DGradEXT textureGrad',\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\n\t\t\t'#define textureCubeGradEXT textureGrad'\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\n\n\t}\n\n\tvar vertexGlsl = prefixVertex + vertexShader;\n\tvar fragmentGlsl = prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tvar glVertexShader = WebGLShader( gl, 35633, vertexGlsl );\n\tvar glFragmentShader = WebGLShader( gl, 35632, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( material.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, material.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\t// check for link errors\n\tif ( renderer.debug.checkShaderErrors ) {\n\n\t\tvar programLog = gl.getProgramInfoLog( program ).trim();\n\t\tvar vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\tvar fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\tvar runnable = true;\n\t\tvar haveDiagnostics = true;\n\n\t\tif ( gl.getProgramParameter( program, 35714 ) === false ) {\n\n\t\t\trunnable = false;\n\n\t\t\tvar vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\tvar fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\n\n\t\t\tconsole.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), '35715', gl.getProgramParameter( program, 35715 ), 'gl.getProgramInfoLog', programLog, vertexErrors, fragmentErrors );\n\n\t\t} else if ( programLog !== '' ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog );\n\n\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\thaveDiagnostics = false;\n\n\t\t}\n\n\t\tif ( haveDiagnostics ) {\n\n\t\t\tthis.diagnostics = {\n\n\t\t\t\trunnable: runnable,\n\t\t\t\tmaterial: material,\n\n\t\t\t\tprogramLog: programLog,\n\n\t\t\t\tvertexShader: {\n\n\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t},\n\n\t\t\t\tfragmentShader: {\n\n\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t}\n\n\t// clean up\n\n\tgl.deleteShader( glVertexShader );\n\tgl.deleteShader( glFragmentShader );\n\n\t// set up caching for uniform locations\n\n\tvar cachedUniforms;\n\n\tthis.getUniforms = function () {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\tcachedUniforms = new WebGLUniforms( gl, program );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tvar cachedAttributes;\n\n\tthis.getAttributes = function () {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function () {\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t//\n\n\tthis.name = shader.name;\n\tthis.id = programIdCount ++;\n\tthis.code = code;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLPrograms( renderer, extensions, capabilities ) {\n\n\tvar programs = [];\n\n\tvar shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'phong',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tMeshMatcapMaterial: 'matcap',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow',\n\t\tSpriteMaterial: 'sprite'\n\t};\n\n\tvar parameterNames = [\n\t\t\"precision\", \"supportsVertexTextures\", \"map\", \"mapEncoding\", \"matcap\", \"matcapEncoding\", \"envMap\", \"envMapMode\", \"envMapEncoding\",\n\t\t\"lightMap\", \"aoMap\", \"emissiveMap\", \"emissiveMapEncoding\", \"bumpMap\", \"normalMap\", \"objectSpaceNormalMap\", \"displacementMap\", \"specularMap\",\n\t\t\"roughnessMap\", \"metalnessMap\", \"gradientMap\",\n\t\t\"alphaMap\", \"combine\", \"vertexColors\", \"vertexTangents\", \"fog\", \"useFog\", \"fogExp\",\n\t\t\"flatShading\", \"sizeAttenuation\", \"logarithmicDepthBuffer\", \"skinning\",\n\t\t\"maxBones\", \"useVertexTexture\", \"morphTargets\", \"morphNormals\",\n\t\t\"maxMorphTargets\", \"maxMorphNormals\", \"premultipliedAlpha\",\n\t\t\"numDirLights\", \"numPointLights\", \"numSpotLights\", \"numHemiLights\", \"numRectAreaLights\",\n\t\t\"shadowMapEnabled\", \"shadowMapType\", \"toneMapping\", 'physicallyCorrectLights',\n\t\t\"alphaTest\", \"doubleSided\", \"flipSided\", \"numClippingPlanes\", \"numClipIntersection\", \"depthPacking\", \"dithering\"\n\t];\n\n\n\tfunction allocateBones( object ) {\n\n\t\tvar skeleton = object.skeleton;\n\t\tvar bones = skeleton.bones;\n\n\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\treturn 1024;\n\n\t\t} else {\n\n\t\t\t// default for when object is not specified\n\t\t\t// ( for example when prebuilding shader to be used with multiple objects )\n\t\t\t//\n\t\t\t// - leave some extra space for other uniforms\n\t\t\t// - limit here is ANGLE's 254 max uniform vectors\n\t\t\t// (up to 54 should be safe)\n\n\t\t\tvar nVertexUniforms = capabilities.maxVertexUniforms;\n\t\t\tvar nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 );\n\n\t\t\tvar maxBones = Math.min( nVertexMatrices, bones.length );\n\n\t\t\tif ( maxBones < bones.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.' );\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\treturn maxBones;\n\n\t\t}\n\n\t}\n\n\tfunction getTextureEncodingFromMap( map, gammaOverrideLinear ) {\n\n\t\tvar encoding;\n\n\t\tif ( ! map ) {\n\n\t\t\tencoding = LinearEncoding;\n\n\t\t} else if ( map.isTexture ) {\n\n\t\t\tencoding = map.encoding;\n\n\t\t} else if ( map.isWebGLRenderTarget ) {\n\n\t\t\tconsole.warn( \"THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\tencoding = map.texture.encoding;\n\n\t\t}\n\n\t\t// add backwards compatibility for WebGLRenderer.gammaInput/gammaOutput parameter, should probably be removed at some point.\n\t\tif ( encoding === LinearEncoding && gammaOverrideLinear ) {\n\n\t\t\tencoding = GammaEncoding;\n\n\t\t}\n\n\t\treturn encoding;\n\n\t}\n\n\tthis.getParameters = function ( material, lights, shadows, fog, nClipPlanes, nClipIntersection, object ) {\n\n\t\tvar shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tvar maxBones = object.isSkinnedMesh ? allocateBones( object ) : 0;\n\t\tvar precision = capabilities.precision;\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar currentRenderTarget = renderer.getRenderTarget();\n\n\t\tvar parameters = {\n\n\t\t\tshaderID: shaderID,\n\n\t\t\tprecision: precision,\n\t\t\tsupportsVertexTextures: capabilities.vertexTextures,\n\t\t\toutputEncoding: getTextureEncodingFromMap( ( ! currentRenderTarget ) ? null : currentRenderTarget.texture, renderer.gammaOutput ),\n\t\t\tmap: !! material.map,\n\t\t\tmapEncoding: getTextureEncodingFromMap( material.map, renderer.gammaInput ),\n\t\t\tmatcap: !! material.matcap,\n\t\t\tmatcapEncoding: getTextureEncodingFromMap( material.matcap, renderer.gammaInput ),\n\t\t\tenvMap: !! material.envMap,\n\t\t\tenvMapMode: material.envMap && material.envMap.mapping,\n\t\t\tenvMapEncoding: getTextureEncodingFromMap( material.envMap, renderer.gammaInput ),\n\t\t\tenvMapCubeUV: ( !! material.envMap ) && ( ( material.envMap.mapping === CubeUVReflectionMapping ) || ( material.envMap.mapping === CubeUVRefractionMapping ) ),\n\t\t\tlightMap: !! material.lightMap,\n\t\t\taoMap: !! material.aoMap,\n\t\t\temissiveMap: !! material.emissiveMap,\n\t\t\temissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap, renderer.gammaInput ),\n\t\t\tbumpMap: !! material.bumpMap,\n\t\t\tnormalMap: !! material.normalMap,\n\t\t\tobjectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\n\t\t\tdisplacementMap: !! material.displacementMap,\n\t\t\troughnessMap: !! material.roughnessMap,\n\t\t\tmetalnessMap: !! material.metalnessMap,\n\t\t\tspecularMap: !! material.specularMap,\n\t\t\talphaMap: !! material.alphaMap,\n\n\t\t\tgradientMap: !! material.gradientMap,\n\n\t\t\tcombine: material.combine,\n\n\t\t\tvertexTangents: ( material.normalMap && material.vertexTangents ),\n\t\t\tvertexColors: material.vertexColors,\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog,\n\t\t\tfogExp: ( fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: material.flatShading,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation,\n\t\t\tlogarithmicDepthBuffer: capabilities.logarithmicDepthBuffer,\n\n\t\t\tskinning: material.skinning && maxBones > 0,\n\t\t\tmaxBones: maxBones,\n\t\t\tuseVertexTexture: capabilities.floatVertexTextures,\n\n\t\t\tmorphTargets: material.morphTargets,\n\t\t\tmorphNormals: material.morphNormals,\n\t\t\tmaxMorphTargets: renderer.maxMorphTargets,\n\t\t\tmaxMorphNormals: renderer.maxMorphNormals,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumClippingPlanes: nClipPlanes,\n\t\t\tnumClipIntersection: nClipIntersection,\n\n\t\t\tdithering: material.dithering,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && object.receiveShadow && shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: renderer.toneMapping,\n\t\t\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\talphaTest: material.alphaTest,\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tdepthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false\n\n\t\t};\n\n\t\treturn parameters;\n\n\t};\n\n\tthis.getProgramCode = function ( material, parameters ) {\n\n\t\tvar array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( material.fragmentShader );\n\t\t\tarray.push( material.vertexShader );\n\n\t\t}\n\n\t\tif ( material.defines !== undefined ) {\n\n\t\t\tfor ( var name in material.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( material.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( var i = 0; i < parameterNames.length; i ++ ) {\n\n\t\t\tarray.push( parameters[ parameterNames[ i ] ] );\n\n\t\t}\n\n\t\tarray.push( material.onBeforeCompile.toString() );\n\n\t\tarray.push( renderer.gammaOutput );\n\n\t\tarray.push( renderer.gammaFactor );\n\n\t\treturn array.join();\n\n\t};\n\n\tthis.acquireProgram = function ( material, shader, parameters, code ) {\n\n\t\tvar program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( var p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tvar programInfo = programs[ p ];\n\n\t\t\tif ( programInfo.code === code ) {\n\n\t\t\t\tprogram = programInfo;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, extensions, code, material, shader, parameters, capabilities );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t};\n\n\tthis.releaseProgram = function ( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tvar i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t};\n\n\t// Exposed for resource monitoring & error feedback via renderer.info:\n\tthis.programs = programs;\n\n}\n\n/**\n * @author fordacious / fordacious.github.io\n */\n\nfunction WebGLProperties() {\n\n\tvar properties = new WeakMap();\n\n\tfunction get( object ) {\n\n\t\tvar map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.program !== b.program ) {\n\n\t\treturn a.program.id - b.program.id;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\n\nfunction WebGLRenderList() {\n\n\tvar renderItems = [];\n\tvar renderItemsIndex = 0;\n\n\tvar opaque = [];\n\tvar transparent = [];\n\n\tvar defaultProgram = { id: - 1 };\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction getNextRenderItem( object, geometry, material, groupOrder, z, group ) {\n\n\t\tvar renderItem = renderItems[ renderItemsIndex ];\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tprogram: material.program || defaultProgram,\n\t\t\t\tgroupOrder: groupOrder,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.program = material.program || defaultProgram;\n\t\t\trenderItem.groupOrder = groupOrder;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\t\trenderItemsIndex ++;\n\n\t\treturn renderItem;\n\n\t}\n\n\tfunction push( object, geometry, material, groupOrder, z, group ) {\n\n\t\tvar renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\t( material.transparent === true ? transparent : opaque ).push( renderItem );\n\n\t}\n\n\tfunction unshift( object, geometry, material, groupOrder, z, group ) {\n\n\t\tvar renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\t( material.transparent === true ? transparent : opaque ).unshift( renderItem );\n\n\t}\n\n\tfunction sort() {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( painterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( reversePainterSortStable );\n\n\t}\n\n\treturn {\n\t\topaque: opaque,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\t\tunshift: unshift,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists() {\n\n\tvar lists = {};\n\n\tfunction onSceneDispose( event ) {\n\n\t\tvar scene = event.target;\n\n\t\tscene.removeEventListener( 'dispose', onSceneDispose );\n\n\t\tdelete lists[ scene.id ];\n\n\t}\n\n\tfunction get( scene, camera ) {\n\n\t\tvar cameras = lists[ scene.id ];\n\t\tvar list;\n\t\tif ( cameras === undefined ) {\n\n\t\t\tlist = new WebGLRenderList();\n\t\t\tlists[ scene.id ] = {};\n\t\t\tlists[ scene.id ][ camera.id ] = list;\n\n\t\t\tscene.addEventListener( 'dispose', onSceneDispose );\n\n\t\t} else {\n\n\t\t\tlist = cameras[ camera.id ];\n\t\t\tif ( list === undefined ) {\n\n\t\t\t\tlist = new WebGLRenderList();\n\t\t\t\tcameras[ camera.id ] = list;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = {};\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction UniformsCache() {\n\n\tvar lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tvar uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\n\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0,\n\n\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0,\n\n\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\nvar nextVersion = 0;\n\nfunction WebGLLights() {\n\n\tvar cache = new UniformsCache();\n\n\tvar state = {\n\n\t\tversion: 0,\n\n\t\thash: {\n\t\t\tdirectionalLength: - 1,\n\t\t\tpointLength: - 1,\n\t\t\tspotLength: - 1,\n\t\t\trectAreaLength: - 1,\n\t\t\themiLength: - 1,\n\t\t\tshadowsLength: - 1,\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tprobe: [],\n\t\tdirectional: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotShadowMap: [],\n\t\tspotShadowMatrix: [],\n\t\trectArea: [],\n\t\tpoint: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: []\n\n\t};\n\n\tfor ( var i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\n\n\tvar vector3 = new Vector3();\n\tvar matrix4 = new Matrix4();\n\tvar matrix42 = new Matrix4();\n\n\tfunction setup( lights, shadows, camera ) {\n\n\t\tvar r = 0, g = 0, b = 0;\n\n\t\tfor ( var i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\n\n\t\tvar directionalLength = 0;\n\t\tvar pointLength = 0;\n\t\tvar spotLength = 0;\n\t\tvar rectAreaLength = 0;\n\t\tvar hemiLength = 0;\n\n\t\tvar viewMatrix = camera.matrixWorldInverse;\n\n\t\tfor ( var i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tvar light = lights[ i ];\n\n\t\t\tvar color = light.color;\n\t\t\tvar intensity = light.intensity;\n\t\t\tvar distance = light.distance;\n\n\t\t\tvar shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity;\n\t\t\t\tg += color.g * intensity;\n\t\t\t\tb += color.b * intensity;\n\n\t\t\t} else if ( light.isLightProbe ) {\n\n\t\t\t\tfor ( var j = 0; j < 9; j ++ ) {\n\n\t\t\t\t\tstate.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );\n\n\t\t\t\t}\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tvar shadow = light.shadow;\n\n\t\t\t\t\tuniforms.shadowBias = shadow.bias;\n\t\t\t\t\tuniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tuniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t}\n\n\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tvar shadow = light.shadow;\n\n\t\t\t\t\tuniforms.shadowBias = shadow.bias;\n\t\t\t\t\tuniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tuniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\t\t\t\tstate.spotShadowMatrix[ spotLength ] = light.shadow.matrix;\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\t// (a) intensity is the total visible light emitted\n\t\t\t\t//uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) );\n\n\t\t\t\t// (b) intensity is the brightness of the light\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\t// TODO (abelnation): RectAreaLight distance?\n\t\t\t\t// uniforms.distance = distance;\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tvar shadow = light.shadow;\n\n\t\t\t\t\tuniforms.shadowBias = shadow.bias;\n\t\t\t\t\tuniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tuniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tuniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tuniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t}\n\n\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\t\t\t\tuniforms.direction.normalize();\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tvar hash = state.hash;\n\n\t\tif ( hash.directionalLength !== directionalLength ||\n\t\t\thash.pointLength !== pointLength ||\n\t\t\thash.spotLength !== spotLength ||\n\t\t\thash.rectAreaLength !== rectAreaLength ||\n\t\t\thash.hemiLength !== hemiLength ||\n\t\t\thash.shadowsLength !== shadows.length ) {\n\n\t\t\tstate.directional.length = directionalLength;\n\t\t\tstate.spot.length = spotLength;\n\t\t\tstate.rectArea.length = rectAreaLength;\n\t\t\tstate.point.length = pointLength;\n\t\t\tstate.hemi.length = hemiLength;\n\n\t\t\thash.directionalLength = directionalLength;\n\t\t\thash.pointLength = pointLength;\n\t\t\thash.spotLength = spotLength;\n\t\t\thash.rectAreaLength = rectAreaLength;\n\t\t\thash.hemiLength = hemiLength;\n\t\t\thash.shadowsLength = shadows.length;\n\n\t\t\tstate.version = nextVersion ++;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tstate: state\n\t};\n\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebGLRenderState() {\n\n\tvar lights = new WebGLLights();\n\n\tvar lightsArray = [];\n\tvar shadowsArray = [];\n\n\tfunction init() {\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction setupLights( camera ) {\n\n\t\tlights.setup( lightsArray, shadowsArray, camera );\n\n\t}\n\n\tvar state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\n\t\tlights: lights\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates() {\n\n\tvar renderStates = {};\n\n\tfunction onSceneDispose( event ) {\n\n\t\tvar scene = event.target;\n\n\t\tscene.removeEventListener( 'dispose', onSceneDispose );\n\n\t\tdelete renderStates[ scene.id ];\n\n\t}\n\n\tfunction get( scene, camera ) {\n\n\t\tvar renderState;\n\n\t\tif ( renderStates[ scene.id ] === undefined ) {\n\n\t\t\trenderState = new WebGLRenderState();\n\t\t\trenderStates[ scene.id ] = {};\n\t\t\trenderStates[ scene.id ][ camera.id ] = renderState;\n\n\t\t\tscene.addEventListener( 'dispose', onSceneDispose );\n\n\t\t} else {\n\n\t\t\tif ( renderStates[ scene.id ][ camera.id ] === undefined ) {\n\n\t\t\t\trenderState = new WebGLRenderState();\n\t\t\t\trenderStates[ scene.id ][ camera.id ] = renderState;\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStates[ scene.id ][ camera.id ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = {};\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / https://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n * }\n */\n\nfunction MeshDepthMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDepthMaterial';\n\n\tthis.depthPacking = BasicDepthPacking;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDepthMaterial.prototype = Object.create( Material.prototype );\nMeshDepthMaterial.prototype.constructor = MeshDepthMaterial;\n\nMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\n\nMeshDepthMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.depthPacking = source.depthPacking;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *\n * referencePosition: ,\n * nearDistance: ,\n * farDistance: ,\n *\n * skinning: ,\n * morphTargets: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: \n *\n * }\n */\n\nfunction MeshDistanceMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDistanceMaterial';\n\n\tthis.referencePosition = new Vector3();\n\tthis.nearDistance = 1;\n\tthis.farDistance = 1000;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.fog = false;\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDistanceMaterial.prototype = Object.create( Material.prototype );\nMeshDistanceMaterial.prototype.constructor = MeshDistanceMaterial;\n\nMeshDistanceMaterial.prototype.isMeshDistanceMaterial = true;\n\nMeshDistanceMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.referencePosition.copy( source.referencePosition );\n\tthis.nearDistance = source.nearDistance;\n\tthis.farDistance = source.farDistance;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLShadowMap( _renderer, _objects, maxTextureSize ) {\n\n\tvar _frustum = new Frustum(),\n\t\t_projScreenMatrix = new Matrix4(),\n\n\t\t_shadowMapSize = new Vector2(),\n\t\t_maxShadowMapSize = new Vector2( maxTextureSize, maxTextureSize ),\n\n\t\t_lookTarget = new Vector3(),\n\t\t_lightPositionWorld = new Vector3(),\n\n\t\t_MorphingFlag = 1,\n\t\t_SkinningFlag = 2,\n\n\t\t_NumberOfMaterialVariants = ( _MorphingFlag | _SkinningFlag ) + 1,\n\n\t\t_depthMaterials = new Array( _NumberOfMaterialVariants ),\n\t\t_distanceMaterials = new Array( _NumberOfMaterialVariants ),\n\n\t\t_materialCache = {};\n\n\tvar shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };\n\n\tvar cubeDirections = [\n\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t];\n\n\tvar cubeUps = [\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t];\n\n\tvar cube2DViewPorts = [\n\t\tnew Vector4(), new Vector4(), new Vector4(),\n\t\tnew Vector4(), new Vector4(), new Vector4()\n\t];\n\n\t// init\n\n\tfor ( var i = 0; i !== _NumberOfMaterialVariants; ++ i ) {\n\n\t\tvar useMorphing = ( i & _MorphingFlag ) !== 0;\n\t\tvar useSkinning = ( i & _SkinningFlag ) !== 0;\n\n\t\tvar depthMaterial = new MeshDepthMaterial( {\n\n\t\t\tdepthPacking: RGBADepthPacking,\n\n\t\t\tmorphTargets: useMorphing,\n\t\t\tskinning: useSkinning\n\n\t\t} );\n\n\t\t_depthMaterials[ i ] = depthMaterial;\n\n\t\t//\n\n\t\tvar distanceMaterial = new MeshDistanceMaterial( {\n\n\t\t\tmorphTargets: useMorphing,\n\t\t\tskinning: useSkinning\n\n\t\t} );\n\n\t\t_distanceMaterials[ i ] = distanceMaterial;\n\n\t}\n\n\t//\n\n\tvar scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\n\tthis.render = function ( lights, scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( lights.length === 0 ) return;\n\n\t\tvar currentRenderTarget = _renderer.getRenderTarget();\n\t\tvar activeCubeFace = _renderer.getActiveCubeFace();\n\t\tvar activeMipmapLevel = _renderer.getActiveMipmapLevel();\n\n\t\tvar _state = _renderer.state;\n\n\t\t// Set GL state for depth map.\n\t\t_state.setBlending( NoBlending );\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.buffers.depth.setTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// render depth map\n\n\t\tvar faceCount;\n\n\t\tfor ( var i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tvar light = lights[ i ];\n\t\t\tvar shadow = light.shadow;\n\t\t\tvar isPointLight = light && light.isPointLight;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tvar shadowCamera = shadow.camera;\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\t\t\t_shadowMapSize.min( _maxShadowMapSize );\n\n\t\t\tif ( isPointLight ) {\n\n\t\t\t\tvar vpWidth = _shadowMapSize.x;\n\t\t\t\tvar vpHeight = _shadowMapSize.y;\n\n\t\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t\t// following orientation:\n\t\t\t\t//\n\t\t\t\t// xzXZ\n\t\t\t\t// y Y\n\t\t\t\t//\n\t\t\t\t// X - Positive x direction\n\t\t\t\t// x - Negative x direction\n\t\t\t\t// Y - Positive y direction\n\t\t\t\t// y - Negative y direction\n\t\t\t\t// Z - Positive z direction\n\t\t\t\t// z - Negative z direction\n\n\t\t\t\t// positive X\n\t\t\t\tcube2DViewPorts[ 0 ].set( vpWidth * 2, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// negative X\n\t\t\t\tcube2DViewPorts[ 1 ].set( 0, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// positive Z\n\t\t\t\tcube2DViewPorts[ 2 ].set( vpWidth * 3, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// negative Z\n\t\t\t\tcube2DViewPorts[ 3 ].set( vpWidth, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// positive Y\n\t\t\t\tcube2DViewPorts[ 4 ].set( vpWidth * 3, 0, vpWidth, vpHeight );\n\t\t\t\t// negative Y\n\t\t\t\tcube2DViewPorts[ 5 ].set( vpWidth, 0, vpWidth, vpHeight );\n\n\t\t\t\t_shadowMapSize.x *= 4.0;\n\t\t\t\t_shadowMapSize.y *= 2.0;\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null ) {\n\n\t\t\t\tvar pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + \".shadowMap\";\n\n\t\t\t\tshadowCamera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\tif ( shadow.isSpotLightShadow ) {\n\n\t\t\t\tshadow.update( light );\n\n\t\t\t}\n\n\t\t\tvar shadowMap = shadow.map;\n\t\t\tvar shadowMatrix = shadow.matrix;\n\n\t\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\t\tshadowCamera.position.copy( _lightPositionWorld );\n\n\t\t\tif ( isPointLight ) {\n\n\t\t\t\tfaceCount = 6;\n\n\t\t\t\t// for point lights we set the shadow matrix to be a translation-only matrix\n\t\t\t\t// equal to inverse of the light's position\n\n\t\t\t\tshadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );\n\n\t\t\t} else {\n\n\t\t\t\tfaceCount = 1;\n\n\t\t\t\t_lookTarget.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tshadowCamera.lookAt( _lookTarget );\n\t\t\t\tshadowCamera.updateMatrixWorld();\n\n\t\t\t\t// compute shadow matrix\n\n\t\t\t\tshadowMatrix.set(\n\t\t\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t\t\t);\n\n\t\t\t\tshadowMatrix.multiply( shadowCamera.projectionMatrix );\n\t\t\t\tshadowMatrix.multiply( shadowCamera.matrixWorldInverse );\n\n\t\t\t}\n\n\t\t\t_renderer.setRenderTarget( shadowMap );\n\t\t\t_renderer.clear();\n\n\t\t\t// render shadow map for each cube face (if omni-directional) or\n\t\t\t// run a single pass if not\n\n\t\t\tfor ( var face = 0; face < faceCount; face ++ ) {\n\n\t\t\t\tif ( isPointLight ) {\n\n\t\t\t\t\t_lookTarget.copy( shadowCamera.position );\n\t\t\t\t\t_lookTarget.add( cubeDirections[ face ] );\n\t\t\t\t\tshadowCamera.up.copy( cubeUps[ face ] );\n\t\t\t\t\tshadowCamera.lookAt( _lookTarget );\n\t\t\t\t\tshadowCamera.updateMatrixWorld();\n\n\t\t\t\t\tvar vpDimensions = cube2DViewPorts[ face ];\n\t\t\t\t\t_state.viewport( vpDimensions );\n\n\t\t\t\t}\n\n\t\t\t\t// update camera matrices and frustum\n\n\t\t\t\t_projScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\t\t\t_frustum.setFromMatrix( _projScreenMatrix );\n\n\t\t\t\t// set object matrices & frustum culling\n\n\t\t\t\trenderObject( scene, camera, shadowCamera, isPointLight );\n\n\t\t\t}\n\n\t\t}\n\n\t\tscope.needsUpdate = false;\n\n\t\t_renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel );\n\n\t};\n\n\tfunction getDepthMaterial( object, material, isPointLight, lightPositionWorld, shadowCameraNear, shadowCameraFar ) {\n\n\t\tvar geometry = object.geometry;\n\n\t\tvar result = null;\n\n\t\tvar materialVariants = _depthMaterials;\n\t\tvar customMaterial = object.customDepthMaterial;\n\n\t\tif ( isPointLight ) {\n\n\t\t\tmaterialVariants = _distanceMaterials;\n\t\t\tcustomMaterial = object.customDistanceMaterial;\n\n\t\t}\n\n\t\tif ( ! customMaterial ) {\n\n\t\t\tvar useMorphing = false;\n\n\t\t\tif ( material.morphTargets ) {\n\n\t\t\t\tif ( geometry && geometry.isBufferGeometry ) {\n\n\t\t\t\t\tuseMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0;\n\n\t\t\t\t} else if ( geometry && geometry.isGeometry ) {\n\n\t\t\t\t\tuseMorphing = geometry.morphTargets && geometry.morphTargets.length > 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( object.isSkinnedMesh && material.skinning === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:', object );\n\n\t\t\t}\n\n\t\t\tvar useSkinning = object.isSkinnedMesh && material.skinning;\n\n\t\t\tvar variantIndex = 0;\n\n\t\t\tif ( useMorphing ) variantIndex |= _MorphingFlag;\n\t\t\tif ( useSkinning ) variantIndex |= _SkinningFlag;\n\n\t\t\tresult = materialVariants[ variantIndex ];\n\n\t\t} else {\n\n\t\t\tresult = customMaterial;\n\n\t\t}\n\n\t\tif ( _renderer.localClippingEnabled &&\n\t\t\t\tmaterial.clipShadows === true &&\n\t\t\t\tmaterial.clippingPlanes.length !== 0 ) {\n\n\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t// appropriate state\n\n\t\t\tvar keyA = result.uuid, keyB = material.uuid;\n\n\t\t\tvar materialsForVariant = _materialCache[ keyA ];\n\n\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t}\n\n\t\t\tvar cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\n\t\t\t}\n\n\t\t\tresult = cachedMaterial;\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tresult.side = ( material.shadowSide != null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( isPointLight && result.isMeshDistanceMaterial ) {\n\n\t\t\tresult.referencePosition.copy( lightPositionWorld );\n\t\t\tresult.nearDistance = shadowCameraNear;\n\t\t\tresult.farDistance = shadowCameraFar;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, isPointLight ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tvar visible = object.layers.test( camera.layers );\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( object.castShadow && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tvar geometry = _objects.update( object );\n\t\t\t\tvar material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tvar groups = geometry.groups;\n\n\t\t\t\t\tfor ( var k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tvar group = groups[ k ];\n\t\t\t\t\t\tvar groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tvar depthMaterial = getDepthMaterial( object, groupMaterial, isPointLight, _lightPositionWorld, shadowCamera.near, shadowCamera.far );\n\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\tvar depthMaterial = getDepthMaterial( object, material, isPointLight, _lightPositionWorld, shadowCamera.near, shadowCamera.far );\n\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, isPointLight );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLState( gl, extensions, utils, capabilities ) {\n\n\tfunction ColorBuffer() {\n\n\t\tvar locked = false;\n\n\t\tvar color = new Vector4();\n\t\tvar currentColorMask = null;\n\t\tvar currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tvar locked = false;\n\n\t\tvar currentDepthMask = null;\n\t\tvar currentDepthFunc = null;\n\t\tvar currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( 2929 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( 2929 );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tif ( depthFunc ) {\n\n\t\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 512 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 519 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 513 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 514 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 518 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 516 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 517 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tvar locked = false;\n\n\t\tvar currentStencilMask = null;\n\t\tvar currentStencilFunc = null;\n\t\tvar currentStencilRef = null;\n\t\tvar currentStencilFuncMask = null;\n\t\tvar currentStencilFail = null;\n\t\tvar currentStencilZFail = null;\n\t\tvar currentStencilZPass = null;\n\t\tvar currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\tenable( 2960 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( 2960 );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t currentStencilRef \t!== stencilRef \t||\n\t\t\t\t currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail\t !== stencilFail \t||\n\t\t\t\t currentStencilZFail !== stencilZFail ||\n\t\t\t\t currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tvar colorBuffer = new ColorBuffer();\n\tvar depthBuffer = new DepthBuffer();\n\tvar stencilBuffer = new StencilBuffer();\n\n\tvar maxVertexAttributes = gl.getParameter( 34921 );\n\tvar newAttributes = new Uint8Array( maxVertexAttributes );\n\tvar enabledAttributes = new Uint8Array( maxVertexAttributes );\n\tvar attributeDivisors = new Uint8Array( maxVertexAttributes );\n\n\tvar enabledCapabilities = {};\n\n\tvar compressedTextureFormats = null;\n\n\tvar currentProgram = null;\n\n\tvar currentBlendingEnabled = null;\n\tvar currentBlending = null;\n\tvar currentBlendEquation = null;\n\tvar currentBlendSrc = null;\n\tvar currentBlendDst = null;\n\tvar currentBlendEquationAlpha = null;\n\tvar currentBlendSrcAlpha = null;\n\tvar currentBlendDstAlpha = null;\n\tvar currentPremultipledAlpha = false;\n\n\tvar currentFlipSided = null;\n\tvar currentCullFace = null;\n\n\tvar currentLineWidth = null;\n\n\tvar currentPolygonOffsetFactor = null;\n\tvar currentPolygonOffsetUnits = null;\n\n\tvar maxTextures = gl.getParameter( 35661 );\n\n\tvar lineWidthAvailable = false;\n\tvar version = 0;\n\tvar glVersion = gl.getParameter( 7938 );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^OpenGL\\ ES\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tvar currentTextureSlot = null;\n\tvar currentBoundTextures = {};\n\n\tvar currentScissor = new Vector4();\n\tvar currentViewport = new Vector4();\n\n\tfunction createTexture( type, target, count ) {\n\n\t\tvar data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tvar texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, 10241, 9728 );\n\t\tgl.texParameteri( type, 10240, 9728 );\n\n\t\tfor ( var i = 0; i < count; i ++ ) {\n\n\t\t\tgl.texImage2D( target + i, 0, 6408, 1, 1, 0, 6408, 5121, data );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tvar emptyTextures = {};\n\temptyTextures[ 3553 ] = createTexture( 3553, 3553, 1 );\n\temptyTextures[ 34067 ] = createTexture( 34067, 34069, 6 );\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( 2929 );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( 2884 );\n\n\tsetBlending( NoBlending );\n\n\t//\n\n\tfunction initAttributes() {\n\n\t\tfor ( var i = 0, l = newAttributes.length; i < l; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tenableAttributeAndDivisor( attribute, 0 );\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\tvar extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tfor ( var i = 0, l = enabledAttributes.length; i !== l; ++ i ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction enable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tenabledCapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tenabledCapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction getCompressedTextureFormats() {\n\n\t\tif ( compressedTextureFormats === null ) {\n\n\t\t\tcompressedTextureFormats = [];\n\n\t\t\tif ( extensions.get( 'WEBGL_compressed_texture_pvrtc' ) ||\n\t\t\t extensions.get( 'WEBGL_compressed_texture_s3tc' ) ||\n\t\t\t extensions.get( 'WEBGL_compressed_texture_etc1' ) ||\n\t\t\t extensions.get( 'WEBGL_compressed_texture_astc' ) ) {\n\n\t\t\t\tvar formats = gl.getParameter( 34467 );\n\n\t\t\t\tfor ( var i = 0; i < formats.length; i ++ ) {\n\n\t\t\t\t\tcompressedTextureFormats.push( formats[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn compressedTextureFormats;\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending === NoBlending ) {\n\n\t\t\tif ( currentBlendingEnabled ) {\n\n\t\t\t\tdisable( 3042 );\n\t\t\t\tcurrentBlendingEnabled = false;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( ! currentBlendingEnabled ) {\n\n\t\t\tenable( 3042 );\n\t\t\tcurrentBlendingEnabled = true;\n\n\t\t}\n\n\t\tif ( blending !== CustomBlending ) {\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tif ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {\n\n\t\t\t\t\tgl.blendEquation( 32774 );\n\n\t\t\t\t\tcurrentBlendEquation = AddEquation;\n\t\t\t\t\tcurrentBlendEquationAlpha = AddEquation;\n\n\t\t\t\t}\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 1, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 1, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 0, 769, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 768, 0, 770 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 770, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 770, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 769 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 768 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\tcurrentBlendDst = null;\n\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\tcurrentBlendDstAlpha = null;\n\n\t\t\t\tcurrentBlending = blending;\n\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// custom blending\n\n\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\tgl.blendEquationSeparate( utils.convert( blendEquation ), utils.convert( blendEquationAlpha ) );\n\n\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t}\n\n\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\tgl.blendFuncSeparate( utils.convert( blendSrc ), utils.convert( blendDst ), utils.convert( blendSrcAlpha ), utils.convert( blendDstAlpha ) );\n\n\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\tcurrentBlendDst = blendDst;\n\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = null;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( 2884 )\n\t\t\t: enable( 2884 );\n\n\t\tvar flipSided = ( material.side === BackSide );\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\n\n\t\tsetFlipSided( flipSided );\n\n\t\t( material.blending === NormalBlending && material.transparent === false )\n\t\t\t? setBlending( NoBlending )\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha );\n\n\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\tdepthBuffer.setTest( material.depthTest );\n\t\tdepthBuffer.setMask( material.depthWrite );\n\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\tvar stencilWrite = material.stencilWrite;\n\t\tstencilBuffer.setTest( stencilWrite );\n\t\tif ( stencilWrite ) {\n\n\t\t\tstencilBuffer.setFunc( material.stencilFunc, material.stencilRef, material.stencilMask );\n\t\t\tstencilBuffer.setOp( material.stencilFail, material.stencilZFail, material.stencilZPass );\n\n\t\t}\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( 2304 );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( 2305 );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( 2884 );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( 1029 );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( 1028 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( 1032 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 2884 );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( 32823 );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 32823 );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( 3089 );\n\n\t\t} else {\n\n\t\t\tdisable( 3089 );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = 33984 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture ) {\n\n\t\tif ( currentTextureSlot === null ) {\n\n\t\t\tactiveTexture();\n\n\t\t}\n\n\t\tvar boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ currentTextureSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\tfor ( var i = 0; i < enabledAttributes.length; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] === 1 ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tenabledCapabilities = {};\n\n\t\tcompressedTextureFormats = null;\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlending = null;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tenableAttributeAndDivisor: enableAttributeAndDivisor,\n\t\tdisableUnusedAttributes: disableUnusedAttributes,\n\t\tenable: enable,\n\t\tdisable: disable,\n\t\tgetCompressedTextureFormats: getCompressedTextureFormats,\n\n\t\tuseProgram: useProgram,\n\n\t\tsetBlending: setBlending,\n\t\tsetMaterial: setMaterial,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\ttexImage2D: texImage2D,\n\t\ttexImage3D: texImage3D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tvar _videoTextures = {};\n\tvar _canvas;\n\n\t//\n\n\tvar useOffscreenCanvas = typeof OffscreenCanvas !== 'undefined';\n\n\tfunction createCanvas( width, height ) {\n\n\t\t// Use OffscreenCanvas when available. Specially needed in web workers\n\n\t\treturn useOffscreenCanvas ?\n\t\t\tnew OffscreenCanvas( width, height ) :\n\t\t\tdocument.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\n\t}\n\n\tfunction resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) {\n\n\t\tvar scale = 1;\n\n\t\t// handle case if texture exceeds max size\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\tscale = maxSize / Math.max( image.width, image.height );\n\n\t\t}\n\n\t\t// only perform resize if necessary\n\n\t\tif ( scale < 1 || needsPowerOfTwo === true ) {\n\n\t\t\t// only perform resize for certain image types\n\n\t\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\t\tvar floor = needsPowerOfTwo ? _Math.floorPowerOfTwo : Math.floor;\n\n\t\t\t\tvar width = floor( scale * image.width );\n\t\t\t\tvar height = floor( scale * image.height );\n\n\t\t\t\tif ( _canvas === undefined ) _canvas = createCanvas( width, height );\n\n\t\t\t\t// cube textures can't reuse the same canvas\n\n\t\t\t\tvar canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;\n\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\n\t\t\t\tvar context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, width, height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' );\n\n\t\t\t\treturn canvas;\n\n\t\t\t} else {\n\n\t\t\t\tif ( 'data' in image ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' );\n\n\t\t\t\t}\n\n\t\t\t\treturn image;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction isPowerOfTwo( image ) {\n\n\t\treturn _Math.isPowerOfTwo( image.width ) && _Math.isPowerOfTwo( image.height );\n\n\t}\n\n\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\tif ( capabilities.isWebGL2 ) return false;\n\n\t\treturn ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||\n\t\t\t( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );\n\n\t}\n\n\tfunction textureNeedsGenerateMipmaps( texture, supportsMips ) {\n\n\t\treturn texture.generateMipmaps && supportsMips &&\n\t\t\ttexture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n\n\t}\n\n\tfunction generateMipmap( target, texture, width, height ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\t// Note: Math.log( x ) * Math.LOG2E used instead of Math.log2( x ) which is not supported by IE11\n\t\ttextureProperties.__maxMipLevel = Math.log( Math.max( width, height ) ) * Math.LOG2E;\n\n\t}\n\n\tfunction getInternalFormat( glFormat, glType ) {\n\n\t\tif ( ! capabilities.isWebGL2 ) return glFormat;\n\n\t\tvar internalFormat = glFormat;\n\n\t\tif ( glFormat === 6403 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 33326;\n\t\t\tif ( glType === 5131 ) internalFormat = 33325;\n\t\t\tif ( glType === 5121 ) internalFormat = 33321;\n\n\t\t}\n\n\t\tif ( glFormat === 6407 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34837;\n\t\t\tif ( glType === 5131 ) internalFormat = 34843;\n\t\t\tif ( glType === 5121 ) internalFormat = 32849;\n\n\t\t}\n\n\t\tif ( glFormat === 6408 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34836;\n\t\t\tif ( glType === 5131 ) internalFormat = 34842;\n\t\t\tif ( glType === 5121 ) internalFormat = 32856;\n\n\t\t}\n\n\t\tif ( internalFormat === 33325 || internalFormat === 33326 ||\n\t\t\tinternalFormat === 34842 || internalFormat === 34836 ) {\n\n\t\t\textensions.get( 'EXT_color_buffer_float' );\n\n\t\t} else if ( internalFormat === 34843 || internalFormat === 34837 ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Floating point textures with RGB format not supported. Please use RGBA instead.' );\n\n\t\t}\n\n\t\treturn internalFormat;\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter ) {\n\n\t\t\treturn 9728;\n\n\t\t}\n\n\t\treturn 9729;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tvar texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\tif ( texture.isVideoTexture ) {\n\n\t\t\tdelete _videoTextures[ texture.id ];\n\n\t\t}\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tvar renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tvar renderTargetProperties = properties.get( renderTarget );\n\t\tvar textureProperties = properties.get( renderTarget.texture );\n\n\t\tif ( ! renderTarget ) return;\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLRenderTargetCube ) {\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\n\t\t}\n\n\t\tproperties.remove( renderTarget.texture );\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\tvar textureUnits = 0;\n\n\tfunction resetTextureUnits() {\n\n\t\ttextureUnits = 0;\n\n\t}\n\n\tfunction allocateTextureUnit() {\n\n\t\tvar textureUnit = textureUnits;\n\n\t\tif ( textureUnit >= capabilities.maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures );\n\n\t\t}\n\n\t\ttextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\t//\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tvar image = texture.image;\n\n\t\t\tif ( image === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined' );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture2DArray( texture, slot ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 35866, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture3D( texture, slot ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 32879, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.image.length === 6 ) {\n\n\t\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\t\tinitTexture( textureProperties, texture );\n\n\t\t\t\tstate.activeTexture( 33984 + slot );\n\t\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t\t\t_gl.pixelStorei( 37440, texture.flipY );\n\n\t\t\t\tvar isCompressed = ( texture && texture.isCompressedTexture );\n\t\t\t\tvar isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\t\t\tvar cubeImage = [];\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], false, true, capabilities.maxCubemapSize );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tvar image = cubeImage[ 0 ],\n\t\t\t\t\tsupportsMips = isPowerOfTwo( image ) || capabilities.isWebGL2,\n\t\t\t\t\tglFormat = utils.convert( texture.format ),\n\t\t\t\t\tglType = utils.convert( texture.type ),\n\t\t\t\t\tglInternalFormat = getInternalFormat( glFormat, glType );\n\n\t\t\t\tsetTextureParameters( 34067, texture, supportsMips );\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( ! isCompressed ) {\n\n\t\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvar mipmap, mipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\t\tfor ( var j = 0, jl = mipmaps.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tmipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\t\t\t\tif ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! isCompressed ) {\n\n\t\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t\t}\n\n\t\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\t\tgenerateMipmap( 34067, texture, image.width, image.height );\n\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__version = texture.version;\n\n\t\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t\t} else {\n\n\t\t\t\tstate.activeTexture( 33984 + slot );\n\t\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction setTextureCubeDynamic( texture, slot ) {\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, properties.get( texture ).__webglTexture );\n\n\t}\n\n\tfunction setTextureParameters( textureType, texture, supportsMips ) {\n\n\t\tvar extension;\n\n\t\tif ( supportsMips ) {\n\n\t\t\t_gl.texParameteri( textureType, 10242, utils.convert( texture.wrapS ) );\n\t\t\t_gl.texParameteri( textureType, 10243, utils.convert( texture.wrapT ) );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, utils.convert( texture.wrapR ) );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, utils.convert( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, 10241, utils.convert( texture.minFilter ) );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, 10242, 33071 );\n\t\t\t_gl.texParameteri( textureType, 10243, 33071 );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, 33071 );\n\n\t\t\t}\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.' );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, 10241, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\textension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension ) {\n\n\t\t\tif ( texture.type === FloatType && extensions.get( 'OES_texture_float_linear' ) === null ) return;\n\t\t\tif ( texture.type === HalfFloatType && ( capabilities.isWebGL2 || extensions.get( 'OES_texture_half_float_linear' ) ) === null ) return;\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction initTexture( textureProperties, texture ) {\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tvar textureType = 3553;\n\n\t\tif ( texture.isDataTexture2DArray ) textureType = 35866;\n\t\tif ( texture.isDataTexture3D ) textureType = 32879;\n\n\t\tinitTexture( textureProperties, texture );\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture );\n\n\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\n\t\tvar needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( texture.image ) === false;\n\t\tvar image = resizeImage( texture.image, needsPowerOfTwo, false, capabilities.maxTextureSize );\n\n\t\tvar supportsMips = isPowerOfTwo( image ) || capabilities.isWebGL2,\n\t\t\tglFormat = utils.convert( texture.format ),\n\t\t\tglType = utils.convert( texture.type ),\n\t\t\tglInternalFormat = getInternalFormat( glFormat, glType );\n\n\t\tsetTextureParameters( textureType, texture, supportsMips );\n\n\t\tvar mipmap, mipmaps = texture.mipmaps;\n\n\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t// populate depth texture with dummy data\n\n\t\t\tglInternalFormat = 6402;\n\n\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\tif ( ! capabilities.isWebGL2 ) throw new Error( 'Float Depth Texture only supported in WebGL2.0' );\n\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t} else if ( capabilities.isWebGL2 ) {\n\n\t\t\t\t// WebGL 2.0 requires signed internalformat for glTexImage2D\n\t\t\t\tglInternalFormat = 33189;\n\n\t\t\t}\n\n\t\t\tif ( texture.format === DepthFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedShortType;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\tif ( texture.format === DepthStencilFormat ) {\n\n\t\t\t\tglInternalFormat = 34041;\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\tif ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) {\n\n\t\t\t\t\t\tstate.compressedTexImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t} else if ( texture.isDataTexture2DArray ) {\n\n\t\t\tstate.texImage3D( 35866, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t} else if ( texture.isDataTexture3D ) {\n\n\t\t\tstate.texImage3D( 32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t} else {\n\n\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, glFormat, glType, image );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tgenerateMipmap( 3553, texture, image.width, image.height );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) {\n\n\t\tvar glFormat = utils.convert( renderTarget.texture.format );\n\t\tvar glType = utils.convert( renderTarget.texture.type );\n\t\tvar glInternalFormat = getInternalFormat( glFormat, glType );\n\t\tstate.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\t\t_gl.framebufferTexture2D( 36160, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 );\n\t\t_gl.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {\n\n\t\t_gl.bindRenderbuffer( 36161, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tvar samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, 33189, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, 33189, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 36096, 36161, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tvar samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, 35056, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, 34041, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 33306, 36161, renderbuffer );\n\n\t\t} else {\n\n\t\t\tvar glFormat = utils.convert( renderTarget.texture.format );\n\t\t\tvar glType = utils.convert( renderTarget.texture.type );\n\t\t\tvar glInternalFormat = getInternalFormat( glFormat, glType );\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tvar samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tvar isCube = ( renderTarget && renderTarget.isWebGLRenderTargetCube );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tvar webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( 36160, 36096, 3553, webglDepthTexture, 0 );\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( 36160, 33306, 3553, webglDepthTexture, 0 );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tvar renderTargetProperties = properties.get( renderTarget );\n\n\t\tvar isCube = ( renderTarget.isWebGLRenderTargetCube === true );\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tvar renderTargetProperties = properties.get( renderTarget );\n\t\tvar textureProperties = properties.get( renderTarget.texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\tinfo.memory.textures ++;\n\n\t\tvar isCube = ( renderTarget.isWebGLRenderTargetCube === true );\n\t\tvar isMultisample = ( renderTarget.isWebGLMultisampleRenderTarget === true );\n\t\tvar supportsMips = isPowerOfTwo( renderTarget ) || capabilities.isWebGL2;\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = _gl.createRenderbuffer();\n\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, renderTargetProperties.__webglColorRenderbuffer );\n\t\t\t\t\tvar glFormat = utils.convert( renderTarget.texture.format );\n\t\t\t\t\tvar glType = utils.convert( renderTarget.texture.type );\n\t\t\t\t\tvar glInternalFormat = getInternalFormat( glFormat, glType );\n\t\t\t\t\tvar samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( 36160, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer );\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n\t\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, null );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 34067, renderTarget.texture, supportsMips );\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, 36064, 34069 + i );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 34067, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( 34067, null );\n\n\t\t} else {\n\n\t\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 3553, renderTarget.texture, supportsMips );\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, 36064, 3553 );\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 3553, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( 3553, null );\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tvar texture = renderTarget.texture;\n\t\tvar supportsMips = isPowerOfTwo( renderTarget ) || capabilities.isWebGL2;\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tvar target = renderTarget.isWebGLRenderTargetCube ? 34067 : 3553;\n\t\t\tvar webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\tgenerateMipmap( target, texture, renderTarget.width, renderTarget.height );\n\t\t\tstate.bindTexture( target, null );\n\n\t\t}\n\n\t}\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( renderTarget.isWebGLMultisampleRenderTarget ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tvar renderTargetProperties = properties.get( renderTarget );\n\n\t\t\t\t_gl.bindFramebuffer( 36008, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t_gl.bindFramebuffer( 36009, renderTargetProperties.__webglFramebuffer );\n\n\t\t\t\tvar width = renderTarget.width;\n\t\t\t\tvar height = renderTarget.height;\n\t\t\t\tvar mask = 16384;\n\n\t\t\t\tif ( renderTarget.depthBuffer ) mask |= 256;\n\t\t\t\tif ( renderTarget.stencilBuffer ) mask |= 1024;\n\n\t\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, 9728 );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction getRenderTargetSamples( renderTarget ) {\n\n\t\treturn ( capabilities.isWebGL2 && renderTarget.isWebGLMultisampleRenderTarget ) ?\n\t\t\tMath.min( capabilities.maxSamples, renderTarget.samples ) : 0;\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tvar id = texture.id;\n\t\tvar frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures[ id ] !== frame ) {\n\n\t\t\t_videoTextures[ id ] = frame;\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\t// backwards compatibility\n\n\tvar warnedTexture2D = false;\n\tvar warnedTextureCube = false;\n\n\tfunction safeSetTexture2D( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLRenderTarget ) {\n\n\t\t\tif ( warnedTexture2D === false ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\t\twarnedTexture2D = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\tsetTexture2D( texture, slot );\n\n\t}\n\n\tfunction safeSetTextureCube( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLRenderTargetCube ) {\n\n\t\t\tif ( warnedTextureCube === false ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead.\" );\n\t\t\t\twarnedTextureCube = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\t// currently relying on the fact that WebGLRenderTargetCube.texture is a Texture and NOT a CubeTexture\n\t\t// TODO: unify these code paths\n\t\tif ( ( texture && texture.isCubeTexture ) ||\n\t\t\t( Array.isArray( texture.image ) && texture.image.length === 6 ) ) {\n\n\t\t\t// CompressedTexture can have Array in image :/\n\n\t\t\t// this function alone should take care of cube textures\n\t\t\tsetTextureCube( texture, slot );\n\n\t\t} else {\n\n\t\t\t// assumed: texture property of THREE.WebGLRenderTargetCube\n\t\t\tsetTextureCubeDynamic( texture, slot );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.allocateTextureUnit = allocateTextureUnit;\n\tthis.resetTextureUnits = resetTextureUnits;\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTexture2DArray = setTexture2DArray;\n\tthis.setTexture3D = setTexture3D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.setTextureCubeDynamic = setTextureCubeDynamic;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\n\tthis.safeSetTexture2D = safeSetTexture2D;\n\tthis.safeSetTextureCube = safeSetTextureCube;\n\n}\n\n/**\n * @author thespite / http://www.twitter.com/thespite\n */\n\nfunction WebGLUtils( gl, extensions, capabilities ) {\n\n\tfunction convert( p ) {\n\n\t\tvar extension;\n\n\t\tif ( p === RepeatWrapping ) return 10497;\n\t\tif ( p === ClampToEdgeWrapping ) return 33071;\n\t\tif ( p === MirroredRepeatWrapping ) return 33648;\n\n\t\tif ( p === NearestFilter ) return 9728;\n\t\tif ( p === NearestMipmapNearestFilter ) return 9984;\n\t\tif ( p === NearestMipmapLinearFilter ) return 9986;\n\n\t\tif ( p === LinearFilter ) return 9729;\n\t\tif ( p === LinearMipmapNearestFilter ) return 9985;\n\t\tif ( p === LinearMipmapLinearFilter ) return 9987;\n\n\t\tif ( p === UnsignedByteType ) return 5121;\n\t\tif ( p === UnsignedShort4444Type ) return 32819;\n\t\tif ( p === UnsignedShort5551Type ) return 32820;\n\t\tif ( p === UnsignedShort565Type ) return 33635;\n\n\t\tif ( p === ByteType ) return 5120;\n\t\tif ( p === ShortType ) return 5122;\n\t\tif ( p === UnsignedShortType ) return 5123;\n\t\tif ( p === IntType ) return 5124;\n\t\tif ( p === UnsignedIntType ) return 5125;\n\t\tif ( p === FloatType ) return 5126;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) return 5131;\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) return extension.HALF_FLOAT_OES;\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return 6406;\n\t\tif ( p === RGBFormat ) return 6407;\n\t\tif ( p === RGBAFormat ) return 6408;\n\t\tif ( p === LuminanceFormat ) return 6409;\n\t\tif ( p === LuminanceAlphaFormat ) return 6410;\n\t\tif ( p === DepthFormat ) return 6402;\n\t\tif ( p === DepthStencilFormat ) return 34041;\n\t\tif ( p === RedFormat ) return 6403;\n\n\t\tif ( p === AddEquation ) return 32774;\n\t\tif ( p === SubtractEquation ) return 32778;\n\t\tif ( p === ReverseSubtractEquation ) return 32779;\n\n\t\tif ( p === ZeroFactor ) return 0;\n\t\tif ( p === OneFactor ) return 1;\n\t\tif ( p === SrcColorFactor ) return 768;\n\t\tif ( p === OneMinusSrcColorFactor ) return 769;\n\t\tif ( p === SrcAlphaFactor ) return 770;\n\t\tif ( p === OneMinusSrcAlphaFactor ) return 771;\n\t\tif ( p === DstAlphaFactor ) return 772;\n\t\tif ( p === OneMinusDstAlphaFactor ) return 773;\n\n\t\tif ( p === DstColorFactor ) return 774;\n\t\tif ( p === OneMinusDstColorFactor ) return 775;\n\t\tif ( p === SrcAlphaSaturateFactor ) return 776;\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format ||\n\t\t\tp === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format ||\n\t\t\tp === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) return extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t}\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn p;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === MinEquation || p === MaxEquation ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tif ( p === MinEquation ) return 32775;\n\t\t\t\tif ( p === MaxEquation ) return 32776;\n\n\t\t\t}\n\n\t\t\textension = extensions.get( 'EXT_blend_minmax' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === MinEquation ) return extension.MIN_EXT;\n\t\t\t\tif ( p === MaxEquation ) return extension.MAX_EXT;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) return 34042;\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) return extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t}\n\n\t\treturn 0;\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Group() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Group';\n\n}\n\nGroup.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Group,\n\n\tisGroup: true\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ArrayCamera( array ) {\n\n\tPerspectiveCamera.call( this );\n\n\tthis.cameras = array || [];\n\n}\n\nArrayCamera.prototype = Object.assign( Object.create( PerspectiveCamera.prototype ), {\n\n\tconstructor: ArrayCamera,\n\n\tisArrayCamera: true\n\n} );\n\n/**\n * @author jsantell / https://www.jsantell.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar cameraLPos = new Vector3();\nvar cameraRPos = new Vector3();\n\n/**\n * Assumes 2 cameras that are parallel and share an X-axis, and that\n * the cameras' projection and world matrices have already been set.\n * And that near and far planes are identical for both cameras.\n * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n */\nfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\tvar ipd = cameraLPos.distanceTo( cameraRPos );\n\n\tvar projL = cameraL.projectionMatrix.elements;\n\tvar projR = cameraR.projectionMatrix.elements;\n\n\t// VR systems will have identical far and near planes, and\n\t// most likely identical top and bottom frustum extents.\n\t// Use the left camera for these values.\n\tvar near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\tvar far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\tvar topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\tvar bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\tvar leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\tvar rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\tvar left = near * leftFov;\n\tvar right = near * rightFov;\n\n\t// Calculate the new camera's position offset from the\n\t// left camera. xOffset should be roughly half `ipd`.\n\tvar zOffset = ipd / ( - leftFov + rightFov );\n\tvar xOffset = zOffset * - leftFov;\n\n\t// TODO: Better way to apply this offset?\n\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\tcamera.translateX( xOffset );\n\tcamera.translateZ( zOffset );\n\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t// Find the union of the frustum values of the cameras and scale\n\t// the values so that the near plane's position does not change in world space,\n\t// although must now be relative to the new union camera.\n\tvar near2 = near + zOffset;\n\tvar far2 = far + zOffset;\n\tvar left2 = left - xOffset;\n\tvar right2 = right + ( ipd - xOffset );\n\tvar top2 = topFov * far / far2 * near2;\n\tvar bottom2 = bottomFov * far / far2 * near2;\n\n\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebVRManager( renderer ) {\n\n\tvar renderWidth, renderHeight;\n\tvar scope = this;\n\n\tvar device = null;\n\tvar frameData = null;\n\n\tvar poseTarget = null;\n\n\tvar controllers = [];\n\tvar standingMatrix = new Matrix4();\n\tvar standingMatrixInverse = new Matrix4();\n\n\tvar framebufferScaleFactor = 1.0;\n\n\tvar referenceSpaceType = 'local-floor';\n\n\tif ( typeof window !== 'undefined' && 'VRFrameData' in window ) {\n\n\t\tframeData = new window.VRFrameData();\n\t\twindow.addEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange, false );\n\n\t}\n\n\tvar matrixWorldInverse = new Matrix4();\n\tvar tempQuaternion = new Quaternion();\n\tvar tempPosition = new Vector3();\n\n\tvar cameraL = new PerspectiveCamera();\n\tcameraL.viewport = new Vector4();\n\tcameraL.layers.enable( 1 );\n\n\tvar cameraR = new PerspectiveCamera();\n\tcameraR.viewport = new Vector4();\n\tcameraR.layers.enable( 2 );\n\n\tvar cameraVR = new ArrayCamera( [ cameraL, cameraR ] );\n\tcameraVR.layers.enable( 1 );\n\tcameraVR.layers.enable( 2 );\n\n\t//\n\n\tfunction isPresenting() {\n\n\t\treturn device !== null && device.isPresenting === true;\n\n\t}\n\n\tvar currentSize = new Vector2(), currentPixelRatio;\n\n\tfunction onVRDisplayPresentChange() {\n\n\t\tif ( isPresenting() ) {\n\n\t\t\tvar eyeParameters = device.getEyeParameters( 'left' );\n\t\t\trenderWidth = 2 * eyeParameters.renderWidth * framebufferScaleFactor;\n\t\t\trenderHeight = eyeParameters.renderHeight * framebufferScaleFactor;\n\n\t\t\tcurrentPixelRatio = renderer.getPixelRatio();\n\t\t\trenderer.getSize( currentSize );\n\n\t\t\trenderer.setDrawingBufferSize( renderWidth, renderHeight, 1 );\n\n\t\t\tcameraL.viewport.set( 0, 0, renderWidth / 2, renderHeight );\n\t\t\tcameraR.viewport.set( renderWidth / 2, 0, renderWidth / 2, renderHeight );\n\n\t\t\tanimation.start();\n\n\t\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t\t} else {\n\n\t\t\tif ( scope.enabled ) {\n\n\t\t\t\trenderer.setDrawingBufferSize( currentSize.width, currentSize.height, currentPixelRatio );\n\n\t\t\t}\n\n\t\t\tanimation.stop();\n\n\t\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tvar triggers = [];\n\n\tfunction findGamepad( id ) {\n\n\t\tvar gamepads = navigator.getGamepads && navigator.getGamepads();\n\n\t\tfor ( var i = 0, j = 0, l = gamepads.length; i < l; i ++ ) {\n\n\t\t\tvar gamepad = gamepads[ i ];\n\n\t\t\tif ( gamepad && ( gamepad.id === 'Daydream Controller' ||\n\t\t\t\tgamepad.id === 'Gear VR Controller' || gamepad.id === 'Oculus Go Controller' ||\n\t\t\t\tgamepad.id === 'OpenVR Gamepad' || gamepad.id.startsWith( 'Oculus Touch' ) ||\n\t\t\t\tgamepad.id.startsWith( 'HTC Vive Focus' ) ||\n\t\t\t\tgamepad.id.startsWith( 'Spatial Controller' ) ) ) {\n\n\t\t\t\tif ( j === id ) return gamepad;\n\n\t\t\t\tj ++;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateControllers() {\n\n\t\tfor ( var i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tvar controller = controllers[ i ];\n\n\t\t\tvar gamepad = findGamepad( i );\n\n\t\t\tif ( gamepad !== undefined && gamepad.pose !== undefined ) {\n\n\t\t\t\tif ( gamepad.pose === null ) return;\n\n\t\t\t\t// Pose\n\n\t\t\t\tvar pose = gamepad.pose;\n\n\t\t\t\tif ( pose.hasPosition === false ) controller.position.set( 0.2, - 0.6, - 0.05 );\n\n\t\t\t\tif ( pose.position !== null ) controller.position.fromArray( pose.position );\n\t\t\t\tif ( pose.orientation !== null ) controller.quaternion.fromArray( pose.orientation );\n\t\t\t\tcontroller.matrix.compose( controller.position, controller.quaternion, controller.scale );\n\t\t\t\tcontroller.matrix.premultiply( standingMatrix );\n\t\t\t\tcontroller.matrix.decompose( controller.position, controller.quaternion, controller.scale );\n\t\t\t\tcontroller.matrixWorldNeedsUpdate = true;\n\t\t\t\tcontroller.visible = true;\n\n\t\t\t\t// Trigger\n\n\t\t\t\tvar buttonId = gamepad.id === 'Daydream Controller' ? 0 : 1;\n\n\t\t\t\tif ( triggers[ i ] === undefined ) triggers[ i ] = false;\n\n\t\t\t\tif ( triggers[ i ] !== gamepad.buttons[ buttonId ].pressed ) {\n\n\t\t\t\t\ttriggers[ i ] = gamepad.buttons[ buttonId ].pressed;\n\n\t\t\t\t\tif ( triggers[ i ] === true ) {\n\n\t\t\t\t\t\tcontroller.dispatchEvent( { type: 'selectstart' } );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tcontroller.dispatchEvent( { type: 'selectend' } );\n\t\t\t\t\t\tcontroller.dispatchEvent( { type: 'select' } );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tcontroller.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateViewportFromBounds( viewport, bounds ) {\n\n\t\tif ( bounds !== null && bounds.length === 4 ) {\n\n\t\t\tviewport.set( bounds[ 0 ] * renderWidth, bounds[ 1 ] * renderHeight, bounds[ 2 ] * renderWidth, bounds[ 3 ] * renderHeight );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.enabled = false;\n\n\tthis.getController = function ( id ) {\n\n\t\tvar controller = controllers[ id ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new Group();\n\t\t\tcontroller.matrixAutoUpdate = false;\n\t\t\tcontroller.visible = false;\n\n\t\t\tcontrollers[ id ] = controller;\n\n\t\t}\n\n\t\treturn controller;\n\n\t};\n\n\tthis.getDevice = function () {\n\n\t\treturn device;\n\n\t};\n\n\tthis.setDevice = function ( value ) {\n\n\t\tif ( value !== undefined ) device = value;\n\n\t\tanimation.setContext( value );\n\n\t};\n\n\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t\tframebufferScaleFactor = value;\n\n\t};\n\n\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\treferenceSpaceType = value;\n\n\t};\n\n\tthis.setPoseTarget = function ( object ) {\n\n\t\tif ( object !== undefined ) poseTarget = object;\n\n\t};\n\n\tthis.getCamera = function ( camera ) {\n\n\t\tvar userHeight = referenceSpaceType === 'local-floor' ? 1.6 : 0;\n\n\t\tif ( isPresenting() === false ) {\n\n\t\t\tcamera.position.set( 0, userHeight, 0 );\n\t\t\tcamera.rotation.set( 0, 0, 0 );\n\n\t\t\treturn camera;\n\n\t\t}\n\n\t\tdevice.depthNear = camera.near;\n\t\tdevice.depthFar = camera.far;\n\n\t\tdevice.getFrameData( frameData );\n\n\t\t//\n\n\t\tif ( referenceSpaceType === 'local-floor' ) {\n\n\t\t\tvar stageParameters = device.stageParameters;\n\n\t\t\tif ( stageParameters ) {\n\n\t\t\t\tstandingMatrix.fromArray( stageParameters.sittingToStandingTransform );\n\n\t\t\t} else {\n\n\t\t\t\tstandingMatrix.makeTranslation( 0, userHeight, 0 );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tvar pose = frameData.pose;\n\t\tvar poseObject = poseTarget !== null ? poseTarget : camera;\n\n\t\t// We want to manipulate poseObject by its position and quaternion components since users may rely on them.\n\t\tposeObject.matrix.copy( standingMatrix );\n\t\tposeObject.matrix.decompose( poseObject.position, poseObject.quaternion, poseObject.scale );\n\n\t\tif ( pose.orientation !== null ) {\n\n\t\t\ttempQuaternion.fromArray( pose.orientation );\n\t\t\tposeObject.quaternion.multiply( tempQuaternion );\n\n\t\t}\n\n\t\tif ( pose.position !== null ) {\n\n\t\t\ttempQuaternion.setFromRotationMatrix( standingMatrix );\n\t\t\ttempPosition.fromArray( pose.position );\n\t\t\ttempPosition.applyQuaternion( tempQuaternion );\n\t\t\tposeObject.position.add( tempPosition );\n\n\t\t}\n\n\t\tposeObject.updateMatrixWorld();\n\n\t\t//\n\n\t\tcameraL.near = camera.near;\n\t\tcameraR.near = camera.near;\n\n\t\tcameraL.far = camera.far;\n\t\tcameraR.far = camera.far;\n\n\t\tcameraL.matrixWorldInverse.fromArray( frameData.leftViewMatrix );\n\t\tcameraR.matrixWorldInverse.fromArray( frameData.rightViewMatrix );\n\n\t\t// TODO (mrdoob) Double check this code\n\n\t\tstandingMatrixInverse.getInverse( standingMatrix );\n\n\t\tif ( referenceSpaceType === 'local-floor' ) {\n\n\t\t\tcameraL.matrixWorldInverse.multiply( standingMatrixInverse );\n\t\t\tcameraR.matrixWorldInverse.multiply( standingMatrixInverse );\n\n\t\t}\n\n\t\tvar parent = poseObject.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tmatrixWorldInverse.getInverse( parent.matrixWorld );\n\n\t\t\tcameraL.matrixWorldInverse.multiply( matrixWorldInverse );\n\t\t\tcameraR.matrixWorldInverse.multiply( matrixWorldInverse );\n\n\t\t}\n\n\t\t// envMap and Mirror needs camera.matrixWorld\n\n\t\tcameraL.matrixWorld.getInverse( cameraL.matrixWorldInverse );\n\t\tcameraR.matrixWorld.getInverse( cameraR.matrixWorldInverse );\n\n\t\tcameraL.projectionMatrix.fromArray( frameData.leftProjectionMatrix );\n\t\tcameraR.projectionMatrix.fromArray( frameData.rightProjectionMatrix );\n\n\t\tsetProjectionFromUnion( cameraVR, cameraL, cameraR );\n\n\t\t//\n\n\t\tvar layers = device.getLayers();\n\n\t\tif ( layers.length ) {\n\n\t\t\tvar layer = layers[ 0 ];\n\n\t\t\tupdateViewportFromBounds( cameraL.viewport, layer.leftBounds );\n\t\t\tupdateViewportFromBounds( cameraR.viewport, layer.rightBounds );\n\n\t\t}\n\n\t\tupdateControllers();\n\n\t\treturn cameraVR;\n\n\t};\n\n\tthis.getStandingMatrix = function () {\n\n\t\treturn standingMatrix;\n\n\t};\n\n\tthis.isPresenting = isPresenting;\n\n\t// Animation Loop\n\n\tvar animation = new WebGLAnimation();\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tanimation.setAnimationLoop( callback );\n\n\t\tif ( isPresenting() ) animation.start();\n\n\t};\n\n\tthis.submitFrame = function () {\n\n\t\tif ( isPresenting() ) device.submitFrame();\n\n\t};\n\n\tthis.dispose = function () {\n\n\t\tif ( typeof window !== 'undefined' ) {\n\n\t\t\twindow.removeEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange );\n\n\t\t}\n\n\t};\n\n\t// DEPRECATED\n\n\tthis.setFrameOfReferenceType = function () {\n\n\t\tconsole.warn( 'THREE.WebVRManager: setFrameOfReferenceType() has been deprecated.' );\n\n\t};\n\n}\n\nObject.assign( WebVRManager.prototype, EventDispatcher.prototype );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebXRManager( renderer, gl ) {\n\n\tvar scope = this;\n\n\tvar session = null;\n\n\tvar referenceSpace = null;\n\tvar referenceSpaceType = 'local-floor';\n\n\tvar pose = null;\n\n\tvar controllers = [];\n\tvar inputSources = [];\n\n\tfunction isPresenting() {\n\n\t\treturn session !== null && referenceSpace !== null;\n\n\t}\n\n\t//\n\n\tvar cameraL = new PerspectiveCamera();\n\tcameraL.layers.enable( 1 );\n\tcameraL.viewport = new Vector4();\n\n\tvar cameraR = new PerspectiveCamera();\n\tcameraR.layers.enable( 2 );\n\tcameraR.viewport = new Vector4();\n\n\tvar cameraVR = new ArrayCamera( [ cameraL, cameraR ] );\n\tcameraVR.layers.enable( 1 );\n\tcameraVR.layers.enable( 2 );\n\n\t//\n\n\tthis.enabled = false;\n\n\tthis.getController = function ( id ) {\n\n\t\tvar controller = controllers[ id ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new Group();\n\t\t\tcontroller.matrixAutoUpdate = false;\n\t\t\tcontroller.visible = false;\n\n\t\t\tcontrollers[ id ] = controller;\n\n\t\t}\n\n\t\treturn controller;\n\n\t};\n\n\t//\n\n\tfunction onSessionEvent( event ) {\n\n\t\tfor ( var i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tif ( inputSources[ i ] === event.inputSource ) {\n\n\t\t\t\tcontrollers[ i ].dispatchEvent( { type: event.type } );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction onSessionEnd() {\n\n\t\trenderer.setFramebuffer( null );\n\t\trenderer.setRenderTarget( renderer.getRenderTarget() ); // Hack #15830\n\t\tanimation.stop();\n\n\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t}\n\n\tfunction onRequestReferenceSpace( value ) {\n\n\t\treferenceSpace = value;\n\n\t\tanimation.setContext( session );\n\t\tanimation.start();\n\n\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t}\n\n\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t};\n\n\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\treferenceSpaceType = value;\n\n\t};\n\n\tthis.getSession = function () {\n\n\t\treturn session;\n\n\t};\n\n\tthis.setSession = function ( value ) {\n\n\t\tsession = value;\n\n\t\tif ( session !== null ) {\n\n\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\n\t\t\tsession.updateRenderState( { baseLayer: new XRWebGLLayer( session, gl ) } );\n\n\t\t\tsession.requestReferenceSpace( referenceSpaceType ).then( onRequestReferenceSpace );\n\n\t\t\t//\n\n\t\t\tinputSources = session.inputSources;\n\n\t\t\tsession.addEventListener( 'inputsourceschange', function () {\n\n\t\t\t\tinputSources = session.inputSources;\n\t\t\t\tconsole.log( inputSources );\n\n\t\t\t\tfor ( var i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\t\tvar controller = controllers[ i ];\n\t\t\t\t\tcontroller.userData.inputSource = inputSources[ i ];\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t}\n\n\t};\n\n\tfunction updateCamera( camera, parent ) {\n\n\t\tif ( parent === null ) {\n\n\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t} else {\n\n\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t}\n\n\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t}\n\n\tthis.getCamera = function ( camera ) {\n\n\t\tif ( isPresenting() ) {\n\n\t\t\tvar parent = camera.parent;\n\t\t\tvar cameras = cameraVR.cameras;\n\n\t\t\tupdateCamera( cameraVR, parent );\n\n\t\t\tfor ( var i = 0; i < cameras.length; i ++ ) {\n\n\t\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t\t}\n\n\t\t\t// update camera and its children\n\n\t\t\tcamera.matrixWorld.copy( cameraVR.matrixWorld );\n\n\t\t\tvar children = camera.children;\n\n\t\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateMatrixWorld( true );\n\n\t\t\t}\n\n\t\t\tsetProjectionFromUnion( cameraVR, cameraL, cameraR );\n\n\t\t\treturn cameraVR;\n\n\t\t}\n\n\t\treturn camera;\n\n\t};\n\n\tthis.isPresenting = isPresenting;\n\n\t// Animation Loop\n\n\tvar onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tpose = frame.getViewerPose( referenceSpace );\n\n\t\tif ( pose !== null ) {\n\n\t\t\tvar views = pose.views;\n\t\t\tvar baseLayer = session.renderState.baseLayer;\n\n\t\t\trenderer.setFramebuffer( baseLayer.framebuffer );\n\n\t\t\tfor ( var i = 0; i < views.length; i ++ ) {\n\n\t\t\t\tvar view = views[ i ];\n\t\t\t\tvar viewport = baseLayer.getViewport( view );\n\t\t\t\tvar viewMatrix = view.transform.inverse.matrix;\n\n\t\t\t\tvar camera = cameraVR.cameras[ i ];\n\t\t\t\tcamera.matrix.fromArray( viewMatrix ).getInverse( camera.matrix );\n\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\tcameraVR.matrix.copy( camera.matrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tfor ( var i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tvar controller = controllers[ i ];\n\n\t\t\tvar inputSource = inputSources[ i ];\n\n\t\t\tif ( inputSource ) {\n\n\t\t\t\tvar inputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\tcontroller.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\tcontroller.matrix.decompose( controller.position, controller.rotation, controller.scale );\n\t\t\t\t\tcontroller.visible = true;\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tcontroller.visible = false;\n\n\t\t}\n\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t}\n\n\tvar animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\n\t};\n\n\tthis.dispose = function () {};\n\n\t// DEPRECATED\n\n\tthis.getStandingMatrix = function () {\n\n\t\tconsole.warn( 'THREE.WebXRManager: getStandingMatrix() is no longer needed.' );\n\t\treturn new Matrix4();\n\n\t};\n\n\tthis.getDevice = function () {\n\n\t\tconsole.warn( 'THREE.WebXRManager: getDevice() has been deprecated.' );\n\n\t};\n\n\tthis.setDevice = function () {\n\n\t\tconsole.warn( 'THREE.WebXRManager: setDevice() has been deprecated.' );\n\n\t};\n\n\tthis.setFrameOfReferenceType = function () {\n\n\t\tconsole.warn( 'THREE.WebXRManager: setFrameOfReferenceType() has been deprecated.' );\n\n\t};\n\n\tthis.submitFrame = function () {};\n\n}\n\nObject.assign( WebXRManager.prototype, EventDispatcher.prototype );\n\n/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n * @author tschw\n */\n\nfunction WebGLRenderer( parameters ) {\n\n\tconsole.log( 'THREE.WebGLRenderer', REVISION );\n\n\tparameters = parameters || {};\n\n\tvar _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ),\n\t\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\n\t\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false,\n\t\t_powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default',\n\t\t_failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false;\n\n\tvar currentRenderList = null;\n\tvar currentRenderState = null;\n\n\t// public properties\n\n\tthis.domElement = _canvas;\n\n\t// Debug configuration container\n\tthis.debug = {\n\n\t\t/**\n\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t * @type {boolean}\n\t\t */\n\t\tcheckShaderErrors: true\n\t};\n\n\t// clearing\n\n\tthis.autoClear = true;\n\tthis.autoClearColor = true;\n\tthis.autoClearDepth = true;\n\tthis.autoClearStencil = true;\n\n\t// scene graph\n\n\tthis.sortObjects = true;\n\n\t// user-defined clipping\n\n\tthis.clippingPlanes = [];\n\tthis.localClippingEnabled = false;\n\n\t// physically based shading\n\n\tthis.gammaFactor = 2.0;\t// for backwards compatibility\n\tthis.gammaInput = false;\n\tthis.gammaOutput = false;\n\n\t// physical lights\n\n\tthis.physicallyCorrectLights = false;\n\n\t// tone mapping\n\n\tthis.toneMapping = LinearToneMapping;\n\tthis.toneMappingExposure = 1.0;\n\tthis.toneMappingWhitePoint = 1.0;\n\n\t// morphs\n\n\tthis.maxMorphTargets = 8;\n\tthis.maxMorphNormals = 4;\n\n\t// internal properties\n\n\tvar _this = this,\n\n\t\t_isContextLost = false,\n\n\t\t// internal state cache\n\n\t\t_framebuffer = null,\n\n\t\t_currentActiveCubeFace = 0,\n\t\t_currentActiveMipmapLevel = 0,\n\t\t_currentRenderTarget = null,\n\t\t_currentFramebuffer = null,\n\t\t_currentMaterialId = - 1,\n\n\t\t// geometry and program caching\n\n\t\t_currentGeometryProgram = {\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false\n\t\t},\n\n\t\t_currentCamera = null,\n\t\t_currentArrayCamera = null,\n\n\t\t_currentViewport = new Vector4(),\n\t\t_currentScissor = new Vector4(),\n\t\t_currentScissorTest = null,\n\n\t\t//\n\n\t\t_width = _canvas.width,\n\t\t_height = _canvas.height,\n\n\t\t_pixelRatio = 1,\n\n\t\t_viewport = new Vector4( 0, 0, _width, _height ),\n\t\t_scissor = new Vector4( 0, 0, _width, _height ),\n\t\t_scissorTest = false,\n\n\t\t// frustum\n\n\t\t_frustum = new Frustum(),\n\n\t\t// clipping\n\n\t\t_clipping = new WebGLClipping(),\n\t\t_clippingEnabled = false,\n\t\t_localClippingEnabled = false,\n\n\t\t// camera matrices cache\n\n\t\t_projScreenMatrix = new Matrix4(),\n\n\t\t_vector3 = new Vector3();\n\n\tfunction getTargetPixelRatio() {\n\n\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t}\n\n\t// initialize\n\n\tvar _gl;\n\n\ttry {\n\n\t\tvar contextAttributes = {\n\t\t\talpha: _alpha,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer,\n\t\t\tpowerPreference: _powerPreference,\n\t\t\tfailIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat,\n\t\t\txrCompatible: true\n\t\t};\n\n\t\t// event listeners must be registered before WebGL context is created, see #12753\n\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\t_gl = _context || _canvas.getContext( 'webgl', contextAttributes ) || _canvas.getContext( 'experimental-webgl', contextAttributes );\n\n\t\tif ( _gl === null ) {\n\n\t\t\tif ( _canvas.getContext( 'webgl' ) !== null ) {\n\n\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t} else {\n\n\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t};\n\n\t\t}\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\tthrow error;\n\n\t}\n\n\tvar extensions, capabilities, state, info;\n\tvar properties, textures, attributes, geometries, objects;\n\tvar programCache, renderLists, renderStates;\n\n\tvar background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\tvar utils;\n\n\tfunction initGLContext() {\n\n\t\textensions = new WebGLExtensions( _gl );\n\n\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\tif ( ! capabilities.isWebGL2 ) {\n\n\t\t\textensions.get( 'WEBGL_depth_texture' );\n\t\t\textensions.get( 'OES_texture_float' );\n\t\t\textensions.get( 'OES_texture_half_float' );\n\t\t\textensions.get( 'OES_texture_half_float_linear' );\n\t\t\textensions.get( 'OES_standard_derivatives' );\n\t\t\textensions.get( 'OES_element_index_uint' );\n\t\t\textensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t}\n\n\t\textensions.get( 'OES_texture_float_linear' );\n\n\t\tutils = new WebGLUtils( _gl, extensions, capabilities );\n\n\t\tstate = new WebGLState( _gl, extensions, utils, capabilities );\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t\tinfo = new WebGLInfo( _gl );\n\t\tproperties = new WebGLProperties();\n\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\tattributes = new WebGLAttributes( _gl );\n\t\tgeometries = new WebGLGeometries( _gl, attributes, info );\n\t\tobjects = new WebGLObjects( geometries, info );\n\t\tmorphtargets = new WebGLMorphtargets( _gl );\n\t\tprogramCache = new WebGLPrograms( _this, extensions, capabilities );\n\t\trenderLists = new WebGLRenderLists();\n\t\trenderStates = new WebGLRenderStates();\n\n\t\tbackground = new WebGLBackground( _this, state, objects, _premultipliedAlpha );\n\n\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );\n\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities );\n\n\t\tinfo.programs = programCache.programs;\n\n\t\t_this.capabilities = capabilities;\n\t\t_this.extensions = extensions;\n\t\t_this.properties = properties;\n\t\t_this.renderLists = renderLists;\n\t\t_this.state = state;\n\t\t_this.info = info;\n\n\t}\n\n\tinitGLContext();\n\n\t// vr\n\n\tvar vr = ( typeof navigator !== 'undefined' && 'xr' in navigator && 'supportsSession' in navigator.xr ) ? new WebXRManager( _this, _gl ) : new WebVRManager( _this );\n\n\tthis.vr = vr;\n\n\t// shadow map\n\n\tvar shadowMap = new WebGLShadowMap( _this, objects, capabilities.maxTextureSize );\n\n\tthis.shadowMap = shadowMap;\n\n\t// API\n\n\tthis.getContext = function () {\n\n\t\treturn _gl;\n\n\t};\n\n\tthis.getContextAttributes = function () {\n\n\t\treturn _gl.getContextAttributes();\n\n\t};\n\n\tthis.forceContextLoss = function () {\n\n\t\tvar extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.loseContext();\n\n\t};\n\n\tthis.forceContextRestore = function () {\n\n\t\tvar extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.restoreContext();\n\n\t};\n\n\tthis.getPixelRatio = function () {\n\n\t\treturn _pixelRatio;\n\n\t};\n\n\tthis.setPixelRatio = function ( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tthis.setSize( _width, _height, false );\n\n\t};\n\n\tthis.getSize = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getsize() now requires a Vector2 as an argument' );\n\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set( _width, _height );\n\n\t};\n\n\tthis.setSize = function ( width, height, updateStyle ) {\n\n\t\tif ( vr.isPresenting() ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_canvas.width = Math.floor( width * _pixelRatio );\n\t\t_canvas.height = Math.floor( height * _pixelRatio );\n\n\t\tif ( updateStyle !== false ) {\n\n\t\t\t_canvas.style.width = width + 'px';\n\t\t\t_canvas.style.height = height + 'px';\n\n\t\t}\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getDrawingBufferSize = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getdrawingBufferSize() now requires a Vector2 as an argument' );\n\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();\n\n\t};\n\n\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_pixelRatio = pixelRatio;\n\n\t\t_canvas.width = Math.floor( width * pixelRatio );\n\t\t_canvas.height = Math.floor( height * pixelRatio );\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getCurrentViewport = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getCurrentViewport() now requires a Vector4 as an argument' );\n\n\t\t\ttarget = new Vector4();\n\n\t\t}\n\n\t\treturn target.copy( _currentViewport );\n\n\t};\n\n\tthis.getViewport = function ( target ) {\n\n\t\treturn target.copy( _viewport );\n\n\t};\n\n\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_viewport.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissor = function ( target ) {\n\n\t\treturn target.copy( _scissor );\n\n\t};\n\n\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_scissor.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissorTest = function () {\n\n\t\treturn _scissorTest;\n\n\t};\n\n\tthis.setScissorTest = function ( boolean ) {\n\n\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t};\n\n\t// Clearing\n\n\tthis.getClearColor = function () {\n\n\t\treturn background.getClearColor();\n\n\t};\n\n\tthis.setClearColor = function () {\n\n\t\tbackground.setClearColor.apply( background, arguments );\n\n\t};\n\n\tthis.getClearAlpha = function () {\n\n\t\treturn background.getClearAlpha();\n\n\t};\n\n\tthis.setClearAlpha = function () {\n\n\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t};\n\n\tthis.clear = function ( color, depth, stencil ) {\n\n\t\tvar bits = 0;\n\n\t\tif ( color === undefined || color ) bits |= 16384;\n\t\tif ( depth === undefined || depth ) bits |= 256;\n\t\tif ( stencil === undefined || stencil ) bits |= 1024;\n\n\t\t_gl.clear( bits );\n\n\t};\n\n\tthis.clearColor = function () {\n\n\t\tthis.clear( true, false, false );\n\n\t};\n\n\tthis.clearDepth = function () {\n\n\t\tthis.clear( false, true, false );\n\n\t};\n\n\tthis.clearStencil = function () {\n\n\t\tthis.clear( false, false, true );\n\n\t};\n\n\t//\n\n\tthis.dispose = function () {\n\n\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\trenderLists.dispose();\n\t\trenderStates.dispose();\n\t\tproperties.dispose();\n\t\tobjects.dispose();\n\n\t\tvr.dispose();\n\n\t\tanimation.stop();\n\n\t};\n\n\t// Events\n\n\tfunction onContextLost( event ) {\n\n\t\tevent.preventDefault();\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t_isContextLost = true;\n\n\t}\n\n\tfunction onContextRestore( /* event */ ) {\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t_isContextLost = false;\n\n\t\tinitGLContext();\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tvar material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\tdeallocateMaterial( material );\n\n\t}\n\n\t// Buffer deallocation\n\n\tfunction deallocateMaterial( material ) {\n\n\t\treleaseMaterialProgramReference( material );\n\n\t\tproperties.remove( material );\n\n\t}\n\n\n\tfunction releaseMaterialProgramReference( material ) {\n\n\t\tvar programInfo = properties.get( material ).program;\n\n\t\tmaterial.program = undefined;\n\n\t\tif ( programInfo !== undefined ) {\n\n\t\t\tprogramCache.releaseProgram( programInfo );\n\n\t\t}\n\n\t}\n\n\t// Buffer rendering\n\n\tfunction renderObjectImmediate( object, program ) {\n\n\t\tobject.render( function ( object ) {\n\n\t\t\t_this.renderBufferImmediate( object, program );\n\n\t\t} );\n\n\t}\n\n\tthis.renderBufferImmediate = function ( object, program ) {\n\n\t\tstate.initAttributes();\n\n\t\tvar buffers = properties.get( object );\n\n\t\tif ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer();\n\t\tif ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer();\n\t\tif ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer();\n\t\tif ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer();\n\n\t\tvar programAttributes = program.getAttributes();\n\n\t\tif ( object.hasPositions ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.position );\n\t\t\t_gl.bufferData( 34962, object.positionArray, 35048 );\n\n\t\t\tstate.enableAttribute( programAttributes.position );\n\t\t\t_gl.vertexAttribPointer( programAttributes.position, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasNormals ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.normal );\n\t\t\t_gl.bufferData( 34962, object.normalArray, 35048 );\n\n\t\t\tstate.enableAttribute( programAttributes.normal );\n\t\t\t_gl.vertexAttribPointer( programAttributes.normal, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasUvs ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.uv );\n\t\t\t_gl.bufferData( 34962, object.uvArray, 35048 );\n\n\t\t\tstate.enableAttribute( programAttributes.uv );\n\t\t\t_gl.vertexAttribPointer( programAttributes.uv, 2, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasColors ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.color );\n\t\t\t_gl.bufferData( 34962, object.colorArray, 35048 );\n\n\t\t\tstate.enableAttribute( programAttributes.color );\n\t\t\t_gl.vertexAttribPointer( programAttributes.color, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tstate.disableUnusedAttributes();\n\n\t\t_gl.drawArrays( 4, 0, object.count );\n\n\t\tobject.count = 0;\n\n\t};\n\n\tthis.renderBufferDirect = function ( camera, fog, geometry, material, object, group ) {\n\n\t\tvar frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\tvar program = setProgram( camera, fog, material, object );\n\n\t\tvar updateBuffers = false;\n\n\t\tif ( _currentGeometryProgram.geometry !== geometry.id ||\n\t\t\t_currentGeometryProgram.program !== program.id ||\n\t\t\t_currentGeometryProgram.wireframe !== ( material.wireframe === true ) ) {\n\n\t\t\t_currentGeometryProgram.geometry = geometry.id;\n\t\t\t_currentGeometryProgram.program = program.id;\n\t\t\t_currentGeometryProgram.wireframe = material.wireframe === true;\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\tif ( object.morphTargetInfluences ) {\n\n\t\t\tmorphtargets.update( object, geometry, material, program );\n\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\t//\n\n\t\tvar index = geometry.index;\n\t\tvar position = geometry.attributes.position;\n\t\tvar rangeFactor = 1;\n\n\t\tif ( material.wireframe === true ) {\n\n\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\t\t\trangeFactor = 2;\n\n\t\t}\n\n\t\tvar attribute;\n\t\tvar renderer = bufferRenderer;\n\n\t\tif ( index !== null ) {\n\n\t\t\tattribute = attributes.get( index );\n\n\t\t\trenderer = indexedBufferRenderer;\n\t\t\trenderer.setIndex( attribute );\n\n\t\t}\n\n\t\tif ( updateBuffers ) {\n\n\t\t\tsetupVertexAttributes( material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\t_gl.bindBuffer( 34963, attribute.buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tvar dataCount = Infinity;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdataCount = index.count;\n\n\t\t} else if ( position !== undefined ) {\n\n\t\t\tdataCount = position.count;\n\n\t\t}\n\n\t\tvar rangeStart = geometry.drawRange.start * rangeFactor;\n\t\tvar rangeCount = geometry.drawRange.count * rangeFactor;\n\n\t\tvar groupStart = group !== null ? group.start * rangeFactor : 0;\n\t\tvar groupCount = group !== null ? group.count * rangeFactor : Infinity;\n\n\t\tvar drawStart = Math.max( rangeStart, groupStart );\n\t\tvar drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\n\n\t\tvar drawCount = Math.max( 0, drawEnd - drawStart + 1 );\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\t//\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else {\n\n\t\t\t\tswitch ( object.drawMode ) {\n\n\t\t\t\t\tcase TrianglesDrawMode:\n\t\t\t\t\t\trenderer.setMode( 4 );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TriangleStripDrawMode:\n\t\t\t\t\t\trenderer.setMode( 5 );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TriangleFanDrawMode:\n\t\t\t\t\t\trenderer.setMode( 6 );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t} else if ( object.isLine ) {\n\n\t\t\tvar lineWidth = material.linewidth;\n\n\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\trenderer.setMode( 2 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 3 );\n\n\t\t\t}\n\n\t\t} else if ( object.isPoints ) {\n\n\t\t\trenderer.setMode( 0 );\n\n\t\t} else if ( object.isSprite ) {\n\n\t\t\trenderer.setMode( 4 );\n\n\t\t}\n\n\t\tif ( geometry && geometry.isInstancedBufferGeometry ) {\n\n\t\t\tif ( geometry.maxInstancedCount > 0 ) {\n\n\t\t\t\trenderer.renderInstances( geometry, drawStart, drawCount );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t}\n\n\t};\n\n\tfunction setupVertexAttributes( material, program, geometry ) {\n\n\t\tif ( geometry && geometry.isInstancedBufferGeometry && ! capabilities.isWebGL2 ) {\n\n\t\t\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.initAttributes();\n\n\t\tvar geometryAttributes = geometry.attributes;\n\n\t\tvar programAttributes = program.getAttributes();\n\n\t\tvar materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( var name in programAttributes ) {\n\n\t\t\tvar programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute >= 0 ) {\n\n\t\t\t\tvar geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tvar normalized = geometryAttribute.normalized;\n\t\t\t\t\tvar size = geometryAttribute.itemSize;\n\n\t\t\t\t\tvar attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tvar buffer = attribute.buffer;\n\t\t\t\t\tvar type = attribute.type;\n\t\t\t\t\tvar bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tvar data = geometryAttribute.data;\n\t\t\t\t\t\tvar stride = data.stride;\n\t\t\t\t\t\tvar offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data && data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute, data.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry.maxInstancedCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry.maxInstancedCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.enableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_gl.bindBuffer( 34962, buffer );\n\t\t\t\t\t\t_gl.vertexAttribPointer( programAttribute, size, type, normalized, stride * bytesPerElement, offset * bytesPerElement );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry.maxInstancedCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry.maxInstancedCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.enableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_gl.bindBuffer( 34962, buffer );\n\t\t\t\t\t\t_gl.vertexAttribPointer( programAttribute, size, type, normalized, 0, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tvar value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib2fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib3fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib4fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib1fv( programAttribute, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.disableUnusedAttributes();\n\n\t}\n\n\t// Compile\n\n\tthis.compile = function ( scene, camera ) {\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tif ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tif ( object.material ) {\n\n\t\t\t\tif ( Array.isArray( object.material ) ) {\n\n\t\t\t\t\tfor ( var i = 0; i < object.material.length; i ++ ) {\n\n\t\t\t\t\t\tinitMaterial( object.material[ i ], scene.fog, object );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tinitMaterial( object.material, scene.fog, object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t};\n\n\t// Animation Loop\n\n\tvar onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time ) {\n\n\t\tif ( vr.isPresenting() ) return;\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t}\n\n\tvar animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tif ( typeof window !== 'undefined' ) animation.setContext( window );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\t\tvr.setAnimationLoop( callback );\n\n\t\tanimation.start();\n\n\t};\n\n\t// Rendering\n\n\tthis.render = function ( scene, camera ) {\n\n\t\tvar renderTarget, forceClear;\n\n\t\tif ( arguments[ 2 ] !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead.' );\n\t\t\trenderTarget = arguments[ 2 ];\n\n\t\t}\n\n\t\tif ( arguments[ 3 ] !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.render(): the forceClear argument has been removed. Use .clear() instead.' );\n\t\t\tforceClear = arguments[ 3 ];\n\n\t\t}\n\n\t\tif ( ! ( camera && camera.isCamera ) ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( _isContextLost ) return;\n\n\t\t// reset caching for this frame\n\n\t\t_currentGeometryProgram.geometry = null;\n\t\t_currentGeometryProgram.program = null;\n\t\t_currentGeometryProgram.wireframe = false;\n\t\t_currentMaterialId = - 1;\n\t\t_currentCamera = null;\n\n\t\t// update scene graph\n\n\t\tif ( scene.autoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t// update camera matrices and frustum\n\n\t\tif ( camera.parent === null ) camera.updateMatrixWorld();\n\n\t\tif ( vr.enabled ) {\n\n\t\t\tcamera = vr.getCamera( camera );\n\n\t\t}\n\n\t\t//\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\tscene.onBeforeRender( _this, scene, camera, renderTarget || _currentRenderTarget );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t_frustum.setFromMatrix( _projScreenMatrix );\n\n\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t_clippingEnabled = _clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\n\n\t\tcurrentRenderList = renderLists.get( scene, camera );\n\t\tcurrentRenderList.init();\n\n\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\tif ( _this.sortObjects === true ) {\n\n\t\t\tcurrentRenderList.sort();\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _clippingEnabled ) _clipping.beginShadows();\n\n\t\tvar shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tif ( _clippingEnabled ) _clipping.endShadows();\n\n\t\t//\n\n\t\tif ( this.info.autoReset ) this.info.reset();\n\n\t\tif ( renderTarget !== undefined ) {\n\n\t\t\tthis.setRenderTarget( renderTarget );\n\n\t\t}\n\n\t\t//\n\n\t\tbackground.render( currentRenderList, scene, camera, forceClear );\n\n\t\t// render scene\n\n\t\tvar opaqueObjects = currentRenderList.opaque;\n\t\tvar transparentObjects = currentRenderList.transparent;\n\n\t\tif ( scene.overrideMaterial ) {\n\n\t\t\tvar overrideMaterial = scene.overrideMaterial;\n\n\t\t\tif ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera, overrideMaterial );\n\t\t\tif ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera, overrideMaterial );\n\n\t\t} else {\n\n\t\t\t// opaque pass (front-to-back order)\n\n\t\t\tif ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera );\n\n\t\t\t// transparent pass (back-to-front order)\n\n\t\t\tif ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera );\n\n\t\t}\n\n\t\t//\n\n\t\tscene.onAfterRender( _this, scene, camera );\n\n\t\t//\n\n\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\n\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\n\n\t\t}\n\n\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\tstate.buffers.depth.setTest( true );\n\t\tstate.buffers.depth.setMask( true );\n\t\tstate.buffers.color.setMask( true );\n\n\t\tstate.setPolygonOffset( false );\n\n\t\tif ( vr.enabled ) {\n\n\t\t\tvr.submitFrame();\n\n\t\t}\n\n\t\t// _gl.finish();\n\n\t\tcurrentRenderList = null;\n\t\tcurrentRenderState = null;\n\n\t};\n\n\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tvar visible = object.layers.test( camera.layers );\n\n\t\tif ( visible ) {\n\n\t\t\tif ( object.isGroup ) {\n\n\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t} else if ( object.isLOD ) {\n\n\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\n\n\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar geometry = objects.update( object );\n\t\t\t\t\tvar material = object.material;\n\n\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isImmediateRenderObject ) {\n\n\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t}\n\n\t\t\t\tcurrentRenderList.push( object, null, object.material, groupOrder, _vector3.z, null );\n\n\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\tobject.skeleton.update();\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar geometry = objects.update( object );\n\t\t\t\t\tvar material = object.material;\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tvar groups = geometry.groups;\n\n\t\t\t\t\t\tfor ( var i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tvar group = groups[ i ];\n\t\t\t\t\t\t\tvar groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t}\n\n\t}\n\n\tfunction renderObjects( renderList, scene, camera, overrideMaterial ) {\n\n\t\tfor ( var i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\tvar renderItem = renderList[ i ];\n\n\t\t\tvar object = renderItem.object;\n\t\t\tvar geometry = renderItem.geometry;\n\t\t\tvar material = overrideMaterial === undefined ? renderItem.material : overrideMaterial;\n\t\t\tvar group = renderItem.group;\n\n\t\t\tif ( camera.isArrayCamera ) {\n\n\t\t\t\t_currentArrayCamera = camera;\n\n\t\t\t\tvar cameras = camera.cameras;\n\n\t\t\t\tfor ( var j = 0, jl = cameras.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar camera2 = cameras[ j ];\n\n\t\t\t\t\tif ( object.layers.test( camera2.layers ) ) {\n\n\t\t\t\t\t\tstate.viewport( _currentViewport.copy( camera2.viewport ) );\n\n\t\t\t\t\t\tcurrentRenderState.setupLights( camera2 );\n\n\t\t\t\t\t\trenderObject( object, scene, camera2, geometry, material, group );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_currentArrayCamera = null;\n\n\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\tif ( object.isImmediateRenderObject ) {\n\n\t\t\tstate.setMaterial( material );\n\n\t\t\tvar program = setProgram( camera, scene.fog, material, object );\n\n\t\t\t_currentGeometryProgram.geometry = null;\n\t\t\t_currentGeometryProgram.program = null;\n\t\t\t_currentGeometryProgram.wireframe = false;\n\n\t\t\trenderObjectImmediate( object, program );\n\n\t\t} else {\n\n\t\t\t_this.renderBufferDirect( camera, scene.fog, geometry, material, object, group );\n\n\t\t}\n\n\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t}\n\n\tfunction initMaterial( material, fog, object ) {\n\n\t\tvar materialProperties = properties.get( material );\n\n\t\tvar lights = currentRenderState.state.lights;\n\t\tvar shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tvar lightsStateVersion = lights.state.version;\n\n\t\tvar parameters = programCache.getParameters(\n\t\t\tmaterial, lights.state, shadowsArray, fog, _clipping.numPlanes, _clipping.numIntersection, object );\n\n\t\tvar code = programCache.getProgramCode( material, parameters );\n\n\t\tvar program = materialProperties.program;\n\t\tvar programChange = true;\n\n\t\tif ( program === undefined ) {\n\n\t\t\t// new material\n\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t} else if ( program.code !== code ) {\n\n\t\t\t// changed glsl or parameters\n\t\t\treleaseMaterialProgramReference( material );\n\n\t\t} else if ( materialProperties.lightsStateVersion !== lightsStateVersion ) {\n\n\t\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\t\tprogramChange = false;\n\n\t\t} else if ( parameters.shaderID !== undefined ) {\n\n\t\t\t// same glsl and uniform list\n\t\t\treturn;\n\n\t\t} else {\n\n\t\t\t// only rebuild uniform list\n\t\t\tprogramChange = false;\n\n\t\t}\n\n\t\tif ( programChange ) {\n\n\t\t\tif ( parameters.shaderID ) {\n\n\t\t\t\tvar shader = ShaderLib[ parameters.shaderID ];\n\n\t\t\t\tmaterialProperties.shader = {\n\t\t\t\t\tname: material.type,\n\t\t\t\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\t\t\t\tvertexShader: shader.vertexShader,\n\t\t\t\t\tfragmentShader: shader.fragmentShader\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tmaterialProperties.shader = {\n\t\t\t\t\tname: material.type,\n\t\t\t\t\tuniforms: material.uniforms,\n\t\t\t\t\tvertexShader: material.vertexShader,\n\t\t\t\t\tfragmentShader: material.fragmentShader\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tmaterial.onBeforeCompile( materialProperties.shader, _this );\n\n\t\t\t// Computing code again as onBeforeCompile may have changed the shaders\n\t\t\tcode = programCache.getProgramCode( material, parameters );\n\n\t\t\tprogram = programCache.acquireProgram( material, materialProperties.shader, parameters, code );\n\n\t\t\tmaterialProperties.program = program;\n\t\t\tmaterial.program = program;\n\n\t\t}\n\n\t\tvar programAttributes = program.getAttributes();\n\n\t\tif ( material.morphTargets ) {\n\n\t\t\tmaterial.numSupportedMorphTargets = 0;\n\n\t\t\tfor ( var i = 0; i < _this.maxMorphTargets; i ++ ) {\n\n\t\t\t\tif ( programAttributes[ 'morphTarget' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphTargets ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.morphNormals ) {\n\n\t\t\tmaterial.numSupportedMorphNormals = 0;\n\n\t\t\tfor ( var i = 0; i < _this.maxMorphNormals; i ++ ) {\n\n\t\t\t\tif ( programAttributes[ 'morphNormal' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphNormals ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar uniforms = materialProperties.shader.uniforms;\n\n\t\tif ( ! material.isShaderMaterial &&\n\t\t\t! material.isRawShaderMaterial ||\n\t\t\tmaterial.clipping === true ) {\n\n\t\t\tmaterialProperties.numClippingPlanes = _clipping.numPlanes;\n\t\t\tmaterialProperties.numIntersection = _clipping.numIntersection;\n\t\t\tuniforms.clippingPlanes = _clipping.uniform;\n\n\t\t}\n\n\t\tmaterialProperties.fog = fog;\n\n\t\t// store the light setup it was created for\n\n\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\tif ( material.lights ) {\n\n\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\tuniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\n\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t}\n\n\t\tvar progUniforms = materialProperties.program.getUniforms(),\n\t\t\tuniformsList =\n\t\t\t\tWebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t}\n\n\tfunction setProgram( camera, fog, material, object ) {\n\n\t\ttextures.resetTextureUnits();\n\n\t\tvar materialProperties = properties.get( material );\n\t\tvar lights = currentRenderState.state.lights;\n\n\t\tif ( _clippingEnabled ) {\n\n\t\t\tif ( _localClippingEnabled || camera !== _currentCamera ) {\n\n\t\t\t\tvar useCache =\n\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t// (#8465, #8379)\n\t\t\t\t_clipping.setState(\n\t\t\t\t\tmaterial.clippingPlanes, material.clipIntersection, material.clipShadows,\n\t\t\t\t\tcamera, materialProperties, useCache );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.needsUpdate === false ) {\n\n\t\t\tif ( materialProperties.program === undefined ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t} else if ( material.fog && materialProperties.fog !== fog ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t} else if ( material.lights && materialProperties.lightsStateVersion !== lights.state.version ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t( materialProperties.numClippingPlanes !== _clipping.numPlanes ||\n\t\t\t\tmaterialProperties.numIntersection !== _clipping.numIntersection ) ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.needsUpdate ) {\n\n\t\t\tinitMaterial( material, fog, object );\n\t\t\tmaterial.needsUpdate = false;\n\n\t\t}\n\n\t\tvar refreshProgram = false;\n\t\tvar refreshMaterial = false;\n\t\tvar refreshLights = false;\n\n\t\tvar program = materialProperties.program,\n\t\t\tp_uniforms = program.getUniforms(),\n\t\t\tm_uniforms = materialProperties.shader.uniforms;\n\n\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\trefreshProgram = true;\n\t\t\trefreshMaterial = true;\n\t\t\trefreshLights = true;\n\n\t\t}\n\n\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t_currentMaterialId = material.id;\n\n\t\t\trefreshMaterial = true;\n\n\t\t}\n\n\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\n\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t}\n\n\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t}\n\n\t\t\t// load material specific uniforms\n\t\t\t// (shader material also gets them for the sake of genericity)\n\n\t\t\tif ( material.isShaderMaterial ||\n\t\t\t\tmaterial.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.envMap ) {\n\n\t\t\t\tvar uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl,\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ||\n\t\t\t\tmaterial.skinning ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// skinning uniforms must be set even if material didn't change\n\t\t// auto-setting of texture unit for bone texture must go before other textures\n\t\t// not sure why, but otherwise weird things happen\n\n\t\tif ( material.skinning ) {\n\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\tvar skeleton = object.skeleton;\n\n\t\t\tif ( skeleton ) {\n\n\t\t\t\tvar bones = skeleton.bones;\n\n\t\t\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\t\tif ( skeleton.boneTexture === undefined ) {\n\n\t\t\t\t\t\t// layout (1 matrix = 4 pixels)\n\t\t\t\t\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t\t\t\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t\t\t\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t\t\t\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t\t\t\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\n\t\t\t\t\t\tvar size = Math.sqrt( bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\t\t\t\t\tsize = _Math.ceilPowerOfTwo( size );\n\t\t\t\t\t\tsize = Math.max( size, 4 );\n\n\t\t\t\t\t\tvar boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\t\t\t\t\tboneMatrices.set( skeleton.boneMatrices ); // copy current values\n\n\t\t\t\t\t\tvar boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\t\t\t\t\t\tboneTexture.needsUpdate = true;\n\n\t\t\t\t\t\tskeleton.boneMatrices = boneMatrices;\n\t\t\t\t\t\tskeleton.boneTexture = boneTexture;\n\t\t\t\t\t\tskeleton.boneTextureSize = size;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tp_uniforms.setOptional( _gl, skeleton, 'boneMatrices' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( refreshMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\t\t\tp_uniforms.setValue( _gl, 'toneMappingWhitePoint', _this.toneMappingWhitePoint );\n\n\t\t\tif ( material.lights ) {\n\n\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t// values\n\t\t\t\t//\n\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t// the GL state when required\n\n\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t}\n\n\t\t\t// refresh uniforms common to several materials\n\n\t\t\tif ( fog && material.fog ) {\n\n\t\t\t\trefreshUniformsFog( m_uniforms, fog );\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsLambert( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\n\t\t\t\tif ( material.isMeshToonMaterial ) {\n\n\t\t\t\t\trefreshUniformsToon( m_uniforms, material );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trefreshUniformsPhong( m_uniforms, material );\n\n\t\t\t\t}\n\n\t\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\n\t\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\t\trefreshUniformsPhysical( m_uniforms, material );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trefreshUniformsStandard( m_uniforms, material );\n\n\t\t\t\t}\n\n\t\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\n\t\t\t\trefreshUniformsMatcap( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsDepth( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsDistance( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsNormal( m_uniforms, material );\n\n\t\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\t\trefreshUniformsLine( m_uniforms, material );\n\n\t\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\t\trefreshUniformsDash( m_uniforms, material );\n\n\t\t\t\t}\n\n\t\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\t\trefreshUniformsPoints( m_uniforms, material );\n\n\t\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\t\trefreshUniformsSprites( m_uniforms, material );\n\n\t\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\t\tm_uniforms.color.value.copy( material.color );\n\t\t\t\tm_uniforms.opacity.value = material.opacity;\n\n\t\t\t}\n\n\t\t\t// RectAreaLight Texture\n\t\t\t// TODO (mrdoob): Find a nicer implementation\n\n\t\t\tif ( m_uniforms.ltc_1 !== undefined ) m_uniforms.ltc_1.value = UniformsLib.LTC_1;\n\t\t\tif ( m_uniforms.ltc_2 !== undefined ) m_uniforms.ltc_2.value = UniformsLib.LTC_2;\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\n\t\t}\n\n\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t}\n\n\t\t// common matrices\n\n\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\treturn program;\n\n\t}\n\n\t// Uniforms (refresh uniforms objects)\n\n\tfunction refreshUniformsCommon( uniforms, material ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value.copy( material.color );\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t}\n\n\t\tif ( material.envMap ) {\n\n\t\t\tuniforms.envMap.value = material.envMap;\n\n\t\t\t// don't flip CubeTexture envMaps, flip everything else:\n\t\t\t// WebGLRenderTargetCube will be flipped for backwards compatibility\n\t\t\t// WebGLRenderTargetCube.texture will be flipped because it's a Texture and NOT a CubeTexture\n\t\t\t// this check must be handled differently, or removed entirely, if WebGLRenderTargetCube uses a CubeTexture in the future\n\t\t\tuniforms.flipEnvMap.value = material.envMap.isCubeTexture ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t\tuniforms.maxMipLevel.value = properties.get( material.envMap ).__maxMipLevel;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. specular map\n\t\t// 3. normal map\n\t\t// 4. bump map\n\t\t// 5. alpha map\n\t\t// 6. emissive map\n\n\t\tvar uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.specularMap ) {\n\n\t\t\tuvScaleMap = material.specularMap;\n\n\t\t} else if ( material.displacementMap ) {\n\n\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t} else if ( material.normalMap ) {\n\n\t\t\tuvScaleMap = material.normalMap;\n\n\t\t} else if ( material.bumpMap ) {\n\n\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t} else if ( material.roughnessMap ) {\n\n\t\t\tuvScaleMap = material.roughnessMap;\n\n\t\t} else if ( material.metalnessMap ) {\n\n\t\t\tuvScaleMap = material.metalnessMap;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t} else if ( material.emissiveMap ) {\n\n\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * _pixelRatio;\n\t\tuniforms.scale.value = _height * 0.5;\n\n\t\tuniforms.map.value = material.map;\n\n\t\tif ( material.map !== null ) {\n\n\t\t\tif ( material.map.matrixAutoUpdate === true ) {\n\n\t\t\t\tmaterial.map.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( material.map.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsSprites( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.rotation.value = material.rotation;\n\t\tuniforms.map.value = material.map;\n\n\t\tif ( material.map !== null ) {\n\n\t\t\tif ( material.map.matrixAutoUpdate === true ) {\n\n\t\t\t\tmaterial.map.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( material.map.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsFog( uniforms, fog ) {\n\n\t\tuniforms.fogColor.value.copy( fog.color );\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLambert( uniforms, material ) {\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value.copy( material.specular );\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\trefreshUniformsPhong( uniforms, material );\n\n\t\tif ( material.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material ) {\n\n\t\tuniforms.roughness.value = material.roughness;\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t}\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tif ( material.envMap ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material ) {\n\n\t\trefreshUniformsStandard( uniforms, material );\n\n\t\tuniforms.reflectivity.value = material.reflectivity; // also part of uniforms common\n\n\t\tuniforms.clearCoat.value = material.clearCoat;\n\t\tuniforms.clearCoatRoughness.value = material.clearCoatRoughness;\n\n\t}\n\n\tfunction refreshUniformsMatcap( uniforms, material ) {\n\n\t\tif ( material.matcap ) {\n\n\t\t\tuniforms.matcap.value = material.matcap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDepth( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tuniforms.referencePosition.value.copy( material.referencePosition );\n\t\tuniforms.nearDistance.value = material.nearDistance;\n\t\tuniforms.farDistance.value = material.farDistance;\n\n\t}\n\n\tfunction refreshUniformsNormal( uniforms, material ) {\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\tuniforms.directionalLights.needsUpdate = value;\n\t\tuniforms.pointLights.needsUpdate = value;\n\t\tuniforms.spotLights.needsUpdate = value;\n\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t}\n\n\t//\n\tthis.setFramebuffer = function ( value ) {\n\n\t\tif ( _framebuffer !== value ) _gl.bindFramebuffer( 36160, value );\n\n\t\t_framebuffer = value;\n\n\t};\n\n\tthis.getActiveCubeFace = function () {\n\n\t\treturn _currentActiveCubeFace;\n\n\t};\n\n\tthis.getActiveMipmapLevel = function () {\n\n\t\treturn _currentActiveMipmapLevel;\n\n\t};\n\n\tthis.getRenderTarget = function () {\n\n\t\treturn _currentRenderTarget;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget, activeCubeFace, activeMipmapLevel ) {\n\n\t\t_currentRenderTarget = renderTarget;\n\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\tif ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) {\n\n\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t}\n\n\t\tvar framebuffer = _framebuffer;\n\t\tvar isCube = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tvar __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLRenderTargetCube ) {\n\n\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace || 0 ];\n\t\t\t\tisCube = true;\n\n\t\t\t} else if ( renderTarget.isWebGLMultisampleRenderTarget ) {\n\n\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\n\n\t\t\t} else {\n\n\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t}\n\n\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t} else {\n\n\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t}\n\n\t\tif ( _currentFramebuffer !== framebuffer ) {\n\n\t\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\t\t\t_currentFramebuffer = framebuffer;\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport );\n\t\tstate.scissor( _currentScissor );\n\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\tif ( isCube ) {\n\n\t\t\tvar textureProperties = properties.get( renderTarget.texture );\n\t\t\t_gl.framebufferTexture2D( 36160, 36064, 34069 + ( activeCubeFace || 0 ), textureProperties.__webglTexture, activeMipmapLevel || 0 );\n\n\t\t}\n\n\t};\n\n\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\tif ( renderTarget.isWebGLRenderTargetCube && activeCubeFaceIndex !== undefined ) {\n\n\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t}\n\n\t\tif ( framebuffer ) {\n\n\t\t\tvar restore = false;\n\n\t\t\tif ( framebuffer !== _currentFramebuffer ) {\n\n\t\t\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\n\t\t\t\trestore = true;\n\n\t\t\t}\n\n\t\t\ttry {\n\n\t\t\t\tvar texture = renderTarget.texture;\n\t\t\t\tvar textureFormat = texture.format;\n\t\t\t\tvar textureType = texture.type;\n\n\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( 35739 ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( 35738 ) && // IE11, Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t\t! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.get( 'OES_texture_float' ) || extensions.get( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t\t! ( textureType === HalfFloatType && ( capabilities.isWebGL2 ? extensions.get( 'EXT_color_buffer_float' ) : extensions.get( 'EXT_color_buffer_half_float' ) ) ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _gl.checkFramebufferStatus( 36160 ) === 36053 ) {\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );\n\n\t\t\t\t}\n\n\t\t\t} finally {\n\n\t\t\t\tif ( restore ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, _currentFramebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.copyFramebufferToTexture = function ( position, texture, level ) {\n\n\t\tvar width = texture.image.width;\n\t\tvar height = texture.image.height;\n\t\tvar glFormat = utils.convert( texture.format );\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t_gl.copyTexImage2D( 3553, level || 0, glFormat, position.x, position.y, width, height, 0 );\n\n\t};\n\n\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level ) {\n\n\t\tvar width = srcTexture.image.width;\n\t\tvar height = srcTexture.image.height;\n\t\tvar glFormat = utils.convert( dstTexture.format );\n\t\tvar glType = utils.convert( dstTexture.type );\n\n\t\ttextures.setTexture2D( dstTexture, 0 );\n\n\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t_gl.texSubImage2D( 3553, level || 0, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t} else {\n\n\t\t\t_gl.texSubImage2D( 3553, level || 0, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t}\n\n\t};\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction FogExp2( color, density ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\tthis.density = ( density !== undefined ) ? density : 0.00025;\n\n}\n\nObject.assign( FogExp2.prototype, {\n\n\tisFogExp2: true,\n\n\tclone: function () {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t},\n\n\ttoJSON: function ( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Fog( color, near, far ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\n\tthis.near = ( near !== undefined ) ? near : 1;\n\tthis.far = ( far !== undefined ) ? far : 1000;\n\n}\n\nObject.assign( Fog.prototype, {\n\n\tisFog: true,\n\n\tclone: function () {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t},\n\n\ttoJSON: function ( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InterleavedBuffer( array, stride ) {\n\n\tthis.array = array;\n\tthis.stride = stride;\n\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\tthis.dynamic = false;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n}\n\nObject.defineProperty( InterleavedBuffer.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( InterleavedBuffer.prototype, {\n\n\tisInterleavedBuffer: true,\n\n\tonUploadCallback: function () {},\n\n\tsetArray: function ( array ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.count = array !== undefined ? array.length / this.stride : 0;\n\t\tthis.array = array;\n\n\t\treturn this;\n\n\t},\n\n\tsetDynamic: function ( value ) {\n\n\t\tthis.dynamic = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.dynamic = source.dynamic;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( var i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, normalized ) {\n\n\tthis.data = interleavedBuffer;\n\tthis.itemSize = itemSize;\n\tthis.offset = offset;\n\n\tthis.normalized = normalized === true;\n\n}\n\nObject.defineProperties( InterleavedBufferAttribute.prototype, {\n\n\tcount: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.count;\n\n\t\t}\n\n\t},\n\n\tarray: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.array;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( InterleavedBufferAttribute.prototype, {\n\n\tisInterleavedBufferAttribute: true,\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset ];\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * map: new THREE.Texture( ),\n * rotation: ,\n * sizeAttenuation: \n * }\n */\n\nfunction SpriteMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'SpriteMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\tthis.map = null;\n\n\tthis.rotation = 0;\n\n\tthis.sizeAttenuation = true;\n\n\tthis.lights = false;\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nSpriteMaterial.prototype = Object.create( Material.prototype );\nSpriteMaterial.prototype.constructor = SpriteMaterial;\nSpriteMaterial.prototype.isSpriteMaterial = true;\n\nSpriteMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\tthis.map = source.map;\n\n\tthis.rotation = source.rotation;\n\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\treturn this;\n\n};\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n */\n\nvar geometry;\n\nfunction Sprite( material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Sprite';\n\n\tif ( geometry === undefined ) {\n\n\t\tgeometry = new BufferGeometry();\n\n\t\tvar float32Array = new Float32Array( [\n\t\t\t- 0.5, - 0.5, 0, 0, 0,\n\t\t\t0.5, - 0.5, 0, 1, 0,\n\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t- 0.5, 0.5, 0, 0, 1\n\t\t] );\n\n\t\tvar interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\tgeometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\tgeometry.addAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\tgeometry.addAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t}\n\n\tthis.geometry = geometry;\n\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\n\n\tthis.center = new Vector2( 0.5, 0.5 );\n\n}\n\nSprite.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Sprite,\n\n\tisSprite: true,\n\n\traycast: ( function () {\n\n\t\tvar intersectPoint = new Vector3();\n\t\tvar worldScale = new Vector3();\n\t\tvar mvPosition = new Vector3();\n\n\t\tvar alignedPosition = new Vector2();\n\t\tvar rotatedPosition = new Vector2();\n\t\tvar viewWorldMatrix = new Matrix4();\n\n\t\tvar vA = new Vector3();\n\t\tvar vB = new Vector3();\n\t\tvar vC = new Vector3();\n\n\t\tvar uvA = new Vector2();\n\t\tvar uvB = new Vector2();\n\t\tvar uvC = new Vector2();\n\n\t\tfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t\t\t// compute position in camera space\n\t\t\talignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t\t\t// to check if rotation is not zero\n\t\t\tif ( sin !== undefined ) {\n\n\t\t\t\trotatedPosition.x = ( cos * alignedPosition.x ) - ( sin * alignedPosition.y );\n\t\t\t\trotatedPosition.y = ( sin * alignedPosition.x ) + ( cos * alignedPosition.y );\n\n\t\t\t} else {\n\n\t\t\t\trotatedPosition.copy( alignedPosition );\n\n\t\t\t}\n\n\n\t\t\tvertexPosition.copy( mvPosition );\n\t\t\tvertexPosition.x += rotatedPosition.x;\n\t\t\tvertexPosition.y += rotatedPosition.y;\n\n\t\t\t// transform to world space\n\t\t\tvertexPosition.applyMatrix4( viewWorldMatrix );\n\n\t\t}\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tworldScale.setFromMatrixScale( this.matrixWorld );\n\n\t\t\tviewWorldMatrix.copy( raycaster._camera.matrixWorld );\n\t\t\tthis.modelViewMatrix.multiplyMatrices( raycaster._camera.matrixWorldInverse, this.matrixWorld );\n\n\t\t\tmvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\t\tif ( raycaster._camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\n\n\t\t\t\tworldScale.multiplyScalar( - mvPosition.z );\n\n\t\t\t}\n\n\t\t\tvar rotation = this.material.rotation;\n\t\t\tvar sin, cos;\n\t\t\tif ( rotation !== 0 ) {\n\n\t\t\t\tcos = Math.cos( rotation );\n\t\t\t\tsin = Math.sin( rotation );\n\n\t\t\t}\n\n\t\t\tvar center = this.center;\n\n\t\t\ttransformVertex( vA.set( - 0.5, - 0.5, 0 ), mvPosition, center, worldScale, sin, cos );\n\t\t\ttransformVertex( vB.set( 0.5, - 0.5, 0 ), mvPosition, center, worldScale, sin, cos );\n\t\t\ttransformVertex( vC.set( 0.5, 0.5, 0 ), mvPosition, center, worldScale, sin, cos );\n\n\t\t\tuvA.set( 0, 0 );\n\t\t\tuvB.set( 1, 0 );\n\t\t\tuvC.set( 1, 1 );\n\n\t\t\t// check first triangle\n\t\t\tvar intersect = raycaster.ray.intersectTriangle( vA, vB, vC, false, intersectPoint );\n\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\t// check second triangle\n\t\t\t\ttransformVertex( vB.set( - 0.5, 0.5, 0 ), mvPosition, center, worldScale, sin, cos );\n\t\t\t\tuvB.set( 0, 1 );\n\n\t\t\t\tintersect = raycaster.ray.intersectTriangle( vA, vC, vB, false, intersectPoint );\n\t\t\t\tif ( intersect === null ) {\n\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\t\tintersects.push( {\n\n\t\t\t\tdistance: distance,\n\t\t\t\tpoint: intersectPoint.clone(),\n\t\t\t\tuv: Triangle.getUV( intersectPoint, vA, vB, vC, uvA, uvB, uvC, new Vector2() ),\n\t\t\t\tface: null,\n\t\t\t\tobject: this\n\n\t\t\t} );\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.material ).copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\treturn this;\n\n\t}\n\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LOD() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'LOD';\n\n\tObject.defineProperties( this, {\n\t\tlevels: {\n\t\t\tenumerable: true,\n\t\t\tvalue: []\n\t\t}\n\t} );\n\n\tthis.autoUpdate = true;\n\n}\n\nLOD.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: LOD,\n\n\tisLOD: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source, false );\n\n\t\tvar levels = source.levels;\n\n\t\tfor ( var i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tvar level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\taddLevel: function ( object, distance ) {\n\n\t\tif ( distance === undefined ) distance = 0;\n\n\t\tdistance = Math.abs( distance );\n\n\t\tvar levels = this.levels;\n\n\t\tfor ( var l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t},\n\n\tgetObjectForDistance: function ( distance ) {\n\n\t\tvar levels = this.levels;\n\n\t\tfor ( var i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\tif ( distance < levels[ i ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn levels[ i - 1 ].object;\n\n\t},\n\n\traycast: ( function () {\n\n\t\tvar matrixPosition = new Vector3();\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tmatrixPosition.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tvar distance = raycaster.ray.origin.distanceTo( matrixPosition );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t};\n\n\t}() ),\n\n\tupdate: function () {\n\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\n\t\treturn function update( camera ) {\n\n\t\t\tvar levels = this.levels;\n\n\t\t\tif ( levels.length > 1 ) {\n\n\t\t\t\tv1.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t\tv2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\t\tvar distance = v1.distanceTo( v2 );\n\n\t\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\t\tfor ( var i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( distance >= levels[ i ].distance ) {\n\n\t\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}(),\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.levels = [];\n\n\t\tvar levels = this.levels;\n\n\t\tfor ( var i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tvar level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction SkinnedMesh( geometry, material ) {\n\n\tif ( geometry && geometry.isGeometry ) {\n\n\t\tconsole.error( 'THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t}\n\n\tMesh.call( this, geometry, material );\n\n\tthis.type = 'SkinnedMesh';\n\n\tthis.bindMode = 'attached';\n\tthis.bindMatrix = new Matrix4();\n\tthis.bindMatrixInverse = new Matrix4();\n\n}\n\nSkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: SkinnedMesh,\n\n\tisSkinnedMesh: true,\n\n\tbind: function ( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.getInverse( bindMatrix );\n\n\t},\n\n\tpose: function () {\n\n\t\tthis.skeleton.pose();\n\n\t},\n\n\tnormalizeSkinWeights: function () {\n\n\t\tvar vector = new Vector4();\n\n\t\tvar skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( var i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.x = skinWeight.getX( i );\n\t\t\tvector.y = skinWeight.getY( i );\n\t\t\tvector.z = skinWeight.getZ( i );\n\t\t\tvector.w = skinWeight.getW( i );\n\n\t\t\tvar scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tMesh.prototype.updateMatrixWorld.call( this, force );\n\n\t\tif ( this.bindMode === 'attached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.matrixWorld );\n\n\t\t} else if ( this.bindMode === 'detached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.bindMatrix );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author michael guerrero / http://realitymeltdown.com\n * @author ikerr / http://verold.com\n */\n\nfunction Skeleton( bones, boneInverses ) {\n\n\t// copy the bone array\n\n\tbones = bones || [];\n\n\tthis.bones = bones.slice( 0 );\n\tthis.boneMatrices = new Float32Array( this.bones.length * 16 );\n\n\t// use the supplied bone inverses or calculate the inverses\n\n\tif ( boneInverses === undefined ) {\n\n\t\tthis.calculateInverses();\n\n\t} else {\n\n\t\tif ( this.bones.length === boneInverses.length ) {\n\n\t\t\tthis.boneInverses = boneInverses.slice( 0 );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Skeleton boneInverses is the wrong length.' );\n\n\t\t\tthis.boneInverses = [];\n\n\t\t\tfor ( var i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Skeleton.prototype, {\n\n\tcalculateInverses: function () {\n\n\t\tthis.boneInverses = [];\n\n\t\tfor ( var i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tvar inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.getInverse( this.bones[ i ].matrixWorld );\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t},\n\n\tpose: function () {\n\n\t\tvar bone, i, il;\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tbone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.getInverse( this.boneInverses[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tbone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.getInverse( bone.parent.matrixWorld );\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdate: ( function () {\n\n\t\tvar offsetMatrix = new Matrix4();\n\t\tvar identityMatrix = new Matrix4();\n\n\t\treturn function update() {\n\n\t\t\tvar bones = this.bones;\n\t\t\tvar boneInverses = this.boneInverses;\n\t\t\tvar boneMatrices = this.boneMatrices;\n\t\t\tvar boneTexture = this.boneTexture;\n\n\t\t\t// flatten bone matrices to array\n\n\t\t\tfor ( var i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t\t// compute the offset between the current and the original transform\n\n\t\t\t\tvar matrix = bones[ i ] ? bones[ i ].matrixWorld : identityMatrix;\n\n\t\t\t\toffsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t\toffsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t\t}\n\n\t\t\tif ( boneTexture !== undefined ) {\n\n\t\t\t\tboneTexture.needsUpdate = true;\n\n\t\t\t}\n\n\t\t};\n\n\t} )(),\n\n\tclone: function () {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t},\n\n\tgetBoneByName: function ( name ) {\n\n\t\tfor ( var i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tvar bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction Bone() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Bone';\n\n}\n\nBone.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Bone,\n\n\tisBone: true\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n * linecap: \"round\",\n * linejoin: \"round\"\n * }\n */\n\nfunction LineBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'LineBasicMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.linewidth = 1;\n\tthis.linecap = 'round';\n\tthis.linejoin = 'round';\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nLineBasicMaterial.prototype = Object.create( Material.prototype );\nLineBasicMaterial.prototype.constructor = LineBasicMaterial;\n\nLineBasicMaterial.prototype.isLineBasicMaterial = true;\n\nLineBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.linewidth = source.linewidth;\n\tthis.linecap = source.linecap;\n\tthis.linejoin = source.linejoin;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Line( geometry, material, mode ) {\n\n\tif ( mode === 1 ) {\n\n\t\tconsole.error( 'THREE.Line: parameter THREE.LinePieces no longer supported. Use THREE.LineSegments instead.' );\n\n\t}\n\n\tObject3D.call( this );\n\n\tthis.type = 'Line';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new LineBasicMaterial( { color: Math.random() * 0xffffff } );\n\n}\n\nLine.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Line,\n\n\tisLine: true,\n\n\tcomputeLineDistances: ( function () {\n\n\t\tvar start = new Vector3();\n\t\tvar end = new Vector3();\n\n\t\treturn function computeLineDistances() {\n\n\t\t\tvar geometry = this.geometry;\n\n\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\t// we assume non-indexed geometry\n\n\t\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\t\tvar positionAttribute = geometry.attributes.position;\n\t\t\t\t\tvar lineDistances = [ 0 ];\n\n\t\t\t\t\tfor ( var i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\t\tstart.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t\t\tend.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\t\t\tlineDistances[ i ] += start.distanceTo( end );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.addAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t\t}\n\n\t\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\tvar lineDistances = geometry.lineDistances;\n\n\t\t\t\tlineDistances[ 0 ] = 0;\n\n\t\t\t\tfor ( var i = 1, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i ] += vertices[ i - 1 ].distanceTo( vertices[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}() ),\n\n\traycast: ( function () {\n\n\t\tvar inverseMatrix = new Matrix4();\n\t\tvar ray = new Ray();\n\t\tvar sphere = new Sphere();\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tvar precision = raycaster.linePrecision;\n\n\t\t\tvar geometry = this.geometry;\n\t\t\tvar matrixWorld = this.matrixWorld;\n\n\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\tsphere.applyMatrix4( matrixWorld );\n\t\t\tsphere.radius += precision;\n\n\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t//\n\n\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\tvar localPrecision = precision / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\t\tvar localPrecisionSq = localPrecision * localPrecision;\n\n\t\t\tvar vStart = new Vector3();\n\t\t\tvar vEnd = new Vector3();\n\t\t\tvar interSegment = new Vector3();\n\t\t\tvar interRay = new Vector3();\n\t\t\tvar step = ( this && this.isLineSegments ) ? 2 : 1;\n\n\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\tvar index = geometry.index;\n\t\t\t\tvar attributes = geometry.attributes;\n\t\t\t\tvar positions = attributes.position.array;\n\n\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\tvar indices = index.array;\n\n\t\t\t\t\tfor ( var i = 0, l = indices.length - 1; i < l; i += step ) {\n\n\t\t\t\t\t\tvar a = indices[ i ];\n\t\t\t\t\t\tvar b = indices[ i + 1 ];\n\n\t\t\t\t\t\tvStart.fromArray( positions, a * 3 );\n\t\t\t\t\t\tvEnd.fromArray( positions, b * 3 );\n\n\t\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\t\tif ( distSq > localPrecisionSq ) continue;\n\n\t\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\tface: null,\n\t\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( var i = 0, l = positions.length / 3 - 1; i < l; i += step ) {\n\n\t\t\t\t\t\tvStart.fromArray( positions, 3 * i );\n\t\t\t\t\t\tvEnd.fromArray( positions, 3 * i + 3 );\n\n\t\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\t\tif ( distSq > localPrecisionSq ) continue;\n\n\t\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\tface: null,\n\t\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\tvar nbVertices = vertices.length;\n\n\t\t\t\tfor ( var i = 0; i < nbVertices - 1; i += step ) {\n\n\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localPrecisionSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LineSegments( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineSegments';\n\n}\n\nLineSegments.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineSegments,\n\n\tisLineSegments: true,\n\n\tcomputeLineDistances: ( function () {\n\n\t\tvar start = new Vector3();\n\t\tvar end = new Vector3();\n\n\t\treturn function computeLineDistances() {\n\n\t\t\tvar geometry = this.geometry;\n\n\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\t// we assume non-indexed geometry\n\n\t\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\t\tvar positionAttribute = geometry.attributes.position;\n\t\t\t\t\tvar lineDistances = [];\n\n\t\t\t\t\tfor ( var i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t\t\tstart.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t\t\tend.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + start.distanceTo( end );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.addAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t\t}\n\n\t\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\tvar lineDistances = geometry.lineDistances;\n\n\t\t\t\tfor ( var i = 0, l = vertices.length; i < l; i += 2 ) {\n\n\t\t\t\t\tstart.copy( vertices[ i ] );\n\t\t\t\t\tend.copy( vertices[ i + 1 ] );\n\n\t\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + start.distanceTo( end );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}() )\n\n} );\n\n/**\n * @author mgreter / http://github.com/mgreter\n */\n\nfunction LineLoop( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineLoop';\n\n}\n\nLineLoop.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineLoop,\n\n\tisLineLoop: true,\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n * size: ,\n * sizeAttenuation: \n *\n * morphTargets: \n * }\n */\n\nfunction PointsMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'PointsMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.size = 1;\n\tthis.sizeAttenuation = true;\n\n\tthis.morphTargets = false;\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nPointsMaterial.prototype = Object.create( Material.prototype );\nPointsMaterial.prototype.constructor = PointsMaterial;\n\nPointsMaterial.prototype.isPointsMaterial = true;\n\nPointsMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.size = source.size;\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Points( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Points';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new PointsMaterial( { color: Math.random() * 0xffffff } );\n\n\tthis.updateMorphTargets();\n\n}\n\nPoints.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Points,\n\n\tisPoints: true,\n\n\traycast: ( function () {\n\n\t\tvar inverseMatrix = new Matrix4();\n\t\tvar ray = new Ray();\n\t\tvar sphere = new Sphere();\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tvar object = this;\n\t\t\tvar geometry = this.geometry;\n\t\t\tvar matrixWorld = this.matrixWorld;\n\t\t\tvar threshold = raycaster.params.Points.threshold;\n\n\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\tsphere.applyMatrix4( matrixWorld );\n\t\t\tsphere.radius += threshold;\n\n\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t//\n\n\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\tvar localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\t\tvar localThresholdSq = localThreshold * localThreshold;\n\t\t\tvar position = new Vector3();\n\t\t\tvar intersectPoint = new Vector3();\n\n\t\t\tfunction testPoint( point, index ) {\n\n\t\t\t\tvar rayPointDistanceSq = ray.distanceSqToPoint( point );\n\n\t\t\t\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\t\t\t\tray.closestPointToPoint( point, intersectPoint );\n\t\t\t\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\t\t\t\tpoint: intersectPoint.clone(),\n\t\t\t\t\t\tindex: index,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tobject: object\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\tvar index = geometry.index;\n\t\t\t\tvar attributes = geometry.attributes;\n\t\t\t\tvar positions = attributes.position.array;\n\n\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\tvar indices = index.array;\n\n\t\t\t\t\tfor ( var i = 0, il = indices.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar a = indices[ i ];\n\n\t\t\t\t\t\tposition.fromArray( positions, a * 3 );\n\n\t\t\t\t\t\ttestPoint( position, a );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( var i = 0, l = positions.length / 3; i < l; i ++ ) {\n\n\t\t\t\t\t\tposition.fromArray( positions, i * 3 );\n\n\t\t\t\t\t\ttestPoint( position, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tvar vertices = geometry.vertices;\n\n\t\t\t\tfor ( var i = 0, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\t\ttestPoint( vertices[ i ], i );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}() ),\n\n\tupdateMorphTargets: function () {\n\n\t\tvar geometry = this.geometry;\n\t\tvar m, ml, name;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tvar morphAttributes = geometry.morphAttributes;\n\t\t\tvar keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tvar morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tname = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.format = format !== undefined ? format : RGBFormat;\n\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\tthis.generateMipmaps = false;\n\n}\n\nVideoTexture.prototype = Object.assign( Object.create( Texture.prototype ), {\n\n\tconstructor: VideoTexture,\n\n\tisVideoTexture: true,\n\n\tupdate: function () {\n\n\t\tvar video = this.image;\n\n\t\tif ( video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { width: width, height: height };\n\tthis.mipmaps = mipmaps;\n\n\t// no flipping for cube textures\n\t// (also flipping doesn't work for compressed textures )\n\n\tthis.flipY = false;\n\n\t// can't generate mipmaps for compressed textures\n\t// mips must be embedded in DDS files\n\n\tthis.generateMipmaps = false;\n\n}\n\nCompressedTexture.prototype = Object.create( Texture.prototype );\nCompressedTexture.prototype.constructor = CompressedTexture;\n\nCompressedTexture.prototype.isCompressedTexture = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.needsUpdate = true;\n\n}\n\nCanvasTexture.prototype = Object.create( Texture.prototype );\nCanvasTexture.prototype.constructor = CanvasTexture;\nCanvasTexture.prototype.isCanvasTexture = true;\n\n/**\n * @author Matt DesLauriers / @mattdesl\n * @author atix / arthursilber.de\n */\n\nfunction DepthTexture( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\tformat = format !== undefined ? format : DepthFormat;\n\n\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t}\n\n\tif ( type === undefined && format === DepthFormat ) type = UnsignedShortType;\n\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.image = { width: width, height: height };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.flipY = false;\n\tthis.generateMipmaps\t= false;\n\n}\n\nDepthTexture.prototype = Object.create( Texture.prototype );\nDepthTexture.prototype.constructor = DepthTexture;\nDepthTexture.prototype.isDepthTexture = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WireframeGeometry( geometry ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'WireframeGeometry';\n\n\t// buffer\n\n\tvar vertices = [];\n\n\t// helper variables\n\n\tvar i, j, l, o, ol;\n\tvar edge = [ 0, 0 ], edges = {}, e, edge1, edge2;\n\tvar key, keys = [ 'a', 'b', 'c' ];\n\tvar vertex;\n\n\t// different logic for Geometry and BufferGeometry\n\n\tif ( geometry && geometry.isGeometry ) {\n\n\t\t// create a data structure that contains all edges without duplicates\n\n\t\tvar faces = geometry.faces;\n\n\t\tfor ( i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tfor ( j = 0; j < 3; j ++ ) {\n\n\t\t\t\tedge1 = face[ keys[ j ] ];\n\t\t\t\tedge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices\n\n\t\tfor ( key in edges ) {\n\n\t\t\te = edges[ key ];\n\n\t\t\tvertex = geometry.vertices[ e.index1 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\tvertex = geometry.vertices[ e.index2 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t} else if ( geometry && geometry.isBufferGeometry ) {\n\n\t\tvar position, indices, groups;\n\t\tvar group, start, count;\n\t\tvar index1, index2;\n\n\t\tvertex = new Vector3();\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\t// indexed BufferGeometry\n\n\t\t\tposition = geometry.attributes.position;\n\t\t\tindices = geometry.index;\n\t\t\tgroups = geometry.groups;\n\n\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t}\n\n\t\t\t// create a data structure that contains all eges without duplicates\n\n\t\t\tfor ( o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\tgroup = groups[ o ];\n\n\t\t\t\tstart = group.start;\n\t\t\t\tcount = group.count;\n\n\t\t\t\tfor ( i = start, l = ( start + count ); i < l; i += 3 ) {\n\n\t\t\t\t\tfor ( j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\tedge1 = indices.getX( i + j );\n\t\t\t\t\t\tedge2 = indices.getX( i + ( j + 1 ) % 3 );\n\t\t\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// generate vertices\n\n\t\t\tfor ( key in edges ) {\n\n\t\t\t\te = edges[ key ];\n\n\t\t\t\tvertex.fromBufferAttribute( position, e.index1 );\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\tvertex.fromBufferAttribute( position, e.index2 );\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// non-indexed BufferGeometry\n\n\t\t\tposition = geometry.attributes.position;\n\n\t\t\tfor ( i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\tfor ( j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n\t\t\t\t\tindex1 = 3 * i + j;\n\t\t\t\t\tvertex.fromBufferAttribute( position, index1 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\tindex2 = 3 * i + ( ( j + 1 ) % 3 );\n\t\t\t\t\tvertex.fromBufferAttribute( position, index2 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n}\n\nWireframeGeometry.prototype = Object.create( BufferGeometry.prototype );\nWireframeGeometry.prototype.constructor = WireframeGeometry;\n\n/**\n * @author zz85 / https://github.com/zz85\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Parametric Surfaces Geometry\n * based on the brilliant article by @prideout http://prideout.net/blog/?p=44\n */\n\n// ParametricGeometry\n\nfunction ParametricGeometry( func, slices, stacks ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ParametricGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\tthis.fromBufferGeometry( new ParametricBufferGeometry( func, slices, stacks ) );\n\tthis.mergeVertices();\n\n}\n\nParametricGeometry.prototype = Object.create( Geometry.prototype );\nParametricGeometry.prototype.constructor = ParametricGeometry;\n\n// ParametricBufferGeometry\n\nfunction ParametricBufferGeometry( func, slices, stacks ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ParametricBufferGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\tvar EPS = 0.00001;\n\n\tvar normal = new Vector3();\n\n\tvar p0 = new Vector3(), p1 = new Vector3();\n\tvar pu = new Vector3(), pv = new Vector3();\n\n\tvar i, j;\n\n\tif ( func.length < 3 ) {\n\n\t\tconsole.error( 'THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.' );\n\n\t}\n\n\t// generate vertices, normals and uvs\n\n\tvar sliceCount = slices + 1;\n\n\tfor ( i = 0; i <= stacks; i ++ ) {\n\n\t\tvar v = i / stacks;\n\n\t\tfor ( j = 0; j <= slices; j ++ ) {\n\n\t\t\tvar u = j / slices;\n\n\t\t\t// vertex\n\n\t\t\tfunc( u, v, p0 );\n\t\t\tvertices.push( p0.x, p0.y, p0.z );\n\n\t\t\t// normal\n\n\t\t\t// approximate tangent vectors via finite differences\n\n\t\t\tif ( u - EPS >= 0 ) {\n\n\t\t\t\tfunc( u - EPS, v, p1 );\n\t\t\t\tpu.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u + EPS, v, p1 );\n\t\t\t\tpu.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\tif ( v - EPS >= 0 ) {\n\n\t\t\t\tfunc( u, v - EPS, p1 );\n\t\t\t\tpv.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u, v + EPS, p1 );\n\t\t\t\tpv.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\t// cross product of tangent vectors returns surface normal\n\n\t\t\tnormal.crossVectors( pu, pv ).normalize();\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( u, v );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( i = 0; i < stacks; i ++ ) {\n\n\t\tfor ( j = 0; j < slices; j ++ ) {\n\n\t\t\tvar a = i * sliceCount + j;\n\t\t\tvar b = i * sliceCount + j + 1;\n\t\t\tvar c = ( i + 1 ) * sliceCount + j + 1;\n\t\t\tvar d = ( i + 1 ) * sliceCount + j;\n\n\t\t\t// faces one and two\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nParametricBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry;\n\n/**\n * @author clockworkgeek / https://github.com/clockworkgeek\n * @author timothypratley / https://github.com/timothypratley\n * @author WestLangley / http://github.com/WestLangley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// PolyhedronGeometry\n\nfunction PolyhedronGeometry( vertices, indices, radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PolyhedronGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new PolyhedronBufferGeometry( vertices, indices, radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nPolyhedronGeometry.prototype = Object.create( Geometry.prototype );\nPolyhedronGeometry.prototype.constructor = PolyhedronGeometry;\n\n// PolyhedronBufferGeometry\n\nfunction PolyhedronBufferGeometry( vertices, indices, radius, detail ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PolyhedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tradius = radius || 1;\n\tdetail = detail || 0;\n\n\t// default buffer data\n\n\tvar vertexBuffer = [];\n\tvar uvBuffer = [];\n\n\t// the subdivision creates the vertex buffer data\n\n\tsubdivide( detail );\n\n\t// all vertices should lie on a conceptual sphere with a given radius\n\n\tapplyRadius( radius );\n\n\t// finally, create the uv data\n\n\tgenerateUVs();\n\n\t// build non-indexed geometry\n\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\tif ( detail === 0 ) {\n\n\t\tthis.computeVertexNormals(); // flat normals\n\n\t} else {\n\n\t\tthis.normalizeNormals(); // smooth normals\n\n\t}\n\n\t// helper functions\n\n\tfunction subdivide( detail ) {\n\n\t\tvar a = new Vector3();\n\t\tvar b = new Vector3();\n\t\tvar c = new Vector3();\n\n\t\t// iterate over all faces and apply a subdivison with the given detail value\n\n\t\tfor ( var i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t// get the vertices of the face\n\n\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t// perform subdivision\n\n\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t}\n\n\t}\n\n\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\tvar cols = Math.pow( 2, detail );\n\n\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\tvar v = [];\n\n\t\tvar i, j;\n\n\t\t// construct all of the vertices for this subdivision\n\n\t\tfor ( i = 0; i <= cols; i ++ ) {\n\n\t\t\tv[ i ] = [];\n\n\t\t\tvar aj = a.clone().lerp( c, i / cols );\n\t\t\tvar bj = b.clone().lerp( c, i / cols );\n\n\t\t\tvar rows = cols - i;\n\n\t\t\tfor ( j = 0; j <= rows; j ++ ) {\n\n\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// construct all of the faces\n\n\t\tfor ( i = 0; i < cols; i ++ ) {\n\n\t\t\tfor ( j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\tvar k = Math.floor( j / 2 );\n\n\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction applyRadius( radius ) {\n\n\t\tvar vertex = new Vector3();\n\n\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\tfor ( var i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tvar vertex = new Vector3();\n\n\t\tfor ( var i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tvar u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\tvar v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t}\n\n\t\tcorrectUVs();\n\n\t\tcorrectSeam();\n\n\t}\n\n\tfunction correctSeam() {\n\n\t\t// handle case when face straddles the seam, see #3269\n\n\t\tfor ( var i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t// uv data of a single face\n\n\t\t\tvar x0 = uvBuffer[ i + 0 ];\n\t\t\tvar x1 = uvBuffer[ i + 2 ];\n\t\t\tvar x2 = uvBuffer[ i + 4 ];\n\n\t\t\tvar max = Math.max( x0, x1, x2 );\n\t\t\tvar min = Math.min( x0, x1, x2 );\n\n\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction pushVertex( vertex ) {\n\n\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t}\n\n\tfunction getVertexByIndex( index, vertex ) {\n\n\t\tvar stride = index * 3;\n\n\t\tvertex.x = vertices[ stride + 0 ];\n\t\tvertex.y = vertices[ stride + 1 ];\n\t\tvertex.z = vertices[ stride + 2 ];\n\n\t}\n\n\tfunction correctUVs() {\n\n\t\tvar a = new Vector3();\n\t\tvar b = new Vector3();\n\t\tvar c = new Vector3();\n\n\t\tvar centroid = new Vector3();\n\n\t\tvar uvA = new Vector2();\n\t\tvar uvB = new Vector2();\n\t\tvar uvC = new Vector2();\n\n\t\tfor ( var i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\tvar azi = azimuth( centroid );\n\n\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t}\n\n\t}\n\n\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t}\n\n\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t}\n\n\t}\n\n\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\tfunction azimuth( vector ) {\n\n\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t}\n\n\n\t// Angle above the XZ plane.\n\n\tfunction inclination( vector ) {\n\n\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t}\n\n}\n\nPolyhedronBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPolyhedronBufferGeometry.prototype.constructor = PolyhedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// TetrahedronGeometry\n\nfunction TetrahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TetrahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new TetrahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nTetrahedronGeometry.prototype = Object.create( Geometry.prototype );\nTetrahedronGeometry.prototype.constructor = TetrahedronGeometry;\n\n// TetrahedronBufferGeometry\n\nfunction TetrahedronBufferGeometry( radius, detail ) {\n\n\tvar vertices = [\n\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t];\n\n\tvar indices = [\n\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'TetrahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nTetrahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nTetrahedronBufferGeometry.prototype.constructor = TetrahedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// OctahedronGeometry\n\nfunction OctahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'OctahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new OctahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nOctahedronGeometry.prototype = Object.create( Geometry.prototype );\nOctahedronGeometry.prototype.constructor = OctahedronGeometry;\n\n// OctahedronBufferGeometry\n\nfunction OctahedronBufferGeometry( radius, detail ) {\n\n\tvar vertices = [\n\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t];\n\n\tvar indices = [\n\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t1, 3, 4,\t1, 4, 2\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'OctahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nOctahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nOctahedronBufferGeometry.prototype.constructor = OctahedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// IcosahedronGeometry\n\nfunction IcosahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'IcosahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new IcosahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nIcosahedronGeometry.prototype = Object.create( Geometry.prototype );\nIcosahedronGeometry.prototype.constructor = IcosahedronGeometry;\n\n// IcosahedronBufferGeometry\n\nfunction IcosahedronBufferGeometry( radius, detail ) {\n\n\tvar t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\tvar vertices = [\n\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t 0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t t, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t];\n\n\tvar indices = [\n\t\t 0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t 1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t 3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t 4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'IcosahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nIcosahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nIcosahedronBufferGeometry.prototype.constructor = IcosahedronBufferGeometry;\n\n/**\n * @author Abe Pazos / https://hamoid.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// DodecahedronGeometry\n\nfunction DodecahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'DodecahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new DodecahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nDodecahedronGeometry.prototype = Object.create( Geometry.prototype );\nDodecahedronGeometry.prototype.constructor = DodecahedronGeometry;\n\n// DodecahedronBufferGeometry\n\nfunction DodecahedronBufferGeometry( radius, detail ) {\n\n\tvar t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\tvar r = 1 / t;\n\n\tvar vertices = [\n\n\t\t// (±1, ±1, ±1)\n\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t// (0, ±1/φ, ±φ)\n\t\t 0, - r, - t, 0, - r, t,\n\t\t 0, r, - t, 0, r, t,\n\n\t\t// (±1/φ, ±φ, 0)\n\t\t- r, - t, 0, - r, t, 0,\n\t\t r, - t, 0, r, t, 0,\n\n\t\t// (±φ, 0, ±1/φ)\n\t\t- t, 0, - r, t, 0, - r,\n\t\t- t, 0, r, t, 0, r\n\t];\n\n\tvar indices = [\n\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'DodecahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nDodecahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nDodecahedronBufferGeometry.prototype.constructor = DodecahedronBufferGeometry;\n\n/**\n * @author oosmoxiecode / https://github.com/oosmoxiecode\n * @author WestLangley / https://github.com/WestLangley\n * @author zz85 / https://github.com/zz85\n * @author miningold / https://github.com/miningold\n * @author jonobr1 / https://github.com/jonobr1\n * @author Mugen87 / https://github.com/Mugen87\n *\n */\n\n// TubeGeometry\n\nfunction TubeGeometry( path, tubularSegments, radius, radialSegments, closed, taper ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TubeGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\tif ( taper !== undefined ) console.warn( 'THREE.TubeGeometry: taper has been removed.' );\n\n\tvar bufferGeometry = new TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = bufferGeometry.tangents;\n\tthis.normals = bufferGeometry.normals;\n\tthis.binormals = bufferGeometry.binormals;\n\n\t// create geometry\n\n\tthis.fromBufferGeometry( bufferGeometry );\n\tthis.mergeVertices();\n\n}\n\nTubeGeometry.prototype = Object.create( Geometry.prototype );\nTubeGeometry.prototype.constructor = TubeGeometry;\n\n// TubeBufferGeometry\n\nfunction TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TubeBufferGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\ttubularSegments = tubularSegments || 64;\n\tradius = radius || 1;\n\tradialSegments = radialSegments || 8;\n\tclosed = closed || false;\n\n\tvar frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = frames.tangents;\n\tthis.normals = frames.normals;\n\tthis.binormals = frames.binormals;\n\n\t// helper variables\n\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\tvar uv = new Vector2();\n\tvar P = new Vector3();\n\n\tvar i, j;\n\n\t// buffer\n\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\tvar indices = [];\n\n\t// create buffer data\n\n\tgenerateBufferData();\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// functions\n\n\tfunction generateBufferData() {\n\n\t\tfor ( i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\tgenerateSegment( i );\n\n\t\t}\n\n\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t// at the regular position on the given path\n\t\t//\n\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t// uvs are generated in a separate function.\n\t\t// this makes it easy compute correct values for closed geometries\n\n\t\tgenerateUVs();\n\n\t\t// finally create faces\n\n\t\tgenerateIndices();\n\n\t}\n\n\tfunction generateSegment( i ) {\n\n\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t// retrieve corresponding normal and binormal\n\n\t\tvar N = frames.normals[ i ];\n\t\tvar B = frames.binormals[ i ];\n\n\t\t// generate normals and vertices for the current segment\n\n\t\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\n\t\t\tvar sin = Math.sin( v );\n\t\t\tvar cos = - Math.cos( v );\n\n\t\t\t// normal\n\n\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\tnormal.normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\tfunction generateIndices() {\n\n\t\tfor ( j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\tvar a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tvar b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tvar c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tvar d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tfor ( i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nTubeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTubeBufferGeometry.prototype.constructor = TubeBufferGeometry;\n\nTubeBufferGeometry.prototype.toJSON = function () {\n\n\tvar data = BufferGeometry.prototype.toJSON.call( this );\n\n\tdata.path = this.parameters.path.toJSON();\n\n\treturn data;\n\n};\n\n/**\n * @author oosmoxiecode\n * @author Mugen87 / https://github.com/Mugen87\n *\n * based on http://www.blackpawn.com/texts/pqtorus/\n */\n\n// TorusKnotGeometry\n\nfunction TorusKnotGeometry( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusKnotGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tif ( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' );\n\n\tthis.fromBufferGeometry( new TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) );\n\tthis.mergeVertices();\n\n}\n\nTorusKnotGeometry.prototype = Object.create( Geometry.prototype );\nTorusKnotGeometry.prototype.constructor = TorusKnotGeometry;\n\n// TorusKnotBufferGeometry\n\nfunction TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusKnotBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tradius = radius || 1;\n\ttube = tube || 0.4;\n\ttubularSegments = Math.floor( tubularSegments ) || 64;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\tp = p || 2;\n\tq = q || 3;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar i, j;\n\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\n\tvar P1 = new Vector3();\n\tvar P2 = new Vector3();\n\n\tvar B = new Vector3();\n\tvar T = new Vector3();\n\tvar N = new Vector3();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segement\n\n\t\tvar u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t// calculate orthonormal basis\n\n\t\tT.subVectors( P2, P1 );\n\t\tN.addVectors( P2, P1 );\n\t\tB.crossVectors( T, N );\n\t\tN.crossVectors( B, T );\n\n\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\tB.normalize();\n\t\tN.normalize();\n\n\t\tfor ( j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\t\t\tvar cx = - tube * Math.cos( v );\n\t\t\tvar cy = tube * Math.sin( v );\n\n\t\t\t// now calculate the final vertex position.\n\t\t\t// first we orient the extrusion with our basis vectos, then we add it to the current position on the curve\n\n\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( i / tubularSegments );\n\t\t\tuvs.push( j / radialSegments );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( j = 1; j <= tubularSegments; j ++ ) {\n\n\t\tfor ( i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t// indices\n\n\t\t\tvar a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\tvar b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\tvar c = ( radialSegments + 1 ) * j + i;\n\t\t\tvar d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// this function calculates the current position on the torus curve\n\n\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\tvar cu = Math.cos( u );\n\t\tvar su = Math.sin( u );\n\t\tvar quOverP = q / p * u;\n\t\tvar cs = Math.cos( quOverP );\n\n\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t}\n\n}\n\nTorusKnotBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusKnotBufferGeometry.prototype.constructor = TorusKnotBufferGeometry;\n\n/**\n * @author oosmoxiecode\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// TorusGeometry\n\nfunction TorusGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tthis.fromBufferGeometry( new TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) );\n\tthis.mergeVertices();\n\n}\n\nTorusGeometry.prototype = Object.create( Geometry.prototype );\nTorusGeometry.prototype.constructor = TorusGeometry;\n\n// TorusBufferGeometry\n\nfunction TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tradius = radius || 1;\n\ttube = tube || 0.4;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\ttubularSegments = Math.floor( tubularSegments ) || 6;\n\tarc = arc || Math.PI * 2;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar center = new Vector3();\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\n\tvar j, i;\n\n\t// generate vertices, normals and uvs\n\n\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\tfor ( i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tvar u = i / tubularSegments * arc;\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( i / tubularSegments );\n\t\t\tuvs.push( j / radialSegments );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( j = 1; j <= radialSegments; j ++ ) {\n\n\t\tfor ( i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t// indices\n\n\t\t\tvar a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\tvar b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\tvar c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\tvar d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nTorusBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusBufferGeometry.prototype.constructor = TorusBufferGeometry;\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n * Port from https://github.com/mapbox/earcut (v2.1.5)\n */\n\nvar Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim ) {\n\n\t\tdim = dim || 2;\n\n\t\tvar hasHoles = holeIndices && holeIndices.length,\n\t\t\touterLen = hasHoles ? holeIndices[ 0 ] * dim : data.length,\n\t\t\touterNode = linkedList( data, 0, outerLen, dim, true ),\n\t\t\ttriangles = [];\n\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\n\n\t\tvar minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( var i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 1 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize );\n\n\t\treturn triangles;\n\n\t}\n\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tvar i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tvar p = start,\n\t\tagain;\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tvar stop = ear,\n\t\tprev, next;\n\n\t// iterate through ears, slicing them one by one\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim );\n\t\t\ttriangles.push( ear.i / dim );\n\t\t\ttriangles.push( next.i / dim );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertex leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( ear, triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar( ear ) {\n\n\tvar a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tvar p = ear.next.next;\n\n\twhile ( p !== ear.prev ) {\n\n\t\tif ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tvar a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tvar minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ),\n\t\tminTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ),\n\t\tmaxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ),\n\t\tmaxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y );\n\n\t// z-order range for the current triangle bbox;\n\tvar minZ = zOrder( minTX, minTY, minX, minY, invSize ),\n\t\tmaxZ = zOrder( maxTX, maxTY, minX, minY, invSize );\n\n\tvar p = ear.prevZ,\n\t\tn = ear.nextZ;\n\n\t// look for points inside the triangle in both directions\n\twhile ( p && p.z >= minZ && n && n.z <= maxZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\t// look for remaining points in decreasing z-order\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t}\n\n\t// look for remaining points in increasing z-order\n\twhile ( n && n.z <= maxZ ) {\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tvar p = start;\n\tdo {\n\n\t\tvar a = p.prev,\n\t\t\tb = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim );\n\t\t\ttriangles.push( p.i / dim );\n\t\t\ttriangles.push( b.i / dim );\n\n\t\t\t// remove two nodes involved\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn p;\n\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\tvar a = start;\n\tdo {\n\n\t\tvar b = a.next.next;\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\t\t\t\tvar c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tvar queue = [],\n\t\ti, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\teliminateHole( queue[ i ], outerNode );\n\t\touterNode = filterPoints( outerNode, outerNode.next );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole( hole, outerNode ) {\n\n\touterNode = findHoleBridge( hole, outerNode );\n\tif ( outerNode ) {\n\n\t\tvar b = splitPolygon( outerNode, hole );\n\t\tfilterPoints( b, b.next );\n\n\t}\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge( hole, outerNode ) {\n\n\tvar p = outerNode,\n\t\thx = hole.x,\n\t\thy = hole.y,\n\t\tqx = - Infinity,\n\t\tm;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tvar x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\t\t\t\tif ( x === hx ) {\n\n\t\t\t\t\tif ( hy === p.y ) return p;\n\t\t\t\t\tif ( hy === p.next.y ) return p.next;\n\n\t\t\t\t}\n\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\tif ( hx === qx ) return m.prev; // hole touches outer segment; pick lower endpoint\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tvar stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y,\n\t\ttanMin = Infinity,\n\t\ttan;\n\n\tp = m.next;\n\n\twhile ( p !== stop ) {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( ( tan < tanMin || ( tan === tanMin && p.x > m.x ) ) && locallyInside( p, hole ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t}\n\n\treturn m;\n\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tvar p = start;\n\tdo {\n\n\t\tif ( p.z === null ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked( list ) {\n\n\tvar i, p, q, e, tail, numMerges, pSize, qSize,\n\t\tinSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\tx = 32767 * ( x - minX ) * invSize;\n\ty = 32767 * ( y - minY ) * invSize;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost( start ) {\n\n\tvar p = start,\n\t\tleftmost = start;\n\tdo {\n\n\t\tif ( p.x < leftmost.x || ( p.x === leftmost.x && p.y < leftmost.y ) ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 &&\n\t\t ( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 &&\n\t\t ( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0;\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) &&\n\t\t locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b );\n\n}\n\n// signed area of a triangle\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tif ( ( equals( p1, p2 ) && equals( q1, q2 ) ) ||\n\t\t( equals( p1, q2 ) && equals( p2, q1 ) ) ) return true;\n\treturn area( p1, q1, p2 ) > 0 !== area( p1, q1, q2 ) > 0 &&\n\t\t area( p2, q2, p1 ) > 0 !== area( p2, q2, q1 ) > 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon( a, b ) {\n\n\tvar p = a;\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\t\tintersects( p, p.next, a, b ) ) return true;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside( a, b ) {\n\n\tvar p = a,\n\t\tinside = false,\n\t\tpx = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) )\n\t\t\tinside = ! inside;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon( a, b ) {\n\n\tvar a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode( i, x, y, last ) {\n\n\tvar p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertex index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertex nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = null;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tvar sum = 0;\n\tfor ( var i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nvar ShapeUtils = {\n\n\t// calculate area of the contour polygon\n\n\tarea: function ( contour ) {\n\n\t\tvar n = contour.length;\n\t\tvar a = 0.0;\n\n\t\tfor ( var p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t},\n\n\tisClockWise: function ( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t},\n\n\ttriangulateShape: function ( contour, holes ) {\n\n\t\tvar vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tvar holeIndices = []; // array of hole indices\n\t\tvar faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tvar holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( var i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tvar triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( var i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n};\n\nfunction removeDupEndPts( points ) {\n\n\tvar l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( var i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n * curveSegments: , // number of points on the curves\n * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * depth: , // Depth to extrude the shape\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into the original shape bevel goes\n * bevelSize: , // how far from shape outline (including bevelOffset) is bevel\n * bevelOffset: , // how far from shape outline does bevel start\n * bevelSegments: , // number of bevel layers\n *\n * extrudePath: // curve to extrude shape along\n *\n * UVGenerator: // object that provides UV generator functions\n *\n * }\n */\n\n// ExtrudeGeometry\n\nfunction ExtrudeGeometry( shapes, options ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ExtrudeGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\toptions: options\n\t};\n\n\tthis.fromBufferGeometry( new ExtrudeBufferGeometry( shapes, options ) );\n\tthis.mergeVertices();\n\n}\n\nExtrudeGeometry.prototype = Object.create( Geometry.prototype );\nExtrudeGeometry.prototype.constructor = ExtrudeGeometry;\n\nExtrudeGeometry.prototype.toJSON = function () {\n\n\tvar data = Geometry.prototype.toJSON.call( this );\n\n\tvar shapes = this.parameters.shapes;\n\tvar options = this.parameters.options;\n\n\treturn toJSON( shapes, options, data );\n\n};\n\n// ExtrudeBufferGeometry\n\nfunction ExtrudeBufferGeometry( shapes, options ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ExtrudeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\toptions: options\n\t};\n\n\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\tvar scope = this;\n\n\tvar verticesArray = [];\n\tvar uvArray = [];\n\n\tfor ( var i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\tvar shape = shapes[ i ];\n\t\taddShape( shape );\n\n\t}\n\n\t// build geometry\n\n\tthis.addAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\tthis.computeVertexNormals();\n\n\t// functions\n\n\tfunction addShape( shape ) {\n\n\t\tvar placeholder = [];\n\n\t\t// options\n\n\t\tvar curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\tvar steps = options.steps !== undefined ? options.steps : 1;\n\t\tvar depth = options.depth !== undefined ? options.depth : 100;\n\n\t\tvar bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\tvar bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6;\n\t\tvar bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2;\n\t\tvar bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\tvar bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\tvar extrudePath = options.extrudePath;\n\n\t\tvar uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t// deprecated options\n\n\t\tif ( options.amount !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' );\n\t\t\tdepth = options.amount;\n\n\t\t}\n\n\t\t//\n\n\t\tvar extrudePts, extrudeByPath = false;\n\t\tvar splineTube, binormal, normal, position2;\n\n\t\tif ( extrudePath ) {\n\n\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\textrudeByPath = true;\n\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t// SETUP TNB variables\n\n\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\tbinormal = new Vector3();\n\t\t\tnormal = new Vector3();\n\t\t\tposition2 = new Vector3();\n\n\t\t}\n\n\t\t// Safeguards if bevels are not enabled\n\n\t\tif ( ! bevelEnabled ) {\n\n\t\t\tbevelSegments = 0;\n\t\t\tbevelThickness = 0;\n\t\t\tbevelSize = 0;\n\t\t\tbevelOffset = 0;\n\n\t\t}\n\n\t\t// Variables initialization\n\n\t\tvar ahole, h, hl; // looping of holes\n\n\t\tvar shapePoints = shape.extractPoints( curveSegments );\n\n\t\tvar vertices = shapePoints.shape;\n\t\tvar holes = shapePoints.holes;\n\n\t\tvar reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\tif ( reverse ) {\n\n\t\t\tvertices = vertices.reverse();\n\n\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tvar faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t/* Vertices */\n\n\t\tvar contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\n\t\t\tvertices = vertices.concat( ahole );\n\n\t\t}\n\n\n\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\tif ( ! vec ) console.error( \"THREE.ExtrudeGeometry: vec does not exist\" );\n\n\t\t\treturn vec.clone().multiplyScalar( size ).add( pt );\n\n\t\t}\n\n\t\tvar b, bs, t, z,\n\t\t\tvert, vlen = vertices.length,\n\t\t\tface, flen = faces.length;\n\n\n\t\t// Find directions for point movement\n\n\n\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t//\n\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\tvar v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\tvar v_prev_x = inPt.x - inPrev.x,\n\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\tvar v_next_x = inNext.x - inPt.x,\n\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\tvar v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t// check for collinear edges\n\t\t\tvar collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t// not collinear\n\n\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\tvar v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\tvar v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\tvar ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\tvar ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\tvar ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\tvar ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\tvar sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t// but prevent crazy spikes\n\t\t\t\tvar v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\tvar direction_eq = false; // assumes: opposite\n\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t}\n\n\n\t\tvar contourMovements = [];\n\n\t\tfor ( var i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\tif ( j === il ) j = 0;\n\t\t\tif ( k === il ) k = 0;\n\n\t\t\t// (j)---(i)---(k)\n\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t}\n\n\t\tvar holesMovements = [],\n\t\t\toneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\n\t\t\toneHoleMovements = [];\n\n\t\t\tfor ( i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t// (j)---(i)---(k)\n\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t}\n\n\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t}\n\n\n\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\tfor ( b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\tt = b / bevelSegments;\n\t\t\tz = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\tbs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t// contract shape\n\n\t\t\tfor ( i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tvert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tvert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tbs = bevelSize + bevelOffset;\n\n\t\t// Back facing vertices\n\n\t\tfor ( i = 0; i < vlen; i ++ ) {\n\n\t\t\tvert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t} else {\n\n\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Add stepped vertices...\n\t\t// Including front facing vertices\n\n\t\tvar s;\n\n\t\tfor ( s = 1; s <= steps; s ++ ) {\n\n\t\t\tfor ( i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tvert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// Add bevel segments planes\n\n\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\tfor ( b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\tt = b / bevelSegments;\n\t\t\tz = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\tbs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t// contract shape\n\n\t\t\tfor ( i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tvert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tvert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t/* Faces */\n\n\t\t// Top and bottom faces\n\n\t\tbuildLidFaces();\n\n\t\t// Sides faces\n\n\t\tbuildSideFaces();\n\n\n\t\t///// Internal functions\n\n\t\tfunction buildLidFaces() {\n\n\t\t\tvar start = verticesArray.length / 3;\n\n\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\tvar layer = 0; // steps + 1\n\t\t\t\tvar offset = vlen * layer;\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t}\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t}\n\n\t\t// Create faces for the z-sides of the shape\n\n\t\tfunction buildSideFaces() {\n\n\t\t\tvar start = verticesArray.length / 3;\n\t\t\tvar layeroffset = 0;\n\t\t\tsidewalls( contour, layeroffset );\n\t\t\tlayeroffset += contour.length;\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t//, true\n\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t}\n\n\n\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t}\n\n\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\tvar j, k;\n\t\t\ti = contour.length;\n\n\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\tj = i;\n\t\t\t\tk = i - 1;\n\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\tvar s = 0,\n\t\t\t\t\tsl = steps + bevelSegments * 2;\n\n\t\t\t\tfor ( s = 0; s < sl; s ++ ) {\n\n\t\t\t\t\tvar slen1 = vlen * s;\n\t\t\t\t\tvar slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\tvar a = layeroffset + j + slen1,\n\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction v( x, y, z ) {\n\n\t\t\tplaceholder.push( x );\n\t\t\tplaceholder.push( y );\n\t\t\tplaceholder.push( z );\n\n\t\t}\n\n\n\t\tfunction f3( a, b, c ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\n\t\t\tvar nextIndex = verticesArray.length / 3;\n\t\t\tvar uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\n\t\t}\n\n\t\tfunction f4( a, b, c, d ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( d );\n\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\t\t\taddVertex( d );\n\n\n\t\t\tvar nextIndex = verticesArray.length / 3;\n\t\t\tvar uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t}\n\n\t\tfunction addVertex( index ) {\n\n\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t}\n\n\n\t\tfunction addUV( vector2 ) {\n\n\t\t\tuvArray.push( vector2.x );\n\t\t\tuvArray.push( vector2.y );\n\n\t\t}\n\n\t}\n\n}\n\nExtrudeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nExtrudeBufferGeometry.prototype.constructor = ExtrudeBufferGeometry;\n\nExtrudeBufferGeometry.prototype.toJSON = function () {\n\n\tvar data = BufferGeometry.prototype.toJSON.call( this );\n\n\tvar shapes = this.parameters.shapes;\n\tvar options = this.parameters.options;\n\n\treturn toJSON( shapes, options, data );\n\n};\n\n//\n\nvar WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tvar a_x = vertices[ indexA * 3 ];\n\t\tvar a_y = vertices[ indexA * 3 + 1 ];\n\t\tvar b_x = vertices[ indexB * 3 ];\n\t\tvar b_y = vertices[ indexB * 3 + 1 ];\n\t\tvar c_x = vertices[ indexC * 3 ];\n\t\tvar c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tvar a_x = vertices[ indexA * 3 ];\n\t\tvar a_y = vertices[ indexA * 3 + 1 ];\n\t\tvar a_z = vertices[ indexA * 3 + 2 ];\n\t\tvar b_x = vertices[ indexB * 3 ];\n\t\tvar b_y = vertices[ indexB * 3 + 1 ];\n\t\tvar b_z = vertices[ indexB * 3 + 2 ];\n\t\tvar c_x = vertices[ indexC * 3 ];\n\t\tvar c_y = vertices[ indexC * 3 + 1 ];\n\t\tvar c_z = vertices[ indexC * 3 + 2 ];\n\t\tvar d_x = vertices[ indexD * 3 ];\n\t\tvar d_y = vertices[ indexD * 3 + 1 ];\n\t\tvar d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < 0.01 ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n};\n\nfunction toJSON( shapes, options, data ) {\n\n\t//\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( var i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tvar shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\t//\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author alteredq / http://alteredqualia.com/\n *\n * Text = 3D Text\n *\n * parameters = {\n * font: , // font\n *\n * size: , // size of the text\n * height: , // thickness to extrude text\n * curveSegments: , // number of points on the curves\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into text bevel goes\n * bevelSize: , // how far from text outline (including bevelOffset) is bevel\n * bevelOffset: // how far from text outline does bevel start\n * }\n */\n\n// TextGeometry\n\nfunction TextGeometry( text, parameters ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TextGeometry';\n\n\tthis.parameters = {\n\t\ttext: text,\n\t\tparameters: parameters\n\t};\n\n\tthis.fromBufferGeometry( new TextBufferGeometry( text, parameters ) );\n\tthis.mergeVertices();\n\n}\n\nTextGeometry.prototype = Object.create( Geometry.prototype );\nTextGeometry.prototype.constructor = TextGeometry;\n\n// TextBufferGeometry\n\nfunction TextBufferGeometry( text, parameters ) {\n\n\tparameters = parameters || {};\n\n\tvar font = parameters.font;\n\n\tif ( ! ( font && font.isFont ) ) {\n\n\t\tconsole.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' );\n\t\treturn new Geometry();\n\n\t}\n\n\tvar shapes = font.generateShapes( text, parameters.size );\n\n\t// translate parameters to ExtrudeGeometry API\n\n\tparameters.depth = parameters.height !== undefined ? parameters.height : 50;\n\n\t// defaults\n\n\tif ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10;\n\tif ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;\n\tif ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;\n\n\tExtrudeBufferGeometry.call( this, shapes, parameters );\n\n\tthis.type = 'TextBufferGeometry';\n\n}\n\nTextBufferGeometry.prototype = Object.create( ExtrudeBufferGeometry.prototype );\nTextBufferGeometry.prototype.constructor = TextBufferGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author benaadams / https://twitter.com/ben_a_adams\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// SphereGeometry\n\nfunction SphereGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'SphereGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nSphereGeometry.prototype = Object.create( Geometry.prototype );\nSphereGeometry.prototype.constructor = SphereGeometry;\n\n// SphereBufferGeometry\n\nfunction SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'SphereBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 1;\n\n\twidthSegments = Math.max( 3, Math.floor( widthSegments ) || 8 );\n\theightSegments = Math.max( 2, Math.floor( heightSegments ) || 6 );\n\n\tphiStart = phiStart !== undefined ? phiStart : 0;\n\tphiLength = phiLength !== undefined ? phiLength : Math.PI * 2;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI;\n\n\tvar thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\tvar ix, iy;\n\n\tvar index = 0;\n\tvar grid = [];\n\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// generate vertices, normals and uvs\n\n\tfor ( iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\tvar verticesRow = [];\n\n\t\tvar v = iy / heightSegments;\n\n\t\t// special case for the poles\n\n\t\tvar uOffset = 0;\n\n\t\tif ( iy == 0 && thetaStart == 0 ) {\n\n\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t} else if ( iy == heightSegments && thetaEnd == Math.PI ) {\n\n\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t}\n\n\t\tfor ( ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\tvar u = ix / widthSegments;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormal.copy( vertex ).normalize();\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\tverticesRow.push( index ++ );\n\n\t\t}\n\n\t\tgrid.push( verticesRow );\n\n\t}\n\n\t// indices\n\n\tfor ( iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\tfor ( ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\tvar a = grid[ iy ][ ix + 1 ];\n\t\t\tvar b = grid[ iy ][ ix ];\n\t\t\tvar c = grid[ iy + 1 ][ ix ];\n\t\t\tvar d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nSphereBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nSphereBufferGeometry.prototype.constructor = SphereBufferGeometry;\n\n/**\n * @author Kaleb Murphy\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// RingGeometry\n\nfunction RingGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'RingGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nRingGeometry.prototype = Object.create( Geometry.prototype );\nRingGeometry.prototype.constructor = RingGeometry;\n\n// RingBufferGeometry\n\nfunction RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'RingBufferGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tinnerRadius = innerRadius || 0.5;\n\touterRadius = outerRadius || 1;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\tthetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8;\n\tphiSegments = phiSegments !== undefined ? Math.max( 1, phiSegments ) : 1;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// some helper variables\n\n\tvar segment;\n\tvar radius = innerRadius;\n\tvar radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\tvar vertex = new Vector3();\n\tvar uv = new Vector2();\n\tvar j, i;\n\n\t// generate vertices, normals and uvs\n\n\tfor ( j = 0; j <= phiSegments; j ++ ) {\n\n\t\tfor ( i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\tsegment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uv\n\n\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// increase the radius for next row of vertices\n\n\t\tradius += radiusStep;\n\n\t}\n\n\t// indices\n\n\tfor ( j = 0; j < phiSegments; j ++ ) {\n\n\t\tvar thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\tfor ( i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\tsegment = i + thetaSegmentLevel;\n\n\t\t\tvar a = segment;\n\t\t\tvar b = segment + thetaSegments + 1;\n\t\t\tvar c = segment + thetaSegments + 2;\n\t\t\tvar d = segment + 1;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nRingBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nRingBufferGeometry.prototype.constructor = RingBufferGeometry;\n\n/**\n * @author zz85 / https://github.com/zz85\n * @author bhouston / http://clara.io\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// LatheGeometry\n\nfunction LatheGeometry( points, segments, phiStart, phiLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'LatheGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tthis.fromBufferGeometry( new LatheBufferGeometry( points, segments, phiStart, phiLength ) );\n\tthis.mergeVertices();\n\n}\n\nLatheGeometry.prototype = Object.create( Geometry.prototype );\nLatheGeometry.prototype.constructor = LatheGeometry;\n\n// LatheBufferGeometry\n\nfunction LatheBufferGeometry( points, segments, phiStart, phiLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'LatheBufferGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tsegments = Math.floor( segments ) || 12;\n\tphiStart = phiStart || 0;\n\tphiLength = phiLength || Math.PI * 2;\n\n\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\tphiLength = _Math.clamp( phiLength, 0, Math.PI * 2 );\n\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar base;\n\tvar inverseSegments = 1.0 / segments;\n\tvar vertex = new Vector3();\n\tvar uv = new Vector2();\n\tvar i, j;\n\n\t// generate vertices and uvs\n\n\tfor ( i = 0; i <= segments; i ++ ) {\n\n\t\tvar phi = phiStart + i * inverseSegments * phiLength;\n\n\t\tvar sin = Math.sin( phi );\n\t\tvar cos = Math.cos( phi );\n\n\t\tfor ( j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\tvertex.y = points[ j ].y;\n\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// uv\n\n\t\t\tuv.x = i / segments;\n\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tfor ( i = 0; i < segments; i ++ ) {\n\n\t\tfor ( j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\tbase = j + i * points.length;\n\n\t\t\tvar a = base;\n\t\t\tvar b = base + points.length;\n\t\t\tvar c = base + points.length + 1;\n\t\t\tvar d = base + 1;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// generate normals\n\n\tthis.computeVertexNormals();\n\n\t// if the geometry is closed, we need to average the normals along the seam.\n\t// because the corresponding vertices are identical (but still have different UVs).\n\n\tif ( phiLength === Math.PI * 2 ) {\n\n\t\tvar normals = this.attributes.normal.array;\n\t\tvar n1 = new Vector3();\n\t\tvar n2 = new Vector3();\n\t\tvar n = new Vector3();\n\n\t\t// this is the buffer offset for the last line of vertices\n\n\t\tbase = segments * points.length * 3;\n\n\t\tfor ( i = 0, j = 0; i < points.length; i ++, j += 3 ) {\n\n\t\t\t// select the normal of the vertex in the first line\n\n\t\t\tn1.x = normals[ j + 0 ];\n\t\t\tn1.y = normals[ j + 1 ];\n\t\t\tn1.z = normals[ j + 2 ];\n\n\t\t\t// select the normal of the vertex in the last line\n\n\t\t\tn2.x = normals[ base + j + 0 ];\n\t\t\tn2.y = normals[ base + j + 1 ];\n\t\t\tn2.z = normals[ base + j + 2 ];\n\n\t\t\t// average normals\n\n\t\t\tn.addVectors( n1, n2 ).normalize();\n\n\t\t\t// assign the new values to both normals\n\n\t\t\tnormals[ j + 0 ] = normals[ base + j + 0 ] = n.x;\n\t\t\tnormals[ j + 1 ] = normals[ base + j + 1 ] = n.y;\n\t\t\tnormals[ j + 2 ] = normals[ base + j + 2 ] = n.z;\n\n\t\t}\n\n\t}\n\n}\n\nLatheBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nLatheBufferGeometry.prototype.constructor = LatheBufferGeometry;\n\n/**\n * @author jonobr1 / http://jonobr1.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// ShapeGeometry\n\nfunction ShapeGeometry( shapes, curveSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ShapeGeometry';\n\n\tif ( typeof curveSegments === 'object' ) {\n\n\t\tconsole.warn( 'THREE.ShapeGeometry: Options parameter has been removed.' );\n\n\t\tcurveSegments = curveSegments.curveSegments;\n\n\t}\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tthis.fromBufferGeometry( new ShapeBufferGeometry( shapes, curveSegments ) );\n\tthis.mergeVertices();\n\n}\n\nShapeGeometry.prototype = Object.create( Geometry.prototype );\nShapeGeometry.prototype.constructor = ShapeGeometry;\n\nShapeGeometry.prototype.toJSON = function () {\n\n\tvar data = Geometry.prototype.toJSON.call( this );\n\n\tvar shapes = this.parameters.shapes;\n\n\treturn toJSON$1( shapes, data );\n\n};\n\n// ShapeBufferGeometry\n\nfunction ShapeBufferGeometry( shapes, curveSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ShapeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tcurveSegments = curveSegments || 12;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar groupStart = 0;\n\tvar groupCount = 0;\n\n\t// allow single and array values for \"shapes\" parameter\n\n\tif ( Array.isArray( shapes ) === false ) {\n\n\t\taddShape( shapes );\n\n\t} else {\n\n\t\tfor ( var i = 0; i < shapes.length; i ++ ) {\n\n\t\t\taddShape( shapes[ i ] );\n\n\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\tgroupStart += groupCount;\n\t\t\tgroupCount = 0;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t// helper functions\n\n\tfunction addShape( shape ) {\n\n\t\tvar i, l, shapeHole;\n\n\t\tvar indexOffset = vertices.length / 3;\n\t\tvar points = shape.extractPoints( curveSegments );\n\n\t\tvar shapeVertices = points.shape;\n\t\tvar shapeHoles = points.holes;\n\n\t\t// check direction of vertices\n\n\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t}\n\n\t\tfor ( i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tshapeHole = shapeHoles[ i ];\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t// join vertices of inner and outer paths to a single array\n\n\t\tfor ( i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tshapeHole = shapeHoles[ i ];\n\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t}\n\n\t\t// vertices, normals, uvs\n\n\t\tfor ( i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\tvar vertex = shapeVertices[ i ];\n\n\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\tnormals.push( 0, 0, 1 );\n\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t}\n\n\t\t// incides\n\n\t\tfor ( i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tvar a = face[ 0 ] + indexOffset;\n\t\t\tvar b = face[ 1 ] + indexOffset;\n\t\t\tvar c = face[ 2 ] + indexOffset;\n\n\t\t\tindices.push( a, b, c );\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t}\n\n}\n\nShapeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nShapeBufferGeometry.prototype.constructor = ShapeBufferGeometry;\n\nShapeBufferGeometry.prototype.toJSON = function () {\n\n\tvar data = BufferGeometry.prototype.toJSON.call( this );\n\n\tvar shapes = this.parameters.shapes;\n\n\treturn toJSON$1( shapes, data );\n\n};\n\n//\n\nfunction toJSON$1( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( var i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tvar shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction EdgesGeometry( geometry, thresholdAngle ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'EdgesGeometry';\n\n\tthis.parameters = {\n\t\tthresholdAngle: thresholdAngle\n\t};\n\n\tthresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1;\n\n\t// buffer\n\n\tvar vertices = [];\n\n\t// helper variables\n\n\tvar thresholdDot = Math.cos( _Math.DEG2RAD * thresholdAngle );\n\tvar edge = [ 0, 0 ], edges = {}, edge1, edge2;\n\tvar key, keys = [ 'a', 'b', 'c' ];\n\n\t// prepare source geometry\n\n\tvar geometry2;\n\n\tif ( geometry.isBufferGeometry ) {\n\n\t\tgeometry2 = new Geometry();\n\t\tgeometry2.fromBufferGeometry( geometry );\n\n\t} else {\n\n\t\tgeometry2 = geometry.clone();\n\n\t}\n\n\tgeometry2.mergeVertices();\n\tgeometry2.computeFaceNormals();\n\n\tvar sourceVertices = geometry2.vertices;\n\tvar faces = geometry2.faces;\n\n\t// now create a data structure where each entry represents an edge with its adjoining faces\n\n\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\tvar face = faces[ i ];\n\n\t\tfor ( var j = 0; j < 3; j ++ ) {\n\n\t\t\tedge1 = face[ keys[ j ] ];\n\t\t\tedge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\tedge[ 0 ] = Math.min( edge1, edge2 );\n\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ], face1: i, face2: undefined };\n\n\t\t\t} else {\n\n\t\t\t\tedges[ key ].face2 = i;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// generate vertices\n\n\tfor ( key in edges ) {\n\n\t\tvar e = edges[ key ];\n\n\t\t// an edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree.\n\n\t\tif ( e.face2 === undefined || faces[ e.face1 ].normal.dot( faces[ e.face2 ].normal ) <= thresholdDot ) {\n\n\t\t\tvar vertex = sourceVertices[ e.index1 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\tvertex = sourceVertices[ e.index2 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n}\n\nEdgesGeometry.prototype = Object.create( BufferGeometry.prototype );\nEdgesGeometry.prototype.constructor = EdgesGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// CylinderGeometry\n\nfunction CylinderGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CylinderGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCylinderGeometry.prototype = Object.create( Geometry.prototype );\nCylinderGeometry.prototype.constructor = CylinderGeometry;\n\n// CylinderBufferGeometry\n\nfunction CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CylinderBufferGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tvar scope = this;\n\n\tradiusTop = radiusTop !== undefined ? radiusTop : 1;\n\tradiusBottom = radiusBottom !== undefined ? radiusBottom : 1;\n\theight = height || 1;\n\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\theightSegments = Math.floor( heightSegments ) || 1;\n\n\topenEnded = openEnded !== undefined ? openEnded : false;\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0.0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar index = 0;\n\tvar indexArray = [];\n\tvar halfHeight = height / 2;\n\tvar groupStart = 0;\n\n\t// generate geometry\n\n\tgenerateTorso();\n\n\tif ( openEnded === false ) {\n\n\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\tfunction generateTorso() {\n\n\t\tvar x, y;\n\t\tvar normal = new Vector3();\n\t\tvar vertex = new Vector3();\n\n\t\tvar groupCount = 0;\n\n\t\t// this will be used to calculate the normal\n\t\tvar slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\tvar indexRow = [];\n\n\t\t\tvar v = y / heightSegments;\n\n\t\t\t// calculate the radius of the current row\n\n\t\t\tvar radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\tfor ( x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tvar u = x / radialSegments;\n\n\t\t\t\tvar theta = u * thetaLength + thetaStart;\n\n\t\t\t\tvar sinTheta = Math.sin( theta );\n\t\t\t\tvar cosTheta = Math.cos( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\t// now save vertices of the row in our index array\n\n\t\t\tindexArray.push( indexRow );\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tfor ( y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\tvar a = indexArray[ y ][ x ];\n\t\t\t\tvar b = indexArray[ y + 1 ][ x ];\n\t\t\t\tvar c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\tvar d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t// update group counter\n\n\t\t\t\tgroupCount += 6;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t}\n\n\tfunction generateCap( top ) {\n\n\t\tvar x, centerIndexStart, centerIndexEnd;\n\n\t\tvar uv = new Vector2();\n\t\tvar vertex = new Vector3();\n\n\t\tvar groupCount = 0;\n\n\t\tvar radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\tvar sign = ( top === true ) ? 1 : - 1;\n\n\t\t// save the index of the first center vertex\n\t\tcenterIndexStart = index;\n\n\t\t// first we generate the center vertex data of the cap.\n\t\t// because the geometry needs one set of uvs per face,\n\t\t// we must generate a center vertex per face/segment\n\n\t\tfor ( x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t// vertex\n\n\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t// increase index\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// save the index of the last center vertex\n\n\t\tcenterIndexEnd = index;\n\n\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\tfor ( x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\tvar u = x / radialSegments;\n\t\t\tvar theta = u * thetaLength + thetaStart;\n\n\t\t\tvar cosTheta = Math.cos( theta );\n\t\t\tvar sinTheta = Math.sin( theta );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * sinTheta;\n\t\t\tvertex.y = halfHeight * sign;\n\t\t\tvertex.z = radius * cosTheta;\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t// uv\n\n\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t// increase index\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tvar c = centerIndexStart + x;\n\t\t\tvar i = centerIndexEnd + x;\n\n\t\t\tif ( top === true ) {\n\n\t\t\t\t// face top\n\n\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t} else {\n\n\t\t\t\t// face bottom\n\n\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t}\n\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t}\n\n}\n\nCylinderBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCylinderBufferGeometry.prototype.constructor = CylinderBufferGeometry;\n\n/**\n * @author abelnation / http://github.com/abelnation\n */\n\n// ConeGeometry\n\nfunction ConeGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeGeometry.prototype = Object.create( CylinderGeometry.prototype );\nConeGeometry.prototype.constructor = ConeGeometry;\n\n// ConeBufferGeometry\n\nfunction ConeBufferGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderBufferGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeBufferGeometry.prototype = Object.create( CylinderBufferGeometry.prototype );\nConeBufferGeometry.prototype.constructor = ConeBufferGeometry;\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n * @author Mugen87 / https://github.com/Mugen87\n * @author hughes\n */\n\n// CircleGeometry\n\nfunction CircleGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CircleGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCircleGeometry.prototype = Object.create( Geometry.prototype );\nCircleGeometry.prototype.constructor = CircleGeometry;\n\n// CircleBufferGeometry\n\nfunction CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CircleBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 1;\n\tsegments = segments !== undefined ? Math.max( 3, segments ) : 8;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar i, s;\n\tvar vertex = new Vector3();\n\tvar uv = new Vector2();\n\n\t// center point\n\n\tvertices.push( 0, 0, 0 );\n\tnormals.push( 0, 0, 1 );\n\tuvs.push( 0.5, 0.5 );\n\n\tfor ( s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\tvar segment = thetaStart + s / segments * thetaLength;\n\n\t\t// vertex\n\n\t\tvertex.x = radius * Math.cos( segment );\n\t\tvertex.y = radius * Math.sin( segment );\n\n\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t// normal\n\n\t\tnormals.push( 0, 0, 1 );\n\n\t\t// uvs\n\n\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\tuvs.push( uv.x, uv.y );\n\n\t}\n\n\t// indices\n\n\tfor ( i = 1; i <= segments; i ++ ) {\n\n\t\tindices.push( i, i + 1, 0 );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nCircleBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCircleBufferGeometry.prototype.constructor = CircleBufferGeometry;\n\n\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\tWireframeGeometry: WireframeGeometry,\n\tParametricGeometry: ParametricGeometry,\n\tParametricBufferGeometry: ParametricBufferGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTetrahedronBufferGeometry: TetrahedronBufferGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tOctahedronBufferGeometry: OctahedronBufferGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tIcosahedronBufferGeometry: IcosahedronBufferGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tDodecahedronBufferGeometry: DodecahedronBufferGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tPolyhedronBufferGeometry: PolyhedronBufferGeometry,\n\tTubeGeometry: TubeGeometry,\n\tTubeBufferGeometry: TubeBufferGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTorusKnotBufferGeometry: TorusKnotBufferGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusBufferGeometry: TorusBufferGeometry,\n\tTextGeometry: TextGeometry,\n\tTextBufferGeometry: TextBufferGeometry,\n\tSphereGeometry: SphereGeometry,\n\tSphereBufferGeometry: SphereBufferGeometry,\n\tRingGeometry: RingGeometry,\n\tRingBufferGeometry: RingBufferGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPlaneBufferGeometry: PlaneBufferGeometry,\n\tLatheGeometry: LatheGeometry,\n\tLatheBufferGeometry: LatheBufferGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tShapeBufferGeometry: ShapeBufferGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tExtrudeBufferGeometry: ExtrudeBufferGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tConeGeometry: ConeGeometry,\n\tConeBufferGeometry: ConeBufferGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tCylinderBufferGeometry: CylinderBufferGeometry,\n\tCircleGeometry: CircleGeometry,\n\tCircleBufferGeometry: CircleBufferGeometry,\n\tBoxGeometry: BoxGeometry,\n\tBoxBufferGeometry: BoxBufferGeometry\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * parameters = {\n * color: \n * }\n */\n\nfunction ShadowMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShadowMaterial';\n\n\tthis.color = new Color( 0x000000 );\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nShadowMaterial.prototype = Object.create( Material.prototype );\nShadowMaterial.prototype.constructor = ShadowMaterial;\n\nShadowMaterial.prototype.isShadowMaterial = true;\n\nShadowMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction RawShaderMaterial( parameters ) {\n\n\tShaderMaterial.call( this, parameters );\n\n\tthis.type = 'RawShaderMaterial';\n\n}\n\nRawShaderMaterial.prototype = Object.create( ShaderMaterial.prototype );\nRawShaderMaterial.prototype.constructor = RawShaderMaterial;\n\nRawShaderMaterial.prototype.isRawShaderMaterial = true;\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * color: ,\n * roughness: ,\n * metalness: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * roughnessMap: new THREE.Texture( ),\n *\n * metalnessMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * envMapIntensity: \n *\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshStandardMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.type = 'MeshStandardMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.roughness = 0.5;\n\tthis.metalness = 0.5;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.roughnessMap = null;\n\n\tthis.metalnessMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.envMapIntensity = 1.0;\n\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshStandardMaterial.prototype = Object.create( Material.prototype );\nMeshStandardMaterial.prototype.constructor = MeshStandardMaterial;\n\nMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\n\nMeshStandardMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.color.copy( source.color );\n\tthis.roughness = source.roughness;\n\tthis.metalness = source.metalness;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.roughnessMap = source.roughnessMap;\n\n\tthis.metalnessMap = source.metalnessMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.envMapIntensity = source.envMapIntensity;\n\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * reflectivity: \n * clearCoat: \n * clearCoatRoughness: \n * }\n */\n\nfunction MeshPhysicalMaterial( parameters ) {\n\n\tMeshStandardMaterial.call( this );\n\n\tthis.defines = { 'PHYSICAL': '' };\n\n\tthis.type = 'MeshPhysicalMaterial';\n\n\tthis.reflectivity = 0.5; // maps to F0 = 0.04\n\n\tthis.clearCoat = 0.0;\n\tthis.clearCoatRoughness = 0.0;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhysicalMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\nMeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial;\n\nMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\n\nMeshPhysicalMaterial.prototype.copy = function ( source ) {\n\n\tMeshStandardMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'PHYSICAL': '' };\n\n\tthis.reflectivity = source.reflectivity;\n\n\tthis.clearCoat = source.clearCoat;\n\tthis.clearCoatRoughness = source.clearCoatRoughness;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * specular: ,\n * shininess: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshPhongMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshPhongMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.specular = new Color( 0x111111 );\n\tthis.shininess = 30;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhongMaterial.prototype = Object.create( Material.prototype );\nMeshPhongMaterial.prototype.constructor = MeshPhongMaterial;\n\nMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\n\nMeshPhongMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\tthis.specular.copy( source.specular );\n\tthis.shininess = source.shininess;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author takahirox / http://github.com/takahirox\n *\n * parameters = {\n * gradientMap: new THREE.Texture( )\n * }\n */\n\nfunction MeshToonMaterial( parameters ) {\n\n\tMeshPhongMaterial.call( this );\n\n\tthis.defines = { 'TOON': '' };\n\n\tthis.type = 'MeshToonMaterial';\n\n\tthis.gradientMap = null;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshToonMaterial.prototype = Object.create( MeshPhongMaterial.prototype );\nMeshToonMaterial.prototype.constructor = MeshToonMaterial;\n\nMeshToonMaterial.prototype.isMeshToonMaterial = true;\n\nMeshToonMaterial.prototype.copy = function ( source ) {\n\n\tMeshPhongMaterial.prototype.copy.call( this, source );\n\n\tthis.gradientMap = source.gradientMap;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * opacity: ,\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshNormalMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshNormalMaterial';\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\tthis.lights = false;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshNormalMaterial.prototype = Object.create( Material.prototype );\nMeshNormalMaterial.prototype.constructor = MeshNormalMaterial;\n\nMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\n\nMeshNormalMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshLambertMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshLambertMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshLambertMaterial.prototype = Object.create( Material.prototype );\nMeshLambertMaterial.prototype.constructor = MeshLambertMaterial;\n\nMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\n\nMeshLambertMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * matcap: new THREE.Texture( ),\n *\n * map: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * alphaMap: new THREE.Texture( ),\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshMatcapMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'MATCAP': '' };\n\n\tthis.type = 'MeshMatcapMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.matcap = null;\n\n\tthis.map = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.alphaMap = null;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshMatcapMaterial.prototype = Object.create( Material.prototype );\nMeshMatcapMaterial.prototype.constructor = MeshMatcapMaterial;\n\nMeshMatcapMaterial.prototype.isMeshMatcapMaterial = true;\n\nMeshMatcapMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'MATCAP': '' };\n\n\tthis.color.copy( source.color );\n\n\tthis.matcap = source.matcap;\n\n\tthis.map = source.map;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n *\n * scale: ,\n * dashSize: ,\n * gapSize: \n * }\n */\n\nfunction LineDashedMaterial( parameters ) {\n\n\tLineBasicMaterial.call( this );\n\n\tthis.type = 'LineDashedMaterial';\n\n\tthis.scale = 1;\n\tthis.dashSize = 3;\n\tthis.gapSize = 1;\n\n\tthis.setValues( parameters );\n\n}\n\nLineDashedMaterial.prototype = Object.create( LineBasicMaterial.prototype );\nLineDashedMaterial.prototype.constructor = LineDashedMaterial;\n\nLineDashedMaterial.prototype.isLineDashedMaterial = true;\n\nLineDashedMaterial.prototype.copy = function ( source ) {\n\n\tLineBasicMaterial.prototype.copy.call( this, source );\n\n\tthis.scale = source.scale;\n\tthis.dashSize = source.dashSize;\n\tthis.gapSize = source.gapSize;\n\n\treturn this;\n\n};\n\n\n\nvar Materials = /*#__PURE__*/Object.freeze({\n\tShadowMaterial: ShadowMaterial,\n\tSpriteMaterial: SpriteMaterial,\n\tRawShaderMaterial: RawShaderMaterial,\n\tShaderMaterial: ShaderMaterial,\n\tPointsMaterial: PointsMaterial,\n\tMeshPhysicalMaterial: MeshPhysicalMaterial,\n\tMeshStandardMaterial: MeshStandardMaterial,\n\tMeshPhongMaterial: MeshPhongMaterial,\n\tMeshToonMaterial: MeshToonMaterial,\n\tMeshNormalMaterial: MeshNormalMaterial,\n\tMeshLambertMaterial: MeshLambertMaterial,\n\tMeshDepthMaterial: MeshDepthMaterial,\n\tMeshDistanceMaterial: MeshDistanceMaterial,\n\tMeshBasicMaterial: MeshBasicMaterial,\n\tMeshMatcapMaterial: MeshMatcapMaterial,\n\tLineDashedMaterial: LineDashedMaterial,\n\tLineBasicMaterial: LineBasicMaterial,\n\tMaterial: Material\n});\n\n/**\n * @author tschw\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nvar AnimationUtils = {\n\n\t// same as Array.prototype.slice, but also works on typed arrays\n\tarraySlice: function ( array, from, to ) {\n\n\t\tif ( AnimationUtils.isTypedArray( array ) ) {\n\n\t\t\t// in ios9 array.subarray(from, undefined) will return empty array\n\t\t\t// but array.subarray(from) or array.subarray(from, len) is correct\n\t\t\treturn new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );\n\n\t\t}\n\n\t\treturn array.slice( from, to );\n\n\t},\n\n\t// converts an array to a specific type\n\tconvertArray: function ( array, type, forceClone ) {\n\n\t\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t\t! forceClone && array.constructor === type ) return array;\n\n\t\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\t\treturn new type( array ); // create typed array\n\n\t\t}\n\n\t\treturn Array.prototype.slice.call( array ); // create Array\n\n\t},\n\n\tisTypedArray: function ( object ) {\n\n\t\treturn ArrayBuffer.isView( object ) &&\n\t\t\t! ( object instanceof DataView );\n\n\t},\n\n\t// returns an array by which times and values can be sorted\n\tgetKeyframeOrder: function ( times ) {\n\n\t\tfunction compareTime( i, j ) {\n\n\t\t\treturn times[ i ] - times[ j ];\n\n\t\t}\n\n\t\tvar n = times.length;\n\t\tvar result = new Array( n );\n\t\tfor ( var i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\t\tresult.sort( compareTime );\n\n\t\treturn result;\n\n\t},\n\n\t// uses the array previously returned by 'getKeyframeOrder' to sort data\n\tsortedArray: function ( values, stride, order ) {\n\n\t\tvar nValues = values.length;\n\t\tvar result = new values.constructor( nValues );\n\n\t\tfor ( var i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\t\tvar srcOffset = order[ i ] * stride;\n\n\t\t\tfor ( var j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// function for parsing AOS keyframe formats\n\tflattenJSON: function ( jsonKeys, times, values, valuePropertyName ) {\n\n\t\tvar i = 1, key = jsonKeys[ 0 ];\n\n\t\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t}\n\n\t\tif ( key === undefined ) return; // no data\n\n\t\tvar value = key[ valuePropertyName ];\n\t\tif ( value === undefined ) return; // no data\n\n\t\tif ( Array.isArray( value ) ) {\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else if ( value.toArray !== undefined ) {\n\n\t\t\t// ...assume THREE.Math-ish\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else {\n\n\t\t\t// otherwise push as-is\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push( value );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t}\n\n\t}\n\n};\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n * @author tschw\n */\n\nfunction Interpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tthis.parameterPositions = parameterPositions;\n\tthis._cachedIndex = 0;\n\n\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\tthis.sampleValues = sampleValues;\n\tthis.valueSize = sampleSize;\n\n}\n\nObject.assign( Interpolant.prototype, {\n\n\tevaluate: function ( t ) {\n\n\t\tvar pp = this.parameterPositions,\n\t\t\ti1 = this._cachedIndex,\n\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tvar right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( var giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.afterEnd_( i1 - 1, t, t0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tvar t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( var giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tvar mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.afterEnd_( i1 - 1, t0, t );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t},\n\n\tsettings: null, // optional, subclass-specific settings structure\n\t// Note: The indirection allows central control of many interpolants.\n\n\t// --- Protected interface\n\n\tDefaultSettings_: {},\n\n\tgetSettings_: function () {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t},\n\n\tcopySampleValue_: function ( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// Template methods for derived classes:\n\n\tinterpolate_: function ( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t},\n\n\tintervalChanged_: function ( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n} );\n\n//!\\ DECLARE ALIAS AFTER assign prototype !\nObject.assign( Interpolant.prototype, {\n\n\t//( 0, t, t0 ), returns this.resultBuffer\n\tbeforeStart_: Interpolant.prototype.copySampleValue_,\n\n\t//( N-1, tN-1, t ), returns this.resultBuffer\n\tafterEnd_: Interpolant.prototype.copySampleValue_,\n\n} );\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n *\n * @author tschw\n */\n\nfunction CubicInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\tthis._weightPrev = - 0;\n\tthis._offsetPrev = - 0;\n\tthis._weightNext = - 0;\n\tthis._offsetNext = - 0;\n\n}\n\nCubicInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: CubicInterpolant,\n\n\tDefaultSettings_: {\n\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\n\t},\n\n\tintervalChanged_: function ( i1, t0, t1 ) {\n\n\t\tvar pp = this.parameterPositions,\n\t\t\tiPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t},\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tvar sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tvar s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tvar s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tvar sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n * @author tschw\n */\n\nfunction LinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: LinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceeding\n * the parameter.\n *\n * @author tschw\n */\n\nfunction DiscreteInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nDiscreteInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: DiscreteInterpolant,\n\n\tinterpolate_: function ( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n} );\n\n/**\n *\n * A timed sequence of keyframes for a specific property.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction KeyframeTrack( name, times, values, interpolation ) {\n\n\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\tthis.name = name;\n\n\tthis.times = AnimationUtils.convertArray( times, this.TimeBufferType );\n\tthis.values = AnimationUtils.convertArray( values, this.ValueBufferType );\n\n\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n}\n\n// Static methods\n\nObject.assign( KeyframeTrack, {\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\ttoJSON: function ( track ) {\n\n\t\tvar trackType = track.constructor;\n\n\t\tvar json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== undefined ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': AnimationUtils.convertArray( track.times, Array ),\n\t\t\t\t'values': AnimationUtils.convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tvar interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n} );\n\nObject.assign( KeyframeTrack.prototype, {\n\n\tconstructor: KeyframeTrack,\n\n\tTimeBufferType: Float32Array,\n\n\tValueBufferType: Float32Array,\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodDiscrete: function ( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: function ( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tsetInterpolation: function ( interpolation ) {\n\n\t\tvar factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tvar message = \"unsupported interpolation for \" +\n\t\t\t\tthis.ValueTypeName + \" keyframe track named \" + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t},\n\n\tgetInterpolation: function () {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t},\n\n\tgetValueSize: function () {\n\n\t\treturn this.values.length / this.times.length;\n\n\t},\n\n\t// move all keyframes either forwards or backwards in time\n\tshift: function ( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tvar times = this.times;\n\n\t\t\tfor ( var i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale: function ( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tvar times = this.times;\n\n\t\t\tfor ( var i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\ttrim: function ( startTime, endTime ) {\n\n\t\tvar times = this.times,\n\t\t\tnKeys = times.length,\n\t\t\tfrom = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== - 1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) to = Math.max( to, 1 ), from = to - 1;\n\n\t\t\tvar stride = this.getValueSize();\n\t\t\tthis.times = AnimationUtils.arraySlice( times, from, to );\n\t\t\tthis.values = AnimationUtils.arraySlice( this.values, from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate: function () {\n\n\t\tvar valid = true;\n\n\t\tvar valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tvar times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tvar prevTime = null;\n\n\t\tfor ( var i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tvar currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( AnimationUtils.isTypedArray( values ) ) {\n\n\t\t\t\tfor ( var i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tvar value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize: function () {\n\n\t\tvar times = this.times,\n\t\t\tvalues = this.values,\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\twriteIndex = 1,\n\t\t\tlastIndex = times.length - 1;\n\n\t\tfor ( var i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tvar keep = false;\n\n\t\t\tvar time = times[ i ];\n\t\t\tvar timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== time[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tvar offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( var j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvar value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tvar readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( var j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( var readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = AnimationUtils.arraySlice( times, 0, writeIndex );\n\t\t\tthis.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\tvar times = AnimationUtils.arraySlice( this.times, 0 );\n\t\tvar values = AnimationUtils.arraySlice( this.values, 0 );\n\n\t\tvar TypedKeyframeTrack = this.constructor;\n\t\tvar track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n} );\n\n/**\n *\n * A Track of Boolean keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction BooleanKeyframeTrack( name, times, values ) {\n\n\tKeyframeTrack.call( this, name, times, values );\n\n}\n\nBooleanKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: BooleanKeyframeTrack,\n\n\tValueTypeName: 'bool',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\tInterpolantFactoryMethodSmooth: undefined\n\n\t// Note: Actually this track could have a optimized / compressed\n\t// representation of a single value and a custom interpolant that\n\t// computes \"firstValue ^ isOdd( index )\".\n\n} );\n\n/**\n *\n * A Track of keyframe values that represent color.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction ColorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nColorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: ColorKeyframeTrack,\n\n\tValueTypeName: 'color'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n\t// Note: Very basic implementation and nothing special yet.\n\t// However, this is the place for color space parameterization.\n\n} );\n\n/**\n *\n * A Track of numeric keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction NumberKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nNumberKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: NumberKeyframeTrack,\n\n\tValueTypeName: 'number'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n/**\n * Spherical linear unit quaternion interpolant.\n *\n * @author tschw\n */\n\nfunction QuaternionLinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nQuaternionLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: QuaternionLinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset = i1 * stride,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tfor ( var end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n *\n * A Track of quaternion keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction QuaternionKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nQuaternionKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: QuaternionKeyframeTrack,\n\n\tValueTypeName: 'quaternion',\n\n\t// ValueBufferType is inherited\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: undefined // not yet implemented\n\n} );\n\n/**\n *\n * A Track that interpolates Strings\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction StringKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nStringKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: StringKeyframeTrack,\n\n\tValueTypeName: 'string',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\n\tInterpolantFactoryMethodSmooth: undefined\n\n} );\n\n/**\n *\n * A Track of vectored keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction VectorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nVectorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: VectorKeyframeTrack,\n\n\tValueTypeName: 'vector'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n/**\n *\n * Reusable set of Tracks that represent an animation.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nfunction AnimationClip( name, duration, tracks ) {\n\n\tthis.name = name;\n\tthis.tracks = tracks;\n\tthis.duration = ( duration !== undefined ) ? duration : - 1;\n\n\tthis.uuid = _Math.generateUUID();\n\n\t// this means it should figure out its duration by scanning the tracks\n\tif ( this.duration < 0 ) {\n\n\t\tthis.resetDuration();\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tvar trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tvar times = [], values = [];\n\n\t\tAnimationUtils.flattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\nObject.assign( AnimationClip, {\n\n\tparse: function ( json ) {\n\n\t\tvar tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( var i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( json.name, json.duration, tracks );\n\n\t},\n\n\ttoJSON: function ( clip ) {\n\n\t\tvar tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tvar json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid\n\n\t\t};\n\n\t\tfor ( var i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t},\n\n\tCreateFromMorphTargetSequence: function ( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tvar numMorphTargets = morphTargetSequence.length;\n\t\tvar tracks = [];\n\n\t\tfor ( var i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tvar times = [];\n\t\t\tvar values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tvar order = AnimationUtils.getKeyframeOrder( times );\n\t\t\ttimes = AnimationUtils.sortedArray( times, 1, order );\n\t\t\tvalues = AnimationUtils.sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( name, - 1, tracks );\n\n\t},\n\n\tfindByName: function ( objectOrClipArray, name ) {\n\n\t\tvar clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tvar o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( var i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\tCreateClipsFromMorphTargetSequences: function ( morphTargets, fps, noLoop ) {\n\n\t\tvar animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tvar pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( var i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tvar morphTarget = morphTargets[ i ];\n\t\t\tvar parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tvar name = parts[ 1 ];\n\n\t\t\t\tvar animationMorphTargets = animationToMorphTargets[ name ];\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar clips = [];\n\n\t\tfor ( var name in animationToMorphTargets ) {\n\n\t\t\tclips.push( AnimationClip.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t},\n\n\t// parse the animation.hierarchy format\n\tparseAnimation: function ( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tvar times = [];\n\t\t\t\tvar values = [];\n\n\t\t\t\tAnimationUtils.flattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tvar tracks = [];\n\n\t\tvar clipName = animation.name || 'default';\n\t\t// automatic length determination in AnimationClip.\n\t\tvar duration = animation.length || - 1;\n\t\tvar fps = animation.fps || 30;\n\n\t\tvar hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( var h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tvar animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tvar morphTargetNames = {};\n\n\t\t\t\tfor ( var k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( var m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( var morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tvar times = [];\n\t\t\t\t\tvar values = [];\n\n\t\t\t\t\tfor ( var m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tvar animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * ( fps || 1.0 );\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tvar boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar clip = new AnimationClip( clipName, duration, tracks );\n\n\t\treturn clip;\n\n\t}\n\n} );\n\nObject.assign( AnimationClip.prototype, {\n\n\tresetDuration: function () {\n\n\t\tvar tracks = this.tracks, duration = 0;\n\n\t\tfor ( var i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tvar track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t},\n\n\ttrim: function () {\n\n\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tvalidate: function () {\n\n\t\tvar valid = true;\n\n\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\toptimize: function () {\n\n\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\n\tclone: function () {\n\n\t\tvar tracks = [];\n\n\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\treturn new AnimationClip( this.name, this.duration, tracks );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LoadingManager( onLoad, onProgress, onError ) {\n\n\tvar scope = this;\n\n\tvar isLoading = false;\n\tvar itemsLoaded = 0;\n\tvar itemsTotal = 0;\n\tvar urlModifier = undefined;\n\n\t// Refer to #5689 for the reason why we don't set .onStart\n\t// in the constructor\n\n\tthis.onStart = undefined;\n\tthis.onLoad = onLoad;\n\tthis.onProgress = onProgress;\n\tthis.onError = onError;\n\n\tthis.itemStart = function ( url ) {\n\n\t\titemsTotal ++;\n\n\t\tif ( isLoading === false ) {\n\n\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tisLoading = true;\n\n\t};\n\n\tthis.itemEnd = function ( url ) {\n\n\t\titemsLoaded ++;\n\n\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t}\n\n\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\tisLoading = false;\n\n\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\tscope.onLoad();\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.itemError = function ( url ) {\n\n\t\tif ( scope.onError !== undefined ) {\n\n\t\t\tscope.onError( url );\n\n\t\t}\n\n\t};\n\n\tthis.resolveURL = function ( url ) {\n\n\t\tif ( urlModifier ) {\n\n\t\t\treturn urlModifier( url );\n\n\t\t}\n\n\t\treturn url;\n\n\t};\n\n\tthis.setURLModifier = function ( transform ) {\n\n\t\turlModifier = transform;\n\t\treturn this;\n\n\t};\n\n}\n\nvar DefaultLoadingManager = new LoadingManager();\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar loading = {};\n\nfunction FileLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( FileLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tvar scope = this;\n\n\t\tvar cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check if request is duplicate\n\n\t\tif ( loading[ url ] !== undefined ) {\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Check for data: URI\n\t\tvar dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n\t\tvar dataUriRegexResult = url.match( dataUriRegex );\n\n\t\t// Safari can not handle Data URIs through XMLHttpRequest so process manually\n\t\tif ( dataUriRegexResult ) {\n\n\t\t\tvar mimeType = dataUriRegexResult[ 1 ];\n\t\t\tvar isBase64 = !! dataUriRegexResult[ 2 ];\n\t\t\tvar data = dataUriRegexResult[ 3 ];\n\n\t\t\tdata = decodeURIComponent( data );\n\n\t\t\tif ( isBase64 ) data = atob( data );\n\n\t\t\ttry {\n\n\t\t\t\tvar response;\n\t\t\t\tvar responseType = ( this.responseType || '' ).toLowerCase();\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\tvar view = new Uint8Array( data.length );\n\n\t\t\t\t\t\tfor ( var i = 0; i < data.length; i ++ ) {\n\n\t\t\t\t\t\t\tview[ i ] = data.charCodeAt( i );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( responseType === 'blob' ) {\n\n\t\t\t\t\t\t\tresponse = new Blob( [ view.buffer ], { type: mimeType } );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tresponse = view.buffer;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\tvar parser = new DOMParser();\n\t\t\t\t\t\tresponse = parser.parseFromString( data, mimeType );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\tresponse = JSON.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault: // 'text' or other\n\n\t\t\t\t\t\tresponse = data;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onError ) onError( error );\n\n\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Initialise array for duplicate requests\n\n\t\t\tloading[ url ] = [];\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\tvar request = new XMLHttpRequest();\n\n\t\t\trequest.open( 'GET', url, true );\n\n\t\t\trequest.addEventListener( 'load', function ( event ) {\n\n\t\t\t\tvar response = this.response;\n\n\t\t\t\tCache.add( url, response );\n\n\t\t\t\tvar callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tif ( this.status === 200 || this.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tif ( this.status === 0 ) console.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( response );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'progress', function ( event ) {\n\n\t\t\t\tvar callbacks = loading[ url ];\n\n\t\t\t\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'error', function ( event ) {\n\n\t\t\t\tvar callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'abort', function ( event ) {\n\n\t\t\t\tvar callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, false );\n\n\t\t\tif ( this.responseType !== undefined ) request.responseType = this.responseType;\n\t\t\tif ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials;\n\n\t\t\tif ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' );\n\n\t\t\tfor ( var header in this.requestHeader ) {\n\n\t\t\t\trequest.setRequestHeader( header, this.requestHeader[ header ] );\n\n\t\t\t}\n\n\t\t\trequest.send( null );\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\treturn request;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t},\n\n\tsetResponseType: function ( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t},\n\n\tsetWithCredentials: function ( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t},\n\n\tsetMimeType: function ( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t},\n\n\tsetRequestHeader: function ( value ) {\n\n\t\tthis.requestHeader = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io/\n */\n\nfunction AnimationLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( AnimationLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tvar animations = [];\n\n\t\tfor ( var i = 0; i < json.length; i ++ ) {\n\n\t\t\tvar clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n */\n\nfunction CompressedTextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t// override in sub classes\n\tthis._parser = null;\n\n}\n\nObject.assign( CompressedTextureLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar images = [];\n\n\t\tvar texture = new CompressedTexture();\n\t\ttexture.image = images;\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tvar texDatas = scope._parser( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 )\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tvar loaded = 0;\n\n\t\t\tfor ( var i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tvar texDatas = scope._parser( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tvar faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( var f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( var i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author Nikos M. / https://github.com/foo123/\n *\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n */\n\nfunction DataTextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t// override in sub classes\n\tthis._parser = null;\n\n}\n\nObject.assign( DataTextureLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar texture = new DataTexture();\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tvar texData = scope._parser( buffer );\n\n\t\t\tif ( ! texData ) return;\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearMipmapLinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction ImageLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( ImageLoader.prototype, {\n\n\tcrossOrigin: 'anonymous',\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tvar scope = this;\n\n\t\tvar cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tvar image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tCache.add( url, this );\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.substr( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction CubeTextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( CubeTextureLoader.prototype, {\n\n\tcrossOrigin: 'anonymous',\n\n\tload: function ( urls, onLoad, onProgress, onError ) {\n\n\t\tvar texture = new CubeTexture();\n\n\t\tvar loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tvar loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( var i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction TextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( TextureLoader.prototype, {\n\n\tcrossOrigin: 'anonymous',\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar texture = new Texture();\n\n\t\tvar loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\n\t\t\t// JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB.\n\t\t\tvar isJPEG = url.search( /\\.jpe?g($|\\?)/i ) > 0 || url.search( /^data\\:image\\/jpeg/ ) === 0;\n\n\t\t\ttexture.format = isJPEG ? RGBFormat : RGBAFormat;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Extensible curve object\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\n/**************************************************************\n *\tAbstract Curve base class\n **************************************************************/\n\nfunction Curve() {\n\n\tthis.type = 'Curve';\n\n\tthis.arcLengthDivisions = 200;\n\n}\n\nObject.assign( Curve.prototype, {\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint: function ( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\treturn null;\n\n\t},\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt: function ( u, optionalTarget ) {\n\n\t\tvar t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t},\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tvar points = [];\n\n\t\tfor ( var d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tvar points = [];\n\n\t\tfor ( var d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get total curve arc length\n\n\tgetLength: function () {\n\n\t\tvar lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t},\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = this.arcLengthDivisions;\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tvar cache = [];\n\t\tvar current, last = this.getPoint( 0 );\n\t\tvar p, sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t},\n\n\tupdateArcLengths: function () {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t},\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping: function ( u, distance ) {\n\n\t\tvar arcLengths = this.getLengths();\n\n\t\tvar i = 0, il = arcLengths.length;\n\n\t\tvar targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tvar low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tvar lengthBefore = arcLengths[ i ];\n\t\tvar lengthAfter = arcLengths[ i + 1 ];\n\n\t\tvar segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tvar segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tvar t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t},\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent: function ( t ) {\n\n\t\tvar delta = 0.0001;\n\t\tvar t1 = t - delta;\n\t\tvar t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tvar pt1 = this.getPoint( t1 );\n\t\tvar pt2 = this.getPoint( t2 );\n\n\t\tvar vec = pt2.clone().sub( pt1 );\n\t\treturn vec.normalize();\n\n\t},\n\n\tgetTangentAt: function ( u ) {\n\n\t\tvar t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t );\n\n\t},\n\n\tcomputeFrenetFrames: function ( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tvar normal = new Vector3();\n\n\t\tvar tangents = [];\n\t\tvar normals = [];\n\t\tvar binormals = [];\n\n\t\tvar vec = new Vector3();\n\t\tvar mat = new Matrix4();\n\n\t\tvar i, u, theta;\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( i = 0; i <= segments; i ++ ) {\n\n\t\t\tu = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u );\n\t\t\ttangents[ i ].normalize();\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tvar min = Number.MAX_VALUE;\n\t\tvar tx = Math.abs( tangents[ 0 ].x );\n\t\tvar ty = Math.abs( tangents[ 0 ].y );\n\t\tvar tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\ttheta = Math.acos( _Math.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\ttheta = Math.acos( _Math.clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'EllipseCurve';\n\n\tthis.aX = aX || 0;\n\tthis.aY = aY || 0;\n\n\tthis.xRadius = xRadius || 1;\n\tthis.yRadius = yRadius || 1;\n\n\tthis.aStartAngle = aStartAngle || 0;\n\tthis.aEndAngle = aEndAngle || 2 * Math.PI;\n\n\tthis.aClockwise = aClockwise || false;\n\n\tthis.aRotation = aRotation || 0;\n\n}\n\nEllipseCurve.prototype = Object.create( Curve.prototype );\nEllipseCurve.prototype.constructor = EllipseCurve;\n\nEllipseCurve.prototype.isEllipseCurve = true;\n\nEllipseCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tvar twoPi = Math.PI * 2;\n\tvar deltaAngle = this.aEndAngle - this.aStartAngle;\n\tvar samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t// ensures that deltaAngle is 0 .. 2 PI\n\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\tif ( samePoints ) {\n\n\t\t\tdeltaAngle = 0;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = twoPi;\n\n\t\t}\n\n\t}\n\n\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\tdeltaAngle = - twoPi;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t}\n\n\t}\n\n\tvar angle = this.aStartAngle + t * deltaAngle;\n\tvar x = this.aX + this.xRadius * Math.cos( angle );\n\tvar y = this.aY + this.yRadius * Math.sin( angle );\n\n\tif ( this.aRotation !== 0 ) {\n\n\t\tvar cos = Math.cos( this.aRotation );\n\t\tvar sin = Math.sin( this.aRotation );\n\n\t\tvar tx = x - this.aX;\n\t\tvar ty = y - this.aY;\n\n\t\t// Rotate the point about the center of the ellipse.\n\t\tx = tx * cos - ty * sin + this.aX;\n\t\ty = tx * sin + ty * cos + this.aY;\n\n\t}\n\n\treturn point.set( x, y );\n\n};\n\nEllipseCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.aX = source.aX;\n\tthis.aY = source.aY;\n\n\tthis.xRadius = source.xRadius;\n\tthis.yRadius = source.yRadius;\n\n\tthis.aStartAngle = source.aStartAngle;\n\tthis.aEndAngle = source.aEndAngle;\n\n\tthis.aClockwise = source.aClockwise;\n\n\tthis.aRotation = source.aRotation;\n\n\treturn this;\n\n};\n\n\nEllipseCurve.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.aX = this.aX;\n\tdata.aY = this.aY;\n\n\tdata.xRadius = this.xRadius;\n\tdata.yRadius = this.yRadius;\n\n\tdata.aStartAngle = this.aStartAngle;\n\tdata.aEndAngle = this.aEndAngle;\n\n\tdata.aClockwise = this.aClockwise;\n\n\tdata.aRotation = this.aRotation;\n\n\treturn data;\n\n};\n\nEllipseCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.aX = json.aX;\n\tthis.aY = json.aY;\n\n\tthis.xRadius = json.xRadius;\n\tthis.yRadius = json.yRadius;\n\n\tthis.aStartAngle = json.aStartAngle;\n\tthis.aEndAngle = json.aEndAngle;\n\n\tthis.aClockwise = json.aClockwise;\n\n\tthis.aRotation = json.aRotation;\n\n\treturn this;\n\n};\n\nfunction ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\tEllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\tthis.type = 'ArcCurve';\n\n}\n\nArcCurve.prototype = Object.create( EllipseCurve.prototype );\nArcCurve.prototype.constructor = ArcCurve;\n\nArcCurve.prototype.isArcCurve = true;\n\n/**\n * @author zz85 https://github.com/zz85\n *\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tvar c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tvar t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tvar t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tvar t2 = t * t;\n\t\t\tvar t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nvar tmp = new Vector3();\nvar px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly();\n\nfunction CatmullRomCurve3( points, closed, curveType, tension ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CatmullRomCurve3';\n\n\tthis.points = points || [];\n\tthis.closed = closed || false;\n\tthis.curveType = curveType || 'centripetal';\n\tthis.tension = tension || 0.5;\n\n}\n\nCatmullRomCurve3.prototype = Object.create( Curve.prototype );\nCatmullRomCurve3.prototype.constructor = CatmullRomCurve3;\n\nCatmullRomCurve3.prototype.isCatmullRomCurve3 = true;\n\nCatmullRomCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector3();\n\n\tvar points = this.points;\n\tvar l = points.length;\n\n\tvar p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\tvar intPoint = Math.floor( p );\n\tvar weight = p - intPoint;\n\n\tif ( this.closed ) {\n\n\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\tintPoint = l - 2;\n\t\tweight = 1;\n\n\t}\n\n\tvar p0, p1, p2, p3; // 4 points\n\n\tif ( this.closed || intPoint > 0 ) {\n\n\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate first point\n\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\tp0 = tmp;\n\n\t}\n\n\tp1 = points[ intPoint % l ];\n\tp2 = points[ ( intPoint + 1 ) % l ];\n\n\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate last point\n\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\tp3 = tmp;\n\n\t}\n\n\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t// init Centripetal / Chordal Catmull-Rom\n\t\tvar pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\tvar dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\tvar dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\tvar dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t// safety check for repeated points\n\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t}\n\n\tpoint.set(\n\t\tpx.calc( weight ),\n\t\tpy.calc( weight ),\n\t\tpz.calc( weight )\n\t);\n\n\treturn point;\n\n};\n\nCatmullRomCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( var i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tvar point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\tthis.closed = source.closed;\n\tthis.curveType = source.curveType;\n\tthis.tension = source.tension;\n\n\treturn this;\n\n};\n\nCatmullRomCurve3.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( var i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tvar point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\tdata.closed = this.closed;\n\tdata.curveType = this.curveType;\n\tdata.tension = this.tension;\n\n\treturn data;\n\n};\n\nCatmullRomCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( var i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tvar point = json.points[ i ];\n\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t}\n\n\tthis.closed = json.closed;\n\tthis.curveType = json.curveType;\n\tthis.tension = json.tension;\n\n\treturn this;\n\n};\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n * Bezier Curves formulas obtained from\n * http://en.wikipedia.org/wiki/Bézier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tvar v0 = ( p2 - p0 ) * 0.5;\n\tvar v1 = ( p3 - p1 ) * 0.5;\n\tvar t2 = t * t;\n\tvar t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tvar k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tvar k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tvar k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nfunction CubicBezierCurve( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\tthis.v3 = v3 || new Vector2();\n\n}\n\nCubicBezierCurve.prototype = Object.create( Curve.prototype );\nCubicBezierCurve.prototype.constructor = CubicBezierCurve;\n\nCubicBezierCurve.prototype.isCubicBezierCurve = true;\n\nCubicBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction CubicBezierCurve3( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\tthis.v3 = v3 || new Vector3();\n\n}\n\nCubicBezierCurve3.prototype = Object.create( Curve.prototype );\nCubicBezierCurve3.prototype.constructor = CubicBezierCurve3;\n\nCubicBezierCurve3.prototype.isCubicBezierCurve3 = true;\n\nCubicBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector3();\n\n\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve3.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction LineCurve( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve';\n\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nLineCurve.prototype = Object.create( Curve.prototype );\nLineCurve.prototype.constructor = LineCurve;\n\nLineCurve.prototype.isLineCurve = true;\n\nLineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve.prototype.getTangent = function ( /* t */ ) {\n\n\tvar tangent = this.v2.clone().sub( this.v1 );\n\n\treturn tangent.normalize();\n\n};\n\nLineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction LineCurve3( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve3';\n\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nLineCurve3.prototype = Object.create( Curve.prototype );\nLineCurve3.prototype.constructor = LineCurve3;\n\nLineCurve3.prototype.isLineCurve3 = true;\n\nLineCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector3();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve3.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve3.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nQuadraticBezierCurve.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve;\n\nQuadraticBezierCurve.prototype.isQuadraticBezierCurve = true;\n\nQuadraticBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve3( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nQuadraticBezierCurve3.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve3.prototype.constructor = QuadraticBezierCurve3;\n\nQuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true;\n\nQuadraticBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector3();\n\n\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve3.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction SplineCurve( points /* array of Vector2 */ ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'SplineCurve';\n\n\tthis.points = points || [];\n\n}\n\nSplineCurve.prototype = Object.create( Curve.prototype );\nSplineCurve.prototype.constructor = SplineCurve;\n\nSplineCurve.prototype.isSplineCurve = true;\n\nSplineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tvar points = this.points;\n\tvar p = ( points.length - 1 ) * t;\n\n\tvar intPoint = Math.floor( p );\n\tvar weight = p - intPoint;\n\n\tvar p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\tvar p1 = points[ intPoint ];\n\tvar p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\tvar p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\tpoint.set(\n\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t);\n\n\treturn point;\n\n};\n\nSplineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( var i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tvar point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\treturn this;\n\n};\n\nSplineCurve.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( var i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tvar point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\treturn data;\n\n};\n\nSplineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( var i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tvar point = json.points[ i ];\n\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t}\n\n\treturn this;\n\n};\n\n\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n **/\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nfunction CurvePath() {\n\n\tCurve.call( this );\n\n\tthis.type = 'CurvePath';\n\n\tthis.curves = [];\n\tthis.autoClose = false; // Automatically closes the path\n\n}\n\nCurvePath.prototype = Object.assign( Object.create( Curve.prototype ), {\n\n\tconstructor: CurvePath,\n\n\tadd: function ( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t},\n\n\tclosePath: function () {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tvar startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tvar endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tthis.curves.push( new LineCurve( endPoint, startPoint ) );\n\n\t\t}\n\n\t},\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint: function ( t ) {\n\n\t\tvar d = t * this.getLength();\n\t\tvar curveLengths = this.getCurveLengths();\n\t\tvar i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tvar diff = curveLengths[ i ] - d;\n\t\t\t\tvar curve = this.curves[ i ];\n\n\t\t\t\tvar segmentLength = curve.getLength();\n\t\t\t\tvar u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurve.prototype.copy.call( this, source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( var i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tvar curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = Curve.prototype.toJSON.call( this );\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( var i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tvar curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurve.prototype.fromJSON.call( this, json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( var i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tvar curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Creates free form 2d path using series of points, lines or curves.\n **/\n\nfunction Path( points ) {\n\n\tCurvePath.call( this );\n\n\tthis.type = 'Path';\n\n\tthis.currentPoint = new Vector2();\n\n\tif ( points ) {\n\n\t\tthis.setFromPoints( points );\n\n\t}\n\n}\n\nPath.prototype = Object.assign( Object.create( CurvePath.prototype ), {\n\n\tconstructor: Path,\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( var i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t},\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tvar curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tvar curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tvar curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t},\n\n\tsplineThru: function ( pts /*Array of Vector*/ ) {\n\n\t\tvar npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tvar curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t},\n\n\tarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tvar x0 = this.currentPoint.x;\n\t\tvar y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t},\n\n\tabsarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t},\n\n\tellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tvar x0 = this.currentPoint.x;\n\t\tvar y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t},\n\n\tabsellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tvar curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tvar firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tvar lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurvePath.prototype.copy.call( this, source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = CurvePath.prototype.toJSON.call( this );\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurvePath.prototype.fromJSON.call( this, json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Defines a 2d shape plane using paths.\n **/\n\n// STEP 1 Create a path.\n// STEP 2 Turn path into shape.\n// STEP 3 ExtrudeGeometry takes in Shape/Shapes\n// STEP 3a - Extract points from each shape, turn to vertices\n// STEP 3b - Triangulate each shape, add faces.\n\nfunction Shape( points ) {\n\n\tPath.call( this, points );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.type = 'Shape';\n\n\tthis.holes = [];\n\n}\n\nShape.prototype = Object.assign( Object.create( Path.prototype ), {\n\n\tconstructor: Shape,\n\n\tgetPointsHoles: function ( divisions ) {\n\n\t\tvar holesPts = [];\n\n\t\tfor ( var i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t},\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\textractPoints: function ( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tPath.prototype.copy.call( this, source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( var i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tvar hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = Path.prototype.toJSON.call( this );\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( var i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tvar hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tPath.prototype.fromJSON.call( this, json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( var i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tvar hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Light( color, intensity ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Light';\n\n\tthis.color = new Color( color );\n\tthis.intensity = intensity !== undefined ? intensity : 1;\n\n\tthis.receiveShadow = undefined;\n\n}\n\nLight.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Light,\n\n\tisLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction HemisphereLight( skyColor, groundColor, intensity ) {\n\n\tLight.call( this, skyColor, intensity );\n\n\tthis.type = 'HemisphereLight';\n\n\tthis.castShadow = undefined;\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.groundColor = new Color( groundColor );\n\n}\n\nHemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: HemisphereLight,\n\n\tisHemisphereLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LightShadow( camera ) {\n\n\tthis.camera = camera;\n\n\tthis.bias = 0;\n\tthis.radius = 1;\n\n\tthis.mapSize = new Vector2( 512, 512 );\n\n\tthis.map = null;\n\tthis.matrix = new Matrix4();\n\n}\n\nObject.assign( LightShadow.prototype, {\n\n\tcopy: function ( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction SpotLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n}\n\nSpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: SpotLightShadow,\n\n\tisSpotLightShadow: true,\n\n\tupdate: function ( light ) {\n\n\t\tvar camera = this.camera;\n\n\t\tvar fov = _Math.RAD2DEG * 2 * light.angle;\n\t\tvar aspect = this.mapSize.width / this.mapSize.height;\n\t\tvar far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction SpotLight( color, intensity, distance, angle, penumbra, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'SpotLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / Math.PI;\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.angle = ( angle !== undefined ) ? angle : Math.PI / 3;\n\tthis.penumbra = ( penumbra !== undefined ) ? penumbra : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new SpotLightShadow();\n\n}\n\nSpotLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: SpotLight,\n\n\tisSpotLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction PointLight( color, intensity, distance, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'PointLight';\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * 4 * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new LightShadow( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n}\n\nPointLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: PointLight,\n\n\tisPointLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author arose / http://github.com/arose\n */\n\nfunction OrthographicCamera( left, right, top, bottom, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'OrthographicCamera';\n\n\tthis.zoom = 1;\n\tthis.view = null;\n\n\tthis.left = ( left !== undefined ) ? left : - 1;\n\tthis.right = ( right !== undefined ) ? right : 1;\n\tthis.top = ( top !== undefined ) ? top : 1;\n\tthis.bottom = ( bottom !== undefined ) ? bottom : - 1;\n\n\tthis.near = ( near !== undefined ) ? near : 0.1;\n\tthis.far = ( far !== undefined ) ? far : 2000;\n\n\tthis.updateProjectionMatrix();\n\n}\n\nOrthographicCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: OrthographicCamera,\n\n\tisOrthographicCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t},\n\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function () {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tvar dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tvar dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tvar cx = ( this.right + this.left ) / 2;\n\t\tvar cy = ( this.top + this.bottom ) / 2;\n\n\t\tvar left = cx - dx;\n\t\tvar right = cx + dx;\n\t\tvar top = cy + dy;\n\t\tvar bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tvar zoomW = this.zoom / ( this.view.width / this.view.fullWidth );\n\t\t\tvar zoomH = this.zoom / ( this.view.height / this.view.fullHeight );\n\t\t\tvar scaleW = ( this.right - this.left ) / this.view.width;\n\t\t\tvar scaleH = ( this.top - this.bottom ) / this.view.height;\n\n\t\t\tleft += scaleW * ( this.view.offsetX / zoomW );\n\t\t\tright = left + scaleW * ( this.view.width / zoomW );\n\t\t\ttop -= scaleH * ( this.view.offsetY / zoomH );\n\t\t\tbottom = top - scaleH * ( this.view.height / zoomH );\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\n\n\t\tthis.projectionMatrixInverse.getInverse( this.projectionMatrix );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectionalLightShadow( ) {\n\n\tLightShadow.call( this, new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n}\n\nDirectionalLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: DirectionalLightShadow\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DirectionalLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'DirectionalLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tthis.shadow = new DirectionalLightShadow();\n\n}\n\nDirectionalLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: DirectionalLight,\n\n\tisDirectionalLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AmbientLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'AmbientLight';\n\n\tthis.castShadow = undefined;\n\n}\n\nAmbientLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: AmbientLight,\n\n\tisAmbientLight: true\n\n} );\n\n/**\n * @author abelnation / http://github.com/abelnation\n */\n\nfunction RectAreaLight( color, intensity, width, height ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'RectAreaLight';\n\n\tthis.width = ( width !== undefined ) ? width : 10;\n\tthis.height = ( height !== undefined ) ? height : 10;\n\n}\n\nRectAreaLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: RectAreaLight,\n\n\tisRectAreaLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Light.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction MaterialLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\tthis.textures = {};\n\n}\n\nObject.assign( MaterialLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tvar textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tvar material = new Materials[ json.type ]();\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearCoat !== undefined ) material.clearCoat = json.clearCoat;\n\t\tif ( json.clearCoatRoughness !== undefined ) material.clearCoatRoughness = json.clearCoatRoughness;\n\t\tif ( json.vertexColors !== undefined ) material.vertexColors = json.vertexColors;\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.combine !== undefined ) material.combine = json.combine;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== 1 ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.skinning !== undefined ) material.skinning = json.skinning;\n\t\tif ( json.morphTargets !== undefined ) material.morphTargets = json.morphTargets;\n\t\tif ( json.morphNormals !== undefined ) material.morphNormals = json.morphNormals;\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( var name in json.uniforms ) {\n\n\t\t\t\tvar uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( var key in json.extensions ) {\n\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Deprecated\n\n\t\tif ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\n\n\t\tif ( json.alphaMap !== undefined ) {\n\n\t\t\tmaterial.alphaMap = getTexture( json.alphaMap );\n\t\t\tmaterial.transparent = true;\n\n\t\t}\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tvar normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\treturn material;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t},\n\n\tsetTextures: function ( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author Don McCurdy / https://www.donmccurdy.com\n */\n\nvar LoaderUtils = {\n\n\tdecodeText: function ( array ) {\n\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\n\n\t\t\treturn new TextDecoder().decode( array );\n\n\t\t}\n\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\tvar s = '';\n\n\t\tfor ( var i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t// Implicitly assumes little-endian.\n\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\t// merges multi-byte utf-8 characters.\n\n\t\t\treturn decodeURIComponent( escape( s ) );\n\n\t\t} catch ( e ) { // see #16358\n\n\t\t\treturn s;\n\n\t\t}\n\n\t},\n\n\textractUrlBase: function ( url ) {\n\n\t\tvar index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.substr( 0, index + 1 );\n\n\t}\n\n};\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferGeometry() {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'InstancedBufferGeometry';\n\tthis.maxInstancedCount = undefined;\n\n}\n\nInstancedBufferGeometry.prototype = Object.assign( Object.create( BufferGeometry.prototype ), {\n\n\tconstructor: InstancedBufferGeometry,\n\n\tisInstancedBufferGeometry: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferGeometry.prototype.copy.call( this, source );\n\n\t\tthis.maxInstancedCount = source.maxInstancedCount;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = BufferGeometry.prototype.toJSON.call( this );\n\n\t\tdata.maxInstancedCount = this.maxInstancedCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferAttribute( array, itemSize, normalized, meshPerAttribute ) {\n\n\tif ( typeof ( normalized ) === 'number' ) {\n\n\t\tmeshPerAttribute = normalized;\n\n\t\tnormalized = false;\n\n\t\tconsole.error( 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.' );\n\n\t}\n\n\tBufferAttribute.call( this, array, itemSize, normalized );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedBufferAttribute.prototype = Object.assign( Object.create( BufferAttribute.prototype ), {\n\n\tconstructor: InstancedBufferAttribute,\n\n\tisInstancedBufferAttribute: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferAttribute.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ()\t{\n\n\t\tvar data = BufferAttribute.prototype.toJSON.call( this );\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BufferGeometryLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( BufferGeometryLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tvar geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tvar index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tvar typedArray = new TYPED_ARRAYS[ index.type ]( index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tvar attributes = json.data.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tvar attribute = attributes[ key ];\n\t\t\tvar typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\t\t\tvar bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\tvar bufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tgeometry.addAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tvar morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( var key in morphAttributes ) {\n\n\t\t\t\tvar attributeArray = morphAttributes[ key ];\n\n\t\t\t\tvar array = [];\n\n\t\t\t\tfor ( var i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar attribute = attributeArray[ i ];\n\t\t\t\t\tvar typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\n\t\t\t\t\tvar bufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\t\t\tarray.push( bufferAttribute );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( var i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tvar group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tvar center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\tif ( json.name ) geometry.name = json.name;\n\t\tif ( json.userData ) geometry.userData = json.userData;\n\n\t\treturn geometry;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\nvar TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\t// Workaround for IE11 pre KB2929437. See #11440\n\tUint8ClampedArray: typeof Uint8ClampedArray !== 'undefined' ? Uint8ClampedArray : Uint8Array,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ObjectLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\tthis.resourcePath = '';\n\n}\n\nObject.assign( ObjectLoader.prototype, {\n\n\tcrossOrigin: 'anonymous',\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar path = ( this.path === undefined ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tvar json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tvar metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t},\n\n\tsetResourcePath: function ( value ) {\n\n\t\tthis.resourcePath = value;\n\t\treturn this;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tparse: function ( json, onLoad ) {\n\n\t\tvar shapes = this.parseShape( json.shapes );\n\t\tvar geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tvar images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tvar textures = this.parseTextures( json.textures, images );\n\t\tvar materials = this.parseMaterials( json.materials, textures );\n\n\t\tvar object = this.parseObject( json.object, geometries, materials );\n\n\t\tif ( json.animations ) {\n\n\t\t\tobject.animations = this.parseAnimations( json.animations );\n\n\t\t}\n\n\t\tif ( json.images === undefined || json.images.length === 0 ) {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t},\n\n\tparseShape: function ( json ) {\n\n\t\tvar shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t},\n\n\tparseGeometries: function ( json, shapes ) {\n\n\t\tvar geometries = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tvar bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar geometry;\n\t\t\t\tvar data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'PlaneGeometry':\n\t\t\t\t\tcase 'PlaneBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BoxGeometry':\n\t\t\t\t\tcase 'BoxBufferGeometry':\n\t\t\t\t\tcase 'CubeGeometry': // backwards compatible\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.depth,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.depthSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CircleGeometry':\n\t\t\t\t\tcase 'CircleBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CylinderGeometry':\n\t\t\t\t\tcase 'CylinderBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radiusTop,\n\t\t\t\t\t\t\tdata.radiusBottom,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ConeGeometry':\n\t\t\t\t\tcase 'ConeBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'SphereGeometry':\n\t\t\t\t\tcase 'SphereBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'DodecahedronGeometry':\n\t\t\t\t\tcase 'DodecahedronBufferGeometry':\n\t\t\t\t\tcase 'IcosahedronGeometry':\n\t\t\t\t\tcase 'IcosahedronBufferGeometry':\n\t\t\t\t\tcase 'OctahedronGeometry':\n\t\t\t\t\tcase 'OctahedronBufferGeometry':\n\t\t\t\t\tcase 'TetrahedronGeometry':\n\t\t\t\t\tcase 'TetrahedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.detail\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'RingGeometry':\n\t\t\t\t\tcase 'RingBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.innerRadius,\n\t\t\t\t\t\t\tdata.outerRadius,\n\t\t\t\t\t\t\tdata.thetaSegments,\n\t\t\t\t\t\t\tdata.phiSegments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusGeometry':\n\t\t\t\t\tcase 'TorusBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.arc\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusKnotGeometry':\n\t\t\t\t\tcase 'TorusKnotBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.p,\n\t\t\t\t\t\t\tdata.q\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TubeGeometry':\n\t\t\t\t\tcase 'TubeBufferGeometry':\n\n\t\t\t\t\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t\t\t\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.closed\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'LatheGeometry':\n\t\t\t\t\tcase 'LatheBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.points,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'PolyhedronGeometry':\n\t\t\t\t\tcase 'PolyhedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.vertices,\n\t\t\t\t\t\t\tdata.indices,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.details\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ShapeGeometry':\n\t\t\t\t\tcase 'ShapeBufferGeometry':\n\n\t\t\t\t\t\tvar geometryShapes = [];\n\n\t\t\t\t\t\tfor ( var j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tvar shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.curveSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\n\t\t\t\t\tcase 'ExtrudeGeometry':\n\t\t\t\t\tcase 'ExtrudeBufferGeometry':\n\n\t\t\t\t\t\tvar geometryShapes = [];\n\n\t\t\t\t\t\tfor ( var j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tvar shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar extrudePath = data.options.extrudePath;\n\n\t\t\t\t\t\tif ( extrudePath !== undefined ) {\n\n\t\t\t\t\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.options\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BufferGeometry':\n\t\t\t\t\tcase 'InstancedBufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Geometry':\n\n\t\t\t\t\t\tif ( 'THREE' in window && 'LegacyJSONLoader' in THREE ) {\n\n\t\t\t\t\t\t\tvar geometryLoader = new THREE.LegacyJSONLoader();\n\t\t\t\t\t\t\tgeometry = geometryLoader.parse( data, this.resourcePath ).geometry;\n\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.error( 'THREE.ObjectLoader: You have to import LegacyJSONLoader in order load geometry data of type \"Geometry\".' );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Unsupported geometry type \"' + data.type + '\"' );\n\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( geometry.isBufferGeometry === true && data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t},\n\n\tparseMaterials: function ( json, textures ) {\n\n\t\tvar cache = {}; // MultiMaterial\n\t\tvar materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tvar loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar data = json[ i ];\n\n\t\t\t\tif ( data.type === 'MultiMaterial' ) {\n\n\t\t\t\t\t// Deprecated\n\n\t\t\t\t\tvar array = [];\n\n\t\t\t\t\tfor ( var j = 0; j < data.materials.length; j ++ ) {\n\n\t\t\t\t\t\tvar material = data.materials[ j ];\n\n\t\t\t\t\t\tif ( cache[ material.uuid ] === undefined ) {\n\n\t\t\t\t\t\t\tcache[ material.uuid ] = loader.parse( material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tarray.push( cache[ material.uuid ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = array;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t},\n\n\tparseAnimations: function ( json ) {\n\n\t\tvar animations = [];\n\n\t\tfor ( var i = 0; i < json.length; i ++ ) {\n\n\t\t\tvar data = json[ i ];\n\n\t\t\tvar clip = AnimationClip.parse( data );\n\n\t\t\tif ( data.uuid !== undefined ) clip.uuid = data.uuid;\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t},\n\n\tparseImages: function ( json, onLoad ) {\n\n\t\tvar scope = this;\n\t\tvar images = {};\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tvar manager = new LoadingManager( onLoad );\n\n\t\t\tvar loader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( var i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tvar image = json[ i ];\n\t\t\t\tvar url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\timages[ image.uuid ] = [];\n\n\t\t\t\t\tfor ( var j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tvar currentUrl = url[ j ];\n\n\t\t\t\t\t\tvar path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( currentUrl ) ? currentUrl : scope.resourcePath + currentUrl;\n\n\t\t\t\t\t\timages[ image.uuid ].push( loadImage( path ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tvar path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( image.url ) ? image.url : scope.resourcePath + image.url;\n\n\t\t\t\t\timages[ image.uuid ] = loadImage( path );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t},\n\n\tparseTextures: function ( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tvar textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tvar texture;\n\n\t\t\t\tif ( Array.isArray( images[ data.image ] ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture( images[ data.image ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture = new Texture( images[ data.image ] );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.encoding !== undefined ) texture.encoding = data.encoding;\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t},\n\n\tparseObject: function ( data, geometries, materials ) {\n\n\t\tvar object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tvar array = [];\n\n\t\t\t\tfor ( var i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.' );\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tvar geometry = getGeometry( data.geometry );\n\t\t\t\tvar material = getMaterial( data.material );\n\n\t\t\t\tif ( geometry.bones && geometry.bones.length > 0 ) {\n\n\t\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.drawMode !== undefined ) object.setDrawMode( data.drawMode );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tvar children = data.children;\n\n\t\t\tfor ( var i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tvar levels = data.levels;\n\n\t\t\tfor ( var l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tvar level = levels[ l ];\n\t\t\t\tvar child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n} );\n\nvar TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tSphericalReflectionMapping: SphericalReflectionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping,\n\tCubeUVRefractionMapping: CubeUVRefractionMapping\n};\n\nvar TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nvar TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n};\n\n/**\n * @author thespite / http://clicktorelease.com/\n */\n\n\nfunction ImageBitmapLoader( manager ) {\n\n\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t}\n\n\tif ( typeof fetch === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t}\n\n\tthis.manager = manager !== undefined ? manager : DefaultLoadingManager;\n\tthis.options = undefined;\n\n}\n\nImageBitmapLoader.prototype = {\n\n\tconstructor: ImageBitmapLoader,\n\n\tsetOptions: function setOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t},\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tvar scope = this;\n\n\t\tvar cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tfetch( url ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\tif ( scope.options === undefined ) {\n\n\t\t\t\t// Workaround for FireFox. It causes an error if you pass options.\n\t\t\t\treturn createImageBitmap( blob );\n\n\t\t\t} else {\n\n\t\t\t\treturn createImageBitmap( blob, scope.options );\n\n\t\t\t}\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( url, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tscope.manager.itemStart( url );\n\n\t},\n\n\tsetCrossOrigin: function ( /* value */ ) {\n\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n};\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * minimal class for proxing functions to Path. Replaces old \"extractSubpaths()\"\n **/\n\nfunction ShapePath() {\n\n\tthis.type = 'ShapePath';\n\n\tthis.color = new Color();\n\n\tthis.subPaths = [];\n\tthis.currentPath = null;\n\n}\n\nObject.assign( ShapePath.prototype, {\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t},\n\n\tsplineThru: function ( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t},\n\n\ttoShapes: function ( isCCW, noHoles ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tvar shapes = [];\n\n\t\t\tfor ( var i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tvar tmpPath = inSubpaths[ i ];\n\n\t\t\t\tvar tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tvar polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tvar inside = false;\n\t\t\tfor ( var p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tvar edgeLowPt = inPolygon[ p ];\n\t\t\t\tvar edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tvar edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tvar edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvar perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tvar isClockWise = ShapeUtils.isClockWise;\n\n\t\tvar subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tif ( noHoles === true )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tvar solid, tmpPath, tmpShape, shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tvar holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tvar betterShapeHoles = [];\n\t\tvar newShapes = [];\n\t\tvar newShapeHoles = [];\n\t\tvar mainIdx = 0;\n\t\tvar tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( var i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tvar ambiguous = false;\n\t\t\tvar toChange = [];\n\n\t\t\tfor ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tvar sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( var hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tvar ho = sho[ hIdx ];\n\t\t\t\t\tvar hole_unassigned = true;\n\n\t\t\t\t\tfor ( var s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } );\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t// console.log(\"ambiguous: \", ambiguous);\n\t\t\tif ( toChange.length > 0 ) {\n\n\t\t\t\t// console.log(\"to change: \", toChange);\n\t\t\t\tif ( ! ambiguous )\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar tmpHoles;\n\n\t\tfor ( var i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( var j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction Font( data ) {\n\n\tthis.type = 'Font';\n\n\tthis.data = data;\n\n}\n\nObject.assign( Font.prototype, {\n\n\tisFont: true,\n\n\tgenerateShapes: function ( text, size ) {\n\n\t\tif ( size === undefined ) size = 100;\n\n\t\tvar shapes = [];\n\t\tvar paths = createPaths( text, size, this.data );\n\n\t\tfor ( var p = 0, pl = paths.length; p < pl; p ++ ) {\n\n\t\t\tArray.prototype.push.apply( shapes, paths[ p ].toShapes() );\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\nfunction createPaths( text, size, data ) {\n\n\tvar chars = Array.from ? Array.from( text ) : String( text ).split( '' ); // see #13988\n\tvar scale = size / data.resolution;\n\tvar line_height = ( data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness ) * scale;\n\n\tvar paths = [];\n\n\tvar offsetX = 0, offsetY = 0;\n\n\tfor ( var i = 0; i < chars.length; i ++ ) {\n\n\t\tvar char = chars[ i ];\n\n\t\tif ( char === '\\n' ) {\n\n\t\t\toffsetX = 0;\n\t\t\toffsetY -= line_height;\n\n\t\t} else {\n\n\t\t\tvar ret = createPath( char, scale, offsetX, offsetY, data );\n\t\t\toffsetX += ret.offsetX;\n\t\t\tpaths.push( ret.path );\n\n\t\t}\n\n\t}\n\n\treturn paths;\n\n}\n\nfunction createPath( char, scale, offsetX, offsetY, data ) {\n\n\tvar glyph = data.glyphs[ char ] || data.glyphs[ '?' ];\n\n\tif ( ! glyph ) {\n\n\t\tconsole.error( 'THREE.Font: character \"' + char + '\" does not exists in font family ' + data.familyName + '.' );\n\n\t\treturn;\n\n\t}\n\n\tvar path = new ShapePath();\n\n\tvar x, y, cpx, cpy, cpx1, cpy1, cpx2, cpy2;\n\n\tif ( glyph.o ) {\n\n\t\tvar outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) );\n\n\t\tfor ( var i = 0, l = outline.length; i < l; ) {\n\n\t\t\tvar action = outline[ i ++ ];\n\n\t\t\tswitch ( action ) {\n\n\t\t\t\tcase 'm': // moveTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.moveTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'l': // lineTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.lineTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'q': // quadraticCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.quadraticCurveTo( cpx1, cpy1, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'b': // bezierCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx2 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy2 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { offsetX: glyph.ha * scale, path: path };\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction FontLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( FontLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tvar json;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tconsole.warn( 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.' );\n\t\t\t\tjson = JSON.parse( text.substring( 65, text.length - 2 ) );\n\n\t\t\t}\n\n\t\t\tvar font = scope.parse( json );\n\n\t\t\tif ( onLoad ) onLoad( font );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\treturn new Font( json );\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Loader() {}\n\nLoader.Handlers = {\n\n\thandlers: [],\n\n\tadd: function ( regex, loader ) {\n\n\t\tthis.handlers.push( regex, loader );\n\n\t},\n\n\tget: function ( file ) {\n\n\t\tvar handlers = this.handlers;\n\n\t\tfor ( var i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\tvar regex = handlers[ i ];\n\t\t\tvar loader = handlers[ i + 1 ];\n\n\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\treturn loader;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n};\n\nObject.assign( Loader.prototype, {\n\n\tcrossOrigin: 'anonymous',\n\n\tonLoadStart: function () {},\n\n\tonLoadProgress: function () {},\n\n\tonLoadComplete: function () {},\n\n\tinitMaterials: function ( materials, texturePath, crossOrigin ) {\n\n\t\tvar array = [];\n\n\t\tfor ( var i = 0; i < materials.length; ++ i ) {\n\n\t\t\tarray[ i ] = this.createMaterial( materials[ i ], texturePath, crossOrigin );\n\n\t\t}\n\n\t\treturn array;\n\n\t},\n\n\tcreateMaterial: ( function () {\n\n\t\tvar BlendingMode = {\n\t\t\tNoBlending: NoBlending,\n\t\t\tNormalBlending: NormalBlending,\n\t\t\tAdditiveBlending: AdditiveBlending,\n\t\t\tSubtractiveBlending: SubtractiveBlending,\n\t\t\tMultiplyBlending: MultiplyBlending,\n\t\t\tCustomBlending: CustomBlending\n\t\t};\n\n\t\tvar color = new Color();\n\t\tvar textureLoader = new TextureLoader();\n\t\tvar materialLoader = new MaterialLoader();\n\n\t\treturn function createMaterial( m, texturePath, crossOrigin ) {\n\n\t\t\t// convert from old material format\n\n\t\t\tvar textures = {};\n\n\t\t\tfunction loadTexture( path, repeat, offset, wrap, anisotropy ) {\n\n\t\t\t\tvar fullPath = texturePath + path;\n\t\t\t\tvar loader = Loader.Handlers.get( fullPath );\n\n\t\t\t\tvar texture;\n\n\t\t\t\tif ( loader !== null ) {\n\n\t\t\t\t\ttexture = loader.load( fullPath );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttextureLoader.setCrossOrigin( crossOrigin );\n\t\t\t\t\ttexture = textureLoader.load( fullPath );\n\n\t\t\t\t}\n\n\t\t\t\tif ( repeat !== undefined ) {\n\n\t\t\t\t\ttexture.repeat.fromArray( repeat );\n\n\t\t\t\t\tif ( repeat[ 0 ] !== 1 ) texture.wrapS = RepeatWrapping;\n\t\t\t\t\tif ( repeat[ 1 ] !== 1 ) texture.wrapT = RepeatWrapping;\n\n\t\t\t\t}\n\n\t\t\t\tif ( offset !== undefined ) {\n\n\t\t\t\t\ttexture.offset.fromArray( offset );\n\n\t\t\t\t}\n\n\t\t\t\tif ( wrap !== undefined ) {\n\n\t\t\t\t\tif ( wrap[ 0 ] === 'repeat' ) texture.wrapS = RepeatWrapping;\n\t\t\t\t\tif ( wrap[ 0 ] === 'mirror' ) texture.wrapS = MirroredRepeatWrapping;\n\n\t\t\t\t\tif ( wrap[ 1 ] === 'repeat' ) texture.wrapT = RepeatWrapping;\n\t\t\t\t\tif ( wrap[ 1 ] === 'mirror' ) texture.wrapT = MirroredRepeatWrapping;\n\n\t\t\t\t}\n\n\t\t\t\tif ( anisotropy !== undefined ) {\n\n\t\t\t\t\ttexture.anisotropy = anisotropy;\n\n\t\t\t\t}\n\n\t\t\t\tvar uuid = _Math.generateUUID();\n\n\t\t\t\ttextures[ uuid ] = texture;\n\n\t\t\t\treturn uuid;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tvar json = {\n\t\t\t\tuuid: _Math.generateUUID(),\n\t\t\t\ttype: 'MeshLambertMaterial'\n\t\t\t};\n\n\t\t\tfor ( var name in m ) {\n\n\t\t\t\tvar value = m[ name ];\n\n\t\t\t\tswitch ( name ) {\n\n\t\t\t\t\tcase 'DbgColor':\n\t\t\t\t\tcase 'DbgIndex':\n\t\t\t\t\tcase 'opticalDensity':\n\t\t\t\t\tcase 'illumination':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'DbgName':\n\t\t\t\t\t\tjson.name = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'blending':\n\t\t\t\t\t\tjson.blending = BlendingMode[ value ];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorAmbient':\n\t\t\t\t\tcase 'mapAmbient':\n\t\t\t\t\t\tconsole.warn( 'THREE.Loader.createMaterial:', name, 'is no longer supported.' );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorDiffuse':\n\t\t\t\t\t\tjson.color = color.fromArray( value ).getHex();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorSpecular':\n\t\t\t\t\t\tjson.specular = color.fromArray( value ).getHex();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorEmissive':\n\t\t\t\t\t\tjson.emissive = color.fromArray( value ).getHex();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'specularCoef':\n\t\t\t\t\t\tjson.shininess = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'shading':\n\t\t\t\t\t\tif ( value.toLowerCase() === 'basic' ) json.type = 'MeshBasicMaterial';\n\t\t\t\t\t\tif ( value.toLowerCase() === 'phong' ) json.type = 'MeshPhongMaterial';\n\t\t\t\t\t\tif ( value.toLowerCase() === 'standard' ) json.type = 'MeshStandardMaterial';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapDiffuse':\n\t\t\t\t\t\tjson.map = loadTexture( value, m.mapDiffuseRepeat, m.mapDiffuseOffset, m.mapDiffuseWrap, m.mapDiffuseAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapDiffuseRepeat':\n\t\t\t\t\tcase 'mapDiffuseOffset':\n\t\t\t\t\tcase 'mapDiffuseWrap':\n\t\t\t\t\tcase 'mapDiffuseAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapEmissive':\n\t\t\t\t\t\tjson.emissiveMap = loadTexture( value, m.mapEmissiveRepeat, m.mapEmissiveOffset, m.mapEmissiveWrap, m.mapEmissiveAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapEmissiveRepeat':\n\t\t\t\t\tcase 'mapEmissiveOffset':\n\t\t\t\t\tcase 'mapEmissiveWrap':\n\t\t\t\t\tcase 'mapEmissiveAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapLight':\n\t\t\t\t\t\tjson.lightMap = loadTexture( value, m.mapLightRepeat, m.mapLightOffset, m.mapLightWrap, m.mapLightAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapLightRepeat':\n\t\t\t\t\tcase 'mapLightOffset':\n\t\t\t\t\tcase 'mapLightWrap':\n\t\t\t\t\tcase 'mapLightAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAO':\n\t\t\t\t\t\tjson.aoMap = loadTexture( value, m.mapAORepeat, m.mapAOOffset, m.mapAOWrap, m.mapAOAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAORepeat':\n\t\t\t\t\tcase 'mapAOOffset':\n\t\t\t\t\tcase 'mapAOWrap':\n\t\t\t\t\tcase 'mapAOAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapBump':\n\t\t\t\t\t\tjson.bumpMap = loadTexture( value, m.mapBumpRepeat, m.mapBumpOffset, m.mapBumpWrap, m.mapBumpAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapBumpScale':\n\t\t\t\t\t\tjson.bumpScale = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapBumpRepeat':\n\t\t\t\t\tcase 'mapBumpOffset':\n\t\t\t\t\tcase 'mapBumpWrap':\n\t\t\t\t\tcase 'mapBumpAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapNormal':\n\t\t\t\t\t\tjson.normalMap = loadTexture( value, m.mapNormalRepeat, m.mapNormalOffset, m.mapNormalWrap, m.mapNormalAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapNormalFactor':\n\t\t\t\t\t\tjson.normalScale = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapNormalRepeat':\n\t\t\t\t\tcase 'mapNormalOffset':\n\t\t\t\t\tcase 'mapNormalWrap':\n\t\t\t\t\tcase 'mapNormalAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapSpecular':\n\t\t\t\t\t\tjson.specularMap = loadTexture( value, m.mapSpecularRepeat, m.mapSpecularOffset, m.mapSpecularWrap, m.mapSpecularAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapSpecularRepeat':\n\t\t\t\t\tcase 'mapSpecularOffset':\n\t\t\t\t\tcase 'mapSpecularWrap':\n\t\t\t\t\tcase 'mapSpecularAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapMetalness':\n\t\t\t\t\t\tjson.metalnessMap = loadTexture( value, m.mapMetalnessRepeat, m.mapMetalnessOffset, m.mapMetalnessWrap, m.mapMetalnessAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapMetalnessRepeat':\n\t\t\t\t\tcase 'mapMetalnessOffset':\n\t\t\t\t\tcase 'mapMetalnessWrap':\n\t\t\t\t\tcase 'mapMetalnessAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapRoughness':\n\t\t\t\t\t\tjson.roughnessMap = loadTexture( value, m.mapRoughnessRepeat, m.mapRoughnessOffset, m.mapRoughnessWrap, m.mapRoughnessAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapRoughnessRepeat':\n\t\t\t\t\tcase 'mapRoughnessOffset':\n\t\t\t\t\tcase 'mapRoughnessWrap':\n\t\t\t\t\tcase 'mapRoughnessAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAlpha':\n\t\t\t\t\t\tjson.alphaMap = loadTexture( value, m.mapAlphaRepeat, m.mapAlphaOffset, m.mapAlphaWrap, m.mapAlphaAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAlphaRepeat':\n\t\t\t\t\tcase 'mapAlphaOffset':\n\t\t\t\t\tcase 'mapAlphaWrap':\n\t\t\t\t\tcase 'mapAlphaAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'flipSided':\n\t\t\t\t\t\tjson.side = BackSide;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'doubleSided':\n\t\t\t\t\t\tjson.side = DoubleSide;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'transparency':\n\t\t\t\t\t\tconsole.warn( 'THREE.Loader.createMaterial: transparency has been renamed to opacity' );\n\t\t\t\t\t\tjson.opacity = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'depthTest':\n\t\t\t\t\tcase 'depthWrite':\n\t\t\t\t\tcase 'colorWrite':\n\t\t\t\t\tcase 'opacity':\n\t\t\t\t\tcase 'reflectivity':\n\t\t\t\t\tcase 'transparent':\n\t\t\t\t\tcase 'visible':\n\t\t\t\t\tcase 'wireframe':\n\t\t\t\t\t\tjson[ name ] = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'vertexColors':\n\t\t\t\t\t\tif ( value === true ) json.vertexColors = VertexColors;\n\t\t\t\t\t\tif ( value === 'face' ) json.vertexColors = FaceColors;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.error( 'THREE.Loader.createMaterial: Unsupported', name, value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( json.type === 'MeshBasicMaterial' ) delete json.emissive;\n\t\t\tif ( json.type !== 'MeshPhongMaterial' ) delete json.specular;\n\n\t\t\tif ( json.opacity < 1 ) json.transparent = true;\n\n\t\t\tmaterialLoader.setTextures( textures );\n\n\t\t\treturn materialLoader.parse( json );\n\n\t\t};\n\n\t} )()\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar context;\n\nvar AudioContext = {\n\n\tgetContext: function () {\n\n\t\tif ( context === undefined ) {\n\n\t\t\tcontext = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn context;\n\n\t},\n\n\tsetContext: function ( value ) {\n\n\t\tcontext = value;\n\n\t}\n\n};\n\n/**\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nfunction AudioLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( AudioLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\tvar bufferCopy = buffer.slice( 0 );\n\n\t\t\tvar context = AudioContext.getContext();\n\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t} );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * Primary reference:\n * https://graphics.stanford.edu/papers/envmap/envmap.pdf\n *\n * Secondary reference:\n * https://www.ppsloan.org/publications/StupidSH36.pdf\n */\n\n// 3-band SH defined by 9 coefficients\n\nfunction SphericalHarmonics3() {\n\n\tthis.coefficients = [];\n\n\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\tthis.coefficients.push( new Vector3() );\n\n\t}\n\n}\n\nObject.assign( SphericalHarmonics3.prototype, {\n\n\tisSphericalHarmonics3: true,\n\n\tset: function ( coefficients ) {\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tzero: function () {\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// get the radiance in the direction of the normal\n\t// target is a Vector3\n\tgetAt: function ( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tvar x = normal.x, y = normal.y, z = normal.z;\n\n\t\tvar coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\n\n\t\t// band 1\n\t\ttarget.addScale( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScale( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScale( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScale( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScale( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScale( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScale( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScale( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\n\n\t\treturn target;\n\n\t},\n\n\t// get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n\t// target is a Vector3\n\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\n\tgetIrradianceAt: function ( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tvar x = normal.x, y = normal.y, z = normal.z;\n\n\t\tvar coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095\n\n\t\t// band 1\n\t\ttarget.addScale( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\n\t\ttarget.addScale( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScale( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScale( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\n\t\ttarget.addScale( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScale( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget.addScale( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScale( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t},\n\n\tadd: function ( sh ) {\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\n\tscale: function ( s ) {\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tlerp: function ( sh, alpha ) {\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sh ) {\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tcopy: function ( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tfromArray: function ( array ) {\n\n\t\tvar coefficients = this.coefficients;\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, i * 3 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function () {\n\n\t\tvar array = [];\n\t\tvar coefficients = this.coefficients;\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, i * 3 );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n} );\n\nObject.assign( SphericalHarmonics3, {\n\n\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tgetBasisAt: function ( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tvar x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n} );\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * A LightProbe is a source of indirect-diffuse light\n */\n\nfunction LightProbe( sh, intensity ) {\n\n\tLight.call( this, undefined, intensity );\n\n\tthis.sh = ( sh !== undefined ) ? sh : new SphericalHarmonics3();\n\n}\n\nLightProbe.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: LightProbe,\n\n\tisLightProbe: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.sh.copy( source.sh );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Light.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction HemisphereLightProbe( skyColor, groundColor, intensity ) {\n\n\tLightProbe.call( this, undefined, intensity );\n\n\tvar color1 = new Color().set( skyColor );\n\tvar color2 = new Color().set( groundColor );\n\n\tvar sky = new Vector3( color1.r, color1.g, color1.b );\n\tvar ground = new Vector3( color2.r, color2.g, color2.b );\n\n\t// without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI );\n\tvar c0 = Math.sqrt( Math.PI );\n\tvar c1 = c0 * Math.sqrt( 0.75 );\n\n\tthis.sh.coefficients[ 0 ].copy( sky ).add( ground ).multiplyScalar( c0 );\n\tthis.sh.coefficients[ 1 ].copy( sky ).sub( ground ).multiplyScalar( c1 );\n\n}\n\nHemisphereLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), {\n\n\tconstructor: HemisphereLightProbe,\n\n\tisHemisphereLightProbe: true,\n\n\tcopy: function ( source ) { // modifying colors not currently supported\n\n\t\tLightProbe.prototype.copy.call( this, source );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = LightProbe.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction AmbientLightProbe( color, intensity ) {\n\n\tLightProbe.call( this, undefined, intensity );\n\n\tvar color1 = new Color().set( color );\n\n\t// without extra factor of PI in the shader, would be 2 / Math.sqrt( Math.PI );\n\tthis.sh.coefficients[ 0 ].set( color1.r, color1.g, color1.b ).multiplyScalar( 2 * Math.sqrt( Math.PI ) );\n\n}\n\nAmbientLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), {\n\n\tconstructor: AmbientLightProbe,\n\n\tisAmbientLightProbe: true,\n\n\tcopy: function ( source ) { // modifying color not currently supported\n\n\t\tLightProbe.prototype.copy.call( this, source );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = LightProbe.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction StereoCamera() {\n\n\tthis.type = 'StereoCamera';\n\n\tthis.aspect = 1;\n\n\tthis.eyeSep = 0.064;\n\n\tthis.cameraL = new PerspectiveCamera();\n\tthis.cameraL.layers.enable( 1 );\n\tthis.cameraL.matrixAutoUpdate = false;\n\n\tthis.cameraR = new PerspectiveCamera();\n\tthis.cameraR.layers.enable( 2 );\n\tthis.cameraR.matrixAutoUpdate = false;\n\n}\n\nObject.assign( StereoCamera.prototype, {\n\n\tupdate: ( function () {\n\n\t\tvar instance, focus, fov, aspect, near, far, zoom, eyeSep;\n\n\t\tvar eyeRight = new Matrix4();\n\t\tvar eyeLeft = new Matrix4();\n\n\t\treturn function update( camera ) {\n\n\t\t\tvar needsUpdate = instance !== this || focus !== camera.focus || fov !== camera.fov ||\n\t\t\t\t\t\t\t\t\t\t\t\taspect !== camera.aspect * this.aspect || near !== camera.near ||\n\t\t\t\t\t\t\t\t\t\t\t\tfar !== camera.far || zoom !== camera.zoom || eyeSep !== this.eyeSep;\n\n\t\t\tif ( needsUpdate ) {\n\n\t\t\t\tinstance = this;\n\t\t\t\tfocus = camera.focus;\n\t\t\t\tfov = camera.fov;\n\t\t\t\taspect = camera.aspect * this.aspect;\n\t\t\t\tnear = camera.near;\n\t\t\t\tfar = camera.far;\n\t\t\t\tzoom = camera.zoom;\n\n\t\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\t\tvar projectionMatrix = camera.projectionMatrix.clone();\n\t\t\t\teyeSep = this.eyeSep / 2;\n\t\t\t\tvar eyeSepOnProjection = eyeSep * near / focus;\n\t\t\t\tvar ymax = ( near * Math.tan( _Math.DEG2RAD * fov * 0.5 ) ) / zoom;\n\t\t\t\tvar xmin, xmax;\n\n\t\t\t\t// translate xOffset\n\n\t\t\t\teyeLeft.elements[ 12 ] = - eyeSep;\n\t\t\t\teyeRight.elements[ 12 ] = eyeSep;\n\n\t\t\t\t// for left eye\n\n\t\t\t\txmin = - ymax * aspect + eyeSepOnProjection;\n\t\t\t\txmax = ymax * aspect + eyeSepOnProjection;\n\n\t\t\t\tprojectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin );\n\t\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\t\tthis.cameraL.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t\t// for right eye\n\n\t\t\t\txmin = - ymax * aspect - eyeSepOnProjection;\n\t\t\t\txmax = ymax * aspect - eyeSepOnProjection;\n\n\t\t\t\tprojectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin );\n\t\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\t\tthis.cameraR.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t}\n\n\t\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( eyeLeft );\n\t\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( eyeRight );\n\n\t\t};\n\n\t} )()\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Clock( autoStart ) {\n\n\tthis.autoStart = ( autoStart !== undefined ) ? autoStart : true;\n\n\tthis.startTime = 0;\n\tthis.oldTime = 0;\n\tthis.elapsedTime = 0;\n\n\tthis.running = false;\n\n}\n\nObject.assign( Clock.prototype, {\n\n\tstart: function () {\n\n\t\tthis.startTime = ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t},\n\n\tgetElapsedTime: function () {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t},\n\n\tgetDelta: function () {\n\n\t\tvar diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tvar newTime = ( typeof performance === 'undefined' ? Date : performance ).now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AudioListener() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'AudioListener';\n\n\tthis.context = AudioContext.getContext();\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( this.context.destination );\n\n\tthis.filter = null;\n\n\tthis.timeDelta = 0;\n\n}\n\nAudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: AudioListener,\n\n\tgetInput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tremoveFilter: function ( ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.filter;\n\n\t},\n\n\tsetFilter: function ( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t},\n\n\tgetMasterVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetMasterVolume: function ( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t},\n\n\tupdateMatrixWorld: ( function () {\n\n\t\tvar position = new Vector3();\n\t\tvar quaternion = new Quaternion();\n\t\tvar scale = new Vector3();\n\n\t\tvar orientation = new Vector3();\n\t\tvar clock = new Clock();\n\n\t\treturn function updateMatrixWorld( force ) {\n\n\t\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\t\tvar listener = this.context.listener;\n\t\t\tvar up = this.up;\n\n\t\t\tthis.timeDelta = clock.getDelta();\n\n\t\t\tthis.matrixWorld.decompose( position, quaternion, scale );\n\n\t\t\torientation.set( 0, 0, - 1 ).applyQuaternion( quaternion );\n\n\t\t\tif ( listener.positionX ) {\n\n\t\t\t\t// code path for Chrome (see #14393)\n\n\t\t\t\tvar endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\t\tlistener.positionX.linearRampToValueAtTime( position.x, endTime );\n\t\t\t\tlistener.positionY.linearRampToValueAtTime( position.y, endTime );\n\t\t\t\tlistener.positionZ.linearRampToValueAtTime( position.z, endTime );\n\t\t\t\tlistener.forwardX.linearRampToValueAtTime( orientation.x, endTime );\n\t\t\t\tlistener.forwardY.linearRampToValueAtTime( orientation.y, endTime );\n\t\t\t\tlistener.forwardZ.linearRampToValueAtTime( orientation.z, endTime );\n\t\t\t\tlistener.upX.linearRampToValueAtTime( up.x, endTime );\n\t\t\t\tlistener.upY.linearRampToValueAtTime( up.y, endTime );\n\t\t\t\tlistener.upZ.linearRampToValueAtTime( up.z, endTime );\n\n\t\t\t} else {\n\n\t\t\t\tlistener.setPosition( position.x, position.y, position.z );\n\t\t\t\tlistener.setOrientation( orientation.x, orientation.y, orientation.z, up.x, up.y, up.z );\n\n\t\t\t}\n\n\t\t};\n\n\t} )()\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nfunction Audio( listener ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Audio';\n\n\tthis.listener = listener;\n\tthis.context = listener.context;\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( listener.getInput() );\n\n\tthis.autoplay = false;\n\n\tthis.buffer = null;\n\tthis.detune = 0;\n\tthis.loop = false;\n\tthis.startTime = 0;\n\tthis.offset = 0;\n\tthis.playbackRate = 1;\n\tthis.isPlaying = false;\n\tthis.hasPlaybackControl = true;\n\tthis.sourceType = 'empty';\n\n\tthis.filters = [];\n\n}\n\nAudio.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Audio,\n\n\tgetOutput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tsetNodeSource: function ( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetMediaElementSource: function ( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetBuffer: function ( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t},\n\n\tplay: function () {\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar source = this.context.createBufferSource();\n\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tthis.startTime = this.context.currentTime;\n\t\tsource.start( this.startTime, this.offset );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t},\n\n\tpause: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\t\t\tthis.offset += ( this.context.currentTime - this.startTime ) * this.playbackRate;\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.source.stop();\n\t\tthis.source.onended = null;\n\t\tthis.offset = 0;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t},\n\n\tconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( var i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdisconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( var i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilters: function () {\n\n\t\treturn this.filters;\n\n\t},\n\n\tsetFilters: function ( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value;\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetDetune: function ( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.source.detune === undefined ) return; // only set detune when available\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetDetune: function () {\n\n\t\treturn this.detune;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t},\n\n\tsetFilter: function ( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t},\n\n\tsetPlaybackRate: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetPlaybackRate: function () {\n\n\t\treturn this.playbackRate;\n\n\t},\n\n\tonEnded: function () {\n\n\t\tthis.isPlaying = false;\n\n\t},\n\n\tgetLoop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t},\n\n\tsetLoop: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetVolume: function ( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction PositionalAudio( listener ) {\n\n\tAudio.call( this, listener );\n\n\tthis.panner = this.context.createPanner();\n\tthis.panner.panningModel = 'HRTF';\n\tthis.panner.connect( this.gain );\n\n}\n\nPositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), {\n\n\tconstructor: PositionalAudio,\n\n\tgetOutput: function () {\n\n\t\treturn this.panner;\n\n\t},\n\n\tgetRefDistance: function () {\n\n\t\treturn this.panner.refDistance;\n\n\t},\n\n\tsetRefDistance: function ( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetRolloffFactor: function () {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t},\n\n\tsetRolloffFactor: function ( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetDistanceModel: function () {\n\n\t\treturn this.panner.distanceModel;\n\n\t},\n\n\tsetDistanceModel: function ( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxDistance: function () {\n\n\t\treturn this.panner.maxDistance;\n\n\t},\n\n\tsetMaxDistance: function ( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t},\n\n\tsetDirectionalCone: function ( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t},\n\n\tupdateMatrixWorld: ( function () {\n\n\t\tvar position = new Vector3();\n\t\tvar quaternion = new Quaternion();\n\t\tvar scale = new Vector3();\n\n\t\tvar orientation = new Vector3();\n\n\t\treturn function updateMatrixWorld( force ) {\n\n\t\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\t\tthis.matrixWorld.decompose( position, quaternion, scale );\n\n\t\t\torientation.set( 0, 0, 1 ).applyQuaternion( quaternion );\n\n\t\t\tvar panner = this.panner;\n\n\t\t\tif ( panner.positionX ) {\n\n\t\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\t\tvar endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\t\tpanner.positionX.linearRampToValueAtTime( position.x, endTime );\n\t\t\t\tpanner.positionY.linearRampToValueAtTime( position.y, endTime );\n\t\t\t\tpanner.positionZ.linearRampToValueAtTime( position.z, endTime );\n\t\t\t\tpanner.orientationX.linearRampToValueAtTime( orientation.x, endTime );\n\t\t\t\tpanner.orientationY.linearRampToValueAtTime( orientation.y, endTime );\n\t\t\t\tpanner.orientationZ.linearRampToValueAtTime( orientation.z, endTime );\n\n\t\t\t} else {\n\n\t\t\t\tpanner.setPosition( position.x, position.y, position.z );\n\t\t\t\tpanner.setOrientation( orientation.x, orientation.y, orientation.z );\n\n\t\t\t}\n\n\t\t};\n\n\t} )()\n\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AudioAnalyser( audio, fftSize ) {\n\n\tthis.analyser = audio.context.createAnalyser();\n\tthis.analyser.fftSize = fftSize !== undefined ? fftSize : 2048;\n\n\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\taudio.getOutput().connect( this.analyser );\n\n}\n\nObject.assign( AudioAnalyser.prototype, {\n\n\tgetFrequencyData: function () {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t},\n\n\tgetAverageFrequency: function () {\n\n\t\tvar value = 0, data = this.getFrequencyData();\n\n\t\tfor ( var i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n} );\n\n/**\n *\n * Buffered scene graph property that allows weighted accumulation.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction PropertyMixer( binding, typeName, valueSize ) {\n\n\tthis.binding = binding;\n\tthis.valueSize = valueSize;\n\n\tvar bufferType = Float64Array,\n\t\tmixFunction;\n\n\tswitch ( typeName ) {\n\n\t\tcase 'quaternion':\n\t\t\tmixFunction = this._slerp;\n\t\t\tbreak;\n\n\t\tcase 'string':\n\t\tcase 'bool':\n\t\t\tbufferType = Array;\n\t\t\tmixFunction = this._select;\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tmixFunction = this._lerp;\n\n\t}\n\n\tthis.buffer = new bufferType( valueSize * 4 );\n\t// layout: [ incoming | accu0 | accu1 | orig ]\n\t//\n\t// interpolators can use .buffer as their .result\n\t// the data then goes to 'incoming'\n\t//\n\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t// the cumulative result and are compared to detect\n\t// changes\n\t//\n\t// 'orig' stores the original state of the property\n\n\tthis._mixBufferRegion = mixFunction;\n\n\tthis.cumulativeWeight = 0;\n\n\tthis.useCount = 0;\n\tthis.referenceCount = 0;\n\n}\n\nObject.assign( PropertyMixer.prototype, {\n\n\t// accumulate data in the 'incoming' region into 'accu'\n\taccumulate: function ( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tvar buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tcurrentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tvar mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t},\n\n\t// apply the state of 'accu' to the binding when accus differ\n\tapply: function ( accuIndex ) {\n\n\t\tvar stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tvar originalValueOffset = stride * 3;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tfor ( var i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState: function () {\n\n\t\tvar binding = this.binding;\n\n\t\tvar buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * 3;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( var i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\tthis.cumulativeWeight = 0;\n\n\t},\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState: function () {\n\n\t\tvar originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t},\n\n\n\t// mix functions\n\n\t_select: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_slerp: function ( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t},\n\n\t_lerp: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tvar s = 1 - t;\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tvar j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n *\n * A reference to a real property in the scene graph.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\n// Characters [].:/ are reserved for track binding syntax.\nvar RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\n\nfunction Composite( targetGroup, path, optionalParsedPath ) {\n\n\tvar parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis._targetGroup = targetGroup;\n\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n}\n\nObject.assign( Composite.prototype, {\n\n\tgetValue: function ( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tvar firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t},\n\n\tsetValue: function ( array, offset ) {\n\n\t\tvar bindings = this._bindings;\n\n\t\tfor ( var i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t},\n\n\tbind: function () {\n\n\t\tvar bindings = this._bindings;\n\n\t\tfor ( var i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t},\n\n\tunbind: function () {\n\n\t\tvar bindings = this._bindings;\n\n\t\tfor ( var i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n} );\n\n\nfunction PropertyBinding( rootNode, path, parsedPath ) {\n\n\tthis.path = path;\n\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode;\n\n\tthis.rootNode = rootNode;\n\n}\n\nObject.assign( PropertyBinding, {\n\n\tComposite: Composite,\n\n\tcreate: function ( root, path, parsedPath ) {\n\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Replaces spaces with underscores and removes unsupported characters from\n\t * node names, to ensure compatibility with parseTrackName().\n\t *\n\t * @param {string} name Node name to be sanitized.\n\t * @return {string}\n\t */\n\tsanitizeNodeName: ( function () {\n\n\t\tvar reservedRe = new RegExp( '[' + RESERVED_CHARS_RE + ']', 'g' );\n\n\t\treturn function sanitizeNodeName( name ) {\n\n\t\t\treturn name.replace( /\\s/g, '_' ).replace( reservedRe, '' );\n\n\t\t};\n\n\t}() ),\n\n\tparseTrackName: function () {\n\n\t\t// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n\t\t// only latin characters, and the unicode \\p{L} is not yet supported. So\n\t\t// instead, we exclude reserved characters and match everything else.\n\t\tvar wordChar = '[^' + RESERVED_CHARS_RE + ']';\n\t\tvar wordCharOrDot = '[^' + RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n\t\t// Parent directories, delimited by '/' or ':'. Currently unused, but must\n\t\t// be matched to parse the rest of the track name.\n\t\tvar directoryRe = /((?:WC+[\\/:])*)/.source.replace( 'WC', wordChar );\n\n\t\t// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\n\t\tvar nodeRe = /(WCOD+)?/.source.replace( 'WCOD', wordCharOrDot );\n\n\t\t// Object on target node, and accessor. May not contain reserved\n\t\t// characters. Accessor may contain any character except closing bracket.\n\t\tvar objectRe = /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', wordChar );\n\n\t\t// Property and accessor. May not contain reserved characters. Accessor may\n\t\t// contain any non-bracket characters.\n\t\tvar propertyRe = /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', wordChar );\n\n\t\tvar trackRe = new RegExp( ''\n\t\t\t+ '^'\n\t\t\t+ directoryRe\n\t\t\t+ nodeRe\n\t\t\t+ objectRe\n\t\t\t+ propertyRe\n\t\t\t+ '$'\n\t\t);\n\n\t\tvar supportedObjectNames = [ 'material', 'materials', 'bones' ];\n\n\t\treturn function parseTrackName( trackName ) {\n\n\t\t\tvar matches = trackRe.exec( trackName );\n\n\t\t\tif ( ! matches ) {\n\n\t\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t\t}\n\n\t\t\tvar results = {\n\t\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\t\tnodeName: matches[ 2 ],\n\t\t\t\tobjectName: matches[ 3 ],\n\t\t\t\tobjectIndex: matches[ 4 ],\n\t\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\t\tpropertyIndex: matches[ 6 ]\n\t\t\t};\n\n\t\t\tvar lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\t\tvar objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t\t// Object names must be checked against a whitelist. Otherwise, there\n\t\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t\t// include '.' characters).\n\t\t\t\tif ( supportedObjectNames.indexOf( objectName ) !== - 1 ) {\n\n\t\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\t\tresults.objectName = objectName;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t\t}\n\n\t\t\treturn results;\n\n\t\t};\n\n\t}(),\n\n\tfindNode: function ( root, nodeName ) {\n\n\t\tif ( ! nodeName || nodeName === \"\" || nodeName === \"root\" || nodeName === \".\" || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tvar bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tvar searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( var i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tvar childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tvar subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n} );\n\nObject.assign( PropertyBinding.prototype, { // prototype, continued\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable: function () {},\n\t_setValue_unavailable: function () {},\n\n\tBindingType: {\n\t\tDirect: 0,\n\t\tEntireArray: 1,\n\t\tArrayElement: 2,\n\t\tHasFromToArray: 3\n\t},\n\n\tVersioning: {\n\t\tNone: 0,\n\t\tNeedsUpdate: 1,\n\t\tMatrixWorldNeedsUpdate: 2\n\t},\n\n\tGetterByBindingType: [\n\n\t\tfunction getValue_direct( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.node[ this.propertyName ];\n\n\t\t},\n\n\t\tfunction getValue_array( buffer, offset ) {\n\n\t\t\tvar source = this.resolvedProperty;\n\n\t\t\tfor ( var i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t\t}\n\n\t\t},\n\n\t\tfunction getValue_arrayElement( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t\t},\n\n\t\tfunction getValue_toArray( buffer, offset ) {\n\n\t\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t\t}\n\n\t],\n\n\tSetterByBindingTypeAndVersioning: [\n\n\t\t[\n\t\t\t// Direct\n\n\t\t\tfunction setValue_direct( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// EntireArray\n\n\t\t\tfunction setValue_array( buffer, offset ) {\n\n\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// ArrayElement\n\n\t\t\tfunction setValue_arrayElement( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// HasToFromArray\n\n\t\t\tfunction setValue_fromArray( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t]\n\n\t],\n\n\tgetValue: function getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t\t// Note: This class uses a State pattern on a per-method basis:\n\t\t// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n\t\t// prototype version of these methods with one that represents\n\t\t// the bound state. When the property is not found, the methods\n\t\t// become no-ops.\n\n\t},\n\n\tsetValue: function getValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t},\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind: function () {\n\n\t\tvar targetObject = this.node,\n\t\t\tparsedPath = this.parsedPath,\n\n\t\t\tobjectName = parsedPath.objectName,\n\t\t\tpropertyName = parsedPath.propertyName,\n\t\t\tpropertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode;\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\\'t found.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tvar objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( var i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tvar nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tvar nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tvar versioning = this.Versioning.None;\n\n\t\tthis.targetObject = targetObject;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tvar bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === \"morphTargetInfluences\" ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.geometry.isBufferGeometry ) {\n\n\t\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( var i = 0; i < this.node.geometry.morphAttributes.position.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject.geometry.morphAttributes.position[ i ].name === propertyIndex ) {\n\n\t\t\t\t\t\t\tpropertyIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( ! targetObject.geometry.morphTargets ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphTargets.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( var i = 0; i < this.node.geometry.morphTargets.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject.geometry.morphTargets[ i ].name === propertyIndex ) {\n\n\t\t\t\t\t\t\tpropertyIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t},\n\n\tunbind: function () {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n} );\n\n//!\\ DECLARE ALIAS AFTER assign prototype !\nObject.assign( PropertyBinding.prototype, {\n\n\t// initial state of these methods that calls 'bind'\n\t_getValue_unbound: PropertyBinding.prototype.getValue,\n\t_setValue_unbound: PropertyBinding.prototype.setValue,\n\n} );\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * - Add objects you would otherwise pass as 'root' to the\n * constructor or the .clipAction method of AnimationMixer.\n *\n * - Instead pass this object as 'root'.\n *\n * - You can also add and remove objects later when the mixer\n * is running.\n *\n * Note:\n *\n * Objects of this class appear as one object to the mixer,\n * so cache control of the individual objects must be done\n * on the group.\n *\n * Limitation:\n *\n * - The animated properties must be compatible among the\n * all objects in the group.\n *\n * - A single property can either be controlled through a\n * target group or directly, but not both.\n *\n * @author tschw\n */\n\nfunction AnimationObjectGroup() {\n\n\tthis.uuid = _Math.generateUUID();\n\n\t// cached objects followed by the active ones\n\tthis._objects = Array.prototype.slice.call( arguments );\n\n\tthis.nCachedObjects_ = 0; // threshold\n\t// note: read by PropertyBinding.Composite\n\n\tvar indices = {};\n\tthis._indicesByUUID = indices; // for bookkeeping\n\n\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t}\n\n\tthis._paths = []; // inside: string\n\tthis._parsedPaths = []; // inside: { we don't care, here }\n\tthis._bindings = []; // inside: Array< PropertyBinding >\n\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\tvar scope = this;\n\n\tthis.stats = {\n\n\t\tobjects: {\n\t\t\tget total() {\n\n\t\t\t\treturn scope._objects.length;\n\n\t\t\t},\n\t\t\tget inUse() {\n\n\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t}\n\t\t},\n\t\tget bindingsPerObject() {\n\n\t\t\treturn scope._bindings.length;\n\n\t\t}\n\n\t};\n\n}\n\nObject.assign( AnimationObjectGroup.prototype, {\n\n\tisAnimationObjectGroup: true,\n\n\tadd: function () {\n\n\t\tvar objects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length,\n\t\t\tknownObject = undefined;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tvar firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\tremove: function () {\n\n\t\tvar objects = this._objects,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tvar lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// remove & forget\n\tuncache: function () {\n\n\t\tvar objects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tvar firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tvar lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tvar bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_: function ( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tvar indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ],\n\t\t\tbindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tvar paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( var i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tvar object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t},\n\n\tunsubscribe_: function ( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tvar indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tvar paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n *\n * Action provided by AnimationMixer for scheduling clip playback on specific\n * objects.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n *\n */\n\nfunction AnimationAction( mixer, clip, localRoot ) {\n\n\tthis._mixer = mixer;\n\tthis._clip = clip;\n\tthis._localRoot = localRoot || null;\n\n\tvar tracks = clip.tracks,\n\t\tnTracks = tracks.length,\n\t\tinterpolants = new Array( nTracks );\n\n\tvar interpolantSettings = {\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\t};\n\n\tfor ( var i = 0; i !== nTracks; ++ i ) {\n\n\t\tvar interpolant = tracks[ i ].createInterpolant( null );\n\t\tinterpolants[ i ] = interpolant;\n\t\tinterpolant.settings = interpolantSettings;\n\n\t}\n\n\tthis._interpolantSettings = interpolantSettings;\n\n\tthis._interpolants = interpolants; // bound by the mixer\n\n\t// inside: PropertyMixer (managed by the mixer)\n\tthis._propertyBindings = new Array( nTracks );\n\n\tthis._cacheIndex = null; // for the memory manager\n\tthis._byClipCacheIndex = null; // for the memory manager\n\n\tthis._timeScaleInterpolant = null;\n\tthis._weightInterpolant = null;\n\n\tthis.loop = LoopRepeat;\n\tthis._loopCount = - 1;\n\n\t// global mixer time when the action is to be started\n\t// it's set back to 'null' upon start of the action\n\tthis._startTime = null;\n\n\t// scaled local time of the action\n\t// gets clamped or wrapped to 0..clip.duration according to loop\n\tthis.time = 0;\n\n\tthis.timeScale = 1;\n\tthis._effectiveTimeScale = 1;\n\n\tthis.weight = 1;\n\tthis._effectiveWeight = 1;\n\n\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\tthis.paused = false; // true -> zero effective time scale\n\tthis.enabled = true; // false -> zero effective weight\n\n\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n}\n\nObject.assign( AnimationAction.prototype, {\n\n\t// State & Scheduling\n\n\tplay: function () {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t},\n\n\treset: function () {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = - 1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t},\n\n\tisRunning: function () {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t},\n\n\t// return true when play has been called\n\tisScheduled: function () {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t},\n\n\tstartAt: function ( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t},\n\n\tsetLoop: function ( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t},\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight: function ( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t},\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight: function () {\n\n\t\treturn this._effectiveWeight;\n\n\t},\n\n\tfadeIn: function ( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t},\n\n\tfadeOut: function ( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t},\n\n\tcrossFadeFrom: function ( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tvar fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcrossFadeTo: function ( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t},\n\n\tstopFading: function () {\n\n\t\tvar weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale: function ( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale: function () {\n\n\t\treturn this._effectiveTimeScale;\n\n\t},\n\n\tsetDuration: function ( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\tsyncWith: function ( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\thalt: function ( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t},\n\n\twarp: function ( startTimeScale, endTimeScale, duration ) {\n\n\t\tvar mixer = this._mixer, now = mixer.time,\n\t\t\tinterpolant = this._timeScaleInterpolant,\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tvar times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t},\n\n\tstopWarping: function () {\n\n\t\tvar timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Object Accessors\n\n\tgetMixer: function () {\n\n\t\treturn this._mixer;\n\n\t},\n\n\tgetClip: function () {\n\n\t\treturn this._clip;\n\n\t},\n\n\tgetRoot: function () {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t},\n\n\t// Interna\n\n\t_update: function ( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tvar timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\treturn; // yet to come / don't decide when delta = 0\n\n\t\t\t}\n\n\t\t\t// start\n\n\t\t\tthis._startTime = null; // unschedule\n\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tvar clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tvar weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tvar interpolants = this._interpolants;\n\t\t\tvar propertyMixers = this._propertyBindings;\n\n\t\t\tfor ( var j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_updateWeight: function ( time ) {\n\n\t\tvar weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tvar interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tvar interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t},\n\n\t_updateTimeScale: function ( time ) {\n\n\t\tvar timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tvar interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tvar interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t},\n\n\t_updateTime: function ( deltaTime ) {\n\n\t\tvar time = this.time + deltaTime;\n\t\tvar duration = this._clip.duration;\n\t\tvar loop = this.loop;\n\t\tvar loopCount = this._loopCount;\n\n\t\tvar pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === - 1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tbreak handle_stop;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis.time = time;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? - 1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tvar loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tvar pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : - 1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tvar atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t},\n\n\t_setEndings: function ( atStart, atEnd, pingPong ) {\n\n\t\tvar settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_scheduleFading: function ( duration, weightNow, weightThen ) {\n\n\t\tvar mixer = this._mixer, now = mixer.time,\n\t\t\tinterpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tvar times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n *\n * Player for AnimationClips.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction AnimationMixer( root ) {\n\n\tthis._root = root;\n\tthis._initMemoryManager();\n\tthis._accuIndex = 0;\n\n\tthis.time = 0;\n\n\tthis.timeScale = 1.0;\n\n}\n\nAnimationMixer.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: AnimationMixer,\n\n\t_bindAction: function ( action, prototypeAction ) {\n\n\t\tvar root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( var i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tvar track = tracks[ i ],\n\t\t\t\ttrackName = track.name,\n\t\t\t\tbinding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tvar path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t},\n\n\t_activateAction: function ( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tvar rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tvar bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tvar binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t},\n\n\t_deactivateAction: function ( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tvar bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tvar binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t},\n\n\t// Memory manager\n\n\t_initMemoryManager: function () {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tvar scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t},\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction: function ( action ) {\n\n\t\tvar index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t},\n\n\t_addInactiveAction: function ( action, clipUuid, rootUuid ) {\n\n\t\tvar actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tvar knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t},\n\n\t_removeInactiveAction: function ( action ) {\n\n\t\tvar actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tvar clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tvar actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t},\n\n\t_removeInactiveBindingsForAction: function ( action ) {\n\n\t\tvar bindings = action._propertyBindings;\n\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tvar binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_lendAction: function ( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions >| inactive actions ]\n\t\t// s a\n\t\t// <-swap->\n\t\t// a s\n\n\t\tvar actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t},\n\n\t_takeBackAction: function ( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions |< inactive actions ]\n\t\t// a s\n\t\t// <-swap->\n\t\t// s a\n\n\t\tvar actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t},\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding: function ( binding, rootUuid, trackName ) {\n\n\t\tvar bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tbindings = this._bindings;\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t},\n\n\t_removeInactiveBinding: function ( binding ) {\n\n\t\tvar bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tif ( Object.keys( bindingByName ).length === 0 ) {\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t},\n\n\t_lendBinding: function ( binding ) {\n\n\t\tvar bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t},\n\n\t_takeBackBinding: function ( binding ) {\n\n\t\tvar bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t},\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant: function () {\n\n\t\tvar interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++,\n\t\t\tinterpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, this._controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t},\n\n\t_takeBackControlInterpolant: function ( interpolant ) {\n\n\t\tvar interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t},\n\n\t_controlInterpolantsResultBuffer: new Float32Array( 1 ),\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction: function ( clip, optionalRoot ) {\n\n\t\tvar root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject !== null ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ],\n\t\t\tprototypeAction = null;\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tvar existingAction =\n\t\t\t\t\tactionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tvar newAction = new AnimationAction( this, clipObject, optionalRoot );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t},\n\n\t// get an existing action\n\texistingAction: function ( clip, optionalRoot ) {\n\n\t\tvar root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction: function () {\n\n\t\tvar actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tthis._nActiveActions = 0;\n\t\tthis._nActiveBindings = 0;\n\n\t\tfor ( var i = 0; i !== nActions; ++ i ) {\n\n\t\t\tactions[ i ].reset();\n\n\t\t}\n\n\t\tfor ( var i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].useCount = 0;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// advance the time and update apply the animation\n\tupdate: function ( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tvar actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( var i = 0; i !== nActions; ++ i ) {\n\n\t\t\tvar action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tvar bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( var i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// return this mixer's root target object\n\tgetRoot: function () {\n\n\t\treturn this._root;\n\n\t},\n\n\t// free all resources specific to a particular clip\n\tuncacheClip: function ( clip ) {\n\n\t\tvar actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tvar actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( var i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tvar action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tvar cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t},\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot: function ( root ) {\n\n\t\tvar rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( var clipUuid in actionsByClip ) {\n\n\t\t\tvar actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( var trackName in bindingByName ) {\n\n\t\t\t\tvar binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remove a targeted clip from the cache\n\tuncacheAction: function ( clip, optionalRoot ) {\n\n\t\tvar action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Uniform( value ) {\n\n\tif ( typeof value === 'string' ) {\n\n\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\n\t\tvalue = arguments[ 1 ];\n\n\t}\n\n\tthis.value = value;\n\n}\n\nUniform.prototype.clone = function () {\n\n\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n};\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedInterleavedBuffer( array, stride, meshPerAttribute ) {\n\n\tInterleavedBuffer.call( this, array, stride );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedInterleavedBuffer.prototype = Object.assign( Object.create( InterleavedBuffer.prototype ), {\n\n\tconstructor: InstancedInterleavedBuffer,\n\n\tisInstancedInterleavedBuffer: true,\n\n\tcopy: function ( source ) {\n\n\t\tInterleavedBuffer.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author bhouston / http://clara.io/\n * @author stephomi / http://stephaneginier.com/\n */\n\nfunction Raycaster( origin, direction, near, far ) {\n\n\tthis.ray = new Ray( origin, direction );\n\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\tthis.near = near || 0;\n\tthis.far = far || Infinity;\n\n\tthis.params = {\n\t\tMesh: {},\n\t\tLine: {},\n\t\tLOD: {},\n\t\tPoints: { threshold: 1 },\n\t\tSprite: {}\n\t};\n\n\tObject.defineProperties( this.params, {\n\t\tPointCloud: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' );\n\t\t\t\treturn this.Points;\n\n\t\t\t}\n\t\t}\n\t} );\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.visible === false ) return;\n\n\tobject.raycast( raycaster, intersects );\n\n\tif ( recursive === true ) {\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Raycaster.prototype, {\n\n\tlinePrecision: 1,\n\n\tset: function ( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t},\n\n\tsetFromCamera: function ( coords, camera ) {\n\n\t\tif ( ( camera && camera.isPerspectiveCamera ) ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\t\t\tthis._camera = camera;\n\n\t\t} else if ( ( camera && camera.isOrthographicCamera ) ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\t\t\tthis._camera = camera;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type.' );\n\n\t\t}\n\n\t},\n\n\tintersectObject: function ( object, recursive, optionalTarget ) {\n\n\t\tvar intersects = optionalTarget || [];\n\n\t\tintersectObject( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t},\n\n\tintersectObjects: function ( objects, recursive, optionalTarget ) {\n\n\t\tvar intersects = optionalTarget || [];\n\n\t\tif ( Array.isArray( objects ) === false ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' );\n\t\t\treturn intersects;\n\n\t\t}\n\n\t\tfor ( var i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up.\n * The azimuthal angle (theta) is measured from the positive z-axiz.\n */\n\nfunction Spherical( radius, phi, theta ) {\n\n\tthis.radius = ( radius !== undefined ) ? radius : 1.0;\n\tthis.phi = ( phi !== undefined ) ? phi : 0; // polar angle\n\tthis.theta = ( theta !== undefined ) ? theta : 0; // azimuthal angle\n\n\treturn this;\n\n}\n\nObject.assign( Spherical.prototype, {\n\n\tset: function ( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t},\n\n\t// restrict phi to be betwee EPS and PI-EPS\n\tmakeSafe: function () {\n\n\t\tvar EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromVector3: function ( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t},\n\n\tsetFromCartesianCoords: function ( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( _Math.clamp( y / this.radius, - 1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n *\n */\n\nfunction Cylindrical( radius, theta, y ) {\n\n\tthis.radius = ( radius !== undefined ) ? radius : 1.0; // distance from the origin to a point in the x-z plane\n\tthis.theta = ( theta !== undefined ) ? theta : 0; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\tthis.y = ( y !== undefined ) ? y : 0; // height above the x-z plane\n\n\treturn this;\n\n}\n\nObject.assign( Cylindrical.prototype, {\n\n\tset: function ( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromVector3: function ( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t},\n\n\tsetFromCartesianCoords: function ( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Box2( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity );\n\n}\n\nObject.assign( Box2.prototype, {\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function () {\n\n\t\tvar v1 = new Vector2();\n\n\t\treturn function setFromCenterAndSize( center, size ) {\n\n\t\t\tvar halfSize = v1.copy( size ).multiplyScalar( 0.5 );\n\t\t\tthis.min.copy( center ).sub( halfSize );\n\t\t\tthis.max.copy( center ).add( halfSize );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getCenter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getSize() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t},\n\n\tgetParameter: function ( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getParameter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function () {\n\n\t\tvar v1 = new Vector2();\n\n\t\treturn function distanceToPoint( point ) {\n\n\t\t\tvar clampedPoint = v1.copy( point ).clamp( this.min, this.max );\n\t\t\treturn clampedPoint.sub( point ).length();\n\n\t\t};\n\n\t}(),\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nvar _startP, _startEnd;\n\nfunction Line3( start, end ) {\n\n\tthis.start = ( start !== undefined ) ? start : new Vector3();\n\tthis.end = ( end !== undefined ) ? end : new Vector3();\n\n}\n\nObject.assign( Line3.prototype, {\n\n\tset: function ( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t},\n\n\tdelta: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .delta() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t},\n\n\tdistanceSq: function () {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t},\n\n\tdistance: function () {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t},\n\n\tat: function ( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tclosestPointToPointParameter: function ( point, clampToLine ) {\n\n\t\tif ( _startP === undefined ) {\n\n\t\t\t_startP = new Vector3();\n\t\t\t_startEnd = new Vector3();\n\n\t\t}\n\n\t\t_startP.subVectors( point, this.start );\n\t\t_startEnd.subVectors( this.end, this.start );\n\n\t\tvar startEnd2 = _startEnd.dot( _startEnd );\n\t\tvar startEnd_startP = _startEnd.dot( _startP );\n\n\t\tvar t = startEnd_startP / startEnd2;\n\n\t\tif ( clampToLine ) {\n\n\t\t\tt = _Math.clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t},\n\n\tclosestPointToPoint: function ( point, clampToLine, target ) {\n\n\t\tvar t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction ImmediateRenderObject( material ) {\n\n\tObject3D.call( this );\n\n\tthis.material = material;\n\tthis.render = function ( /* renderCallback */ ) {};\n\n}\n\nImmediateRenderObject.prototype = Object.create( Object3D.prototype );\nImmediateRenderObject.prototype.constructor = ImmediateRenderObject;\n\nImmediateRenderObject.prototype.isImmediateRenderObject = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction VertexNormalsHelper( object, size, hex, linewidth ) {\n\n\tthis.object = object;\n\n\tthis.size = ( size !== undefined ) ? size : 1;\n\n\tvar color = ( hex !== undefined ) ? hex : 0xff0000;\n\n\tvar width = ( linewidth !== undefined ) ? linewidth : 1;\n\n\t//\n\n\tvar nNormals = 0;\n\n\tvar objGeometry = this.object.geometry;\n\n\tif ( objGeometry && objGeometry.isGeometry ) {\n\n\t\tnNormals = objGeometry.faces.length * 3;\n\n\t} else if ( objGeometry && objGeometry.isBufferGeometry ) {\n\n\t\tnNormals = objGeometry.attributes.normal.count;\n\n\t}\n\n\t//\n\n\tvar geometry = new BufferGeometry();\n\n\tvar positions = new Float32BufferAttribute( nNormals * 2 * 3, 3 );\n\n\tgeometry.addAttribute( 'position', positions );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) );\n\n\t//\n\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n}\n\nVertexNormalsHelper.prototype = Object.create( LineSegments.prototype );\nVertexNormalsHelper.prototype.constructor = VertexNormalsHelper;\n\nVertexNormalsHelper.prototype.update = ( function () {\n\n\tvar v1 = new Vector3();\n\tvar v2 = new Vector3();\n\tvar normalMatrix = new Matrix3();\n\n\treturn function update() {\n\n\t\tvar keys = [ 'a', 'b', 'c' ];\n\n\t\tthis.object.updateMatrixWorld( true );\n\n\t\tnormalMatrix.getNormalMatrix( this.object.matrixWorld );\n\n\t\tvar matrixWorld = this.object.matrixWorld;\n\n\t\tvar position = this.geometry.attributes.position;\n\n\t\t//\n\n\t\tvar objGeometry = this.object.geometry;\n\n\t\tif ( objGeometry && objGeometry.isGeometry ) {\n\n\t\t\tvar vertices = objGeometry.vertices;\n\n\t\t\tvar faces = objGeometry.faces;\n\n\t\t\tvar idx = 0;\n\n\t\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tvar face = faces[ i ];\n\n\t\t\t\tfor ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar vertex = vertices[ face[ keys[ j ] ] ];\n\n\t\t\t\t\tvar normal = face.vertexNormals[ j ];\n\n\t\t\t\t\tv1.copy( vertex ).applyMatrix4( matrixWorld );\n\n\t\t\t\t\tv2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\n\n\t\t\t\t\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\n\n\t\t\t\t\tidx = idx + 1;\n\n\t\t\t\t\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\n\n\t\t\t\t\tidx = idx + 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( objGeometry && objGeometry.isBufferGeometry ) {\n\n\t\t\tvar objPos = objGeometry.attributes.position;\n\n\t\t\tvar objNorm = objGeometry.attributes.normal;\n\n\t\t\tvar idx = 0;\n\n\t\t\t// for simplicity, ignore index and drawcalls, and render every normal\n\n\t\t\tfor ( var j = 0, jl = objPos.count; j < jl; j ++ ) {\n\n\t\t\t\tv1.set( objPos.getX( j ), objPos.getY( j ), objPos.getZ( j ) ).applyMatrix4( matrixWorld );\n\n\t\t\t\tv2.set( objNorm.getX( j ), objNorm.getY( j ), objNorm.getZ( j ) );\n\n\t\t\t\tv2.applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\n\n\t\t\t\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\n\n\t\t\t\tidx = idx + 1;\n\n\t\t\t\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\n\n\t\t\t\tidx = idx + 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tposition.needsUpdate = true;\n\n\t};\n\n}() );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction SpotLightHelper( light, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tvar geometry = new BufferGeometry();\n\n\tvar positions = [\n\t\t0, 0, 0, \t0, 0, 1,\n\t\t0, 0, 0, \t1, 0, 1,\n\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t0, 0, 0, \t0, 1, 1,\n\t\t0, 0, 0, \t0, - 1, 1\n\t];\n\n\tfor ( var i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\tvar p1 = ( i / l ) * Math.PI * 2;\n\t\tvar p2 = ( j / l ) * Math.PI * 2;\n\n\t\tpositions.push(\n\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t);\n\n\t}\n\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\tvar material = new LineBasicMaterial( { fog: false } );\n\n\tthis.cone = new LineSegments( geometry, material );\n\tthis.add( this.cone );\n\n\tthis.update();\n\n}\n\nSpotLightHelper.prototype = Object.create( Object3D.prototype );\nSpotLightHelper.prototype.constructor = SpotLightHelper;\n\nSpotLightHelper.prototype.dispose = function () {\n\n\tthis.cone.geometry.dispose();\n\tthis.cone.material.dispose();\n\n};\n\nSpotLightHelper.prototype.update = function () {\n\n\tvar vector = new Vector3();\n\n\treturn function update() {\n\n\t\tthis.light.updateMatrixWorld();\n\n\t\tvar coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tvar coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\tvector.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( vector );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.cone.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.cone.material.color.copy( this.light.color );\n\n\t\t}\n\n\t};\n\n}();\n\n/**\n * @author Sean Griffin / http://twitter.com/sgrif\n * @author Michael Guerrero / http://realitymeltdown.com\n * @author mrdoob / http://mrdoob.com/\n * @author ikerr / http://verold.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction getBoneList( object ) {\n\n\tvar boneList = [];\n\n\tif ( object && object.isBone ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( var i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nfunction SkeletonHelper( object ) {\n\n\tvar bones = getBoneList( object );\n\n\tvar geometry = new BufferGeometry();\n\n\tvar vertices = [];\n\tvar colors = [];\n\n\tvar color1 = new Color( 0, 0, 1 );\n\tvar color2 = new Color( 0, 1, 0 );\n\n\tfor ( var i = 0; i < bones.length; i ++ ) {\n\n\t\tvar bone = bones[ i ];\n\n\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t}\n\n\t}\n\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors, depthTest: false, depthWrite: false, transparent: true } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.root = object;\n\tthis.bones = bones;\n\n\tthis.matrix = object.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n}\n\nSkeletonHelper.prototype = Object.create( LineSegments.prototype );\nSkeletonHelper.prototype.constructor = SkeletonHelper;\n\nSkeletonHelper.prototype.updateMatrixWorld = function () {\n\n\tvar vector = new Vector3();\n\n\tvar boneMatrix = new Matrix4();\n\tvar matrixWorldInv = new Matrix4();\n\n\treturn function updateMatrixWorld( force ) {\n\n\t\tvar bones = this.bones;\n\n\t\tvar geometry = this.geometry;\n\t\tvar position = geometry.getAttribute( 'position' );\n\n\t\tmatrixWorldInv.getInverse( this.root.matrixWorld );\n\n\t\tfor ( var i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\t\tvar bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\tboneMatrix.multiplyMatrices( matrixWorldInv, bone.matrixWorld );\n\t\t\t\tvector.setFromMatrixPosition( boneMatrix );\n\t\t\t\tposition.setXYZ( j, vector.x, vector.y, vector.z );\n\n\t\t\t\tboneMatrix.multiplyMatrices( matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t\tvector.setFromMatrixPosition( boneMatrix );\n\t\t\t\tposition.setXYZ( j + 1, vector.x, vector.y, vector.z );\n\n\t\t\t\tj += 2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t};\n\n}();\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction PointLightHelper( light, sphereSize, color ) {\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.color = color;\n\n\tvar geometry = new SphereBufferGeometry( sphereSize, 4, 2 );\n\tvar material = new MeshBasicMaterial( { wireframe: true, fog: false } );\n\n\tMesh.call( this, geometry, material );\n\n\tthis.matrix = this.light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n\n\t/*\n\tvar distanceGeometry = new THREE.IcosahedronBufferGeometry( 1, 2 );\n\tvar distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tvar d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n}\n\nPointLightHelper.prototype = Object.create( Mesh.prototype );\nPointLightHelper.prototype.constructor = PointLightHelper;\n\nPointLightHelper.prototype.dispose = function () {\n\n\tthis.geometry.dispose();\n\tthis.material.dispose();\n\n};\n\nPointLightHelper.prototype.update = function () {\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.material.color.copy( this.light.color );\n\n\t}\n\n\t/*\n\tvar d = this.light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.visible = true;\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\t*/\n\n};\n\n/**\n * @author abelnation / http://github.com/abelnation\n * @author Mugen87 / http://github.com/Mugen87\n * @author WestLangley / http://github.com/WestLangley\n *\n * This helper must be added as a child of the light\n */\n\nfunction RectAreaLightHelper( light, color ) {\n\n\tthis.type = 'RectAreaLightHelper';\n\n\tthis.light = light;\n\n\tthis.color = color; // optional hardwired color for the helper\n\n\tvar positions = [ 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, - 1, 0, 1, 1, 0 ];\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\tgeometry.computeBoundingSphere();\n\n\tvar material = new LineBasicMaterial( { fog: false } );\n\n\tLine.call( this, geometry, material );\n\n\t//\n\n\tvar positions2 = [ 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, - 1, 0, 1, - 1, 0 ];\n\n\tvar geometry2 = new BufferGeometry();\n\tgeometry2.addAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\tgeometry2.computeBoundingSphere();\n\n\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { side: BackSide, fog: false } ) ) );\n\n\tthis.update();\n\n}\n\nRectAreaLightHelper.prototype = Object.create( Line.prototype );\nRectAreaLightHelper.prototype.constructor = RectAreaLightHelper;\n\nRectAreaLightHelper.prototype.update = function () {\n\n\tthis.scale.set( 0.5 * this.light.width, 0.5 * this.light.height, 1 );\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.material.color.set( this.color );\n\t\tthis.children[ 0 ].material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.material.color.copy( this.light.color ).multiplyScalar( this.light.intensity );\n\n\t\t// prevent hue shift\n\t\tvar c = this.material.color;\n\t\tvar max = Math.max( c.r, c.g, c.b );\n\t\tif ( max > 1 ) c.multiplyScalar( 1 / max );\n\n\t\tthis.children[ 0 ].material.color.copy( this.material.color );\n\n\t}\n\n};\n\nRectAreaLightHelper.prototype.dispose = function () {\n\n\tthis.geometry.dispose();\n\tthis.material.dispose();\n\tthis.children[ 0 ].geometry.dispose();\n\tthis.children[ 0 ].material.dispose();\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction HemisphereLightHelper( light, size, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tvar geometry = new OctahedronBufferGeometry( size );\n\tgeometry.rotateY( Math.PI * 0.5 );\n\n\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false } );\n\tif ( this.color === undefined ) this.material.vertexColors = VertexColors;\n\n\tvar position = geometry.getAttribute( 'position' );\n\tvar colors = new Float32Array( position.count * 3 );\n\n\tgeometry.addAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\tthis.add( new Mesh( geometry, this.material ) );\n\n\tthis.update();\n\n}\n\nHemisphereLightHelper.prototype = Object.create( Object3D.prototype );\nHemisphereLightHelper.prototype.constructor = HemisphereLightHelper;\n\nHemisphereLightHelper.prototype.dispose = function () {\n\n\tthis.children[ 0 ].geometry.dispose();\n\tthis.children[ 0 ].material.dispose();\n\n};\n\nHemisphereLightHelper.prototype.update = function () {\n\n\tvar vector = new Vector3();\n\n\tvar color1 = new Color();\n\tvar color2 = new Color();\n\n\treturn function update() {\n\n\t\tvar mesh = this.children[ 0 ];\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tvar colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t\tcolor1.copy( this.light.color );\n\t\t\tcolor2.copy( this.light.groundColor );\n\n\t\t\tfor ( var i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\t\tvar color = ( i < ( l / 2 ) ) ? color1 : color2;\n\n\t\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t\tcolors.needsUpdate = true;\n\n\t\t}\n\n\t\tmesh.lookAt( vector.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n\t};\n\n}();\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction LightProbeHelper( lightProbe, size ) {\n\n\tthis.lightProbe = lightProbe;\n\n\tthis.size = size;\n\n\tvar defines = {};\n\tdefines[ 'GAMMA_OUTPUT' ] = \"\";\n\n\t// material\n\tvar material = new ShaderMaterial( {\n\n\t\tdefines: defines,\n\n\t\tuniforms: {\n\n\t\t\tsh: { value: this.lightProbe.sh.coefficients }, // by reference\n\n\t\t\tintensity: { value: this.lightProbe.intensity }\n\n\t\t},\n\n\t\tvertexShader: [\n\n\t\t\t'varying vec3 vNormal;',\n\n\t\t\t'void main() {',\n\n\t\t\t'\tvNormal = normalize( normalMatrix * normal );',\n\n\t\t\t'\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );',\n\n\t\t\t'}',\n\n\t\t].join( '\\n' ),\n\n\t\tfragmentShader: [\n\n\t\t\t'#define RECIPROCAL_PI 0.318309886',\n\n\t\t\t'vec3 inverseTransformDirection( in vec3 normal, in mat4 matrix ) {',\n\n\t\t\t'\t// matrix is assumed to be orthogonal',\n\n\t\t\t'\treturn normalize( ( vec4( normal, 0.0 ) * matrix ).xyz );',\n\n\t\t\t'}',\n\n\t\t\t'vec3 linearToOutput( in vec3 a ) {',\n\n\t\t\t'\t#ifdef GAMMA_OUTPUT',\n\n\t\t\t'\t\treturn pow( a, vec3( 1.0 / float( GAMMA_FACTOR ) ) );',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\treturn a;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'}',\n\n\t\t\t'// source: https://graphics.stanford.edu/papers/envmap/envmap.pdf',\n\t\t\t'vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {',\n\n\t\t\t'\t// normal is assumed to have unit length',\n\n\t\t\t'\tfloat x = normal.x, y = normal.y, z = normal.z;',\n\n\t\t\t'\t// band 0',\n\t\t\t'\tvec3 result = shCoefficients[ 0 ] * 0.886227;',\n\n\t\t\t'\t// band 1',\n\t\t\t'\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;',\n\t\t\t'\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;',\n\t\t\t'\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;',\n\n\t\t\t'\t// band 2',\n\t\t\t'\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;',\n\t\t\t'\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;',\n\t\t\t'\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );',\n\t\t\t'\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;',\n\t\t\t'\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );',\n\n\t\t\t'\treturn result;',\n\n\t\t\t'}',\n\n\t\t\t'uniform vec3 sh[ 9 ]; // sh coefficients',\n\n\t\t\t'uniform float intensity; // light probe intensity',\n\n\t\t\t'varying vec3 vNormal;',\n\n\t\t\t'void main() {',\n\n\t\t\t'\tvec3 normal = normalize( vNormal );',\n\n\t\t\t'\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );',\n\n\t\t\t'\tvec3 irradiance = shGetIrradianceAt( worldNormal, sh );',\n\n\t\t\t'\tvec3 outgoingLight = RECIPROCAL_PI * irradiance * intensity;',\n\n\t\t\t'\toutgoingLight = linearToOutput( outgoingLight );',\n\n\t\t\t'\tgl_FragColor = vec4( outgoingLight, 1.0 );',\n\n\t\t\t'}'\n\n\t\t].join( '\\n' )\n\n\t} );\n\n\tvar geometry = new SphereBufferGeometry( 1, 32, 16 );\n\n\tMesh.call( this, geometry, material );\n\n\tthis.onBeforeRender();\n\n}\n\nLightProbeHelper.prototype = Object.create( Mesh.prototype );\nLightProbeHelper.prototype.constructor = LightProbeHelper;\n\nLightProbeHelper.prototype.dispose = function () {\n\n\tthis.geometry.dispose();\n\tthis.material.dispose();\n\n};\n\nLightProbeHelper.prototype.onBeforeRender = function () {\n\n\treturn function update() {\n\n\t\tthis.position.copy( this.lightProbe.position );\n\n\t\tthis.scale.set( 1, 1, 1 ).multiplyScalar( this.size );\n\n\t\tthis.material.uniforms.intensity.value = this.lightProbe.intensity;\n\n\t};\n\n}();\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction GridHelper( size, divisions, color1, color2 ) {\n\n\tsize = size || 10;\n\tdivisions = divisions || 10;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tvar center = divisions / 2;\n\tvar step = size / divisions;\n\tvar halfSize = size / 2;\n\n\tvar vertices = [], colors = [];\n\n\tfor ( var i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\tvar color = i === center ? color1 : color2;\n\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\n\t}\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\n\n\tLineSegments.call( this, geometry, material );\n\n}\n\nGridHelper.prototype = Object.assign( Object.create( LineSegments.prototype ), {\n\n\tconstructor: GridHelper,\n\n\tcopy: function ( source ) {\n\n\t\tLineSegments.prototype.copy.call( this, source );\n\n\t\tthis.geometry.copy( source.geometry );\n\t\tthis.material.copy( source.material );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / http://github.com/Mugen87\n * @author Hectate / http://www.github.com/Hectate\n */\n\nfunction PolarGridHelper( radius, radials, circles, divisions, color1, color2 ) {\n\n\tradius = radius || 10;\n\tradials = radials || 16;\n\tcircles = circles || 8;\n\tdivisions = divisions || 64;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tvar vertices = [];\n\tvar colors = [];\n\n\tvar x, z;\n\tvar v, i, j, r, color;\n\n\t// create the radials\n\n\tfor ( i = 0; i <= radials; i ++ ) {\n\n\t\tv = ( i / radials ) * ( Math.PI * 2 );\n\n\t\tx = Math.sin( v ) * radius;\n\t\tz = Math.cos( v ) * radius;\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tvertices.push( x, 0, z );\n\n\t\tcolor = ( i & 1 ) ? color1 : color2;\n\n\t\tcolors.push( color.r, color.g, color.b );\n\t\tcolors.push( color.r, color.g, color.b );\n\n\t}\n\n\t// create the circles\n\n\tfor ( i = 0; i <= circles; i ++ ) {\n\n\t\tcolor = ( i & 1 ) ? color1 : color2;\n\n\t\tr = radius - ( radius / circles * i );\n\n\t\tfor ( j = 0; j < divisions; j ++ ) {\n\n\t\t\t// first vertex\n\n\t\t\tv = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\tx = Math.sin( v ) * r;\n\t\t\tz = Math.cos( v ) * r;\n\n\t\t\tvertices.push( x, 0, z );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t// second vertex\n\n\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\tx = Math.sin( v ) * r;\n\t\t\tz = Math.cos( v ) * r;\n\n\t\t\tvertices.push( x, 0, z );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t}\n\n\t}\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\n\n\tLineSegments.call( this, geometry, material );\n\n}\n\nPolarGridHelper.prototype = Object.create( LineSegments.prototype );\nPolarGridHelper.prototype.constructor = PolarGridHelper;\n\n/**\n * @author Mugen87 / http://github.com/Mugen87\n */\n\nfunction PositionalAudioHelper( audio, range, divisionsInnerAngle, divisionsOuterAngle ) {\n\n\tthis.audio = audio;\n\tthis.range = range || 1;\n\tthis.divisionsInnerAngle = divisionsInnerAngle || 16;\n\tthis.divisionsOuterAngle = divisionsOuterAngle || 2;\n\n\tvar geometry = new BufferGeometry();\n\tvar divisions = this.divisionsInnerAngle + this.divisionsOuterAngle * 2;\n\tvar positions = new Float32Array( ( divisions * 3 + 3 ) * 3 );\n\tgeometry.addAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\tvar materialInnerAngle = new LineBasicMaterial( { color: 0x00ff00 } );\n\tvar materialOuterAngle = new LineBasicMaterial( { color: 0xffff00 } );\n\n\tLine.call( this, geometry, [ materialOuterAngle, materialInnerAngle ] );\n\n\tthis.update();\n\n}\n\nPositionalAudioHelper.prototype = Object.create( Line.prototype );\nPositionalAudioHelper.prototype.constructor = PositionalAudioHelper;\n\nPositionalAudioHelper.prototype.update = function () {\n\n\tvar audio = this.audio;\n\tvar range = this.range;\n\tvar divisionsInnerAngle = this.divisionsInnerAngle;\n\tvar divisionsOuterAngle = this.divisionsOuterAngle;\n\n\tvar coneInnerAngle = _Math.degToRad( audio.panner.coneInnerAngle );\n\tvar coneOuterAngle = _Math.degToRad( audio.panner.coneOuterAngle );\n\n\tvar halfConeInnerAngle = coneInnerAngle / 2;\n\tvar halfConeOuterAngle = coneOuterAngle / 2;\n\n\tvar start = 0;\n\tvar count = 0;\n\tvar i, stride;\n\n\tvar geometry = this.geometry;\n\tvar positionAttribute = geometry.attributes.position;\n\n\tgeometry.clearGroups();\n\n\t//\n\n\tfunction generateSegment( from, to, divisions, materialIndex ) {\n\n\t\tvar step = ( to - from ) / divisions;\n\n\t\tpositionAttribute.setXYZ( start, 0, 0, 0 );\n\t\tcount ++;\n\n\t\tfor ( i = from; i < to; i += step ) {\n\n\t\t\tstride = start + count;\n\n\t\t\tpositionAttribute.setXYZ( stride, Math.sin( i ) * range, 0, Math.cos( i ) * range );\n\t\t\tpositionAttribute.setXYZ( stride + 1, Math.sin( Math.min( i + step, to ) ) * range, 0, Math.cos( Math.min( i + step, to ) ) * range );\n\t\t\tpositionAttribute.setXYZ( stride + 2, 0, 0, 0 );\n\n\t\t\tcount += 3;\n\n\t\t}\n\n\t\tgeometry.addGroup( start, count, materialIndex );\n\n\t\tstart += count;\n\t\tcount = 0;\n\n\t}\n\n\t//\n\n\tgenerateSegment( - halfConeOuterAngle, - halfConeInnerAngle, divisionsOuterAngle, 0 );\n\tgenerateSegment( - halfConeInnerAngle, halfConeInnerAngle, divisionsInnerAngle, 1 );\n\tgenerateSegment( halfConeInnerAngle, halfConeOuterAngle, divisionsOuterAngle, 0 );\n\n\t//\n\n\tpositionAttribute.needsUpdate = true;\n\n\tif ( coneInnerAngle === coneOuterAngle ) this.material[ 0 ].visible = false;\n\n};\n\nPositionalAudioHelper.prototype.dispose = function () {\n\n\tthis.geometry.dispose();\n\tthis.material[ 0 ].dispose();\n\tthis.material[ 1 ].dispose();\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction FaceNormalsHelper( object, size, hex, linewidth ) {\n\n\t// FaceNormalsHelper only supports THREE.Geometry\n\n\tthis.object = object;\n\n\tthis.size = ( size !== undefined ) ? size : 1;\n\n\tvar color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\tvar width = ( linewidth !== undefined ) ? linewidth : 1;\n\n\t//\n\n\tvar nNormals = 0;\n\n\tvar objGeometry = this.object.geometry;\n\n\tif ( objGeometry && objGeometry.isGeometry ) {\n\n\t\tnNormals = objGeometry.faces.length;\n\n\t} else {\n\n\t\tconsole.warn( 'THREE.FaceNormalsHelper: only THREE.Geometry is supported. Use THREE.VertexNormalsHelper, instead.' );\n\n\t}\n\n\t//\n\n\tvar geometry = new BufferGeometry();\n\n\tvar positions = new Float32BufferAttribute( nNormals * 2 * 3, 3 );\n\n\tgeometry.addAttribute( 'position', positions );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) );\n\n\t//\n\n\tthis.matrixAutoUpdate = false;\n\tthis.update();\n\n}\n\nFaceNormalsHelper.prototype = Object.create( LineSegments.prototype );\nFaceNormalsHelper.prototype.constructor = FaceNormalsHelper;\n\nFaceNormalsHelper.prototype.update = ( function () {\n\n\tvar v1 = new Vector3();\n\tvar v2 = new Vector3();\n\tvar normalMatrix = new Matrix3();\n\n\treturn function update() {\n\n\t\tthis.object.updateMatrixWorld( true );\n\n\t\tnormalMatrix.getNormalMatrix( this.object.matrixWorld );\n\n\t\tvar matrixWorld = this.object.matrixWorld;\n\n\t\tvar position = this.geometry.attributes.position;\n\n\t\t//\n\n\t\tvar objGeometry = this.object.geometry;\n\n\t\tvar vertices = objGeometry.vertices;\n\n\t\tvar faces = objGeometry.faces;\n\n\t\tvar idx = 0;\n\n\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tvar normal = face.normal;\n\n\t\t\tv1.copy( vertices[ face.a ] )\n\t\t\t\t.add( vertices[ face.b ] )\n\t\t\t\t.add( vertices[ face.c ] )\n\t\t\t\t.divideScalar( 3 )\n\t\t\t\t.applyMatrix4( matrixWorld );\n\n\t\t\tv2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\n\n\t\t\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\n\n\t\t\tidx = idx + 1;\n\n\t\t\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\n\n\t\t\tidx = idx + 1;\n\n\t\t}\n\n\t\tposition.needsUpdate = true;\n\n\t};\n\n}() );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction DirectionalLightHelper( light, size, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tif ( size === undefined ) size = 1;\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( [\n\t\t- size, size, 0,\n\t\tsize, size, 0,\n\t\tsize, - size, 0,\n\t\t- size, - size, 0,\n\t\t- size, size, 0\n\t], 3 ) );\n\n\tvar material = new LineBasicMaterial( { fog: false } );\n\n\tthis.lightPlane = new Line( geometry, material );\n\tthis.add( this.lightPlane );\n\n\tgeometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\tthis.targetLine = new Line( geometry, material );\n\tthis.add( this.targetLine );\n\n\tthis.update();\n\n}\n\nDirectionalLightHelper.prototype = Object.create( Object3D.prototype );\nDirectionalLightHelper.prototype.constructor = DirectionalLightHelper;\n\nDirectionalLightHelper.prototype.dispose = function () {\n\n\tthis.lightPlane.geometry.dispose();\n\tthis.lightPlane.material.dispose();\n\tthis.targetLine.geometry.dispose();\n\tthis.targetLine.material.dispose();\n\n};\n\nDirectionalLightHelper.prototype.update = function () {\n\n\tvar v1 = new Vector3();\n\tvar v2 = new Vector3();\n\tvar v3 = new Vector3();\n\n\treturn function update() {\n\n\t\tv1.setFromMatrixPosition( this.light.matrixWorld );\n\t\tv2.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\tv3.subVectors( v2, v1 );\n\n\t\tthis.lightPlane.lookAt( v2 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.lightPlane.material.color.set( this.color );\n\t\t\tthis.targetLine.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\tthis.targetLine.lookAt( v2 );\n\t\tthis.targetLine.scale.z = v3.length();\n\n\t};\n\n}();\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author Mugen87 / https://github.com/Mugen87\n *\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttp://evanw.github.com/lightgl.js/tests/shadowmap.html\n */\n\nfunction CameraHelper( camera ) {\n\n\tvar geometry = new BufferGeometry();\n\tvar material = new LineBasicMaterial( { color: 0xffffff, vertexColors: FaceColors } );\n\n\tvar vertices = [];\n\tvar colors = [];\n\n\tvar pointMap = {};\n\n\t// colors\n\n\tvar colorFrustum = new Color( 0xffaa00 );\n\tvar colorCone = new Color( 0xff0000 );\n\tvar colorUp = new Color( 0x00aaff );\n\tvar colorTarget = new Color( 0xffffff );\n\tvar colorCross = new Color( 0x333333 );\n\n\t// near\n\n\taddLine( 'n1', 'n2', colorFrustum );\n\taddLine( 'n2', 'n4', colorFrustum );\n\taddLine( 'n4', 'n3', colorFrustum );\n\taddLine( 'n3', 'n1', colorFrustum );\n\n\t// far\n\n\taddLine( 'f1', 'f2', colorFrustum );\n\taddLine( 'f2', 'f4', colorFrustum );\n\taddLine( 'f4', 'f3', colorFrustum );\n\taddLine( 'f3', 'f1', colorFrustum );\n\n\t// sides\n\n\taddLine( 'n1', 'f1', colorFrustum );\n\taddLine( 'n2', 'f2', colorFrustum );\n\taddLine( 'n3', 'f3', colorFrustum );\n\taddLine( 'n4', 'f4', colorFrustum );\n\n\t// cone\n\n\taddLine( 'p', 'n1', colorCone );\n\taddLine( 'p', 'n2', colorCone );\n\taddLine( 'p', 'n3', colorCone );\n\taddLine( 'p', 'n4', colorCone );\n\n\t// up\n\n\taddLine( 'u1', 'u2', colorUp );\n\taddLine( 'u2', 'u3', colorUp );\n\taddLine( 'u3', 'u1', colorUp );\n\n\t// target\n\n\taddLine( 'c', 't', colorTarget );\n\taddLine( 'p', 'c', colorCross );\n\n\t// cross\n\n\taddLine( 'cn1', 'cn2', colorCross );\n\taddLine( 'cn3', 'cn4', colorCross );\n\n\taddLine( 'cf1', 'cf2', colorCross );\n\taddLine( 'cf3', 'cf4', colorCross );\n\n\tfunction addLine( a, b, color ) {\n\n\t\taddPoint( a, color );\n\t\taddPoint( b, color );\n\n\t}\n\n\tfunction addPoint( id, color ) {\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tcolors.push( color.r, color.g, color.b );\n\n\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\tpointMap[ id ] = [];\n\n\t\t}\n\n\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t}\n\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.camera = camera;\n\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\tthis.matrix = camera.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.pointMap = pointMap;\n\n\tthis.update();\n\n}\n\nCameraHelper.prototype = Object.create( LineSegments.prototype );\nCameraHelper.prototype.constructor = CameraHelper;\n\nCameraHelper.prototype.update = function () {\n\n\tvar geometry, pointMap;\n\n\tvar vector = new Vector3();\n\tvar camera = new Camera();\n\n\tfunction setPoint( point, x, y, z ) {\n\n\t\tvector.set( x, y, z ).unproject( camera );\n\n\t\tvar points = pointMap[ point ];\n\n\t\tif ( points !== undefined ) {\n\n\t\t\tvar position = geometry.getAttribute( 'position' );\n\n\t\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\t\tposition.setXYZ( points[ i ], vector.x, vector.y, vector.z );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn function update() {\n\n\t\tgeometry = this.geometry;\n\t\tpointMap = this.pointMap;\n\n\t\tvar w = 1, h = 1;\n\n\t\t// we need just camera projection matrix inverse\n\t\t// world matrix must be identity\n\n\t\tcamera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t\t// center / target\n\n\t\tsetPoint( 'c', 0, 0, - 1 );\n\t\tsetPoint( 't', 0, 0, 1 );\n\n\t\t// near\n\n\t\tsetPoint( 'n1', - w, - h, - 1 );\n\t\tsetPoint( 'n2', w, - h, - 1 );\n\t\tsetPoint( 'n3', - w, h, - 1 );\n\t\tsetPoint( 'n4', w, h, - 1 );\n\n\t\t// far\n\n\t\tsetPoint( 'f1', - w, - h, 1 );\n\t\tsetPoint( 'f2', w, - h, 1 );\n\t\tsetPoint( 'f3', - w, h, 1 );\n\t\tsetPoint( 'f4', w, h, 1 );\n\n\t\t// up\n\n\t\tsetPoint( 'u1', w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u2', - w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u3', 0, h * 2, - 1 );\n\n\t\t// cross\n\n\t\tsetPoint( 'cf1', - w, 0, 1 );\n\t\tsetPoint( 'cf2', w, 0, 1 );\n\t\tsetPoint( 'cf3', 0, - h, 1 );\n\t\tsetPoint( 'cf4', 0, h, 1 );\n\n\t\tsetPoint( 'cn1', - w, 0, - 1 );\n\t\tsetPoint( 'cn2', w, 0, - 1 );\n\t\tsetPoint( 'cn3', 0, - h, - 1 );\n\t\tsetPoint( 'cn4', 0, h, - 1 );\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t};\n\n}();\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / http://github.com/Mugen87\n */\n\nfunction BoxHelper( object, color ) {\n\n\tthis.object = object;\n\n\tif ( color === undefined ) color = 0xffff00;\n\n\tvar indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\tvar positions = new Float32Array( 8 * 3 );\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\tgeometry.addAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) );\n\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n}\n\nBoxHelper.prototype = Object.create( LineSegments.prototype );\nBoxHelper.prototype.constructor = BoxHelper;\n\nBoxHelper.prototype.update = ( function () {\n\n\tvar box = new Box3();\n\n\treturn function update( object ) {\n\n\t\tif ( object !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t\t}\n\n\t\tif ( this.object !== undefined ) {\n\n\t\t\tbox.setFromObject( this.object );\n\n\t\t}\n\n\t\tif ( box.isEmpty() ) return;\n\n\t\tvar min = box.min;\n\t\tvar max = box.max;\n\n\t\t/*\n\t\t 5____4\n\t\t1/___0/|\n\t\t| 6__|_7\n\t\t2/___3/\n\n\t\t0: max.x, max.y, max.z\n\t\t1: min.x, max.y, max.z\n\t\t2: min.x, min.y, max.z\n\t\t3: max.x, min.y, max.z\n\t\t4: max.x, max.y, min.z\n\t\t5: min.x, max.y, min.z\n\t\t6: min.x, min.y, min.z\n\t\t7: max.x, min.y, min.z\n\t\t*/\n\n\t\tvar position = this.geometry.attributes.position;\n\t\tvar array = position.array;\n\n\t\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\t\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\t\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\t\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\tposition.needsUpdate = true;\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t};\n\n} )();\n\nBoxHelper.prototype.setFromObject = function ( object ) {\n\n\tthis.object = object;\n\tthis.update();\n\n\treturn this;\n\n};\n\nBoxHelper.prototype.copy = function ( source ) {\n\n\tLineSegments.prototype.copy.call( this, source );\n\n\tthis.object = source.object;\n\n\treturn this;\n\n};\n\nBoxHelper.prototype.clone = function () {\n\n\treturn new this.constructor().copy( this );\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Box3Helper( box, color ) {\n\n\tthis.type = 'Box3Helper';\n\n\tthis.box = box;\n\n\tcolor = color || 0xffff00;\n\n\tvar indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\n\tvar positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ];\n\n\tvar geometry = new BufferGeometry();\n\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) );\n\n\tthis.geometry.computeBoundingSphere();\n\n}\n\nBox3Helper.prototype = Object.create( LineSegments.prototype );\nBox3Helper.prototype.constructor = Box3Helper;\n\nBox3Helper.prototype.updateMatrixWorld = function ( force ) {\n\n\tvar box = this.box;\n\n\tif ( box.isEmpty() ) return;\n\n\tbox.getCenter( this.position );\n\n\tbox.getSize( this.scale );\n\n\tthis.scale.multiplyScalar( 0.5 );\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction PlaneHelper( plane, size, hex ) {\n\n\tthis.type = 'PlaneHelper';\n\n\tthis.plane = plane;\n\n\tthis.size = ( size === undefined ) ? 1 : size;\n\n\tvar color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\tvar positions = [ 1, - 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0 ];\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\tgeometry.computeBoundingSphere();\n\n\tLine.call( this, geometry, new LineBasicMaterial( { color: color } ) );\n\n\t//\n\n\tvar positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ];\n\n\tvar geometry2 = new BufferGeometry();\n\tgeometry2.addAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\tgeometry2.computeBoundingSphere();\n\n\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false } ) ) );\n\n}\n\nPlaneHelper.prototype = Object.create( Line.prototype );\nPlaneHelper.prototype.constructor = PlaneHelper;\n\nPlaneHelper.prototype.updateMatrixWorld = function ( force ) {\n\n\tvar scale = - this.plane.constant;\n\n\tif ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter\n\n\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, scale );\n\n\tthis.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here\n\n\tthis.lookAt( this.plane.normal );\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n * @author zz85 / http://github.com/zz85\n * @author bhouston / http://clara.io\n *\n * Creates an arrow for visualizing directions\n *\n * Parameters:\n * dir - Vector3\n * origin - Vector3\n * length - Number\n * color - color in hex value\n * headLength - Number\n * headWidth - Number\n */\n\nvar lineGeometry, coneGeometry;\n\nfunction ArrowHelper( dir, origin, length, color, headLength, headWidth ) {\n\n\t// dir is assumed to be normalized\n\n\tObject3D.call( this );\n\n\tif ( dir === undefined ) dir = new Vector3( 0, 0, 1 );\n\tif ( origin === undefined ) origin = new Vector3( 0, 0, 0 );\n\tif ( length === undefined ) length = 1;\n\tif ( color === undefined ) color = 0xffff00;\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tif ( lineGeometry === undefined ) {\n\n\t\tlineGeometry = new BufferGeometry();\n\t\tlineGeometry.addAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\tconeGeometry = new CylinderBufferGeometry( 0, 0.5, 1, 5, 1 );\n\t\tconeGeometry.translate( 0, - 0.5, 0 );\n\n\t}\n\n\tthis.position.copy( origin );\n\n\tthis.line = new Line( lineGeometry, new LineBasicMaterial( { color: color } ) );\n\tthis.line.matrixAutoUpdate = false;\n\tthis.add( this.line );\n\n\tthis.cone = new Mesh( coneGeometry, new MeshBasicMaterial( { color: color } ) );\n\tthis.cone.matrixAutoUpdate = false;\n\tthis.add( this.cone );\n\n\tthis.setDirection( dir );\n\tthis.setLength( length, headLength, headWidth );\n\n}\n\nArrowHelper.prototype = Object.create( Object3D.prototype );\nArrowHelper.prototype.constructor = ArrowHelper;\n\nArrowHelper.prototype.setDirection = ( function () {\n\n\tvar axis = new Vector3();\n\tvar radians;\n\n\treturn function setDirection( dir ) {\n\n\t\t// dir is assumed to be normalized\n\n\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t} else if ( dir.y < - 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t} else {\n\n\t\t\taxis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\tradians = Math.acos( dir.y );\n\n\t\t\tthis.quaternion.setFromAxisAngle( axis, radians );\n\n\t\t}\n\n\t};\n\n}() );\n\nArrowHelper.prototype.setLength = function ( length, headLength, headWidth ) {\n\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tthis.line.scale.set( 1, Math.max( 0, length - headLength ), 1 );\n\tthis.line.updateMatrix();\n\n\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\tthis.cone.position.y = length;\n\tthis.cone.updateMatrix();\n\n};\n\nArrowHelper.prototype.setColor = function ( color ) {\n\n\tthis.line.material.color.set( color );\n\tthis.cone.material.color.set( color );\n\n};\n\nArrowHelper.prototype.copy = function ( source ) {\n\n\tObject3D.prototype.copy.call( this, source, false );\n\n\tthis.line.copy( source.line );\n\tthis.cone.copy( source.cone );\n\n\treturn this;\n\n};\n\nArrowHelper.prototype.clone = function () {\n\n\treturn new this.constructor().copy( this );\n\n};\n\n/**\n * @author sroucheray / http://sroucheray.org/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AxesHelper( size ) {\n\n\tsize = size || 1;\n\n\tvar vertices = [\n\t\t0, 0, 0,\tsize, 0, 0,\n\t\t0, 0, 0,\t0, size, 0,\n\t\t0, 0, 0,\t0, 0, size\n\t];\n\n\tvar colors = [\n\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t0, 0, 1,\t0, 0.6, 1\n\t];\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\n\n\tLineSegments.call( this, geometry, material );\n\n}\n\nAxesHelper.prototype = Object.create( LineSegments.prototype );\nAxesHelper.prototype.constructor = AxesHelper;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Face4( a, b, c, d, normal, color, materialIndex ) {\n\n\tconsole.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' );\n\treturn new Face3( a, b, c, normal, color, materialIndex );\n\n}\n\nvar LineStrip = 0;\n\nvar LinePieces = 1;\n\nfunction MeshFaceMaterial( materials ) {\n\n\tconsole.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' );\n\treturn materials;\n\n}\n\nfunction MultiMaterial( materials ) {\n\n\tif ( materials === undefined ) materials = [];\n\n\tconsole.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' );\n\tmaterials.isMultiMaterial = true;\n\tmaterials.materials = materials;\n\tmaterials.clone = function () {\n\n\t\treturn materials.slice();\n\n\t};\n\treturn materials;\n\n}\n\nfunction PointCloud( geometry, material ) {\n\n\tconsole.warn( 'THREE.PointCloud has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction Particle( material ) {\n\n\tconsole.warn( 'THREE.Particle has been renamed to THREE.Sprite.' );\n\treturn new Sprite( material );\n\n}\n\nfunction ParticleSystem( geometry, material ) {\n\n\tconsole.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction PointCloudMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleBasicMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleSystemMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction Vertex( x, y, z ) {\n\n\tconsole.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' );\n\treturn new Vector3( x, y, z );\n\n}\n\n//\n\nfunction DynamicBufferAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setDynamic( true ) instead.' );\n\treturn new BufferAttribute( array, itemSize ).setDynamic( true );\n\n}\n\nfunction Int8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' );\n\treturn new Int8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' );\n\treturn new Uint8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8ClampedAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' );\n\treturn new Uint8ClampedBufferAttribute( array, itemSize );\n\n}\n\nfunction Int16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' );\n\treturn new Int16BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' );\n\treturn new Uint16BufferAttribute( array, itemSize );\n\n}\n\nfunction Int32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' );\n\treturn new Int32BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' );\n\treturn new Uint32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' );\n\treturn new Float32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float64Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' );\n\treturn new Float64BufferAttribute( array, itemSize );\n\n}\n\n//\n\nCurve.create = function ( construct, getPoint ) {\n\n\tconsole.log( 'THREE.Curve.create() has been deprecated' );\n\n\tconstruct.prototype = Object.create( Curve.prototype );\n\tconstruct.prototype.constructor = construct;\n\tconstruct.prototype.getPoint = getPoint;\n\n\treturn construct;\n\n};\n\n//\n\nObject.assign( CurvePath.prototype, {\n\n\tcreatePointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from path points (for Line or Points objects)\n\n\t\tvar pts = this.getPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateSpacedPointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from equidistant sampling along the path\n\n\t\tvar pts = this.getSpacedPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateGeometry: function ( points ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\tvar geometry = new Geometry();\n\n\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tvar point = points[ i ];\n\t\t\tgeometry.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\n//\n\nObject.assign( Path.prototype, {\n\n\tfromPoints: function ( points ) {\n\n\t\tconsole.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' );\n\t\tthis.setFromPoints( points );\n\n\t}\n\n} );\n\n//\n\nfunction ClosedSplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\tthis.closed = true;\n\n}\n\nClosedSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction SplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction Spline( points ) {\n\n\tconsole.warn( 'THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSpline.prototype = Object.create( CatmullRomCurve3.prototype );\n\nObject.assign( Spline.prototype, {\n\n\tinitFromArray: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .initFromArray() has been removed.' );\n\n\t},\n\tgetControlPointsArray: function ( /* optionalTarget */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .getControlPointsArray() has been removed.' );\n\n\t},\n\treparametrizeByArcLength: function ( /* samplingCoef */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .reparametrizeByArcLength() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nfunction AxisHelper( size ) {\n\n\tconsole.warn( 'THREE.AxisHelper has been renamed to THREE.AxesHelper.' );\n\treturn new AxesHelper( size );\n\n}\n\nfunction BoundingBoxHelper( object, color ) {\n\n\tconsole.warn( 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.' );\n\treturn new BoxHelper( object, color );\n\n}\n\nfunction EdgesHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' );\n\treturn new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\nGridHelper.prototype.setColors = function () {\n\n\tconsole.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' );\n\n};\n\nSkeletonHelper.prototype.update = function () {\n\n\tconsole.error( 'THREE.SkeletonHelper: update() no longer needs to be called.' );\n\n};\n\nfunction WireframeHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' );\n\treturn new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\n//\n\nObject.assign( Loader.prototype, {\n\n\textractUrlBase: function ( url ) {\n\n\t\tconsole.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' );\n\t\treturn LoaderUtils.extractUrlBase( url );\n\n\t}\n\n} );\n\nfunction XHRLoader( manager ) {\n\n\tconsole.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' );\n\treturn new FileLoader( manager );\n\n}\n\nfunction BinaryTextureLoader( manager ) {\n\n\tconsole.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' );\n\treturn new DataTextureLoader( manager );\n\n}\n\nObject.assign( ObjectLoader.prototype, {\n\n\tsetTexturePath: function ( value ) {\n\n\t\tconsole.warn( 'THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().' );\n\t\treturn this.setResourcePath( value );\n\n\t}\n\n} );\n\n//\n\nObject.assign( Box2.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nObject.assign( Box3.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nLine3.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\nObject.assign( _Math, {\n\n\trandom16: function () {\n\n\t\tconsole.warn( 'THREE.Math: .random16() has been deprecated. Use Math.random() instead.' );\n\t\treturn Math.random();\n\n\t},\n\n\tnearestPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().' );\n\t\treturn _Math.floorPowerOfTwo( value );\n\n\t},\n\n\tnextPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().' );\n\t\treturn _Math.ceilPowerOfTwo( value );\n\n\t}\n\n} );\n\nObject.assign( Matrix3.prototype, {\n\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' );\n\t\treturn vector.applyMatrix3( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' );\n\n\t},\n\tapplyToBuffer: function ( buffer /*, offset, length */ ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.' );\n\t\treturn this.applyToBufferAttribute( buffer );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' );\n\n\t}\n\n} );\n\nObject.assign( Matrix4.prototype, {\n\n\textractPosition: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' );\n\t\treturn this.copyPosition( m );\n\n\t},\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tgetPosition: function () {\n\n\t\tvar v1;\n\n\t\treturn function getPosition() {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\t\t\tconsole.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );\n\t\t\treturn v1.setFromMatrixColumn( this, 3 );\n\n\t\t};\n\n\t}(),\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' );\n\t\treturn this.makeRotationFromQuaternion( q );\n\n\t},\n\tmultiplyToArray: function () {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector4: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' );\n\n\t},\n\trotateAxis: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' );\n\t\tv.transformDirection( this );\n\n\t},\n\tcrossVector: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\ttranslate: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .translate() has been removed.' );\n\n\t},\n\trotateX: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateX() has been removed.' );\n\n\t},\n\trotateY: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateY() has been removed.' );\n\n\t},\n\trotateZ: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateZ() has been removed.' );\n\n\t},\n\trotateByAxis: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' );\n\n\t},\n\tapplyToBuffer: function ( buffer /*, offset, length */ ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.' );\n\t\treturn this.applyToBufferAttribute( buffer );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' );\n\n\t},\n\tmakeFrustum: function ( left, right, bottom, top, near, far ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' );\n\t\treturn this.makePerspective( left, right, top, bottom, near, far );\n\n\t}\n\n} );\n\nPlane.prototype.isIntersectionLine = function ( line ) {\n\n\tconsole.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' );\n\treturn this.intersectsLine( line );\n\n};\n\nQuaternion.prototype.multiplyVector3 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' );\n\treturn vector.applyQuaternion( this );\n\n};\n\nObject.assign( Ray.prototype, {\n\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionPlane: function ( plane ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' );\n\t\treturn this.intersectsPlane( plane );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t}\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tarea: function () {\n\n\t\tconsole.warn( 'THREE.Triangle: .area() has been renamed to .getArea().' );\n\t\treturn this.getArea();\n\n\t},\n\tbarycoordFromPoint: function ( point, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn this.getBarycoord( point, target );\n\n\t},\n\tmidpoint: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .midpoint() has been renamed to .getMidpoint().' );\n\t\treturn this.getMidpoint( target );\n\n\t},\n\tnormal: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn this.getNormal( target );\n\n\t},\n\tplane: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .plane() has been renamed to .getPlane().' );\n\t\treturn this.getPlane( target );\n\n\t}\n\n} );\n\nObject.assign( Triangle, {\n\n\tbarycoordFromPoint: function ( point, a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn Triangle.getBarycoord( point, a, b, c, target );\n\n\t},\n\tnormal: function ( a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn Triangle.getNormal( a, b, c, target );\n\n\t}\n\n} );\n\nObject.assign( Shape.prototype, {\n\n\textractAllPoints: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' );\n\t\treturn this.extractPoints( divisions );\n\n\t},\n\textrude: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' );\n\t\treturn new ExtrudeGeometry( this, options );\n\n\t},\n\tmakeGeometry: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' );\n\t\treturn new ShapeGeometry( this, options );\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector3.prototype, {\n\n\tsetEulerFromRotationMatrix: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' );\n\n\t},\n\tsetEulerFromQuaternion: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' );\n\n\t},\n\tgetPositionFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' );\n\t\treturn this.setFromMatrixPosition( m );\n\n\t},\n\tgetScaleFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' );\n\t\treturn this.setFromMatrixScale( m );\n\n\t},\n\tgetColumnFromMatrix: function ( index, matrix ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' );\n\t\treturn this.setFromMatrixColumn( matrix, index );\n\n\t},\n\tapplyProjection: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' );\n\t\treturn this.applyMatrix4( m );\n\n\t},\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector4.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\n//\n\nObject.assign( Geometry.prototype, {\n\n\tcomputeTangents: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeLineDistances: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.' );\n\n\t}\n\n} );\n\nObject.assign( Object3D.prototype, {\n\n\tgetChildByName: function ( name ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' );\n\t\treturn this.getObjectByName( name );\n\n\t},\n\trenderDepth: function () {\n\n\t\tconsole.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' );\n\n\t},\n\ttranslate: function ( distance, axis ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' );\n\t\treturn this.translateOnAxis( axis, distance );\n\n\t},\n\tgetWorldRotation: function () {\n\n\t\tconsole.error( 'THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.' );\n\n\t}\n\n} );\n\nObject.defineProperties( Object3D.prototype, {\n\n\teulerOrder: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\treturn this.rotation.order;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\tthis.rotation.order = value;\n\n\t\t}\n\t},\n\tuseQuaternion: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( LOD.prototype, {\n\n\tobjects: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.LOD: .objects has been renamed to .levels.' );\n\t\t\treturn this.levels;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperty( Skeleton.prototype, 'useVertexTexture', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t},\n\tset: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t}\n\n} );\n\nSkinnedMesh.prototype.initBones = function () {\n\n\tconsole.error( 'THREE.SkinnedMesh: initBones() has been removed.' );\n\n};\n\nObject.defineProperty( Curve.prototype, '__arcLengthDivisions', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\treturn this.arcLengthDivisions;\n\n\t},\n\tset: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\tthis.arcLengthDivisions = value;\n\n\t}\n\n} );\n\n//\n\nPerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) {\n\n\tconsole.warn( \"THREE.PerspectiveCamera.setLens is deprecated. \" +\n\t\t\t\"Use .setFocalLength and .filmGauge for a photographic setup.\" );\n\n\tif ( filmGauge !== undefined ) this.filmGauge = filmGauge;\n\tthis.setFocalLength( focalLength );\n\n};\n\n//\n\nObject.defineProperties( Light.prototype, {\n\tonlyShadow: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .onlyShadow has been removed.' );\n\n\t\t}\n\t},\n\tshadowCameraFov: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' );\n\t\t\tthis.shadow.camera.fov = value;\n\n\t\t}\n\t},\n\tshadowCameraLeft: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' );\n\t\t\tthis.shadow.camera.left = value;\n\n\t\t}\n\t},\n\tshadowCameraRight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' );\n\t\t\tthis.shadow.camera.right = value;\n\n\t\t}\n\t},\n\tshadowCameraTop: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' );\n\t\t\tthis.shadow.camera.top = value;\n\n\t\t}\n\t},\n\tshadowCameraBottom: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' );\n\t\t\tthis.shadow.camera.bottom = value;\n\n\t\t}\n\t},\n\tshadowCameraNear: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' );\n\t\t\tthis.shadow.camera.near = value;\n\n\t\t}\n\t},\n\tshadowCameraFar: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' );\n\t\t\tthis.shadow.camera.far = value;\n\n\t\t}\n\t},\n\tshadowCameraVisible: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' );\n\n\t\t}\n\t},\n\tshadowBias: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' );\n\t\t\tthis.shadow.bias = value;\n\n\t\t}\n\t},\n\tshadowDarkness: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowDarkness has been removed.' );\n\n\t\t}\n\t},\n\tshadowMapWidth: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' );\n\t\t\tthis.shadow.mapSize.width = value;\n\n\t\t}\n\t},\n\tshadowMapHeight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' );\n\t\t\tthis.shadow.mapSize.height = value;\n\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( BufferAttribute.prototype, {\n\n\tlength: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .length has been deprecated. Use .count instead.' );\n\t\t\treturn this.array.length;\n\n\t\t}\n\t},\n\tcopyIndicesArray: function ( /* indices */ ) {\n\n\t\tconsole.error( 'THREE.BufferAttribute: .copyIndicesArray() has been removed.' );\n\n\t}\n\n} );\n\nObject.assign( BufferGeometry.prototype, {\n\n\taddIndex: function ( index ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' );\n\t\tthis.setIndex( index );\n\n\t},\n\taddDrawCall: function ( start, count, indexOffset ) {\n\n\t\tif ( indexOffset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' );\n\n\t\t}\n\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' );\n\t\tthis.addGroup( start, count );\n\n\t},\n\tclearDrawCalls: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' );\n\t\tthis.clearGroups();\n\n\t},\n\tcomputeTangents: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeOffsets: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' );\n\n\t}\n\n} );\n\nObject.defineProperties( BufferGeometry.prototype, {\n\n\tdrawcalls: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t},\n\toffsets: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.assign( ExtrudeBufferGeometry.prototype, {\n\n\tgetArrays: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .getArrays() has been removed.' );\n\n\t},\n\n\taddShapeList: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.' );\n\n\t},\n\n\taddShape: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShape() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Uniform.prototype, {\n\n\tdynamic: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' );\n\n\t\t}\n\t},\n\tonUpdate: {\n\t\tvalue: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' );\n\t\t\treturn this;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Material.prototype, {\n\n\twrapAround: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t}\n\t},\n\n\toverdraw: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t}\n\t},\n\n\twrapRGB: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapRGB has been removed.' );\n\t\t\treturn new Color();\n\n\t\t}\n\t},\n\n\tshading: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\tthis.flatShading = ( value === FlatShading );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( MeshPhongMaterial.prototype, {\n\n\tmetal: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( ShaderMaterial.prototype, {\n\n\tderivatives: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\treturn this.extensions.derivatives;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\tthis.extensions.derivatives = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.assign( WebGLRenderer.prototype, {\n\n\tclearTarget: function ( renderTarget, color, depth, stencil ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.' );\n\t\tthis.setRenderTarget( renderTarget );\n\t\tthis.clear( color, depth, stencil );\n\n\t},\n\tanimate: function ( callback ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().' );\n\t\tthis.setAnimationLoop( callback );\n\n\t},\n\tgetCurrentRenderTarget: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' );\n\t\treturn this.getRenderTarget();\n\n\t},\n\tgetMaxAnisotropy: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' );\n\t\treturn this.capabilities.getMaxAnisotropy();\n\n\t},\n\tgetPrecision: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' );\n\t\treturn this.capabilities.precision;\n\n\t},\n\tresetGLState: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' );\n\t\treturn this.state.reset();\n\n\t},\n\tsupportsFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_float' );\n\n\t},\n\tsupportsHalfFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_half_float' );\n\n\t},\n\tsupportsStandardDerivatives: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).' );\n\t\treturn this.extensions.get( 'OES_standard_derivatives' );\n\n\t},\n\tsupportsCompressedTextureS3TC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t},\n\tsupportsCompressedTexturePVRTC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t},\n\tsupportsBlendMinMax: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).' );\n\t\treturn this.extensions.get( 'EXT_blend_minmax' );\n\n\t},\n\tsupportsVertexTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' );\n\t\treturn this.capabilities.vertexTextures;\n\n\t},\n\tsupportsInstancedArrays: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).' );\n\t\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\n\n\t},\n\tenableScissorTest: function ( boolean ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\n\t\tthis.setScissorTest( boolean );\n\n\t},\n\tinitMaterial: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\n\n\t},\n\taddPrePlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\n\n\t},\n\taddPostPlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\n\n\t},\n\tupdateShadowMap: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\n\n\t},\n\tsetFaceCulling: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setFaceCulling() has been removed.' );\n\n\t},\n\tallocTextureUnit: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .allocTextureUnit() has been removed.' );\n\n\t},\n\tsetTexture: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture() has been removed.' );\n\n\t},\n\tsetTexture2D: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture2D() has been removed.' );\n\n\t},\n\tsetTextureCube: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTextureCube() has been removed.' );\n\n\t},\n\tgetActiveMipMapLevel: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel().' );\n\t\treturn this.getActiveMipmapLevel();\n\n\t}\n\n} );\n\nObject.defineProperties( WebGLRenderer.prototype, {\n\n\tshadowMapEnabled: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.enabled;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' );\n\t\t\tthis.shadowMap.enabled = value;\n\n\t\t}\n\t},\n\tshadowMapType: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' );\n\t\t\tthis.shadowMap.type = value;\n\n\t\t}\n\t},\n\tshadowMapCullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\tcontext: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .context has been removed. Use .getContext() instead.' );\n\t\t\treturn this.getContext();\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( WebGLShadowMap.prototype, {\n\n\tcullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* cullFace */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderReverseSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderSingleSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( WebGLRenderTargetCube.prototype, {\n\n\tactiveCubeFace: {\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTargetCube: .activeCubeFace has been removed. It is now the second parameter of WebGLRenderer.setRenderTarget().' );\n\n\t\t}\n\t},\n\tactiveMipMapLevel: {\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTargetCube: .activeMipMapLevel has been removed. It is now the third parameter of WebGLRenderer.setRenderTarget().' );\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( WebGLRenderTarget.prototype, {\n\n\twrapS: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\treturn this.texture.wrapS;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\tthis.texture.wrapS = value;\n\n\t\t}\n\t},\n\twrapT: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\treturn this.texture.wrapT;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\tthis.texture.wrapT = value;\n\n\t\t}\n\t},\n\tmagFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\treturn this.texture.magFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\tthis.texture.magFilter = value;\n\n\t\t}\n\t},\n\tminFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\treturn this.texture.minFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\tthis.texture.minFilter = value;\n\n\t\t}\n\t},\n\tanisotropy: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\treturn this.texture.anisotropy;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\tthis.texture.anisotropy = value;\n\n\t\t}\n\t},\n\toffset: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\treturn this.texture.offset;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\tthis.texture.offset = value;\n\n\t\t}\n\t},\n\trepeat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\treturn this.texture.repeat;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\tthis.texture.repeat = value;\n\n\t\t}\n\t},\n\tformat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\treturn this.texture.format;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\tthis.texture.format = value;\n\n\t\t}\n\t},\n\ttype: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\treturn this.texture.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\tthis.texture.type = value;\n\n\t\t}\n\t},\n\tgenerateMipmaps: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\treturn this.texture.generateMipmaps;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\tthis.texture.generateMipmaps = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( WebVRManager.prototype, {\n\n\tstanding: {\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebVRManager: .standing has been removed.' );\n\n\t\t}\n\t},\n\tuserHeight: {\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebVRManager: .userHeight has been removed.' );\n\n\t\t}\n\t}\n\n} );\n\n//\n\nAudio.prototype.load = function ( file ) {\n\n\tconsole.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' );\n\tvar scope = this;\n\tvar audioLoader = new AudioLoader();\n\taudioLoader.load( file, function ( buffer ) {\n\n\t\tscope.setBuffer( buffer );\n\n\t} );\n\treturn this;\n\n};\n\nAudioAnalyser.prototype.getData = function () {\n\n\tconsole.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' );\n\treturn this.getFrequencyData();\n\n};\n\n//\n\nCubeCamera.prototype.updateCubeMap = function ( renderer, scene ) {\n\n\tconsole.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' );\n\treturn this.update( renderer, scene );\n\n};\n\n//\n\nvar GeometryUtils = {\n\n\tmerge: function ( geometry1, geometry2, materialIndexOffset ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' );\n\t\tvar matrix;\n\n\t\tif ( geometry2.isMesh ) {\n\n\t\t\tgeometry2.matrixAutoUpdate && geometry2.updateMatrix();\n\n\t\t\tmatrix = geometry2.matrix;\n\t\t\tgeometry2 = geometry2.geometry;\n\n\t\t}\n\n\t\tgeometry1.merge( geometry2, matrix, materialIndexOffset );\n\n\t},\n\n\tcenter: function ( geometry ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' );\n\t\treturn geometry.center();\n\n\t}\n\n};\n\nImageUtils.crossOrigin = undefined;\n\nImageUtils.loadTexture = function ( url, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' );\n\n\tvar loader = new TextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tvar texture = loader.load( url, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadTextureCube = function ( urls, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' );\n\n\tvar loader = new CubeTextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tvar texture = loader.load( urls, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadCompressedTexture = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\nImageUtils.loadCompressedTextureCube = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\n//\n\nfunction CanvasRenderer() {\n\n\tconsole.error( 'THREE.CanvasRenderer has been removed' );\n\n}\n\n//\n\nfunction JSONLoader() {\n\n\tconsole.error( 'THREE.JSONLoader has been removed.' );\n\n}\n\n//\n\nvar SceneUtils = {\n\n\tcreateMultiMaterialObject: function ( /* geometry, materials */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' );\n\n\t},\n\n\tdetach: function ( /* child, parent, scene */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' );\n\n\t},\n\n\tattach: function ( /* child, scene, parent */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' );\n\n\t}\n\n};\n\n//\n\nfunction LensFlare() {\n\n\tconsole.error( 'THREE.LensFlare has been moved to /examples/js/objects/Lensflare.js' );\n\n}\n\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveBlending, AlphaFormat, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AmbientLightProbe, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, AxisHelper, BackSide, BasicDepthPacking, BasicShadowMap, BinaryTextureLoader, Bone, BooleanKeyframeTrack, BoundingBoxHelper, Box2, Box3, Box3Helper, BoxBufferGeometry, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasRenderer, CanvasTexture, CatmullRomCurve3, CineonToneMapping, CircleBufferGeometry, CircleGeometry, ClampToEdgeWrapping, Clock, ClosedSplineCurve3, Color, ColorKeyframeTrack, CompressedTexture, CompressedTextureLoader, ConeBufferGeometry, ConeGeometry, CubeCamera, BoxGeometry as CubeGeometry, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubeUVRefractionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CylinderBufferGeometry, CylinderGeometry, Cylindrical, DataTexture, DataTexture2DArray, DataTexture3D, DataTextureLoader, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DirectionalLight, DirectionalLightHelper, DirectionalLightShadow, DiscreteInterpolant, DodecahedronBufferGeometry, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicBufferAttribute, EdgesGeometry, EdgesHelper, EllipseCurve, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeBufferGeometry, ExtrudeGeometry, Face3, Face4, FaceColors, FaceNormalsHelper, FileLoader, FlatShading, Float32Attribute, Float32BufferAttribute, Float64Attribute, Float64BufferAttribute, FloatType, Fog, FogExp2, Font, FontLoader, FrontFaceDirectionCCW, FrontFaceDirectionCW, FrontSide, Frustum, GammaEncoding, Geometry, GeometryUtils, GreaterDepth, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, HemisphereLightProbe, IcosahedronBufferGeometry, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, ImmediateRenderObject, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, Int16Attribute, Int16BufferAttribute, Int32Attribute, Int32BufferAttribute, Int8Attribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, JSONLoader, KeepStencilOp, KeyframeTrack, LOD, LatheBufferGeometry, LatheGeometry, Layers, LensFlare, LessDepth, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, LightProbeHelper, LightShadow, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LinePieces, LineSegments, LineStrip, LinearEncoding, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearToneMapping, Loader, LoaderUtils, LoadingManager, LogLuvEncoding, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, _Math as Math, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshFaceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiMaterial, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeverDepth, NeverStencilFunc, NoBlending, NoColors, NoToneMapping, NormalBlending, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronBufferGeometry, OctahedronGeometry, OneFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, ParametricBufferGeometry, ParametricGeometry, Particle, ParticleBasicMaterial, ParticleSystem, ParticleSystemMaterial, Path, PerspectiveCamera, Plane, PlaneBufferGeometry, PlaneGeometry, PlaneHelper, PointCloud, PointCloudMaterial, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronBufferGeometry, PolyhedronGeometry, PositionalAudio, PositionalAudioHelper, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, REVISION, RGBADepthPacking, RGBAFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBDEncoding, RGBEEncoding, RGBEFormat, RGBFormat, RGBM16Encoding, RGBM7Encoding, RGB_ETC1_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RectAreaLightHelper, RedFormat, ReinhardToneMapping, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingBufferGeometry, RingGeometry, Scene, SceneUtils, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeBufferGeometry, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, SmoothShading, Sphere, SphereBufferGeometry, SphereGeometry, Spherical, SphericalHarmonics3, SphericalReflectionMapping, Spline, SplineCurve, SplineCurve3, SpotLight, SpotLightHelper, SpotLightShadow, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StereoCamera, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronBufferGeometry, TetrahedronGeometry, TextBufferGeometry, TextGeometry, Texture, TextureLoader, TorusBufferGeometry, TorusGeometry, TorusKnotBufferGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeBufferGeometry, TubeGeometry, UVMapping, Uint16Attribute, Uint16BufferAttribute, Uint32Attribute, Uint32BufferAttribute, Uint8Attribute, Uint8BufferAttribute, Uint8ClampedAttribute, Uint8ClampedBufferAttribute, Uncharted2ToneMapping, Uniform, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShort565Type, UnsignedShortType, Vector2, Vector3, Vector4, VectorKeyframeTrack, Vertex, VertexColors, VertexNormalsHelper, VideoTexture, WebGLMultisampleRenderTarget, WebGLRenderTarget, WebGLRenderTargetCube, WebGLRenderer, WebGLUtils, WireframeGeometry, WireframeHelper, WrapAroundEnding, XHRLoader, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, sRGBEncoding };\n","/**\n * postprocessing v6.8.5 build Thu Oct 17 2019\n * https://github.com/vanruesc/postprocessing\n * Copyright 2019 Raoul van Rüschen, Zlib\n */\nimport { ShaderMaterial, Uniform, Vector2, PerspectiveCamera, Scene, OrthographicCamera, Mesh, BufferGeometry, BufferAttribute, WebGLRenderTarget, LinearFilter, RGBFormat, Color, MeshDepthMaterial, RGBADepthPacking, MeshNormalMaterial, DepthTexture, DepthStencilFormat, UnsignedInt248Type, RGBAFormat, RepeatWrapping, NearestFilter, DataTexture, FloatType, Vector3, Matrix4, Vector4, MeshBasicMaterial, Texture, LinearMipmapLinearFilter, LinearMipMapLinearFilter, Box2 } from 'three';\n\n/**\r\n * The Disposable contract.\r\n *\r\n * Implemented by objects that can free internal resources.\r\n *\r\n * @interface\r\n */\r\n\r\nclass Disposable {\r\n\r\n\t/**\r\n\t * Frees internal resources.\r\n\t */\r\n\r\n\tdispose() {}\r\n\r\n}\n\n/**\r\n * The initializable contract.\r\n *\r\n * Implemented by objects that can be initialized.\r\n *\r\n * @interface\r\n */\r\n\r\nclass Initializable {\r\n\r\n\t/**\r\n\t * Performs initialization tasks.\r\n\t *\r\n\t * @param {WebGLRenderer} renderer - A renderer.\r\n\t * @param {Boolean} alpha - Whether the renderer uses the alpha channel.\r\n\t */\r\n\r\n\tinitialize(renderer, alpha) {}\r\n\r\n}\n\nvar fragmentShader = \"uniform sampler2D previousLuminanceBuffer;uniform sampler2D currentLuminanceBuffer;uniform float minLuminance;uniform float deltaTime;uniform float tau;varying vec2 vUv;void main(){float previousLuminance=texture2D(previousLuminanceBuffer,vUv,MIP_LEVEL_1X1).r;float currentLuminance=texture2D(currentLuminanceBuffer,vUv,MIP_LEVEL_1X1).r;previousLuminance=max(minLuminance,previousLuminance);currentLuminance=max(minLuminance,currentLuminance);float adaptedLum=previousLuminance+(currentLuminance-previousLuminance)*(1.0-exp(-deltaTime*tau));gl_FragColor.r=adaptedLum;}\";\n\nvar vertexShader = \"varying vec2 vUv;void main(){vUv=position.xy*0.5+0.5;gl_Position=vec4(position.xy,1.0,1.0);}\";\n\n/**\r\n * An adaptive luminance shader material.\r\n */\r\n\r\nclass AdaptiveLuminanceMaterial extends ShaderMaterial {\r\n\r\n\t/**\r\n\t * Constructs a new adaptive luminance material.\r\n\t */\r\n\r\n\tconstructor() {\r\n\r\n\t\tsuper({\r\n\r\n\t\t\ttype: \"AdaptiveLuminanceMaterial\",\r\n\r\n\t\t\tdefines: {\r\n\r\n\t\t\t\tMIP_LEVEL_1X1: \"0.0\"\r\n\r\n\t\t\t},\r\n\r\n\t\t\tuniforms: {\r\n\r\n\t\t\t\tpreviousLuminanceBuffer: new Uniform(null),\r\n\t\t\t\tcurrentLuminanceBuffer: new Uniform(null),\r\n\t\t\t\tminLuminance: new Uniform(0.01),\r\n\t\t\t\tdeltaTime: new Uniform(0.0),\r\n\t\t\t\ttau: new Uniform(1.0)\r\n\r\n\t\t\t},\r\n\r\n\t\t\tfragmentShader,\r\n\t\t\tvertexShader,\r\n\r\n\t\t\tdepthWrite: false,\r\n\t\t\tdepthTest: false\r\n\r\n\t\t});\r\n\r\n\t}\r\n\r\n}\n\nvar fragmentShader$1 = \"uniform sampler2D inputBuffer;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;void main(){const vec2 threshold=vec2(EDGE_THRESHOLD);vec4 delta;vec3 c=texture2D(inputBuffer,vUv).rgb;vec3 cLeft=texture2D(inputBuffer,vUv0).rgb;vec3 t=abs(c-cLeft);delta.x=max(max(t.r,t.g),t.b);vec3 cTop=texture2D(inputBuffer,vUv1).rgb;t=abs(c-cTop);delta.y=max(max(t.r,t.g),t.b);vec2 edges=step(threshold,delta.xy);if(dot(edges,vec2(1.0))==0.0){discard;}vec3 cRight=texture2D(inputBuffer,vUv2).rgb;t=abs(c-cRight);delta.z=max(max(t.r,t.g),t.b);vec3 cBottom=texture2D(inputBuffer,vUv3).rgb;t=abs(c-cBottom);delta.w=max(max(t.r,t.g),t.b);float maxDelta=max(max(max(delta.x,delta.y),delta.z),delta.w);vec3 cLeftLeft=texture2D(inputBuffer,vUv4).rgb;t=abs(c-cLeftLeft);delta.z=max(max(t.r,t.g),t.b);vec3 cTopTop=texture2D(inputBuffer,vUv5).rgb;t=abs(c-cTopTop);delta.w=max(max(t.r,t.g),t.b);maxDelta=max(max(maxDelta,delta.z),delta.w);edges*=step(maxDelta,LOCAL_CONTRAST_ADAPTATION_FACTOR*delta.xy);gl_FragColor=vec4(edges,0.0,1.0);}\";\n\nvar vertexShader$1 = \"uniform vec2 texelSize;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;void main(){vUv=position.xy*0.5+0.5;vUv0=vUv+texelSize*vec2(-1.0,0.0);vUv1=vUv+texelSize*vec2(0.0,-1.0);vUv2=vUv+texelSize*vec2(1.0,0.0);vUv3=vUv+texelSize*vec2(0.0,1.0);vUv4=vUv+texelSize*vec2(-2.0,0.0);vUv5=vUv+texelSize*vec2(0.0,-2.0);gl_Position=vec4(position.xy,1.0,1.0);}\";\n\n/**\r\n * A material that detects edges in a color texture.\r\n *\r\n * Mainly used for Subpixel Morphological Antialiasing.\r\n */\r\n\r\nclass ColorEdgesMaterial extends ShaderMaterial {\r\n\r\n\t/**\r\n\t * Constructs a new color edges material.\r\n\t *\r\n\t * @param {Vector2} [texelSize] - The absolute screen texel size.\r\n\t */\r\n\r\n\tconstructor(texelSize = new Vector2()) {\r\n\r\n\t\tsuper({\r\n\r\n\t\t\ttype: \"ColorEdgesMaterial\",\r\n\r\n\t\t\tdefines: {\r\n\r\n\t\t\t\tLOCAL_CONTRAST_ADAPTATION_FACTOR: \"2.0\",\r\n\t\t\t\tEDGE_THRESHOLD: \"0.1\"\r\n\r\n\t\t\t},\r\n\r\n\t\t\tuniforms: {\r\n\r\n\t\t\t\tinputBuffer: new Uniform(null),\r\n\t\t\t\ttexelSize: new Uniform(texelSize)\r\n\r\n\t\t\t},\r\n\r\n\t\t\tfragmentShader: fragmentShader$1,\r\n\t\t\tvertexShader: vertexShader$1,\r\n\r\n\t\t\tdepthWrite: false,\r\n\t\t\tdepthTest: false\r\n\r\n\t\t});\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the local contrast adaptation factor.\r\n\t *\r\n\t * If there is a neighbor edge that has _factor_ times bigger contrast than\r\n\t * the current edge, the edge will be discarded.\r\n\t *\r\n\t * This allows to eliminate spurious crossing edges and is based on the fact\r\n\t * that if there is too much contrast in a direction, the perceptual contrast\r\n\t * in the other neighbors will be hidden.\r\n\t *\r\n\t * @param {Number} factor - The local contrast adaptation factor. Default is 2.0.\r\n\t */\r\n\r\n\tsetLocalContrastAdaptationFactor(factor) {\r\n\r\n\t\tthis.defines.LOCAL_CONTRAST_ADAPTATION_FACTOR = factor.toFixed(\"2\");\r\n\t\tthis.needsUpdate = true;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the edge detection sensitivity.\r\n\t *\r\n\t * A lower value results in more edges being detected at the expense of\r\n\t * performance.\r\n\t *\r\n\t * 0.1 is a reasonable value, and allows to catch most visible edges.\r\n\t * 0.05 is a rather overkill value, that allows to catch 'em all.\r\n\t *\r\n\t * If temporal supersampling is used, 0.2 could be a reasonable value, as low\r\n\t * contrast edges are properly filtered by just 2x.\r\n\t *\r\n\t * @param {Number} threshold - The edge detection sensitivity. Range: [0.05, 0.5].\r\n\t */\r\n\r\n\tsetEdgeDetectionThreshold(threshold) {\r\n\r\n\t\tthreshold = Math.min(Math.max(threshold, 0.05), 0.5);\r\n\r\n\t\tthis.defines.EDGE_THRESHOLD = threshold.toFixed(\"2\");\r\n\t\tthis.needsUpdate = true;\r\n\r\n\t}\r\n\r\n}\n\nvar fragmentShader$2 = \"#include \\n#include \\nuniform sampler2D inputBuffer;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec4 sum=texture2D(inputBuffer,vUv0);sum+=texture2D(inputBuffer,vUv1);sum+=texture2D(inputBuffer,vUv2);sum+=texture2D(inputBuffer,vUv3);gl_FragColor=sum*0.25;\\n#include \\n}\";\n\nvar vertexShader$2 = \"uniform vec2 texelSize;uniform vec2 halfTexelSize;uniform float kernel;uniform float scale;/*Packing multiple texture coordinates into one varying and using a swizzle toextract them in the fragment shader still causes a dependent texture read.*/varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 uv=position.xy*0.5+0.5;vec2 dUv=(texelSize*vec2(kernel)+halfTexelSize)*scale;vUv0=vec2(uv.x-dUv.x,uv.y+dUv.y);vUv1=vec2(uv.x+dUv.x,uv.y+dUv.y);vUv2=vec2(uv.x+dUv.x,uv.y-dUv.y);vUv3=vec2(uv.x-dUv.x,uv.y-dUv.y);gl_Position=vec4(position.xy,1.0,1.0);}\";\n\n/**\r\n * An optimised convolution shader material.\r\n *\r\n * This material supports dithering.\r\n *\r\n * Based on the GDC2003 Presentation by Masaki Kawase, Bunkasha Games:\r\n * Frame Buffer Postprocessing Effects in DOUBLE-S.T.E.A.L (Wreckless)\r\n * and an article by Filip Strugar, Intel:\r\n * An investigation of fast real-time GPU-based image blur algorithms\r\n *\r\n * Further modified according to Apple's\r\n * [Best Practices for Shaders](https://goo.gl/lmRoM5).\r\n */\r\n\r\nclass ConvolutionMaterial extends ShaderMaterial {\r\n\r\n\t/**\r\n\t * Constructs a new convolution material.\r\n\t *\r\n\t * @param {Vector2} [texelSize] - The absolute screen texel size.\r\n\t */\r\n\r\n\tconstructor(texelSize = new Vector2()) {\r\n\r\n\t\tsuper({\r\n\r\n\t\t\ttype: \"ConvolutionMaterial\",\r\n\r\n\t\t\tuniforms: {\r\n\r\n\t\t\t\tinputBuffer: new Uniform(null),\r\n\t\t\t\ttexelSize: new Uniform(new Vector2()),\r\n\t\t\t\thalfTexelSize: new Uniform(new Vector2()),\r\n\t\t\t\tkernel: new Uniform(0.0),\r\n\t\t\t\tscale: new Uniform(1.0)\r\n\r\n\t\t\t},\r\n\r\n\t\t\tfragmentShader: fragmentShader$2,\r\n\t\t\tvertexShader: vertexShader$2,\r\n\r\n\t\t\tdepthWrite: false,\r\n\t\t\tdepthTest: false\r\n\r\n\t\t});\r\n\r\n\t\tthis.setTexelSize(texelSize.x, texelSize.y);\r\n\r\n\t\t/**\r\n\t\t * The current kernel size.\r\n\t\t *\r\n\t\t * @type {KernelSize}\r\n\t\t */\r\n\r\n\t\tthis.kernelSize = KernelSize.LARGE;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the kernel.\r\n\t *\r\n\t * @return {Float32Array} The kernel.\r\n\t */\r\n\r\n\tgetKernel() {\r\n\r\n\t\treturn kernelPresets[this.kernelSize];\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the texel size.\r\n\t *\r\n\t * @param {Number} x - The texel width.\r\n\t * @param {Number} y - The texel height.\r\n\t */\r\n\r\n\tsetTexelSize(x, y) {\r\n\r\n\t\tthis.uniforms.texelSize.value.set(x, y);\r\n\t\tthis.uniforms.halfTexelSize.value.set(x, y).multiplyScalar(0.5);\r\n\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * The Kawase blur kernel presets.\r\n *\r\n * @type {Float32Array[]}\r\n * @private\r\n */\r\n\r\nconst kernelPresets = [\r\n\tnew Float32Array([0.0, 0.0]),\r\n\tnew Float32Array([0.0, 1.0, 1.0]),\r\n\tnew Float32Array([0.0, 1.0, 1.0, 2.0]),\r\n\tnew Float32Array([0.0, 1.0, 2.0, 2.0, 3.0]),\r\n\tnew Float32Array([0.0, 1.0, 2.0, 3.0, 4.0, 4.0, 5.0]),\r\n\tnew Float32Array([0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 7.0, 8.0, 9.0, 10.0])\r\n];\r\n\r\n/**\r\n * A kernel size enumeration.\r\n *\r\n * @type {Object}\r\n * @property {Number} VERY_SMALL - A very small kernel that matches a 7x7 Gauss blur kernel.\r\n * @property {Number} SMALL - A small kernel that matches a 15x15 Gauss blur kernel.\r\n * @property {Number} MEDIUM - A medium sized kernel that matches a 23x23 Gauss blur kernel.\r\n * @property {Number} LARGE - A large kernel that matches a 35x35 Gauss blur kernel.\r\n * @property {Number} VERY_LARGE - A very large kernel that matches a 63x63 Gauss blur kernel.\r\n * @property {Number} HUGE - A huge kernel that matches a 127x127 Gauss blur kernel.\r\n */\r\n\r\nconst KernelSize = {\r\n\r\n\tVERY_SMALL: 0,\r\n\tSMALL: 1,\r\n\tMEDIUM: 2,\r\n\tLARGE: 3,\r\n\tVERY_LARGE: 4,\r\n\tHUGE: 5\r\n\r\n};\n\nvar fragmentShader$3 = \"uniform sampler2D inputBuffer;uniform float opacity;varying vec2 vUv;void main(){vec4 texel=texture2D(inputBuffer,vUv);gl_FragColor=opacity*texel;}\";\n\n/**\r\n * A simple copy shader material.\r\n */\r\n\r\nclass CopyMaterial extends ShaderMaterial {\r\n\r\n\t/**\r\n\t * Constructs a new copy material.\r\n\t */\r\n\r\n\tconstructor() {\r\n\r\n\t\tsuper({\r\n\r\n\t\t\ttype: \"CopyMaterial\",\r\n\r\n\t\t\tuniforms: {\r\n\r\n\t\t\t\tinputBuffer: new Uniform(null),\r\n\t\t\t\topacity: new Uniform(1.0)\r\n\r\n\t\t\t},\r\n\r\n\t\t\tfragmentShader: fragmentShader$3,\r\n\t\t\tvertexShader,\r\n\r\n\t\t\tdepthWrite: false,\r\n\t\t\tdepthTest: false\r\n\r\n\t\t});\r\n\r\n\t}\r\n\r\n}\n\nvar fragmentShader$4 = \"#include \\n#include \\nuniform sampler2D depthBuffer;uniform float cameraNear;uniform float cameraFar;varying float vViewZ;varying vec4 vProjTexCoord;void main(){\\n#include \\nvec2 projTexCoord=(vProjTexCoord.xy/vProjTexCoord.w)*0.5+0.5;projTexCoord=clamp(projTexCoord,0.002,0.998);float fragCoordZ=unpackRGBAToDepth(texture2D(depthBuffer,projTexCoord));\\n#ifdef PERSPECTIVE_CAMERA\\nfloat viewZ=perspectiveDepthToViewZ(fragCoordZ,cameraNear,cameraFar);\\n#else\\nfloat viewZ=orthographicDepthToViewZ(fragCoordZ,cameraNear,cameraFar);\\n#endif\\nfloat depthTest=(-vViewZ>-viewZ)? 1.0 : 0.0;gl_FragColor.rg=vec2(0.0,depthTest);}\";\n\nvar vertexShader$3 = \"#include \\n#include \\n#include \\n#include \\nvarying float vViewZ;varying vec4 vProjTexCoord;void main(){\\n#include \\n#include \\n#include \\n#include \\n#include \\nvViewZ=mvPosition.z;vProjTexCoord=gl_Position;\\n#include \\n}\";\n\n/**\r\n * A depth comparison shader material.\r\n */\r\n\r\nclass DepthComparisonMaterial extends ShaderMaterial {\r\n\r\n\t/**\r\n\t * Constructs a new depth comparison material.\r\n\t *\r\n\t * @param {Texture} [depthTexture=null] - A depth texture.\r\n\t * @param {PerspectiveCamera} [camera] - A camera.\r\n\t */\r\n\r\n\tconstructor(depthTexture = null, camera) {\r\n\r\n\t\tsuper({\r\n\r\n\t\t\ttype: \"DepthComparisonMaterial\",\r\n\r\n\t\t\tuniforms: {\r\n\r\n\t\t\t\tdepthBuffer: new Uniform(depthTexture),\r\n\t\t\t\tcameraNear: new Uniform(0.3),\r\n\t\t\t\tcameraFar: new Uniform(1000)\r\n\r\n\t\t\t},\r\n\r\n\t\t\tfragmentShader: fragmentShader$4,\r\n\t\t\tvertexShader: vertexShader$3,\r\n\r\n\t\t\tdepthWrite: false,\r\n\t\t\tdepthTest: false,\r\n\r\n\t\t\tmorphTargets: true,\r\n\t\t\tskinning: true\r\n\r\n\t\t});\r\n\r\n\t\tthis.adoptCameraSettings(camera);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Adopts the settings of the given camera.\r\n\t *\r\n\t * @param {Camera} [camera=null] - A camera.\r\n\t */\r\n\r\n\tadoptCameraSettings(camera = null) {\r\n\r\n\t\tif(camera !== null) {\r\n\r\n\t\t\tthis.uniforms.cameraNear.value = camera.near;\r\n\t\t\tthis.uniforms.cameraFar.value = camera.far;\r\n\r\n\t\t\tif(camera instanceof PerspectiveCamera) {\r\n\r\n\t\t\t\tthis.defines.PERSPECTIVE_CAMERA = \"1\";\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tdelete this.defines.PERSPECTIVE_CAMERA;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\n\nvar fragmentShader$5 = \"#include \\n#include \\nuniform sampler2D depthBuffer0;uniform sampler2D depthBuffer1;uniform sampler2D inputBuffer;varying vec2 vUv;void main(){\\n#if DEPTH_PACKING_0 == 3201\\nfloat d0=unpackRGBAToDepth(texture2D(depthBuffer0,vUv));\\n#else\\nfloat d0=texture2D(depthBuffer0,vUv).r;\\n#endif\\n#if DEPTH_PACKING_1 == 3201\\nfloat d1=unpackRGBAToDepth(texture2D(depthBuffer1,vUv));\\n#else\\nfloat d1=texture2D(depthBuffer1,vUv).r;\\n#endif\\nif(d0\\n#include \\n#include \\nuniform sampler2D inputBuffer;uniform sampler2D depthBuffer;uniform vec2 resolution;uniform vec2 texelSize;uniform float cameraNear;uniform float cameraFar;uniform float aspect;uniform float time;varying vec2 vUv;float readDepth(const in vec2 uv){\\n#if DEPTH_PACKING == 3201\\nreturn unpackRGBAToDepth(texture2D(depthBuffer,uv));\\n#else\\nreturn texture2D(depthBuffer,uv).r;\\n#endif\\n}FRAGMENT_HEADvoid main(){FRAGMENT_MAIN_UVvec4 color0=texture2D(inputBuffer,UV);vec4 color1=vec4(0.0);FRAGMENT_MAIN_IMAGEgl_FragColor=color0;\\n#include \\n}\";\n\nvar vertexTemplate = \"uniform vec2 resolution;uniform vec2 texelSize;uniform float cameraNear;uniform float cameraFar;uniform float aspect;uniform float time;varying vec2 vUv;VERTEX_HEADvoid main(){vUv=position.xy*0.5+0.5;VERTEX_MAIN_SUPPORTgl_Position=vec4(position.xy,1.0,1.0);}\";\n\n/**\r\n * An effect material for compound shaders.\r\n *\r\n * This material supports dithering.\r\n *\r\n * @implements {Resizable}\r\n */\r\n\r\nclass EffectMaterial extends ShaderMaterial {\r\n\r\n\t/**\r\n\t * Constructs a new effect material.\r\n\t *\r\n\t * @param {Map} [shaderParts=null] - A collection of shader snippets. See {@link Section}.\r\n\t * @param {Map} [defines=null] - A collection of preprocessor macro definitions.\r\n\t * @param {Map} [uniforms=null] - A collection of uniforms.\r\n\t * @param {Camera} [camera=null] - A camera.\r\n\t * @param {Boolean} [dithering=false] - Whether dithering should be enabled.\r\n\t */\r\n\r\n\tconstructor(shaderParts = null, defines = null, uniforms = null, camera = null, dithering = false) {\r\n\r\n\t\tsuper({\r\n\r\n\t\t\ttype: \"EffectMaterial\",\r\n\r\n\t\t\tdefines: {\r\n\r\n\t\t\t\tDEPTH_PACKING: \"0\"\r\n\r\n\t\t\t},\r\n\r\n\t\t\tuniforms: {\r\n\r\n\t\t\t\tinputBuffer: new Uniform(null),\r\n\t\t\t\tdepthBuffer: new Uniform(null),\r\n\r\n\t\t\t\tresolution: new Uniform(new Vector2()),\r\n\t\t\t\ttexelSize: new Uniform(new Vector2()),\r\n\r\n\t\t\t\tcameraNear: new Uniform(0.3),\r\n\t\t\t\tcameraFar: new Uniform(1000.0),\r\n\t\t\t\taspect: new Uniform(1.0),\r\n\t\t\t\ttime: new Uniform(0.0)\r\n\r\n\t\t\t},\r\n\r\n\t\t\tdepthWrite: false,\r\n\t\t\tdepthTest: false,\r\n\t\t\tdithering\r\n\r\n\t\t});\r\n\r\n\t\tif(shaderParts !== null) {\r\n\r\n\t\t\tthis.setShaderParts(shaderParts);\r\n\r\n\t\t}\r\n\r\n\t\tif(defines !== null) {\r\n\r\n\t\t\tthis.setDefines(defines);\r\n\r\n\t\t}\r\n\r\n\t\tif(uniforms !== null) {\r\n\r\n\t\t\tthis.setUniforms(uniforms);\r\n\r\n\t\t}\r\n\r\n\t\tthis.adoptCameraSettings(camera);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * The current depth packing.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tget depthPacking() {\r\n\r\n\t\treturn Number.parseInt(this.defines.DEPTH_PACKING);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the depth packing.\r\n\t *\r\n\t * Use `BasicDepthPacking` or `RGBADepthPacking` if your depth texture\r\n\t * contains packed depth.\r\n\t *\r\n\t * You'll need to call {@link EffectPass#recompile} after changing this value.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tset depthPacking(value) {\r\n\r\n\t\tthis.defines.DEPTH_PACKING = value.toFixed(0);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the shader parts.\r\n\t *\r\n\t * @param {Map} shaderParts - A collection of shader snippets. See {@link Section}.\r\n\t * @return {EffectMaterial} This material.\r\n\t */\r\n\r\n\tsetShaderParts(shaderParts) {\r\n\r\n\t\tthis.fragmentShader = fragmentTemplate.replace(Section.FRAGMENT_HEAD, shaderParts.get(Section.FRAGMENT_HEAD))\r\n\t\t\t.replace(Section.FRAGMENT_MAIN_UV, shaderParts.get(Section.FRAGMENT_MAIN_UV))\r\n\t\t\t.replace(Section.FRAGMENT_MAIN_IMAGE, shaderParts.get(Section.FRAGMENT_MAIN_IMAGE));\r\n\r\n\t\tthis.vertexShader = vertexTemplate.replace(Section.VERTEX_HEAD, shaderParts.get(Section.VERTEX_HEAD))\r\n\t\t\t.replace(Section.VERTEX_MAIN_SUPPORT, shaderParts.get(Section.VERTEX_MAIN_SUPPORT));\r\n\r\n\t\tthis.needsUpdate = true;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the shader macros.\r\n\t *\r\n\t * @param {Map} defines - A collection of preprocessor macro definitions.\r\n\t * @return {EffectMaterial} This material.\r\n\t */\r\n\r\n\tsetDefines(defines) {\r\n\r\n\t\tfor(const entry of defines.entries()) {\r\n\r\n\t\t\tthis.defines[entry[0]] = entry[1];\r\n\r\n\t\t}\r\n\r\n\t\tthis.needsUpdate = true;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the shader uniforms.\r\n\t *\r\n\t * @param {Map} uniforms - A collection of uniforms.\r\n\t * @return {EffectMaterial} This material.\r\n\t */\r\n\r\n\tsetUniforms(uniforms) {\r\n\r\n\t\tfor(const entry of uniforms.entries()) {\r\n\r\n\t\t\tthis.uniforms[entry[0]] = entry[1];\r\n\r\n\t\t}\r\n\r\n\t\tthis.needsUpdate = true;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Adopts the settings of the given camera.\r\n\t *\r\n\t * @param {Camera} [camera=null] - A camera.\r\n\t */\r\n\r\n\tadoptCameraSettings(camera = null) {\r\n\r\n\t\tif(camera !== null) {\r\n\r\n\t\t\tthis.uniforms.cameraNear.value = camera.near;\r\n\t\t\tthis.uniforms.cameraFar.value = camera.far;\r\n\r\n\t\t\tif(camera instanceof PerspectiveCamera) {\r\n\r\n\t\t\t\tthis.defines.PERSPECTIVE_CAMERA = \"1\";\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tdelete this.defines.PERSPECTIVE_CAMERA;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tthis.needsUpdate = true;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the resolution.\r\n\t *\r\n\t * @param {Number} width - The width.\r\n\t * @param {Number} height - The height.\r\n\t */\r\n\r\n\tsetSize(width, height) {\r\n\r\n\t\twidth = Math.max(width, 1.0);\r\n\t\theight = Math.max(height, 1.0);\r\n\r\n\t\tthis.uniforms.resolution.value.set(width, height);\r\n\t\tthis.uniforms.texelSize.value.set(1.0 / width, 1.0 / height);\r\n\t\tthis.uniforms.aspect.value = width / height;\r\n\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * An enumeration of shader code placeholders used by the {@link EffectPass}.\r\n *\r\n * @type {Object}\r\n * @property {String} FRAGMENT_HEAD - A placeholder for function and variable declarations inside the fragment shader.\r\n * @property {String} FRAGMENT_MAIN_UV - A placeholder for UV transformations inside the fragment shader.\r\n * @property {String} FRAGMENT_MAIN_IMAGE - A placeholder for color calculations inside the fragment shader.\r\n * @property {String} VERTEX_HEAD - A placeholder for function and variable declarations inside the vertex shader.\r\n * @property {String} VERTEX_MAIN_SUPPORT - A placeholder for supporting calculations inside the vertex shader.\r\n */\r\n\r\nconst Section = {\r\n\r\n\tFRAGMENT_HEAD: \"FRAGMENT_HEAD\",\r\n\tFRAGMENT_MAIN_UV: \"FRAGMENT_MAIN_UV\",\r\n\tFRAGMENT_MAIN_IMAGE: \"FRAGMENT_MAIN_IMAGE\",\r\n\tVERTEX_HEAD: \"VERTEX_HEAD\",\r\n\tVERTEX_MAIN_SUPPORT: \"VERTEX_MAIN_SUPPORT\"\r\n\r\n};\n\nvar fragmentShader$6 = \"#include \\n#include \\nuniform sampler2D inputBuffer;uniform vec2 lightPosition;uniform float exposure;uniform float decay;uniform float density;uniform float weight;uniform float clampMax;varying vec2 vUv;void main(){vec2 coord=vUv;vec2 delta=coord-lightPosition;delta*=1.0/SAMPLES_FLOAT*density;float illuminationDecay=1.0;vec4 texel;vec4 color=vec4(0.0);/*Estimate the probability of occlusion at each pixel by summing samplesalong a ray to the light position.*/for(int i=0;i\\n}\";\n\n/**\r\n * A crepuscular rays shader material.\r\n *\r\n * This material supports dithering.\r\n *\r\n * References:\r\n *\r\n * Thibaut Despoulain, 2012:\r\n * [(WebGL) Volumetric Light Approximation in Three.js](\r\n * http://bkcore.com/blog/3d/webgl-three-js-volumetric-light-godrays.html)\r\n *\r\n * Nvidia, GPU Gems 3, 2008:\r\n * [Chapter 13. Volumetric Light Scattering as a Post-Process](\r\n * https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch13.html)\r\n */\r\n\r\nclass GodRaysMaterial extends ShaderMaterial {\r\n\r\n\t/**\r\n\t * Constructs a new god rays material.\r\n\t *\r\n\t * @param {Vector2} lightPosition - The light position in screen space.\r\n\t */\r\n\r\n\tconstructor(lightPosition) {\r\n\r\n\t\tsuper({\r\n\r\n\t\t\ttype: \"GodRaysMaterial\",\r\n\r\n\t\t\tdefines: {\r\n\r\n\t\t\t\tSAMPLES_INT: \"60\",\r\n\t\t\t\tSAMPLES_FLOAT: \"60.0\"\r\n\r\n\t\t\t},\r\n\r\n\t\t\tuniforms: {\r\n\r\n\t\t\t\tinputBuffer: new Uniform(null),\r\n\t\t\t\tlightPosition: new Uniform(lightPosition),\r\n\r\n\t\t\t\tdensity: new Uniform(1.0),\r\n\t\t\t\tdecay: new Uniform(1.0),\r\n\t\t\t\tweight: new Uniform(1.0),\r\n\t\t\t\texposure: new Uniform(1.0),\r\n\t\t\t\tclampMax: new Uniform(1.0)\r\n\r\n\t\t\t},\r\n\r\n\t\t\tfragmentShader: fragmentShader$6,\r\n\t\t\tvertexShader,\r\n\r\n\t\t\tdepthWrite: false,\r\n\t\t\tdepthTest: false\r\n\r\n\t\t});\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * The amount of samples per pixel.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tget samples() {\r\n\r\n\t\treturn Number.parseInt(this.defines.SAMPLES_INT);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the amount of samples per pixel.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tset samples(value) {\r\n\r\n\t\tvalue = Math.floor(value);\r\n\r\n\t\tthis.defines.SAMPLES_INT = value.toFixed(0);\r\n\t\tthis.defines.SAMPLES_FLOAT = value.toFixed(1);\r\n\t\tthis.needsUpdate = true;\r\n\r\n\t}\r\n\r\n}\n\nvar fragmentShader$7 = \"#include \\nuniform sampler2D inputBuffer;\\n#ifdef RANGE\\nuniform vec2 range;\\n#elif defined(THRESHOLD)\\nuniform float threshold;uniform float smoothing;\\n#endif\\nvarying vec2 vUv;void main(){vec4 texel=texture2D(inputBuffer,vUv);float l=linearToRelativeLuminance(texel.rgb);\\n#ifdef RANGE\\nfloat low=step(range.x,l);float high=step(l,range.y);l*=low*high;\\n#elif defined(THRESHOLD)\\nl=smoothstep(threshold,threshold+smoothing,l);\\n#endif\\n#ifdef COLOR\\ngl_FragColor=vec4(texel.rgb*l,l);\\n#else\\ngl_FragColor=vec4(l);\\n#endif\\n}\";\n\n/**\r\n * A luminance shader material.\r\n *\r\n * This shader produces a greyscale luminance map that describes the absolute\r\n * amount of light emitted by a scene. It can also be configured to output\r\n * colours that are scaled with their respective luminance value. Additionally,\r\n * a range may be provided to mask out undesired texels.\r\n *\r\n * The alpha channel always contains the luminance value.\r\n *\r\n * On luminance coefficients:\r\n * http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html#RTFToC9\r\n *\r\n * Coefficients for different colour spaces:\r\n * https://hsto.org/getpro/habr/post_images/2ab/69d/084/2ab69d084f9a597e032624bcd74d57a7.png\r\n *\r\n * Luminance range reference:\r\n * https://cycling74.com/2007/05/23/your-first-shader/#.Vty9FfkrL4Z\r\n */\r\n\r\nclass LuminanceMaterial extends ShaderMaterial {\r\n\r\n\t/**\r\n\t * Constructs a new luminance material.\r\n\t *\r\n\t * @param {Boolean} [colorOutput=false] - Defines whether the shader should output colors scaled with their luminance value.\r\n\t * @param {Vector2} [luminanceRange] - If provided, the shader will mask out texels that aren't in the specified luminance range.\r\n\t */\r\n\r\n\tconstructor(colorOutput = false, luminanceRange = null) {\r\n\r\n\t\tconst useRange = (luminanceRange !== null);\r\n\r\n\t\tsuper({\r\n\r\n\t\t\ttype: \"LuminanceMaterial\",\r\n\r\n\t\t\tuniforms: {\r\n\r\n\t\t\t\tinputBuffer: new Uniform(null),\r\n\t\t\t\tthreshold: new Uniform(0.0),\r\n\t\t\t\tsmoothing: new Uniform(1.0),\r\n\t\t\t\trange: new Uniform(useRange ? luminanceRange : new Vector2())\r\n\r\n\t\t\t},\r\n\r\n\t\t\tfragmentShader: fragmentShader$7,\r\n\t\t\tvertexShader,\r\n\r\n\t\t\tdepthWrite: false,\r\n\t\t\tdepthTest: false\r\n\r\n\t\t});\r\n\r\n\t\tthis.colorOutput = colorOutput;\r\n\t\tthis.useThreshold = true;\r\n\t\tthis.useRange = useRange;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * The luminance threshold.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tget threshold() {\r\n\r\n\t\treturn this.uniforms.threshold.value;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the luminance threshold.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tset threshold(value) {\r\n\r\n\t\tthis.uniforms.threshold.value = value;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * The luminance threshold smoothing.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tget smoothing() {\r\n\r\n\t\treturn this.uniforms.smoothing.value;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the luminance threshold smoothing.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tset smoothing(value) {\r\n\r\n\t\tthis.uniforms.smoothing.value = value;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates whether the luminance threshold is enabled.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tget useThreshold() {\r\n\r\n\t\treturn (this.defines.THRESHOLD !== undefined);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Enables or disables the luminance threshold.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tset useThreshold(value) {\r\n\r\n\t\tvalue ? (this.defines.THRESHOLD = \"1\") : (delete this.defines.THRESHOLD);\r\n\r\n\t\tthis.needsUpdate = true;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates whether color output is enabled.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tget colorOutput() {\r\n\r\n\t\treturn (this.defines.COLOR !== undefined);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Enables or disables color output.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tset colorOutput(value) {\r\n\r\n\t\tvalue ? (this.defines.COLOR = \"1\") : (delete this.defines.COLOR);\r\n\r\n\t\tthis.needsUpdate = true;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Enables or disables color output.\r\n\t *\r\n\t * @deprecated Use colorOutput instead.\r\n\t * @param {Boolean} enabled - Whether color output should be enabled.\r\n\t */\r\n\r\n\tsetColorOutputEnabled(enabled) {\r\n\r\n\t\tenabled ? (this.defines.COLOR = \"1\") : (delete this.defines.COLOR);\r\n\r\n\t\tthis.needsUpdate = true;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates whether luminance masking is enabled.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tget useRange() {\r\n\r\n\t\treturn (this.defines.RANGE !== undefined);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Enables or disables luminance masking.\r\n\t *\r\n\t * If enabled, the threshold will be ignored.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tset useRange(value) {\r\n\r\n\t\tvalue ? (this.defines.RANGE = \"1\") : (delete this.defines.RANGE);\r\n\r\n\t\tthis.needsUpdate = true;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates whether luminance masking is enabled.\r\n\t *\r\n\t * @type {Boolean}\r\n\t * @deprecated Use useRange instead.\r\n\t */\r\n\r\n\tget luminanceRange() {\r\n\r\n\t\treturn (this.defines.RANGE !== undefined);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Enables or disables luminance masking.\r\n\t *\r\n\t * @type {Boolean}\r\n\t * @deprecated Use useRange instead.\r\n\t */\r\n\r\n\tset luminanceRange(value) {\r\n\r\n\t\tvalue ? (this.defines.RANGE = \"1\") : (delete this.defines.RANGE);\r\n\r\n\t\tthis.needsUpdate = true;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Enables or disables the luminance mask.\r\n\t *\r\n\t * @deprecated Use luminanceRange instead.\r\n\t * @param {Boolean} enabled - Whether the luminance mask should be enabled.\r\n\t */\r\n\r\n\tsetLuminanceRangeEnabled(enabled) {\r\n\r\n\t\tenabled ? (this.defines.RANGE = \"1\") : (delete this.defines.RANGE);\r\n\r\n\t\tthis.needsUpdate = true;\r\n\r\n\t}\r\n\r\n}\n\nvar fragmentShader$8 = \"uniform sampler2D maskTexture;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 c0=texture2D(maskTexture,vUv0).rg;vec2 c1=texture2D(maskTexture,vUv1).rg;vec2 c2=texture2D(maskTexture,vUv2).rg;vec2 c3=texture2D(maskTexture,vUv3).rg;float d0=(c0.x-c1.x)*0.5;float d1=(c2.x-c3.x)*0.5;float d=length(vec2(d0,d1));float a0=min(c0.y,c1.y);float a1=min(c2.y,c3.y);float visibilityFactor=min(a0,a1);gl_FragColor.rg=(1.0-visibilityFactor>0.001)? vec2(d,0.0): vec2(0.0,d);}\";\n\nvar vertexShader$4 = \"uniform vec2 texelSize;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 uv=position.xy*0.5+0.5;vUv0=vec2(uv.x+texelSize.x,uv.y);vUv1=vec2(uv.x-texelSize.x,uv.y);vUv2=vec2(uv.x,uv.y+texelSize.y);vUv3=vec2(uv.x,uv.y-texelSize.y);gl_Position=vec4(position.xy,1.0,1.0);}\";\n\n/**\r\n * An outline edge detection shader material.\r\n */\r\n\r\nclass OutlineEdgesMaterial extends ShaderMaterial {\r\n\r\n\t/**\r\n\t * Constructs a new outline edge detection material.\r\n\t *\r\n\t * @param {Vector2} [texelSize] - The absolute screen texel size.\r\n\t */\r\n\r\n\tconstructor(texelSize = new Vector2()) {\r\n\r\n\t\tsuper({\r\n\r\n\t\t\ttype: \"OutlineEdgesMaterial\",\r\n\r\n\t\t\tuniforms: {\r\n\r\n\t\t\t\tmaskTexture: new Uniform(null),\r\n\t\t\t\ttexelSize: new Uniform(new Vector2())\r\n\r\n\t\t\t},\r\n\r\n\t\t\tfragmentShader: fragmentShader$8,\r\n\t\t\tvertexShader: vertexShader$4,\r\n\r\n\t\t\tdepthWrite: false,\r\n\t\t\tdepthTest: false\r\n\r\n\t\t});\r\n\r\n\t\tthis.setTexelSize(texelSize.x, texelSize.y);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the texel size.\r\n\t *\r\n\t * @param {Number} x - The texel width.\r\n\t * @param {Number} y - The texel height.\r\n\t */\r\n\r\n\tsetTexelSize(x, y) {\r\n\r\n\t\tthis.uniforms.texelSize.value.set(x, y);\r\n\r\n\t}\r\n\r\n}\n\nvar fragmentShader$9 = \"#define sampleLevelZeroOffset(t, coord, offset) texture2D(t, coord + offset * texelSize)\\n#if __VERSION__ < 300\\n#define round(v) floor(v + 0.5)\\n#endif\\nuniform sampler2D inputBuffer;uniform sampler2D areaTexture;uniform sampler2D searchTexture;uniform vec2 texelSize;uniform vec2 resolution;varying vec2 vUv;varying vec4 vOffset[3];varying vec2 vPixCoord;/***Moves values to a target vector based on a given conditional vector.*/void movec(const in bvec2 c,inout vec2 variable,const in vec2 value){if(c.x){variable.x=value.x;}if(c.y){variable.y=value.y;}}void movec(const in bvec4 c,inout vec4 variable,const in vec4 value){movec(c.xy,variable.xy,value.xy);movec(c.zw,variable.zw,value.zw);}/***Allows to decode two binary values from a bilinear-filtered access.**Bilinear access for fetching 'e' have a 0.25 offset,and we are interested*in the R and G edges:**+---G---+-------+*|x o R x|*+-------+-------+**Then,if one of these edge is enabled:*Red:(0.75*X+0.25*1)=>0.25 or 1.0*Green:(0.75*1+0.25*X)=>0.75 or 1.0**This function will unpack the values(mad+mul+round):*wolframalpha.com: round(x*abs(5*x-5*0.75))plot 0 to 1*/vec2 decodeDiagBilinearAccess(in vec2 e){e.r=e.r*abs(5.0*e.r-5.0*0.75);return round(e);}vec4 decodeDiagBilinearAccess(in vec4 e){e.rb=e.rb*abs(5.0*e.rb-5.0*0.75);return round(e);}/***Diagonal pattern searches.*/vec2 searchDiag1(const in vec2 texCoord,const in vec2 dir,out vec2 e){vec4 coord=vec4(texCoord,-1.0,1.0);vec3 t=vec3(texelSize,1.0);for(int i=0;i0.9)){break;}coord.xyz=t*vec3(dir,1.0)+coord.xyz;e=texture2D(inputBuffer,coord.xy).rg;coord.w=dot(e,vec2(0.5));}return coord.zw;}vec2 searchDiag2(const in vec2 texCoord,const in vec2 dir,out vec2 e){vec4 coord=vec4(texCoord,-1.0,1.0);coord.x+=0.25*texelSize.x;vec3 t=vec3(texelSize,1.0);for(int i=0;i0.9)){break;}coord.xyz=t*vec3(dir,1.0)+coord.xyz;e=texture2D(inputBuffer,coord.xy).rg;e=decodeDiagBilinearAccess(e);coord.w=dot(e,vec2(0.5));}return coord.zw;}/***Calculates the area corresponding to a certain diagonal distance and crossing*edges 'e'.*/vec2 areaDiag(const in vec2 dist,const in vec2 e,const in float offset){vec2 texCoord=vec2(AREATEX_MAX_DISTANCE_DIAG,AREATEX_MAX_DISTANCE_DIAG)*e+dist;texCoord=AREATEX_PIXEL_SIZE*texCoord+0.5*AREATEX_PIXEL_SIZE;texCoord.x+=0.5;texCoord.y+=AREATEX_SUBTEX_SIZE*offset;return texture2D(areaTexture,texCoord).rg;}/***Searches for diagonal patterns and returns the corresponding weights.*/vec2 calculateDiagWeights(const in vec2 texCoord,const in vec2 e,const in vec4 subsampleIndices){vec2 weights=vec2(0.0);vec4 d;vec2 end;if(e.r>0.0){d.xz=searchDiag1(texCoord,vec2(-1.0,1.0),end);d.x+=float(end.y>0.9);}else{d.xz=vec2(0.0);}d.yw=searchDiag1(texCoord,vec2(1.0,-1.0),end);if(d.x+d.y>2.0){vec4 coords=vec4(-d.x+0.25,d.x,d.y,-d.y-0.25)*texelSize.xyxy+texCoord.xyxy;vec4 c;c.xy=sampleLevelZeroOffset(inputBuffer,coords.xy,vec2(-1,0)).rg;c.zw=sampleLevelZeroOffset(inputBuffer,coords.zw,vec2(1,0)).rg;c.yxwz=decodeDiagBilinearAccess(c.xyzw);vec2 cc=vec2(2.0)*c.xz+c.yw;movec(bvec2(step(0.9,d.zw)),cc,vec2(0.0));weights+=areaDiag(d.xy,cc,subsampleIndices.z);}d.xz=searchDiag2(texCoord,vec2(-1.0,-1.0),end);if(sampleLevelZeroOffset(inputBuffer,texCoord,vec2(1,0)).r>0.0){d.yw=searchDiag2(texCoord,vec2(1.0),end);d.y+=float(end.y>0.9);}else{d.yw=vec2(0.0);}if(d.x+d.y>2.0){vec4 coords=vec4(-d.x,-d.x,d.y,d.y)*texelSize.xyxy+texCoord.xyxy;vec4 c;c.x=sampleLevelZeroOffset(inputBuffer,coords.xy,vec2(-1,0)).g;c.y=sampleLevelZeroOffset(inputBuffer,coords.xy,vec2(0,-1)).r;c.zw=sampleLevelZeroOffset(inputBuffer,coords.zw,vec2(1,0)).gr;vec2 cc=vec2(2.0)*c.xz+c.yw;movec(bvec2(step(0.9,d.zw)),cc,vec2(0.0));weights+=areaDiag(d.xy,cc,subsampleIndices.w).gr;}return weights;}/***Determines how much length should be added in the last step of the searches.**Takes the bilinearly interpolated edge(see @PSEUDO_GATHER4),and adds 0,1*or 2 depending on which edges and crossing edges are active.*/float searchLength(const in vec2 e,const in float offset){/*The texture is flipped vertically,with left and right cases taking halfof the space horizontally.*/vec2 scale=SEARCHTEX_SIZE*vec2(0.5,-1.0);vec2 bias=SEARCHTEX_SIZE*vec2(offset,1.0);scale+=vec2(-1.0,1.0);bias+=vec2(0.5,-0.5);scale*=1.0/SEARCHTEX_PACKED_SIZE;bias*=1.0/SEARCHTEX_PACKED_SIZE;return texture2D(searchTexture,scale*e+bias).r;}/***Horizontal search for the second pass.*/float searchXLeft(in vec2 texCoord,const in float end){/*@PSEUDO_GATHER4This texCoord has been offset by(-0.25,-0.125)in the vertex shader tosample between edges,thus fetching four edges in a row.Sampling with different offsets in each direction allows to disambiguatewhich edges are active from the four fetched ones.*/vec2 e=vec2(0.0,1.0);for(int i=0;iend&&e.g>0.8281&&e.r==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=vec2(-2.0,0.0)*texelSize+texCoord;}float offset=-(255.0/127.0)*searchLength(e,0.0)+3.25;return texelSize.x*offset+texCoord.x;}float searchXRight(vec2 texCoord,const in float end){vec2 e=vec2(0.0,1.0);for(int i=0;i0.8281&&e.r==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=vec2(2.0,0.0)*texelSize.xy+texCoord;}float offset=-(255.0/127.0)*searchLength(e,0.5)+3.25;return-texelSize.x*offset+texCoord.x;}/***Vertical search for the second pass.*/float searchYUp(vec2 texCoord,const in float end){vec2 e=vec2(1.0,0.0);for(int i=0;iend&&e.r>0.8281&&e.g==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=-vec2(0.0,2.0)*texelSize.xy+texCoord;}float offset=-(255.0/127.0)*searchLength(e.gr,0.0)+3.25;return texelSize.y*offset+texCoord.y;}float searchYDown(vec2 texCoord,const in float end){vec2 e=vec2(1.0,0.0);for(int i=0;i0.8281&&e.g==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=vec2(0.0,2.0)*texelSize.xy+texCoord;}float offset=-(255.0/127.0)*searchLength(e.gr,0.5)+3.25;return-texelSize.y*offset+texCoord.y;}/***Determines the areas at each side of the current edge.*/vec2 area(const in vec2 dist,const in float e1,const in float e2,const in float offset){vec2 texCoord=vec2(AREATEX_MAX_DISTANCE)*round(4.0*vec2(e1,e2))+dist;texCoord=AREATEX_PIXEL_SIZE*texCoord+0.5*AREATEX_PIXEL_SIZE;texCoord.y=AREATEX_SUBTEX_SIZE*offset+texCoord.y;return texture2D(areaTexture,texCoord).rg;}/***Corner detection.*/void detectHorizontalCornerPattern(inout vec2 weights,const in vec4 texCoord,const in vec2 d){\\n#if !defined(DISABLE_CORNER_DETECTION)\\nvec2 leftRight=step(d.xy,d.yx);vec2 rounding=(1.0-CORNER_ROUNDING_NORM)*leftRight;rounding/=leftRight.x+leftRight.y;vec2 factor=vec2(1.0);factor.x-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(0,1)).r;factor.x-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(1,1)).r;factor.y-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(0,-2)).r;factor.y-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(1,-2)).r;weights*=saturate(factor);\\n#endif\\n}void detectVerticalCornerPattern(inout vec2 weights,const in vec4 texCoord,const in vec2 d){\\n#if !defined(DISABLE_CORNER_DETECTION)\\nvec2 leftRight=step(d.xy,d.yx);vec2 rounding=(1.0-CORNER_ROUNDING_NORM)*leftRight;rounding/=leftRight.x+leftRight.y;vec2 factor=vec2(1.0);factor.x-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(1,0)).g;factor.x-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(1,1)).g;factor.y-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(-2,0)).g;factor.y-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(-2,1)).g;weights*=saturate(factor);\\n#endif\\n}void main(){vec4 weights=vec4(0.0);vec4 subsampleIndices=vec4(0.0);vec2 e=texture2D(inputBuffer,vUv).rg;if(e.g>0.0){\\n#if !defined(DISABLE_DIAG_DETECTION)\\n/*Diagonals have both north and west edges,so searching for them in one ofthe boundaries is enough.*/weights.rg=calculateDiagWeights(vUv,e,subsampleIndices);if(weights.r==-weights.g){\\n#endif\\nvec2 d;vec3 coords;coords.x=searchXLeft(vOffset[0].xy,vOffset[2].x);coords.y=vOffset[1].y;d.x=coords.x;/*Now fetch the left crossing edges,two at a time using bilinearfiltering. Sampling at-0.25(see @CROSSING_OFFSET)enables to discern whatvalue each edge has.*/float e1=texture2D(inputBuffer,coords.xy).r;coords.z=searchXRight(vOffset[0].zw,vOffset[2].y);d.y=coords.z;/*Translate distances to pixel units for better interleave arithmetic andmemory accesses.*/d=round(resolution.xx*d+-vPixCoord.xx);vec2 sqrtD=sqrt(abs(d));float e2=sampleLevelZeroOffset(inputBuffer,coords.zy,vec2(1,0)).r;weights.rg=area(sqrtD,e1,e2,subsampleIndices.y);coords.y=vUv.y;detectHorizontalCornerPattern(weights.rg,coords.xyzy,d);\\n#if !defined(DISABLE_DIAG_DETECTION)\\n}else{e.r=0.0;}\\n#endif\\n}if(e.r>0.0){vec2 d;vec3 coords;coords.y=searchYUp(vOffset[1].xy,vOffset[2].z);coords.x=vOffset[0].x;d.x=coords.y;float e1=texture2D(inputBuffer,coords.xy).g;coords.z=searchYDown(vOffset[1].zw,vOffset[2].w);d.y=coords.z;d=round(resolution.yy*d-vPixCoord.yy);vec2 sqrtD=sqrt(abs(d));float e2=sampleLevelZeroOffset(inputBuffer,coords.xz,vec2(0,1)).g;weights.ba=area(sqrtD,e1,e2,subsampleIndices.x);coords.x=vUv.x;detectVerticalCornerPattern(weights.ba,coords.xyxz,d);}gl_FragColor=weights;}\";\n\nvar vertexShader$5 = \"uniform vec2 texelSize;uniform vec2 resolution;varying vec2 vUv;varying vec4 vOffset[3];varying vec2 vPixCoord;void main(){vUv=position.xy*0.5+0.5;vPixCoord=vUv*resolution;vOffset[0]=vUv.xyxy+texelSize.xyxy*vec4(-0.25,-0.125,1.25,-0.125);vOffset[1]=vUv.xyxy+texelSize.xyxy*vec4(-0.125,-0.25,-0.125,1.25);vOffset[2]=vec4(vOffset[0].xz,vOffset[1].yw)+vec4(-2.0,2.0,-2.0,2.0)*texelSize.xxyy*MAX_SEARCH_STEPS_FLOAT;gl_Position=vec4(position.xy,1.0,1.0);}\";\n\n/**\r\n * Subpixel Morphological Antialiasing.\r\n *\r\n * This material computes weights for detected edges.\r\n */\r\n\r\nclass SMAAWeightsMaterial extends ShaderMaterial {\r\n\r\n\t/**\r\n\t * Constructs a new SMAA weights material.\r\n\t *\r\n\t * @param {Vector2} [texelSize] - The absolute screen texel size.\r\n\t * @param {Vector2} [resolution] - The resolution.\r\n\t */\r\n\r\n\tconstructor(texelSize = new Vector2(), resolution = new Vector2()) {\r\n\r\n\t\tsuper({\r\n\r\n\t\t\ttype: \"SMAAWeightsMaterial\",\r\n\r\n\t\t\tdefines: {\r\n\r\n\t\t\t\t// Configurable settings:\r\n\t\t\t\tMAX_SEARCH_STEPS_INT: \"16\",\r\n\t\t\t\tMAX_SEARCH_STEPS_FLOAT: \"16.0\",\r\n\t\t\t\tMAX_SEARCH_STEPS_DIAG_INT: \"8\",\r\n\t\t\t\tMAX_SEARCH_STEPS_DIAG_FLOAT: \"8.0\",\r\n\t\t\t\tCORNER_ROUNDING: \"25\",\r\n\t\t\t\tCORNER_ROUNDING_NORM: \"0.25\",\r\n\r\n\t\t\t\t// Non-configurable settings:\r\n\t\t\t\tAREATEX_MAX_DISTANCE: \"16.0\",\r\n\t\t\t\tAREATEX_MAX_DISTANCE_DIAG: \"20.0\",\r\n\t\t\t\tAREATEX_PIXEL_SIZE: \"(1.0 / vec2(160.0, 560.0))\",\r\n\t\t\t\tAREATEX_SUBTEX_SIZE: \"(1.0 / 7.0)\",\r\n\t\t\t\tSEARCHTEX_SIZE: \"vec2(66.0, 33.0)\",\r\n\t\t\t\tSEARCHTEX_PACKED_SIZE: \"vec2(64.0, 16.0)\"\r\n\r\n\t\t\t},\r\n\r\n\t\t\tuniforms: {\r\n\r\n\t\t\t\tinputBuffer: new Uniform(null),\r\n\t\t\t\tareaTexture: new Uniform(null),\r\n\t\t\t\tsearchTexture: new Uniform(null),\r\n\t\t\t\ttexelSize: new Uniform(texelSize),\r\n\t\t\t\tresolution: new Uniform(resolution)\r\n\r\n\t\t\t},\r\n\r\n\t\t\tfragmentShader: fragmentShader$9,\r\n\t\t\tvertexShader: vertexShader$5,\r\n\r\n\t\t\tdepthWrite: false,\r\n\t\t\tdepthTest: false\r\n\r\n\t\t});\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the maximum amount of steps performed in the horizontal/vertical\r\n\t * pattern searches, at each side of the pixel.\r\n\t *\r\n\t * In number of pixels, it's actually the double. So the maximum line length\r\n\t * perfectly handled by, for example 16, is 64 (perfectly means that longer\r\n\t * lines won't look as good, but are still antialiased).\r\n\t *\r\n\t * @param {Number} steps - The search steps. Range: [0, 112].\r\n\t */\r\n\r\n\tsetOrthogonalSearchSteps(steps) {\r\n\r\n\t\tsteps = Math.min(Math.max(steps, 0), 112);\r\n\r\n\t\tthis.defines.MAX_SEARCH_STEPS_INT = steps.toFixed(\"0\");\r\n\t\tthis.defines.MAX_SEARCH_STEPS_FLOAT = steps.toFixed(\"1\");\r\n\t\tthis.needsUpdate = true;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Specifies the maximum steps performed in the diagonal pattern searches, at\r\n\t * each side of the pixel. This search jumps one pixel at time.\r\n\t *\r\n\t * On high-end machines this search is cheap (between 0.8x and 0.9x slower for\r\n\t * 16 steps), but it can have a significant impact on older machines.\r\n\t *\r\n\t * @param {Number} steps - The search steps. Range: [0, 20].\r\n\t */\r\n\r\n\tsetDiagonalSearchSteps(steps) {\r\n\r\n\t\tsteps = Math.min(Math.max(steps, 0), 20);\r\n\r\n\t\tthis.defines.MAX_SEARCH_STEPS_DIAG_INT = steps.toFixed(\"0\");\r\n\t\tthis.defines.MAX_SEARCH_STEPS_DIAG_FLOAT = steps.toFixed(\"1\");\r\n\t\tthis.needsUpdate = true;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Specifies how much sharp corners will be rounded.\r\n\t *\r\n\t * @param {Number} rounding - The corner rounding amount. Range: [0, 100].\r\n\t */\r\n\r\n\tsetCornerRounding(rounding) {\r\n\r\n\t\trounding = Math.min(Math.max(rounding, 0), 100);\r\n\r\n\t\tthis.defines.CORNER_ROUNDING = rounding.toFixed(\"4\");\r\n\t\tthis.defines.CORNER_ROUNDING_NORM = (rounding / 100.0).toFixed(\"4\");\r\n\t\tthis.needsUpdate = true;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates whether diagonal pattern detection is enabled.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tget diagonalDetection() {\r\n\r\n\t\treturn (this.defines.DISABLE_DIAG_DETECTION === undefined);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Enables or disables diagonal pattern detection.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tset diagonalDetection(value) {\r\n\r\n\t\tvalue ? (delete this.defines.DISABLE_DIAG_DETECTION) :\r\n\t\t\t(this.defines.DISABLE_DIAG_DETECTION = \"1\");\r\n\r\n\t\tthis.needsUpdate = true;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates whether corner rounding is enabled.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tget cornerRounding() {\r\n\r\n\t\treturn (this.defines.DISABLE_CORNER_DETECTION === undefined);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Enables or disables corner rounding.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tset cornerRounding(value) {\r\n\r\n\t\tvalue ? (delete this.defines.DISABLE_CORNER_DETECTION) :\r\n\t\t\t(this.defines.DISABLE_CORNER_DETECTION = \"1\");\r\n\r\n\t\tthis.needsUpdate = true;\r\n\r\n\t}\r\n\r\n}\n\n/**\r\n * Shared fullscreen geometry.\r\n *\r\n * @type {BufferGeometry}\r\n * @private\r\n */\r\n\r\nlet geometry = null;\r\n\r\n/**\r\n * Returns a shared fullscreen triangle.\r\n *\r\n * The size of the screen is 2x2 units (NDC). A triangle that fills the screen\r\n * needs to be 4 units wide and 4 units tall.\r\n *\r\n * @private\r\n * @return {BufferGeometry} The fullscreen geometry.\r\n */\r\n\r\nfunction getFullscreenTriangle() {\r\n\r\n\tif(geometry === null) {\r\n\r\n\t\tconst vertices = new Float32Array([-1, -1, 0, 3, -1, 0, -1, 3, 0]);\r\n\t\tconst uvs = new Float32Array([0, 0, 2, 0, 0, 2]);\r\n\t\tgeometry = new BufferGeometry();\r\n\t\tgeometry.addAttribute(\"position\", new BufferAttribute(vertices, 3));\r\n\t\tgeometry.addAttribute(\"uv\", new BufferAttribute(uvs, 2));\r\n\r\n\t}\r\n\r\n\treturn geometry;\r\n\r\n}\r\n\r\n/**\r\n * An abstract pass.\r\n *\r\n * Passes that do not rely on the depth buffer should explicitly disable the\r\n * depth test and depth write flags of their fullscreen shader material.\r\n *\r\n * Fullscreen passes use a shared fullscreen triangle:\r\n * https://michaldrobot.com/2014/04/01/gcn-execution-patterns-in-full-screen-passes/\r\n *\r\n * @implements {Initializable}\r\n * @implements {Resizable}\r\n * @implements {Disposable}\r\n */\r\n\r\nclass Pass {\r\n\r\n\t/**\r\n\t * Constructs a new pass.\r\n\t *\r\n\t * @param {String} [name] - The name of this pass. Does not have to be unique.\r\n\t * @param {Scene} [scene] - The scene to render. The default scene contains a single mesh that fills the screen.\r\n\t * @param {Camera} [camera] - The camera. The default camera perfectly captures the screen mesh.\r\n\t */\r\n\r\n\tconstructor(name = \"Pass\", scene = new Scene(), camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1)) {\r\n\r\n\t\t/**\r\n\t\t * The name of this pass.\r\n\t\t *\r\n\t\t * @type {String}\r\n\t\t */\r\n\r\n\t\tthis.name = name;\r\n\r\n\t\t/**\r\n\t\t * The scene to render.\r\n\t\t *\r\n\t\t * @type {Scene}\r\n\t\t * @protected\r\n\t\t */\r\n\r\n\t\tthis.scene = scene;\r\n\r\n\t\t/**\r\n\t\t * The camera.\r\n\t\t *\r\n\t\t * @type {Camera}\r\n\t\t * @protected\r\n\t\t */\r\n\r\n\t\tthis.camera = camera;\r\n\r\n\t\t/**\r\n\t\t * A mesh that fills the screen.\r\n\t\t *\r\n\t\t * @type {Mesh}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.screen = null;\r\n\r\n\t\t/**\r\n\t\t * Only relevant for subclassing.\r\n\t\t *\r\n\t\t * Indicates whether the {@link EffectComposer} should swap the frame\r\n\t\t * buffers after this pass has finished rendering.\r\n\t\t *\r\n\t\t * Set this to `false` if this pass doesn't render to the output buffer or\r\n\t\t * the screen. Otherwise, the contents of the input buffer will be lost.\r\n\t\t *\r\n\t\t * @type {Boolean}\r\n\t\t */\r\n\r\n\t\tthis.needsSwap = true;\r\n\r\n\t\t/**\r\n\t\t * Indicates whether the {@link EffectComposer} should prepare a depth\r\n\t\t * texture for this pass.\r\n\t\t *\r\n\t\t * Set this to `true` if this pass relies on depth information from a\r\n\t\t * preceding {@link RenderPass}.\r\n\t\t *\r\n\t\t * @type {Boolean}\r\n\t\t */\r\n\r\n\t\tthis.needsDepthTexture = false;\r\n\r\n\t\t/**\r\n\t\t * Indicates whether this pass should render to screen.\r\n\t\t *\r\n\t\t * @type {Boolean}\r\n\t\t */\r\n\r\n\t\tthis.renderToScreen = false;\r\n\r\n\t\t/**\r\n\t\t * Indicates whether this pass should be executed.\r\n\t\t *\r\n\t\t * @type {Boolean}\r\n\t\t */\r\n\r\n\t\tthis.enabled = true;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the current fullscreen material.\r\n\t *\r\n\t * @return {Material} The current fullscreen material, or null if there is none.\r\n\t */\r\n\r\n\tgetFullscreenMaterial() {\r\n\r\n\t\treturn (this.screen !== null) ? this.screen.material : null;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the fullscreen material.\r\n\t *\r\n\t * The material will be assigned to a mesh that fills the screen. The mesh\r\n\t * will be created once a material is assigned via this method.\r\n\t *\r\n\t * @protected\r\n\t * @param {Material} material - A fullscreen material.\r\n\t */\r\n\r\n\tsetFullscreenMaterial(material) {\r\n\r\n\t\tlet screen = this.screen;\r\n\r\n\t\tif(screen !== null) {\r\n\r\n\t\t\tscreen.material = material;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tscreen = new Mesh(getFullscreenTriangle(), material);\r\n\t\t\tscreen.frustumCulled = false;\r\n\r\n\t\t\tif(this.scene === null) {\r\n\r\n\t\t\t\tthis.scene = new Scene();\r\n\r\n\t\t\t}\r\n\r\n\t\t\tthis.scene.add(screen);\r\n\t\t\tthis.screen = screen;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the current depth texture.\r\n\t *\r\n\t * @return {Texture} The current depth texture, or null if there is none.\r\n\t */\r\n\r\n\tgetDepthTexture() {\r\n\r\n\t\treturn null;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the depth texture.\r\n\t *\r\n\t * You may override this method if your pass relies on the depth information\r\n\t * of a preceding {@link RenderPass}.\r\n\t *\r\n\t * @param {Texture} depthTexture - A depth texture.\r\n\t * @param {Number} [depthPacking=0] - The depth packing.\r\n\t */\r\n\r\n\tsetDepthTexture(depthTexture, depthPacking = 0) {}\r\n\r\n\t/**\r\n\t * Renders the effect.\r\n\t *\r\n\t * This is an abstract method that must be overridden.\r\n\t *\r\n\t * @abstract\r\n\t * @throws {Error} An error is thrown if the method is not overridden.\r\n\t * @param {WebGLRenderer} renderer - The renderer.\r\n\t * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\r\n\t * @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.\r\n\t * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\r\n\t * @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.\r\n\t */\r\n\r\n\trender(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\r\n\r\n\t\tthrow new Error(\"Render method not implemented!\");\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Updates this pass with the renderer's size.\r\n\t *\r\n\t * You may override this method in case you want to be informed about the size\r\n\t * of the main frame buffer.\r\n\t *\r\n\t * The {@link EffectComposer} calls this method before this pass is\r\n\t * initialized and every time its own size is updated.\r\n\t *\r\n\t * @param {Number} width - The renderer's width.\r\n\t * @param {Number} height - The renderer's height.\r\n\t * @example this.myRenderTarget.setSize(width, height);\r\n\t */\r\n\r\n\tsetSize(width, height) {}\r\n\r\n\t/**\r\n\t * Performs initialization tasks.\r\n\t *\r\n\t * By overriding this method you gain access to the renderer. You'll also be\r\n\t * able to configure your custom render targets to use the appropriate format\r\n\t * (RGB or RGBA).\r\n\t *\r\n\t * The provided renderer can be used to warm up special off-screen render\r\n\t * targets by performing a preliminary render operation.\r\n\t *\r\n\t * The {@link EffectComposer} calls this method when this pass is added to its\r\n\t * queue, but not before its size has been set.\r\n\t *\r\n\t * @param {WebGLRenderer} renderer - The renderer.\r\n\t * @param {Boolean} alpha - Whether the renderer uses the alpha channel or not.\r\n\t * @example if(!alpha) { this.myRenderTarget.texture.format = RGBFormat; }\r\n\t */\r\n\r\n\tinitialize(renderer, alpha) {}\r\n\r\n\t/**\r\n\t * Performs a shallow search for disposable properties and deletes them. The\r\n\t * pass will be inoperative after this method was called!\r\n\t *\r\n\t * Disposable objects:\r\n\t * - WebGLRenderTarget\r\n\t * - Material\r\n\t * - Texture\r\n\t *\r\n\t * The {@link EffectComposer} calls this method when it is being destroyed.\r\n\t * You may, however, use it independently to free memory when you are certain\r\n\t * that you don't need this pass anymore.\r\n\t */\r\n\r\n\tdispose() {\r\n\r\n\t\tconst material = this.getFullscreenMaterial();\r\n\r\n\t\tif(material !== null) {\r\n\r\n\t\t\tmaterial.dispose();\r\n\r\n\t\t}\r\n\r\n\t\tfor(const key of Object.keys(this)) {\r\n\r\n\t\t\tif(this[key] !== null && typeof this[key].dispose === \"function\") {\r\n\r\n\t\t\t\t/** @ignore */\r\n\t\t\t\tthis[key].dispose();\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\n\n/**\r\n * An auto sizing constant.\r\n *\r\n * @type {Number}\r\n * @private\r\n */\r\n\r\nconst AUTO_SIZE = -1;\r\n\r\n/**\r\n * An efficient, incremental blur pass.\r\n */\r\n\r\nclass BlurPass extends Pass {\r\n\r\n\t/**\r\n\t * Constructs a new blur pass.\r\n\t *\r\n\t * @param {Object} [options] - The options.\r\n\t * @param {Number} [options.resolutionScale=0.5] - Deprecated. Adjust the height or width instead for consistent results.\r\n\t * @param {Number} [options.width=BlurPass.AUTO_SIZE] - The blur render width.\r\n\t * @param {Number} [options.height=BlurPass.AUTO_SIZE] - The blur render height.\r\n\t * @param {KernelSize} [options.kernelSize=KernelSize.LARGE] - The blur kernel size.\r\n\t */\r\n\r\n\tconstructor({\r\n\t\tresolutionScale = 0.5,\r\n\t\twidth = AUTO_SIZE,\r\n\t\theight = AUTO_SIZE,\r\n\t\tkernelSize = KernelSize.LARGE\r\n\t} = {}) {\r\n\r\n\t\tsuper(\"BlurPass\");\r\n\r\n\t\t/**\r\n\t\t * A render target.\r\n\t\t *\r\n\t\t * @type {WebGLRenderTarget}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.renderTargetX = new WebGLRenderTarget(1, 1, {\r\n\t\t\tminFilter: LinearFilter,\r\n\t\t\tmagFilter: LinearFilter,\r\n\t\t\tstencilBuffer: false,\r\n\t\t\tdepthBuffer: false\r\n\t\t});\r\n\r\n\t\tthis.renderTargetX.texture.name = \"Blur.TargetX\";\r\n\r\n\t\t/**\r\n\t\t * A second render target.\r\n\t\t *\r\n\t\t * @type {WebGLRenderTarget}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.renderTargetY = this.renderTargetX.clone();\r\n\t\tthis.renderTargetY.texture.name = \"Blur.TargetY\";\r\n\r\n\t\t/**\r\n\t\t * The current main render size.\r\n\t\t *\r\n\t\t * @type {Vector2}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.originalSize = new Vector2();\r\n\r\n\t\t/**\r\n\t\t * The absolute render resolution.\r\n\t\t *\r\n\t\t * @type {Vector2}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.resolution = new Vector2(width, height);\r\n\r\n\t\t/**\r\n\t\t * The current resolution scale.\r\n\t\t *\r\n\t\t * @type {Number}\r\n\t\t * @private\r\n\t\t * @deprecated\r\n\t\t */\r\n\r\n\t\tthis.resolutionScale = resolutionScale;\r\n\r\n\t\t/**\r\n\t\t * A convolution shader material.\r\n\t\t *\r\n\t\t * @type {ConvolutionMaterial}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.convolutionMaterial = new ConvolutionMaterial();\r\n\r\n\t\t/**\r\n\t\t * A convolution shader material that uses dithering.\r\n\t\t *\r\n\t\t * @type {ConvolutionMaterial}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.ditheredConvolutionMaterial = new ConvolutionMaterial();\r\n\t\tthis.ditheredConvolutionMaterial.dithering = true;\r\n\r\n\t\t/**\r\n\t\t * Whether the blurred result should also be dithered using noise.\r\n\t\t *\r\n\t\t * @type {Boolean}\r\n\t\t */\r\n\r\n\t\tthis.dithering = false;\r\n\r\n\t\tthis.kernelSize = kernelSize;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * The current width of the internal render targets.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tget width() {\r\n\r\n\t\treturn this.renderTargetX.width;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the render width.\r\n\t *\r\n\t * Use {@link BlurPass.AUTO_SIZE} to activate automatic sizing based on the\r\n\t * render height and aspect ratio.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tset width(value) {\r\n\r\n\t\tthis.resolution.x = value;\r\n\t\tthis.setSize(this.originalSize.x, this.originalSize.y);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * The current height of the internal render targets.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tget height() {\r\n\r\n\t\treturn this.renderTargetX.height;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the render height.\r\n\t *\r\n\t * Use {@link BlurPass.AUTO_SIZE} to activate automatic sizing based on the\r\n\t * render width and aspect ratio.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tset height(value) {\r\n\r\n\t\tthis.resolution.y = value;\r\n\t\tthis.setSize(this.originalSize.x, this.originalSize.y);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * The current blur scale.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tget scale() {\r\n\r\n\t\treturn this.convolutionMaterial.uniforms.scale.value;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the blur scale.\r\n\t *\r\n\t * This value influences the overall blur strength and should not be greater\r\n\t * than 1. For larger blurs please increase the {@link kernelSize}!\r\n\t *\r\n\t * Note that the blur strength is closely tied to the resolution. For a smooth\r\n\t * transition from no blur to full blur, set the width or the height to a high\r\n\t * enough value.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tset scale(value) {\r\n\r\n\t\tthis.convolutionMaterial.uniforms.scale.value = value;\r\n\t\tthis.ditheredConvolutionMaterial.uniforms.scale.value = value;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * The kernel size.\r\n\t *\r\n\t * @type {KernelSize}\r\n\t */\r\n\r\n\tget kernelSize() {\r\n\r\n\t\treturn this.convolutionMaterial.kernelSize;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the kernel size.\r\n\t *\r\n\t * Larger kernels require more processing power but scale well with larger\r\n\t * render resolutions.\r\n\t *\r\n\t * @type {KernelSize}\r\n\t */\r\n\r\n\tset kernelSize(value) {\r\n\r\n\t\tthis.convolutionMaterial.kernelSize = value;\r\n\t\tthis.ditheredConvolutionMaterial.kernelSize = value;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the original resolution.\r\n\t *\r\n\t * @return {Vector2} The original resolution received via {@link setSize}.\r\n\t * @deprecated Added for internal use only.\r\n\t */\r\n\r\n\tgetOriginalSize() {\r\n\r\n\t\treturn this.originalSize;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the current resolution scale.\r\n\t *\r\n\t * @return {Number} The resolution scale.\r\n\t * @deprecated Adjust the width or height instead.\r\n\t */\r\n\r\n\tgetResolutionScale() {\r\n\r\n\t\treturn this.resolutionScale;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the resolution scale.\r\n\t *\r\n\t * @param {Number} scale - The new resolution scale.\r\n\t * @deprecated Adjust the width or height instead.\r\n\t */\r\n\r\n\tsetResolutionScale(scale) {\r\n\r\n\t\tthis.resolutionScale = scale;\r\n\t\tthis.setSize(this.originalSize.x, this.originalSize.y);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Blurs the input buffer and writes the result to the output buffer. The\r\n\t * input buffer remains intact, unless it's also the output buffer.\r\n\t *\r\n\t * @param {WebGLRenderer} renderer - The renderer.\r\n\t * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\r\n\t * @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.\r\n\t * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\r\n\t * @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.\r\n\t */\r\n\r\n\trender(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\r\n\r\n\t\tconst scene = this.scene;\r\n\t\tconst camera = this.camera;\r\n\r\n\t\tconst renderTargetX = this.renderTargetX;\r\n\t\tconst renderTargetY = this.renderTargetY;\r\n\r\n\t\tlet material = this.convolutionMaterial;\r\n\t\tlet uniforms = material.uniforms;\r\n\t\tconst kernel = material.getKernel();\r\n\r\n\t\tlet lastRT = inputBuffer;\r\n\t\tlet destRT;\r\n\t\tlet i, l;\r\n\r\n\t\tthis.setFullscreenMaterial(material);\r\n\r\n\t\t// Apply the multi-pass blur.\r\n\t\tfor(i = 0, l = kernel.length - 1; i < l; ++i) {\r\n\r\n\t\t\t// Alternate between targets.\r\n\t\t\tdestRT = ((i % 2) === 0) ? renderTargetX : renderTargetY;\r\n\r\n\t\t\tuniforms.kernel.value = kernel[i];\r\n\t\t\tuniforms.inputBuffer.value = lastRT.texture;\r\n\t\t\trenderer.setRenderTarget(destRT);\r\n\t\t\trenderer.render(scene, camera);\r\n\r\n\t\t\tlastRT = destRT;\r\n\r\n\t\t}\r\n\r\n\t\tif(this.dithering) {\r\n\r\n\t\t\tmaterial = this.ditheredConvolutionMaterial;\r\n\t\t\tuniforms = material.uniforms;\r\n\t\t\tthis.setFullscreenMaterial(material);\r\n\r\n\t\t}\r\n\r\n\t\tuniforms.kernel.value = kernel[i];\r\n\t\tuniforms.inputBuffer.value = lastRT.texture;\r\n\t\trenderer.setRenderTarget(this.renderToScreen ? null : outputBuffer);\r\n\t\trenderer.render(scene, camera);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the size of this pass.\r\n\t *\r\n\t * @param {Number} width - The width.\r\n\t * @param {Number} height - The height.\r\n\t */\r\n\r\n\tsetSize(width, height) {\r\n\r\n\t\tconst resolution = this.resolution;\r\n\t\tconst aspect = width / height;\r\n\r\n\t\tthis.originalSize.set(width, height);\r\n\r\n\t\tif(resolution.x !== AUTO_SIZE && resolution.y !== AUTO_SIZE) {\r\n\r\n\t\t\twidth = Math.max(1, resolution.x);\r\n\t\t\theight = Math.max(1, resolution.y);\r\n\r\n\t\t} else if(resolution.x !== AUTO_SIZE) {\r\n\r\n\t\t\twidth = Math.max(1, resolution.x);\r\n\t\t\theight = Math.round(Math.max(1, resolution.y) / aspect);\r\n\r\n\t\t} else if(resolution.y !== AUTO_SIZE) {\r\n\r\n\t\t\twidth = Math.round(Math.max(1, resolution.y) * aspect);\r\n\t\t\theight = Math.max(1, resolution.y);\r\n\r\n\t\t} else {\r\n\r\n\t\t\twidth = Math.max(1, Math.round(width * this.resolutionScale));\r\n\t\t\theight = Math.max(1, Math.round(height * this.resolutionScale));\r\n\r\n\t\t}\r\n\r\n\t\tthis.renderTargetX.setSize(width, height);\r\n\t\tthis.renderTargetY.setSize(width, height);\r\n\r\n\t\tthis.convolutionMaterial.setTexelSize(1.0 / width, 1.0 / height);\r\n\t\tthis.ditheredConvolutionMaterial.setTexelSize(1.0 / width, 1.0 / height);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Performs initialization tasks.\r\n\t *\r\n\t * @param {WebGLRenderer} renderer - The renderer.\r\n\t * @param {Boolean} alpha - Whether the renderer uses the alpha channel or not.\r\n\t */\r\n\r\n\tinitialize(renderer, alpha) {\r\n\r\n\t\tif(!alpha) {\r\n\r\n\t\t\tthis.renderTargetX.texture.format = RGBFormat;\r\n\t\t\tthis.renderTargetY.texture.format = RGBFormat;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * An auto sizing flag that can be used for the render {@link BlurPass.width}\r\n\t * and {@link BlurPass.height}.\r\n\t *\r\n\t * It's recommended to set the height or the width to an absolute value for\r\n\t * consistent blur results across different devices and resolutions.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tstatic get AUTO_SIZE() {\r\n\r\n\t\treturn AUTO_SIZE;\r\n\r\n\t}\r\n\r\n}\n\n/**\r\n * A pass that disables the stencil test.\r\n */\r\n\r\nclass ClearMaskPass extends Pass {\r\n\r\n\t/**\r\n\t * Constructs a new clear mask pass.\r\n\t */\r\n\r\n\tconstructor() {\r\n\r\n\t\tsuper(\"ClearMaskPass\", null, null);\r\n\r\n\t\tthis.needsSwap = false;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Disables the global stencil test.\r\n\t *\r\n\t * @param {WebGLRenderer} renderer - The renderer.\r\n\t * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\r\n\t * @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.\r\n\t * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\r\n\t * @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.\r\n\t */\r\n\r\n\trender(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\r\n\r\n\t\tconst stencil = renderer.state.buffers.stencil;\r\n\r\n\t\tstencil.setLocked(false);\r\n\t\tstencil.setTest(false);\r\n\r\n\t}\r\n\r\n}\n\n/**\r\n * Stores the original clear color of the renderer.\r\n *\r\n * @type {Color}\r\n * @private\r\n */\r\n\r\nconst color = new Color();\r\n\r\n/**\r\n * A pass that clears the input buffer or the screen.\r\n */\r\n\r\nclass ClearPass extends Pass {\r\n\r\n\t/**\r\n\t * Constructs a new clear pass.\r\n\t *\r\n\t * @param {Boolean} [color=true] - Determines whether the color buffer should be cleared.\r\n\t * @param {Boolean} [depth=true] - Determines whether the depth buffer should be cleared.\r\n\t * @param {Boolean} [stencil=false] - Determines whether the stencil buffer should be cleared.\r\n\t */\r\n\r\n\tconstructor(color = true, depth = true, stencil = false) {\r\n\r\n\t\tsuper(\"ClearPass\", null, null);\r\n\r\n\t\tthis.needsSwap = false;\r\n\r\n\t\t/**\r\n\t\t * Indicates whether the color buffer should be cleared.\r\n\t\t *\r\n\t\t * @type {Boolean}\r\n\t\t */\r\n\r\n\t\tthis.color = color;\r\n\r\n\t\t/**\r\n\t\t * Indicates whether the depth buffer should be cleared.\r\n\t\t *\r\n\t\t * @type {Boolean}\r\n\t\t */\r\n\r\n\t\tthis.depth = depth;\r\n\r\n\t\t/**\r\n\t\t * Indicates whether the stencil buffer should be cleared.\r\n\t\t *\r\n\t\t * @type {Boolean}\r\n\t\t */\r\n\r\n\t\tthis.stencil = stencil;\r\n\r\n\t\t/**\r\n\t\t * An override clear color.\r\n\t\t *\r\n\t\t * The default value is null.\r\n\t\t *\r\n\t\t * @type {Color}\r\n\t\t */\r\n\r\n\t\tthis.overrideClearColor = null;\r\n\r\n\t\t/**\r\n\t\t * An override clear alpha.\r\n\t\t *\r\n\t\t * The default value is -1.\r\n\t\t *\r\n\t\t * @type {Number}\r\n\t\t */\r\n\r\n\t\tthis.overrideClearAlpha = -1.0;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Clears the input buffer or the screen.\r\n\t *\r\n\t * @param {WebGLRenderer} renderer - The renderer.\r\n\t * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\r\n\t * @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.\r\n\t * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\r\n\t * @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.\r\n\t */\r\n\r\n\trender(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\r\n\r\n\t\tconst overrideClearColor = this.overrideClearColor;\r\n\t\tconst overrideClearAlpha = this.overrideClearAlpha;\r\n\t\tconst clearAlpha = renderer.getClearAlpha();\r\n\r\n\t\tconst hasOverrideClearColor = (overrideClearColor !== null);\r\n\t\tconst hasOverrideClearAlpha = (overrideClearAlpha >= 0.0);\r\n\r\n\t\tif(hasOverrideClearColor) {\r\n\r\n\t\t\tcolor.copy(renderer.getClearColor());\r\n\t\t\trenderer.setClearColor(overrideClearColor, hasOverrideClearAlpha ?\r\n\t\t\t\toverrideClearAlpha : clearAlpha);\r\n\r\n\t\t} else if(hasOverrideClearAlpha) {\r\n\r\n\t\t\trenderer.setClearAlpha(overrideClearAlpha);\r\n\r\n\t\t}\r\n\r\n\t\trenderer.setRenderTarget(this.renderToScreen ? null : inputBuffer);\r\n\t\trenderer.clear(this.color, this.depth, this.stencil);\r\n\r\n\t\tif(hasOverrideClearColor) {\r\n\r\n\t\t\trenderer.setClearColor(color, clearAlpha);\r\n\r\n\t\t} else if(hasOverrideClearAlpha) {\r\n\r\n\t\t\trenderer.setClearAlpha(clearAlpha);\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\n\n/**\r\n * A pass that renders a given scene into the input buffer or to screen.\r\n *\r\n * This pass uses a {@link ClearPass} to clear the target buffer.\r\n */\r\n\r\nclass RenderPass extends Pass {\r\n\r\n\t/**\r\n\t * Constructs a new render pass.\r\n\t *\r\n\t * @param {Scene} scene - The scene to render.\r\n\t * @param {Camera} camera - The camera to use to render the scene.\r\n\t * @param {Material} [overrideMaterial=null] - An override material for the scene.\r\n\t */\r\n\r\n\tconstructor(scene, camera, overrideMaterial = null) {\r\n\r\n\t\tsuper(\"RenderPass\", scene, camera);\r\n\r\n\t\tthis.needsSwap = false;\r\n\r\n\t\t/**\r\n\t\t * An override material.\r\n\t\t *\r\n\t\t * @type {Material}\r\n\t\t */\r\n\r\n\t\tthis.overrideMaterial = overrideMaterial;\r\n\r\n\t\t/**\r\n\t\t * A clear pass.\r\n\t\t *\r\n\t\t * @type {ClearPass}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.clearPass = new ClearPass();\r\n\r\n\t\t/**\r\n\t\t * A depth texture.\r\n\t\t *\r\n\t\t * @type {DepthTexture}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.depthTexture = null;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates whether the target buffer should be cleared before rendering.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tget clear() {\r\n\r\n\t\treturn this.clearPass.enabled;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Enables or disables auto clear.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tset clear(value) {\r\n\r\n\t\tthis.clearPass.enabled = value;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the clear pass.\r\n\t *\r\n\t * @return {ClearPass} The clear pass.\r\n\t */\r\n\r\n\tgetClearPass() {\r\n\r\n\t\treturn this.clearPass;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the current depth texture.\r\n\t *\r\n\t * @return {Texture} The current depth texture, or null if there is none.\r\n\t */\r\n\r\n\tgetDepthTexture() {\r\n\r\n\t\treturn this.depthTexture;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the depth texture.\r\n\t *\r\n\t * The provided texture will be attached to the input buffer unless this pass\r\n\t * renders to screen.\r\n\t *\r\n\t * @param {Texture} depthTexture - A depth texture.\r\n\t * @param {Number} [depthPacking=0] - The depth packing.\r\n\t */\r\n\r\n\tsetDepthTexture(depthTexture, depthPacking = 0) {\r\n\r\n\t\tthis.depthTexture = depthTexture;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Renders the scene.\r\n\t *\r\n\t * @param {WebGLRenderer} renderer - The renderer.\r\n\t * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\r\n\t * @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.\r\n\t * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\r\n\t * @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.\r\n\t */\r\n\r\n\trender(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\r\n\r\n\t\tconst scene = this.scene;\r\n\t\tconst renderTarget = this.renderToScreen ? null : inputBuffer;\r\n\t\tconst overrideMaterial = scene.overrideMaterial;\r\n\r\n\t\tif(this.depthTexture !== null && !this.renderToScreen) {\r\n\r\n\t\t\tinputBuffer.depthTexture = this.depthTexture;\r\n\t\t\toutputBuffer.depthTexture = null;\r\n\r\n\t\t}\r\n\r\n\t\tif(this.clear) {\r\n\r\n\t\t\tthis.clearPass.renderToScreen = this.renderToScreen;\r\n\t\t\tthis.clearPass.render(renderer, inputBuffer);\r\n\r\n\t\t}\r\n\r\n\t\tscene.overrideMaterial = this.overrideMaterial;\r\n\t\trenderer.setRenderTarget(renderTarget);\r\n\t\trenderer.render(scene, this.camera);\r\n\t\tscene.overrideMaterial = overrideMaterial;\r\n\r\n\t}\r\n\r\n}\n\n/**\r\n * A pass that renders the depth of a given scene into a color buffer.\r\n */\r\n\r\nclass DepthPass extends Pass {\r\n\r\n\t/**\r\n\t * Constructs a new depth pass.\r\n\t *\r\n\t * @param {Scene} scene - The scene to render.\r\n\t * @param {Camera} camera - The camera to use to render the scene.\r\n\t * @param {Object} [options] - The options.\r\n\t * @param {Number} [options.resolutionScale=1.0] - The render texture resolution scale, relative to the main frame buffer size.\r\n\t * @param {WebGLRenderTarget} [options.renderTarget] - A custom render target.\r\n\t */\r\n\r\n\tconstructor(scene, camera, { resolutionScale = 1.0, renderTarget } = {}) {\r\n\r\n\t\tsuper(\"DepthPass\");\r\n\r\n\t\tthis.needsSwap = false;\r\n\r\n\t\t/**\r\n\t\t * A render pass.\r\n\t\t *\r\n\t\t * @type {RenderPass}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.renderPass = new RenderPass(scene, camera, new MeshDepthMaterial({\r\n\t\t\tdepthPacking: RGBADepthPacking,\r\n\t\t\tmorphTargets: true,\r\n\t\t\tskinning: true\r\n\t\t}));\r\n\r\n\t\tconst clearPass = this.renderPass.getClearPass();\r\n\t\tclearPass.overrideClearColor = new Color(0xffffff);\r\n\t\tclearPass.overrideClearAlpha = 1.0;\r\n\r\n\t\t/**\r\n\t\t * A render target that contains the scene depth.\r\n\t\t *\r\n\t\t * @type {WebGLRenderTarget}\r\n\t\t */\r\n\r\n\t\tthis.renderTarget = renderTarget;\r\n\r\n\t\tif(this.renderTarget === undefined) {\r\n\r\n\t\t\tthis.renderTarget = new WebGLRenderTarget(1, 1, {\r\n\t\t\t\tminFilter: LinearFilter,\r\n\t\t\t\tmagFilter: LinearFilter,\r\n\t\t\t\tstencilBuffer: false\r\n\t\t\t});\r\n\r\n\t\t\tthis.renderTarget.texture.name = \"DepthPass.Target\";\r\n\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * The current resolution scale.\r\n\t\t *\r\n\t\t * @type {Number}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.resolutionScale = resolutionScale;\r\n\r\n\t\t/**\r\n\t\t * The original size.\r\n\t\t *\r\n\t\t * @type {Vector2}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.originalSize = new Vector2();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the current resolution scale.\r\n\t *\r\n\t * @return {Number} The resolution scale.\r\n\t */\r\n\r\n\tgetResolutionScale() {\r\n\r\n\t\treturn this.resolutionScale;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the resolution scale.\r\n\t *\r\n\t * @param {Number} scale - The new resolution scale.\r\n\t */\r\n\r\n\tsetResolutionScale(scale) {\r\n\r\n\t\tthis.resolutionScale = scale;\r\n\t\tthis.setSize(this.originalSize.x, this.originalSize.y);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Renders the scene depth.\r\n\t *\r\n\t * @param {WebGLRenderer} renderer - The renderer.\r\n\t * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\r\n\t * @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.\r\n\t * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\r\n\t * @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.\r\n\t */\r\n\r\n\trender(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\r\n\r\n\t\tconst renderTarget = this.renderToScreen ? null : this.renderTarget;\r\n\t\tthis.renderPass.render(renderer, renderTarget);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the size of this pass.\r\n\t *\r\n\t * @param {Number} width - The width.\r\n\t * @param {Number} height - The height.\r\n\t */\r\n\r\n\tsetSize(width, height) {\r\n\r\n\t\tthis.originalSize.set(width, height);\r\n\r\n\t\tthis.renderTarget.setSize(\r\n\t\t\tMath.max(1, Math.round(width * this.resolutionScale)),\r\n\t\t\tMath.max(1, Math.round(height * this.resolutionScale))\r\n\t\t);\r\n\r\n\t}\r\n\r\n}\n\n/**\r\n * A blend function enumeration.\r\n *\r\n * @type {Object}\r\n * @property {Number} SKIP - No blending. The effect will not be included in the final shader.\r\n * @property {Number} ADD - Additive blending. Fast, but may produce washed out results.\r\n * @property {Number} ALPHA - Alpha blending. Blends based on the alpha value of the new color.\r\n * @property {Number} AVERAGE - Average blending.\r\n * @property {Number} COLOR_BURN - Color burn.\r\n * @property {Number} COLOR_DODGE - Color dodge.\r\n * @property {Number} DARKEN - Prioritize darker colors.\r\n * @property {Number} DIFFERENCE - Color difference.\r\n * @property {Number} EXCLUSION - Color exclusion.\r\n * @property {Number} LIGHTEN - Prioritize lighter colors.\r\n * @property {Number} MULTIPLY - Color multiplication.\r\n * @property {Number} DIVIDE - Color division.\r\n * @property {Number} NEGATION - Color negation.\r\n * @property {Number} NORMAL - Normal blending. The new color overwrites the old one.\r\n * @property {Number} OVERLAY - Color overlay.\r\n * @property {Number} REFLECT - Color reflection.\r\n * @property {Number} SCREEN - Screen blending. The two colors are effectively projected on a white screen simultaneously.\r\n * @property {Number} SOFT_LIGHT - Soft light blending.\r\n * @property {Number} SUBTRACT - Color subtraction.\r\n */\r\n\r\nconst BlendFunction = {\r\n\r\n\tSKIP: 0,\r\n\tADD: 1,\r\n\tALPHA: 2,\r\n\tAVERAGE: 3,\r\n\tCOLOR_BURN: 4,\r\n\tCOLOR_DODGE: 5,\r\n\tDARKEN: 6,\r\n\tDIFFERENCE: 7,\r\n\tEXCLUSION: 8,\r\n\tLIGHTEN: 9,\r\n\tMULTIPLY: 10,\r\n\tDIVIDE: 11,\r\n\tNEGATION: 12,\r\n\tNORMAL: 13,\r\n\tOVERLAY: 14,\r\n\tREFLECT: 15,\r\n\tSCREEN: 16,\r\n\tSOFT_LIGHT: 17,\r\n\tSUBTRACT: 18\r\n\r\n};\n\nvar addBlendFunction = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return min(x+y,1.0)*opacity+x*(1.0-opacity);}\";\n\nvar alphaBlendFunction = \"vec3 blend(const in vec3 x,const in vec3 y,const in float opacity){return y*opacity+x*(1.0-opacity);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){float a=min(y.a,opacity);return vec4(blend(x.rgb,y.rgb,a),max(x.a,a));}\";\n\nvar averageBlendFunction = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return(x+y)*0.5*opacity+x*(1.0-opacity);}\";\n\nvar colorBurnBlendFunction = \"float blend(const in float x,const in float y){return(y==0.0)? y : max(1.0-(1.0-x)/y,0.0);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=vec4(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b),blend(x.a,y.a));return z*opacity+x*(1.0-opacity);}\";\n\nvar colorDodgeBlendFunction = \"float blend(const in float x,const in float y){return(y==1.0)? y : min(x/(1.0-y),1.0);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=vec4(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b),blend(x.a,y.a));return z*opacity+x*(1.0-opacity);}\";\n\nvar darkenBlendFunction = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return min(x,y)*opacity+x*(1.0-opacity);}\";\n\nvar differenceBlendFunction = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return abs(x-y)*opacity+x*(1.0-opacity);}\";\n\nvar exclusionBlendFunction = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return(x+y-2.0*x*y)*opacity+x*(1.0-opacity);}\";\n\nvar lightenBlendFunction = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return max(x,y)*opacity+x*(1.0-opacity);}\";\n\nvar multiplyBlendFunction = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return x*y*opacity+x*(1.0-opacity);}\";\n\nvar divideBlendFunction = \"float blend(const in float x,const in float y){return(y>0.0)? min(x/y,1.0): 1.0;}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=vec4(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b),blend(x.a,y.a));return z*opacity+x*(1.0-opacity);}\";\n\nvar negationBlendFunction = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return(1.0-abs(1.0-x-y))*opacity+x*(1.0-opacity);}\";\n\nvar normalBlendFunction = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return y*opacity+x*(1.0-opacity);}\";\n\nvar overlayBlendFunction = \"float blend(const in float x,const in float y){return(x<0.5)?(2.0*x*y):(1.0-2.0*(1.0-x)*(1.0-y));}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=vec4(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b),blend(x.a,y.a));return z*opacity+x*(1.0-opacity);}\";\n\nvar reflectBlendFunction = \"float blend(const in float x,const in float y){return(y==1.0)? y : min(x*x/(1.0-y),1.0);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=vec4(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b),blend(x.a,y.a));return z*opacity+x*(1.0-opacity);}\";\n\nvar screenBlendFunction = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return(1.0-(1.0-x)*(1.0-y))*opacity+x*(1.0-opacity);}\";\n\nvar softLightBlendFunction = \"float blend(const in float x,const in float y){return(y<0.5)?(2.0*x*y+x*x*(1.0-2.0*y)):(sqrt(x)*(2.0*y-1.0)+2.0*x*(1.0-y));}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=vec4(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b),blend(x.a,y.a));return z*opacity+x*(1.0-opacity);}\";\n\nvar subtractBlendFunction = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return max(x+y-1.0,0.0)*opacity+x*(1.0-opacity);}\";\n\n/**\r\n * A blend function shader code catalogue.\r\n *\r\n * @type {Map}\r\n * @private\r\n */\r\n\r\nconst blendFunctions = new Map([\r\n\t[BlendFunction.SKIP, null],\r\n\t[BlendFunction.ADD, addBlendFunction],\r\n\t[BlendFunction.ALPHA, alphaBlendFunction],\r\n\t[BlendFunction.AVERAGE, averageBlendFunction],\r\n\t[BlendFunction.COLOR_BURN, colorBurnBlendFunction],\r\n\t[BlendFunction.COLOR_DODGE, colorDodgeBlendFunction],\r\n\t[BlendFunction.DARKEN, darkenBlendFunction],\r\n\t[BlendFunction.DIFFERENCE, differenceBlendFunction],\r\n\t[BlendFunction.EXCLUSION, exclusionBlendFunction],\r\n\t[BlendFunction.LIGHTEN, lightenBlendFunction],\r\n\t[BlendFunction.MULTIPLY, multiplyBlendFunction],\r\n\t[BlendFunction.DIVIDE, divideBlendFunction],\r\n\t[BlendFunction.NEGATION, negationBlendFunction],\r\n\t[BlendFunction.NORMAL, normalBlendFunction],\r\n\t[BlendFunction.OVERLAY, overlayBlendFunction],\r\n\t[BlendFunction.REFLECT, reflectBlendFunction],\r\n\t[BlendFunction.SCREEN, screenBlendFunction],\r\n\t[BlendFunction.SOFT_LIGHT, softLightBlendFunction],\r\n\t[BlendFunction.SUBTRACT, subtractBlendFunction]\r\n]);\r\n\r\n/**\r\n * A blend mode.\r\n */\r\n\r\nclass BlendMode {\r\n\r\n\t/**\r\n\t * Constructs a new blend mode.\r\n\t *\r\n\t * @param {BlendFunction} blendFunction - The blend function to use.\r\n\t * @param {Number} opacity - The opacity of the color that will be blended with the base color.\r\n\t */\r\n\r\n\tconstructor(blendFunction, opacity = 1.0) {\r\n\r\n\t\t/**\r\n\t\t * The blend function.\r\n\t\t *\r\n\t\t * @type {BlendFunction}\r\n\t\t */\r\n\r\n\t\tthis.blendFunction = blendFunction;\r\n\r\n\t\t/**\r\n\t\t * The opacity of the color that will be blended with the base color.\r\n\t\t *\r\n\t\t * @type {Uniform}\r\n\t\t */\r\n\r\n\t\tthis.opacity = new Uniform(opacity);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the blend function shader code.\r\n\t *\r\n\t * @return {String} The blend function shader code.\r\n\t */\r\n\r\n\tgetShaderCode() {\r\n\r\n\t\treturn blendFunctions.get(this.blendFunction);\r\n\r\n\t}\r\n\r\n}\n\n/**\r\n * An abstract effect.\r\n *\r\n * Effects can be combined using the {@link EffectPass}.\r\n *\r\n * @implements {Initializable}\r\n * @implements {Resizable}\r\n * @implements {Disposable}\r\n */\r\n\r\nclass Effect {\r\n\r\n\t/**\r\n\t * Constructs a new effect.\r\n\t *\r\n\t * @param {String} name - The name of this effect. Doesn't have to be unique.\r\n\t * @param {String} fragmentShader - The fragment shader. This shader is required.\r\n\t * @param {Object} [options] - Additional options.\r\n\t * @param {EffectAttribute} [options.attributes=EffectAttribute.NONE] - The effect attributes that determine the execution priority and resource requirements.\r\n\t * @param {BlendFunction} [options.blendFunction=BlendFunction.SCREEN] - The blend function of this effect.\r\n\t * @param {Map} [options.defines] - Custom preprocessor macro definitions. Keys are names and values are code.\r\n\t * @param {Map} [options.uniforms] - Custom shader uniforms. Keys are names and values are uniforms.\r\n\t * @param {Set} [options.extensions] - WebGL extensions.\r\n\t * @param {String} [options.vertexShader=null] - The vertex shader. Most effects don't need one.\r\n\t */\r\n\r\n\tconstructor(name, fragmentShader, {\r\n\t\tattributes = EffectAttribute.NONE,\r\n\t\tblendFunction = BlendFunction.SCREEN,\r\n\t\tdefines = new Map(),\r\n\t\tuniforms = new Map(),\r\n\t\textensions = null,\r\n\t\tvertexShader = null\r\n\t} = {}) {\r\n\r\n\t\t/**\r\n\t\t * The name of this effect.\r\n\t\t *\r\n\t\t * @type {String}\r\n\t\t */\r\n\r\n\t\tthis.name = name;\r\n\r\n\t\t/**\r\n\t\t * The effect attributes.\r\n\t\t *\r\n\t\t * Effects that have the same attributes will be executed in the order in\r\n\t\t * which they were registered. Some attributes imply a higher priority.\r\n\t\t *\r\n\t\t * @type {EffectAttribute}\r\n\t\t */\r\n\r\n\t\tthis.attributes = attributes;\r\n\r\n\t\t/**\r\n\t\t * The fragment shader.\r\n\t\t *\r\n\t\t * @type {String}\r\n\t\t */\r\n\r\n\t\tthis.fragmentShader = fragmentShader;\r\n\r\n\t\t/**\r\n\t\t * The vertex shader.\r\n\t\t *\r\n\t\t * @type {String}\r\n\t\t */\r\n\r\n\t\tthis.vertexShader = vertexShader;\r\n\r\n\t\t/**\r\n\t\t * Preprocessor macro definitions.\r\n\t\t *\r\n\t\t * You'll need to call {@link EffectPass#recompile} after changing a macro.\r\n\t\t *\r\n\t\t * @type {Map}\r\n\t\t */\r\n\r\n\t\tthis.defines = defines;\r\n\r\n\t\t/**\r\n\t\t * Shader uniforms.\r\n\t\t *\r\n\t\t * You may freely modify the values of these uniforms at runtime. However,\r\n\t\t * uniforms must not be removed or added after the effect was created.\r\n\t\t *\r\n\t\t * @type {Map}\r\n\t\t */\r\n\r\n\t\tthis.uniforms = uniforms;\r\n\r\n\t\t/**\r\n\t\t * WebGL extensions that are required by this effect.\r\n\t\t *\r\n\t\t * You'll need to call {@link EffectPass#recompile} after adding or removing\r\n\t\t * an extension.\r\n\t\t *\r\n\t\t * @type {Set}\r\n\t\t */\r\n\r\n\t\tthis.extensions = extensions;\r\n\r\n\t\t/**\r\n\t\t * The blend mode of this effect.\r\n\t\t *\r\n\t\t * The result of this effect will be blended with the result of the previous\r\n\t\t * effect using this blend mode.\r\n\t\t *\r\n\t\t * Feel free to adjust the opacity of the blend mode at runtime. However,\r\n\t\t * you'll need to call {@link EffectPass#recompile} if you change the blend\r\n\t\t * function.\r\n\t\t *\r\n\t\t * @type {BlendMode}\r\n\t\t */\r\n\r\n\t\tthis.blendMode = new BlendMode(blendFunction);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the depth texture.\r\n\t *\r\n\t * You may override this method if your effect requires direct access to the\r\n\t * depth texture that is bound to the associated {@link EffectPass}.\r\n\t *\r\n\t * @param {Texture} depthTexture - A depth texture.\r\n\t * @param {Number} [depthPacking=0] - The depth packing.\r\n\t */\r\n\r\n\tsetDepthTexture(depthTexture, depthPacking = 0) {}\r\n\r\n\t/**\r\n\t * Updates the effect by performing supporting operations.\r\n\t *\r\n\t * This method is called by the {@link EffectPass} right before the main\r\n\t * fullscreen render operation, even if the blend function is set to `SKIP`.\r\n\t *\r\n\t * You may override this method if you need to render additional off-screen\r\n\t * textures or update custom uniforms.\r\n\t *\r\n\t * @param {WebGLRenderer} renderer - The renderer.\r\n\t * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\r\n\t * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\r\n\t */\r\n\r\n\tupdate(renderer, inputBuffer, deltaTime) {}\r\n\r\n\t/**\r\n\t * Updates the size of this effect.\r\n\t *\r\n\t * You may override this method in case you want to be informed about the main\r\n\t * render size.\r\n\t *\r\n\t * The {@link EffectPass} calls this method before this effect is initialized\r\n\t * and every time its own size is updated.\r\n\t *\r\n\t * @param {Number} width - The width.\r\n\t * @param {Number} height - The height.\r\n\t * @example this.myRenderTarget.setSize(width, height);\r\n\t */\r\n\r\n\tsetSize(width, height) {}\r\n\r\n\t/**\r\n\t * Performs initialization tasks.\r\n\t *\r\n\t * By overriding this method you gain access to the renderer. You'll also be\r\n\t * able to configure your custom render targets to use the appropriate format\r\n\t * (RGB or RGBA).\r\n\t *\r\n\t * The provided renderer can be used to warm up special off-screen render\r\n\t * targets by performing a preliminary render operation.\r\n\t *\r\n\t * The {@link EffectPass} calls this method during its own initialization\r\n\t * which happens after the size has been set.\r\n\t *\r\n\t * @param {WebGLRenderer} renderer - The renderer.\r\n\t * @param {Boolean} alpha - Whether the renderer uses the alpha channel or not.\r\n\t * @example if(!alpha) { this.myRenderTarget.texture.format = RGBFormat; }\r\n\t */\r\n\r\n\tinitialize(renderer, alpha) {}\r\n\r\n\t/**\r\n\t * Performs a shallow search for properties that define a dispose method and\r\n\t * deletes them. The effect will be inoperative after this method was called!\r\n\t *\r\n\t * Disposable objects:\r\n\t * - render targets\r\n\t * - materials\r\n\t * - textures\r\n\t *\r\n\t * The {@link EffectPass} calls this method when it is being destroyed. Do not\r\n\t * call this method directly.\r\n\t */\r\n\r\n\tdispose() {\r\n\r\n\t\tfor(const key of Object.keys(this)) {\r\n\r\n\t\t\tif(this[key] !== null && typeof this[key].dispose === \"function\") {\r\n\r\n\t\t\t\t/** @ignore */\r\n\t\t\t\tthis[key].dispose();\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * An enumeration of effect attributes.\r\n *\r\n * Attributes can be concatenated using the bitwise OR operator.\r\n *\r\n * @type {Object}\r\n * @property {Number} CONVOLUTION - Describes effects that fetch additional samples from the input buffer. There cannot be more than one effect with this attribute per {@link EffectPass}.\r\n * @property {Number} DEPTH - Describes effects that require a depth texture.\r\n * @property {Number} NONE - No attributes. Most effects don't need to specify any attributes.\r\n * @example\r\n * const attributes = EffectAttribute.CONVOLUTION | EffectAttribute.DEPTH;\r\n */\r\n\r\nconst EffectAttribute = {\r\n\r\n\tCONVOLUTION: 2,\r\n\tDEPTH: 1,\r\n\tNONE: 0\r\n\r\n};\r\n\r\n/**\r\n * An enumeration of WebGL extensions.\r\n *\r\n * @type {Object}\r\n * @property {String} DERIVATIVES - Enables derivatives by adding the functions dFdx, dFdy and fwidth.\r\n * @property {String} FRAG_DEPTH - Enables gl_FragDepthEXT to set a depth value of a fragment from within the fragment shader.\r\n * @property {String} DRAW_BUFFERS - Enables multiple render targets (MRT) support.\r\n * @property {String} SHADER_TEXTURE_LOD - Enables explicit control of texture LOD.\r\n */\r\n\r\nconst WebGLExtension = {\r\n\r\n\tDERIVATIVES: \"derivatives\",\r\n\tFRAG_DEPTH: \"fragDepth\",\r\n\tDRAW_BUFFERS: \"drawBuffers\",\r\n\tSHADER_TEXTURE_LOD: \"shaderTextureLOD\"\r\n\r\n};\n\n/**\r\n * Finds and collects substrings that match the given regular expression.\r\n *\r\n * @private\r\n * @param {RegExp} regExp - A regular expression.\r\n * @param {String} string - A string.\r\n * @return {String[]} The matching substrings.\r\n */\r\n\r\nfunction findSubstrings(regExp, string) {\r\n\r\n\tconst substrings = [];\r\n\tlet result;\r\n\r\n\twhile((result = regExp.exec(string)) !== null) {\r\n\r\n\t\tsubstrings.push(result[1]);\r\n\r\n\t}\r\n\r\n\treturn substrings;\r\n\r\n}\r\n\r\n/**\r\n * Prefixes substrings within the given strings.\r\n *\r\n * @private\r\n * @param {String} prefix - A prefix.\r\n * @param {String[]} substrings - The substrings.\r\n * @param {Map} strings - A collection of named strings.\r\n */\r\n\r\nfunction prefixSubstrings(prefix, substrings, strings) {\r\n\r\n\tlet prefixed, regExp;\r\n\r\n\tfor(const substring of substrings) {\r\n\r\n\t\tprefixed = \"$1\" + prefix + substring.charAt(0).toUpperCase() + substring.slice(1);\r\n\t\tregExp = new RegExp(\"([^\\\\.])(\\\\b\" + substring + \"\\\\b)\", \"g\");\r\n\r\n\t\tfor(const entry of strings.entries()) {\r\n\r\n\t\t\tif(entry[1] !== null) {\r\n\r\n\t\t\t\tstrings.set(entry[0], entry[1].replace(regExp, prefixed));\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Integrates the given effect.\r\n *\r\n * @private\r\n * @param {String} prefix - A prefix.\r\n * @param {Effect} effect - An effect.\r\n * @param {Map} shaderParts - The shader parts.\r\n * @param {Map} blendModes - The blend modes.\r\n * @param {Map} defines - The macro definitions.\r\n * @param {Map} uniforms - The uniforms.\r\n * @param {EffectAttribute} attributes - The global, collective attributes.\r\n * @return {Object} The results.\r\n * @property {String[]} varyings - The varyings used by the given effect.\r\n * @property {Boolean} transformedUv - Indicates whether the effect transforms UV coordinates in the fragment shader.\r\n * @property {Boolean} readDepth - Indicates whether the effect actually uses depth in the fragment shader.\r\n */\r\n\r\nfunction integrateEffect(prefix, effect, shaderParts, blendModes, defines, uniforms, attributes) {\r\n\r\n\tconst functionRegExp = /(?:\\w+\\s+(\\w+)\\([\\w\\s,]*\\)\\s*{[^}]+})/g;\r\n\tconst varyingRegExp = /(?:varying\\s+\\w+\\s+(\\w*))/g;\r\n\r\n\tconst blendMode = effect.blendMode;\r\n\tconst shaders = new Map([\r\n\t\t[\"fragment\", effect.fragmentShader],\r\n\t\t[\"vertex\", effect.vertexShader]\r\n\t]);\r\n\r\n\tconst mainImageExists = (shaders.get(\"fragment\") !== undefined && shaders.get(\"fragment\").indexOf(\"mainImage\") >= 0);\r\n\tconst mainUvExists = (shaders.get(\"fragment\") !== undefined && shaders.get(\"fragment\").indexOf(\"mainUv\") >= 0);\r\n\r\n\tlet varyings = [], names = [];\r\n\tlet transformedUv = false;\r\n\tlet readDepth = false;\r\n\r\n\tif(shaders.get(\"fragment\") === undefined) {\r\n\r\n\t\tconsole.error(\"Missing fragment shader\", effect);\r\n\r\n\t} else if(mainUvExists && (attributes & EffectAttribute.CONVOLUTION) !== 0) {\r\n\r\n\t\tconsole.error(\"Effects that transform UV coordinates are incompatible with convolution effects\", effect);\r\n\r\n\t} else if(!mainImageExists && !mainUvExists) {\r\n\r\n\t\tconsole.error(\"The fragment shader contains neither a mainImage nor a mainUv function\", effect);\r\n\r\n\t} else {\r\n\r\n\t\tif(mainUvExists) {\r\n\r\n\t\t\tshaderParts.set(Section.FRAGMENT_MAIN_UV, shaderParts.get(Section.FRAGMENT_MAIN_UV) +\r\n\t\t\t\t\"\\t\" + prefix + \"MainUv(UV);\\n\");\r\n\r\n\t\t\ttransformedUv = true;\r\n\r\n\t\t}\r\n\r\n\t\tif(shaders.get(\"vertex\") !== null && shaders.get(\"vertex\").indexOf(\"mainSupport\") >= 0) {\r\n\r\n\t\t\tlet string = \"\\t\" + prefix + \"MainSupport(\";\r\n\r\n\t\t\t// Check if the vertex shader expects uv coordinates.\r\n\t\t\tif(shaders.get(\"vertex\").indexOf(\"uv\") >= 0) {\r\n\r\n\t\t\t\tstring += \"vUv\";\r\n\r\n\t\t\t}\r\n\r\n\t\t\tstring += \");\\n\";\r\n\r\n\t\t\tshaderParts.set(Section.VERTEX_MAIN_SUPPORT,\r\n\t\t\t\tshaderParts.get(Section.VERTEX_MAIN_SUPPORT) + string);\r\n\r\n\t\t\tvaryings = varyings.concat(findSubstrings(varyingRegExp, shaders.get(\"vertex\")));\r\n\t\t\tnames = names.concat(varyings).concat(findSubstrings(functionRegExp, shaders.get(\"vertex\")));\r\n\r\n\t\t}\r\n\r\n\t\tnames = names.concat(findSubstrings(functionRegExp, shaders.get(\"fragment\")))\r\n\t\t\t.concat(Array.from(effect.uniforms.keys()))\r\n\t\t\t.concat(Array.from(effect.defines.keys()));\r\n\r\n\t\t// Store prefixed uniforms and macros.\r\n\t\teffect.uniforms.forEach((value, key) => uniforms.set(prefix + key.charAt(0).toUpperCase() + key.slice(1), value));\r\n\t\teffect.defines.forEach((value, key) => defines.set(prefix + key.charAt(0).toUpperCase() + key.slice(1), value));\r\n\r\n\t\t// Prefix varyings, functions, uniforms and macros.\r\n\t\tprefixSubstrings(prefix, names, defines);\r\n\t\tprefixSubstrings(prefix, names, shaders);\r\n\r\n\t\t// Collect unique blend modes.\r\n\t\tblendModes.set(blendMode.blendFunction, blendMode);\r\n\r\n\t\tif(mainImageExists) {\r\n\r\n\t\t\tlet string = prefix + \"MainImage(color0, UV, \";\r\n\r\n\t\t\t// The effect may sample depth in a different shader.\r\n\t\t\tif((attributes & EffectAttribute.DEPTH) !== 0 && shaders.get(\"fragment\").indexOf(\"depth\") >= 0) {\r\n\r\n\t\t\t\tstring += \"depth, \";\r\n\t\t\t\treadDepth = true;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tstring += \"color1);\\n\\t\";\r\n\r\n\t\t\t// Include the blend opacity uniform of this effect.\r\n\t\t\tconst blendOpacity = prefix + \"BlendOpacity\";\r\n\t\t\tuniforms.set(blendOpacity, blendMode.opacity);\r\n\r\n\t\t\t// Blend the result of this effect with the input color.\r\n\t\t\tstring += \"color0 = blend\" + blendMode.blendFunction +\r\n\t\t\t\t\"(color0, color1, \" + blendOpacity + \");\\n\\n\\t\";\r\n\r\n\t\t\tshaderParts.set(Section.FRAGMENT_MAIN_IMAGE,\r\n\t\t\t\tshaderParts.get(Section.FRAGMENT_MAIN_IMAGE) + string);\r\n\r\n\t\t\tshaderParts.set(Section.FRAGMENT_HEAD, shaderParts.get(Section.FRAGMENT_HEAD) +\r\n\t\t\t\t\"uniform float \" + blendOpacity + \";\\n\\n\");\r\n\r\n\t\t}\r\n\r\n\t\t// Include the modified code in the final shader.\r\n\t\tshaderParts.set(Section.FRAGMENT_HEAD, shaderParts.get(Section.FRAGMENT_HEAD) +\r\n\t\t\tshaders.get(\"fragment\") + \"\\n\");\r\n\r\n\t\tif(shaders.get(\"vertex\") !== null) {\r\n\r\n\t\t\tshaderParts.set(Section.VERTEX_HEAD, shaderParts.get(Section.VERTEX_HEAD) +\r\n\t\t\t\tshaders.get(\"vertex\") + \"\\n\");\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\treturn { varyings, transformedUv, readDepth };\r\n\r\n}\r\n\r\n/**\r\n * An effect pass.\r\n *\r\n * Use this pass to combine {@link Effect} instances.\r\n */\r\n\r\nclass EffectPass extends Pass {\r\n\r\n\t/**\r\n\t * Constructs a new effect pass.\r\n\t *\r\n\t * The provided effects will be organized and merged for optimal performance.\r\n\t *\r\n\t * @param {Camera} camera - The main camera. The camera's type and settings will be available to all effects.\r\n\t * @param {...Effect} effects - The effects that will be rendered by this pass.\r\n\t */\r\n\r\n\tconstructor(camera, ...effects) {\r\n\r\n\t\tsuper(\"EffectPass\");\r\n\r\n\t\tthis.setFullscreenMaterial(new EffectMaterial(null, null, null, camera));\r\n\r\n\t\t/**\r\n\t\t * The effects, sorted by attribute priority, DESC.\r\n\t\t *\r\n\t\t * @type {Effect[]}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.effects = effects.sort((a, b) => (b.attributes - a.attributes));\r\n\r\n\t\t/**\r\n\t\t * Indicates whether this pass should skip rendering.\r\n\t\t *\r\n\t\t * Effects will still be updated, even if this flag is true.\r\n\t\t *\r\n\t\t * @type {Boolean}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.skipRendering = false;\r\n\r\n\t\t/**\r\n\t\t * The amount of shader uniforms that this pass uses.\r\n\t\t *\r\n\t\t * @type {Number}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.uniforms = 0;\r\n\r\n\t\t/**\r\n\t\t * The amount of shader varyings that this pass uses.\r\n\t\t *\r\n\t\t * @type {Number}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.varyings = 0;\r\n\r\n\t\t/**\r\n\t\t * A time offset.\r\n\t\t *\r\n\t\t * Elapsed time will start at this value.\r\n\t\t *\r\n\t\t * @type {Number}\r\n\t\t */\r\n\r\n\t\tthis.minTime = 1.0;\r\n\r\n\t\t/**\r\n\t\t * The maximum time.\r\n\t\t *\r\n\t\t * If the elapsed time exceeds this value, it will be reset.\r\n\t\t *\r\n\t\t * @type {Number}\r\n\t\t */\r\n\r\n\t\tthis.maxTime = 1e3;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * The current render size.\r\n\t *\r\n\t * @type {Vector2}\r\n\t * @private\r\n\t */\r\n\r\n\tget size() {\r\n\r\n\t\treturn this.getFullscreenMaterial().uniforms.resolution.value;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates whether dithering is enabled.\r\n\t *\r\n\t * Color quantization reduces banding artifacts but degrades performance.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tget dithering() {\r\n\r\n\t\treturn this.getFullscreenMaterial().dithering;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Enables or disables dithering.\r\n\t *\r\n\t * Note that some effects have their own dithering setting.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tset dithering(value) {\r\n\r\n\t\tconst material = this.getFullscreenMaterial();\r\n\r\n\t\tif(material.dithering !== value) {\r\n\r\n\t\t\tmaterial.dithering = value;\r\n\t\t\tmaterial.needsUpdate = true;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the compound shader material.\r\n\t *\r\n\t * @private\r\n\t */\r\n\r\n\tupdateMaterial() {\r\n\r\n\t\tconst blendRegExp = /\\bblend\\b/g;\r\n\r\n\t\tconst shaderParts = new Map([\r\n\t\t\t[Section.FRAGMENT_HEAD, \"\"],\r\n\t\t\t[Section.FRAGMENT_MAIN_UV, \"\"],\r\n\t\t\t[Section.FRAGMENT_MAIN_IMAGE, \"\"],\r\n\t\t\t[Section.VERTEX_HEAD, \"\"],\r\n\t\t\t[Section.VERTEX_MAIN_SUPPORT, \"\"]\r\n\t\t]);\r\n\r\n\t\tconst blendModes = new Map();\r\n\t\tconst defines = new Map();\r\n\t\tconst uniforms = new Map();\r\n\t\tconst extensions = new Set();\r\n\r\n\t\tlet id = 0, varyings = 0, attributes = 0;\r\n\t\tlet transformedUv = false;\r\n\t\tlet readDepth = false;\r\n\t\tlet result;\r\n\r\n\t\tfor(const effect of this.effects) {\r\n\r\n\t\t\tif(effect.blendMode.blendFunction === BlendFunction.SKIP) {\r\n\r\n\t\t\t\t// Check if this effect relies on depth and then continue.\r\n\t\t\t\tattributes |= (effect.attributes & EffectAttribute.DEPTH);\r\n\r\n\t\t\t} else if((attributes & EffectAttribute.CONVOLUTION) !== 0 && (effect.attributes & EffectAttribute.CONVOLUTION) !== 0) {\r\n\r\n\t\t\t\tconsole.error(\"Convolution effects cannot be merged\", effect);\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tattributes |= effect.attributes;\r\n\r\n\t\t\t\tresult = integrateEffect((\"e\" + id++), effect, shaderParts, blendModes, defines, uniforms, attributes);\r\n\r\n\t\t\t\tvaryings += result.varyings.length;\r\n\t\t\t\ttransformedUv = transformedUv || result.transformedUv;\r\n\t\t\t\treadDepth = readDepth || result.readDepth;\r\n\r\n\t\t\t\tif(effect.extensions !== null) {\r\n\r\n\t\t\t\t\t// Collect the WebGL extensions that are required by this effect.\r\n\t\t\t\t\tfor(const extension of effect.extensions) {\r\n\r\n\t\t\t\t\t\textensions.add(extension);\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// Integrate the relevant blend functions.\r\n\t\tfor(const blendMode of blendModes.values()) {\r\n\r\n\t\t\tshaderParts.set(Section.FRAGMENT_HEAD, shaderParts.get(Section.FRAGMENT_HEAD) +\r\n\t\t\t\tblendMode.getShaderCode().replace(blendRegExp, \"blend\" + blendMode.blendFunction) + \"\\n\");\r\n\r\n\t\t}\r\n\r\n\t\t// Check if any effect relies on depth.\r\n\t\tif((attributes & EffectAttribute.DEPTH) !== 0) {\r\n\r\n\t\t\t// Only read depth if any effect actually uses this information.\r\n\t\t\tif(readDepth) {\r\n\r\n\t\t\t\tshaderParts.set(Section.FRAGMENT_MAIN_IMAGE, \"float depth = readDepth(UV);\\n\\n\\t\" +\r\n\t\t\t\t\tshaderParts.get(Section.FRAGMENT_MAIN_IMAGE));\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// Only request a depth texture if none has been provided yet.\r\n\t\t\tthis.needsDepthTexture = (this.getDepthTexture() === null);\r\n\r\n\t\t}\r\n\r\n\t\t// Check if any effect transforms UVs in the fragment shader.\r\n\t\tif(transformedUv) {\r\n\r\n\t\t\tshaderParts.set(Section.FRAGMENT_MAIN_UV, \"vec2 transformedUv = vUv;\\n\" +\r\n\t\t\t\tshaderParts.get(Section.FRAGMENT_MAIN_UV));\r\n\r\n\t\t\tdefines.set(\"UV\", \"transformedUv\");\r\n\r\n\t\t} else {\r\n\r\n\t\t\tdefines.set(\"UV\", \"vUv\");\r\n\r\n\t\t}\r\n\r\n\t\tshaderParts.forEach((value, key, map) => map.set(key, value.trim()));\r\n\r\n\t\tthis.uniforms = uniforms.size;\r\n\t\tthis.varyings = varyings;\r\n\r\n\t\tthis.skipRendering = (id === 0);\r\n\t\tthis.needsSwap = !this.skipRendering;\r\n\r\n\t\tconst material = this.getFullscreenMaterial();\r\n\t\tmaterial.setShaderParts(shaderParts).setDefines(defines).setUniforms(uniforms);\r\n\t\tmaterial.extensions = {};\r\n\r\n\t\tif(extensions.size > 0) {\r\n\r\n\t\t\t// Enable required WebGL extensions.\r\n\t\t\tfor(const extension of extensions) {\r\n\r\n\t\t\t\tmaterial.extensions[extension] = true;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the shader material.\r\n\t *\r\n\t * Warning: This method triggers a relatively expensive shader recompilation.\r\n\t */\r\n\r\n\trecompile() {\r\n\r\n\t\tthis.updateMaterial();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the current depth texture.\r\n\t *\r\n\t * @return {Texture} The current depth texture, or null if there is none.\r\n\t */\r\n\r\n\tgetDepthTexture() {\r\n\r\n\t\treturn this.getFullscreenMaterial().uniforms.depthBuffer.value;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the depth texture.\r\n\t *\r\n\t * @param {Texture} depthTexture - A depth texture.\r\n\t * @param {Number} [depthPacking=0] - The depth packing.\r\n\t */\r\n\r\n\tsetDepthTexture(depthTexture, depthPacking = 0) {\r\n\r\n\t\tconst material = this.getFullscreenMaterial();\r\n\t\tmaterial.uniforms.depthBuffer.value = depthTexture;\r\n\t\tmaterial.depthPacking = depthPacking;\r\n\t\tmaterial.needsUpdate = true;\r\n\r\n\t\tfor(const effect of this.effects) {\r\n\r\n\t\t\teffect.setDepthTexture(depthTexture, depthPacking);\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Renders the effect.\r\n\t *\r\n\t * @param {WebGLRenderer} renderer - The renderer.\r\n\t * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\r\n\t * @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.\r\n\t * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\r\n\t * @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.\r\n\t */\r\n\r\n\trender(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\r\n\r\n\t\tconst material = this.getFullscreenMaterial();\r\n\t\tconst time = material.uniforms.time.value + deltaTime;\r\n\r\n\t\tfor(const effect of this.effects) {\r\n\r\n\t\t\teffect.update(renderer, inputBuffer, deltaTime);\r\n\r\n\t\t}\r\n\r\n\t\tif(!this.skipRendering || this.renderToScreen) {\r\n\r\n\t\t\tmaterial.uniforms.inputBuffer.value = inputBuffer.texture;\r\n\t\t\tmaterial.uniforms.time.value = (time <= this.maxTime) ? time : this.minTime;\r\n\t\t\trenderer.setRenderTarget(this.renderToScreen ? null : outputBuffer);\r\n\t\t\trenderer.render(this.scene, this.camera);\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the size of this pass.\r\n\t *\r\n\t * @param {Number} width - The width.\r\n\t * @param {Number} height - The height.\r\n\t */\r\n\r\n\tsetSize(width, height) {\r\n\r\n\t\tthis.getFullscreenMaterial().setSize(width, height);\r\n\r\n\t\tfor(const effect of this.effects) {\r\n\r\n\t\t\teffect.setSize(width, height);\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Performs initialization tasks.\r\n\t *\r\n\t * @param {WebGLRenderer} renderer - The renderer.\r\n\t * @param {Boolean} alpha - Whether the renderer uses the alpha channel or not.\r\n\t */\r\n\r\n\tinitialize(renderer, alpha) {\r\n\r\n\t\t// Initialize effects before building the final shader.\r\n\t\tfor(const effect of this.effects) {\r\n\r\n\t\t\teffect.initialize(renderer, alpha);\r\n\r\n\t\t}\r\n\r\n\t\t// Initialize the fullscreen material.\r\n\t\tthis.updateMaterial();\r\n\r\n\t\t// Compare required resources with capabilities.\r\n\t\tconst capabilities = renderer.capabilities;\r\n\t\tlet max = Math.min(capabilities.maxFragmentUniforms, capabilities.maxVertexUniforms);\r\n\r\n\t\tif(this.uniforms > max) {\r\n\r\n\t\t\tconsole.warn(\"The current rendering context doesn't support more than \" + max + \" uniforms, but \" + this.uniforms + \" were defined\");\r\n\r\n\t\t}\r\n\r\n\t\tmax = capabilities.maxVaryings;\r\n\r\n\t\tif(this.varyings > max) {\r\n\r\n\t\t\tconsole.warn(\"The current rendering context doesn't support more than \" + max + \" varyings, but \" + this.varyings + \" were defined\");\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes disposable objects.\r\n\t *\r\n\t * This pass will be inoperative after this method was called!\r\n\t */\r\n\r\n\tdispose() {\r\n\r\n\t\tsuper.dispose();\r\n\r\n\t\tfor(const effect of this.effects) {\r\n\r\n\t\t\teffect.dispose();\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\n\n/**\r\n * A mask pass.\r\n *\r\n * This pass requires that the input and output buffers have a stencil buffer.\r\n * You can enable the stencil buffer via the {@link EffectComposer} constructor.\r\n */\r\n\r\nclass MaskPass extends Pass {\r\n\r\n\t/**\r\n\t * Constructs a new mask pass.\r\n\t *\r\n\t * @param {Scene} scene - The scene to render.\r\n\t * @param {Camera} camera - The camera to use.\r\n\t */\r\n\r\n\tconstructor(scene, camera) {\r\n\r\n\t\tsuper(\"MaskPass\", scene, camera);\r\n\r\n\t\tthis.needsSwap = false;\r\n\r\n\t\t/**\r\n\t\t * A clear pass.\r\n\t\t *\r\n\t\t * @type {ClearPass}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.clearPass = new ClearPass(false, false, true);\r\n\r\n\t\t/**\r\n\t\t * Inverse flag.\r\n\t\t *\r\n\t\t * @type {Boolean}\r\n\t\t */\r\n\r\n\t\tthis.inverse = false;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates whether this pass should clear the stencil buffer.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tget clear() {\r\n\r\n\t\treturn this.clearPass.enabled;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Enables or disables auto clear.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tset clear(value) {\r\n\r\n\t\tthis.clearPass.enabled = value;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Renders the effect.\r\n\t *\r\n\t * @param {WebGLRenderer} renderer - The renderer.\r\n\t * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\r\n\t * @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.\r\n\t * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\r\n\t * @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.\r\n\t */\r\n\r\n\trender(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\r\n\r\n\t\tconst context = renderer.getContext();\r\n\t\tconst buffers = renderer.state.buffers;\r\n\r\n\t\tconst scene = this.scene;\r\n\t\tconst camera = this.camera;\r\n\t\tconst clearPass = this.clearPass;\r\n\r\n\t\tconst writeValue = this.inverse ? 0 : 1;\r\n\t\tconst clearValue = 1 - writeValue;\r\n\r\n\t\t// Don't update color or depth.\r\n\t\tbuffers.color.setMask(false);\r\n\t\tbuffers.depth.setMask(false);\r\n\r\n\t\t// Lock the buffers.\r\n\t\tbuffers.color.setLocked(true);\r\n\t\tbuffers.depth.setLocked(true);\r\n\r\n\t\t// Configure the stencil.\r\n\t\tbuffers.stencil.setTest(true);\r\n\t\tbuffers.stencil.setOp(context.REPLACE, context.REPLACE, context.REPLACE);\r\n\t\tbuffers.stencil.setFunc(context.ALWAYS, writeValue, 0xffffffff);\r\n\t\tbuffers.stencil.setClear(clearValue);\r\n\t\tbuffers.stencil.setLocked(true);\r\n\r\n\t\t// Clear the stencil.\r\n\t\tif(this.clear) {\r\n\r\n\t\t\tif(this.renderToScreen) {\r\n\r\n\t\t\t\tclearPass.render(renderer, null);\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tclearPass.render(renderer, inputBuffer);\r\n\t\t\t\tclearPass.render(renderer, outputBuffer);\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// Draw the mask.\r\n\t\tif(this.renderToScreen) {\r\n\r\n\t\t\trenderer.setRenderTarget(null);\r\n\t\t\trenderer.render(scene, camera);\r\n\r\n\t\t} else {\r\n\r\n\t\t\trenderer.setRenderTarget(inputBuffer);\r\n\t\t\trenderer.render(scene, camera);\r\n\t\t\trenderer.setRenderTarget(outputBuffer);\r\n\t\t\trenderer.render(scene, camera);\r\n\r\n\t\t}\r\n\r\n\t\t// Unlock the buffers.\r\n\t\tbuffers.color.setLocked(false);\r\n\t\tbuffers.depth.setLocked(false);\r\n\r\n\t\t// Only render where the stencil is set to 1.\r\n\t\tbuffers.stencil.setLocked(false);\r\n\t\tbuffers.stencil.setFunc(context.EQUAL, 1, 0xffffffff);\r\n\t\tbuffers.stencil.setOp(context.KEEP, context.KEEP, context.KEEP);\r\n\t\tbuffers.stencil.setLocked(true);\r\n\r\n\t}\r\n\r\n}\n\n/**\r\n * A pass that renders the normals of a given scene.\r\n */\r\n\r\nclass NormalPass extends Pass {\r\n\r\n\t/**\r\n\t * Constructs a new normal pass.\r\n\t *\r\n\t * @param {Scene} scene - The scene to render.\r\n\t * @param {Camera} camera - The camera to use to render the scene.\r\n\t * @param {Object} [options] - The options.\r\n\t * @param {Number} [options.resolutionScale=1.0] - The render texture resolution scale, relative to the main frame buffer size.\r\n\t * @param {WebGLRenderTarget} [options.renderTarget] - A custom render target.\r\n\t */\r\n\r\n\tconstructor(scene, camera, { resolutionScale = 1.0, renderTarget } = {}) {\r\n\r\n\t\tsuper(\"NormalPass\");\r\n\r\n\t\tthis.needsSwap = false;\r\n\r\n\t\t/**\r\n\t\t * A render pass.\r\n\t\t *\r\n\t\t * @type {RenderPass}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.renderPass = new RenderPass(scene, camera, new MeshNormalMaterial({\r\n\t\t\tmorphTargets: true,\r\n\t\t\tskinning: true\r\n\t\t}));\r\n\r\n\t\tconst clearPass = this.renderPass.getClearPass();\r\n\t\tclearPass.overrideClearColor = new Color(0x7777ff);\r\n\t\tclearPass.overrideClearAlpha = 1.0;\r\n\r\n\t\t/**\r\n\t\t * A render target that contains the scene normals.\r\n\t\t *\r\n\t\t * @type {WebGLRenderTarget}\r\n\t\t */\r\n\r\n\t\tthis.renderTarget = renderTarget;\r\n\r\n\t\tif(this.renderTarget === undefined) {\r\n\r\n\t\t\tthis.renderTarget = new WebGLRenderTarget(1, 1, {\r\n\t\t\t\tminFilter: LinearFilter,\r\n\t\t\t\tmagFilter: LinearFilter,\r\n\t\t\t\tformat: RGBFormat,\r\n\t\t\t\tstencilBuffer: false\r\n\t\t\t});\r\n\r\n\t\t\tthis.renderTarget.texture.name = \"NormalPass.Target\";\r\n\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * The current resolution scale.\r\n\t\t *\r\n\t\t * @type {Number}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.resolutionScale = resolutionScale;\r\n\r\n\t\t/**\r\n\t\t * The original resolution.\r\n\t\t *\r\n\t\t * @type {Vector2}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.originalSize = new Vector2();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the current resolution scale.\r\n\t *\r\n\t * @return {Number} The resolution scale.\r\n\t */\r\n\r\n\tgetResolutionScale() {\r\n\r\n\t\treturn this.resolutionScale;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the resolution scale.\r\n\t *\r\n\t * @param {Number} scale - The new resolution scale.\r\n\t */\r\n\r\n\tsetResolutionScale(scale) {\r\n\r\n\t\tthis.resolutionScale = scale;\r\n\t\tthis.setSize(this.originalSize.x, this.originalSize.y);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Renders the scene normals.\r\n\t *\r\n\t * @param {WebGLRenderer} renderer - The renderer.\r\n\t * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\r\n\t * @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.\r\n\t * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\r\n\t * @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.\r\n\t */\r\n\r\n\trender(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\r\n\r\n\t\tconst renderTarget = this.renderToScreen ? null : this.renderTarget;\r\n\t\tthis.renderPass.render(renderer, renderTarget, renderTarget);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the size of this pass.\r\n\t *\r\n\t * @param {Number} width - The width.\r\n\t * @param {Number} height - The height.\r\n\t */\r\n\r\n\tsetSize(width, height) {\r\n\r\n\t\tthis.originalSize.set(width, height);\r\n\r\n\t\tthis.renderTarget.setSize(\r\n\t\t\tMath.max(1, Math.round(width * this.resolutionScale)),\r\n\t\t\tMath.max(1, Math.round(height * this.resolutionScale))\r\n\t\t);\r\n\r\n\t}\r\n\r\n}\n\n/**\r\n * A pass that renders the result from a previous pass to another render target.\r\n */\r\n\r\nclass SavePass extends Pass {\r\n\r\n\t/**\r\n\t * Constructs a new save pass.\r\n\t *\r\n\t * @param {WebGLRenderTarget} [renderTarget] - A render target.\r\n\t * @param {Boolean} [resize=true] - Whether the render target should adjust to the size of the input buffer.\r\n\t */\r\n\r\n\tconstructor(renderTarget, resize = true) {\r\n\r\n\t\tsuper(\"SavePass\");\r\n\r\n\t\tthis.setFullscreenMaterial(new CopyMaterial());\r\n\r\n\t\tthis.needsSwap = false;\r\n\r\n\t\t/**\r\n\t\t * The render target.\r\n\t\t *\r\n\t\t * @type {WebGLRenderTarget}\r\n\t\t */\r\n\r\n\t\tthis.renderTarget = renderTarget;\r\n\r\n\t\tif(renderTarget === undefined) {\r\n\r\n\t\t\tthis.renderTarget = new WebGLRenderTarget(1, 1, {\r\n\t\t\t\tminFilter: LinearFilter,\r\n\t\t\t\tmagFilter: LinearFilter,\r\n\t\t\t\tstencilBuffer: false,\r\n\t\t\t\tdepthBuffer: false\r\n\t\t\t});\r\n\r\n\t\t\tthis.renderTarget.texture.name = \"SavePass.Target\";\r\n\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Indicates whether the render target should be resized automatically.\r\n\t\t *\r\n\t\t * @type {Boolean}\r\n\t\t */\r\n\r\n\t\tthis.resize = resize;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Saves the input buffer.\r\n\t *\r\n\t * @param {WebGLRenderer} renderer - The renderer.\r\n\t * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\r\n\t * @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.\r\n\t * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\r\n\t * @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.\r\n\t */\r\n\r\n\trender(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\r\n\r\n\t\tthis.getFullscreenMaterial().uniforms.inputBuffer.value = inputBuffer.texture;\r\n\r\n\t\trenderer.setRenderTarget(this.renderToScreen ? null : this.renderTarget);\r\n\t\trenderer.render(this.scene, this.camera);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the size of this pass.\r\n\t *\r\n\t * @param {Number} width - The width.\r\n\t * @param {Number} height - The height.\r\n\t */\r\n\r\n\tsetSize(width, height) {\r\n\r\n\t\tif(this.resize) {\r\n\r\n\t\t\twidth = Math.max(1, width);\r\n\t\t\theight = Math.max(1, height);\r\n\r\n\t\t\tthis.renderTarget.setSize(width, height);\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\n\n/**\r\n * A shader pass.\r\n *\r\n * Renders any shader material as a fullscreen effect.\r\n *\r\n * This pass should not be used to create multiple chained effects. For a more\r\n * efficient solution, please refer to the {@link EffectPass}.\r\n */\r\n\r\nclass ShaderPass extends Pass {\r\n\r\n\t/**\r\n\t * Constructs a new shader pass.\r\n\t *\r\n\t * @param {ShaderMaterial} material - A shader material.\r\n\t * @param {String} [input=\"inputBuffer\"] - The name of the input buffer uniform.\r\n\t */\r\n\r\n\tconstructor(material, input = \"inputBuffer\") {\r\n\r\n\t\tsuper(\"ShaderPass\");\r\n\r\n\t\tthis.setFullscreenMaterial(material);\r\n\r\n\t\t/**\r\n\t\t * The input buffer uniform.\r\n\t\t *\r\n\t\t * @type {String}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.uniform = null;\r\n\t\tthis.setInput(input);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the name of the input buffer uniform.\r\n\t *\r\n\t * Most fullscreen materials modify texels from an input texture. This pass\r\n\t * automatically assigns the main input buffer to the uniform identified by\r\n\t * the given name.\r\n\t *\r\n\t * @param {String} input - The name of the input buffer uniform.\r\n\t */\r\n\r\n\tsetInput(input) {\r\n\r\n\t\tconst material = this.getFullscreenMaterial();\r\n\r\n\t\tthis.uniform = null;\r\n\r\n\t\tif(material !== null) {\r\n\r\n\t\t\tconst uniforms = material.uniforms;\r\n\r\n\t\t\tif(uniforms !== undefined && uniforms[input] !== undefined) {\r\n\r\n\t\t\t\tthis.uniform = uniforms[input];\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Renders the effect.\r\n\t *\r\n\t * @param {WebGLRenderer} renderer - The renderer.\r\n\t * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\r\n\t * @param {WebGLRenderTarget} outputBuffer - A frame buffer that serves as the output render target unless this pass renders to screen.\r\n\t * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\r\n\t * @param {Boolean} [stencilTest] - Indicates whether a stencil mask is active.\r\n\t */\r\n\r\n\trender(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\r\n\r\n\t\tif(this.uniform !== null) {\r\n\r\n\t\t\tthis.uniform.value = inputBuffer.texture;\r\n\r\n\t\t}\r\n\r\n\t\trenderer.setRenderTarget(this.renderToScreen ? null : outputBuffer);\r\n\t\trenderer.render(this.scene, this.camera);\r\n\r\n\t}\r\n\r\n}\n\n/**\r\n * The EffectComposer may be used in place of a normal WebGLRenderer.\r\n *\r\n * The auto clear behaviour of the provided renderer will be disabled to prevent\r\n * unnecessary clear operations.\r\n *\r\n * It is common practice to use a {@link RenderPass} as the first pass to\r\n * automatically clear the buffers and render a scene for further processing.\r\n *\r\n * @implements {Resizable}\r\n * @implements {Disposable}\r\n */\r\n\r\nclass EffectComposer {\r\n\r\n\t/**\r\n\t * Constructs a new effect composer.\r\n\t *\r\n\t * @param {WebGLRenderer} renderer - The renderer that should be used.\r\n\t * @param {Object} [options] - The options.\r\n\t * @param {Boolean} [options.depthBuffer=true] - Whether the main render targets should have a depth buffer.\r\n\t * @param {Boolean} [options.stencilBuffer=false] - Whether the main render targets should have a stencil buffer.\r\n\t */\r\n\r\n\tconstructor(renderer = null, { depthBuffer = true, stencilBuffer = false } = {}) {\r\n\r\n\t\t/**\r\n\t\t * The renderer.\r\n\t\t *\r\n\t\t * @type {WebGLRenderer}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.renderer = renderer;\r\n\r\n\t\t/**\r\n\t\t * The input buffer.\r\n\t\t *\r\n\t\t * Reading from and writing to the same render target should be avoided.\r\n\t\t * Therefore, two seperate yet identical buffers are used.\r\n\t\t *\r\n\t\t * @type {WebGLRenderTarget}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.inputBuffer = null;\r\n\r\n\t\t/**\r\n\t\t * The output buffer.\r\n\t\t *\r\n\t\t * @type {WebGLRenderTarget}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.outputBuffer = null;\r\n\r\n\t\tif(this.renderer !== null) {\r\n\r\n\t\t\tthis.renderer.autoClear = false;\r\n\t\t\tthis.inputBuffer = this.createBuffer(depthBuffer, stencilBuffer);\r\n\t\t\tthis.outputBuffer = this.inputBuffer.clone();\r\n\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * A copy pass used for copying masked scenes.\r\n\t\t *\r\n\t\t * @type {ShaderPass}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.copyPass = new ShaderPass(new CopyMaterial());\r\n\r\n\t\t/**\r\n\t\t * A depth texture.\r\n\t\t *\r\n\t\t * @type {DepthTexture}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.depthTexture = null;\r\n\r\n\t\t/**\r\n\t\t * The passes.\r\n\t\t *\r\n\t\t * @type {Pass[]}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.passes = [];\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the WebGL renderer.\r\n\t *\r\n\t * You may replace the renderer at any time by using\r\n\t * {@link EffectComposer#replaceRenderer}.\r\n\t *\r\n\t * @return {WebGLRenderer} The renderer.\r\n\t */\r\n\r\n\tgetRenderer() {\r\n\r\n\t\treturn this.renderer;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Replaces the current renderer with the given one.\r\n\t *\r\n\t * The auto clear mechanism of the provided renderer will be disabled. If the\r\n\t * new render size differs from the previous one, all passes will be updated.\r\n\t *\r\n\t * By default, the DOM element of the current renderer will automatically be\r\n\t * removed from its parent node and the DOM element of the new renderer will\r\n\t * take its place.\r\n\t *\r\n\t * @param {WebGLRenderer} renderer - The new renderer.\r\n\t * @param {Boolean} updateDOM - Indicates whether the old canvas should be replaced by the new one in the DOM.\r\n\t * @return {WebGLRenderer} The old renderer.\r\n\t */\r\n\r\n\treplaceRenderer(renderer, updateDOM = true) {\r\n\r\n\t\tconst oldRenderer = this.renderer;\r\n\r\n\t\tif(oldRenderer !== null && oldRenderer !== renderer) {\r\n\r\n\t\t\tconst oldSize = oldRenderer.getSize(new Vector2());\r\n\t\t\tconst newSize = renderer.getSize(new Vector2());\r\n\t\t\tconst parent = oldRenderer.domElement.parentNode;\r\n\r\n\t\t\tthis.renderer = renderer;\r\n\t\t\tthis.renderer.autoClear = false;\r\n\r\n\t\t\tif(!oldSize.equals(newSize)) {\r\n\r\n\t\t\t\tthis.setSize();\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(updateDOM && parent !== null) {\r\n\r\n\t\t\t\tparent.removeChild(oldRenderer.domElement);\r\n\t\t\t\tparent.appendChild(renderer.domElement);\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn oldRenderer;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a depth texture attachment that will be provided to all passes.\r\n\t *\r\n\t * Note: When a shader reads from a depth texture and writes to a render\r\n\t * target that uses the same depth texture attachment, the depth information\r\n\t * will be lost. This happens even if `depthWrite` is disabled.\r\n\t *\r\n\t * @private\r\n\t * @return {DepthTexture} The depth texture.\r\n\t */\r\n\r\n\tcreateDepthTexture() {\r\n\r\n\t\tconst depthTexture = this.depthTexture = new DepthTexture();\r\n\r\n\t\tif(this.inputBuffer.stencilBuffer) {\r\n\r\n\t\t\tdepthTexture.format = DepthStencilFormat;\r\n\t\t\tdepthTexture.type = UnsignedInt248Type;\r\n\r\n\t\t}\r\n\r\n\t\treturn depthTexture;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a new render target by replicating the renderer's canvas.\r\n\t *\r\n\t * The created render target uses a linear filter for texel minification and\r\n\t * magnification. Its render texture format depends on whether the renderer\r\n\t * uses the alpha channel. Mipmaps are disabled.\r\n\t *\r\n\t * @param {Boolean} depthBuffer - Whether the render target should have a depth buffer.\r\n\t * @param {Boolean} stencilBuffer - Whether the render target should have a stencil buffer.\r\n\t * @return {WebGLRenderTarget} A new render target that equals the renderer's canvas.\r\n\t */\r\n\r\n\tcreateBuffer(depthBuffer, stencilBuffer) {\r\n\r\n\t\tconst drawingBufferSize = this.renderer.getDrawingBufferSize(new Vector2());\r\n\t\tconst alpha = this.renderer.getContext().getContextAttributes().alpha;\r\n\r\n\t\tconst renderTarget = new WebGLRenderTarget(drawingBufferSize.width, drawingBufferSize.height, {\r\n\t\t\tminFilter: LinearFilter,\r\n\t\t\tmagFilter: LinearFilter,\r\n\t\t\tformat: alpha ? RGBAFormat : RGBFormat,\r\n\t\t\tdepthBuffer: depthBuffer,\r\n\t\t\tstencilBuffer: stencilBuffer\r\n\t\t});\r\n\r\n\t\trenderTarget.texture.name = \"EffectComposer.Buffer\";\r\n\t\trenderTarget.texture.generateMipmaps = false;\r\n\r\n\t\treturn renderTarget;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Adds a pass, optionally at a specific index.\r\n\t *\r\n\t * @param {Pass} pass - A new pass.\r\n\t * @param {Number} [index] - An index at which the pass should be inserted.\r\n\t */\r\n\r\n\taddPass(pass, index) {\r\n\r\n\t\tconst passes = this.passes;\r\n\t\tconst renderer = this.renderer;\r\n\t\tconst drawingBufferSize = renderer.getDrawingBufferSize(new Vector2());\r\n\r\n\t\tpass.setSize(drawingBufferSize.width, drawingBufferSize.height);\r\n\t\tpass.initialize(renderer, renderer.getContext().getContextAttributes().alpha);\r\n\r\n\t\tif(index !== undefined) {\r\n\r\n\t\t\tpasses.splice(index, 0, pass);\r\n\r\n\t\t} else {\r\n\r\n\t\t\tpasses.push(pass);\r\n\r\n\t\t}\r\n\r\n\t\tif(pass.needsDepthTexture || this.depthTexture !== null) {\r\n\r\n\t\t\tif(this.depthTexture === null) {\r\n\r\n\t\t\t\tconst depthTexture = this.createDepthTexture();\r\n\r\n\t\t\t\tfor(pass of passes) {\r\n\r\n\t\t\t\t\tpass.setDepthTexture(depthTexture);\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tpass.setDepthTexture(this.depthTexture);\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Removes a pass.\r\n\t *\r\n\t * @param {Pass} pass - The pass.\r\n\t */\r\n\r\n\tremovePass(pass) {\r\n\r\n\t\tconst passes = this.passes;\r\n\t\tconst removed = (passes.splice(passes.indexOf(pass), 1).length > 0);\r\n\r\n\t\tif(removed && this.depthTexture !== null) {\r\n\r\n\t\t\tconst reducer = (a, b) => a || b.needsDepthTexture;\r\n\t\t\tconst depthTextureRequired = passes.reduce(reducer, false);\r\n\r\n\t\t\tif(!depthTextureRequired) {\r\n\r\n\t\t\t\tthis.depthTexture.dispose();\r\n\t\t\t\tthis.depthTexture = null;\r\n\r\n\t\t\t\tthis.inputBuffer.depthTexture = null;\r\n\t\t\t\tthis.outputBuffer.depthTexture = null;\r\n\r\n\t\t\t\tfor(pass of passes) {\r\n\r\n\t\t\t\t\tpass.setDepthTexture(null);\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Renders all enabled passes in the order in which they were added.\r\n\t *\r\n\t * @param {Number} deltaTime - The time between the last frame and the current one in seconds.\r\n\t */\r\n\r\n\trender(deltaTime) {\r\n\r\n\t\tconst renderer = this.renderer;\r\n\t\tconst copyPass = this.copyPass;\r\n\r\n\t\tlet inputBuffer = this.inputBuffer;\r\n\t\tlet outputBuffer = this.outputBuffer;\r\n\r\n\t\tlet stencilTest = false;\r\n\t\tlet context, stencil, buffer;\r\n\r\n\t\tfor(const pass of this.passes) {\r\n\r\n\t\t\tif(pass.enabled) {\r\n\r\n\t\t\t\tpass.render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest);\r\n\r\n\t\t\t\tif(pass.needsSwap) {\r\n\r\n\t\t\t\t\tif(stencilTest) {\r\n\r\n\t\t\t\t\t\tcopyPass.renderToScreen = pass.renderToScreen;\r\n\t\t\t\t\t\tcontext = renderer.getContext();\r\n\t\t\t\t\t\tstencil = renderer.state.buffers.stencil;\r\n\r\n\t\t\t\t\t\t// Preserve the unaffected pixels.\r\n\t\t\t\t\t\tstencil.setFunc(context.NOTEQUAL, 1, 0xffffffff);\r\n\t\t\t\t\t\tcopyPass.render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest);\r\n\t\t\t\t\t\tstencil.setFunc(context.EQUAL, 1, 0xffffffff);\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbuffer = inputBuffer;\r\n\t\t\t\t\tinputBuffer = outputBuffer;\r\n\t\t\t\t\toutputBuffer = buffer;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(pass instanceof MaskPass) {\r\n\r\n\t\t\t\t\tstencilTest = true;\r\n\r\n\t\t\t\t} else if(pass instanceof ClearMaskPass) {\r\n\r\n\t\t\t\t\tstencilTest = false;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the size of the buffers and the renderer's output canvas.\r\n\t *\r\n\t * Every pass will be informed of the new size. It's up to each pass how that\r\n\t * information is used.\r\n\t *\r\n\t * If no width or height is specified, the render targets and passes will be\r\n\t * updated with the current size of the renderer.\r\n\t *\r\n\t * @param {Number} [width] - The width.\r\n\t * @param {Number} [height] - The height.\r\n\t * @param {Boolean} [updateStyle] - Determines whether the style of the canvas should be updated.\r\n\t */\r\n\r\n\tsetSize(width, height, updateStyle) {\r\n\r\n\t\tconst renderer = this.renderer;\r\n\r\n\t\tif(width === undefined || height === undefined) {\r\n\r\n\t\t\tconst size = renderer.getSize(new Vector2());\r\n\t\t\twidth = size.width; height = size.height;\r\n\r\n\t\t}\r\n\r\n\t\t// Update the logical render size.\r\n\t\trenderer.setSize(width, height, updateStyle);\r\n\r\n\t\t// The drawing buffer size takes the device pixel ratio into account.\r\n\t\tconst drawingBufferSize = renderer.getDrawingBufferSize(new Vector2());\r\n\r\n\t\tthis.inputBuffer.setSize(drawingBufferSize.width, drawingBufferSize.height);\r\n\t\tthis.outputBuffer.setSize(drawingBufferSize.width, drawingBufferSize.height);\r\n\r\n\t\tfor(const pass of this.passes) {\r\n\r\n\t\t\tpass.setSize(drawingBufferSize.width, drawingBufferSize.height);\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Resets this composer by deleting all passes and creating new buffers.\r\n\t */\r\n\r\n\treset() {\r\n\r\n\t\tconst renderTarget = this.createBuffer(\r\n\t\t\tthis.inputBuffer.depthBuffer,\r\n\t\t\tthis.inputBuffer.stencilBuffer\r\n\t\t);\r\n\r\n\t\tthis.dispose();\r\n\r\n\t\t// Reanimate.\r\n\t\tthis.inputBuffer = renderTarget;\r\n\t\tthis.outputBuffer = renderTarget.clone();\r\n\t\tthis.depthTexture = null;\r\n\t\tthis.copyPass = new ShaderPass(new CopyMaterial());\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Destroys this composer and all passes.\r\n\t *\r\n\t * This method deallocates all disposable objects created by the passes. It\r\n\t * also deletes the main frame buffers of this composer.\r\n\t */\r\n\r\n\tdispose() {\r\n\r\n\t\tfor(const pass of this.passes) {\r\n\r\n\t\t\tpass.dispose();\r\n\r\n\t\t}\r\n\r\n\t\tthis.passes = [];\r\n\r\n\t\tif(this.inputBuffer !== null) {\r\n\r\n\t\t\tthis.inputBuffer.dispose();\r\n\t\t\tthis.inputBuffer = null;\r\n\r\n\t\t}\r\n\r\n\t\tif(this.outputBuffer !== null) {\r\n\r\n\t\t\tthis.outputBuffer.dispose();\r\n\t\t\tthis.outputBuffer = null;\r\n\r\n\t\t}\r\n\r\n\t\tif(this.depthTexture !== null) {\r\n\r\n\t\t\tthis.depthTexture.dispose();\r\n\r\n\t\t}\r\n\r\n\t\tthis.copyPass.dispose();\r\n\r\n\t}\r\n\r\n}\n\n/**\r\n * The Resizable contract.\r\n *\r\n * Implemented by objects that can be resized.\r\n *\r\n * @interface\r\n */\r\n\r\nclass Resizable {\r\n\r\n\t/**\r\n\t * Sets the size of this object.\r\n\t *\r\n\t * @param {Number} width - The new width.\r\n\t * @param {Number} height - The new height.\r\n\t */\r\n\r\n\tsetSize(width, height) {}\r\n\r\n}\n\n/**\r\n * An object selection.\r\n */\r\n\r\nclass Selection extends Set {\r\n\r\n\t/**\r\n\t * Constructs a new selection.\r\n\t *\r\n\t * @param {Iterable} [iterable] - A collection of objects that should be added to this selection.\r\n\t * @param {Number} [layer=10] - A dedicated render layer for selected objects.\r\n\t */\r\n\r\n\tconstructor(iterable, layer = 10) {\r\n\r\n\t\tsuper();\r\n\r\n\t\t/**\r\n\t\t * The current render layer for selected objects.\r\n\t\t *\r\n\t\t * @type {Number}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.currentLayer = layer;\r\n\r\n\t\tif(iterable !== undefined) {\r\n\r\n\t\t\tthis.set(iterable);\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * A dedicated render layer for selected objects.\r\n\t *\r\n\t * This layer is set to 10 by default. If this collides with your own custom\r\n\t * layers, please change it to a free layer before rendering!\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tget layer() {\r\n\r\n\t\treturn this.currentLayer;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the render layer of selected objects.\r\n\t *\r\n\t * The current selection will be updated accordingly.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tset layer(value) {\r\n\r\n\t\tconst currentLayer = this.currentLayer;\r\n\r\n\t\tfor(const object of this) {\r\n\r\n\t\t\tobject.layers.disable(currentLayer);\r\n\t\t\tobject.layers.enable(value);\r\n\r\n\t\t}\r\n\r\n\t\tthis.currentLayer = value;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Clears this selection.\r\n\t *\r\n\t * @return {Selection} This selection.\r\n\t */\r\n\r\n\tclear() {\r\n\r\n\t\tconst layer = this.layer;\r\n\r\n\t\tfor(const object of this) {\r\n\r\n\t\t\tobject.layers.disable(layer);\r\n\r\n\t\t}\r\n\r\n\t\treturn super.clear();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Clears this selection and adds the given objects.\r\n\t *\r\n\t * @param {Iterable} objects - The objects that should be selected. This array will be copied.\r\n\t * @return {Selection} This selection.\r\n\t */\r\n\r\n\tset(objects) {\r\n\r\n\t\tthis.clear();\r\n\r\n\t\tfor(const object of objects) {\r\n\r\n\t\t\tthis.add(object);\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * An alias for {@link has}.\r\n\t *\r\n\t * @param {Object3D} object - An object.\r\n\t * @return {Number} Returns 0 if the given object is currently selected, or -1 otherwise.\r\n\t * @deprecated Added for backward compatibility. Use has instead.\r\n\t */\r\n\r\n\tindexOf(object) {\r\n\r\n\t\treturn this.has(object) ? 0 : -1;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Adds an object to this selection.\r\n\t *\r\n\t * @param {Object3D} object - The object that should be selected.\r\n\t * @return {Selection} This selection.\r\n\t */\r\n\r\n\tadd(object) {\r\n\r\n\t\tobject.layers.enable(this.layer);\r\n\t\tsuper.add(object);\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Removes an object from this selection.\r\n\t *\r\n\t * @param {Object3D} object - The object that should be deselected.\r\n\t * @return {Boolean} Returns true if an object has successfully been removed from this selection; otherwise false.\r\n\t */\r\n\r\n\tdelete(object) {\r\n\r\n\t\tif(this.has(object)) {\r\n\r\n\t\t\tobject.layers.disable(this.layer);\r\n\r\n\t\t}\r\n\r\n\t\treturn super.delete(object);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the visibility of all selected objects.\r\n\t *\r\n\t * This method enables or disables render layer 0 of all selected objects.\r\n\t *\r\n\t * @param {Boolean} visible - Whether the selected objects should be visible.\r\n\t * @return {Selection} This selection.\r\n\t */\r\n\r\n\tsetVisible(visible) {\r\n\r\n\t\tfor(const object of this) {\r\n\r\n\t\t\tif(visible) {\r\n\r\n\t\t\t\tobject.layers.enable(0);\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tobject.layers.disable(0);\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n}\n\nvar fragmentShader$a = \"uniform sampler2D texture;\\n#ifdef ASPECT_CORRECTION\\nvarying vec2 vUv2;\\n#endif\\nvoid mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){\\n#ifdef ASPECT_CORRECTION\\noutputColor=texture2D(texture,vUv2);\\n#else\\noutputColor=texture2D(texture,uv);\\n#endif\\n}\";\n\n/**\r\n * A bloom effect.\r\n *\r\n * This effect uses the fast Kawase convolution technique and a luminance filter\r\n * to blur bright highlights.\r\n */\r\n\r\nclass BloomEffect extends Effect {\r\n\r\n\t/**\r\n\t * Constructs a new bloom effect.\r\n\t *\r\n\t * @param {Object} [options] - The options.\r\n\t * @param {BlendFunction} [options.blendFunction=BlendFunction.SCREEN] - The blend function of this effect.\r\n\t * @param {Number} [options.luminanceThreshold=0.9] - The luminance threshold. Raise this value to mask out darker elements in the scene. Range is [0, 1].\r\n\t * @param {Number} [options.luminanceSmoothing=0.025] - Controls the smoothness of the luminance threshold. Range is [0, 1].\r\n\t * @param {Number} [options.resolutionScale=0.5] - Deprecated. Use height or width instead.\r\n\t * @param {Number} [options.width=BlurPass.AUTO_SIZE] - The render width.\r\n\t * @param {Number} [options.height=BlurPass.AUTO_SIZE] - The render height.\r\n\t * @param {KernelSize} [options.kernelSize=KernelSize.LARGE] - The blur kernel size.\r\n\t */\r\n\r\n\tconstructor({\r\n\t\tblendFunction = BlendFunction.SCREEN,\r\n\t\tluminanceThreshold = 0.9,\r\n\t\tluminanceSmoothing = 0.025,\r\n\t\tresolutionScale = 0.5,\r\n\t\twidth = BlurPass.AUTO_SIZE,\r\n\t\theight = BlurPass.AUTO_SIZE,\r\n\t\tkernelSize = KernelSize.LARGE\r\n\t} = {}) {\r\n\r\n\t\tsuper(\"BloomEffect\", fragmentShader$a, {\r\n\r\n\t\t\tblendFunction,\r\n\r\n\t\t\tuniforms: new Map([\r\n\t\t\t\t[\"texture\", new Uniform(null)]\r\n\t\t\t])\r\n\r\n\t\t});\r\n\r\n\t\t/**\r\n\t\t * A render target.\r\n\t\t *\r\n\t\t * @type {WebGLRenderTarget}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.renderTarget = new WebGLRenderTarget(1, 1, {\r\n\t\t\tminFilter: LinearFilter,\r\n\t\t\tmagFilter: LinearFilter,\r\n\t\t\tstencilBuffer: false,\r\n\t\t\tdepthBuffer: false\r\n\t\t});\r\n\r\n\t\tthis.renderTarget.texture.name = \"Bloom.Target\";\r\n\t\tthis.renderTarget.texture.generateMipmaps = false;\r\n\r\n\t\tthis.uniforms.get(\"texture\").value = this.renderTarget.texture;\r\n\r\n\t\t/**\r\n\t\t * A blur pass.\r\n\t\t *\r\n\t\t * Do not adjust the width or height of this pass directly. Use\r\n\t\t * {@link width} or {@link height} instead.\r\n\t\t *\r\n\t\t * @type {BlurPass}\r\n\t\t */\r\n\r\n\t\tthis.blurPass = new BlurPass({ resolutionScale, width, height, kernelSize });\r\n\r\n\t\t/**\r\n\t\t * A luminance shader pass.\r\n\t\t *\r\n\t\t * You may disable this pass to deactivate luminance filtering.\r\n\t\t *\r\n\t\t * @type {ShaderPass}\r\n\t\t */\r\n\r\n\t\tthis.luminancePass = new ShaderPass(new LuminanceMaterial(true));\r\n\r\n\t\tthis.luminanceMaterial.threshold = luminanceThreshold;\r\n\t\tthis.luminanceMaterial.smoothing = luminanceSmoothing;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * A texture that contains the intermediate result of this effect.\r\n\t *\r\n\t * This texture will be applied to the scene colors unless the blend function\r\n\t * is set to `SKIP`.\r\n\t *\r\n\t * @type {Texture}\r\n\t */\r\n\r\n\tget texture() {\r\n\r\n\t\treturn this.renderTarget.texture;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * The luminance material.\r\n\t *\r\n\t * @type {LuminanceMaterial}\r\n\t */\r\n\r\n\tget luminanceMaterial() {\r\n\r\n\t\treturn this.luminancePass.getFullscreenMaterial();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * The current width of the internal render targets.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tget width() {\r\n\r\n\t\treturn this.blurPass.width;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the render width.\r\n\t *\r\n\t * Use {@link BlurPass.AUTO_SIZE} to activate automatic sizing based on the\r\n\t * render height and aspect ratio.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tset width(value) {\r\n\r\n\t\tthis.blurPass.width = value;\r\n\t\tthis.renderTarget.setSize(this.width, this.height);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * The current height of the internal render targets.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tget height() {\r\n\r\n\t\treturn this.blurPass.height;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the render height.\r\n\t *\r\n\t * Use {@link BlurPass.AUTO_SIZE} to activate automatic sizing based on the\r\n\t * render width and aspect ratio.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tset height(value) {\r\n\r\n\t\tthis.blurPass.height = value;\r\n\t\tthis.renderTarget.setSize(this.width, this.height);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates whether dithering is enabled.\r\n\t *\r\n\t * @type {Boolean}\r\n\t * @deprecated Use blurPass.dithering instead.\r\n\t */\r\n\r\n\tget dithering() {\r\n\r\n\t\treturn this.blurPass.dithering;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Enables or disables dithering.\r\n\t *\r\n\t * @type {Boolean}\r\n\t * @deprecated Use blurPass.dithering instead.\r\n\t */\r\n\r\n\tset dithering(value) {\r\n\r\n\t\tthis.blurPass.dithering = value;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * The blur kernel size.\r\n\t *\r\n\t * @type {KernelSize}\r\n\t * @deprecated Use blurPass.kernelSize instead.\r\n\t */\r\n\r\n\tget kernelSize() {\r\n\r\n\t\treturn this.blurPass.kernelSize;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * @type {KernelSize}\r\n\t * @deprecated Use blurPass.kernelSize instead.\r\n\t */\r\n\r\n\tset kernelSize(value) {\r\n\r\n\t\tthis.blurPass.kernelSize = value;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * @type {Number}\r\n\t * @deprecated Use luminanceMaterial.threshold and luminanceMaterial.smoothing instead.\r\n\t */\r\n\r\n\tget distinction() {\r\n\r\n\t\tconsole.warn(this.name, \"The distinction field has been removed, use luminanceMaterial.threshold and luminanceMaterial.smoothing instead.\");\r\n\r\n\t\treturn 1.0;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * @type {Number}\r\n\t * @deprecated Use luminanceMaterial.threshold and luminanceMaterial.smoothing instead.\r\n\t */\r\n\r\n\tset distinction(value) {\r\n\r\n\t\tconsole.warn(this.name, \"The distinction field has been removed, use luminanceMaterial.threshold and luminanceMaterial.smoothing instead.\");\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the current resolution scale.\r\n\t *\r\n\t * @return {Number} The resolution scale.\r\n\t * @deprecated Adjust the width or height instead.\r\n\t */\r\n\r\n\tgetResolutionScale() {\r\n\r\n\t\treturn this.blurPass.getResolutionScale();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the resolution scale.\r\n\t *\r\n\t * @param {Number} scale - The new resolution scale.\r\n\t * @deprecated Adjust the width or height instead.\r\n\t */\r\n\r\n\tsetResolutionScale(scale) {\r\n\r\n\t\tconst blurPass = this.blurPass;\r\n\t\tblurPass.setResolutionScale(scale);\r\n\t\tthis.renderTarget.setSize(blurPass.width, blurPass.height);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Updates this effect.\r\n\t *\r\n\t * @param {WebGLRenderer} renderer - The renderer.\r\n\t * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\r\n\t * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\r\n\t */\r\n\r\n\tupdate(renderer, inputBuffer, deltaTime) {\r\n\r\n\t\tconst renderTarget = this.renderTarget;\r\n\r\n\t\tif(this.luminancePass.enabled) {\r\n\r\n\t\t\tthis.luminancePass.render(renderer, inputBuffer, renderTarget);\r\n\t\t\tthis.blurPass.render(renderer, renderTarget, renderTarget);\r\n\r\n\t\t} else {\r\n\r\n\t\t\tthis.blurPass.render(renderer, inputBuffer, renderTarget);\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the size of internal render targets.\r\n\t *\r\n\t * @param {Number} width - The width.\r\n\t * @param {Number} height - The height.\r\n\t */\r\n\r\n\tsetSize(width, height) {\r\n\r\n\t\tconst blurPass = this.blurPass;\r\n\t\tblurPass.setSize(width, height);\r\n\t\tthis.renderTarget.setSize(blurPass.width, blurPass.height);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Performs initialization tasks.\r\n\t *\r\n\t * @param {WebGLRenderer} renderer - The renderer.\r\n\t * @param {Boolean} alpha - Whether the renderer uses the alpha channel or not.\r\n\t */\r\n\r\n\tinitialize(renderer, alpha) {\r\n\r\n\t\tthis.blurPass.initialize(renderer, alpha);\r\n\r\n\t\tif(!alpha) {\r\n\r\n\t\t\tthis.renderTarget.texture.format = RGBFormat;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\n\nvar fragmentShader$b = \"uniform float focus;uniform float dof;uniform float aperture;uniform float maxBlur;void mainImage(const in vec4 inputColor,const in vec2 uv,const in float depth,out vec4 outputColor){vec2 aspectCorrection=vec2(1.0,aspect);float focusNear=clamp(focus-dof,0.0,1.0);float focusFar=clamp(focus+dof,0.0,1.0);float low=step(depth,focusNear);float high=step(focusFar,depth);float factor=(depth-focusNear)*low+(depth-focusFar)*high;vec2 dofBlur=vec2(clamp(factor*aperture,-maxBlur,maxBlur));vec2 dofblur9=dofBlur*0.9;vec2 dofblur7=dofBlur*0.7;vec2 dofblur4=dofBlur*0.4;vec4 color=inputColor;color+=texture2D(inputBuffer,uv+(vec2(0.0,0.4)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.15,0.37)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.29,0.29)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.37,0.15)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.40,0.0)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.37,-0.15)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.29,-0.29)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.15,-0.37)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.0,-0.4)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.15,0.37)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.29,0.29)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.37,0.15)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.4,0.0)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.37,-0.15)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.29,-0.29)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.15,-0.37)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.15,0.37)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(-0.37,0.15)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(0.37,-0.15)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(-0.15,-0.37)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(-0.15,0.37)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(0.37,0.15)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(-0.37,-0.15)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(0.15,-0.37)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(0.29,0.29)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(0.40,0.0)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(0.29,-0.29)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(0.0,-0.4)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(-0.29,0.29)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(-0.4,0.0)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(-0.29,-0.29)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(0.0,0.4)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(0.29,0.29)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(0.4,0.0)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(0.29,-0.29)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(0.0,-0.4)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(-0.29,0.29)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(-0.4,0.0)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(-0.29,-0.29)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(0.0,0.4)*aspectCorrection)*dofblur4);outputColor=color/41.0;}\";\n\n/**\r\n * A depth of field (bokeh) effect.\r\n *\r\n * Original shader code by Martins Upitis:\r\n * http://artmartinsh.blogspot.com/2010/02/glsl-lens-blur-filter-with-bokeh.html\r\n */\r\n\r\nclass BokehEffect extends Effect {\r\n\r\n\t/**\r\n\t * Constructs a new bokeh effect.\r\n\t *\r\n\t * @param {Object} [options] - The options.\r\n\t * @param {BlendFunction} [options.blendFunction=BlendFunction.NORMAL] - The blend function of this effect.\r\n\t * @param {Number} [options.focus=0.5] - The focus distance ratio, ranging from 0.0 to 1.0.\r\n\t * @param {Number} [options.dof=0.02] - Depth of field. An area in front of and behind the focal point that still appears sharp.\r\n\t * @param {Number} [options.aperture=0.015] - Camera aperture scale. Bigger values for stronger blur and shallower depth of field.\r\n\t * @param {Number} [options.maxBlur=1.0] - The maximum blur strength.\r\n\t */\r\n\r\n\tconstructor({ blendFunction = BlendFunction.NORMAL, focus = 0.5, dof = 0.02, aperture = 0.015, maxBlur = 1.0 } = {}) {\r\n\r\n\t\tsuper(\"BokehEffect\", fragmentShader$b, {\r\n\r\n\t\t\tblendFunction,\r\n\t\t\tattributes: EffectAttribute.CONVOLUTION | EffectAttribute.DEPTH,\r\n\r\n\t\t\tuniforms: new Map([\r\n\t\t\t\t[\"focus\", new Uniform(focus)],\r\n\t\t\t\t[\"dof\", new Uniform(dof)],\r\n\t\t\t\t[\"aperture\", new Uniform(aperture)],\r\n\t\t\t\t[\"maxBlur\", new Uniform(maxBlur)]\r\n\t\t\t])\r\n\r\n\t\t});\r\n\r\n\t}\r\n\r\n}\n\nvar fragmentShader$c = \"uniform float brightness;uniform float contrast;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 color=inputColor.rgb+vec3(brightness-0.5);if(contrast>0.0){color/=vec3(1.0-contrast);}else{color*=vec3(1.0+contrast);}outputColor=vec4(min(color+vec3(0.5),1.0),inputColor.a);}\";\n\n/**\r\n * A brightness/contrast effect.\r\n *\r\n * Reference: https://github.com/evanw/glfx.js\r\n */\r\n\r\nclass BrightnessContrastEffect extends Effect {\r\n\r\n\t/**\r\n\t * Constructs a new brightness/contrast effect.\r\n\t *\r\n\t * @param {Object} [options] - The options.\r\n\t * @param {BlendFunction} [options.blendFunction=BlendFunction.NORMAL] - The blend function of this effect.\r\n\t * @param {Number} [options.brightness=0.0] - The brightness factor, ranging from -1 to 1, where 0 means no change.\r\n\t * @param {Number} [options.contrast=0.0] - The contrast factor, ranging from -1 to 1, where 0 means no change.\r\n\t */\r\n\r\n\tconstructor({ blendFunction = BlendFunction.NORMAL, brightness = 0.0, contrast = 0.0 } = {}) {\r\n\r\n\t\tsuper(\"BrightnessContrastEffect\", fragmentShader$c, {\r\n\r\n\t\t\tblendFunction,\r\n\r\n\t\t\tuniforms: new Map([\r\n\t\t\t\t[\"brightness\", new Uniform(brightness)],\r\n\t\t\t\t[\"contrast\", new Uniform(contrast)]\r\n\t\t\t])\r\n\r\n\t\t});\r\n\r\n\t}\r\n\r\n}\n\nvar fragmentShader$d = \"void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){float sum=inputColor.r+inputColor.g+inputColor.b;outputColor=vec4(vec3(sum/3.0),inputColor.a);}\";\n\n/**\r\n * A color average effect.\r\n */\r\n\r\nclass ColorAverageEffect extends Effect {\r\n\r\n\t/**\r\n\t * Constructs a new color average effect.\r\n\t *\r\n\t * @param {BlendFunction} [blendFunction=BlendFunction.NORMAL] - The blend function of this effect.\r\n\t */\r\n\r\n\tconstructor(blendFunction = BlendFunction.NORMAL) {\r\n\r\n\t\tsuper(\"ColorAverageEffect\", fragmentShader$d, { blendFunction });\r\n\r\n\t}\r\n\r\n}\n\nvar fragmentShader$e = \"uniform float factor;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=vec4(floor(inputColor.rgb*factor+0.5)/factor,inputColor.a);}\";\n\n/**\r\n * A color depth effect.\r\n *\r\n * Simulates a hardware limitation to achieve a retro feel.\r\n */\r\n\r\nclass ColorDepthEffect extends Effect {\r\n\r\n\t/**\r\n\t * Constructs a new color depth effect.\r\n\t *\r\n\t * @param {Object} [options] - The options.\r\n\t * @param {BlendFunction} [options.blendFunction=BlendFunction.NORMAL] - The blend function of this effect.\r\n\t * @param {Number} [options.bits=16] - The color bit depth.\r\n\t */\r\n\r\n\tconstructor({ blendFunction = BlendFunction.NORMAL, bits = 16 } = {}) {\r\n\r\n\t\tsuper(\"ColorDepthEffect\", fragmentShader$e, {\r\n\r\n\t\t\tblendFunction,\r\n\r\n\t\t\tuniforms: new Map([\r\n\t\t\t\t[\"factor\", new Uniform(1.0)]\r\n\t\t\t])\r\n\r\n\t\t});\r\n\r\n\t\t/**\r\n\t\t * The current amount of bits.\r\n\t\t *\r\n\t\t * @type {Number}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.bits = 0;\r\n\r\n\t\tthis.setBitDepth(bits);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the current color bit depth.\r\n\t *\r\n\t * @return {Number} The color bit depth.\r\n\t */\r\n\r\n\tgetBitDepth() {\r\n\r\n\t\treturn this.bits;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the virtual amount of color bits.\r\n\t *\r\n\t * Each color channel will use a third of the available bits. The alpha\r\n\t * channel remains unaffected.\r\n\t *\r\n\t * Note that the real color depth will not be altered by this effect.\r\n\t *\r\n\t * @param {Number} bits - The new color bit depth.\r\n\t */\r\n\r\n\tsetBitDepth(bits) {\r\n\r\n\t\tthis.bits = bits;\r\n\t\tthis.uniforms.get(\"factor\").value = Math.pow(2.0, bits / 3.0);\r\n\r\n\t}\r\n\r\n}\n\nvar fragmentShader$f = \"varying vec2 vUvR;varying vec2 vUvB;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec4 color=inputColor;\\n#ifdef ALPHA\\nvec2 ra=texture2D(inputBuffer,vUvR).ra;vec2 ba=texture2D(inputBuffer,vUvB).ba;color.r=ra.x;color.b=ba.x;color.a=max(max(ra.y,ba.y),inputColor.a);\\n#else\\ncolor.r=texture2D(inputBuffer,vUvR).r;color.b=texture2D(inputBuffer,vUvB).b;\\n#endif\\noutputColor=color;}\";\n\nvar vertexShader$6 = \"uniform vec2 offset;varying vec2 vUvR;varying vec2 vUvB;void mainSupport(const in vec2 uv){vUvR=uv+offset;vUvB=uv-offset;}\";\n\n/**\r\n * A chromatic aberration effect.\r\n */\r\n\r\nclass ChromaticAberrationEffect extends Effect {\r\n\r\n\t/**\r\n\t * Constructs a new chromatic aberration effect.\r\n\t *\r\n\t * @param {Object} [options] - The options.\r\n\t * @param {BlendFunction} [options.blendFunction=BlendFunction.NORMAL] - The blend function of this effect.\r\n\t * @param {Vector2} [options.offset] - The color offset.\r\n\t */\r\n\r\n\tconstructor({ blendFunction = BlendFunction.NORMAL, offset = new Vector2(0.001, 0.0005) } = {}) {\r\n\r\n\t\tsuper(\"ChromaticAberrationEffect\", fragmentShader$f, {\r\n\r\n\t\t\tvertexShader: vertexShader$6,\r\n\t\t\tblendFunction,\r\n\t\t\tattributes: EffectAttribute.CONVOLUTION,\r\n\r\n\t\t\tuniforms: new Map([\r\n\t\t\t\t[\"offset\", new Uniform(offset)]\r\n\t\t\t])\r\n\r\n\t\t});\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * The color offset.\r\n\t *\r\n\t * @type {Vector2}\r\n\t */\r\n\r\n\tget offset() {\r\n\r\n\t\treturn this.uniforms.get(\"offset\").value;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * @type {Vector2}\r\n\t */\r\n\r\n\tset offset(value) {\r\n\r\n\t\tthis.uniforms.get(\"offset\").value = value;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Performs initialization tasks.\r\n\t *\r\n\t * @param {WebGLRenderer} renderer - The renderer.\r\n\t * @param {Boolean} alpha - Whether the renderer uses the alpha channel or not.\r\n\t */\r\n\r\n\tinitialize(renderer, alpha) {\r\n\r\n\t\tif(alpha) {\r\n\r\n\t\t\tthis.defines.set(\"ALPHA\", \"1\");\r\n\r\n\t\t} else {\r\n\r\n\t\t\tthis.defines.delete(\"ALPHA\");\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\n\nvar fragmentShader$g = \"void mainImage(const in vec4 inputColor,const in vec2 uv,const in float depth,out vec4 outputColor){\\n#ifdef INVERTED\\nvec3 color=vec3(1.0-depth);\\n#else\\nvec3 color=vec3(depth);\\n#endif\\noutputColor=vec4(color,inputColor.a);}\";\n\n/**\r\n * A depth visualization effect.\r\n *\r\n * Useful for debugging.\r\n */\r\n\r\nclass DepthEffect extends Effect {\r\n\r\n\t/**\r\n\t * Constructs a new depth effect.\r\n\t *\r\n\t * @param {Object} [options] - The options.\r\n\t * @param {BlendFunction} [options.blendFunction=BlendFunction.NORMAL] - The blend function of this effect.\r\n\t * @param {Boolean} [options.inverted=false] - Whether the depth values should be inverted.\r\n\t */\r\n\r\n\tconstructor({ blendFunction = BlendFunction.NORMAL, inverted = false } = {}) {\r\n\r\n\t\tsuper(\"DepthEffect\", fragmentShader$g, {\r\n\r\n\t\t\tblendFunction,\r\n\t\t\tattributes: EffectAttribute.DEPTH\r\n\r\n\t\t});\r\n\r\n\t\tthis.inverted = inverted;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates whether depth will be inverted.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tget inverted() {\r\n\r\n\t\treturn this.defines.has(\"INVERTED\");\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Enables or disables depth inversion.\r\n\t *\r\n\t * You'll need to call {@link EffectPass#recompile} after changing this value.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tset inverted(value) {\r\n\r\n\t\tvalue ? this.defines.set(\"INVERTED\", \"1\") : this.defines.delete(\"INVERTED\");\r\n\r\n\t}\r\n\r\n}\n\nvar fragmentShader$h = \"uniform vec2 angle;uniform float scale;float pattern(const in vec2 uv){vec2 point=scale*vec2(dot(angle.yx,vec2(uv.x,-uv.y)),dot(angle,uv));return(sin(point.x)*sin(point.y))*4.0;}void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 color=vec3(inputColor.rgb*10.0-5.0+pattern(uv*resolution));outputColor=vec4(color,inputColor.a);}\";\n\n/**\r\n * A dot screen effect.\r\n */\r\n\r\nclass DotScreenEffect extends Effect {\r\n\r\n\t/**\r\n\t * Constructs a new dot screen effect.\r\n\t *\r\n\t * @param {Object} [options] - The options.\r\n\t * @param {BlendFunction} [options.blendFunction=BlendFunction.NORMAL] - The blend function of this effect.\r\n\t * @param {Number} [options.angle=1.57] - The angle of the dot pattern.\r\n\t * @param {Number} [options.scale=1.0] - The scale of the dot pattern.\r\n\t */\r\n\r\n\tconstructor({ blendFunction = BlendFunction.NORMAL, angle = Math.PI * 0.5, scale = 1.0 } = {}) {\r\n\r\n\t\tsuper(\"DotScreenEffect\", fragmentShader$h, {\r\n\r\n\t\t\tblendFunction,\r\n\r\n\t\t\tuniforms: new Map([\r\n\t\t\t\t[\"angle\", new Uniform(new Vector2())],\r\n\t\t\t\t[\"scale\", new Uniform(scale)]\r\n\t\t\t])\r\n\r\n\t\t});\r\n\r\n\t\tthis.setAngle(angle);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the pattern angle.\r\n\t *\r\n\t * @param {Number} [angle] - The angle of the dot pattern.\r\n\t */\r\n\r\n\tsetAngle(angle) {\r\n\r\n\t\tthis.uniforms.get(\"angle\").value.set(Math.sin(angle), Math.cos(angle));\r\n\r\n\t}\r\n\r\n}\n\nvar fragmentShader$i = \"uniform float gamma;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=LinearToGamma(max(inputColor,0.0),gamma);}\";\n\n/**\r\n * A gamma correction effect.\r\n */\r\n\r\nclass GammaCorrectionEffect extends Effect {\r\n\r\n\t/**\r\n\t * Constructs a new gamma correction effect.\r\n\t *\r\n\t * @param {Object} [options] - The options.\r\n\t * @param {BlendFunction} [options.blendFunction=BlendFunction.NORMAL] - The blend function of this effect.\r\n\t * @param {Number} [options.gamma=2.0] - The gamma factor.\r\n\t */\r\n\r\n\tconstructor({ blendFunction = BlendFunction.NORMAL, gamma = 2.0 } = {}) {\r\n\r\n\t\tsuper(\"GammaCorrectionEffect\", fragmentShader$i, {\r\n\r\n\t\t\tblendFunction,\r\n\r\n\t\t\tuniforms: new Map([\r\n\t\t\t\t[\"gamma\", new Uniform(gamma)]\r\n\t\t\t])\r\n\r\n\t\t});\r\n\r\n\t}\r\n\r\n}\n\nvar fragmentShader$j = \"uniform sampler2D perturbationMap;uniform bool active;uniform float columns;uniform float random;uniform vec2 seed;uniform vec2 distortion;void mainUv(inout vec2 uv){if(active){vec4 normal=texture2D(perturbationMap,uv*random*random);if(uv.ydistortion.x-columns*random){float sx=clamp(ceil(seed.x),0.0,1.0);uv.y=sx*(1.0-(uv.y+distortion.y))+(1.0-sx)*distortion.y;}if(uv.xdistortion.y-columns*random){float sy=clamp(ceil(seed.y),0.0,1.0);uv.x=sy*distortion.x+(1.0-sy)*(1.0-(uv.x+distortion.x));}uv.x+=normal.x*seed.x*(random*0.2);uv.y+=normal.y*seed.y*(random*0.2);}}\";\n\n/**\r\n * A label for generated data textures.\r\n *\r\n * @type {String}\r\n * @private\r\n */\r\n\r\nconst generatedTexture = \"Glitch.Generated\";\r\n\r\n/**\r\n * Returns a random float in the specified range.\r\n *\r\n * @private\r\n * @param {Number} low - The lowest possible value.\r\n * @param {Number} high - The highest possible value.\r\n * @return {Number} The random value.\r\n */\r\n\r\nfunction randomFloat(low, high) {\r\n\r\n\treturn low + Math.random() * (high - low);\r\n\r\n}\r\n\r\n/**\r\n * A glitch effect.\r\n *\r\n * This effect can influence the {@link ChromaticAberrationEffect}.\r\n *\r\n * Reference: https://github.com/staffantan/unityglitch\r\n *\r\n * Warning: This effect cannot be merged with convolution effects.\r\n */\r\n\r\nclass GlitchEffect extends Effect {\r\n\r\n\t/**\r\n\t * Constructs a new glitch effect.\r\n\t *\r\n\t * @param {Object} [options] - The options.\r\n\t * @param {BlendFunction} [options.blendFunction=BlendFunction.NORMAL] - The blend function of this effect.\r\n\t * @param {Vector2} [options.chromaticAberrationOffset] - A chromatic aberration offset. If provided, the glitch effect will influence this offset.\r\n\t * @param {Vector2} [options.delay] - The minimum and maximum delay between glitch activations in seconds.\r\n\t * @param {Vector2} [options.duration] - The minimum and maximum duration of a glitch in seconds.\r\n\t * @param {Vector2} [options.strength] - The strength of weak and strong glitches.\r\n\t * @param {Texture} [options.perturbationMap] - A perturbation map. If none is provided, a noise texture will be created.\r\n\t * @param {Number} [options.dtSize=64] - The size of the generated noise map. Will be ignored if a perturbation map is provided.\r\n\t * @param {Number} [options.columns=0.05] - The scale of the blocky glitch columns.\r\n\t * @param {Number} [options.ratio=0.85] - The threshold for strong glitches.\r\n\t */\r\n\r\n\tconstructor({\r\n\t\tblendFunction = BlendFunction.NORMAL,\r\n\t\tchromaticAberrationOffset = null,\r\n\t\tdelay = new Vector2(1.5, 3.5),\r\n\t\tduration = new Vector2(0.6, 1.0),\r\n\t\tstrength = new Vector2(0.3, 1.0),\r\n\t\tcolumns = 0.05,\r\n\t\tratio = 0.85,\r\n\t\tperturbationMap = null,\r\n\t\tdtSize = 64\r\n\t} = {}) {\r\n\r\n\t\tsuper(\"GlitchEffect\", fragmentShader$j, {\r\n\r\n\t\t\tblendFunction,\r\n\r\n\t\t\tuniforms: new Map([\r\n\t\t\t\t[\"perturbationMap\", new Uniform(null)],\r\n\t\t\t\t[\"columns\", new Uniform(columns)],\r\n\t\t\t\t[\"active\", new Uniform(false)],\r\n\t\t\t\t[\"random\", new Uniform(0.02)],\r\n\t\t\t\t[\"seed\", new Uniform(new Vector2())],\r\n\t\t\t\t[\"distortion\", new Uniform(new Vector2())]\r\n\t\t\t])\r\n\r\n\t\t});\r\n\r\n\t\t/**\r\n\t\t * The current perturbation map.\r\n\t\t *\r\n\t\t * @type {Texture}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.perturbationMap = null;\r\n\r\n\t\tthis.setPerturbationMap((perturbationMap === null) ?\r\n\t\t\tthis.generatePerturbationMap(dtSize) :\r\n\t\t\tperturbationMap);\r\n\r\n\t\tthis.perturbationMap.generateMipmaps = false;\r\n\r\n\t\t/**\r\n\t\t * The minimum and maximum delay between glitch activations in seconds.\r\n\t\t *\r\n\t\t * @type {Vector2}\r\n\t\t */\r\n\r\n\t\tthis.delay = delay;\r\n\r\n\t\t/**\r\n\t\t * The minimum and maximum duration of a glitch in seconds.\r\n\t\t *\r\n\t\t * @type {Vector2}\r\n\t\t */\r\n\r\n\t\tthis.duration = duration;\r\n\r\n\t\t/**\r\n\t\t * A random glitch break point.\r\n\t\t *\r\n\t\t * @type {Number}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.breakPoint = new Vector2(\r\n\t\t\trandomFloat(this.delay.x, this.delay.y),\r\n\t\t\trandomFloat(this.duration.x, this.duration.y)\r\n\t\t);\r\n\r\n\t\t/**\r\n\t\t * A time accumulator.\r\n\t\t *\r\n\t\t * @type {Number}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.time = 0;\r\n\r\n\t\t/**\r\n\t\t * Random seeds.\r\n\t\t *\r\n\t\t * @type {Vector2}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.seed = this.uniforms.get(\"seed\").value;\r\n\r\n\t\t/**\r\n\t\t * A distortion vector.\r\n\t\t *\r\n\t\t * @type {Vector2}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.distortion = this.uniforms.get(\"distortion\").value;\r\n\r\n\t\t/**\r\n\t\t * The effect mode.\r\n\t\t *\r\n\t\t * @type {GlitchMode}\r\n\t\t */\r\n\r\n\t\tthis.mode = GlitchMode.SPORADIC;\r\n\r\n\t\t/**\r\n\t\t * The strength of weak and strong glitches.\r\n\t\t *\r\n\t\t * @type {Vector2}\r\n\t\t */\r\n\r\n\t\tthis.strength = strength;\r\n\r\n\t\t/**\r\n\t\t * The threshold for strong glitches, ranging from 0 to 1 where 0 means no\r\n\t\t * weak glitches and 1 means no strong ones. The default ratio of 0.85\r\n\t\t * offers a decent balance.\r\n\t\t *\r\n\t\t * @type {Number}\r\n\t\t */\r\n\r\n\t\tthis.ratio = ratio;\r\n\r\n\t\t/**\r\n\t\t * The chromatic aberration offset.\r\n\t\t *\r\n\t\t * @type {Vector2}\r\n\t\t */\r\n\r\n\t\tthis.chromaticAberrationOffset = chromaticAberrationOffset;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates whether the glitch effect is currently active.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tget active() {\r\n\r\n\t\treturn this.uniforms.get(\"active\").value;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the current perturbation map.\r\n\t *\r\n\t * @return {Texture} The current perturbation map.\r\n\t */\r\n\r\n\tgetPerturbationMap() {\r\n\r\n\t\treturn this.perturbationMap;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Replaces the current perturbation map with the given one.\r\n\t *\r\n\t * The current map will be disposed if it was generated by this effect.\r\n\t *\r\n\t * @param {Texture} perturbationMap - The new perturbation map.\r\n\t */\r\n\r\n\tsetPerturbationMap(perturbationMap) {\r\n\r\n\t\tif(this.perturbationMap !== null && this.perturbationMap.name === generatedTexture) {\r\n\r\n\t\t\tthis.perturbationMap.dispose();\r\n\r\n\t\t}\r\n\r\n\t\tperturbationMap.wrapS = perturbationMap.wrapT = RepeatWrapping;\r\n\t\tperturbationMap.magFilter = perturbationMap.minFilter = NearestFilter;\r\n\r\n\t\tthis.perturbationMap = perturbationMap;\r\n\t\tthis.uniforms.get(\"perturbationMap\").value = perturbationMap;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Generates a perturbation map.\r\n\t *\r\n\t * @param {Number} [size=64] - The texture size.\r\n\t * @return {DataTexture} The perturbation map.\r\n\t */\r\n\r\n\tgeneratePerturbationMap(size = 64) {\r\n\r\n\t\tconst pixels = size * size;\r\n\t\tconst data = new Float32Array(pixels * 3);\r\n\r\n\t\tlet i, x;\r\n\r\n\t\tfor(i = 0; i < pixels; ++i) {\r\n\r\n\t\t\tx = Math.random();\r\n\r\n\t\t\tdata[i * 3] = x;\r\n\t\t\tdata[i * 3 + 1] = x;\r\n\t\t\tdata[i * 3 + 2] = x;\r\n\r\n\t\t}\r\n\r\n\t\tconst map = new DataTexture(data, size, size, RGBFormat, FloatType);\r\n\t\tmap.name = generatedTexture;\r\n\t\tmap.needsUpdate = true;\r\n\r\n\t\treturn map;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Updates this effect.\r\n\t *\r\n\t * @param {WebGLRenderer} renderer - The renderer.\r\n\t * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\r\n\t * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\r\n\t */\r\n\r\n\tupdate(renderer, inputBuffer, deltaTime) {\r\n\r\n\t\tconst mode = this.mode;\r\n\t\tconst breakPoint = this.breakPoint;\r\n\t\tconst offset = this.chromaticAberrationOffset;\r\n\t\tconst s = this.strength;\r\n\r\n\t\tlet time = this.time;\r\n\t\tlet active = false;\r\n\t\tlet r = 0.0, a = 0.0;\r\n\t\tlet trigger;\r\n\r\n\t\tif(mode !== GlitchMode.DISABLED) {\r\n\r\n\t\t\tif(mode === GlitchMode.SPORADIC) {\r\n\r\n\t\t\t\ttime += deltaTime;\r\n\t\t\t\ttrigger = (time > breakPoint.x);\r\n\r\n\t\t\t\tif(time >= (breakPoint.x + breakPoint.y)) {\r\n\r\n\t\t\t\t\tbreakPoint.set(\r\n\t\t\t\t\t\trandomFloat(this.delay.x, this.delay.y),\r\n\t\t\t\t\t\trandomFloat(this.duration.x, this.duration.y)\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\ttime = 0;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tr = Math.random();\r\n\t\t\tthis.uniforms.get(\"random\").value = r;\r\n\r\n\t\t\tif((trigger && r > this.ratio) || mode === GlitchMode.CONSTANT_WILD) {\r\n\r\n\t\t\t\tactive = true;\r\n\r\n\t\t\t\tr *= s.y * 0.03;\r\n\t\t\t\ta = randomFloat(-Math.PI, Math.PI);\r\n\r\n\t\t\t\tthis.seed.set(randomFloat(-s.y, s.y), randomFloat(-s.y, s.y));\r\n\t\t\t\tthis.distortion.set(randomFloat(0.0, 1.0), randomFloat(0.0, 1.0));\r\n\r\n\t\t\t} else if(trigger || mode === GlitchMode.CONSTANT_MILD) {\r\n\r\n\t\t\t\tactive = true;\r\n\r\n\t\t\t\tr *= s.x * 0.03;\r\n\t\t\t\ta = randomFloat(-Math.PI, Math.PI);\r\n\r\n\t\t\t\tthis.seed.set(randomFloat(-s.x, s.x), randomFloat(-s.x, s.x));\r\n\t\t\t\tthis.distortion.set(randomFloat(0.0, 1.0), randomFloat(0.0, 1.0));\r\n\r\n\t\t\t}\r\n\r\n\t\t\tthis.time = time;\r\n\r\n\t\t}\r\n\r\n\t\tif(offset !== null) {\r\n\r\n\t\t\tif(active) {\r\n\r\n\t\t\t\toffset.set(Math.cos(a), Math.sin(a)).multiplyScalar(r);\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\toffset.set(0.0, 0.0);\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tthis.uniforms.get(\"active\").value = active;\r\n\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * A glitch mode enumeration.\r\n *\r\n * @type {Object}\r\n * @property {Number} DISABLED - No glitches.\r\n * @property {Number} SPORADIC - Sporadic glitches.\r\n * @property {Number} CONSTANT_MILD - Constant mild glitches.\r\n * @property {Number} CONSTANT_WILD - Constant wild glitches.\r\n */\r\n\r\nconst GlitchMode = {\r\n\r\n\tDISABLED: 0,\r\n\tSPORADIC: 1,\r\n\tCONSTANT_MILD: 2,\r\n\tCONSTANT_WILD: 3\r\n\r\n};\n\n/**\r\n * A vector.\r\n *\r\n * @type {Vector3}\r\n * @private\r\n */\r\n\r\nconst v = new Vector3();\r\n\r\n/**\r\n * A matrix.\r\n *\r\n * @type {Matrix4}\r\n * @private\r\n */\r\n\r\nconst m = new Matrix4();\r\n\r\n/**\r\n * A god rays effect.\r\n */\r\n\r\nclass GodRaysEffect extends Effect {\r\n\r\n\t/**\r\n\t * Constructs a new god rays effect.\r\n\t *\r\n\t * @param {Camera} camera - The main camera.\r\n\t * @param {Mesh|Points} lightSource - The light source. Must not write depth and has to be flagged as transparent.\r\n\t * @param {Object} [options] - The options.\r\n\t * @param {BlendFunction} [options.blendFunction=BlendFunction.SCREEN] - The blend function of this effect.\r\n\t * @param {Number} [options.samples=60.0] - The number of samples per pixel.\r\n\t * @param {Number} [options.density=0.96] - The density of the light rays.\r\n\t * @param {Number} [options.decay=0.9] - An illumination decay factor.\r\n\t * @param {Number} [options.weight=0.4] - A light ray weight factor.\r\n\t * @param {Number} [options.exposure=0.6] - A constant attenuation coefficient.\r\n\t * @param {Number} [options.clampMax=1.0] - An upper bound for the saturation of the overall effect.\r\n\t * @param {Number} [options.resolutionScale=0.5] - Deprecated. Use height or width instead.\r\n\t * @param {Number} [options.width=BlurPass.AUTO_SIZE] - The render width.\r\n\t * @param {Number} [options.height=BlurPass.AUTO_SIZE] - The render height.\r\n\t * @param {KernelSize} [options.kernelSize=KernelSize.SMALL] - The blur kernel size. Has no effect if blur is disabled.\r\n\t * @param {Number} [options.blur=true] - Whether the god rays should be blurred to reduce artifacts.\r\n\t */\r\n\r\n\tconstructor(camera, lightSource, {\r\n\t\tblendFunction = BlendFunction.SCREEN,\r\n\t\tsamples = 60.0,\r\n\t\tdensity = 0.96,\r\n\t\tdecay = 0.9,\r\n\t\tweight = 0.4,\r\n\t\texposure = 0.6,\r\n\t\tclampMax = 1.0,\r\n\t\tresolutionScale = 0.5,\r\n\t\twidth = BlurPass.AUTO_SIZE,\r\n\t\theight = BlurPass.AUTO_SIZE,\r\n\t\tkernelSize = KernelSize.SMALL,\r\n\t\tblur = true\r\n\t} = {}) {\r\n\r\n\t\tsuper(\"GodRaysEffect\", fragmentShader$a, {\r\n\r\n\t\t\tblendFunction,\r\n\t\t\tattributes: EffectAttribute.DEPTH,\r\n\r\n\t\t\tuniforms: new Map([\r\n\t\t\t\t[\"texture\", new Uniform(null)]\r\n\t\t\t])\r\n\r\n\t\t});\r\n\r\n\t\t/**\r\n\t\t * The main camera.\r\n\t\t *\r\n\t\t * @type {Camera}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.camera = camera;\r\n\r\n\t\t/**\r\n\t\t * The light source.\r\n\t\t *\r\n\t\t * @type {Mesh|Points}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.lightSource = lightSource;\r\n\t\tthis.lightSource.material.depthWrite = false;\r\n\t\tthis.lightSource.material.transparent = true;\r\n\r\n\t\t/**\r\n\t\t * A scene that only contains the light source.\r\n\t\t *\r\n\t\t * @type {Scene}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.lightScene = new Scene();\r\n\r\n\t\t/**\r\n\t\t * The light position in screen space.\r\n\t\t *\r\n\t\t * @type {Vector3}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.screenPosition = new Vector2();\r\n\r\n\t\t/**\r\n\t\t * A render target.\r\n\t\t *\r\n\t\t * @type {WebGLRenderTarget}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.renderTargetX = new WebGLRenderTarget(1, 1, {\r\n\t\t\tminFilter: LinearFilter,\r\n\t\t\tmagFilter: LinearFilter,\r\n\t\t\tstencilBuffer: false,\r\n\t\t\tdepthBuffer: false\r\n\t\t});\r\n\r\n\t\tthis.renderTargetX.texture.name = \"GodRays.TargetX\";\r\n\r\n\t\t/**\r\n\t\t * A render target.\r\n\t\t *\r\n\t\t * @type {WebGLRenderTarget}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.renderTargetY = this.renderTargetX.clone();\r\n\t\tthis.renderTargetY.texture.name = \"GodRays.TargetY\";\r\n\t\tthis.uniforms.get(\"texture\").value = this.renderTargetY.texture;\r\n\r\n\t\t/**\r\n\t\t * A render target for the light scene.\r\n\t\t *\r\n\t\t * @type {WebGLRenderTarget}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.renderTargetLight = this.renderTargetX.clone();\r\n\t\tthis.renderTargetLight.texture.name = \"GodRays.Light\";\r\n\t\tthis.renderTargetLight.depthBuffer = true;\r\n\t\tthis.renderTargetLight.depthTexture = new DepthTexture();\r\n\r\n\t\t/**\r\n\t\t * A pass that only renders the light source.\r\n\t\t *\r\n\t\t * @type {RenderPass}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.renderPassLight = new RenderPass(this.lightScene, camera);\r\n\t\tthis.renderPassLight.getClearPass().overrideClearColor = new Color(0x000000);\r\n\r\n\t\t/**\r\n\t\t * A clear pass.\r\n\t\t *\r\n\t\t * @type {ClearPass}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.clearPass = new ClearPass(true, false, false);\r\n\r\n\t\t/**\r\n\t\t * A blur pass that reduces aliasing artifacts and makes the light softer.\r\n\t\t *\r\n\t\t * Disable this pass to improve performance.\r\n\t\t *\r\n\t\t * @type {BlurPass}\r\n\t\t */\r\n\r\n\t\tthis.blurPass = new BlurPass({ resolutionScale, width, height, kernelSize });\r\n\r\n\t\t/**\r\n\t\t * A depth mask pass.\r\n\t\t *\r\n\t\t * @type {ShaderPass}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.depthMaskPass = new ShaderPass(((depthTexture) => {\r\n\r\n\t\t\tconst material = new DepthMaskMaterial();\r\n\t\t\tmaterial.uniforms.depthBuffer1.value = depthTexture;\r\n\r\n\t\t\treturn material;\r\n\r\n\t\t})(this.renderTargetLight.depthTexture));\r\n\r\n\t\t/**\r\n\t\t * A god rays blur pass.\r\n\t\t *\r\n\t\t * @type {ShaderPass}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.godRaysPass = new ShaderPass((() => {\r\n\r\n\t\t\tconst material = new GodRaysMaterial(this.screenPosition);\r\n\t\t\tmaterial.uniforms.density.value = density;\r\n\t\t\tmaterial.uniforms.decay.value = decay;\r\n\t\t\tmaterial.uniforms.weight.value = weight;\r\n\t\t\tmaterial.uniforms.exposure.value = exposure;\r\n\t\t\tmaterial.uniforms.clampMax.value = clampMax;\r\n\r\n\t\t\treturn material;\r\n\r\n\t\t})());\r\n\r\n\t\tthis.samples = samples;\r\n\t\tthis.blur = blur;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * A texture that contains the intermediate result of this effect.\r\n\t *\r\n\t * This texture will be applied to the scene colors unless the blend function\r\n\t * is set to `SKIP`.\r\n\t *\r\n\t * @type {Texture}\r\n\t */\r\n\r\n\tget texture() {\r\n\r\n\t\treturn this.renderTargetY.texture;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * The internal god rays material.\r\n\t *\r\n\t * @type {GodRaysMaterial}\r\n\t */\r\n\r\n\tget godRaysMaterial() {\r\n\r\n\t\treturn this.godRaysPass.getFullscreenMaterial();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * The current width of the internal render targets.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tget width() {\r\n\r\n\t\treturn this.blurPass.width;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the render width.\r\n\t *\r\n\t * Use {@link BlurPass.AUTO_SIZE} to activate automatic sizing based on the\r\n\t * render height and aspect ratio.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tset width(value) {\r\n\r\n\t\tconst blurPass = this.blurPass;\r\n\t\tblurPass.width = value;\r\n\r\n\t\tthis.renderTargetX.setSize(blurPass.width, blurPass.height);\r\n\t\tthis.renderTargetY.setSize(blurPass.width, blurPass.height);\r\n\t\tthis.renderTargetLight.setSize(blurPass.width, blurPass.height);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * The current height of the internal render targets.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tget height() {\r\n\r\n\t\treturn this.blurPass.height;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the render height.\r\n\t *\r\n\t * Use {@link BlurPass.AUTO_SIZE} to activate automatic sizing based on the\r\n\t * render width and aspect ratio.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tset height(value) {\r\n\r\n\t\tconst blurPass = this.blurPass;\r\n\t\tblurPass.height = value;\r\n\r\n\t\tthis.renderTargetX.setSize(blurPass.width, blurPass.height);\r\n\t\tthis.renderTargetY.setSize(blurPass.width, blurPass.height);\r\n\t\tthis.renderTargetLight.setSize(blurPass.width, blurPass.height);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates whether dithering is enabled.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tget dithering() {\r\n\r\n\t\treturn this.godRaysMaterial.dithering;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Enables or disables dithering.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tset dithering(value) {\r\n\r\n\t\tconst material = this.godRaysMaterial;\r\n\r\n\t\tmaterial.dithering = value;\r\n\t\tmaterial.needsUpdate = true;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates whether the god rays should be blurred to reduce artifacts.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tget blur() {\r\n\r\n\t\treturn this.blurPass.enabled;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tset blur(value) {\r\n\r\n\t\tthis.blurPass.enabled = value;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * The blur kernel size.\r\n\t *\r\n\t * @type {KernelSize}\r\n\t * @deprecated Use blurPass.kernelSize instead.\r\n\t */\r\n\r\n\tget kernelSize() {\r\n\r\n\t\treturn this.blurPass.kernelSize;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the blur kernel size.\r\n\t *\r\n\t * @type {KernelSize}\r\n\t * @deprecated Use blurPass.kernelSize instead.\r\n\t */\r\n\r\n\tset kernelSize(value) {\r\n\r\n\t\tthis.blurPass.kernelSize = value;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the current resolution scale.\r\n\t *\r\n\t * @return {Number} The resolution scale.\r\n\t * @deprecated Adjust the width or height instead.\r\n\t */\r\n\r\n\tgetResolutionScale() {\r\n\r\n\t\treturn this.blurPass.getResolutionScale();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the resolution scale.\r\n\t *\r\n\t * @param {Number} scale - The new resolution scale.\r\n\t * @deprecated Adjust the width or height instead.\r\n\t */\r\n\r\n\tsetResolutionScale(scale) {\r\n\r\n\t\tconst originalSize = this.blurPass.getOriginalSize();\r\n\t\tthis.blurPass.setResolutionScale(scale);\r\n\t\tthis.setSize(originalSize.x, originalSize.y);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * The number of samples per pixel.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tget samples() {\r\n\r\n\t\treturn this.godRaysMaterial.samples;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * A higher sample count improves quality at the cost of performance.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tset samples(value) {\r\n\r\n\t\tthis.godRaysMaterial.samples = value;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the depth texture.\r\n\t *\r\n\t * @param {Texture} depthTexture - A depth texture.\r\n\t * @param {Number} [depthPacking=0] - The depth packing.\r\n\t */\r\n\r\n\tsetDepthTexture(depthTexture, depthPacking = 0) {\r\n\r\n\t\tconst material = this.depthMaskPass.getFullscreenMaterial();\r\n\r\n\t\tmaterial.uniforms.depthBuffer0.value = depthTexture;\r\n\t\tmaterial.defines.DEPTH_PACKING_0 = depthPacking.toFixed(0);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Updates this effect.\r\n\t *\r\n\t * @param {WebGLRenderer} renderer - The renderer.\r\n\t * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\r\n\t * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\r\n\t */\r\n\r\n\tupdate(renderer, inputBuffer, deltaTime) {\r\n\r\n\t\tconst lightSource = this.lightSource;\r\n\t\tconst parent = lightSource.parent;\r\n\t\tconst matrixAutoUpdate = lightSource.matrixAutoUpdate;\r\n\r\n\t\tconst renderTargetX = this.renderTargetX;\r\n\t\tconst renderTargetLight = this.renderTargetLight;\r\n\r\n\t\tif(!matrixAutoUpdate) {\r\n\r\n\t\t\t// Remember the local transformation to restore it later.\r\n\t\t\tm.copy(lightSource.matrix);\r\n\r\n\t\t}\r\n\r\n\t\t// Enable depth write for the light scene render pass.\r\n\t\tlightSource.material.depthWrite = true;\r\n\r\n\t\t// The light source may be inside a group; apply all transformations.\r\n\t\tlightSource.matrixAutoUpdate = false;\r\n\t\tlightSource.updateWorldMatrix(true, false);\r\n\t\tlightSource.matrix.copy(lightSource.matrixWorld);\r\n\r\n\t\t// Render the light source and mask it based on depth.\r\n\t\tthis.lightScene.add(lightSource);\r\n\t\tthis.renderPassLight.render(renderer, renderTargetLight);\r\n\t\tthis.clearPass.render(renderer, renderTargetX);\r\n\t\tthis.depthMaskPass.render(renderer, renderTargetLight, renderTargetX);\r\n\r\n\t\t// Restore the original values.\r\n\t\tlightSource.material.depthWrite = false;\r\n\t\tlightSource.matrixAutoUpdate = matrixAutoUpdate;\r\n\r\n\t\tif(!matrixAutoUpdate) {\r\n\r\n\t\t\tlightSource.matrix.copy(m);\r\n\r\n\t\t}\r\n\r\n\t\tif(parent !== null) {\r\n\r\n\t\t\tparent.add(lightSource);\r\n\r\n\t\t}\r\n\r\n\t\t// Calculate the screen light position and translate it to [0.0, 1.0].\r\n\t\tv.setFromMatrixPosition(lightSource.matrixWorld).project(this.camera);\r\n\t\tthis.screenPosition.set(\r\n\t\t\tMath.max(0.0, Math.min(1.0, (v.x + 1.0) * 0.5)),\r\n\t\t\tMath.max(0.0, Math.min(1.0, (v.y + 1.0) * 0.5)),\r\n\t\t);\r\n\r\n\t\tif(this.blur) {\r\n\r\n\t\t\t// Blur the masked scene to reduce artifacts.\r\n\t\t\tthis.blurPass.render(renderer, renderTargetX, renderTargetX);\r\n\r\n\t\t}\r\n\r\n\t\t// Blur the masked scene along radial lines towards the light source.\r\n\t\tthis.godRaysPass.render(renderer, renderTargetX, this.renderTargetY);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the size of internal render targets.\r\n\t *\r\n\t * @param {Number} width - The width.\r\n\t * @param {Number} height - The height.\r\n\t */\r\n\r\n\tsetSize(width, height) {\r\n\r\n\t\tthis.blurPass.setSize(width, height);\r\n\r\n\t\tthis.renderPassLight.setSize(width, height);\r\n\t\tthis.depthMaskPass.setSize(width, height);\r\n\t\tthis.godRaysPass.setSize(width, height);\r\n\r\n\t\twidth = this.blurPass.width;\r\n\t\theight = this.blurPass.height;\r\n\r\n\t\tthis.renderTargetX.setSize(width, height);\r\n\t\tthis.renderTargetY.setSize(width, height);\r\n\t\tthis.renderTargetLight.setSize(width, height);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Performs initialization tasks.\r\n\t *\r\n\t * @param {WebGLRenderer} renderer - The renderer.\r\n\t * @param {Boolean} alpha - Whether the renderer uses the alpha channel or not.\r\n\t */\r\n\r\n\tinitialize(renderer, alpha) {\r\n\r\n\t\tthis.blurPass.initialize(renderer, alpha);\r\n\t\tthis.renderPassLight.initialize(renderer, alpha);\r\n\t\tthis.depthMaskPass.initialize(renderer, alpha);\r\n\t\tthis.godRaysPass.initialize(renderer, alpha);\r\n\r\n\t\tif(!alpha) {\r\n\r\n\t\t\tthis.renderTargetX.texture.format = RGBFormat;\r\n\t\t\tthis.renderTargetY.texture.format = RGBFormat;\r\n\t\t\tthis.renderTargetLight.texture.format = RGBFormat;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\n\nvar fragmentShader$k = \"uniform vec2 scale;uniform float lineWidth;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){float grid=0.5-max(abs(mod(uv.x*scale.x,1.0)-0.5),abs(mod(uv.y*scale.y,1.0)-0.5));outputColor=vec4(vec3(smoothstep(0.0,lineWidth,grid)),inputColor.a);}\";\n\n/**\r\n * A grid effect.\r\n */\r\n\r\nclass GridEffect extends Effect {\r\n\r\n\t/**\r\n\t * Constructs a new grid effect.\r\n\t *\r\n\t * @param {Object} [options] - The options.\r\n\t * @param {BlendFunction} [options.blendFunction=BlendFunction.OVERLAY] - The blend function of this effect.\r\n\t * @param {Number} [options.scale=1.0] - The scale of the grid pattern.\r\n\t * @param {Number} [options.lineWidth=0.0] - The line width of the grid pattern.\r\n\t */\r\n\r\n\tconstructor({ blendFunction = BlendFunction.OVERLAY, scale = 1.0, lineWidth = 0.0 } = {}) {\r\n\r\n\t\tsuper(\"GridEffect\", fragmentShader$k, {\r\n\r\n\t\t\tblendFunction,\r\n\r\n\t\t\tuniforms: new Map([\r\n\t\t\t\t[\"scale\", new Uniform(new Vector2())],\r\n\t\t\t\t[\"lineWidth\", new Uniform(lineWidth)]\r\n\t\t\t])\r\n\r\n\t\t});\r\n\r\n\t\t/**\r\n\t\t * The original resolution.\r\n\t\t *\r\n\t\t * @type {Vector2}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.resolution = new Vector2();\r\n\r\n\t\t/**\r\n\t\t * The grid scale, relative to the screen height.\r\n\t\t *\r\n\t\t * @type {Number}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.scale = Math.max(scale, 1e-6);\r\n\r\n\t\t/**\r\n\t\t * The grid line width.\r\n\t\t *\r\n\t\t * @type {Number}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.lineWidth = Math.max(lineWidth, 0.0);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the current grid scale.\r\n\t *\r\n\t * @return {Number} The grid scale.\r\n\t */\r\n\r\n\tgetScale() {\r\n\r\n\t\treturn this.scale;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the grid scale.\r\n\t *\r\n\t * @param {Number} scale - The new grid scale.\r\n\t */\r\n\r\n\tsetScale(scale) {\r\n\r\n\t\tthis.scale = scale;\r\n\t\tthis.setSize(this.resolution.x, this.resolution.y);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the current grid line width.\r\n\t *\r\n\t * @return {Number} The grid line width.\r\n\t */\r\n\r\n\tgetLineWidth() {\r\n\r\n\t\treturn this.lineWidth;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the grid line width.\r\n\t *\r\n\t * @param {Number} lineWidth - The new grid line width.\r\n\t */\r\n\r\n\tsetLineWidth(lineWidth) {\r\n\r\n\t\tthis.lineWidth = lineWidth;\r\n\t\tthis.setSize(this.resolution.x, this.resolution.y);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the size of this pass.\r\n\t *\r\n\t * @param {Number} width - The width.\r\n\t * @param {Number} height - The height.\r\n\t */\r\n\r\n\tsetSize(width, height) {\r\n\r\n\t\tthis.resolution.set(width, height);\r\n\r\n\t\tconst aspect = width / height;\r\n\t\tconst scale = this.scale * (height * 0.125);\r\n\r\n\t\tthis.uniforms.get(\"scale\").value.set(aspect * scale, scale);\r\n\t\tthis.uniforms.get(\"lineWidth\").value = (scale / height) + this.lineWidth;\r\n\r\n\t}\r\n\r\n}\n\nvar fragmentShader$l = \"uniform vec3 hue;uniform float saturation;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 color=vec3(dot(inputColor.rgb,hue.xyz),dot(inputColor.rgb,hue.zxy),dot(inputColor.rgb,hue.yzx));float average=(color.r+color.g+color.b)/3.0;vec3 diff=average-color;if(saturation>0.0){color+=diff*(1.0-1.0/(1.001-saturation));}else{color+=diff*-saturation;}outputColor=vec4(min(color,1.0),inputColor.a);}\";\n\n/**\r\n * A hue/saturation effect.\r\n *\r\n * Reference: https://github.com/evanw/glfx.js\r\n */\r\n\r\nclass HueSaturationEffect extends Effect {\r\n\r\n\t/**\r\n\t * Constructs a new hue/saturation effect.\r\n\t *\r\n\t * @param {Object} [options] - The options.\r\n\t * @param {BlendFunction} [options.blendFunction=BlendFunction.NORMAL] - The blend function of this effect.\r\n\t * @param {Number} [options.hue=0.0] - The hue in radians.\r\n\t * @param {Number} [options.saturation=0.0] - The saturation factor, ranging from -1 to 1, where 0 means no change.\r\n\t */\r\n\r\n\tconstructor({ blendFunction = BlendFunction.NORMAL, hue = 0.0, saturation = 0.0 } = {}) {\r\n\r\n\t\tsuper(\"HueSaturationEffect\", fragmentShader$l, {\r\n\r\n\t\t\tblendFunction,\r\n\r\n\t\t\tuniforms: new Map([\r\n\t\t\t\t[\"hue\", new Uniform(new Vector3())],\r\n\t\t\t\t[\"saturation\", new Uniform(saturation)]\r\n\t\t\t])\r\n\r\n\t\t});\r\n\r\n\t\tthis.setHue(hue);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the hue.\r\n\t *\r\n\t * @param {Number} hue - The hue in radians.\r\n\t */\r\n\r\n\tsetHue(hue) {\r\n\r\n\t\tconst s = Math.sin(hue), c = Math.cos(hue);\r\n\r\n\t\tthis.uniforms.get(\"hue\").value.set(\r\n\t\t\t2.0 * c, -Math.sqrt(3.0) * s - c, Math.sqrt(3.0) * s - c\r\n\t\t).addScalar(1.0).divideScalar(3.0);\r\n\r\n\t}\r\n\r\n}\n\nvar fragmentShader$m = \"void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 noise=vec3(rand(uv*time));\\n#ifdef PREMULTIPLY\\noutputColor=vec4(inputColor.rgb*noise,inputColor.a);\\n#else\\noutputColor=vec4(noise,inputColor.a);\\n#endif\\n}\";\n\n/**\r\n * A noise effect.\r\n */\r\n\r\nclass NoiseEffect extends Effect {\r\n\r\n\t/**\r\n\t * Constructs a new noise effect.\r\n\t *\r\n\t * @param {Object} [options] - The options.\r\n\t * @param {BlendFunction} [options.blendFunction=BlendFunction.SCREEN] - The blend function of this effect.\r\n\t * @param {Boolean} [options.premultiply=false] - Whether the noise should be multiplied with the input color.\r\n\t */\r\n\r\n\tconstructor({ blendFunction = BlendFunction.SCREEN, premultiply = false } = {}) {\r\n\r\n\t\tsuper(\"NoiseEffect\", fragmentShader$m, { blendFunction });\r\n\r\n\t\tthis.premultiply = premultiply;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates whether the noise should be multiplied with the input color.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tget premultiply() {\r\n\r\n\t\treturn this.defines.has(\"PREMULTIPLY\");\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Enables or disables noise premultiplication.\r\n\t *\r\n\t * You'll need to call {@link EffectPass#recompile} after changing this value.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tset premultiply(value) {\r\n\r\n\t\tvalue ? this.defines.set(\"PREMULTIPLY\", \"1\") : this.defines.delete(\"PREMULTIPLY\");\r\n\r\n\t}\r\n\r\n}\n\nvar fragmentShader$n = \"uniform sampler2D edgeTexture;uniform sampler2D maskTexture;uniform vec3 visibleEdgeColor;uniform vec3 hiddenEdgeColor;uniform float pulse;uniform float edgeStrength;\\n#ifdef USE_PATTERN\\nuniform sampler2D patternTexture;varying vec2 vUvPattern;\\n#endif\\nvoid mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec2 edge=texture2D(edgeTexture,uv).rg;vec2 mask=texture2D(maskTexture,uv).rg;\\n#ifndef X_RAY\\nedge.y=0.0;\\n#endif\\nedge*=(edgeStrength*mask.x*pulse);vec3 color=edge.x*visibleEdgeColor+edge.y*hiddenEdgeColor;float visibilityFactor=0.0;\\n#ifdef USE_PATTERN\\nvec4 patternColor=texture2D(patternTexture,vUvPattern);\\n#ifdef X_RAY\\nfloat hiddenFactor=0.5;\\n#else\\nfloat hiddenFactor=0.0;\\n#endif\\nvisibilityFactor=(1.0-mask.y>0.0)? 1.0 : hiddenFactor;visibilityFactor*=(1.0-mask.x)*patternColor.a;color+=visibilityFactor*patternColor.rgb;\\n#endif\\nfloat alpha=max(max(edge.x,edge.y),visibilityFactor);\\n#ifdef ALPHA\\noutputColor=vec4(color,alpha);\\n#else\\noutputColor=vec4(color,max(alpha,inputColor.a));\\n#endif\\n}\";\n\nvar vertexShader$7 = \"uniform float patternScale;varying vec2 vUvPattern;void mainSupport(const in vec2 uv){vUvPattern=uv*vec2(aspect,1.0)*patternScale;}\";\n\n/**\r\n * An outline effect.\r\n */\r\n\r\nclass OutlineEffect extends Effect {\r\n\r\n\t/**\r\n\t * Constructs a new outline effect.\r\n\t *\r\n\t * If you want dark outlines, remember to use an appropriate blend function.\r\n\t *\r\n\t * @param {Scene} scene - The main scene.\r\n\t * @param {Camera} camera - The main camera.\r\n\t * @param {Object} [options] - The options.\r\n\t * @param {BlendFunction} [options.blendFunction=BlendFunction.SCREEN] - The blend function. Set this to `BlendFunction.ALPHA` for dark outlines.\r\n\t * @param {Number} [options.patternTexture=null] - A pattern texture.\r\n\t * @param {Number} [options.edgeStrength=1.0] - The edge strength.\r\n\t * @param {Number} [options.pulseSpeed=0.0] - The pulse speed. A value of zero disables the pulse effect.\r\n\t * @param {Number} [options.visibleEdgeColor=0xffffff] - The color of visible edges.\r\n\t * @param {Number} [options.hiddenEdgeColor=0x22090a] - The color of hidden edges.\r\n\t * @param {Number} [options.resolutionScale=0.5] - Deprecated. Use height or width instead.\r\n\t * @param {Number} [options.width=BlurPass.AUTO_SIZE] - The render width. Has no effect if blurring is disabled.\r\n\t * @param {Number} [options.height=BlurPass.AUTO_SIZE] - The render height. Has no effect if blurring is disabled.\r\n\t * @param {KernelSize} [options.kernelSize=KernelSize.VERY_SMALL] - The blur kernel size.\r\n\t * @param {Boolean} [options.blur=false] - Whether the outline should be blurred.\r\n\t * @param {Boolean} [options.xRay=true] - Whether occluded parts of selected objects should be visible.\r\n\t */\r\n\r\n\tconstructor(scene, camera, {\r\n\t\tblendFunction = BlendFunction.SCREEN,\r\n\t\tpatternTexture = null,\r\n\t\tedgeStrength = 1.0,\r\n\t\tpulseSpeed = 0.0,\r\n\t\tvisibleEdgeColor = 0xffffff,\r\n\t\thiddenEdgeColor = 0x22090a,\r\n\t\tresolutionScale = 0.5,\r\n\t\twidth = BlurPass.AUTO_SIZE,\r\n\t\theight = BlurPass.AUTO_SIZE,\r\n\t\tkernelSize = KernelSize.VERY_SMALL,\r\n\t\tblur = false,\r\n\t\txRay = true\r\n\t} = {}) {\r\n\r\n\t\tsuper(\"OutlineEffect\", fragmentShader$n, {\r\n\r\n\t\t\tuniforms: new Map([\r\n\t\t\t\t[\"maskTexture\", new Uniform(null)],\r\n\t\t\t\t[\"edgeTexture\", new Uniform(null)],\r\n\t\t\t\t[\"edgeStrength\", new Uniform(edgeStrength)],\r\n\t\t\t\t[\"visibleEdgeColor\", new Uniform(new Color(visibleEdgeColor))],\r\n\t\t\t\t[\"hiddenEdgeColor\", new Uniform(new Color(hiddenEdgeColor))],\r\n\t\t\t\t[\"pulse\", new Uniform(1.0)]\r\n\t\t\t])\r\n\r\n\t\t});\r\n\r\n\t\t// Intercept blend function changes.\r\n\t\tthis.blendMode = ((defines) => (new Proxy(this.blendMode, {\r\n\r\n\t\t\tset(target, name, value) {\r\n\r\n\t\t\t\tif(value === BlendFunction.ALPHA) {\r\n\r\n\t\t\t\t\tdefines.set(\"ALPHA\", \"1\");\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tdefines.delete(\"ALPHA\");\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttarget[name] = value;\r\n\r\n\t\t\t\treturn true;\r\n\r\n\t\t\t}\r\n\r\n\t\t})))(this.defines);\r\n\r\n\t\tthis.blendMode.blendFunction = blendFunction;\r\n\t\tthis.setPatternTexture(patternTexture);\r\n\t\tthis.xRay = xRay;\r\n\r\n\t\t/**\r\n\t\t * The main scene.\r\n\t\t *\r\n\t\t * @type {Scene}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.scene = scene;\r\n\r\n\t\t/**\r\n\t\t * The main camera.\r\n\t\t *\r\n\t\t * @type {Camera}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.camera = camera;\r\n\r\n\t\t/**\r\n\t\t * A render target for the outline mask.\r\n\t\t *\r\n\t\t * @type {WebGLRenderTarget}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.renderTargetMask = new WebGLRenderTarget(1, 1, {\r\n\t\t\tminFilter: LinearFilter,\r\n\t\t\tmagFilter: LinearFilter,\r\n\t\t\tstencilBuffer: false,\r\n\t\t\tformat: RGBFormat\r\n\t\t});\r\n\r\n\t\tthis.renderTargetMask.texture.name = \"Outline.Mask\";\r\n\r\n\t\tthis.uniforms.get(\"maskTexture\").value = this.renderTargetMask.texture;\r\n\r\n\t\t/**\r\n\t\t * A render target for the edge detection.\r\n\t\t *\r\n\t\t * @type {WebGLRenderTarget}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.renderTargetEdges = this.renderTargetMask.clone();\r\n\t\tthis.renderTargetEdges.texture.name = \"Outline.Edges\";\r\n\t\tthis.renderTargetEdges.depthBuffer = false;\r\n\r\n\t\t/**\r\n\t\t * A render target for the blurred outline overlay.\r\n\t\t *\r\n\t\t * @type {WebGLRenderTarget}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.renderTargetBlurredEdges = this.renderTargetEdges.clone();\r\n\t\tthis.renderTargetBlurredEdges.texture.name = \"Outline.BlurredEdges\";\r\n\r\n\t\t/**\r\n\t\t * A clear pass.\r\n\t\t *\r\n\t\t * @type {ClearPass}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.clearPass = new ClearPass();\r\n\t\tthis.clearPass.overrideClearColor = new Color(0x000000);\r\n\t\tthis.clearPass.overrideClearAlpha = 1.0;\r\n\r\n\t\t/**\r\n\t\t * A depth pass.\r\n\t\t *\r\n\t\t * @type {DepthPass}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.depthPass = new DepthPass(scene, camera);\r\n\r\n\t\t/**\r\n\t\t * A depth comparison mask pass.\r\n\t\t *\r\n\t\t * @type {RenderPass}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.maskPass = new RenderPass(scene, camera, new DepthComparisonMaterial(this.depthPass.renderTarget.texture, camera));\r\n\r\n\t\tconst clearPass = this.maskPass.getClearPass();\r\n\t\tclearPass.overrideClearColor = new Color(0xffffff);\r\n\t\tclearPass.overrideClearAlpha = 1.0;\r\n\r\n\t\t/**\r\n\t\t * A blur pass.\r\n\t\t *\r\n\t\t * @type {BlurPass}\r\n\t\t */\r\n\r\n\t\tthis.blurPass = new BlurPass({ resolutionScale, width, height, kernelSize });\r\n\t\tthis.blur = blur;\r\n\r\n\t\t/**\r\n\t\t * An outline edge detection pass.\r\n\t\t *\r\n\t\t * @type {ShaderPass}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.outlineEdgesPass = new ShaderPass(new OutlineEdgesMaterial());\r\n\t\tthis.outlineEdgesPass.getFullscreenMaterial().uniforms.maskTexture.value = this.renderTargetMask.texture;\r\n\r\n\t\t/**\r\n\t\t * The current animation time.\r\n\t\t *\r\n\t\t * @type {Number}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.time = 0.0;\r\n\r\n\t\t/**\r\n\t\t * A selection of objects that will be outlined.\r\n\t\t *\r\n\t\t * @type {Selection}\r\n\t\t */\r\n\r\n\t\tthis.selection = new Selection();\r\n\r\n\t\t/**\r\n\t\t * The pulse speed. A value of zero disables the pulse effect.\r\n\t\t *\r\n\t\t * @type {Number}\r\n\t\t */\r\n\r\n\t\tthis.pulseSpeed = pulseSpeed;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * The current width of the internal render targets.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tget width() {\r\n\r\n\t\treturn this.blurPass.width;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the render width.\r\n\t *\r\n\t * Use {@link BlurPass.AUTO_SIZE} to activate automatic sizing based on the\r\n\t * render height and aspect ratio.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tset width(value) {\r\n\r\n\t\tconst blurPass = this.blurPass;\r\n\t\tblurPass.width = value;\r\n\r\n\t\tthis.renderTargetEdges.setSize(blurPass.width, blurPass.height);\r\n\t\tthis.renderTargetBlurredEdges.setSize(blurPass.width, blurPass.height);\r\n\t\tthis.outlineEdgesPass.getFullscreenMaterial().setTexelSize(1.0 / blurPass.width, 1.0 / blurPass.height);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * The current height of the internal render targets.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tget height() {\r\n\r\n\t\treturn this.blurPass.height;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the render height.\r\n\t *\r\n\t * Use {@link BlurPass.AUTO_SIZE} to activate automatic sizing based on the\r\n\t * render width and aspect ratio.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tset height(value) {\r\n\r\n\t\tconst blurPass = this.blurPass;\r\n\t\tblurPass.height = value;\r\n\r\n\t\tthis.renderTargetEdges.setSize(blurPass.width, blurPass.height);\r\n\t\tthis.renderTargetBlurredEdges.setSize(blurPass.width, blurPass.height);\r\n\t\tthis.outlineEdgesPass.getFullscreenMaterial().setTexelSize(1.0 / blurPass.width, 1.0 / blurPass.height);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * @type {Number}\r\n\t * @deprecated Use selection.layer instead.\r\n\t */\r\n\r\n\tget selectionLayer() {\r\n\r\n\t\treturn this.selection.layer;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * @type {Number}\r\n\t * @deprecated Use selection.layer instead.\r\n\t */\r\n\r\n\tset selectionLayer(value) {\r\n\r\n\t\tthis.selection.layer = value;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates whether dithering is enabled.\r\n\t *\r\n\t * @type {Boolean}\r\n\t * @deprecated Use blurPass.dithering instead.\r\n\t */\r\n\r\n\tget dithering() {\r\n\r\n\t\treturn this.blurPass.dithering;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Enables or disables dithering.\r\n\t *\r\n\t * @type {Boolean}\r\n\t * @deprecated Use blurPass.dithering instead.\r\n\t */\r\n\r\n\tset dithering(value) {\r\n\r\n\t\tthis.blurPass.dithering = value;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * The blur kernel size.\r\n\t *\r\n\t * @type {KernelSize}\r\n\t * @deprecated Use blurPass.kernelSize instead.\r\n\t */\r\n\r\n\tget kernelSize() {\r\n\r\n\t\treturn this.blurPass.kernelSize;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the kernel size.\r\n\t *\r\n\t * @type {KernelSize}\r\n\t * @deprecated Use blurPass.kernelSize instead.\r\n\t */\r\n\r\n\tset kernelSize(value) {\r\n\r\n\t\tthis.blurPass.kernelSize = value;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates whether the outlines should be blurred.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tget blur() {\r\n\r\n\t\treturn this.blurPass.enabled;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tset blur(value) {\r\n\r\n\t\tthis.blurPass.enabled = value;\r\n\r\n\t\tthis.uniforms.get(\"edgeTexture\").value = value ?\r\n\t\t\tthis.renderTargetBlurredEdges.texture :\r\n\t\t\tthis.renderTargetEdges.texture;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates whether X-Ray outlines are enabled.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tget xRay() {\r\n\r\n\t\treturn this.defines.has(\"X_RAY\");\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Enables or disables X-Ray outlines.\r\n\t *\r\n\t * You'll need to call {@link EffectPass#recompile} after changing this value.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tset xRay(value) {\r\n\r\n\t\tvalue ? this.defines.set(\"X_RAY\", \"1\") : this.defines.delete(\"X_RAY\");\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the pattern texture.\r\n\t *\r\n\t * You'll need to call {@link EffectPass#recompile} after changing the\r\n\t * texture.\r\n\t *\r\n\t * @param {Texture} texture - The new texture.\r\n\t */\r\n\r\n\tsetPatternTexture(texture) {\r\n\r\n\t\tif(texture !== null) {\r\n\r\n\t\t\ttexture.wrapS = texture.wrapT = RepeatWrapping;\r\n\r\n\t\t\tthis.defines.set(\"USE_PATTERN\", \"1\");\r\n\t\t\tthis.uniforms.set(\"patternScale\", new Uniform(1.0));\r\n\t\t\tthis.uniforms.set(\"patternTexture\", new Uniform(texture));\r\n\t\t\tthis.vertexShader = vertexShader$7;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tthis.defines.delete(\"USE_PATTERN\");\r\n\t\t\tthis.uniforms.delete(\"patternScale\");\r\n\t\t\tthis.uniforms.delete(\"patternTexture\");\r\n\t\t\tthis.vertexShader = null;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the current resolution scale.\r\n\t *\r\n\t * @return {Number} The resolution scale.\r\n\t * @deprecated Adjust the width or height instead.\r\n\t */\r\n\r\n\tgetResolutionScale() {\r\n\r\n\t\treturn this.blurPass.getResolutionScale();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the resolution scale.\r\n\t *\r\n\t * @param {Number} scale - The new resolution scale.\r\n\t * @deprecated Adjust the width or height instead.\r\n\t */\r\n\r\n\tsetResolutionScale(scale) {\r\n\r\n\t\tconst originalSize = this.blurPass.getOriginalSize();\r\n\t\tthis.blurPass.setResolutionScale(scale);\r\n\t\tthis.depthPass.setResolutionScale(scale);\r\n\t\tthis.setSize(originalSize.x, originalSize.y);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Clears the current selection and selects a list of objects.\r\n\t *\r\n\t * @param {Object3D[]} objects - The objects that should be outlined. This array will be copied.\r\n\t * @return {OutlinePass} This pass.\r\n\t * @deprecated Use selection.set instead.\r\n\t */\r\n\r\n\tsetSelection(objects) {\r\n\r\n\t\tthis.selection.set(objects);\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Clears the list of selected objects.\r\n\t *\r\n\t * @return {OutlinePass} This pass.\r\n\t * @deprecated Use selection.clear instead.\r\n\t */\r\n\r\n\tclearSelection() {\r\n\r\n\t\tthis.selection.clear();\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Selects an object.\r\n\t *\r\n\t * @param {Object3D} object - The object that should be outlined.\r\n\t * @return {OutlinePass} This pass.\r\n\t * @deprecated Use selection.add instead.\r\n\t */\r\n\r\n\tselectObject(object) {\r\n\r\n\t\tthis.selection.add(object);\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Deselects an object.\r\n\t *\r\n\t * @param {Object3D} object - The object that should no longer be outlined.\r\n\t * @return {OutlinePass} This pass.\r\n\t * @deprecated Use selection.delete instead.\r\n\t */\r\n\r\n\tdeselectObject(object) {\r\n\r\n\t\tthis.selection.delete(object);\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Updates this effect.\r\n\t *\r\n\t * @param {WebGLRenderer} renderer - The renderer.\r\n\t * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\r\n\t * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\r\n\t */\r\n\r\n\tupdate(renderer, inputBuffer, deltaTime) {\r\n\r\n\t\tconst scene = this.scene;\r\n\t\tconst camera = this.camera;\r\n\t\tconst selection = this.selection;\r\n\t\tconst pulse = this.uniforms.get(\"pulse\");\r\n\r\n\t\tconst background = scene.background;\r\n\t\tconst mask = camera.layers.mask;\r\n\r\n\t\tif(selection.size > 0) {\r\n\r\n\t\t\tscene.background = null;\r\n\t\t\tpulse.value = 1.0;\r\n\r\n\t\t\tif(this.pulseSpeed > 0.0) {\r\n\r\n\t\t\t\tpulse.value = 0.625 + Math.cos(this.time * this.pulseSpeed * 10.0) * 0.375;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tthis.time += deltaTime;\r\n\r\n\t\t\t// Render a custom depth texture and ignore selected objects.\r\n\t\t\tselection.setVisible(false);\r\n\t\t\tthis.depthPass.render(renderer);\r\n\t\t\tselection.setVisible(true);\r\n\r\n\t\t\t// Compare the depth of the selected objects with the depth texture.\r\n\t\t\tcamera.layers.set(selection.layer);\r\n\t\t\tthis.maskPass.render(renderer, this.renderTargetMask);\r\n\r\n\t\t\t// Restore the camera layer mask and the scene background.\r\n\t\t\tcamera.layers.mask = mask;\r\n\t\t\tscene.background = background;\r\n\r\n\t\t\t// Detect the outline.\r\n\t\t\tthis.outlineEdgesPass.render(renderer, null, this.renderTargetEdges);\r\n\r\n\t\t\tif(this.blur) {\r\n\r\n\t\t\t\tthis.blurPass.render(renderer, this.renderTargetEdges, this.renderTargetBlurredEdges);\r\n\r\n\t\t\t}\r\n\r\n\t\t} else if(this.time > 0.0) {\r\n\r\n\t\t\tthis.clearPass.render(renderer, this.renderTargetMask);\r\n\t\t\tthis.time = 0.0;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the size of internal render targets.\r\n\t *\r\n\t * @param {Number} width - The width.\r\n\t * @param {Number} height - The height.\r\n\t */\r\n\r\n\tsetSize(width, height) {\r\n\r\n\t\tthis.renderTargetMask.setSize(width, height);\r\n\t\tthis.depthPass.setSize(width, height);\r\n\t\tthis.blurPass.setSize(width, height);\r\n\r\n\t\twidth = this.blurPass.width;\r\n\t\theight = this.blurPass.height;\r\n\r\n\t\tthis.renderTargetEdges.setSize(width, height);\r\n\t\tthis.renderTargetBlurredEdges.setSize(width, height);\r\n\t\tthis.outlineEdgesPass.getFullscreenMaterial().setTexelSize(1.0 / width, 1.0 / height);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Performs initialization tasks.\r\n\t *\r\n\t * @param {WebGLRenderer} renderer - The renderer.\r\n\t * @param {Boolean} alpha - Whether the renderer uses the alpha channel or not.\r\n\t */\r\n\r\n\tinitialize(renderer, alpha) {\r\n\r\n\t\tthis.blurPass.initialize(renderer, alpha);\r\n\t\tthis.depthPass.initialize(renderer, alpha);\r\n\t\tthis.maskPass.initialize(renderer, alpha);\r\n\r\n\t}\r\n\r\n}\n\nvar fragmentShader$o = \"uniform bool active;uniform vec2 d;void mainUv(inout vec2 uv){if(active){uv=vec2(d.x*(floor(uv.x/d.x)+0.5),d.y*(floor(uv.y/d.y)+0.5));}}\";\n\n/**\r\n * A pixelation effect.\r\n *\r\n * Warning: This effect cannot be merged with convolution effects.\r\n */\r\n\r\nclass PixelationEffect extends Effect {\r\n\r\n\t/**\r\n\t * Constructs a new pixelation effect.\r\n\t *\r\n\t * @param {Object} [granularity=30.0] - The pixel granularity.\r\n\t */\r\n\r\n\tconstructor(granularity = 30.0) {\r\n\r\n\t\tsuper(\"PixelationEffect\", fragmentShader$o, {\r\n\r\n\t\t\tuniforms: new Map([\r\n\t\t\t\t[\"active\", new Uniform(false)],\r\n\t\t\t\t[\"d\", new Uniform(new Vector2())]\r\n\t\t\t])\r\n\r\n\t\t});\r\n\r\n\t\t/**\r\n\t\t * The original resolution.\r\n\t\t *\r\n\t\t * @type {Vector2}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.resolution = new Vector2();\r\n\r\n\t\t/**\r\n\t\t * The pixel granularity.\r\n\t\t *\r\n\t\t * @type {Number}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.granularity = granularity;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the pixel granularity.\r\n\t *\r\n\t * @return {Number} The granularity.\r\n\t */\r\n\r\n\tgetGranularity() {\r\n\r\n\t\treturn this.granularity;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the pixel granularity.\r\n\t *\r\n\t * A higher value yields coarser visuals.\r\n\t *\r\n\t * @param {Number} granularity - The new granularity.\r\n\t */\r\n\r\n\tsetGranularity(granularity) {\r\n\r\n\t\tgranularity = Math.floor(granularity);\r\n\r\n\t\tif(granularity % 2 > 0) {\r\n\r\n\t\t\tgranularity += 1;\r\n\r\n\t\t}\r\n\r\n\t\tconst uniforms = this.uniforms;\r\n\t\tuniforms.get(\"active\").value = (granularity > 0.0);\r\n\t\tuniforms.get(\"d\").value.set(granularity, granularity)\r\n\t\t\t.divide(this.resolution);\r\n\r\n\t\tthis.granularity = granularity;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the granularity.\r\n\t *\r\n\t * @param {Number} width - The width.\r\n\t * @param {Number} height - The height.\r\n\t */\r\n\r\n\tsetSize(width, height) {\r\n\r\n\t\tthis.resolution.set(width, height);\r\n\t\tthis.setGranularity(this.granularity);\r\n\r\n\t}\r\n\r\n}\n\nvar fragmentShader$p = \"uniform float focus;uniform float focalLength;uniform float maxBlur;uniform float luminanceThreshold;uniform float luminanceGain;uniform float bias;uniform float fringe;\\n#ifdef MANUAL_DOF\\nuniform vec4 dof;\\n#endif\\n#ifdef PENTAGON\\nfloat pentagon(const in vec2 coords){const vec4 HS0=vec4(1.0,0.0,0.0,1.0);const vec4 HS1=vec4(0.309016994,0.951056516,0.0,1.0);const vec4 HS2=vec4(-0.809016994,0.587785252,0.0,1.0);const vec4 HS3=vec4(-0.809016994,-0.587785252,0.0,1.0);const vec4 HS4=vec4(0.309016994,-0.951056516,0.0,1.0);const vec4 HS5=vec4(0.0,0.0,1.0,1.0);const vec4 ONE=vec4(1.0);const float P_FEATHER=0.4;const float N_FEATHER=-P_FEATHER;float inOrOut=-4.0;vec4 P=vec4(coords,vec2(RINGS_FLOAT-1.3));vec4 dist=vec4(dot(P,HS0),dot(P,HS1),dot(P,HS2),dot(P,HS3));dist=smoothstep(N_FEATHER,P_FEATHER,dist);inOrOut+=dot(dist,ONE);dist.x=dot(P,HS4);dist.y=HS5.w-abs(P.z);dist=smoothstep(N_FEATHER,P_FEATHER,dist);inOrOut+=dist.x;return clamp(inOrOut,0.0,1.0);}\\n#endif\\nvec3 processTexel(const in vec2 coords,const in float blur){vec2 scale=texelSize*fringe*blur;vec3 c=vec3(texture2D(inputBuffer,coords+vec2(0.0,1.0)*scale).r,texture2D(inputBuffer,coords+vec2(-0.866,-0.5)*scale).g,texture2D(inputBuffer,coords+vec2(0.866,-0.5)*scale).b);float luminance=linearToRelativeLuminance(c);float threshold=max((luminance-luminanceThreshold)*luminanceGain,0.0);return c+mix(vec3(0.0),c,threshold*blur);}float gather(const in float i,const in float j,const in float ringSamples,const in vec2 uv,const in vec2 blurFactor,const in float blur,inout vec3 color){float step=PI2/ringSamples;vec2 wh=vec2(cos(j*step)*i,sin(j*step)*i);\\n#ifdef PENTAGON\\nfloat p=pentagon(wh);\\n#else\\nfloat p=1.0;\\n#endif\\ncolor+=processTexel(wh*blurFactor+uv,blur)*mix(1.0,i/RINGS_FLOAT,bias)*p;return mix(1.0,i/RINGS_FLOAT,bias)*p;}void mainImage(const in vec4 inputColor,const in vec2 uv,const in float depth,out vec4 outputColor){float linearDepth=(-cameraFar*cameraNear/(depth*(cameraFar-cameraNear)-cameraFar));\\n#ifdef MANUAL_DOF\\nfloat focalPlane=linearDepth-focus;float farDoF=(focalPlane-dof.z)/dof.w;float nearDoF=(-focalPlane-dof.x)/dof.y;float blur=(focalPlane>0.0)? farDoF : nearDoF;\\n#else\\nconst float CIRCLE_OF_CONFUSION=0.03;float focalPlaneMM=focus*1000.0;float depthMM=linearDepth*1000.0;float focalPlane=(depthMM*focalLength)/(depthMM-focalLength);float farDoF=(focalPlaneMM*focalLength)/(focalPlaneMM-focalLength);float nearDoF=(focalPlaneMM-focalLength)/(focalPlaneMM*focus*CIRCLE_OF_CONFUSION);float blur=abs(focalPlane-farDoF)*nearDoF;\\n#endif\\nconst int MAX_RING_SAMPLES=RINGS_INT*SAMPLES_INT;blur=clamp(blur,0.0,1.0);vec3 color=inputColor.rgb;if(blur>=0.05){vec2 blurFactor=blur*maxBlur*texelSize;float s=1.0;int ringSamples;for(int i=1;i<=RINGS_INT;i++){ringSamples=i*SAMPLES_INT;for(int j=0;j=ringSamples){break;}s+=gather(float(i),float(j),float(ringSamples),uv,blurFactor,blur,color);}}color/=s;}\\n#ifdef SHOW_FOCUS\\nfloat edge=0.002*linearDepth;float m=clamp(smoothstep(0.0,edge,blur),0.0,1.0);float e=clamp(smoothstep(1.0-edge,1.0,blur),0.0,1.0);color=mix(color,vec3(1.0,0.5,0.0),(1.0-m)*0.6);color=mix(color,vec3(0.0,0.5,1.0),((1.0-e)-(1.0-m))*0.2);\\n#endif\\noutputColor=vec4(color,inputColor.a);}\";\n\n/**\r\n * Depth of Field shader v2.4.\r\n *\r\n * Yields more realistic results but is also more demanding.\r\n *\r\n * Original shader code by Martins Upitis:\r\n * http://blenderartists.org/forum/showthread.php?237488-GLSL-depth-of-field-with-bokeh-v2-4-(update)\r\n */\r\n\r\nclass RealisticBokehEffect extends Effect {\r\n\r\n\t/**\r\n\t * Constructs a new bokeh effect.\r\n\t *\r\n\t * @param {Object} [options] - The options.\r\n\t * @param {BlendFunction} [options.blendFunction=BlendFunction.NORMAL] - The blend function of this effect.\r\n\t * @param {Number} [options.focus=1.0] - The focus distance in world units.\r\n\t * @param {Number} [options.focalLength=24.0] - The focal length of the main camera.\r\n\t * @param {Number} [options.luminanceThreshold=0.5] - A luminance threshold.\r\n\t * @param {Number} [options.luminanceGain=2.0] - A luminance gain factor.\r\n\t * @param {Number} [options.bias=0.5] - A blur bias.\r\n\t * @param {Number} [options.fringe=0.7] - A blur offset.\r\n\t * @param {Number} [options.maxBlur=1.0] - The maximum blur strength.\r\n\t * @param {Boolean} [options.rings=3] - The number of blur iterations.\r\n\t * @param {Boolean} [options.samples=2] - The amount of samples taken per ring.\r\n\t * @param {Boolean} [options.showFocus=false] - Whether the focal point should be highlighted. Useful for debugging.\r\n\t * @param {Boolean} [options.manualDoF=false] - Enables manual control over the depth of field.\r\n\t * @param {Boolean} [options.pentagon=false] - Enables pentagonal blur shapes. Requires a high number of rings and samples.\r\n\t */\r\n\r\n\tconstructor({\r\n\t\tblendFunction = BlendFunction.NORMAL,\r\n\t\tfocus = 1.0,\r\n\t\tfocalLength = 24.0,\r\n\t\tluminanceThreshold = 0.5,\r\n\t\tluminanceGain = 2.0,\r\n\t\tbias = 0.5,\r\n\t\tfringe = 0.7,\r\n\t\tmaxBlur = 1.0,\r\n\t\trings = 3,\r\n\t\tsamples = 2,\r\n\t\tshowFocus = false,\r\n\t\tmanualDoF = false,\r\n\t\tpentagon = false\r\n\t} = {}) {\r\n\r\n\t\tsuper(\"RealisticBokehEffect\", fragmentShader$p, {\r\n\r\n\t\t\tblendFunction,\r\n\t\t\tattributes: EffectAttribute.CONVOLUTION | EffectAttribute.DEPTH,\r\n\r\n\t\t\tuniforms: new Map([\r\n\t\t\t\t[\"focus\", new Uniform(focus)],\r\n\t\t\t\t[\"focalLength\", new Uniform(focalLength)],\r\n\t\t\t\t[\"luminanceThreshold\", new Uniform(luminanceThreshold)],\r\n\t\t\t\t[\"luminanceGain\", new Uniform(luminanceGain)],\r\n\t\t\t\t[\"bias\", new Uniform(bias)],\r\n\t\t\t\t[\"fringe\", new Uniform(fringe)],\r\n\t\t\t\t[\"maxBlur\", new Uniform(maxBlur)]\r\n\t\t\t])\r\n\r\n\t\t});\r\n\r\n\t\tthis.rings = rings;\r\n\t\tthis.samples = samples;\r\n\t\tthis.showFocus = showFocus;\r\n\t\tthis.manualDoF = manualDoF;\r\n\t\tthis.pentagon = pentagon;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * The amount of blur iterations.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tget rings() {\r\n\r\n\t\treturn Number.parseInt(this.defines.get(\"RINGS_INT\"));\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the amount of blur iterations.\r\n\t *\r\n\t * You'll need to call {@link EffectPass#recompile} after changing this value.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tset rings(value) {\r\n\r\n\t\tvalue = Math.floor(value);\r\n\r\n\t\tthis.defines.set(\"RINGS_INT\", value.toFixed(0));\r\n\t\tthis.defines.set(\"RINGS_FLOAT\", value.toFixed(1));\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * The amount of blur samples per ring.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tget samples() {\r\n\r\n\t\treturn Number.parseInt(this.defines.get(\"SAMPLES_INT\"));\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the amount of blur samples per ring.\r\n\t *\r\n\t * You'll need to call {@link EffectPass#recompile} after changing this value.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tset samples(value) {\r\n\r\n\t\tvalue = Math.floor(value);\r\n\r\n\t\tthis.defines.set(\"SAMPLES_INT\", value.toFixed(0));\r\n\t\tthis.defines.set(\"SAMPLES_FLOAT\", value.toFixed(1));\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates whether the focal point will be highlighted.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tget showFocus() {\r\n\r\n\t\treturn this.defines.has(\"SHOW_FOCUS\");\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Enables or disables focal point highlighting.\r\n\t *\r\n\t * You'll need to call {@link EffectPass#recompile} after changing this value.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tset showFocus(value) {\r\n\r\n\t\tvalue ? this.defines.set(\"SHOW_FOCUS\", \"1\") : this.defines.delete(\"SHOW_FOCUS\");\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates whether the Depth of Field should be calculated manually.\r\n\t *\r\n\t * If enabled, the Depth of Field can be adjusted via the `dof` uniform.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tget manualDoF() {\r\n\r\n\t\treturn this.defines.has(\"MANUAL_DOF\");\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Enables or disables manual Depth of Field.\r\n\t *\r\n\t * You'll need to call {@link EffectPass#recompile} after changing this value.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tset manualDoF(value) {\r\n\r\n\t\tif(value) {\r\n\r\n\t\t\tthis.defines.set(\"MANUAL_DOF\", \"1\");\r\n\t\t\tthis.uniforms.set(\"dof\", new Uniform(new Vector4(0.2, 1.0, 0.2, 2.0)));\r\n\r\n\t\t} else {\r\n\r\n\t\t\tthis.defines.delete(\"MANUAL_DOF\");\r\n\t\t\tthis.uniforms.delete(\"dof\");\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates whether the blur shape should be pentagonal.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tget pentagon() {\r\n\r\n\t\treturn this.defines.has(\"PENTAGON\");\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Enables or disables pentagonal blur.\r\n\t *\r\n\t * You'll need to call {@link EffectPass#recompile} after changing this value.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tset pentagon(value) {\r\n\r\n\t\tvalue ? this.defines.set(\"PENTAGON\", \"1\") : this.defines.delete(\"PENTAGON\");\r\n\r\n\t}\r\n\r\n}\n\nvar fragmentShader$q = \"uniform float count;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec2 sl=vec2(sin(uv.y*count),cos(uv.y*count));vec3 scanlines=vec3(sl.x,sl.y,sl.x);outputColor=vec4(scanlines,inputColor.a);}\";\n\n/**\r\n * A scanline effect.\r\n */\r\n\r\nclass ScanlineEffect extends Effect {\r\n\r\n\t/**\r\n\t * Constructs a new scanline effect.\r\n\t *\r\n\t * @param {Object} [options] - The options.\r\n\t * @param {BlendFunction} [options.blendFunction=BlendFunction.OVERLAY] - The blend function of this effect.\r\n\t * @param {Number} [options.density=1.25] - The scanline density.\r\n\t */\r\n\r\n\tconstructor({ blendFunction = BlendFunction.OVERLAY, density = 1.25 } = {}) {\r\n\r\n\t\tsuper(\"ScanlineEffect\", fragmentShader$q, {\r\n\r\n\t\t\tblendFunction,\r\n\r\n\t\t\tuniforms: new Map([\r\n\t\t\t\t[\"count\", new Uniform(0.0)]\r\n\t\t\t])\r\n\r\n\t\t});\r\n\r\n\t\t/**\r\n\t\t * The original resolution.\r\n\t\t *\r\n\t\t * @type {Vector2}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.resolution = new Vector2();\r\n\r\n\t\t/**\r\n\t\t * The amount of scanlines, relative to the screen height.\r\n\t\t *\r\n\t\t * @type {Number}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.density = density;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the current scanline density.\r\n\t *\r\n\t * @return {Number} The scanline density.\r\n\t */\r\n\r\n\tgetDensity() {\r\n\r\n\t\treturn this.density;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the scanline density.\r\n\t *\r\n\t * @param {Number} density - The new scanline density.\r\n\t */\r\n\r\n\tsetDensity(density) {\r\n\r\n\t\tthis.density = density;\r\n\t\tthis.setSize(this.resolution.x, this.resolution.y);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the size of this pass.\r\n\t *\r\n\t * @param {Number} width - The width.\r\n\t * @param {Number} height - The height.\r\n\t */\r\n\r\n\tsetSize(width, height) {\r\n\r\n\t\tthis.resolution.set(width, height);\r\n\t\tthis.uniforms.get(\"count\").value = Math.round(height * this.density);\r\n\r\n\t}\r\n\r\n}\n\nvar fragmentShader$r = \"uniform bool active;uniform vec2 center;uniform float waveSize;uniform float radius;uniform float maxRadius;uniform float amplitude;varying float vSize;void mainUv(inout vec2 uv){if(active){vec2 aspectCorrection=vec2(aspect,1.0);vec2 difference=uv*aspectCorrection-center*aspectCorrection;float distance=sqrt(dot(difference,difference))*vSize;if(distance>radius){if(distance HALF_PI) {\r\n\r\n\t\t\t\t// Scale the effect based on distance to the object.\r\n\t\t\t\tuniforms.get(\"cameraDistance\").value = camera.position.distanceTo(epicenter);\r\n\r\n\t\t\t\t// Calculate the screen position of the epicenter.\r\n\t\t\t\tv$1.copy(epicenter).project(camera);\r\n\t\t\t\tthis.screenPosition.set((v$1.x + 1.0) * 0.5, (v$1.y + 1.0) * 0.5);\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// Update the shock wave radius based on time.\r\n\t\t\tthis.time += delta * this.speed;\r\n\t\t\tradius = this.time - waveSize;\r\n\t\t\tuniforms.get(\"radius\").value = radius;\r\n\r\n\t\t\tif(radius >= (uniforms.get(\"maxRadius\").value + waveSize) * 2.0) {\r\n\r\n\t\t\t\tthis.active = false;\r\n\t\t\t\tuniforms.get(\"active\").value = false;\r\n\r\n\t\t\t}\r\n\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\n\n/**\r\n * A selective bloom effect.\r\n *\r\n * This effect applies bloom only to selected objects. For this, all objects in\r\n * the scene need to be rendered again: non-selected objects are rendered solid\r\n * black to properly occlude selected objects and the scene background.\r\n *\r\n * Attention: If you don't need to limit bloom to a subset of objects, consider\r\n * using the {@link BloomEffect} instead for better performance.\r\n */\r\n\r\nclass SelectiveBloomEffect extends BloomEffect {\r\n\r\n\t/**\r\n\t * Constructs a new selective bloom effect.\r\n\t *\r\n\t * @param {Scene} scene - The main scene.\r\n\t * @param {Camera} camera - The main camera.\r\n\t * @param {Object} [options] - The options. See {@link BloomEffect} for details.\r\n\t */\r\n\r\n\tconstructor(scene, camera, options) {\r\n\r\n\t\tsuper(options);\r\n\r\n\t\t/**\r\n\t\t * The main scene.\r\n\t\t *\r\n\t\t * @type {Scene}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.scene = scene;\r\n\r\n\t\t/**\r\n\t\t * The main camera.\r\n\t\t *\r\n\t\t * @type {Camera}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.camera = camera;\r\n\r\n\t\t/**\r\n\t\t * A clear pass.\r\n\t\t *\r\n\t\t * @type {ClearPass}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.clearPass = new ClearPass(true, true, false);\r\n\t\tthis.clearPass.overrideClearColor = new Color(0x000000);\r\n\r\n\t\t/**\r\n\t\t * A render pass.\r\n\t\t *\r\n\t\t * @type {RenderPass}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.renderPass = new RenderPass(scene, camera);\r\n\t\tthis.renderPass.clear = false;\r\n\r\n\t\t/**\r\n\t\t * A render pass that renders all objects solid black.\r\n\t\t *\r\n\t\t * @type {RenderPass}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.blackoutPass = new RenderPass(scene, camera, new MeshBasicMaterial({ color: 0x000000 }));\r\n\t\tthis.blackoutPass.clear = false;\r\n\r\n\t\t/**\r\n\t\t * A render pass that only renders the background of the main scene.\r\n\t\t *\r\n\t\t * @type {RenderPass}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.backgroundPass = (() => {\r\n\r\n\t\t\tconst backgroundScene = new Scene();\r\n\t\t\tconst pass = new RenderPass(backgroundScene, camera);\r\n\r\n\t\t\tbackgroundScene.background = scene.background;\r\n\t\t\tpass.clear = false;\r\n\r\n\t\t\treturn pass;\r\n\r\n\t\t})();\r\n\r\n\t\t/**\r\n\t\t * A render target.\r\n\t\t *\r\n\t\t * @type {WebGLRenderTarget}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.renderTargetSelection = new WebGLRenderTarget(1, 1, {\r\n\t\t\tminFilter: LinearFilter,\r\n\t\t\tmagFilter: LinearFilter,\r\n\t\t\tstencilBuffer: false,\r\n\t\t\tdepthBuffer: true\r\n\t\t});\r\n\r\n\t\tthis.renderTargetSelection.texture.name = \"Bloom.Selection\";\r\n\t\tthis.renderTargetSelection.texture.generateMipmaps = false;\r\n\r\n\t\t/**\r\n\t\t * A selection of objects.\r\n\t\t *\r\n\t\t * @type {Selection}\r\n\t\t */\r\n\r\n\t\tthis.selection = new Selection();\r\n\r\n\t\t/**\r\n\t\t * Indicates whether the selection should be considered inverted.\r\n\t\t *\r\n\t\t * @type {Boolean}\r\n\t\t */\r\n\r\n\t\tthis.inverted = false;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * The current width of the internal render targets.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tget width() {\r\n\r\n\t\treturn super.width;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the render width.\r\n\t *\r\n\t * Use {@link BlurPass.AUTO_SIZE} to activate automatic sizing based on the\r\n\t * render height and aspect ratio.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tset width(value) {\r\n\r\n\t\tsuper.width = value;\r\n\r\n\t\tthis.renderTargetSelection.setSize(this.width, this.height);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * The current height of the internal render targets.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tget height() {\r\n\r\n\t\treturn super.height;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the render height.\r\n\t *\r\n\t * Use {@link BlurPass.AUTO_SIZE} to activate automatic sizing based on the\r\n\t * render width and aspect ratio.\r\n\t *\r\n\t * @type {Number}\r\n\t */\r\n\r\n\tset height(value) {\r\n\r\n\t\tsuper.height = value;\r\n\r\n\t\tthis.renderTargetSelection.setSize(this.width, this.height);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates whether the scene background should be ignored.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tget ignoreBackground() {\r\n\r\n\t\treturn !this.backgroundPass.enabled;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Enables or disables background rendering.\r\n\t *\r\n\t * @type {Boolean}\r\n\t */\r\n\r\n\tset ignoreBackground(value) {\r\n\r\n\t\tthis.backgroundPass.enabled = !value;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Updates this effect.\r\n\t *\r\n\t * @param {WebGLRenderer} renderer - The renderer.\r\n\t * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\r\n\t * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\r\n\t */\r\n\r\n\tupdate(renderer, inputBuffer, deltaTime) {\r\n\r\n\t\tconst scene = this.scene;\r\n\t\tconst camera = this.camera;\r\n\t\tconst selection = this.selection;\r\n\t\tconst renderTarget = this.renderTargetSelection;\r\n\r\n\t\tconst background = scene.background;\r\n\t\tconst mask = camera.layers.mask;\r\n\r\n\t\tthis.clearPass.render(renderer, renderTarget);\r\n\r\n\t\tif(!this.ignoreBackground) {\r\n\r\n\t\t\tthis.backgroundPass.render(renderer, renderTarget);\r\n\r\n\t\t}\r\n\r\n\t\tscene.background = null;\r\n\r\n\t\tif(this.inverted) {\r\n\r\n\t\t\tcamera.layers.set(selection.layer);\r\n\t\t\tthis.blackoutPass.render(renderer, renderTarget);\r\n\t\t\tcamera.layers.mask = mask;\r\n\r\n\t\t\tselection.setVisible(false);\r\n\t\t\tthis.renderPass.render(renderer, renderTarget);\r\n\t\t\tselection.setVisible(true);\r\n\r\n\t\t} else {\r\n\r\n\t\t\tselection.setVisible(false);\r\n\t\t\tthis.blackoutPass.render(renderer, renderTarget);\r\n\t\t\tselection.setVisible(true);\r\n\r\n\t\t\tcamera.layers.set(selection.layer);\r\n\t\t\tthis.renderPass.render(renderer, renderTarget);\r\n\t\t\tcamera.layers.mask = mask;\r\n\r\n\t\t}\r\n\r\n\t\tscene.background = background;\r\n\t\tsuper.update(renderer, renderTarget, deltaTime);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the size of internal render targets.\r\n\t *\r\n\t * @param {Number} width - The width.\r\n\t * @param {Number} height - The height.\r\n\t */\r\n\r\n\tsetSize(width, height) {\r\n\r\n\t\tconst blurPass = this.blurPass;\r\n\r\n\t\tsuper.setSize(width, height);\r\n\r\n\t\tthis.backgroundPass.setSize(width, height);\r\n\t\tthis.blackoutPass.setSize(width, height);\r\n\t\tthis.renderPass.setSize(width, height);\r\n\r\n\t\tthis.renderTargetSelection.setSize(blurPass.width, blurPass.height);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Performs initialization tasks.\r\n\t *\r\n\t * @param {WebGLRenderer} renderer - The renderer.\r\n\t * @param {Boolean} alpha - Whether the renderer uses the alpha channel or not.\r\n\t */\r\n\r\n\tinitialize(renderer, alpha) {\r\n\r\n\t\tsuper.initialize(renderer, alpha);\r\n\r\n\t\tthis.backgroundPass.initialize(renderer, alpha);\r\n\t\tthis.blackoutPass.initialize(renderer, alpha);\r\n\t\tthis.renderPass.initialize(renderer, alpha);\r\n\r\n\t\tif(!alpha) {\r\n\r\n\t\t\tthis.renderTargetSelection.texture.format = RGBFormat;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\n\nvar fragmentShader$s = \"uniform float intensity;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 color=vec3(dot(inputColor.rgb,vec3(1.0-0.607*intensity,0.769*intensity,0.189*intensity)),dot(inputColor.rgb,vec3(0.349*intensity,1.0-0.314*intensity,0.168*intensity)),dot(inputColor.rgb,vec3(0.272*intensity,0.534*intensity,1.0-0.869*intensity)));outputColor=vec4(color,inputColor.a);}\";\n\n/**\r\n * A sepia effect.\r\n */\r\n\r\nclass SepiaEffect extends Effect {\r\n\r\n\t/**\r\n\t * Constructs a new sepia effect.\r\n\t *\r\n\t * @param {Object} [options] - The options.\r\n\t * @param {BlendFunction} [options.blendFunction=BlendFunction.NORMAL] - The blend function of this effect.\r\n\t * @param {Number} [options.intensity=1.0] - The intensity of the effect.\r\n\t */\r\n\r\n\tconstructor({ blendFunction = BlendFunction.NORMAL, intensity = 1.0 } = {}) {\r\n\r\n\t\tsuper(\"SepiaEffect\", fragmentShader$s, {\r\n\r\n\t\t\tblendFunction,\r\n\r\n\t\t\tuniforms: new Map([\r\n\t\t\t\t[\"intensity\", new Uniform(intensity)]\r\n\t\t\t])\r\n\r\n\t\t});\r\n\r\n\t}\r\n\r\n}\n\n// Generated with SMAASearchImageData.generate().toCanvas().toDataURL(), cropped, high dynamic range.\r\nvar searchImageDataURL = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAQCAYAAACm53kpAAAAeElEQVRYR+2XSwqAMAxEJ168ePEqwRSKhIIiuHjJqiU0gWE+1CQdApcVAMUAuARaMGCX1MIL/Ow13++9lW2s3mW9MWvsnWc/2fvGygwPAN4E8QzAA4CXAB6AHjG4JTHYI1ey3pcx6FHnEfhLDOIBKAmUBK6/ANUDTlROXAHd9EC1AAAAAElFTkSuQmCC\";\n\n// Generated with SMAAAreaImageData.generate().toCanvas().toDataURL().\r\nvar areaImageDataURL = \"data:image/png;base64,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\";\n\nvar fragmentShader$t = \"uniform sampler2D weightMap;varying vec2 vOffset0;varying vec2 vOffset1;/***Moves values to a target vector based on a given conditional vector.*/void movec(const in bvec2 c,inout vec2 variable,const in vec2 value){if(c.x){variable.x=value.x;}if(c.y){variable.y=value.y;}}void movec(const in bvec4 c,inout vec4 variable,const in vec4 value){movec(c.xy,variable.xy,value.xy);movec(c.zw,variable.zw,value.zw);}void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec4 a;a.x=texture2D(weightMap,vOffset0).a;a.y=texture2D(weightMap,vOffset1).g;a.wz=texture2D(weightMap,uv).rb;vec4 color=inputColor;if(dot(a,vec4(1.0))>=1e-5){bool h=max(a.x,a.z)>max(a.y,a.w);vec4 blendingOffset=vec4(0.0,a.y,0.0,a.w);vec2 blendingWeight=a.yw;movec(bvec4(h),blendingOffset,vec4(a.x,0.0,a.z,0.0));movec(bvec2(h),blendingWeight,a.xz);blendingWeight/=dot(blendingWeight,vec2(1.0));vec4 blendingCoord=blendingOffset*vec4(texelSize,-texelSize)+uv.xyxy;color=blendingWeight.x*texture2D(inputBuffer,blendingCoord.xy);color+=blendingWeight.y*texture2D(inputBuffer,blendingCoord.zw);}outputColor=color;}\";\n\nvar vertexShader$9 = \"varying vec2 vOffset0;varying vec2 vOffset1;void mainSupport(const in vec2 uv){vOffset0=uv+texelSize*vec2(1.0,0.0);vOffset1=uv+texelSize*vec2(0.0,1.0);}\";\n\n/**\r\n * Subpixel Morphological Antialiasing (SMAA).\r\n *\r\n * https://github.com/iryoku/smaa/releases/tag/v2.8\r\n */\r\n\r\nclass SMAAEffect extends Effect {\r\n\r\n\t/**\r\n\t * Constructs a new SMAA effect.\r\n\t *\r\n\t * @param {Image} searchImage - The SMAA search image. Preload this image using the {@link searchImageDataURL}.\r\n\t * @param {Image} areaImage - The SMAA area image. Preload this image using the {@link areaImageDataURL}.\r\n\t * @param {SMAAPreset} [preset=SMAAPreset.HIGH] - An SMAA quality preset.\r\n\t */\r\n\r\n\tconstructor(searchImage, areaImage, preset = SMAAPreset.HIGH) {\r\n\r\n\t\tsuper(\"SMAAEffect\", fragmentShader$t, {\r\n\r\n\t\t\tvertexShader: vertexShader$9,\r\n\t\t\tblendFunction: BlendFunction.NORMAL,\r\n\t\t\tattributes: EffectAttribute.CONVOLUTION,\r\n\r\n\t\t\tuniforms: new Map([\r\n\t\t\t\t[\"weightMap\", new Uniform(null)]\r\n\t\t\t])\r\n\r\n\t\t});\r\n\r\n\t\t/**\r\n\t\t * A render target for the color edge detection.\r\n\t\t *\r\n\t\t * @type {WebGLRenderTarget}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.renderTargetColorEdges = new WebGLRenderTarget(1, 1, {\r\n\t\t\tminFilter: LinearFilter,\r\n\t\t\tstencilBuffer: false,\r\n\t\t\tdepthBuffer: false,\r\n\t\t\tformat: RGBFormat\r\n\t\t});\r\n\r\n\t\tthis.renderTargetColorEdges.texture.name = \"SMAA.ColorEdges\";\r\n\r\n\t\t/**\r\n\t\t * A render target for the SMAA weights.\r\n\t\t *\r\n\t\t * @type {WebGLRenderTarget}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.renderTargetWeights = this.renderTargetColorEdges.clone();\r\n\r\n\t\tthis.renderTargetWeights.texture.name = \"SMAA.Weights\";\r\n\t\tthis.renderTargetWeights.texture.format = RGBAFormat;\r\n\r\n\t\tthis.uniforms.get(\"weightMap\").value = this.renderTargetWeights.texture;\r\n\r\n\t\t/**\r\n\t\t * A clear pass for the color edges buffer.\r\n\t\t *\r\n\t\t * @type {ClearPass}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.clearPass = new ClearPass(true, false, false);\r\n\t\tthis.clearPass.overrideClearColor = new Color(0x000000);\r\n\t\tthis.clearPass.overrideClearAlpha = 1.0;\r\n\r\n\t\t/**\r\n\t\t * A color edge detection pass.\r\n\t\t *\r\n\t\t * @type {ShaderPass}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.colorEdgesPass = new ShaderPass(new ColorEdgesMaterial());\r\n\r\n\t\t/**\r\n\t\t * An SMAA weights pass.\r\n\t\t *\r\n\t\t * @type {ShaderPass}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis.weightsPass = new ShaderPass(new SMAAWeightsMaterial());\r\n\r\n\t\tthis.weightsPass.getFullscreenMaterial().uniforms.searchTexture.value = (() => {\r\n\r\n\t\t\tconst searchTexture = new Texture(searchImage);\r\n\t\t\tsearchTexture.name = \"SMAA.Search\";\r\n\t\t\tsearchTexture.magFilter = NearestFilter;\r\n\t\t\tsearchTexture.minFilter = NearestFilter;\r\n\t\t\tsearchTexture.format = RGBAFormat;\r\n\t\t\tsearchTexture.generateMipmaps = false;\r\n\t\t\tsearchTexture.needsUpdate = true;\r\n\t\t\tsearchTexture.flipY = true;\r\n\r\n\t\t\treturn searchTexture;\r\n\r\n\t\t})();\r\n\r\n\t\tthis.weightsPass.getFullscreenMaterial().uniforms.areaTexture.value = (() => {\r\n\r\n\t\t\tconst areaTexture = new Texture(areaImage);\r\n\t\t\tareaTexture.name = \"SMAA.Area\";\r\n\t\t\tareaTexture.minFilter = LinearFilter;\r\n\t\t\tareaTexture.format = RGBAFormat;\r\n\t\t\tareaTexture.generateMipmaps = false;\r\n\t\t\tareaTexture.needsUpdate = true;\r\n\t\t\tareaTexture.flipY = false;\r\n\r\n\t\t\treturn areaTexture;\r\n\r\n\t\t})();\r\n\r\n\t\tthis.applyPreset(preset);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * The internal color edge detection material.\r\n\t *\r\n\t * @type {ColorEdgesMaterial}\r\n\t */\r\n\r\n\tget colorEdgesMaterial() {\r\n\r\n\t\treturn this.colorEdgesPass.getFullscreenMaterial();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * The internal edge weights material.\r\n\t *\r\n\t * @type {SMAAWeightsMaterial}\r\n\t */\r\n\r\n\tget weightsMaterial() {\r\n\r\n\t\treturn this.weightsPass.getFullscreenMaterial();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the edge detection sensitivity.\r\n\t *\r\n\t * See {@link ColorEdgesMaterial#setEdgeDetectionThreshold} for more details.\r\n\t *\r\n\t * @deprecated Use applyPreset or colorEdgesMaterial instead.\r\n\t * @param {Number} threshold - The edge detection sensitivity. Range: [0.05, 0.5].\r\n\t */\r\n\r\n\tsetEdgeDetectionThreshold(threshold) {\r\n\r\n\t\tthis.colorEdgesPass.getFullscreenMaterial().setEdgeDetectionThreshold(threshold);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the maximum amount of horizontal/vertical search steps.\r\n\t *\r\n\t * See {@link SMAAWeightsMaterial#setOrthogonalSearchSteps} for more details.\r\n\t *\r\n\t * @deprecated Use applyPreset or weightsMaterial instead.\r\n\t * @param {Number} steps - The search steps. Range: [0, 112].\r\n\t */\r\n\r\n\tsetOrthogonalSearchSteps(steps) {\r\n\r\n\t\tthis.weightsPass.getFullscreenMaterial().setOrthogonalSearchSteps(steps);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Applies the given quality preset.\r\n\t *\r\n\t * @param {SMAAPreset} preset - The preset.\r\n\t */\r\n\r\n\tapplyPreset(preset) {\r\n\r\n\t\tconst colorEdgesMaterial = this.colorEdgesMaterial;\r\n\t\tconst weightsMaterial = this.weightsMaterial;\r\n\r\n\t\tswitch(preset) {\r\n\r\n\t\t\tcase SMAAPreset.LOW:\r\n\t\t\t\tcolorEdgesMaterial.setEdgeDetectionThreshold(0.15);\r\n\t\t\t\tweightsMaterial.setOrthogonalSearchSteps(4);\r\n\t\t\t\tweightsMaterial.diagonalDetection = false;\r\n\t\t\t\tweightsMaterial.cornerRounding = false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase SMAAPreset.MEDIUM:\r\n\t\t\t\tcolorEdgesMaterial.setEdgeDetectionThreshold(0.1);\r\n\t\t\t\tweightsMaterial.setOrthogonalSearchSteps(8);\r\n\t\t\t\tweightsMaterial.diagonalDetection = false;\r\n\t\t\t\tweightsMaterial.cornerRounding = false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase SMAAPreset.HIGH:\r\n\t\t\t\tcolorEdgesMaterial.setEdgeDetectionThreshold(0.1);\r\n\t\t\t\tweightsMaterial.setOrthogonalSearchSteps(16);\r\n\t\t\t\tweightsMaterial.setDiagonalSearchSteps(8);\r\n\t\t\t\tweightsMaterial.setCornerRounding(25);\r\n\t\t\t\tweightsMaterial.diagonalDetection = true;\r\n\t\t\t\tweightsMaterial.cornerRounding = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase SMAAPreset.ULTRA:\r\n\t\t\t\tcolorEdgesMaterial.setEdgeDetectionThreshold(0.05);\r\n\t\t\t\tweightsMaterial.setOrthogonalSearchSteps(32);\r\n\t\t\t\tweightsMaterial.setDiagonalSearchSteps(16);\r\n\t\t\t\tweightsMaterial.setCornerRounding(25);\r\n\t\t\t\tweightsMaterial.diagonalDetection = true;\r\n\t\t\t\tweightsMaterial.cornerRounding = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Updates this effect.\r\n\t *\r\n\t * @param {WebGLRenderer} renderer - The renderer.\r\n\t * @param {WebGLRenderTarget} inputBuffer - A frame buffer that contains the result of the previous pass.\r\n\t * @param {Number} [deltaTime] - The time between the last frame and the current one in seconds.\r\n\t */\r\n\r\n\tupdate(renderer, inputBuffer, deltaTime) {\r\n\r\n\t\tthis.clearPass.render(renderer, this.renderTargetColorEdges);\r\n\t\tthis.colorEdgesPass.render(renderer, inputBuffer, this.renderTargetColorEdges);\r\n\t\tthis.weightsPass.render(renderer, this.renderTargetColorEdges, this.renderTargetWeights);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the size of internal render targets.\r\n\t *\r\n\t * @param {Number} width - The width.\r\n\t * @param {Number} height - The height.\r\n\t */\r\n\r\n\tsetSize(width, height) {\r\n\r\n\t\tconst colorEdgesMaterial = this.colorEdgesPass.getFullscreenMaterial();\r\n\t\tconst weightsMaterial = this.weightsPass.getFullscreenMaterial();\r\n\r\n\t\tthis.renderTargetColorEdges.setSize(width, height);\r\n\t\tthis.renderTargetWeights.setSize(width, height);\r\n\r\n\t\tweightsMaterial.uniforms.resolution.value.set(width, height);\r\n\t\tweightsMaterial.uniforms.texelSize.value.set(1.0 / width, 1.0 / height);\r\n\t\tcolorEdgesMaterial.uniforms.texelSize.value.copy(weightsMaterial.uniforms.texelSize.value);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * The SMAA search image, encoded as a base64 data URL.\r\n\t *\r\n\t * Use this image data to create an Image instance and use it together with\r\n\t * the area image to create an {@link SMAAEffect}.\r\n\t *\r\n\t * @type {String}\r\n\t * @example\r\n\t * const searchImage = new Image();\r\n\t * searchImage.addEventListener(\"load\", progress);\r\n\t * searchImage.src = SMAAEffect.searchImageDataURL;\r\n\t */\r\n\r\n\tstatic get searchImageDataURL() {\r\n\r\n\t\treturn searchImageDataURL;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * The SMAA area image, encoded as a base64 data URL.\r\n\t *\r\n\t * Use this image data to create an Image instance and use it together with\r\n\t * the search image to create an {@link SMAAEffect}.\r\n\t *\r\n\t * @type {String}\r\n\t * @example\r\n\t * const areaImage = new Image();\r\n\t * areaImage.addEventListener(\"load\", progress);\r\n\t * areaImage.src = SMAAEffect.areaImageDataURL;\r\n\t */\r\n\r\n\tstatic get areaImageDataURL() {\r\n\r\n\t\treturn areaImageDataURL;\r\n\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * An enumeration of SMAA presets.\r\n *\r\n * @type {Object}\r\n * @property {Number} LOW - Results in around 60% of the maximum quality.\r\n * @property {Number} MEDIUM - Results in around 80% of the maximum quality.\r\n * @property {Number} HIGH - Results in around 95% of the maximum quality.\r\n * @property {Number} ULTRA - Results in around 99% of the maximum quality.\r\n */\r\n\r\nconst SMAAPreset = {\r\n\r\n\tLOW: 0,\r\n\tMEDIUM: 1,\r\n\tHIGH: 2,\r\n\tULTRA: 3\r\n\r\n};\n\nvar fragmentShader$u = \"uniform sampler2D normalBuffer;uniform mat4 cameraProjectionMatrix;uniform mat4 cameraInverseProjectionMatrix;uniform vec2 radiusStep;uniform vec2 distanceCutoff;uniform vec2 proximityCutoff;uniform float seed;uniform float luminanceInfluence;uniform float scale;uniform float bias;float getViewZ(const in float depth){\\n#ifdef PERSPECTIVE_CAMERA\\nreturn perspectiveDepthToViewZ(depth,cameraNear,cameraFar);\\n#else\\nreturn orthographicDepthToViewZ(depth,cameraNear,cameraFar);\\n#endif\\n}vec3 getViewPosition(const in vec2 screenPosition,const in float depth,const in float viewZ){float clipW=cameraProjectionMatrix[2][3]*viewZ+cameraProjectionMatrix[3][3];vec4 clipPosition=vec4((vec3(screenPosition,depth)-0.5)*2.0,1.0);clipPosition*=clipW;return(cameraInverseProjectionMatrix*clipPosition).xyz;}float getOcclusion(const in vec3 p,const in vec3 n,const in vec3 sampleViewPosition){vec3 viewDelta=sampleViewPosition-p;float d=length(viewDelta)*scale;return max(0.0,dot(n,viewDelta)/d-bias)/(1.0+pow2(d));}float getAmbientOcclusion(const in vec3 p,const in vec3 n,const in float depth,const in vec2 uv){vec2 radius=radiusStep;float angle=rand(uv+seed)*PI2;float occlusionSum=0.0;for(int i=0;i 0) ? data[j] : 0;\r\n\t\t\ttarget[i + 1] = (channels > 1) ? data[j + 1] : 0;\r\n\t\t\ttarget[i + 2] = (channels > 2) ? data[j + 2] : 0;\r\n\t\t\ttarget[i + 3] = (channels > 3) ? data[j + 3] : 255;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tcanvas.width = width;\r\n\tcanvas.height = height;\r\n\r\n\tcontext.putImageData(imageData, 0, 0);\r\n\r\n\treturn canvas;\r\n\r\n}\r\n\r\n/**\r\n * A container for raw image data.\r\n */\r\n\r\nclass RawImageData {\r\n\r\n\t/**\r\n\t * Constructs a new image data container.\r\n\t *\r\n\t * @param {Number} [width=0] - The width of the image.\r\n\t * @param {Number} [height=0] - The height of the image.\r\n\t * @param {Uint8ClampedArray} [data=null] - The image data.\r\n\t * @param {Number} [channels=4] - The amount of color channels used per pixel. Range [1, 4].\r\n\t */\r\n\r\n\tconstructor(width = 0, height = 0, data = null, channels = 4) {\r\n\r\n\t\t/**\r\n\t\t * The width of the image.\r\n\t\t *\r\n\t\t * @type {Number}\r\n\t\t */\r\n\r\n\t\tthis.width = width;\r\n\r\n\t\t/**\r\n\t\t * The height of the image.\r\n\t\t *\r\n\t\t * @type {Number}\r\n\t\t */\r\n\r\n\t\tthis.height = height;\r\n\r\n\t\t/**\r\n\t\t * The image data.\r\n\t\t *\r\n\t\t * @type {Uint8ClampedArray}\r\n\t\t */\r\n\r\n\t\tthis.data = data;\r\n\r\n\t\t/**\r\n\t\t * The amount of color channels used per pixel. Range [1, 4].\r\n\t\t *\r\n\t\t * @type {Number}\r\n\t\t */\r\n\r\n\t\tthis.channels = channels;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a canvas from this image data.\r\n\t *\r\n\t * @return {Canvas} The canvas or null if it couldn't be created.\r\n\t */\r\n\r\n\ttoCanvas() {\r\n\r\n\t\treturn (typeof document === \"undefined\") ? null : createCanvas(\r\n\t\t\tthis.width,\r\n\t\t\tthis.height,\r\n\t\t\tthis.data,\r\n\t\t\tthis.channels\r\n\t\t);\r\n\r\n\t}\r\n\r\n}\n\n/**\r\n * A box.\r\n *\r\n * @type {Box2}\r\n * @private\r\n */\r\n\r\nconst b0 = new Box2();\r\n\r\n/**\r\n * A box.\r\n *\r\n * @type {Box2}\r\n * @private\r\n */\r\n\r\nconst b1 = new Box2();\r\n\r\n/**\r\n * The orthogonal texture size.\r\n *\r\n * @type {Number}\r\n * @private\r\n */\r\n\r\nconst ORTHOGONAL_SIZE = 16;\r\n\r\n/**\r\n * The diagonal texture size.\r\n *\r\n * @type {Number}\r\n * @private\r\n */\r\n\r\nconst DIAGONAL_SIZE = 20;\r\n\r\n/**\r\n * The number of samples for calculating areas in the diagonal textures.\r\n * Diagonal areas are calculated using brute force sampling.\r\n *\r\n * @type {Number}\r\n * @private\r\n */\r\n\r\nconst DIAGONAL_SAMPLES = 30;\r\n\r\n/**\r\n * The maximum distance for smoothing U-shapes.\r\n *\r\n * @type {Number}\r\n * @private\r\n */\r\n\r\nconst SMOOTH_MAX_DISTANCE = 32;\r\n\r\n/**\r\n * Subsampling offsets for orthogonal areas.\r\n *\r\n * @type {Float32Array}\r\n * @private\r\n */\r\n\r\nconst orthogonalSubsamplingOffsets = new Float32Array([\r\n\t0.0,\r\n\t-0.25,\r\n\t0.25,\r\n\t-0.125,\r\n\t0.125,\r\n\t-0.375,\r\n\t0.375\r\n]);\r\n\r\n/**\r\n * Subsampling offset pairs for diagonal areas.\r\n *\r\n * @type {Float32Array[]}\r\n * @private\r\n */\r\n\r\nconst diagonalSubsamplingOffsets = [\r\n\r\n\tnew Float32Array([0.0, 0.0]),\r\n\tnew Float32Array([0.25, -0.25]),\r\n\tnew Float32Array([-0.25, 0.25]),\r\n\tnew Float32Array([0.125, -0.125]),\r\n\tnew Float32Array([-0.125, 0.125])\r\n\r\n];\r\n\r\n/**\r\n * Orthogonal pattern positioning coordinates.\r\n *\r\n * Used for placing each pattern subtexture into a specific spot.\r\n *\r\n * @type {Uint8Array[]}\r\n * @private\r\n */\r\n\r\nconst orthogonalEdges = [\r\n\r\n\tnew Uint8Array([0, 0]),\r\n\tnew Uint8Array([3, 0]),\r\n\tnew Uint8Array([0, 3]),\r\n\tnew Uint8Array([3, 3]),\r\n\r\n\tnew Uint8Array([1, 0]),\r\n\tnew Uint8Array([4, 0]),\r\n\tnew Uint8Array([1, 3]),\r\n\tnew Uint8Array([4, 3]),\r\n\r\n\tnew Uint8Array([0, 1]),\r\n\tnew Uint8Array([3, 1]),\r\n\tnew Uint8Array([0, 4]),\r\n\tnew Uint8Array([3, 4]),\r\n\r\n\tnew Uint8Array([1, 1]),\r\n\tnew Uint8Array([4, 1]),\r\n\tnew Uint8Array([1, 4]),\r\n\tnew Uint8Array([4, 4])\r\n\r\n];\r\n\r\n/**\r\n * Diagonal pattern positioning coordinates.\r\n *\r\n * Used for placing each pattern subtexture into a specific spot.\r\n *\r\n * @type {Uint8Array[]}\r\n * @private\r\n */\r\n\r\nconst diagonalEdges = [\r\n\r\n\tnew Uint8Array([0, 0]),\r\n\tnew Uint8Array([1, 0]),\r\n\tnew Uint8Array([0, 2]),\r\n\tnew Uint8Array([1, 2]),\r\n\r\n\tnew Uint8Array([2, 0]),\r\n\tnew Uint8Array([3, 0]),\r\n\tnew Uint8Array([2, 2]),\r\n\tnew Uint8Array([3, 2]),\r\n\r\n\tnew Uint8Array([0, 1]),\r\n\tnew Uint8Array([1, 1]),\r\n\tnew Uint8Array([0, 3]),\r\n\tnew Uint8Array([1, 3]),\r\n\r\n\tnew Uint8Array([2, 1]),\r\n\tnew Uint8Array([3, 1]),\r\n\tnew Uint8Array([2, 3]),\r\n\tnew Uint8Array([3, 3])\r\n\r\n];\r\n\r\n/**\r\n * Linearly interpolates between two values.\r\n *\r\n * @private\r\n * @param {Number} a - The initial value.\r\n * @param {Number} b - The target value.\r\n * @param {Number} p - The interpolation value.\r\n * @return {Number} The interpolated value.\r\n */\r\n\r\nfunction lerp(a, b, p) {\r\n\r\n\treturn a + (b - a) * p;\r\n\r\n}\r\n\r\n/**\r\n * Clamps a value to the range [0, 1].\r\n *\r\n * @private\r\n * @param {Number} a - The value.\r\n * @return {Number} The saturated value.\r\n */\r\n\r\nfunction saturate(a) {\r\n\r\n\treturn Math.min(Math.max(a, 0.0), 1.0);\r\n\r\n}\r\n\r\n/**\r\n * A smoothing function for small U-patterns.\r\n *\r\n * @private\r\n * @param {Number} d - A smoothing factor.\r\n * @param {Box2} b - The area that should be smoothed.\r\n * @return {Box2} The smoothed area.\r\n */\r\n\r\nfunction smoothArea(d, b) {\r\n\r\n\tconst a1 = b.min;\r\n\tconst a2 = b.max;\r\n\r\n\tconst b1X = Math.sqrt(a1.x * 2.0) * 0.5;\r\n\tconst b1Y = Math.sqrt(a1.y * 2.0) * 0.5;\r\n\tconst b2X = Math.sqrt(a2.x * 2.0) * 0.5;\r\n\tconst b2Y = Math.sqrt(a2.y * 2.0) * 0.5;\r\n\r\n\tconst p = saturate(d / SMOOTH_MAX_DISTANCE);\r\n\r\n\ta1.set(lerp(b1X, a1.x, p), lerp(b1Y, a1.y, p));\r\n\ta2.set(lerp(b2X, a2.x, p), lerp(b2Y, a2.y, p));\r\n\r\n\treturn b;\r\n\r\n}\r\n\r\n/**\r\n * Calculates the area under the line p1 -> p2, for the pixels (x, x + 1).\r\n *\r\n * @private\r\n * @param {Vector2} p1 - The starting point of the line.\r\n * @param {Vector2} p2 - The ending point of the line.\r\n * @param {Number} x - The pixel index.\r\n * @param {Vector2} result - A target vector to store the area in.\r\n * @return {Vector2} The area.\r\n */\r\n\r\nfunction calculateOrthogonalArea(p1, p2, x, result) {\r\n\r\n\tconst dX = p2.x - p1.x;\r\n\tconst dY = p2.y - p1.y;\r\n\r\n\tconst x1 = x;\r\n\tconst x2 = x + 1.0;\r\n\r\n\tconst y1 = p1.y + dY * (x1 - p1.x) / dX;\r\n\tconst y2 = p1.y + dY * (x2 - p1.x) / dX;\r\n\r\n\tlet a, a1, a2, t;\r\n\r\n\t// Check if x is inside the area.\r\n\tif((x1 >= p1.x && x1 < p2.x) || (x2 > p1.x && x2 <= p2.x)) {\r\n\r\n\t\t// Check if this is a trapezoid.\r\n\t\tif(Math.sign(y1) === Math.sign(y2) || Math.abs(y1) < 1e-4 || Math.abs(y2) < 1e-4) {\r\n\r\n\t\t\ta = (y1 + y2) / 2.0;\r\n\r\n\t\t\tif(a < 0.0) {\r\n\r\n\t\t\t\tresult.set(Math.abs(a), 0.0);\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tresult.set(0.0, Math.abs(a));\r\n\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// Two triangles.\r\n\t\t\tt = -p1.y * dX / dY + p1.x;\r\n\r\n\t\t\ta1 = (t > p1.x) ? y1 * (t - Math.trunc(t)) / 2.0 : 0.0;\r\n\t\t\ta2 = (t < p2.x) ? y2 * (1.0 - (t - Math.trunc(t))) / 2.0 : 0.0;\r\n\r\n\t\t\ta = (Math.abs(a1) > Math.abs(a2)) ? a1 : -a2;\r\n\r\n\t\t\tif(a < 0.0) {\r\n\r\n\t\t\t\tresult.set(Math.abs(a1), Math.abs(a2));\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tresult.set(Math.abs(a2), Math.abs(a1));\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t} else {\r\n\r\n\t\tresult.set(0, 0);\r\n\r\n\t}\r\n\r\n\treturn result;\r\n\r\n}\r\n\r\n/**\r\n * Calculates the area for a given pattern and distances to the left and to the\r\n * right, biased by an offset.\r\n *\r\n * @private\r\n * @param {Number} pattern - A pattern index.\r\n * @param {Number} left - The left distance.\r\n * @param {Number} right - The right distance.\r\n * @param {Number} offset - An offset.\r\n * @param {Vector2} result - A target vector to store the area in.\r\n * @return {Vector2} The orthogonal area.\r\n */\r\n\r\nfunction calculateOrthogonalAreaForPattern(pattern, left, right, offset, result) {\r\n\r\n\tconst p1 = b0.min;\r\n\tconst p2 = b0.max;\r\n\tconst a1 = b1.min;\r\n\tconst a2 = b1.max;\r\n\tconst a = b1;\r\n\r\n\t/* o1 |\r\n\t * .-------´\r\n\t * o2 |\r\n\t *\r\n\t * <---d--->\r\n\t */\r\n\r\n\tconst o1 = 0.5 + offset;\r\n\tconst o2 = 0.5 + offset - 1.0;\r\n\tconst d = left + right + 1;\r\n\r\n\tswitch(pattern) {\r\n\r\n\t\tcase 0: {\r\n\r\n\t\t\t// ------\r\n\r\n\t\t\tresult.set(0, 0);\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tcase 1: {\r\n\r\n\t\t\t/* .------\r\n\t\t\t * |\r\n\t\t\t *\r\n\t\t\t * The offset is only applied to L patterns in the crossing edge side to\r\n\t\t\t * make it converge with the unfiltered pattern 0.\r\n\t\t\t * The pattern 0 must not be filtered to avoid artifacts.\r\n\t\t\t */\r\n\r\n\t\t\tif(left <= right) {\r\n\r\n\t\t\t\tcalculateOrthogonalArea(p1.set(0.0, o2), p2.set(d / 2.0, 0.0), left, result);\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tresult.set(0, 0);\r\n\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tcase 2: {\r\n\r\n\t\t\t/* ------.\r\n\t\t\t * |\r\n\t\t\t */\r\n\r\n\t\t\tif(left >= right) {\r\n\r\n\t\t\t\tcalculateOrthogonalArea(p1.set(d / 2.0, 0.0), p2.set(d, o2), left, result);\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tresult.set(0, 0);\r\n\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tcase 3: {\r\n\r\n\t\t\t/* .------.\r\n\t\t\t * | |\r\n\t\t\t */\r\n\r\n\t\t\tcalculateOrthogonalArea(p1.set(0.0, o2), p2.set(d / 2.0, 0.0), left, a1);\r\n\t\t\tcalculateOrthogonalArea(p1.set(d / 2.0, 0.0), p2.set(d, o2), left, a2);\r\n\r\n\t\t\tsmoothArea(d, a);\r\n\r\n\t\t\tresult.addVectors(a1, a2);\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tcase 4: {\r\n\r\n\t\t\t/* |\r\n\t\t\t * `------\r\n\t\t\t */\r\n\r\n\t\t\tif(left <= right) {\r\n\r\n\t\t\t\tcalculateOrthogonalArea(p1.set(0.0, o1), p2.set(d / 2.0, 0.0), left, result);\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tresult.set(0, 0);\r\n\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tcase 5: {\r\n\r\n\t\t\t/* |\r\n\t\t\t * +------\r\n\t\t\t * |\r\n\t\t\t */\r\n\r\n\t\t\tresult.set(0, 0);\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tcase 6: {\r\n\r\n\t\t\t/* |\r\n\t\t\t * `------.\r\n\t\t\t * |\r\n\t\t\t *\r\n\t\t\t * A problem of not offseting L patterns (see above) is that for certain\r\n\t\t\t * max search distances, the pixels in the center of a Z pattern will\r\n\t\t\t * detect the full Z pattern, while the pixels in the sides will detect an\r\n\t\t\t * L pattern. To avoid discontinuities, the full offsetted Z\r\n\t\t\t * revectorization is blended with partially offsetted L patterns.\r\n\t\t\t */\r\n\r\n\t\t\tif(Math.abs(offset) > 0.0) {\r\n\r\n\t\t\t\tcalculateOrthogonalArea(p1.set(0.0, o1), p2.set(d, o2), left, a1);\r\n\t\t\t\tcalculateOrthogonalArea(p1.set(0.0, o1), p2.set(d / 2.0, 0.0), left, a2);\r\n\t\t\t\ta2.add(calculateOrthogonalArea(p1.set(d / 2.0, 0.0), p2.set(d, o2), left, result));\r\n\r\n\t\t\t\tresult.addVectors(a1, a2).divideScalar(2.0);\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tcalculateOrthogonalArea(p1.set(0.0, o1), p2.set(d, o2), left, result);\r\n\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tcase 7: {\r\n\r\n\t\t\t/* |\r\n\t\t\t * +------.\r\n\t\t\t * | |\r\n\t\t\t */\r\n\r\n\t\t\tcalculateOrthogonalArea(p1.set(0.0, o1), p2.set(d, o2), left, result);\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tcase 8: {\r\n\r\n\t\t\t/* |\r\n\t\t\t * ------´\r\n\t\t\t */\r\n\r\n\t\t\tif(left >= right) {\r\n\r\n\t\t\t\tcalculateOrthogonalArea(p1.set(d / 2.0, 0.0), p2.set(d, o1), left, result);\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tresult.set(0, 0);\r\n\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tcase 9: {\r\n\r\n\t\t\t/* |\r\n\t\t\t * .------´\r\n\t\t\t * |\r\n\t\t\t */\r\n\r\n\t\t\tif(Math.abs(offset) > 0.0) {\r\n\r\n\t\t\t\tcalculateOrthogonalArea(p1.set(0.0, o2), p2.set(d, o1), left, a1);\r\n\t\t\t\tcalculateOrthogonalArea(p1.set(0.0, o2), p2.set(d / 2.0, 0.0), left, a2);\r\n\t\t\t\ta2.add(calculateOrthogonalArea(p1.set(d / 2.0, 0.0), p2.set(d, o1), left, result));\r\n\r\n\t\t\t\tresult.addVectors(a1, a2).divideScalar(2.0);\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tcalculateOrthogonalArea(p1.set(0.0, o2), p2.set(d, o1), left, result);\r\n\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tcase 10: {\r\n\r\n\t\t\t/* |\r\n\t\t\t * ------+\r\n\t\t\t * |\r\n\t\t\t */\r\n\r\n\t\t\tresult.set(0, 0);\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tcase 11: {\r\n\r\n\t\t\t/* |\r\n\t\t\t * .------+\r\n\t\t\t * | |\r\n\t\t\t */\r\n\r\n\t\t\tcalculateOrthogonalArea(p1.set(0.0, o2), p2.set(d, o1), left, result);\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tcase 12: {\r\n\r\n\t\t\t/* | |\r\n\t\t\t * `------´\r\n\t\t\t */\r\n\r\n\t\t\tcalculateOrthogonalArea(p1.set(0.0, o1), p2.set(d / 2.0, 0.0), left, a1);\r\n\t\t\tcalculateOrthogonalArea(p1.set(d / 2.0, 0.0), p2.set(d, o1), left, a2);\r\n\r\n\t\t\tsmoothArea(d, a);\r\n\r\n\t\t\tresult.addVectors(a1, a2);\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tcase 13: {\r\n\r\n\t\t\t/* | |\r\n\t\t\t * +------´\r\n\t\t\t * |\r\n\t\t\t */\r\n\r\n\t\t\tcalculateOrthogonalArea(p1.set(0.0, o2), p2.set(d, o1), left, result);\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tcase 14: {\r\n\r\n\t\t\t/* | |\r\n\t\t\t * `------+\r\n\t\t\t * |\r\n\t\t\t */\r\n\r\n\t\t\tcalculateOrthogonalArea(p1.set(0.0, o1), p2.set(d, o2), left, result);\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tcase 15: {\r\n\r\n\t\t\t/* | |\r\n\t\t\t * +------+\r\n\t\t\t * | |\r\n\t\t\t */\r\n\r\n\t\t\tresult.set(0, 0);\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\treturn result;\r\n\r\n}\r\n\r\n/**\r\n * Determines whether the given pixel is inside the specified area.\r\n *\r\n * @private\r\n * @param {Vector2} p1 - The lower bounds of the area.\r\n * @param {Vector2} p2 - The upper bounds of the area.\r\n * @param {Vector2} x - The X-coordinates.\r\n * @param {Vector2} y - The Y-coordinates.\r\n * @return {Vector2} Whether the pixel lies inside the area.\r\n */\r\n\r\nfunction isInsideArea(p1, p2, x, y) {\r\n\r\n\tlet result = p1.equals(p2);\r\n\r\n\tlet xm, ym;\r\n\tlet a, b, c;\r\n\r\n\tif(!result) {\r\n\r\n\t\txm = (p1.x + p2.x) / 2.0;\r\n\t\tym = (p1.y + p2.y) / 2.0;\r\n\r\n\t\ta = p2.y - p1.y;\r\n\t\tb = p1.x - p2.x;\r\n\r\n\t\tc = a * (x - xm) + b * (y - ym);\r\n\r\n\t\tresult = (c > 0.0);\r\n\r\n\t}\r\n\r\n\treturn result;\r\n\r\n}\r\n\r\n/**\r\n * Calculates the area under the line p1 -> p2 for the pixel p using brute force\r\n * sampling.\r\n *\r\n * @private\r\n * @param {Vector2} p1 - The lower bounds of the area.\r\n * @param {Vector2} p2 - The upper bounds of the area.\r\n * @param {Number} pX - The X-coordinates.\r\n * @param {Number} pY - The Y-coordinates.\r\n * @return {Number} The amount of pixels inside the area relative to the total amount of sampled pixels.\r\n */\r\n\r\nfunction calculateDiagonalAreaForPixel(p1, p2, pX, pY) {\r\n\r\n\tlet a;\r\n\tlet x, y;\r\n\tlet offsetX, offsetY;\r\n\r\n\tfor(a = 0, y = 0; y < DIAGONAL_SAMPLES; ++y) {\r\n\r\n\t\tfor(x = 0; x < DIAGONAL_SAMPLES; ++x) {\r\n\r\n\t\t\toffsetX = x / (DIAGONAL_SAMPLES - 1.0);\r\n\t\t\toffsetY = y / (DIAGONAL_SAMPLES - 1.0);\r\n\r\n\t\t\tif(isInsideArea(p1, p2, pX + offsetX, pY + offsetY)) {\r\n\r\n\t\t\t\t++a;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\treturn a / (DIAGONAL_SAMPLES * DIAGONAL_SAMPLES);\r\n\r\n}\r\n\r\n/**\r\n * Calculates the area under the line p1 -> p2. This includes the pixel and its\r\n * opposite.\r\n *\r\n * @private\r\n * @param {Number} pattern - A pattern index.\r\n * @param {Vector2} p1 - The lower bounds of the area.\r\n * @param {Vector2} p2 - The upper bounds of the area.\r\n * @param {Number} left - The left distance.\r\n * @param {Float32Array} offset - An offset.\r\n * @param {Vector2} result - A target vector to store the area in.\r\n * @return {Vector2} The area.\r\n */\r\n\r\nfunction calculateDiagonalArea(pattern, p1, p2, left, offset, result) {\r\n\r\n\tconst e = diagonalEdges[pattern];\r\n\tconst e1 = e[0];\r\n\tconst e2 = e[1];\r\n\r\n\tif(e1 > 0) {\r\n\r\n\t\tp1.x += offset[0];\r\n\t\tp1.y += offset[1];\r\n\r\n\t}\r\n\r\n\tif(e2 > 0) {\r\n\r\n\t\tp2.x += offset[0];\r\n\t\tp2.y += offset[1];\r\n\r\n\t}\r\n\r\n\treturn result.set(\r\n\t\t1.0 - calculateDiagonalAreaForPixel(p1, p2, 1.0 + left, 0.0 + left),\r\n\t\tcalculateDiagonalAreaForPixel(p1, p2, 1.0 + left, 1.0 + left)\r\n\t);\r\n\r\n}\r\n\r\n/**\r\n * Calculates the area for a given pattern and distances to the left and to the\r\n * right, biased by an offset.\r\n *\r\n * @private\r\n * @param {Number} pattern - A pattern index.\r\n * @param {Number} left - The left distance.\r\n * @param {Number} right - The right distance.\r\n * @param {Float32Array} offset - An offset.\r\n * @param {Vector2} result - A target vector to store the area in.\r\n * @return {Vector2} The orthogonal area.\r\n */\r\n\r\nfunction calculateDiagonalAreaForPattern(pattern, left, right, offset, result) {\r\n\r\n\tconst p1 = b0.min;\r\n\tconst p2 = b0.max;\r\n\tconst a1 = b1.min;\r\n\tconst a2 = b1.max;\r\n\r\n\tconst d = left + right + 1;\r\n\r\n\t/* There is some Black Magic involved in the diagonal area calculations.\r\n\t *\r\n\t * Unlike orthogonal patterns, the \"null\" pattern (one without crossing edges)\r\n\t * must be filtered, and the ends of both the \"null\" and L patterns are not\r\n\t * known: L and U patterns have different endings, and the adjacent pattern is\r\n\t * unknown. Therefore, a blend of both possibilites is computed.\r\n\t */\r\n\r\n\tswitch(pattern) {\r\n\r\n\t\tcase 0: {\r\n\r\n\t\t\t/* .-´\r\n\t\t\t * .-´\r\n\t\t\t * .-´\r\n\t\t\t * .-´\r\n\t\t\t * ´\r\n\t\t\t */\r\n\r\n\t\t\t// First possibility.\r\n\t\t\tcalculateDiagonalArea(pattern, p1.set(1.0, 1.0), p2.set(1.0 + d, 1.0 + d), left, offset, a1);\r\n\r\n\t\t\t// Second possibility.\r\n\t\t\tcalculateDiagonalArea(pattern, p1.set(1.0, 0.0), p2.set(1.0 + d, 0.0 + d), left, offset, a2);\r\n\r\n\t\t\t// Blend both possibilities together.\r\n\t\t\tresult.addVectors(a1, a2).divideScalar(2.0);\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tcase 1: {\r\n\r\n\t\t\t/* .-´\r\n\t\t\t * .-´\r\n\t\t\t * .-´\r\n\t\t\t * .-´\r\n\t\t\t * |\r\n\t\t\t * |\r\n\t\t\t */\r\n\r\n\t\t\tcalculateDiagonalArea(pattern, p1.set(1.0, 0.0), p2.set(0.0 + d, 0.0 + d), left, offset, a1);\r\n\t\t\tcalculateDiagonalArea(pattern, p1.set(1.0, 0.0), p2.set(1.0 + d, 0.0 + d), left, offset, a2);\r\n\r\n\t\t\tresult.addVectors(a1, a2).divideScalar(2.0);\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tcase 2: {\r\n\r\n\t\t\t/* .----\r\n\t\t\t * .-´\r\n\t\t\t * .-´\r\n\t\t\t * .-´\r\n\t\t\t * ´\r\n\t\t\t */\r\n\r\n\t\t\tcalculateDiagonalArea(pattern, p1.set(0.0, 0.0), p2.set(1.0 + d, 0.0 + d), left, offset, a1);\r\n\t\t\tcalculateDiagonalArea(pattern, p1.set(1.0, 0.0), p2.set(1.0 + d, 0.0 + d), left, offset, a2);\r\n\r\n\t\t\tresult.addVectors(a1, a2).divideScalar(2.0);\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tcase 3: {\r\n\r\n\t\t\t/*\r\n\t\t\t * .----\r\n\t\t\t * .-´\r\n\t\t\t * .-´\r\n\t\t\t * .-´\r\n\t\t\t * |\r\n\t\t\t * |\r\n\t\t\t */\r\n\r\n\t\t\tcalculateDiagonalArea(pattern, p1.set(1.0, 0.0), p2.set(1.0 + d, 0.0 + d), left, offset, result);\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tcase 4: {\r\n\r\n\t\t\t/* .-´\r\n\t\t\t * .-´\r\n\t\t\t * .-´\r\n\t\t\t * ----´\r\n\t\t\t */\r\n\r\n\t\t\tcalculateDiagonalArea(pattern, p1.set(1.0, 1.0), p2.set(0.0 + d, 0.0 + d), left, offset, a1);\r\n\t\t\tcalculateDiagonalArea(pattern, p1.set(1.0, 1.0), p2.set(1.0 + d, 0.0 + d), left, offset, a2);\r\n\r\n\t\t\tresult.addVectors(a1, a2).divideScalar(2.0);\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tcase 5: {\r\n\r\n\t\t\t/* .-´\r\n\t\t\t * .-´\r\n\t\t\t * .-´\r\n\t\t\t * --.-´\r\n\t\t\t * |\r\n\t\t\t * |\r\n\t\t\t */\r\n\r\n\t\t\tcalculateDiagonalArea(pattern, p1.set(1.0, 1.0), p2.set(0.0 + d, 0.0 + d), left, offset, a1);\r\n\t\t\tcalculateDiagonalArea(pattern, p1.set(1.0, 0.0), p2.set(1.0 + d, 0.0 + d), left, offset, a2);\r\n\r\n\t\t\tresult.addVectors(a1, a2).divideScalar(2.0);\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tcase 6: {\r\n\r\n\t\t\t/* .----\r\n\t\t\t * .-´\r\n\t\t\t * .-´\r\n\t\t\t * ----´\r\n\t\t\t */\r\n\r\n\t\t\tcalculateDiagonalArea(pattern, p1.set(1.0, 1.0), p2.set(1.0 + d, 0.0 + d), left, offset, result);\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tcase 7: {\r\n\r\n\t\t\t/* .----\r\n\t\t\t * .-´\r\n\t\t\t * .-´\r\n\t\t\t * --.-´\r\n\t\t\t * |\r\n\t\t\t * |\r\n\t\t\t */\r\n\r\n\t\t\tcalculateDiagonalArea(pattern, p1.set(1.0, 1.0), p2.set(1.0 + d, 0.0 + d), left, offset, a1);\r\n\t\t\tcalculateDiagonalArea(pattern, p1.set(1.0, 0.0), p2.set(1.0 + d, 0.0 + d), left, offset, a2);\r\n\r\n\t\t\tresult.addVectors(a1, a2).divideScalar(2.0);\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tcase 8: {\r\n\r\n\t\t\t/* |\r\n\t\t\t * |\r\n\t\t\t * .-´\r\n\t\t\t * .-´\r\n\t\t\t * .-´\r\n\t\t\t * ´\r\n\t\t\t */\r\n\r\n\t\t\tcalculateDiagonalArea(pattern, p1.set(0.0, 0.0), p2.set(1.0 + d, 1.0 + d), left, offset, a1);\r\n\t\t\tcalculateDiagonalArea(pattern, p1.set(1.0, 0.0), p2.set(1.0 + d, 1.0 + d), left, offset, a2);\r\n\r\n\t\t\tresult.addVectors(a1, a2).divideScalar(2.0);\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tcase 9: {\r\n\r\n\t\t\t/* |\r\n\t\t\t * |\r\n\t\t\t * .-´\r\n\t\t\t * .-´\r\n\t\t\t * .-´\r\n\t\t\t * |\r\n\t\t\t * |\r\n\t\t\t */\r\n\r\n\t\t\tcalculateDiagonalArea(pattern, p1.set(1.0, 0.0), p2.set(1.0 + d, 1.0 + d), left, offset, result);\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tcase 10: {\r\n\r\n\t\t\t/* |\r\n\t\t\t * .----\r\n\t\t\t * .-´\r\n\t\t\t * .-´\r\n\t\t\t * .-´\r\n\t\t\t * ´\r\n\t\t\t */\r\n\r\n\t\t\tcalculateDiagonalArea(pattern, p1.set(0.0, 0.0), p2.set(1.0 + d, 1.0 + d), left, offset, a1);\r\n\t\t\tcalculateDiagonalArea(pattern, p1.set(1.0, 0.0), p2.set(1.0 + d, 0.0 + d), left, offset, a2);\r\n\r\n\t\t\tresult.addVectors(a1, a2).divideScalar(2.0);\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tcase 11: {\r\n\r\n\t\t\t/* |\r\n\t\t\t * .----\r\n\t\t\t * .-´\r\n\t\t\t * .-´\r\n\t\t\t * .-´\r\n\t\t\t * |\r\n\t\t\t * |\r\n\t\t\t */\r\n\r\n\t\t\tcalculateDiagonalArea(pattern, p1.set(1.0, 0.0), p2.set(1.0 + d, 1.0 + d), left, offset, a1);\r\n\t\t\tcalculateDiagonalArea(pattern, p1.set(1.0, 0.0), p2.set(1.0 + d, 0.0 + d), left, offset, a2);\r\n\r\n\t\t\tresult.addVectors(a1, a2).divideScalar(2.0);\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tcase 12: {\r\n\r\n\t\t\t/* |\r\n\t\t\t * |\r\n\t\t\t * .-´\r\n\t\t\t * .-´\r\n\t\t\t * ----´\r\n\t\t\t */\r\n\r\n\t\t\tcalculateDiagonalArea(pattern, p1.set(1.0, 1.0), p2.set(1.0 + d, 1.0 + d), left, offset, result);\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tcase 13: {\r\n\r\n\t\t\t/* |\r\n\t\t\t * |\r\n\t\t\t * .-´\r\n\t\t\t * .-´\r\n\t\t\t * --.-´\r\n\t\t\t * |\r\n\t\t\t * |\r\n\t\t\t */\r\n\r\n\t\t\tcalculateDiagonalArea(pattern, p1.set(1.0, 1.0), p2.set(1.0 + d, 1.0 + d), left, offset, a1);\r\n\t\t\tcalculateDiagonalArea(pattern, p1.set(1.0, 0.0), p2.set(1.0 + d, 1.0 + d), left, offset, a2);\r\n\r\n\t\t\tresult.addVectors(a1, a2).divideScalar(2.0);\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tcase 14: {\r\n\r\n\t\t\t/* |\r\n\t\t\t * .----\r\n\t\t\t * .-´\r\n\t\t\t * .-´\r\n\t\t\t * ----´\r\n\t\t\t */\r\n\r\n\t\t\tcalculateDiagonalArea(pattern, p1.set(1.0, 1.0), p2.set(1.0 + d, 1.0 + d), left, offset, a1);\r\n\t\t\tcalculateDiagonalArea(pattern, p1.set(1.0, 1.0), p2.set(1.0 + d, 0.0 + d), left, offset, a2);\r\n\r\n\t\t\tresult.addVectors(a1, a2).divideScalar(2.0);\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tcase 15: {\r\n\r\n\t\t\t/* |\r\n\t\t\t * .----\r\n\t\t\t * .-´\r\n\t\t\t * .-´\r\n\t\t\t * --.-´\r\n\t\t\t * |\r\n\t\t\t * |\r\n\t\t\t */\r\n\r\n\t\t\tcalculateDiagonalArea(pattern, p1.set(1.0, 1.0), p2.set(1.0 + d, 1.0 + d), left, offset, a1);\r\n\t\t\tcalculateDiagonalArea(pattern, p1.set(1.0, 0.0), p2.set(1.0 + d, 0.0 + d), left, offset, a2);\r\n\r\n\t\t\tresult.addVectors(a1, a2).divideScalar(2.0);\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\treturn result;\r\n\r\n}\r\n\r\n/**\r\n * Calculates orthogonal or diagonal patterns for a given offset.\r\n *\r\n * @private\r\n * @param {RawImageData[]} patterns - The patterns to assemble.\r\n * @param {Number|Float32Array} offset - A pattern offset. Diagonal offsets are pairs.\r\n * @param {Boolean} orthogonal - Whether the patterns are orthogonal or diagonal.\r\n */\r\n\r\nfunction generatePatterns(patterns, offset, orthogonal) {\r\n\r\n\tconst result = new Vector2();\r\n\r\n\tlet i, l;\r\n\tlet x, y;\r\n\tlet c;\r\n\r\n\tlet pattern;\r\n\tlet data, size;\r\n\r\n\tfor(i = 0, l = patterns.length; i < l; ++i) {\r\n\r\n\t\tpattern = patterns[i];\r\n\r\n\t\tdata = pattern.data;\r\n\t\tsize = pattern.width;\r\n\r\n\t\tfor(y = 0; y < size; ++y) {\r\n\r\n\t\t\tfor(x = 0; x < size; ++x) {\r\n\r\n\t\t\t\tif(orthogonal) {\r\n\r\n\t\t\t\t\tcalculateOrthogonalAreaForPattern(i, x, y, offset, result);\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tcalculateDiagonalAreaForPattern(i, x, y, offset, result);\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tc = (y * size + x) * 2;\r\n\r\n\t\t\t\tdata[c] = result.x * 255;\r\n\t\t\t\tdata[c + 1] = result.y * 255;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Assembles orthogonal or diagonal patterns into the final area image.\r\n *\r\n * @private\r\n * @param {Vector2} base - A base position.\r\n * @param {RawImageData[]} patterns - The patterns to assemble.\r\n * @param {Uint8Array[]} edges - Edge coordinate pairs, used for positioning.\r\n * @param {Number} size - The pattern size.\r\n * @param {Boolean} orthogonal - Whether the patterns are orthogonal or diagonal.\r\n * @param {RawImageData} target - The target image data.\r\n */\r\n\r\nfunction assemble(base, patterns, edges, size, orthogonal, target) {\r\n\r\n\tconst p = new Vector2();\r\n\r\n\tconst dstData = target.data;\r\n\tconst dstWidth = target.width;\r\n\r\n\tlet i, l;\r\n\tlet x, y;\r\n\tlet c, d;\r\n\r\n\tlet edge;\r\n\tlet pattern;\r\n\tlet srcData, srcWidth;\r\n\r\n\tfor(i = 0, l = patterns.length; i < l; ++i) {\r\n\r\n\t\tedge = edges[i];\r\n\t\tpattern = patterns[i];\r\n\r\n\t\tsrcData = pattern.data;\r\n\t\tsrcWidth = pattern.width;\r\n\r\n\t\tfor(y = 0; y < size; ++y) {\r\n\r\n\t\t\tfor(x = 0; x < size; ++x) {\r\n\r\n\t\t\t\tp.fromArray(edge).multiplyScalar(size);\r\n\t\t\t\tp.add(base);\r\n\t\t\t\tp.x += x;\r\n\t\t\t\tp.y += y;\r\n\r\n\t\t\t\tc = (p.y * dstWidth + p.x) * 2;\r\n\r\n\t\t\t\t/* The texture coordinates of orthogonal patterns are compressed\r\n\t\t\t\tquadratically to reach longer distances for a given texture size. */\r\n\t\t\t\td = orthogonal ? ((y * y * srcWidth + x * x) * 2) :\r\n\t\t\t\t\t((y * srcWidth + x) * 2);\r\n\r\n\t\t\t\tdstData[c] = srcData[d];\r\n\t\t\t\tdstData[c + 1] = srcData[d + 1];\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * SMAA area image data.\r\n *\r\n * This texture allows to obtain the area for a certain pattern and distances\r\n * to the left and to the right of the identified line.\r\n *\r\n * Based on the official python scripts:\r\n * https://github.com/iryoku/smaa/tree/master/Scripts\r\n */\r\n\r\nclass SMAAAreaImageData {\r\n\r\n\t/**\r\n\t * Creates a new area image.\r\n\t *\r\n\t * @return {RawImageData} The generated image data.\r\n\t */\r\n\r\n\tstatic generate() {\r\n\r\n\t\tconst width = 2 * 5 * ORTHOGONAL_SIZE;\r\n\t\tconst height = orthogonalSubsamplingOffsets.length * 5 * ORTHOGONAL_SIZE;\r\n\r\n\t\tconst data = new Uint8ClampedArray(width * height * 2);\r\n\t\tconst result = new RawImageData(width, height, data, 2);\r\n\r\n\t\tconst orthogonalPatternSize = Math.pow(ORTHOGONAL_SIZE - 1, 2) + 1;\r\n\t\tconst diagonalPatternSize = DIAGONAL_SIZE;\r\n\r\n\t\tconst orthogonalPatterns = [];\r\n\t\tconst diagonalPatterns = [];\r\n\r\n\t\tconst base = new Vector2();\r\n\r\n\t\tlet i, l;\r\n\r\n\t\t// Prepare 16 image data sets for the orthogonal and diagonal subtextures.\r\n\t\tfor(i = 0; i < 16; ++i) {\r\n\r\n\t\t\torthogonalPatterns.push(new RawImageData(orthogonalPatternSize, orthogonalPatternSize,\r\n\t\t\t\tnew Uint8ClampedArray(orthogonalPatternSize * orthogonalPatternSize * 2), 2));\r\n\r\n\t\t\tdiagonalPatterns.push(new RawImageData(diagonalPatternSize, diagonalPatternSize,\r\n\t\t\t\tnew Uint8ClampedArray(diagonalPatternSize * diagonalPatternSize * 2), 2));\r\n\r\n\t\t}\r\n\r\n\t\tfor(i = 0, l = orthogonalSubsamplingOffsets.length; i < l; ++i) {\r\n\r\n\t\t\t// Generate 16 orthogonal patterns for each offset.\r\n\t\t\tgeneratePatterns(orthogonalPatterns, orthogonalSubsamplingOffsets[i], true);\r\n\r\n\t\t\t// Assemble the orthogonal patterns and place them on the left side.\r\n\t\t\tbase.set(0, 5 * ORTHOGONAL_SIZE * i);\r\n\t\t\tassemble(base, orthogonalPatterns, orthogonalEdges, ORTHOGONAL_SIZE, true, result);\r\n\r\n\t\t}\r\n\r\n\t\tfor(i = 0, l = diagonalSubsamplingOffsets.length; i < l; ++i) {\r\n\r\n\t\t\t// Generate 16 diagonal patterns for each offset.\r\n\t\t\tgeneratePatterns(diagonalPatterns, diagonalSubsamplingOffsets[i], false);\r\n\r\n\t\t\t// Assemble the diagonal patterns and place them on the right side.\r\n\t\t\tbase.set(5 * ORTHOGONAL_SIZE, 4 * DIAGONAL_SIZE * i);\r\n\t\t\tassemble(base, diagonalPatterns, diagonalEdges, DIAGONAL_SIZE, false, result);\r\n\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\r\n\t}\r\n\r\n}\n\n/**\r\n * This dictionary returns which edges are active for a certain bilinear fetch:\r\n * it's the reverse lookup of the bilinear function.\r\n *\r\n * @type {Map}\r\n * @private\r\n */\r\n\r\nconst edges = new Map([\r\n\r\n\t[bilinear([0, 0, 0, 0]), [0, 0, 0, 0]],\r\n\t[bilinear([0, 0, 0, 1]), [0, 0, 0, 1]],\r\n\t[bilinear([0, 0, 1, 0]), [0, 0, 1, 0]],\r\n\t[bilinear([0, 0, 1, 1]), [0, 0, 1, 1]],\r\n\r\n\t[bilinear([0, 1, 0, 0]), [0, 1, 0, 0]],\r\n\t[bilinear([0, 1, 0, 1]), [0, 1, 0, 1]],\r\n\t[bilinear([0, 1, 1, 0]), [0, 1, 1, 0]],\r\n\t[bilinear([0, 1, 1, 1]), [0, 1, 1, 1]],\r\n\r\n\t[bilinear([1, 0, 0, 0]), [1, 0, 0, 0]],\r\n\t[bilinear([1, 0, 0, 1]), [1, 0, 0, 1]],\r\n\t[bilinear([1, 0, 1, 0]), [1, 0, 1, 0]],\r\n\t[bilinear([1, 0, 1, 1]), [1, 0, 1, 1]],\r\n\r\n\t[bilinear([1, 1, 0, 0]), [1, 1, 0, 0]],\r\n\t[bilinear([1, 1, 0, 1]), [1, 1, 0, 1]],\r\n\t[bilinear([1, 1, 1, 0]), [1, 1, 1, 0]],\r\n\t[bilinear([1, 1, 1, 1]), [1, 1, 1, 1]]\r\n\r\n]);\r\n\r\n/**\r\n * Linearly interpolates between two values.\r\n *\r\n * @private\r\n * @param {Number} a - The initial value.\r\n * @param {Number} b - The target value.\r\n * @param {Number} p - The interpolation value.\r\n * @return {Number} The interpolated value.\r\n */\r\n\r\nfunction lerp$1(a, b, p) {\r\n\r\n\treturn a + (b - a) * p;\r\n\r\n}\r\n\r\n/**\r\n * Calculates the bilinear fetch for a certain edge combination.\r\n *\r\n * e[0] e[1]\r\n *\r\n * x <-------- Sample Position: (-0.25, -0.125)\r\n * e[2] e[3] <--- Current Pixel [3]: (0.0, 0.0)\r\n *\r\n * @private\r\n * @param {Number[]} e - The edge combination.\r\n * @return {Number} The interpolated value.\r\n */\r\n\r\nfunction bilinear(e) {\r\n\r\n\tconst a = lerp$1(e[0], e[1], 1.0 - 0.25);\r\n\tconst b = lerp$1(e[2], e[3], 1.0 - 0.25);\r\n\r\n\treturn lerp$1(a, b, 1.0 - 0.125);\r\n\r\n}\r\n\r\n/**\r\n * Computes the delta distance to add in the last step of searches to the left.\r\n *\r\n * @private\r\n * @param {Number[]} left - The left edge combination.\r\n * @param {Number[]} top - The top edge combination.\r\n * @return {Number} The left delta distance.\r\n */\r\n\r\nfunction deltaLeft(left, top) {\r\n\r\n\tlet d = 0;\r\n\r\n\t// If there is an edge, continue.\r\n\tif(top[3] === 1) {\r\n\r\n\t\td += 1;\r\n\r\n\t}\r\n\r\n\t/* If an edge was previously found, there is another edge and there are no\r\n\tcrossing edges, continue. */\r\n\tif(d === 1 && top[2] === 1 && left[1] !== 1 && left[3] !== 1) {\r\n\r\n\t\td += 1;\r\n\r\n\t}\r\n\r\n\treturn d;\r\n\r\n}\r\n\r\n/**\r\n * Computes the delta distance to add in the last step of searches to the right.\r\n *\r\n * @private\r\n * @param {Number[]} left - The left edge combination.\r\n * @param {Number[]} top - The top edge combination.\r\n * @return {Number} The right delta distance.\r\n */\r\n\r\nfunction deltaRight(left, top) {\r\n\r\n\tlet d = 0;\r\n\r\n\t// If there is an edge, and no crossing edges, continue.\r\n\tif(top[3] === 1 && left[1] !== 1 && left[3] !== 1) {\r\n\r\n\t\td += 1;\r\n\r\n\t}\r\n\r\n\t/* If an edge was previously found, there is another edge and there are no\r\n\tcrossing edges, continue. */\r\n\tif(d === 1 && top[2] === 1 && left[0] !== 1 && left[2] !== 1) {\r\n\r\n\t\td += 1;\r\n\r\n\t}\r\n\r\n\treturn d;\r\n\r\n}\r\n\r\n/**\r\n * SMAA search image data.\r\n *\r\n * This image stores information about how many pixels the line search\r\n * algorithm must advance in the last step.\r\n *\r\n * Based on the official python scripts:\r\n * https://github.com/iryoku/smaa/tree/master/Scripts\r\n */\r\n\r\nclass SMAASearchImageData {\r\n\r\n\t/**\r\n\t * Creates a new search image.\r\n\t *\r\n\t * @return {RawImageData} The generated image data.\r\n\t */\r\n\r\n\tstatic generate() {\r\n\r\n\t\tconst width = 66;\r\n\t\tconst height = 33;\r\n\r\n\t\tconst croppedWidth = 64;\r\n\t\tconst croppedHeight = 16;\r\n\r\n\t\tconst data = new Uint8ClampedArray(width * height);\r\n\t\tconst croppedData = new Uint8ClampedArray(croppedWidth * croppedHeight);\r\n\r\n\t\tlet x, y;\r\n\t\tlet s, t, i;\r\n\t\tlet e1, e2;\r\n\r\n\t\t// Calculate delta distances.\r\n\t\tfor(y = 0; y < height; ++y) {\r\n\r\n\t\t\tfor(x = 0; x < width; ++x) {\r\n\r\n\t\t\t\ts = 0.03125 * x;\r\n\t\t\t\tt = 0.03125 * y;\r\n\r\n\t\t\t\tif(edges.has(s) && edges.has(t)) {\r\n\r\n\t\t\t\t\te1 = edges.get(s);\r\n\t\t\t\t\te2 = edges.get(t);\r\n\r\n\t\t\t\t\t// Maximize the dynamic range to help the compression.\r\n\t\t\t\t\tdata[y * width + x] = (127 * deltaLeft(e1, e2));\r\n\t\t\t\t\tdata[y * width + x + (width / 2)] = (127 * deltaRight(e1, e2));\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// Crop the result to powers-of-two to make it BC4-friendly.\r\n\t\tfor(i = 0, y = height - croppedHeight; y < height; ++y) {\r\n\r\n\t\t\tfor(x = 0; x < croppedWidth; ++x, ++i) {\r\n\r\n\t\t\t\tcroppedData[i] = data[y * width + x];\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn new RawImageData(croppedWidth, croppedHeight, croppedData, 1);\r\n\r\n\t}\r\n\r\n}\n\nexport { AdaptiveLuminanceMaterial, BlendFunction, BlendMode, BloomEffect, BlurPass, BokehEffect, BrightnessContrastEffect, ChromaticAberrationEffect, ClearMaskPass, ClearPass, ColorAverageEffect, ColorDepthEffect, ColorEdgesMaterial, ConvolutionMaterial, CopyMaterial, DepthComparisonMaterial, DepthEffect, DepthMaskMaterial, DepthPass, Disposable, DotScreenEffect, Effect, EffectAttribute, EffectComposer, EffectMaterial, EffectPass, GammaCorrectionEffect, GlitchEffect, GlitchMode, GodRaysEffect, GodRaysMaterial, GridEffect, HueSaturationEffect, Initializable, KernelSize, LuminanceMaterial, MaskPass, NoiseEffect, NormalPass, OutlineEdgesMaterial, OutlineEffect, Pass, PixelationEffect, RawImageData, RealisticBokehEffect, RenderPass, Resizable, SMAAAreaImageData, SMAAEffect, SMAAPreset, SMAASearchImageData, SMAAWeightsMaterial, SSAOEffect, SavePass, ScanlineEffect, Selection, SelectiveBloomEffect, SepiaEffect, ShaderPass, ShockWaveEffect, TextureEffect, ToneMappingEffect, VignetteEffect, WebGLExtension };\n","import * as THREE from 'three';\nimport * as POSTPROCESSING from 'postprocessing';\nexport class AppInfinite {\n constructor(container, options = {}) {\n // Init ThreeJS Basics\n this.options = options;\n\n if (this.options.distortion == null) {\n this.options.distortion = {\n uniforms: distortion_uniforms,\n getDistortion: distortion_vertex,\n };\n }\n this.container = container;\n this.renderer = new THREE.WebGLRenderer({\n antialias: false,\n });\n this.renderer.setSize(container.offsetWidth, container.offsetHeight, false);\n this.renderer.setPixelRatio(window.devicePixelRatio);\n this.composer = new POSTPROCESSING.EffectComposer(this.renderer);\n container.append(this.renderer.domElement);\n\n this.camera = new THREE.PerspectiveCamera(options.fov, container.offsetWidth / container.offsetHeight, 0.1, 10000);\n this.camera.position.z = -5;\n this.camera.position.y = 8;\n this.camera.position.x = 0;\n // this.camera.rotateX(-0.4);\n this.scene = new THREE.Scene();\n\n let fog = new THREE.Fog(options.colors.background, options.length * 0.2, options.length * 500);\n this.scene.fog = fog;\n this.fogUniforms = {\n fogColor: { type: 'c', value: fog.color },\n fogNear: { type: 'f', value: fog.near },\n fogFar: { type: 'f', value: fog.far },\n };\n this.clock = new THREE.Clock();\n this.assets = {};\n this.disposed = false;\n\n // Create Objects\n this.road = new Road(this, options);\n this.leftCarLights = new CarLights(\n this,\n options,\n options.colors.leftCars,\n options.movingAwaySpeed,\n new THREE.Vector2(0, 1 - options.carLightsFade)\n );\n this.rightCarLights = new CarLights(\n this,\n options,\n options.colors.rightCars,\n options.movingCloserSpeed,\n new THREE.Vector2(1, 0 + options.carLightsFade)\n );\n this.leftSticks = new LightsSticks(this, options);\n\n this.fovTarget = options.fov;\n\n this.speedUpTarget = 0;\n this.speedUp = 0;\n this.timeOffset = 0;\n\n // Binds\n this.tick = this.tick.bind(this);\n this.init = this.init.bind(this);\n this.setSize = this.setSize.bind(this);\n this.onMouseDown = this.onMouseDown.bind(this);\n this.onMouseUp = this.onMouseUp.bind(this);\n }\n\n destroy() {\n this.options.stop = true;\n }\n reinit() {\n this.options.stop = false;\n this.init();\n }\n initPasses() {\n this.renderPass = new POSTPROCESSING.RenderPass(this.scene, this.camera);\n this.bloomPass = new POSTPROCESSING.EffectPass(\n this.camera,\n new POSTPROCESSING.BloomEffect({\n luminanceThreshold: 0.2,\n luminanceSmoothing: 0,\n resolutionScale: 1,\n })\n );\n const smaaPass = new POSTPROCESSING.EffectPass(\n this.camera,\n new POSTPROCESSING.SMAAEffect(this.assets.smaa.search, this.assets.smaa.area, POSTPROCESSING.SMAAPreset.MEDIUM)\n );\n this.renderPass.renderToScreen = false;\n this.bloomPass.renderToScreen = false;\n smaaPass.renderToScreen = true;\n this.composer.addPass(this.renderPass);\n this.composer.addPass(this.bloomPass);\n this.composer.addPass(smaaPass);\n }\n loadAssets() {\n const assets = this.assets;\n return new Promise((resolve, reject) => {\n const manager = new THREE.LoadingManager(resolve);\n\n const searchImage = new Image();\n const areaImage = new Image();\n assets.smaa = {};\n searchImage.addEventListener('load', function () {\n assets.smaa.search = this;\n manager.itemEnd('smaa-search');\n });\n\n areaImage.addEventListener('load', function () {\n assets.smaa.area = this;\n manager.itemEnd('smaa-area');\n });\n manager.itemStart('smaa-search');\n manager.itemStart('smaa-area');\n\n searchImage.src = POSTPROCESSING.SMAAEffect.searchImageDataURL;\n areaImage.src = POSTPROCESSING.SMAAEffect.areaImageDataURL;\n });\n }\n init() {\n this.initPasses();\n const options = this.options;\n this.road.init();\n this.leftCarLights.init();\n\n this.leftCarLights.mesh.position.setX(-options.roadWidth / 2 - options.islandWidth / 2);\n this.rightCarLights.init();\n this.rightCarLights.mesh.position.setX(options.roadWidth / 2 + options.islandWidth / 2);\n this.leftSticks.init();\n this.leftSticks.mesh.position.setX(-(options.roadWidth + options.islandWidth / 2));\n\n this.container.addEventListener('mousedown', this.onMouseDown);\n this.container.addEventListener('mouseup', this.onMouseUp);\n this.container.addEventListener('mouseout', this.onMouseUp);\n\n this.tick();\n }\n onMouseDown(ev) {\n if (this.options.onSpeedUp) this.options.onSpeedUp(ev);\n this.fovTarget = this.options.fovSpeedUp;\n this.speedUpTarget = this.options.speedUp;\n }\n onMouseUp(ev) {\n if (this.options.onSlowDown) this.options.onSlowDown(ev);\n this.fovTarget = this.options.fov;\n this.speedUpTarget = 0;\n // this.speedupLerp = 0.1;\n }\n update(delta) {\n if (this.options.stop) {\n return;\n }\n let lerpPercentage = Math.exp(-(-60 * Math.log2(1 - 0.1)) * delta);\n this.speedUp += lerp(this.speedUp, this.speedUpTarget, lerpPercentage, 0.00001);\n this.timeOffset += this.speedUp * delta;\n\n let time = this.clock.elapsedTime + this.timeOffset;\n\n this.rightCarLights.update(time);\n this.leftCarLights.update(time);\n this.leftSticks.update(time);\n this.road.update(time);\n\n let updateCamera = false;\n let fovChange = lerp(this.camera.fov, this.fovTarget, lerpPercentage);\n if (fovChange !== 0) {\n this.camera.fov += fovChange * delta * 6;\n updateCamera = true;\n }\n\n if (this.options.distortion.getJS) {\n const distortion = this.options.distortion.getJS(0.025, time);\n\n this.camera.lookAt(\n new THREE.Vector3(\n this.camera.position.x + distortion.x,\n this.camera.position.y + distortion.y,\n this.camera.position.z + distortion.z\n )\n );\n updateCamera = true;\n }\n if (updateCamera) {\n this.camera.updateProjectionMatrix();\n }\n }\n render(delta) {\n if (this.options.stop) {\n return;\n }\n this.composer.render(delta);\n }\n dispose() {\n this.disposed = true;\n }\n setSize(width, height, updateStyles) {\n this.composer.setSize(width, height, updateStyles);\n }\n tick() {\n if (this.options.stop) {\n return;\n }\n if (this.disposed || !this) return;\n if (resizeRendererToDisplaySize(this.renderer, this.setSize)) {\n const canvas = this.renderer.domElement;\n this.camera.aspect = canvas.clientWidth / canvas.clientHeight;\n this.camera.updateProjectionMatrix();\n }\n const delta = this.clock.getDelta();\n this.render(delta);\n this.update(delta);\n requestAnimationFrame(this.tick);\n }\n}\n\nconst distortion_uniforms = {\n uDistortionX: new THREE.Uniform(new THREE.Vector2(80, 3)),\n uDistortionY: new THREE.Uniform(new THREE.Vector2(-40, 2.5)),\n};\n\nconst distortion_vertex = `\n#define PI 3.14159265358979\n uniform vec2 uDistortionX;\n uniform vec2 uDistortionY;\n\n float nsin(float val){\n return sin(val) * 0.5+0.5;\n }\n vec3 getDistortion(float progress){\n progress = clamp(progress, 0.,1.);\n float xAmp = uDistortionX.r;\n float xFreq = uDistortionX.g;\n float yAmp = uDistortionY.r;\n float yFreq = uDistortionY.g;\n return vec3( \n xAmp * nsin(progress* PI * xFreq - PI / 2. ) ,\n yAmp * nsin(progress * PI *yFreq - PI / 2. ) ,\n 0.\n );\n }\n`;\n\nconst random = (base) => {\n if (Array.isArray(base)) return Math.random() * (base[1] - base[0]) + base[0];\n return Math.random() * base;\n};\nconst pickRandom = (arr) => {\n if (Array.isArray(arr)) return arr[Math.floor(Math.random() * arr.length)];\n return arr;\n};\nfunction lerp(current, target, speed = 0.1, limit = 0.001) {\n let change = (target - current) * speed;\n if (Math.abs(change) < limit) {\n change = target - current;\n }\n return change;\n}\nclass CarLights {\n constructor(webgl, options, colors, speed, fade) {\n this.webgl = webgl;\n this.options = options;\n this.colors = colors;\n this.speed = speed;\n this.fade = fade;\n }\n init() {\n const options = this.options;\n // Curve with length 1\n let curve = new THREE.LineCurve3(new THREE.Vector3(0, 0, 0), new THREE.Vector3(0, 0, -1));\n // Tube with radius = 1\n let geometry = new THREE.TubeBufferGeometry(curve, 40, 1, 8, false);\n\n let instanced = new THREE.InstancedBufferGeometry().copy(geometry);\n instanced.maxInstancedCount = options.lightPairsPerRoadWay * 2;\n\n let laneWidth = options.roadWidth / options.lanesPerRoad;\n\n let aOffset = [];\n let aMetrics = [];\n let aColor = [];\n\n let colors = this.colors;\n if (Array.isArray(colors)) {\n colors = colors.map((c) => new THREE.Color(c));\n } else {\n colors = new THREE.Color(colors);\n }\n\n for (let i = 0; i < options.lightPairsPerRoadWay; i++) {\n let radius = random(options.carLightsRadius);\n let length = random(options.carLightsLength);\n let speed = random(this.speed);\n\n let carLane = i % 3;\n let laneX = carLane * laneWidth - options.roadWidth / 2 + laneWidth / 2;\n\n let carWidth = random(options.carWidthPercentage) * laneWidth;\n // Drunk Driving\n let carShiftX = random(options.carShiftX) * laneWidth;\n // Both lights share same shiftX and lane;\n laneX += carShiftX;\n\n let offsetY = random(options.carFloorSeparation) + radius * 1.3;\n\n let offsetZ = -random(options.length);\n\n aOffset.push(laneX - carWidth / 2);\n aOffset.push(offsetY);\n aOffset.push(offsetZ);\n\n aOffset.push(laneX + carWidth / 2);\n aOffset.push(offsetY);\n aOffset.push(offsetZ);\n\n aMetrics.push(radius);\n aMetrics.push(length);\n aMetrics.push(speed);\n\n aMetrics.push(radius);\n aMetrics.push(length);\n aMetrics.push(speed);\n\n let color = pickRandom(colors);\n aColor.push(color.r);\n aColor.push(color.g);\n aColor.push(color.b);\n\n aColor.push(color.r);\n aColor.push(color.g);\n aColor.push(color.b);\n }\n instanced.addAttribute('aOffset', new THREE.InstancedBufferAttribute(new Float32Array(aOffset), 3, false));\n instanced.addAttribute('aMetrics', new THREE.InstancedBufferAttribute(new Float32Array(aMetrics), 3, false));\n instanced.addAttribute('aColor', new THREE.InstancedBufferAttribute(new Float32Array(aColor), 3, false));\n let material = new THREE.ShaderMaterial({\n fragmentShader: carLightsFragment,\n vertexShader: carLightsVertex,\n transparent: true,\n uniforms: Object.assign(\n {\n // uColor: new THREE.Uniform(new THREE.Color(this.color)),\n uTime: new THREE.Uniform(0),\n uTravelLength: new THREE.Uniform(options.length),\n uFade: new THREE.Uniform(this.fade),\n },\n this.webgl.fogUniforms,\n options.distortion.uniforms\n ),\n });\n material.onBeforeCompile = (shader) => {\n shader.vertexShader = shader.vertexShader.replace(\n '#include ',\n options.distortion.getDistortion\n );\n };\n let mesh = new THREE.Mesh(instanced, material);\n mesh.frustumCulled = false;\n this.webgl.scene.add(mesh);\n this.mesh = mesh;\n }\n update(time) {\n this.mesh.material.uniforms.uTime.value = time;\n }\n}\n\nconst carLightsFragment = `\n\n #define USE_FOG;\n ${THREE.ShaderChunk['fog_pars_fragment']}\n varying vec3 vColor;\n varying vec2 vUv; \n uniform vec2 uFade;\n void main() {\n vec3 color = vec3(vColor);\n float fadeStart = 0.4;\n float maxFade = 0.;\n float alpha = 1.;\n \n alpha = smoothstep(uFade.x, uFade.y, vUv.x);\n gl_FragColor = vec4(color,alpha);\n if (gl_FragColor.a < 0.0001) discard;\n ${THREE.ShaderChunk['fog_fragment']}\n }\n`;\n\nconst carLightsVertex = `\n #define USE_FOG;\n ${THREE.ShaderChunk['fog_pars_vertex']}\n attribute vec3 aOffset;\n attribute vec3 aMetrics;\n attribute vec3 aColor;\n\n \n\n uniform float uTravelLength;\n uniform float uTime;\n uniform float uSpeed;\n\n varying vec2 vUv; \n varying vec3 vColor; \n #include \n\n void main() {\n vec3 transformed = position.xyz;\n float radius = aMetrics.r;\n float myLength = aMetrics.g;\n float speed = aMetrics.b;\n\n transformed.xy *= radius ;\n transformed.z *= myLength;\n \n // Add my length to make sure it loops after the lights hits the end\n transformed.z += myLength-mod( uTime *speed + aOffset.z, uTravelLength);\n transformed.xy += aOffset.xy;\n\n\n float progress = abs(transformed.z / uTravelLength);\n transformed.xyz += getDistortion(progress);\n\n vec4 mvPosition = modelViewMatrix * vec4(transformed,1.);\n gl_Position = projectionMatrix * mvPosition;\n vUv = uv;\n vColor = aColor;\n ${THREE.ShaderChunk['fog_vertex']}\n }`;\n\nclass LightsSticks {\n constructor(webgl, options) {\n this.webgl = webgl;\n this.options = options;\n }\n init() {\n const options = this.options;\n const geometry = new THREE.PlaneBufferGeometry(1, 1);\n let instanced = new THREE.InstancedBufferGeometry().copy(geometry);\n let totalSticks = options.totalSideLightSticks;\n instanced.maxInstancedCount = totalSticks;\n\n let stickoffset = options.length / (totalSticks - 1);\n const aOffset = [];\n const aColor = [];\n const aMetrics = [];\n\n let colors = options.colors.sticks;\n if (Array.isArray(colors)) {\n colors = colors.map((c) => new THREE.Color(c));\n } else {\n colors = new THREE.Color(colors);\n }\n\n for (let i = 0; i < totalSticks; i++) {\n let width = random(options.lightStickWidth);\n let height = random(options.lightStickHeight);\n aOffset.push((i - 1) * stickoffset * 2 + stickoffset * Math.random());\n\n let color = pickRandom(colors);\n aColor.push(color.r);\n aColor.push(color.g);\n aColor.push(color.b);\n\n aMetrics.push(width);\n aMetrics.push(height);\n }\n instanced.addAttribute('aOffset', new THREE.InstancedBufferAttribute(new Float32Array(aOffset), 1, false));\n instanced.addAttribute('aColor', new THREE.InstancedBufferAttribute(new Float32Array(aColor), 3, false));\n instanced.addAttribute('aMetrics', new THREE.InstancedBufferAttribute(new Float32Array(aMetrics), 2, false));\n const material = new THREE.ShaderMaterial({\n fragmentShader: sideSticksFragment,\n vertexShader: sideSticksVertex,\n // This ones actually need double side\n side: THREE.DoubleSide,\n uniforms: Object.assign(\n {\n uTravelLength: new THREE.Uniform(options.length),\n uTime: new THREE.Uniform(0),\n },\n this.webgl.fogUniforms,\n options.distortion.uniforms\n ),\n });\n\n material.onBeforeCompile = (shader) => {\n shader.vertexShader = shader.vertexShader.replace(\n '#include ',\n options.distortion.getDistortion\n );\n };\n\n const mesh = new THREE.Mesh(instanced, material);\n // The object is behind the camera before the vertex shader\n mesh.frustumCulled = false;\n // mesh.position.y = options.lightStickHeight / 2;\n this.webgl.scene.add(mesh);\n this.mesh = mesh;\n }\n update(time) {\n this.mesh.material.uniforms.uTime.value = time;\n }\n}\n\nconst sideSticksVertex = `\n#define USE_FOG;\n${THREE.ShaderChunk['fog_pars_vertex']}\nattribute float aOffset;\nattribute vec3 aColor;\n\nattribute vec2 aMetrics;\n\nuniform float uTravelLength;\nuniform float uTime;\n\nvarying vec3 vColor;\nmat4 rotationY( in float angle ) {\n\treturn mat4(\tcos(angle),\t\t0,\t\tsin(angle),\t0,\n\t\t\t \t\t\t\t0,\t\t1.0,\t\t\t 0,\t0,\n\t\t\t\t\t-sin(angle),\t0,\t\tcos(angle),\t0,\n\t\t\t\t\t\t\t0, \t\t0,\t\t\t\t0,\t1);\n}\n\n\n\n #include \n void main(){\n vec3 transformed = position.xyz;\n float width = aMetrics.x;\n float height = aMetrics.y;\n\n transformed.xy *= vec2(width,height);\n float time = mod(uTime * 60. *2. + aOffset , uTravelLength);\n\n transformed = (rotationY(3.14/2.) * vec4(transformed,1.)).xyz;\n\n transformed.z += - uTravelLength + time;\n\n\n float progress = abs(transformed.z / uTravelLength);\n transformed.xyz += getDistortion(progress);\n\n transformed.y += height /2.;\n transformed.x += -width/2.;\n vec4 mvPosition = modelViewMatrix * vec4(transformed,1.);\n gl_Position = projectionMatrix * mvPosition;\n vColor = aColor;\n ${THREE.ShaderChunk['fog_vertex']}\n }\n`;\nconst sideSticksFragment = `\n#define USE_FOG;\n${THREE.ShaderChunk['fog_pars_fragment']}\nvarying vec3 vColor;\n void main(){\n vec3 color = vec3(vColor);\n gl_FragColor = vec4(color,1.);\n ${THREE.ShaderChunk['fog_fragment']}\n }\n`;\n\nclass Road {\n constructor(webgl, options) {\n this.webgl = webgl;\n this.options = options;\n\n this.uTime = new THREE.Uniform(0);\n }\n createIsland() {\n const options = this.options;\n let segments = 100;\n }\n // Side = 0 center, = 1 right = -1 left\n createPlane(side, width, isRoad) {\n const options = this.options;\n let segments = 100;\n const geometry = new THREE.PlaneBufferGeometry(\n isRoad ? options.roadWidth : options.islandWidth,\n options.length,\n 20,\n segments\n );\n let uniforms = {\n uTravelLength: new THREE.Uniform(options.length),\n uColor: new THREE.Uniform(new THREE.Color(isRoad ? options.colors.roadColor : options.colors.islandColor)),\n uTime: this.uTime,\n };\n if (isRoad) {\n uniforms = Object.assign(uniforms, {\n uLanes: new THREE.Uniform(options.lanesPerRoad),\n uBrokenLinesColor: new THREE.Uniform(new THREE.Color(options.colors.brokenLines)),\n uShoulderLinesColor: new THREE.Uniform(new THREE.Color(options.colors.shoulderLines)),\n uShoulderLinesWidthPercentage: new THREE.Uniform(options.shoulderLinesWidthPercentage),\n uBrokenLinesLengthPercentage: new THREE.Uniform(options.brokenLinesLengthPercentage),\n uBrokenLinesWidthPercentage: new THREE.Uniform(options.brokenLinesWidthPercentage),\n });\n }\n const material = new THREE.ShaderMaterial({\n fragmentShader: isRoad ? roadFragment : islandFragment,\n vertexShader: roadVertex,\n side: THREE.DoubleSide,\n uniforms: Object.assign(uniforms, this.webgl.fogUniforms, options.distortion.uniforms),\n });\n\n material.onBeforeCompile = (shader) => {\n shader.vertexShader = shader.vertexShader.replace(\n '#include ',\n options.distortion.getDistortion\n );\n };\n const mesh = new THREE.Mesh(geometry, material);\n mesh.rotation.x = -Math.PI / 2;\n // Push it half further away\n mesh.position.z = -options.length / 2;\n mesh.position.x += (this.options.islandWidth / 2 + options.roadWidth / 2) * side;\n this.webgl.scene.add(mesh);\n\n return mesh;\n }\n init() {\n this.leftRoadWay = this.createPlane(-1, this.options.roadWidth, true);\n this.rightRoadWay = this.createPlane(1, this.options.roadWidth, true);\n this.island = this.createPlane(0, this.options.islandWidth, false);\n }\n update(time) {\n this.uTime.value = time;\n }\n}\n\nconst roadBaseFragment = `\n #define USE_FOG;\n varying vec2 vUv; \n uniform vec3 uColor;\n uniform float uTime;\n #include \n ${THREE.ShaderChunk['fog_pars_fragment']}\n void main() {\n vec2 uv = vUv;\n vec3 color = vec3(uColor);\n \n #include \n\n gl_FragColor = vec4(color,1.);\n ${THREE.ShaderChunk['fog_fragment']}\n }\n`;\nconst islandFragment = roadBaseFragment\n .replace('#include ', '')\n .replace('#include ', '');\nconst roadMarkings_vars = `\n uniform float uLanes;\n uniform vec3 uBrokenLinesColor;\n uniform vec3 uShoulderLinesColor;\n uniform float uShoulderLinesWidthPercentage;\n uniform float uBrokenLinesWidthPercentage;\n uniform float uBrokenLinesLengthPercentage;\n highp float random(vec2 co)\n {\n highp float a = 12.9898;\n highp float b = 78.233;\n highp float c = 43758.5453;\n highp float dt= dot(co.xy ,vec2(a,b));\n highp float sn= mod(dt,3.14);\n return fract(sin(sn) * c);\n }\n`;\nconst roadMarkings_fragment = `\n\n uv.y = mod(uv.y + uTime * 0.1,1.);\n float brokenLineWidth = 1. / uLanes * uBrokenLinesWidthPercentage;\n // How much % of the lane's space is empty\n float laneEmptySpace = 1. - uBrokenLinesLengthPercentage;\n\n // Horizontal * vertical offset\n float brokenLines = step(1.-brokenLineWidth * uLanes,fract(uv.x * uLanes)) * step(laneEmptySpace, fract(uv.y * 100.)) ;\n // Remove right-hand lines on the right-most lane\n brokenLines *= step(uv.x * uLanes,uLanes-1.);\n color = mix(color, uBrokenLinesColor, brokenLines);\n\n\n float shoulderLinesWidth = 1. / uLanes * uShoulderLinesWidthPercentage;\n float shoulderLines = step(1.-shoulderLinesWidth, uv.x) + step(uv.x, shoulderLinesWidth);\n color = mix(color, uBrokenLinesColor, shoulderLines);\n\n vec2 noiseFreq = vec2(4., 7000.);\n float roadNoise = random( floor(uv * noiseFreq)/noiseFreq ) * 0.02 - 0.01; \n color += roadNoise;\n`;\nconst roadFragment = roadBaseFragment\n .replace('#include ', roadMarkings_fragment)\n .replace('#include ', roadMarkings_vars);\n\nconst roadVertex = `\n#define USE_FOG;\nuniform float uTime;\n${THREE.ShaderChunk['fog_pars_vertex']}\n\nuniform float uTravelLength;\n\nvarying vec2 vUv; \n #include \nvoid main() {\n vec3 transformed = position.xyz;\n\n vec3 distortion = getDistortion((transformed.y + uTravelLength / 2.) / uTravelLength);\n transformed.x += distortion.x;\n transformed.z += distortion.y;\n transformed.y += -1.*distortion.z; \n \n vec4 mvPosition = modelViewMatrix * vec4(transformed,1.);\n gl_Position = projectionMatrix * mvPosition;\n vUv = uv;\n\n ${THREE.ShaderChunk['fog_vertex']}\n}`;\n\nfunction resizeRendererToDisplaySize(renderer, setSize) {\n const canvas = renderer.domElement;\n const width = canvas.clientWidth;\n const height = canvas.clientHeight;\n const needResize = canvas.width !== width || canvas.height !== height;\n if (needResize) {\n setSize(width, height, false);\n }\n return needResize;\n}\n","/**\n\n Here on top you can find the uniforms for each distortion. \n\n // ShaderShaping funcitns\n https://thebookofshaders.com/05/\n Steps \n 1. Write getDistortion in GLSL\n 2. Write custom uniforms for tweak parameters. Put them outside the object.\n 3. Re-create the GLSl funcion in javascript to get camera paning\n\n Notes: \n LookAtAmp AND lookAtOffset are hand tuned to get a good camera panning.\n */\nimport * as THREE from 'three';\n\n\nconst mountainUniforms = {\n // x, y, z\n uFreq: new THREE.Uniform(new THREE.Vector3(3, 6, 10)),\n uAmp: new THREE.Uniform(new THREE.Vector3(30, 30, 20))\n};\n\nconst xyUniforms = {\n // x,y\n uFreq: new THREE.Uniform(new THREE.Vector2(5, 2)),\n uAmp: new THREE.Uniform(new THREE.Vector2(25, 15))\n};\n\nconst LongRaceUniforms = {\n // x, y\n uFreq: new THREE.Uniform(new THREE.Vector2(2, 3)),\n uAmp: new THREE.Uniform(new THREE.Vector2(35, 10))\n};\n\nconst turbulentUniforms = {\n // x,x, y,y\n uFreq: new THREE.Uniform(new THREE.Vector4(4, 8, 8, 1)),\n uAmp: new THREE.Uniform(new THREE.Vector4(25, 5, 10, 10))\n};\n\nconst deepUniforms = {\n // x, y\n uFreq: new THREE.Uniform(new THREE.Vector2(4, 8)),\n uAmp: new THREE.Uniform(new THREE.Vector2(10, 20)),\n uPowY: new THREE.Uniform(new THREE.Vector2(20, 2))\n};\n\nlet nsin = val => Math.sin(val) * 0.5 + 0.5;\n\nexport let mountainDistortion = {\n uniforms: mountainUniforms,\n getDistortion: `\n \n uniform vec3 uAmp;\n uniform vec3 uFreq;\n \n #define PI 3.14159265358979\n \n float nsin(float val){\n return sin(val) * 0.5+0.5;\n }\n \n vec3 getDistortion(float progress){\n \n float movementProgressFix = 0.02;\n return vec3( \n cos(progress * PI * uFreq.x + uTime) * uAmp.x - cos(movementProgressFix * PI * uFreq.x + uTime) * uAmp.x,\n nsin(progress * PI * uFreq.y + uTime) * uAmp.y - nsin(movementProgressFix * PI * uFreq.y + uTime) * uAmp.y,\n nsin(progress * PI * uFreq.z + uTime) * uAmp.z - nsin(movementProgressFix * PI * uFreq.z + uTime) * uAmp.z\n );\n }\n `,\n getJS: (progress, time) => {\n let movementProgressFix = 0.02;\n\n let uFreq = mountainUniforms.uFreq.value;\n let uAmp = mountainUniforms.uAmp.value;\n\n let distortion = new THREE.Vector3(\n Math.cos(progress * Math.PI * uFreq.x + time) * uAmp.x -\n Math.cos(movementProgressFix * Math.PI * uFreq.x + time) * uAmp.x,\n nsin(progress * Math.PI * uFreq.y + time) * uAmp.y -\n nsin(movementProgressFix * Math.PI * uFreq.y + time) * uAmp.y,\n nsin(progress * Math.PI * uFreq.z + time) * uAmp.z -\n nsin(movementProgressFix * Math.PI * uFreq.z + time) * uAmp.z\n );\n\n let lookAtAmp = new THREE.Vector3(2, 2, 2);\n let lookAtOffset = new THREE.Vector3(0, 0, -5);\n return distortion.multiply(lookAtAmp).add(lookAtOffset);\n }\n};\n\nlet xyDistortion = {\n uniforms: xyUniforms,\n getDistortion: `\n uniform vec2 uFreq;\n uniform vec2 uAmp;\n \n #define PI 3.14159265358979\n \n \n vec3 getDistortion(float progress){\n \n float movementProgressFix = 0.02;\n return vec3( \n cos(progress * PI * uFreq.x + uTime) * uAmp.x - cos(movementProgressFix * PI * uFreq.x + uTime) *uAmp.x,\n sin(progress * PI * uFreq.y + PI/2. + uTime) * uAmp.y - sin(movementProgressFix * PI * uFreq.y + PI/2. + uTime) * uAmp.y,\n 0.\n );\n }\n `,\n getJS: (progress, time) => {\n let movementProgressFix = 0.02;\n\n let uFreq = xyUniforms.uFreq.value;\n let uAmp = xyUniforms.uAmp.value;\n\n let distortion = new THREE.Vector3(\n Math.cos(progress * Math.PI * uFreq.x + time) * uAmp.x -\n Math.cos(movementProgressFix * Math.PI * uFreq.x + time) * uAmp.x,\n Math.sin(progress * Math.PI * uFreq.y + time + Math.PI / 2) * uAmp.y -\n Math.sin(movementProgressFix * Math.PI * uFreq.y + time + Math.PI / 2) *\n uAmp.y,\n 0\n );\n let lookAtAmp = new THREE.Vector3(2, 0.4, 1);\n let lookAtOffset = new THREE.Vector3(0, 0, -3);\n return distortion.multiply(lookAtAmp).add(lookAtOffset);\n }\n};\n\nexport let LongRaceDistortion = {\n uniforms: LongRaceUniforms,\n getDistortion: `\n \n uniform vec2 uFreq;\n uniform vec2 uAmp;\n #define PI 3.14159265358979\n \n vec3 getDistortion(float progress){\n \n float camProgress = 0.0125;\n return vec3( \n sin(progress * PI * uFreq.x +uTime) * uAmp.x - sin(camProgress * PI * uFreq.x+uTime ) * uAmp.x,\n sin(progress * PI * uFreq.y +uTime) * uAmp.y - sin(camProgress * PI * uFreq.y+uTime ) * uAmp.y,\n 0.\n );\n }\n `,\n getJS: (progress, time) => {\n let camProgress = 0.0125;\n\n let uFreq = LongRaceUniforms.uFreq.value;\n let uAmp = LongRaceUniforms.uAmp.value;\n // Uniforms\n\n let distortion = new THREE.Vector3(\n Math.sin(progress * Math.PI * uFreq.x + time) * uAmp.x -\n Math.sin(camProgress * Math.PI * uFreq.x + time) * uAmp.x,\n Math.sin(progress * Math.PI * uFreq.y + time) * uAmp.y -\n Math.sin(camProgress * Math.PI * uFreq.y + time) * uAmp.y,\n 0\n );\n\n let lookAtAmp = new THREE.Vector3(1, 1, 0);\n let lookAtOffset = new THREE.Vector3(0, 0, -5);\n return distortion.multiply(lookAtAmp).add(lookAtOffset);\n }\n};\n\nconst turbulentDistortion = {\n uniforms: turbulentUniforms,\n getDistortion: `\n uniform vec4 uFreq;\n uniform vec4 uAmp;\n float nsin(float val){\n return sin(val) * 0.5+0.5;\n }\n \n #define PI 3.14159265358979\n float getDistortionX(float progress){\n return \n (\n cos( PI * progress * uFreq.r + uTime) * uAmp.r +\n pow(cos(PI * progress * uFreq.g + uTime * (uFreq.g / uFreq.r)),2. )* uAmp.g\n \n );\n }\n float getDistortionY(float progress){\n return \n (\n -nsin( PI * progress * uFreq.b + uTime) * uAmp.b +\n -pow(nsin(PI * progress * uFreq.a + uTime / (uFreq.b / uFreq.a) ),5.) * uAmp.a\n \n );\n }\n vec3 getDistortion(float progress){\n return vec3(\n getDistortionX(progress)-getDistortionX(0.0125) ,\n getDistortionY(progress)- getDistortionY(0.0125),\n 0.\n );\n }\n `,\n getJS: (progress, time) => {\n const uFreq = turbulentUniforms.uFreq.value;\n const uAmp = turbulentUniforms.uAmp.value;\n\n const getX = p =>\n Math.cos(Math.PI * p * uFreq.x + time) * uAmp.x +\n Math.pow(\n Math.cos(Math.PI * p * uFreq.y + time * (uFreq.y / uFreq.x)),\n 2\n ) *\n uAmp.y;\n const getY = p =>\n -nsin(Math.PI * p * uFreq.z + time) * uAmp.z -\n Math.pow(nsin(Math.PI * p * uFreq.w + time / (uFreq.z / uFreq.w)), 5) *\n uAmp.w;\n\n let distortion = new THREE.Vector3(\n getX(progress) - getX(progress + 0.007),\n getY(progress) - getY(progress + 0.007),\n 0\n );\n let lookAtAmp = new THREE.Vector3(-2, -5, 0);\n let lookAtOffset = new THREE.Vector3(0, 0, -10);\n return distortion.multiply(lookAtAmp).add(lookAtOffset);\n }\n};\n\nconst turbulentDistortionStill = {\n uniforms: turbulentUniforms,\n getDistortion: `\n uniform vec4 uFreq;\n uniform vec4 uAmp;\n float nsin(float val){\n return sin(val) * 0.5+0.5;\n }\n \n #define PI 3.14159265358979\n float getDistortionX(float progress){\n return \n (\n cos( PI * progress * uFreq.r ) * uAmp.r +\n pow(cos(PI * progress * uFreq.g * (uFreq.g / uFreq.r)),2. )* uAmp.g\n \n );\n }\n float getDistortionY(float progress){\n return \n (\n -nsin( PI * progress * uFreq.b ) * uAmp.b +\n -pow(nsin(PI * progress * uFreq.a / (uFreq.b / uFreq.a) ),5.) * uAmp.a\n \n );\n }\n vec3 getDistortion(float progress){\n return vec3(\n getDistortionX(progress)-getDistortionX(0.02) ,\n getDistortionY(progress)- getDistortionY(0.02),\n 0.\n );\n }\n `\n};\n\nconst deepDistortion = {\n uniforms: deepUniforms,\n getDistortion: `\n uniform vec4 uFreq;\n uniform vec4 uAmp;\n uniform vec2 uPowY;\n float nsin(float val){\n return sin(val) * 0.5+0.5;\n }\n \n #define PI 3.14159265358979\n float getDistortionX(float progress){\n return \n (\n sin(progress * PI * uFreq.x + uTime) * uAmp.x\n \n );\n }\n float getDistortionY(float progress){\n return \n (\n pow(abs(progress * uPowY.x),uPowY.y) + sin(progress * PI * uFreq.y + uTime) * uAmp.y\n );\n }\n vec3 getDistortion(float progress){\n return vec3(\n getDistortionX(progress)-getDistortionX(0.02) ,\n getDistortionY(progress)- getDistortionY(0.02),\n 0.\n );\n }\n `,\n getJS: (progress, time) => {\n const uFreq = deepUniforms.uFreq.value;\n const uAmp = deepUniforms.uAmp.value;\n const uPowY = deepUniforms.uPowY.value;\n\n const getX = p => Math.sin(p * Math.PI * uFreq.x + time) * uAmp.x;\n const getY = p =>\n Math.pow(p * uPowY.x, uPowY.y) +\n Math.sin(p * Math.PI * uFreq.y + time) * uAmp.y;\n\n let distortion = new THREE.Vector3(\n getX(progress) - getX(progress + 0.01),\n getY(progress) - getY(progress + 0.01),\n 0\n );\n let lookAtAmp = new THREE.Vector3(-2, -4, 0);\n let lookAtOffset = new THREE.Vector3(0, 0, -10);\n return distortion.multiply(lookAtAmp).add(lookAtOffset);\n }\n};\n\nconst deepDistortionStill = {\n uniforms: deepUniforms,\n getDistortion: `\n uniform vec4 uFreq;\n uniform vec4 uAmp;\n uniform vec2 uPowY;\n float nsin(float val){\n return sin(val) * 0.5+0.5;\n }\n \n #define PI 3.14159265358979\n float getDistortionX(float progress){\n return \n (\n sin(progress * PI * uFreq.x ) * uAmp.x * 2.\n \n );\n }\n float getDistortionY(float progress){\n return \n (\n pow(abs(progress * uPowY.x),uPowY.y) + sin(progress * PI * uFreq.y ) * uAmp.y\n );\n }\n vec3 getDistortion(float progress){\n return vec3(\n getDistortionX(progress)-getDistortionX(0.02) ,\n getDistortionY(progress)- getDistortionY(0.05),\n 0.\n );\n }\n `\n};\n","import { LongRaceDistortion, mountainDistortion } from './Distorsions';\n\nconst container = document.getElementById('app');\n\nexport const options = {\n onSpeedUp: (ev) => {\n },\n onSlowDown: (ev) => {\n },\n // mountainDistortion || LongRaceDistortion || xyDistortion || turbulentDistortion || turbulentDistortionStill || deepDistortionStill || deepDistortion\n distortion: LongRaceDistortion,\n\n length: 400,\n roadWidth: 9,\n islandWidth: 2,\n lanesPerRoad: 3,\n\n fov: 90,\n fovSpeedUp: 150,\n speedUp: 2,\n carLightsFade: 0.4,\n\n totalSideLightSticks: 50,\n lightPairsPerRoadWay: 50,\n\n // Percentage of the lane's width\n shoulderLinesWidthPercentage: 0.05,\n brokenLinesWidthPercentage: 0.1,\n brokenLinesLengthPercentage: 0.5,\n\n /*** These ones have to be arrays of [min,max]. ***/\n lightStickWidth: [0.12, 0.5],\n lightStickHeight: [1.3, 1.7],\n\n movingAwaySpeed: [60, 80],\n movingCloserSpeed: [-120, -160],\n\n /**** Anything below can be either a number or an array of [min,max] ****/\n\n // Length of the lights. Best to be less than total length\n carLightsLength: [400 * 0.05, 400 * 0.15],\n // Radius of the tubes\n carLightsRadius: [0.05, 0.14],\n // Width is percentage of a lane. Numbers from 0 to 1\n carWidthPercentage: [0.3, 0.5],\n // How drunk the driver is.\n // carWidthPercentage's max + carShiftX's max -> Cannot go over 1. \n // Or cars start going into other lanes \n carShiftX: [-0.2, 0.2],\n // Self Explanatory\n carFloorSeparation: [0.05, 1],\n\n colors: {\n roadColor: 0x080808,\n islandColor: 0x0a0a0a,\n background: 0x000000,\n shoulderLines: 0x131318,\n brokenLines: 0x131318,\n /*** Only these colors can be an array ***/\n leftCars: [0xc60101, 0xc60101, 0xc60101],\n rightCars: [0x0082d6, 0x0082d6, 0x0082d6],\n sticks: 0xdadafa,\n }\n};\n\n","import { styled } from '@volkswagen-onehub/components-core';\n\ninterface TextProps {\n size?: string;\n letterSpacing?: string;\n}\n\nexport const LatinoBlackTitle = styled.h1`\n font-family: 'LatinoTypeVersusBlack';\n color: white;\n font-weight: bold;\n font-size: ${(props)=> props.size ? props.size : '24px'};\n letter-spacing: ${(props)=> props.letterSpacing ? props.letterSpacing : '0.10em'};\n margin: 0;\n @media screen and (min-width: 560px) {\n font-size: ${(props)=> props.size ? props.size : 'var(--textappearances-headline350-fontsize)'};\n letter-spacing: ${(props)=> props.letterSpacing ? props.letterSpacing : '0.22em'};\n }\n @media screen and (min-width: 960px) {\n font-size: ${(props)=> props.size ? props.size : 'var(--textappearances-headline400-fontsize)'};\n }\n @media screen and (min-width: 1280px) {\n font-size: ${(props)=> props.size ? props.size : 'var(--textappearances-headline450-fontsize)'};\n }\n @media screen and (min-width: 1920px) {\n font-size: ${(props)=> props.size ? props.size : 'var(--textappearances-headline500-fontsize)'};\n }\n`;\n\nexport const LatinoTitleBold = styled.h1`\n font-family: 'LatinoTypeVersusBold';\n color: white;\n font-weight: bold;\n font-size: var(--textappearances-headline400-fontsize);\n margin: 0;\n\n @media screen and (min-width: 560px) {\n font-size: var(--textappearances-headline350-fontsize); \n }\n @media screen and (min-width: 960px) {\n font-size: var(--textappearances-headline400-fontsize); \n }\n @media screen and (min-width: 1280px) {\n font-size: var(--textappearances-headline450-fontsize);\n }\n @media screen and (min-width: 1920px) {\n font-size: var(--textappearances-headline500-fontsize);\n }\n`;\n","import { Text, TextAppearance, TextColor, BreakpointWrapper, Breakpoints } from '@volkswagen-onehub/components-core';\nimport React from 'react';\nimport { AppInfinite } from '../InfiniteLights.js';\nimport { options } from '../options';\nimport { styled } from '@volkswagen-onehub/components-core';\nimport { LatinoBlackTitle } from '../Texts';\n\nconst Div = styled.div`\n width: 100%;\n height: var(--100vh);\n background-color: #000000;\n\n & canvas {\n width: 100%;\n height: 100%;\n }\n`;\n\nconst TextWrapper = styled.div`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n color: #ffffff;\n text-align: center;\n max-width: 1920px;\n\n display: flex;\n flex-direction: column;\n gap: 24px;\n width: 100%;\n\n @media screen and (min-width: 1280px) {\n gap: 32px;\n }\n @media screen and (min-width: 1600px) {\n gap: 52px;\n }\n`;\n\nconst TitleWrapper = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: 100%;\n padding: 0 var(--size-grid001); \n \n`;\nconst BodyWrapper = styled.div`\n width: 100%;\n padding: 0 var(--size-grid001);\n`;\n\nexport function FirstSlide({ loadAnimation }: { loadAnimation: boolean }) {\n const divRef = React.useRef(null);\n const destroyAnimation = () => {\n const canvas = document.getElementsByTagName('canvas')[0];\n if (!canvas) return;\n canvas.remove();\n };\n const startAnimation = () => {\n const app = new AppInfinite(divRef.current, options);\n app.loadAssets().then(app.init);\n };\n React.useEffect(() => {\n if (divRef.current) {\n if (loadAnimation) {\n startAnimation();\n } else {\n destroyAnimation();\n }\n }\n }, [loadAnimation]);\n\n return (\n
    \n
    \n \n \n \n <BodyMobile />\n </BreakpointWrapper>\n <BreakpointWrapper min={Breakpoints.b960}>\n <Title />\n <BodyDesktop />\n </BreakpointWrapper>\n </TextWrapper>\n </div>\n );\n}\n\nconst Title = () => {\n // hasta 959px, si intentamos replicar los saltos de línea de diseño la tipo que muy pequeña\n return (\n <TitleWrapper className=\"title\">\n <LatinoBlackTitle>Así que</LatinoBlackTitle>\n <LatinoBlackTitle>te atreves a</LatinoBlackTitle>\n <LatinoBlackTitle>ir a contracorriente, ¿eh?</LatinoBlackTitle>\n </TitleWrapper>\n );\n};\n\nconst BodyMobile = () => {\n // hasta 959px, si intentamos replicar los saltos de línea de diseño la tipo que muy pequeña\n \n return (\n <BodyWrapper>\n <Text appearance={TextAppearance.copy0200} color={TextColor.inherit}>\n Lánzate un día a la aventura al volante de un coupé. Y al otro, derrocha elegancia con un SUV que combina estilo y personalidad. {' '}\n Con el<Text bold> Nuevo Taigo</Text>, el primer SUV coupé de Volkswagen, puedes tenerlo todo.{' '}\n <Text bold>\n <span style={{ whiteSpace: 'nowrap' }}>Sé infiel a lo común o... ¿te lo vas a perder?</span>\n </Text>\n </Text>\n </BodyWrapper>\n );\n};\n\nconst BodyDesktop = () => {\n // a partir de 960px para posicionar los saltos de línea según diseño\n return (\n <>\n <BreakpointWrapper max={Breakpoints.b1280}>\n <BodyWrapper>\n <Text appearance={TextAppearance.copy0250} color={TextColor.inherit}>\n Lánzate un día a la aventura al volante de un coupé. Y al otro, derrocha elegancia con un SUV que combina estilo y personalidad. {' '}\n Con el<Text bold> Nuevo Taigo</Text>, el primer SUV coupé de Volkswagen, puedes tenerlo todo.\n </Text>\n <Text appearance={TextAppearance.copy0250} color={TextColor.inherit} bold>\n <span style={{ whiteSpace: 'nowrap' }}>Sé infiel a lo común o... ¿te lo vas a perder?</span>\n </Text>\n </BodyWrapper>\n </BreakpointWrapper>\n <BreakpointWrapper min={Breakpoints.b1280}>\n <BodyWrapper>\n <Text appearance={TextAppearance.copy0300} color={TextColor.inherit}>\n Lánzate un día a la aventura al volante de un coupé. Y al otro, derrocha elegancia con un SUV que combina estilo y personalidad. {' '}\n Con el<Text bold> Nuevo Taigo</Text>, el primer SUV coupé de Volkswagen, puedes tenerlo todo.\n </Text>\n <Text appearance={TextAppearance.copy0300} color={TextColor.inherit} bold>\n <span style={{ whiteSpace: 'nowrap' }}>Sé infiel a lo común o... ¿te lo vas a perder?</span>\n </Text>\n </BodyWrapper>\n </BreakpointWrapper>\n </>\n );\n};\n","import {\n Breakpoints,\n BreakpointWrapper,\n styled,\n Text,\n TextAlignment,\n TextAppearance,\n TextColor,\n} from '@volkswagen-onehub/components-core';\nimport React, { useState } from 'react';\nimport { TriggerProps } from 'src';\nimport { LanzamientoTaigoForm } from 'src/forms';\n\nimport { FourthSlideDesktop, FourthSlideMobile } from '.';\n\nexport interface SlideProps {\n blueSelected: boolean;\n redSelected: boolean;\n setBlueSelected: React.Dispatch<React.SetStateAction<boolean>>;\n setRedSelected: React.Dispatch<React.SetStateAction<boolean>>;\n slideConfig: SlideConfig;\n setSelectedJourney: (selectedJourney: JSX.Element, skipTrackButtonClick?: boolean) => void;\n fullPageApi: any;\n}\n\ninterface SlideConfig {\n firstDivision: Copies;\n secondDivision: Copies;\n}\ninterface Copies {\n title: string;\n subtitle: JSX.Element;\n options: string[];\n preButton: string;\n}\n\nconst slidesConfig: SlideConfig = {\n firstDivision: {\n title: 'Deportivo',\n subtitle: (\n <>\n ¡La aventura te llama!\n <br />\n <Text bold>Elige tu excusa para vivirlo todo</Text>\n </>\n ),\n options: [\n 'Voy a prepararme para los San Fermines en Pamplona.',\n 'Ese día subo a los Picos de Europa con la unión excursionista.',\n 'Participo en una competición de surf en el Cantábrico.',\n ],\n preButton: 'Y gana una visita a Volkswagen Navarra y un plan aventurero en Alma Hotels.',\n },\n secondDivision: {\n title: 'Urbanita',\n subtitle: (\n <>\n ¡La ciudad es tuya!\n <br />\n <Text bold>Elige tu excusa para vivirlo todo</Text>\n </>\n ),\n options: [\n 'He quedado con los amigos para irme de pintxos por Pamplona.',\n 'Me han invitado al estreno de una peli en un autocine.',\n 'Asisto a una conferencia en Navarra sobre innovación digital.',\n ],\n preButton: 'Y gana una visita a Volkswagen Navarra y una experiencia exclusiva en Alma Hotels.',\n },\n};\n\nexport function FourthSlide({ setSelectedJourney, fullPageApi }: any) {\n const [blueSelected, setBlueSelected] = useState(false);\n const [redSelected, setRedSelected] = useState(false);\n\n return (\n <div>\n <BreakpointWrapper max={Breakpoints.b960}>\n <FourthSlideMobile\n blueSelected={blueSelected}\n setBlueSelected={setBlueSelected}\n redSelected={redSelected}\n setRedSelected={setRedSelected}\n slideConfig={slidesConfig}\n setSelectedJourney={setSelectedJourney}\n fullPageApi={fullPageApi}\n />\n </BreakpointWrapper>\n\n <BreakpointWrapper min={Breakpoints.b960}>\n <FourthSlideDesktop\n blueSelected={blueSelected}\n setBlueSelected={setBlueSelected}\n redSelected={redSelected}\n setRedSelected={setRedSelected}\n slideConfig={slidesConfig}\n setSelectedJourney={setSelectedJourney}\n fullPageApi={fullPageApi}\n />\n </BreakpointWrapper>\n </div>\n );\n}\n\nexport const CTATaigo = styled.button<{ expanded?: boolean; otherIsSelected?: boolean, solid?: boolean }>`\n background-color: ${(props)=> props.solid ? '#ffffff' : 'transparent'};\n border: 2px solid #ffffff;\n color: ${(props)=> props.solid ? '#001E50' : '#ffffff'};\n border-radius: 500px;\n padding: ${(props) => (props.otherIsSelected ? '6px 12px' : props.expanded ? '8px 112px' : '8px 20px')};\n max-width: 318px;\n width: 100%;\n cursor: pointer;\n\n font-family: var(--font-family-text, vw-text, Helvetica, Arial, sans-serif);\n font-size: ${(props) => (props.otherIsSelected ? '12px' : '16px')};\n font-weight: ${(props)=> props.solid ? '700' : '400'};\n line-height: 20px;\n\n &:hover {\n opacity: 0.8;\n }\n\n @media screen and (min-width: 1280px) {\n font-size: 20px;\n padding: ${(props) => props.expanded ? '12px 112px' : '12px 20px'};\n }\n @media screen and (min-width: 1600px) {\n font-size: 24px;\n padding: ${(props) => (props.expanded ? '12px 112px' : '12px 24px')};\n }\n @media screen and (min-width: 1920px) {\n font-size: 32px;\n padding: ${(props) => (props.expanded ? '20px 112px' : '20px 32px')};\n }\n`;\n\nconst OptionsContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 20px;\n color: #ffffff;\n\n @media screen and (min-width: 1280px) {\n gap: 32px;\n }\n`;\n\nconst OptionsWrapper = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 6px;\n color: #ffffff;\n text-align: left;\n\n @media screen and (min-width: 960px) {\n padding: 16px 0;\n gap: 12px;\n }\n @media screen and (min-width: 1280px) {\n padding: 32px 0;\n }\n`;\nconst Option = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n & div {\n cursor: pointer;\n }\n @media screen and (min-width: 960px) {\n gap: 20px;\n }\n`;\n\nexport const RadioInput = styled.input`\n display: none;\n vertical-align: middle;\n cursor: pointer;\n\n & label:before {\n border: 2px solid orange;\n }\n`;\n\nexport const Radio = styled.div<{ checked: boolean }>`\n width: 12px;\n height: 12px;\n background: transparent;\n border-radius: 50%;\n border: 2px solid #ffffff;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 2px;\n\n @media screen and (min-width: 560px) {\n margin-bottom: 0;\n width: 16px;\n height: 16px;\n }\n\n @media screen and (min-width: 1280px) {\n width: 20px;\n height: 20px;\n }\n /* margin-right: 7px; */\n\n cursor: pointer;\n\n &::after {\n content: '';\n width: 100%;\n height: 100%;\n border-radius: 50%;\n display: block;\n background: ${(props) => (props.checked ? '#FFFFFF' : 'transparent')};\n }\n`;\n\ninterface OptionsProps {\n subtitle: JSX.Element;\n options: string[];\n ctaCopy: string;\n preButton: string;\n setSelectedJourney: (selectedJourney: JSX.Element, skipTrackButtonClick?: boolean) => void;\n fullPageApi: any;\n estilo: string;\n}\n\n// a partir de 960px\nexport const OptionsDesktop = ({ subtitle, options, setSelectedJourney, ctaCopy, preButton, estilo }: OptionsProps) => {\n const [checkedOption, setCheckedOption] = useState(null);\n const [ errorExcusa, setErrorExcusa ] = useState(null);\n\n const fields = {\n excusa: checkedOption,\n estiloExcusa: estilo,\n };\n\n return (\n <OptionsContainer>\n <BreakpointWrapper max={Breakpoints.b1280}>\n <Text appearance={TextAppearance.copy250} color={TextColor.inherit} textAlign={TextAlignment.center}>\n {subtitle}\n </Text>\n </BreakpointWrapper>\n <BreakpointWrapper min={Breakpoints.b1280}>\n <Text appearance={TextAppearance.copy300} color={TextColor.inherit} textAlign={TextAlignment.center}>\n {subtitle}\n </Text>\n </BreakpointWrapper>\n\n <OptionsWrapper>\n {options.map((option) => (\n <Option\n onClick={() => {\n setCheckedOption(option);\n }}\n >\n <RadioInput\n onClick={() => {\n setCheckedOption(option);\n }}\n />\n <Radio\n onClick={() => {\n setCheckedOption(option);\n }}\n checked={checkedOption === option}\n />\n <BreakpointWrapper max={Breakpoints.b1280}>\n <Text appearance={TextAppearance.copy200} color={TextColor.inherit} textAlign={TextAlignment.center}>\n {option}\n </Text>\n </BreakpointWrapper>\n <BreakpointWrapper min={Breakpoints.b1280}>\n <Text appearance={TextAppearance.copy250} color={TextColor.inherit} textAlign={TextAlignment.center}>\n {option}\n </Text>\n </BreakpointWrapper>\n </Option>\n ))}\n </OptionsWrapper>\n <BreakpointWrapper max={Breakpoints.b1280}>\n <Text appearance={TextAppearance.copy250} color={TextColor.inherit} textAlign={TextAlignment.center}>\n {preButton}\n </Text>\n </BreakpointWrapper>\n <BreakpointWrapper min={Breakpoints.b1280}>\n <Text appearance={TextAppearance.copy300} color={TextColor.inherit} textAlign={TextAlignment.center}>\n {preButton}\n </Text>\n </BreakpointWrapper>\n <div>\n {\n errorExcusa ? (\n <div style={{paddingBottom: '8px'}}>\n <Text appearance={TextAppearance.copy150} color={TextColor.inherit} textAlign={TextAlignment.center}>\n Elige una excusa para poder continuar\n </Text>\n </div>\n ) : null\n }\n <CTATaigo\n onClick={() => {\n if(checkedOption) {\n setSelectedJourney(<LanzamientoTaigoForm updatedFormData={{ fields }}/>);\n setErrorExcusa(false);\n } else {\n setErrorExcusa(true);\n }\n }}\n expanded={false}\n solid\n >\n {ctaCopy}\n </CTATaigo>\n </div>\n </OptionsContainer>\n );\n};\n//hasta 959px\nexport const OptionsMobile = ({ subtitle, options, setSelectedJourney, ctaCopy, preButton, estilo }: OptionsProps) => {\n const [checkedOption, setCheckedOption] = useState(null);\n const [ errorExcusa, setErrorExcusa ] = useState(null);\n\n const fields = {\n excusa: checkedOption,\n estiloExcusa: estilo,\n };\n\n return (\n <OptionsContainer>\n <Text appearance={TextAppearance.copy200} color={TextColor.inherit} textAlign={TextAlignment.center}>\n {subtitle}\n </Text>\n <OptionsWrapper>\n {options.map((option) => (\n <Option\n onClick={() => {\n setCheckedOption(option);\n }}\n >\n <RadioInput />\n <Radio\n onClick={() => {\n setCheckedOption(option);\n }}\n checked={checkedOption === option}\n />\n <Text appearance={TextAppearance.copy150} color={TextColor.inherit}>\n {option}\n </Text>\n </Option>\n ))}\n </OptionsWrapper>\n <Text appearance={TextAppearance.copy200} color={TextColor.inherit} textAlign={TextAlignment.center} bold>\n {preButton}\n </Text>\n <div>\n {\n errorExcusa ? (\n <div style={{paddingBottom: '4px'}}>\n <Text appearance={TextAppearance.copy100} color={TextColor.inherit} textAlign={TextAlignment.center}>\n Elige una excusa para poder continuar\n </Text>\n </div>\n ) : null\n }\n <CTATaigo\n onClick={() => {\n if(checkedOption) {\n setSelectedJourney(<LanzamientoTaigoForm updatedFormData={{ fields }}/>);\n setErrorExcusa(false);\n } else {\n setErrorExcusa(true);\n } \n }}\n solid\n expanded={false}\n >\n {ctaCopy}\n </CTATaigo>\n </div>\n </OptionsContainer>\n );\n};\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport { LatinoTitleBold } from '..';\nimport { Text, TextAppearance, TextColor } from '@volkswagen-onehub/components-core';\nimport { CTATaigo, OptionsDesktop, SlideProps } from '.';\n\nconst Div = styled.div`\n width: 100%;\n height: var(--100vh);\n display: flex;\n position: relative;\n background-image: url('https://cdn.volkswagen.es/repository/app/vw-oneform/assets/images/taigo/taigo_background.png');\n background-size: cover;\n`;\n\nconst BlueDiv = styled.div<{ isSelected: boolean; otherIsSelected: boolean }>`\n position: absolute;\n height: 100%;\n width: 100%;\n background-color: rgb(0, 130, 214, 0.6);\n left: 0;\n top: 0;\n display: flex;\n clip-path: ${(props) =>\n props.isSelected\n ? 'polygon(0 0, 85% 0, 100% 100%, 0 100%)'\n : props.otherIsSelected\n ? 'polygon(0 0, 0 0, 15% 100%, 0 100%)'\n : 'polygon(0 0, 35% 0, 65% 100%, 0 100%)'};\n justify-content: ${(props) => (props.otherIsSelected ? 'flex-start' : 'center')};\n align-items: ${(props) => (props.otherIsSelected ? 'flex-end' : 'center')};\n padding: ${(props) => (props.otherIsSelected ? '4% 2%' : '0')};\n transition: all 0.5s ease;\n\n & h1 {\n font-size: ${(props) => (props.otherIsSelected ? '16px !important' : '')};\n @media screen and (min-width: 1280px) {\n font-size: ${(props) => (props.otherIsSelected ? '20px !important' : '')};\n }\n @media screen and (min-width: 1600px) {\n font-size: ${(props) => (props.otherIsSelected ? '24px !important' : '')};\n }\n @media screen and (min-width: 1920px) {\n font-size: ${(props) => (props.otherIsSelected ? '32px !important' : '')};\n }\n }\n`;\n\nconst RedDiv = styled.div<{ isSelected: boolean; otherIsSelected: boolean }>`\n width: 100%;\n position: absolute;\n height: 100%;\n width: 100%;\n right: 0;\n top: 0;\n clip-path: ${(props) =>\n props.isSelected\n ? 'polygon(0 0, 100% 0, 100% 100%, 15% 100%)'\n : props.otherIsSelected\n ? 'polygon(85% 0, 100% 0, 100% 100%, 100% 100%)'\n : 'polygon(35% 0, 100% 0, 100% 100%, 65% 100%)'};\n\n display: flex;\n justify-content: ${(props) => (props.otherIsSelected ? 'flex-end' : 'center')};\n align-items: ${(props) => (props.otherIsSelected ? 'flex-start' : 'center')};\n padding: ${(props) => (props.otherIsSelected ? '4% 2%' : '0')};\n transition: all 0.5s ease;\n background-color: rgb(198, 1, 1, 0.6);\n\n & h1 {\n font-size: ${(props) => (props.otherIsSelected ? '16px !important' : '')};\n @media screen and (min-width: 1280px) {\n font-size: ${(props) => (props.otherIsSelected ? '20px !important' : '')};\n }\n @media screen and (min-width: 1600px) {\n font-size: ${(props) => (props.otherIsSelected ? '24px !important' : '')};\n }\n @media screen and (min-width: 1920px) {\n font-size: ${(props) => (props.otherIsSelected ? '32px !important' : '')};\n }\n }\n`;\n\nconst Body = styled.div<{ otherIsSelected: boolean; isSelected?: boolean }>`\n display: flex;\n flex-direction: column;\n gap: ${(props) => (props.otherIsSelected ? '12px' : '24px')};\n color: #ffffff;\n align-items: center;\n @media screen and (min-width: 960px) {\n gap: ${(props) => (props.otherIsSelected ? '16px' : '24px')};\n }\n @media screen and (min-width: 1600px) {\n gap: ${(props) => (props.otherIsSelected ? '16px' : '32px')};\n }\n`;\n\nconst BodyBlue = styled(Body)`\n padding-right: ${(props) => (props.isSelected ? '0' : props.otherIsSelected ? '0' : '35%')};\n margin-bottom: ${(props) => (props.otherIsSelected ? '12%' : '')};\n @media screen and (min-width: 960px) {\n margin-bottom: ${(props) => (props.otherIsSelected ? '0' : '')};\n }\n`;\n\nconst BodyRed = styled(Body)`\n padding-left: ${(props) => (props.isSelected ? '0' : props.otherIsSelected ? '0' : '35%')};\n margin-top: ${(props) => (props.otherIsSelected ? '12%' : '')};\n @media screen and (min-width: 1280px) {\n margin-top: ${(props) => (props.otherIsSelected ? '4%' : '')};\n }\n`;\n\nexport function FourthSlideDesktop({\n blueSelected,\n setBlueSelected,\n redSelected,\n setRedSelected,\n slideConfig,\n setSelectedJourney,\n fullPageApi,\n}: SlideProps) {\n return (\n <Div>\n <BlueDiv isSelected={blueSelected} otherIsSelected={redSelected}>\n {/* <Image /> */}\n <BodyBlue isSelected={blueSelected} otherIsSelected={redSelected} className=\"body-blue\">\n {redSelected ? null : <LatinoTitleBold>{slideConfig.firstDivision.title}</LatinoTitleBold>}\n {blueSelected ? (\n <OptionsDesktop\n setSelectedJourney={setSelectedJourney}\n subtitle={slideConfig.firstDivision.subtitle}\n options={slideConfig.firstDivision.options}\n preButton={slideConfig.firstDivision.preButton}\n ctaCopy=\"Enviar excusa\"\n fullPageApi={fullPageApi}\n estilo='deportivo'\n />\n ) : (\n <CTATaigo\n onClick={() => {\n setBlueSelected(true);\n setRedSelected(false);\n }}\n otherIsSelected={redSelected}\n >\n {redSelected ? 'Entrar' : 'Atrévete…'}\n </CTATaigo>\n )}\n {redSelected ? <LatinoTitleBold>{slideConfig.firstDivision.title}</LatinoTitleBold> : null}\n </BodyBlue>\n </BlueDiv>\n <RedDiv isSelected={redSelected} otherIsSelected={blueSelected}>\n {/* <RedImage /> */}\n <BodyRed isSelected={redSelected} otherIsSelected={blueSelected} className=\"body-red\">\n <LatinoTitleBold>{slideConfig.secondDivision.title}</LatinoTitleBold>\n {redSelected ? (\n <OptionsDesktop\n setSelectedJourney={setSelectedJourney}\n subtitle={slideConfig.secondDivision.subtitle}\n options={slideConfig.secondDivision.options}\n preButton={slideConfig.secondDivision.preButton}\n ctaCopy=\"Enviar excusa\"\n fullPageApi={fullPageApi}\n estilo='urbano'\n />\n ) : (\n <CTATaigo\n onClick={() => {\n setRedSelected(true);\n setBlueSelected(false);\n }}\n otherIsSelected={blueSelected}\n >\n {blueSelected ? 'Entrar' : 'Escápate ya'}\n </CTATaigo>\n )}\n </BodyRed>\n </RedDiv>\n </Div>\n );\n}\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport { LatinoTitleBold } from '..';\nimport { Text, TextAppearance, TextColor } from '@volkswagen-onehub/components-core';\nimport { CTATaigo, OptionsMobile, SlideProps } from '.';\n\nconst Div = styled.div`\n width: 100vw;\n height: var(--100vh);\n min-height: 640px;\n display: flex;\n position: relative;\n background-image: url('https://cdn.volkswagen.es/repository/app/vw-oneform/assets/images/taigo/taigo_background.png');\n background-size: cover;\n flex-direction: column;\n`;\n\nconst BlueDiv = styled.div<{ isSelected: boolean; otherIsSelected: boolean }>`\n padding: ${(props) => (props.otherIsSelected ? '5%' : '0 var(--size-grid001)')};\n position: absolute;\n left: 0;\n top: 0;\n height: 100%;\n width: 100vw;\n background-color: rgb(0, 130, 214, 0.6);\n display: flex;\n clip-path: ${(props) =>\n props.isSelected\n ? 'polygon(0 0, 100% 0, 100% 82%, 0 92%)'\n : props.otherIsSelected\n ? 'polygon(0 0, 100% 0, 100% 10%, 0 25%)'\n : 'polygon(0 0, 100% 0, 100% 51%, 0 50%)'};\n justify-content: ${(props) => (props.otherIsSelected ? 'flex-start' : 'center')};\n align-items: ${(props) => (props.otherIsSelected ? 'flex-start' : props.isSelected ? 'center' : 'center')};\n transition: all 0.5s ease;\n\n & h1 {\n font-size: ${(props) => (props.otherIsSelected ? '20px !important' : '')};\n }\n`;\n\nconst RedDiv = styled.div<{ isSelected: boolean; otherIsSelected: boolean }>`\n width: 100vw;\n position: absolute;\n left: 0;\n bottom: 0;\n height: 100%;\n display: flex;\n clip-path: ${(props) =>\n props.isSelected\n ? 'polygon(0 25%, 100% 10%, 100% 100%, 0 100%)'\n : props.otherIsSelected\n ? 'polygon(0 92%, 100% 82%, 100% 100%, 0 100%)'\n : 'polygon(0 50%, 100% 50%, 100% 100%, 0 100%)'};\n justify-content: ${(props) => (props.otherIsSelected ? 'flex-end' : 'center')};\n align-items: ${(props) => (props.otherIsSelected ? 'flex-end' : 'center')};\n padding: ${(props) => (props.otherIsSelected ? '5%' : '20px var(--size-grid002)')};\n transition: all 0.5s ease;\n background-color: rgb(198, 1, 1, 0.6);\n\n & h1 {\n font-size: ${(props) => (props.otherIsSelected ? '20px !important' : '')};\n }\n`;\n\nconst Body = styled.div<{ otherIsSelected: boolean; isSelected?: boolean }>`\n display: flex;\n flex-direction: column;\n gap: 8px;\n color: #ffffff;\n align-items: center;\n`;\n\nconst BodyBlue = styled(Body)`\n padding-bottom: ${(props) => (props.isSelected ? '36px' : '0')};\n padding-top: ${(props) => (props.otherIsSelected ? '44px' : '0' )};\n height: ${(props) => (props.otherIsSelected ? '100%' : props.isSelected ? '100%' : '60%' )};\n justify-content: ${(props) => (props.otherIsSelected ? 'unset' : props.isSelected ? 'center': 'unset')};\n`;\n\nconst BodyRed = styled(Body)`\n justify-content: ${(props) => (props.otherIsSelected ? 'flex-end' : props.isSelected ? 'center': 'flex-end')};\n align-items: ${(props) => (props.otherIsSelected ? 'flex-end' : 'center')};\n padding-top: ${(props) => (props.isSelected ? '28%' : '0')};\n height: ${(props) => (props.otherIsSelected ? '100%' : props.isSelected ? '100%' : '66%' )};\n`;\n\nexport function FourthSlideMobile({\n blueSelected,\n setBlueSelected,\n redSelected,\n setRedSelected,\n slideConfig,\n setSelectedJourney,\n fullPageApi,\n}: SlideProps) {\n return (\n <Div>\n <BlueDiv isSelected={blueSelected} otherIsSelected={redSelected}>\n {/* <Image /> */}\n <BodyBlue isSelected={blueSelected} otherIsSelected={redSelected}>\n {redSelected ? null : <LatinoTitleBold>{slideConfig.firstDivision.title}</LatinoTitleBold>}\n {blueSelected ? (\n <OptionsMobile\n setSelectedJourney={setSelectedJourney}\n subtitle={slideConfig.firstDivision.subtitle}\n options={slideConfig.firstDivision.options}\n ctaCopy=\"Enviar excusa\"\n preButton={slideConfig.firstDivision.preButton}\n fullPageApi={fullPageApi}\n estilo='deportivo'\n />\n ) : (\n <CTATaigo\n onClick={() => {\n setBlueSelected(true);\n setRedSelected(false);\n }}\n >\n {redSelected ? 'Entrar' : 'Atrévete…'}\n </CTATaigo>\n )}\n {redSelected ? <LatinoTitleBold>{slideConfig.firstDivision.title}</LatinoTitleBold> : null}\n </BodyBlue>\n </BlueDiv>\n <RedDiv isSelected={redSelected} otherIsSelected={blueSelected}>\n {/* <RedImage /> */}\n <BodyRed isSelected={redSelected} otherIsSelected={blueSelected}>\n <LatinoTitleBold>{slideConfig.secondDivision.title}</LatinoTitleBold>\n {redSelected ? (\n <OptionsMobile\n setSelectedJourney={setSelectedJourney}\n subtitle={slideConfig.secondDivision.subtitle}\n options={slideConfig.secondDivision.options}\n preButton={slideConfig.firstDivision.preButton}\n ctaCopy=\"Enviar excusa\"\n fullPageApi={fullPageApi}\n estilo='urbano'\n />\n ) : (\n <CTATaigo\n onClick={() => {\n setRedSelected(true);\n setBlueSelected(false);\n }}\n >\n {blueSelected ? 'Entrar' : 'Escápate ya'}\n </CTATaigo>\n )}\n </BodyRed>\n </RedDiv>\n </Div>\n );\n}\n","import React from 'react';\nimport { styled } from '@volkswagen-onehub/components-core';\nimport { \n Text, \n TextAppearance, \n TextColor,\n BreakpointWrapper,\n Breakpoints\n} from '@volkswagen-onehub/components-core';\n\nconst Div = styled.div`\n width: 100%;\n height: var(--100vh);\n background-color: #000000;\n display: flex;\n justify-content: flex-end;\n align-items: center;\n padding: 0 var(--size-grid002);\n overflow-x: hidden;\n\n @media screen and (min-width: 960px) {\n padding: 0 var(--size-grid001);\n }\n @media screen and (min-width: 1280px) {\n padding: 0 var(--size-grid002);\n }\n`;\n\nconst MaxWidthTextWrapper = styled.div`\n z-index: 2;\n width: 100%;\n max-width: 1920px;\n display: flex;\n justify-content: center;\n align-items: center;\n @media screen and (min-width: 960px) {\n justify-content: flex-end;\n }\n`;\n\nconst TextWrapper = styled.div`\n color: #ffffff;\n text-align: center;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 24px;\n text-align: left;\n\n @media screen and (min-width: 560px) {\n width: 75%;\n }\n @media screen and (min-width: 960px) {\n width: 50%;\n }\n @media screen and (min-width: 1280px) {\n gap: 32px;\n }\n @media screen and (min-width: 1600px) {\n gap: 52px;\n }\n`;\n\nconst Video = styled.video`\n width: 100%;\n height: 100%;\n position: absolute;\n object-fit: cover;\n z-index: 0;\n top: 0;\n right: 0;\n`;\n\nconst Img = styled.img`\n width: 100%;\n height: 100%;\n position: absolute;\n object-fit: cover;\n z-index: 0;\n top: 0;\n right: 0;\n`;\n\n\nconst videoURL = 'https://cdn.volkswagen.es/repository/app/vw-oneform/assets/videos/taigo.mp4';\n\nexport function SecondSlide() {\n return (\n <Div>\n <BreakpointWrapper max={Breakpoints.b560}>\n <Img src='https://cdn.volkswagen.es/repository/app/vw-oneform/assets/images/taigo/seccion2-taigo.png'/>\n </BreakpointWrapper>\n <BreakpointWrapper min={Breakpoints.b560}>\n <Video id=\"background-video\" autoPlay loop muted data-keepplaying playsinline>\n <source src={videoURL} type=\"video/mp4\" />\n </Video>\n </BreakpointWrapper>\n \n <MaxWidthTextWrapper>\n <TextWrapper className='second-slide-copies'>\n <Title/>\n <Body/>\n </TextWrapper>\n </MaxWidthTextWrapper>\n </Div>\n );\n}\n\nconst Title = () => {\n return (\n <>\n <BreakpointWrapper max={Breakpoints.b560} >\n <Text appearance={TextAppearance.headline0450} color={TextColor.inherit} >\n ¿Por qué elegir una cosa{' '}<Text bold>si puedes tenerlo todo?</Text> \n </Text>\n </BreakpointWrapper>\n \n <BreakpointWrapper min={Breakpoints.b560} max={Breakpoints.b1280}>\n <Text appearance={TextAppearance.headline0400} color={TextColor.inherit}>\n ¿Por qué elegir una cosa{' '}<Text bold>si puedes tenerlo todo?</Text> \n </Text>\n </BreakpointWrapper>\n <BreakpointWrapper min={Breakpoints.b1280} max={Breakpoints.b1920}>\n <Text appearance={TextAppearance.headline0450} color={TextColor.inherit}>\n ¿Por qué elegir una cosa{' '}<Text bold>si puedes tenerlo todo?</Text>\n </Text>\n </BreakpointWrapper>\n <BreakpointWrapper min={Breakpoints.b1920}>\n <Text appearance={TextAppearance.headline0500} color={TextColor.inherit}>\n ¿Por qué elegir una cosa{' '}<Text bold>si puedes tenerlo todo?</Text>\n </Text>\n </BreakpointWrapper> \n </>\n );\n};\n\nconst Body = () => {\n return (\n <>\n <BreakpointWrapper max={Breakpoints.b1280}>\n <Text appearance={TextAppearance.headline0300} color={TextColor.inherit}>\n Escápate para descubrir <Text bold>cómo se fabrica el nuevo Taigo</Text>, disfruta de una estancia inolvidable en Pamplona para dos personas y elige cómo quieres vivir esa experiencia.\n </Text>\n </BreakpointWrapper>\n <BreakpointWrapper min={Breakpoints.b1280} max={Breakpoints.b1600}>\n <Text appearance={TextAppearance.headline0350} color={TextColor.inherit}>\n Escápate para descubrir <Text bold>cómo se fabrica el nuevo Taigo</Text>, disfruta de una estancia inolvidable en Pamplona para dos personas y elige cómo quieres vivir esa experiencia.\n </Text>\n </BreakpointWrapper>\n <BreakpointWrapper min={Breakpoints.b1600} max={Breakpoints.b1920}>\n <Text appearance={TextAppearance.headline0300} color={TextColor.inherit}>\n Escápate para descubrir <Text bold>cómo se fabrica el nuevo Taigo</Text>, disfruta de una estancia inolvidable en Pamplona para dos personas y elige cómo quieres vivir esa experiencia.\n </Text>\n </BreakpointWrapper>\n <BreakpointWrapper min={Breakpoints.b1920} >\n <Text appearance={TextAppearance.headline0350} color={TextColor.inherit}>\n Escápate para descubrir <Text bold>cómo se fabrica el nuevo Taigo</Text>, disfruta de una estancia inolvidable en Pamplona para dos personas y elige cómo quieres vivir esa experiencia.\n </Text>\n </BreakpointWrapper> \n </>\n );\n};\n","import {\n Breakpoints,\n BreakpointWrapper,\n Container as VWContainer,\n ContainerGutter,\n ContainerWrap,\n CTA,\n List,\n ListItem,\n styled,\n Text,\n TextAppearance,\n TextColor,\n} from '@volkswagen-onehub/components-core';\nimport { Close } from '@volkswagen-onehub/icons-core';\nimport {\n CloseHandleV2,\n FocusLayerSizeV2,\n LayerManagerV2,\n ShimBackgroundTypeV2,\n} from '@volkswagen-onehub/layer-manager';\nimport React from 'react';\nimport { useStore } from 'react-redux';\nimport { LayerManagerWrapper, useFeatureAppEnvironment, useFeatureServices } from 'src/feature-app';\nimport { LatinoBlackTitle, LatinoTitleBold } from '..';\n\nconst Div = styled.div`\n width: 100%;\n height: var(--100vh);\n display: flex;\n justify-content: center;\n align-items: center;\n background-size: cover;\n`;\n\nconst Container = styled.div<{ background: string }>`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n position: relative;\n /* background-color: #000000; */\n /* background-image: ${(props) => `url(${props.background})`}; */\n width: 100%;\n height: 100%;\n color: #ffffff;\n background-size: cover;\n background-position: 20%;\n @media all and (min-width: 960px) {\n background-position: unset;\n }\n`;\n\nconst CloseDiv = styled.div`\n position: absolute;\n right: 20px;\n top: 20px;\n`;\ninterface Copy {\n number: string;\n title: string | JSX.Element;\n text: string | JSX.Element;\n background?: string;\n backgroundMob?: string;\n}\n\nconst copies: Copy[] = [\n {\n number: '01.',\n title: (\n <>\n Escápate para sentir <br />\n la adrenalina...\n </>\n ),\n text: 'Elige el camino más impredecible, al volante de un deportivo con mucho carácter.',\n background: 'https://cdn.volkswagen.es/repository/app/vw-oneform/assets/images/taigo/vw-taigo-1.png',\n backgroundMob: 'https://cdn.volkswagen.es/repository/app/vw-oneform/assets/images/taigo/vw-taigo-1-mob.png',\n },\n {\n number: '02.',\n title: (\n <>\n …o para disfrutar del <br />\n estilo más cosmopolita.\n </>\n ),\n text: 'Descubre los secretos de la ciudad con el máximo confort y lo último en tecnología.',\n background: 'https://cdn.volkswagen.es/repository/app/vw-oneform/assets/images/taigo/vw-taigo-2.png',\n backgroundMob: 'https://cdn.volkswagen.es/repository/app/vw-oneform/assets/images/taigo/vw-taigo-2-mob.png',\n },\n {\n number: '03.',\n title: 'Pero para vivirlo todo...',\n text: (\n <>\n Necesitas tenerlo todo. Y nosotros tenemos el plan e incluso la excusa para poder vivirlo.\n <br />\n <Text bold>¿En modo deportivo? </Text>Para disfrutar de la naturaleza. <Text bold>¿O urbanita? </Text>Y\n desconectar en un oasis dentro de la ciudad.\n <br />\n Tú eliges.\n </>\n ),\n background: 'https://cdn.volkswagen.es/repository/app/vw-oneform/assets/images/taigo/vw-taigo-3.png',\n backgroundMob: 'https://cdn.volkswagen.es/repository/app/vw-oneform/assets/images/taigo/vw-taigo-3-mob.png',\n },\n];\n\nconst TitleWrapper = styled.div`\n display: flex;\n flex-direction: column;\n\n gap: 12px;\n`;\n\nconst LineHeight = styled.span`\n h1 {\n line-height: 1;\n }\n`;\n\nconst TextWrapper = styled.div`\n padding-top: 12px;\n @media all and (min-width: 560px) {\n padding-top: 16px;\n width: 50%;\n }\n @media all and (min-width: 1600px) {\n padding-top: 20px;\n }\n & button span {\n color: #ffffff;\n }\n`;\n\nconst Position = styled.div`\n position: absolute;\n top: 15%;\n padding: 0 var(--size-grid001);\n @media all and (min-width: 560px) {\n padding: 0 var(--size-grid002);\n }\n`;\n\nconst BackgroundImage = styled.div<{ number: number }>`\n background-image: ${(props) =>\n props.number === 1\n ? `url(${copies[0].backgroundMob})`\n : props.number === 2\n ? `url(${copies[1].backgroundMob})`\n : `url(${copies[2].backgroundMob})`};\n width: 100%;\n height: 100%;\n background-position: center;\n background-repeat: no-repeat;\n background-size: cover;\n transition: background-image 0.5s ease-in 0s;\n z-index: 4;\n position: absolute;\n top: 0px;\n\n @media all and (min-width: 960px) {\n background-image: ${(props) =>\n props.number === 1\n ? `url(${copies[0].background})`\n : props.number === 2\n ? `url(${copies[1].background})`\n : `url(${copies[2].background})`};\n }\n`;\nconst ListWrapper = styled.div`\n ul {\n gap: 0;\n }\n`;\n\nexport const Slide = ({ copy, fullPageApi }: { copy: Copy; fullPageApi: any }) => {\n const layerManager = useFeatureServices()['layer-manager'] as LayerManagerV2;\n const store = useStore();\n const env = useFeatureAppEnvironment();\n\n const handleKoLayer = () => {\n const layer = layerManager.openFocusLayer(\n renderLayer,\n {},\n {\n size: FocusLayerSizeV2.B,\n userCloseable: true,\n shimBackgroundType: ShimBackgroundTypeV2.OPAQUE,\n disableReturnFocus: true,\n onClose: () => {\n fullPageApi.setAllowScrolling(true);\n },\n }\n );\n };\n\n const renderLayer = (state: any, close: CloseHandleV2<any, any>) => {\n return (\n <LayerManagerWrapper store={store} env={env}>\n <div id=\"scrollElement\" style={{ padding: 'var(--size-grid001)' }}>\n <VWContainer gutter={ContainerGutter.static200} wrap={ContainerWrap.always}>\n <Text bold appearance={TextAppearance.headline0200}>\n {' '}\n ¿Cómo funciona el sorteo?\n </Text>\n <Text appearance={TextAppearance.copy150}>\n {' '}\n Para participar solo tienes que seleccionar tu excusa para vivir esa experiencia: ¿modo deportivo o\n urbanita?{' '}\n </Text>\n <Text bold appearance={TextAppearance.copy150}>\n En esta experiencia disfrutarás:{' '}\n </Text>\n <Text appearance={TextAppearance.copy150}>\n <i>Si eliges el modo deportivo…</i>\n <ListWrapper>\n <List>\n <ListItem>\n Visita a la fábrica de Volkswagen en Navarra para ver cómo se fabrica el Nuevo Taigo.\n </ListItem>\n <ListItem>\n Estancia de dos días en el Alma Hotels de Pamplona en la habitación Gran Deluxe para dos personas,\n con desayuno incluido.\n </ListItem>\n <ListItem>\n Un plan aventurero que incluye una ruta ciclista guiada por los mejores parajes naturales.\n </ListItem>\n <ListItem>Una cena en el Restaurante Alma para dos personas.</ListItem>\n </List>\n </ListWrapper>\n </Text>\n <Text appearance={TextAppearance.copy150}>\n <i>Si eliges el modo urbanita…</i>\n <ListWrapper>\n <List>\n <ListItem>\n Visita a la fábrica de Volkswagen en Navarra para ver cómo se fabrica el Nuevo Taigo.\n </ListItem>\n <ListItem>\n Estancia de dos días en el Alma Hotels de Pamplona en la habitación Gran Deluxe para dos personas,\n con desayuno incluido.\n </ListItem>\n <ListItem>Acceso al spa.</ListItem>\n <ListItem>Una cena en el Restaurante Alma para dos personas.</ListItem>\n </List>\n </ListWrapper>\n </Text>\n </VWContainer>\n <CloseDiv onClick={() => close({}, {}, {})}>\n <Close />\n </CloseDiv>\n </div>\n </LayerManagerWrapper>\n );\n };\n\n return (\n <div className=\"slide\">\n <Container background={copy.background}>\n <Position>\n <TitleWrapper>\n <NumberTitle copyNumber={copy.number} />\n <LineHeight>\n <LatinoTitleBold>{copy.title}</LatinoTitleBold>\n </LineHeight>\n </TitleWrapper>\n <TextWrapper>\n <BodyCopy bodyText={copy.text} copyNumber={copy.number} />\n {copy.number === '03.' ? (\n <div style={{ paddingTop: '20px' }}>\n <CTA\n tag=\"button\"\n emphasis=\"tertiary\"\n onClick={() => {\n handleKoLayer();\n fullPageApi.setAllowScrolling(false);\n }}\n >\n ¿Y cómo participo en el sorteo?\n </CTA>\n </div>\n ) : null}\n </TextWrapper>\n </Position>\n </Container>\n </div>\n );\n};\n\nexport function ThirdSlide({ number, fullPageApi }: any) {\n return (\n <>\n <div style={{ backgroundColor: '#000000' }}>\n <Div>\n <BackgroundImage number={number} className=\"background-image\">\n {copies.map((copy: Copy) => {\n return <Slide key={copy.number} copy={copy} fullPageApi={fullPageApi} />;\n })}\n </BackgroundImage>\n </Div>\n </div>\n </>\n );\n}\ninterface PropsComponents {\n copyNumber?: string;\n bodyText?: string | JSX.Element;\n}\nconst NumberTitle = (props: PropsComponents) => {\n return (\n <>\n <BreakpointWrapper max={Breakpoints.b960}>\n <LatinoBlackTitle size=\"24px\" letterSpacing=\"0.05em\">\n {props.copyNumber}\n </LatinoBlackTitle>\n </BreakpointWrapper>\n <BreakpointWrapper min={Breakpoints.b960} max={Breakpoints.b1280}>\n <LatinoBlackTitle size=\"var(--textappearances-headline350-fontsize)\" letterSpacing=\"0.05em\">\n {props.copyNumber}\n </LatinoBlackTitle>\n </BreakpointWrapper>\n <BreakpointWrapper min={Breakpoints.b1280} max={Breakpoints.b1920}>\n <LatinoBlackTitle size=\"var(--textappearances-headline400-fontsize)\" letterSpacing=\"0.05em\">\n {props.copyNumber}\n </LatinoBlackTitle>\n </BreakpointWrapper>\n <BreakpointWrapper min={Breakpoints.b1920}>\n <LatinoBlackTitle size=\"var(--textappearances-headline450-fontsize)\" letterSpacing=\"0.05em\">\n {props.copyNumber}\n </LatinoBlackTitle>\n </BreakpointWrapper>\n </>\n );\n};\n\nconst BodyCopy = (props: PropsComponents) => {\n return (\n <>\n {props.copyNumber === '03.' ? (\n <>\n <BreakpointWrapper max={Breakpoints.b1280}>\n <Text appearance={TextAppearance.headline0200} color={TextColor.inherit}>\n {props.bodyText}\n </Text>\n </BreakpointWrapper>\n <BreakpointWrapper min={Breakpoints.b1280} max={Breakpoints.b1920}>\n <Text appearance={TextAppearance.headline0250} color={TextColor.inherit}>\n {props.bodyText}\n </Text>\n </BreakpointWrapper>\n <BreakpointWrapper min={Breakpoints.b1920}>\n <Text appearance={TextAppearance.headline0300} color={TextColor.inherit}>\n {props.bodyText}\n </Text>\n </BreakpointWrapper>\n </>\n ) : (\n <>\n <BreakpointWrapper max={Breakpoints.b1280}>\n <Text appearance={TextAppearance.headline0250} color={TextColor.inherit}>\n {props.bodyText}\n </Text>\n </BreakpointWrapper>\n <BreakpointWrapper min={Breakpoints.b1280} max={Breakpoints.b1920}>\n <Text appearance={TextAppearance.headline0300} color={TextColor.inherit}>\n {props.bodyText}\n </Text>\n </BreakpointWrapper>\n <BreakpointWrapper min={Breakpoints.b1920}>\n <Text appearance={TextAppearance.headline0350} color={TextColor.inherit}>\n {props.bodyText}\n </Text>\n </BreakpointWrapper>\n </>\n )}\n </>\n );\n};\n","import ReactFullpage from '@fullpage/react-fullpage';\nimport { styled } from '@volkswagen-onehub/components-core';\nimport $ from 'jquery';\nimport React, { useEffect, useState } from 'react';\nimport { TriggerProps } from 'src/feature-app';\nimport { VerticalLine } from 'src/components';\nimport { FirstSlide, FourthSlide, SecondSlide, ThirdSlide } from './NuevoTaigo';\n\nconst pluginWrapper = () => {\n require('./NuevoTaigo/fullpage.extensions.min'); // Optional. Required when using the \"fadingEffect\" extension.\n require('./NuevoTaigo/fullpage.scrollHorizontally.min'); // Optional. Required when using the \"fadingEffect\" extension.\n};\n\nconst Wrapper = styled.div`\n position: relative;\n`;\nconst VerticalWrapper = styled.div`\n position: absolute;\n top: calc(var(--100vh) - 100px);\n z-index: 100;\n left: 85%;\n\n @media all and (min-height: 500px) {\n left: 50%;\n }\n`;\n\n/**\n * Hay que precargar las imágenes del tercer slide para que cuando el usuario llegue ya estén cargandas y no se pierda la animación.\n * @param linkUrl\n */\nconst appendLinkToHead = (linkUrl: string) => {\n const link: HTMLLinkElement = document.createElement('link');\n link.href = linkUrl;\n link.rel = 'preload';\n link.as = 'image';\n document.getElementsByTagName('head')[0].append(link);\n};\n\nexport function LanzamientoTaigoTrigger({ setSelectedJourney }: TriggerProps) {\n const fullpageApiRef = React.useRef(null);\n const [number, setNumber] = useState(1);\n const [loadAnimation, setLoadAnimation] = useState(true);\n const [showScrollLine, setShowScrollLine] = useState(true);\n\n useEffect(() => {\n appendLinkToHead('https://cdn.volkswagen.es/repository/app/vw-oneform/assets/images/taigo/vw-taigo-1.png');\n appendLinkToHead('https://cdn.volkswagen.es/repository/app/vw-oneform/assets/images/taigo/vw-taigo-2.png');\n appendLinkToHead('https://cdn.volkswagen.es/repository/app/vw-oneform/assets/images/taigo/vw-taigo-3.png');\n appendLinkToHead('https://cdn.volkswagen.es/repository/app/vw-oneform/assets/images/taigo/vw-taigo-1-mob.png');\n appendLinkToHead('https://cdn.volkswagen.es/repository/app/vw-oneform/assets/images/taigo/vw-taigo-2-mob.png');\n appendLinkToHead('https://cdn.volkswagen.es/repository/app/vw-oneform/assets/images/taigo/vw-taigo-3-mob.png');\n }, []);\n\n return (\n <Wrapper>\n {showScrollLine ? (\n <VerticalWrapper>\n <VerticalLine />\n </VerticalWrapper>\n ) : null}\n <ReactFullpage\n licenseKey={'95970DF9-34D2421B-A197BC6D-E0690DB7'}\n scrollHorizontallyKey={'dm9sa3N3YWdlbi5lc19BOXBjMk55YjJ4c1NHOXlhWHB2Ym5SaGJHeDVkTWQ='}\n scrollingSpeed={1000}\n pluginWrapper={pluginWrapper}\n scrollHorizontally\n fitToSection={false}\n controlArrows={false}\n normalScrollElements={'#normalScrollElements'}\n onLeave={(origin, destination, direction) => {\n // Control de la animación\n if (destination.index === 0) {\n setLoadAnimation(true);\n } else {\n setLoadAnimation(false);\n }\n\n // Control del la línea del scroll\n if (destination.isLast) {\n setShowScrollLine(false);\n } else {\n setShowScrollLine(true);\n }\n }}\n onSlideLeave={(section, origin, destination, direction) => {\n if (typeof destination.index === 'number') {\n setNumber(destination.index + 1);\n }\n }}\n afterLoad={(origin, destination, direction) => {\n if (destination.index + 1 === $('#fullpage .section').length) {\n fullpageApiRef.current.setAutoScrolling(false);\n }\n\n $(document).scroll(function () {\n var last_section = $('#fullpage').find('.section').last();\n var offset = last_section.offset();\n var w = $(window);\n\n if (offset.top - w.scrollTop() > 0) {\n fullpageApiRef.current.setAutoScrolling(true);\n }\n });\n }}\n render={({ state, fullpageApi }) => {\n if (!fullpageApiRef.current) {\n fullpageApiRef.current = fullpageApi;\n }\n return (\n <ReactFullpage.Wrapper>\n <div className=\"section\">\n <FirstSlide loadAnimation={loadAnimation} />\n </div>\n <div className=\"section\">\n <SecondSlide />\n </div>\n <div className=\"section\">\n <ThirdSlide number={number} fullPageApi={fullpageApiRef.current} />\n </div>\n <div className=\"section\">\n <FourthSlide setSelectedJourney={setSelectedJourney} />\n </div>\n </ReactFullpage.Wrapper>\n );\n }}\n />\n </Wrapper>\n );\n}\n","import {\n Breakpoints,\n styled,\n Layout,\n Checkbox,\n Container,\n ContainerHorizontalAlignment,\n ContainerPadding,\n CTA,\n TextAlignment,\n TextAppearance,\n Text\n} from '@volkswagen-onehub/components-core';\nimport { LegalesFormatoLayer, LssiTkmQuestions, LastNavigation, PoliticaPrivacidad } from 'src/components';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\n\n\nconst GeneralconfirmacionWrapper = styled.div`\n padding: 72px 0 44px;\n @media all and (min-width: 960px) {\n padding: 86px 0 0;\n }\n`;\n\nconst WhiteLinkWrapper = styled.span`\n a {\n color: #ffffff;\n font-weight: bold;\n }\n`;\n\nconst InputErrorLegales = styled.p`\n position: relative;\n margin-top: 8px;\n margin-bottom: 0;\n background-color: #e4002c;\n color: white;\n width: max-content;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 14px;\n`;\n\nexport const ConfirmacionNavidad = () => {\n const dispatch = useDispatch();\n\n const [lssi, setLssi] = useState<string>(null);\n const [tmk, setTmk] = useState<string>(null);\n const [lssiError, setLssiError] = useState<boolean>(false);\n const [tmkError, setTmkError] = useState<boolean>(false);\n\n useEffect(() => {\n if (lssi) {\n const values = { lssi: lssi };\n dispatch({ type: 'UPDATE_FIELDS', payload: values });\n setLssiError(false);\n }\n if (tmk) {\n const values = { tmk: tmk };\n dispatch({ type: 'UPDATE_FIELDS', payload: values });\n setTmkError(false);\n }\n }, [lssi, tmk]);\n\n return (\n <GeneralconfirmacionWrapper>\n <Layout\n appearance={{\n [Breakpoints.default]: [\n { name: '.', columns: 2 },\n { name: 'a', columns: 20 },\n { name: '.', columns: 2 },\n ],\n [Breakpoints.b960]: [\n { name: '.', columns: 3 },\n { name: 'a', columns: 18 },\n { name: '.', columns: 3 },\n ],\n }}\n allowOverflowingContent\n >\n <LssiTkmQuestions \n setTmk={setTmk}\n tmkError={tmkError}\n setLssi={setLssi}\n lssiError={lssiError}\n title={true}\n />\n <Container\n padding={{ bottom: ContainerPadding.static500 }}\n horizontalAlign={ContainerHorizontalAlignment.flexStart}\n >\n <Text appearance={TextAppearance.copy200} textAlign={TextAlignment.left} staticSize>\n Enviando este formulario, aceptas las{' '}\n <WhiteLinkWrapper >\n <CTA\n tag=\"a\"\n href='https://cdn.volkswagen.es/repository/app/vw-oneform/assets/other/vw_navidad_2021_bbll.pdf'\n target=\"_blank\"\n emphasis=\"tertiary\"\n >\n Bases Legales\n </CTA>\n </WhiteLinkWrapper>{' '}\n de la promoción y declaras haber leído y comprendido la información sobre el{' '}\n <WhiteLinkWrapper >\n <CTA\n tag=\"a\"\n href=\"https://www.volkswagen.es/es/volkswagen-espana/datos-privacidad.html\"\n target=\"_blank\"\n emphasis=\"tertiary\"\n >\n tratamiento de tus datos personales.\n </CTA>\n </WhiteLinkWrapper>\n </Text>\n </Container>\n <LastNavigation \n tmk={tmk} \n lssi={lssi} \n setTmkError={setTmkError} \n setLssiError={setLssiError} \n loadingCopy='Enviando tu respuesta'\n />\n <LegalesFormatoLayer noPadding={false} title={true} promocion={true} showBasesLegales hrefBasesLegales='https://cdn.volkswagen.es/repository/app/vw-oneform/assets/other/vw_navidad_2021_bbll.pdf'/>\n </Layout>\n </GeneralconfirmacionWrapper>\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { InputError, TextInputExtended, Email, GeneralInputWidthWrapper } from 'src/components';\nimport { useOnlyLettersControl } from 'src/components';\nimport { styled } from '@volkswagen-onehub/components-core';\n\nconst ContentWrapper = styled.div`\n padding-bottom: 2px;\n margin-top: 4px;\n @media screen and (min-width: 960px) {\n display: flex;\n justify-content: space-between;\n flex-wrap: wrap;\n margin-top: 0;\n }\n`;\n\ninterface FriendsInfoProps {\n nameNombre: string;\n labelNombre: string;\n nameMail: string;\n labelMail: string;\n}\n\nexport const FriendsInfo = (props: FriendsInfoProps) => {\n const { nameNombre, labelMail, labelNombre, nameMail } = props;\n const { register } = useFormContext();\n const [inputValue, setInputValue] = useState('');\n const [pristine, setPristine] = useState(true);\n const { error, regExp } = useOnlyLettersControl(pristine, inputValue);\n\n const handleChange = (e: any) => {\n setInputValue(e.target.value);\n setPristine(false);\n };\n\n return (\n <ContentWrapper className='content-wrapper'>\n <GeneralInputWidthWrapper notALayer={false}>\n <TextInputExtended\n name= {nameNombre}\n label={labelNombre}\n isFloating\n innerRef={register({\n required: {\n value: true,\n message: 'Requerido',\n },\n pattern: {\n value: regExp,\n message: 'Solo se aceptan letras',\n },\n })}\n onChange={(e) => handleChange(e)}\n required\n />\n {error && <InputError className='input-error'>Solo se aceptan letras</InputError>} \n </GeneralInputWidthWrapper >\n <Email paginaConfirmacion={false} required={true} name={nameMail} label={labelMail}/>\n </ContentWrapper>\n );\n};\n","import {\n Breakpoints,\n BreakpointWrapper,\n Container,\n ContainerPadding,\n Layout,\n Text,\n TextAlignment,\n TextAppearance,\n} from '@volkswagen-onehub/components-core';\nimport React, { useEffect, useState } from 'react';\nimport { connect, useDispatch, useSelector } from 'react-redux';\nimport { useFeatureAppConfig, useTrackingManager, TrackingForm } from 'src/feature-app';\nimport { RenderController } from 'src/feature-app/Screen';\nimport { FormDataFields, FormInfo, OneFormState, Steps } from 'src/types';\n\ninterface FieldProps {\n copyBook?: string;\n cliente?: string;\n}\n\ninterface NDPSField {\n name: string;\n value: string;\n}\n\nfunction Fields(props: FieldProps) {\n\n return (\n <Layout\n appearance={{\n [Breakpoints.default]: [\n { name: '.', columns: 2 },\n { name: 'a', columns: 20 },\n { name: '.', columns: 2 },\n ],\n [Breakpoints.b960]: [\n { name: '.', columns: 3 },\n { name: 'a', columns: 18 },\n { name: '.', columns: 3 },\n ],\n }}\n >\n <div style={{ textAlign: 'left', paddingBottom: '4px', width: '100%' }}>\n <Container padding={{ top: ContainerPadding.dynamic0100 }}>\n <Text appearance={TextAppearance.copy200} textAlign={TextAlignment.left}>\n {props.copyBook} \n </Text>\n {props.cliente === 'true' ? (\n <Text appearance={TextAppearance.copy200} textAlign={TextAlignment.left}>\n ¡Mucha suerte! \n </Text>\n ) : null }\n </Container>\n </div>\n </Layout>\n );\n}\n\ninterface ThankYouProps {\n formData: FormDataFields;\n formInfo: FormInfo;\n}\n\nfunction ThankYouNavidad(props: ThankYouProps) {\n const { formData, formInfo } = useSelector((state: OneFormState) => state);\n const { formResponse } = formInfo;\n const { cliente } = formData.fields;\n\n const clienteTitle = '¡Bien hecho! Este año los Reyes tienen muchas pistas';\n const clienteBody = 'La carta ya se ha enviado con tus deseos de Navidad. Muy pronto sabrás si el deseo de conducir un ID.4 durante un fin de semana se hace realidad...';\n const NoClienteTitle = '¡Qué ilusión! Seguro que los Reyes aciertan con tu regalo';\n const NoClienteBody = 'La carta ya se ha enviado con tus deseos de Navidad. Muchas gracias por crear tu lista de deseos en Volkswagen.';\n\n const [ title, setTitle ] = useState('');\n const [ bodyCopy, setBodyCopy ] = useState('');\n\n useEffect(()=>{\n if(cliente === 'true') {\n setTitle(clienteTitle);\n setBodyCopy(clienteBody);\n } else {\n setTitle(NoClienteTitle);\n setBodyCopy(NoClienteBody);\n }\n }, [cliente]);\n\n const trackingManager = useTrackingManager();\n const dispatch = useDispatch();\n const getTrackingForm = (): TrackingForm => {\n let LeadID;\n if (formResponse && formResponse.content && formResponse.content.data && formResponse.content.data.fields) {\n const leadField: NDPSField = formResponse.content.data.fields.find(\n (field: NDPSField) => field.name === 'COD_LEAD_ID'\n );\n LeadID = leadField ? leadField.value : undefined;\n }\n return {\n LeadID,\n FormFields: undefined,\n };\n };\n\n useEffect(() => {\n dispatch({ type: 'SET_FORM_SUBMITTED', payload: true });\n\n trackingManager.trackFormSubmissionSuccessMessageLoad(\n {\n contentId: undefined,\n },\n getTrackingForm()\n );\n }, []);\n\n const renderTitle = () => {\n return (\n <>\n <BreakpointWrapper max={Breakpoints.b1600}>\n <Text appearance={TextAppearance.headline0350} textAlign={TextAlignment.left} bold>\n { title }\n </Text>\n </BreakpointWrapper>\n <BreakpointWrapper min={Breakpoints.b1600}>\n <Text appearance={TextAppearance.headline0300} textAlign={TextAlignment.left}>\n { title }\n </Text>\n </BreakpointWrapper>\n </>\n );\n };\n\n const screen: Steps = {\n title: <>{renderTitle()}</>,\n fields: <Fields copyBook={bodyCopy} cliente={cliente}/>,\n };\n return (\n <RenderController\n screenType=\"layer-screen\"\n title={screen.title}\n fields={screen.fields}\n key={555}\n avoidTrackFormStepLoad\n />\n );\n}\n\nconst mapStateToProps = (state: OneFormState) => {\n return {\n formData: state.formData.fields,\n formInfo: state.formInfo,\n };\n};\n\nconst ConnectedComponent = connect(mapStateToProps)(ThankYouNavidad);\n\nexport { ConnectedComponent as ThankYouNavidad };\n","import Axios, { AxiosResponse } from 'axios';\nimport React, { useEffect } from 'react';\nimport { Text, styled, Container, ContainerPadding, TextAppearance } from '@volkswagen-onehub/components-core';\nimport { OneElementTemplate } from 'src/feature-app/Screen';\nimport { ConfirmacionNavidad } from './ConfirmacionNavidad';\nimport {\n Email,\n PantallaNombreApellido,\n Telefono,\n YaTienesVolkswagen,\n NoCliente,\n MultipleOptionCTAs,\n DetalleMotivo,\n ContactInfoWrapper\n} from 'src/components';\nimport { FriendsInfo } from './ComponentsAndViews';\nimport { useDispatch, useStore, useSelector } from 'react-redux';\nimport { dpsSend } from 'src/bff';\nimport { getParamsForm } from 'src/feature-app/get-params-form';\nimport { FormDataGroup, FormInfo, OneFormState, Steps, MolecularResponse } from 'src/types';\nimport {\n FormController,\n removeWhiteSpace,\n useFeatureAppConfig,\n useOneFormContext,\n formatPrefix,\n} from 'src/feature-app';\nimport { ThankYouNavidad } from './ThankYouNavidad';\nimport { formatHeaders, formDataBuilder } from 'src/forms/format-fields';\nimport { addRemovedStep, getIndexInSteps, removeStep, resetStepsScreenIndex } from 'src/forms/helpers/add-remove-steps';\nimport { CTAsDisfrutarID4 } from 'src/feature-app/InputsValues';\n\nexport enum NavidadSteps {\n Cliente,\n NoCliente,\n NombreApellido,\n EnviarA,\n NoClienteContacto,\n EmailTelefono,\n MultipleChoice,\n MasInformacion,\n ImaginarExperiencia,\n Confirmacion,\n}\n\ninterface NavidadFormProps {\n updatedFormData?: Partial<FormDataGroup>;\n}\n\nexport function NavidadForm({ updatedFormData }: NavidadFormProps) {\n const { initializeForm, handleNextStep } = useOneFormContext();\n const { formData, formInfo } = useSelector((state: OneFormState) => state);\n const { screenIndex } = formInfo;\n const { cliente, multipleChoice } = formData.fields;\n const store = useStore();\n const config = useFeatureAppConfig();\n const dispatch = useDispatch();\n\n const handleStepsCliente = (cliente: string) => {\n const { steps: actualSteps, screenIndex } = store.getState().formInfo;\n let newSteps = [...steps];\n\n if (cliente === 'true') {\n newSteps = removeStep(newSteps, 'NoCliente');\n newSteps = removeStep(newSteps, 'NoClienteContacto');\n } else {\n newSteps = removeStep(newSteps, 'NombreApellido');\n newSteps = removeStep(newSteps, 'EmailTelefono');\n newSteps = removeStep(newSteps, 'MultipleChoice');\n newSteps = removeStep(newSteps, 'MasInformacion');\n newSteps = removeStep(newSteps, 'ImaginarExperiencia');\n }\n\n newSteps = resetStepsScreenIndex(newSteps);\n\n dispatch({ type: 'UPDATE_STEPS', payload: newSteps });\n dispatch({ type: 'UPDATE_LAST_STEP', payload: newSteps[newSteps.length - 1] });\n dispatch({ type: 'SET_NUMBER_OF_SCREENS', payload: newSteps.length });\n };\n\n const handleMasInformacion = (multipleChoice: string[]) => {\n const { steps: actualSteps } = store.getState().formInfo;\n\n let newSteps = [...actualSteps];\n\n if (multipleChoice.includes('Otros')) {\n const stepIndex = getIndexInSteps(newSteps, 'MasInformacion');\n\n if (stepIndex === -1) {\n newSteps = addRemovedStep(steps, actualSteps, 'MasInformacion', screenIndex);\n setTimeout(() => {\n handleNextStep();\n }, 0);\n }\n } else {\n newSteps = removeStep(newSteps, 'MasInformacion');\n }\n\n const newStepsWithIndex = resetStepsScreenIndex(newSteps);\n\n dispatch({ type: 'UPDATE_STEPS', payload: newStepsWithIndex });\n dispatch({ type: 'UPDATE_LAST_STEP', payload: newStepsWithIndex[newStepsWithIndex.length - 1] });\n dispatch({ type: 'SET_NUMBER_OF_SCREENS', payload: newStepsWithIndex.length });\n };\n\n const steps: Steps[] = [\n {\n title: (\n <>\n Ya tienes un <Text bold>Volkswagen, </Text>\n <span style={{ whiteSpace: 'nowrap' }}>\n <Text bold>¿verdad? </Text>\n <sup style={{ fontSize: '60%' }}>1</sup>\n </span>\n </>\n ),\n fields: <OneElementTemplate element={<YaTienesVolkswagen />} />,\n screenIndex: NavidadSteps.Cliente,\n name: 'Cliente',\n outputs: ['cliente'],\n outputsText: ['cliente'],\n trueOrFalseQuestion: true,\n },\n {\n title: (\n <>\n Este sorteo es <Text bold>solo para clientes Volkswagen </Text>\n </>\n ),\n fields: (\n <OneElementTemplate\n element={\n <NoCliente\n name=\"noCliente\"\n nextOnClick\n bodyCopy=\"Pero nosotros te ayudamos a compartir tus deseos con los Reyes Magos. ¿Quieres enviar tu lista de Navidad?\"\n />\n }\n />\n ),\n screenIndex: NavidadSteps.NoCliente,\n name: 'NoCliente',\n outputs: ['noCliente'],\n outputsText: ['noCliente'],\n trueOrFalseQuestion: true,\n },\n {\n title: (\n <>\n Para que los Reyes sepan lo que deseas, necesitamos saber <Text bold>quién eres</Text>\n </>\n ),\n fields: (\n <OneElementTemplate\n element={\n <div style={{ marginBottom: '2px' }}>\n <PantallaNombreApellido />\n </div>\n }\n />\n ),\n screenIndex: NavidadSteps.NombreApellido,\n name: 'NombreApellido',\n outputs: ['name', 'surname', 'secondSurname'],\n outputsText: ['name', 'surname', 'secondSurname'],\n },\n {\n title: (\n <>\n Y, <Text bold>¿a qué Reyes quieres que le enviemos tu lista de los deseos?</Text>\n </>\n ),\n fields: (\n <OneElementTemplate\n element={\n <FriendsInfo\n nameNombre=\"friendName\"\n nameMail=\"friendMail\"\n labelNombre=\"Nombre de tu familiar o amigo\"\n labelMail=\"Email de tu familiar o amigo\"\n />\n }\n />\n ),\n screenIndex: NavidadSteps.EnviarA,\n name: 'EnviarA',\n outputs: ['friendName', 'friendMail'],\n outputsText: ['friendName','/', 'friendMail'],\n },\n {\n title: (\n <>\n <Text bold>¿De parte de quién </Text>se lo hacemos llegar?\n </>\n ),\n fields: (\n <OneElementTemplate\n element={\n <FriendsInfo nameNombre=\"noClienteName\" nameMail=\"noClienteMail\" labelNombre=\"Nombre\" labelMail=\"Email\" />\n }\n />\n ),\n screenIndex: NavidadSteps.NoClienteContacto,\n name: 'NoClienteContacto',\n outputs: ['noClienteName', 'noClienteMail'],\n outputsText: ['noClienteName','/', 'noClienteMail'],\n },\n {\n title: (\n <>\n ¡Listo! <Text bold>¿Cómo podemos contactar contigo en caso de ganar el sorteo?</Text>\n </>\n ),\n fields: (\n <OneElementTemplate\n element={\n <ContactInfoWrapper>\n <Telefono paginaConfirmacion={false} required={true} />\n <Email paginaConfirmacion={false} required={true} />\n </ContactInfoWrapper>\n }\n />\n ),\n screenIndex: NavidadSteps.EmailTelefono,\n name: 'EmailTelefono',\n outputs: ['cellphone', 'email'],\n outputsText: ['cellphone', '/', 'email'],\n },\n {\n title: (\n <>\n Tenemos curiosidad, <Text bold>¿qué te atrae de disfrutar un ID.4?</Text>\n <Container padding={{ top: ContainerPadding.dynamic0100 }}>\n <Text appearance={TextAppearance.copy0200} staticSize>\n Puedes elegir dos opciones\n </Text>\n </Container>\n </>\n ),\n alternateTitle: (\n <>\n Tenemos curiosidad, <Text bold>¿qué te atrae de disfrutar un ID.4?</Text>\n </>\n ),\n fields: (\n <OneElementTemplate\n element={\n <MultipleOptionCTAs\n ctaValues={CTAsDisfrutarID4}\n name=\"multipleChoice\"\n minSelected={1}\n maxSelected={2}\n ignoreHandleClick={true}\n />\n }\n />\n ),\n screenIndex: NavidadSteps.MultipleChoice,\n name: 'MultipleChoice',\n outputs: ['multipleChoice'],\n outputsText: ['multipleChoice'],\n },\n {\n title: (\n <>\n <Text bold>¿Nos puedes detallar cuáles?</Text>\n </>\n ),\n fields: <OneElementTemplate element={<DetalleMotivo />} />,\n screenIndex: NavidadSteps.MasInformacion,\n name: 'MasInformacion',\n outputs: ['masInformacion'],\n outputsText: ['masInformacion'],\n },\n {\n title: (\n <>\n <Text bold>¿Cómo te imaginas la experiencia de conducir un ID.4?</Text>\n <Container padding={{ top: ContainerPadding.dynamic0100 }}>\n <Text appearance={TextAppearance.copy0200} staticSize>\n Estoy impaciente por ver cómo es la conducción<sup>1</sup> del nuevo ID.4, además de ....\n </Text>\n </Container>\n </>\n ),\n fields: (\n <OneElementTemplate\n element={\n <DetalleMotivo\n name=\"imaginarExperiencia\"\n hideCTA={true}\n showRecomendation={\n <>\n <sup>1</sup> Tus inquietudes son muy interesantes para personalizar tu experiencia, además de\n compartirlas en nuestra web para ayudar a otros usuarios.\n </>\n }\n />\n }\n />\n ),\n screenIndex: NavidadSteps.ImaginarExperiencia,\n name: 'ImaginarExperiencia',\n outputs: ['imaginarExperiencia'],\n outputsText: ['imaginarExperiencia'],\n },\n {\n fields: <ConfirmacionNavidad />,\n screenIndex: NavidadSteps.Confirmacion,\n name: 'Confirmacion',\n isLastStep: true,\n hidePreviousStep: true,\n },\n ];\n\n const NuevoFormData: Partial<FormDataGroup> = {\n headers: {\n DESC_BRAND: 'VW',\n DESC_VN_VO: 'VN',\n DESC_GDPR_ADAPTED: 'true',\n DESC_TOKEN: 'VW_DDB_FRM_NAVIDAD',\n DESC_ID_CAMPAIGN: '7011n000000JvfaAAC',\n DESC_FORM_DETAIL: 'Navidad 2021',\n DESC_CAMPAIGNBLOCK: 'B3 VW Emotional CRM',\n DESC_FORMOBJECTIVE: 'Concurso',\n },\n fields: {\n formName: 'adhoc-2021-navidad',\n formType: 'otherform',\n pageCategory: 'Concurso',\n ...updatedFormData?.fields,\n }, // Analítica\n };\n\n const getFormInfo = (): {\n firstStep: Steps;\n lastStep: Steps;\n stepsHistory: number[];\n numberOfScreens: number;\n newSteps?: Steps[];\n } => {\n return {\n firstStep: steps[0],\n lastStep: steps[steps.length - 1],\n stepsHistory: [0],\n numberOfScreens: steps.length,\n newSteps: null,\n };\n };\n\n const sendForm = (): Promise<boolean> => {\n const { formData, dealersInfo }: OneFormState = store.getState();\n\n const { fields, headers } = formData;\n\n return new Promise<any>(async (resolve, reject) => {\n const { tc, today, referalUrl, url, device } = getParamsForm();\n\n const data = {\n 'headers[COD_FORM_ID]': `vw-oneform-${fields.formName}`,\n 'headers[DESC_URLORIGIN]': url,\n 'headers[DESC_DEVICETYPE]': device,\n ...formatHeaders(headers),\n\n 'headers[FECHA_INSERTION_DATE]': today,\n 'headers[TC]': tc,\n\n 'fields[DESC_NAME]': fields.noClienteName ? fields.noClienteName : fields.name,\n 'fields[DESC_SURNAME_1]': fields.surname,\n 'fields[DESC_SURNAME_2]': fields.secondSurname,\n 'fields[DESC_EMAIL_ADDRESS]': removeWhiteSpace(fields.email),\n 'fields[NUM_CELLPHONE]': `${formatPrefix(fields.prefix)}${fields.cellphone}`,\n 'fields[DESC_AUXFIELD1]': fields.wishlist,\n 'fields[DESC_AUXFIELD2]': fields.cliente,\n 'fields[DESC_AUXFIELD3]': fields.friendName,\n 'fields[DESC_AUXFIELD4]': fields.friendMail,\n 'fields[DESC_AUXFIELD5]': fields.multipleChoice,\n 'fields[DESC_AUXFIELD6]': fields.masInformacion,\n 'fields[DESC_AUXFIELD7]': fields.imaginarExperiencia,\n 'fields[DESC_FORM_VERSION]': `vw-oneform-adhoc_2021_navidad-${process.env.VERSION}`,\n 'fields[DESC_LOPD]': 'PERMITE',\n 'fields[DESC_TRANF_DATA_THIRD]': 'NO INFORMADO',\n 'fields[DESC_LSSI]': fields.lssi === 'PERMITIDO' ? 'PERMITE' : 'NO PERMITE',\n 'fields[DESC_LOPD_GDPR_PERFILADO]': fields.tmk === 'PERMITIDO' ? 'PERMITE' : 'NO PERMITE',\n };\n const dataStringified = JSON.stringify(data);\n const dataParsed = JSON.parse(dataStringified);\n\n const formData = formDataBuilder(dataParsed);\n\n const response = await dpsSend(formData);\n\n if (response && response.data && response.data.content && response.data.content.code === '200') {\n dispatch({ type: 'SET_FORM_RESPONSE', payload: response.data });\n resolve(true);\n } else {\n resolve(false);\n }\n });\n };\n\n useEffect(() => {\n const { firstStep, lastStep, stepsHistory, numberOfScreens, newSteps } = getFormInfo();\n\n const NuevoFormInfo: Partial<FormInfo> = {\n formStarted: true,\n sendFormCallback: sendForm,\n fullScreen: firstStep.fullScreen ? true : false,\n lastStep,\n numberOfScreens,\n formTheme: 'inverted',\n screenIndex: firstStep.screenIndex,\n step: firstStep,\n steps: newSteps ? newSteps : steps,\n stepsHistory,\n thankYouComponent: <ThankYouNavidad />,\n };\n\n initializeForm(NuevoFormInfo, NuevoFormData);\n }, []);\n\n //activacion logica steps\n\n useEffect(() => {\n if (cliente) handleStepsCliente(cliente);\n }, [cliente]);\n\n useEffect(() => {\n if (multipleChoice) {\n handleMasInformacion(multipleChoice);\n }\n }, [multipleChoice]);\n\n return <FormController steps={steps} screenType=\"layer-screen\" />;\n}\n","import { styled } from '@volkswagen-onehub/components-core';\nimport React from 'react';\n\nconst Svg = styled.svg`\n width: 100vw;\n height: auto;\n svg{\n width: 100vw;\n }\n`;\nconst SvgWrapper = styled.div`\n`;\n\nexport const SobreMobile = () => {\n return (\n <SvgWrapper>\n <Svg width=\"559px\" height=\"2264px\" viewBox=\"0 0 559 2264\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlnsXlink=\"http://www.w3.org/1999/xlink\">\n <title>Custom Preset 2\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport const SobreDesktop = () => {\n return (\n \n \n Group 2\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\nexport const Sobre2560Desktop = () => {\n return (\n \n \n WEb DDB\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport const CircleCheck = () => {\n return (\n \n \n icon check\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import {\n Breakpoints,\n BreakpointWrapper,\n CTA,\n Layout,\n styled,\n Text,\n TextAppearance,\n ThemeProvider,\n} from '@volkswagen-onehub/components-core';\nimport { InputError } from 'src/components';\nimport React, { useState } from 'react';\nimport { TriggerProps, useFaContent } from 'src/feature-app';\nimport { NavidadForm } from 'src/forms/FormsAdhoc/NavidadForm/NavidadForm';\nimport { SobreDesktop, SobreMobile, CircleCheck, Sobre2560Desktop } from 'src/forms/FormsAdhoc/NavidadForm/assets';\nimport { Edit } from 'src/icons-core-imports';\n\nconst Content = styled.div`\n overflow: hidden;\n background-color: #001e50;\n position: relative;\n padding-top: 66px;\n\n @media all and (min-width: 960px) {\n padding-top: 114px;\n padding-bottom: 108px;\n }\n\n & > div {\n width: 100%;\n }\n`;\n\nconst BorderSection = styled.div<{ backColor: string }>`\n clip-path: polygon(25% 0%, 100% 0%, 75% 100%, 0% 100%);\n background-color: ${(props) => (props.backColor ? props.backColor : '#FFFFFF')};\n min-height: 30px;\n min-width: 44px;\n`;\n\nconst DisplayBorder = styled.div`\n display: flex;\n flex-wrap: no-wrap;\n width: fit-content;\n gap: 22px;\n transform: translateX(-33px);\n`;\nconst CenterCTA = styled.div`\n text-align: center;\n padding-bottom: 26px;\n @media all and (min-width: 960px) {\n text-align: left;\n padding-top: 32px;\n padding-bottom: 0;\n }\n @media all and (min-width: 1600px) {\n text-align: left;\n padding-top: 54px;\n }\n button {\n background-color: #00deff;\n border: none;\n font-weight: 700;\n }\n`;\n\nconst SobrePosition = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n`;\n\nconst FakeInputWrapper = styled.div`\n border: 2px solid #00deff;\n padding: 8px;\n padding-right: 12px;\n color: #ffffff;\n width: 100%;\n display: flex;\n align-items: center;\n p {\n font-size: 18px;\n line-height: 32px;\n font-weight: 700;\n margin: 0;\n }\n svg {\n height: 22px;\n width: 22px;\n }\n`;\n\nconst CheckWrapper = styled.div`\n padding-right: 14px;\n margin-right: 8px;\n height: 28px;\n svg {\n color: #00deff;\n }\n`;\n\n//Tamaños tipo y containers\n\nconst TipoDos = styled.span`\n font-size: 38px;\n line-height: 42px;\n width: 100%;\n\n @media all and (min-width: 960px) {\n font-size: 44px;\n line-height: 56px;\n }\n`;\n\nconst ContainerTitle = styled.div`\n padding-top: 54px;\n padding-bottom: 64px;\n\n @media all and (min-width: 960px) {\n padding-top: 0;\n padding-bottom: 0;\n }\n`;\n\nconst InputTitleWrapper = styled.div`\n padding-bottom: 44px;\n @media all and (min-width: 1600px) {\n padding-bottom: 56px;\n }\n @media all and (min-width: 1600px) {\n padding-bottom: 36px;\n }\n @media all and (min-width: 1920px) {\n padding-bottom: 56px;\n }\n`;\nconst BulletLine = styled.div`\n width: 20px;\n min-width: 20px;\n height: 2px;\n background-color: #ffffff;\n margin: 15px 0;\n`;\nconst ListItemWrapper = styled.div`\n display: flex;\n gap: 8px;\n padding-left: 20px;\n`;\n\nconst formatListElement = (value: string) => {\n if (!value || value === '') {\n return null;\n }\n return value;\n};\n\nexport const NavidadTrigger = (props: TriggerProps) => {\n const { setSelectedJourney, setCTALabel } = props;\n\n const [listUno, setListUno] = useState(null);\n const [listDos, setListDos] = useState(null);\n const [listTres, setListTres] = useState(null);\n const [error, setError] = useState(false);\n\n const navidadImgSrc = useFaContent()?.navidadImgSrc;\n\n const renderForm = () => {\n const wishlist = `Un fin de semana con un ID.4, ${formatListElement(listUno)}, ${formatListElement(\n listDos\n )}, ${formatListElement(listTres)}`;\n setCTALabel('Enviar la carta');\n setSelectedJourney();\n };\n\n return (\n \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \n
    \n \n \n Escribe tu carta y pide lo que más ilusión te haga. ¡El ID.4 lo ponemos nosotros! \n Escribe tu lista de deseos…\n \n \n
    \n \n \n \n \n

    Un fin de semana con un ID.4

    \n
    \n \n {\n error ? Falta añadir tus deseos, ¿vas a dejarlos? : null\n }\n \n \n
    \n
    \n\n \n
    \n
    \n \n Y ahora envíasela \n \n a los tuyos\n \n \n
    \n\n \n \n {\n if(listUno === null || listUno ==='') {\n setError(true);\n } else {\n setError(false);\n renderForm();\n } \n }}\n stretchContent\n >\n Quiero participar\n \n \n \n\n \n ¡Nosotros ya sabemos lo que quieres! Ahora díselo a tus seres queridos y participa en un sorteo\n 1 y gana:\n \n
    \n \n \n \n Una experiencia de fin de semana con un ID.4\n \n \n \n \n \n Una escapada de hotel con esa persona especial\n \n \n \n \n \n Un bono de 100€ de carga para que la energía no pare\n \n \n \n \n \n Y hacer realidad tus deseos con una tarjeta regalo de 300€ en Volkswagen Store\n \n \n
    \n
    \n\n \n \n {\n if(listUno === null || listUno ==='') {\n setError(true);\n } else {\n setError(false);\n renderForm();\n } \n }}\n >\n Quiero participar\n \n \n \n
    \n \n
    \n
    \n
    \n
    \n );\n};\n\nconst InputTextWrapper = styled.div<{error: boolean}>`\n border: ${(props)=> props.error ? '2px solid #e4002c' : '2px solid #ffffff'};\n padding: 8px;\n display: flex;\n width: 100%;\n margin-top: 30px;\n align-items: center;\n`;\n\nconst InputText = styled.input`\n border: none;\n background-color: transparent;\n all: unset;\n width: 100%;\n font-size: 18px;\n line-height: 32px;\n color: #ffffff;\n\n #placeholder {\n color: rgba(255, 255, 255, 0.46);\n }\n`;\nconst IconWrapper = styled.div`\n padding-right: 14px;\n margin-right: 8px;\n border-right: 1px solid #ffffff;\n height: 28px;\n svg {\n color: #ffffff;\n }\n`;\ninterface InputsProps {\n placeholder: string;\n setList: any;\n error?: boolean;\n}\n\nconst Inputs = (props: InputsProps) => {\n\n return (\n \n \n \n \n props.setList(e.target.value)} \n />\n \n );\n};\nconst Border = () => {\n return (\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n );\n};\n","import React from 'react';\nimport { ScreenController, useFaContent } from 'src/feature-app';\nimport { TestDriveForm, CitaVentaForm, MasInformacionForm, PresupuestoForm } from 'src/forms/Leads';\n\n//marketing code para development marketingCode=VYYXCZ2V VM4KLNV2\n\nexport function LeadInPageTrigger() {\n const faContent = useFaContent();\n\n const renderTrigger = (Controller: JSX.Element) => { \n return (\n <>\n null}\n notALayer\n formType = 'inPage'\n />\n \n );\n };\n\n switch (faContent?.lead_type) {\n case 'test-drive':\n return renderTrigger();\n case 'presupuesto':\n return renderTrigger();\n case 'mas-informacion':\n return renderTrigger();\n case 'cita':\n return renderTrigger();\n\n default:\n throw new Error('No property lead_type in FA Content.');\n }\n}\n","import {\n Breakpoints,\n BreakpointWrapper,\n Container,\n ContainerGutter,\n ContainerHorizontalAlignment,\n ContainerPadding,\n ContainerWrap,\n CTA,\n Spinner,\n styled,\n Text,\n TextAlignment,\n TextAppearance,\n} from '@volkswagen-onehub/components-core';\nimport { Alert } from 'src/icons-core-imports';\n\nimport { CloseHandleV2 } from '@volkswagen-onehub/layer-manager';\nimport React, { useEffect, useState, useCallback } from 'react';\nimport { useDispatch, useStore } from 'react-redux';\nimport { Store } from 'redux';\nimport {\n createNoDmsSlotAndAssessor,\n getFranjaAndDayFrom,\n weekDay_DayNumber_De_Month,\n useFeatureAppConfig,\n weekDay_Day_Hour,\n} from 'src/feature-app';\nimport { DealersData, DmsInfo, OneFormState, Slot, Horario, Points } from 'src/types';\nimport { config } from 'rxjs';\n\nconst Content = styled.div`\n background-color: white;\n padding: 44px 31px;\n flex: auto;\n text-align: center;\n width: 100%;\n @media screen and (min-width: 560px) {\n padding: 52px 46px;\n }\n @media screen and (min-width: 960px) {\n padding: var(--size-grid001);\n }\n`;\n\nconst CTAWrapper = styled.div`\n display: flex;\n flex-wrap: wrap;\n text-align: left;\n > div {\n text-align: left;\n }\n > button {\n @media screen and (min-width: 560px) {\n width: auto;\n }\n }\n`;\n\ninterface InvalidFormProps {\n notSavedField?: string;\n closeLayerCallback?: CloseHandleV2;\n}\n\nexport function InvalidForm(props: InvalidFormProps) {\n const { notSavedField, closeLayerCallback } = props;\n return (\n \n \n ¿Quieres conservar estos últimos cambios?\n \n \n \n Si es así, necesitamos que guardes los cambios que has hecho {notSavedField} antes de confirmar tu cita.\n \n \n {\n e.preventDefault();\n closeLayerCallback({}, {}, {});\n }}\n stretchContent\n >\n Entendido\n \n \n \n \n );\n}\n\ninterface loadingSreenProps {\n isleads?: boolean;\n copy?: string;\n}\n\nexport function LoadingScreen(props: loadingSreenProps) {\n return (\n \n \n {props.copy ? {props.copy} : Enviando tu petición}\n \n );\n}\n\ninterface KoScreenProps {\n retrySubmit: (e: any) => void;\n closeLayerCallback?: CloseHandleV2;\n title?:string;\n bodyCopy?:string;\n isLEM?: boolean;\n hideSecondCTA?: boolean;\n}\n\nexport function KoScreen(props: KoScreenProps) {\n const { retrySubmit, closeLayerCallback, title, bodyCopy, isLEM, hideSecondCTA } = props;\n\n return (\n \n \n
    \n \n
    \n \n {title? title : 'Uy, algo ha pasado'}\n \n \n \n {bodyCopy? bodyCopy : 'Por alguna razón no hemos podido recoger tus datos. ¿Lo intentamos de nuevo?'}\n \n \n \n \n {\n e.preventDefault();\n retrySubmit(e);\n closeLayerCallback({}, {}, {});\n }}\n stretchContent\n >\n Reintentar\n \n { hideSecondCTA ? null :\n isLEM ? (\n \n Ir a la web\n \n ) : (\n {\n e.preventDefault();\n closeLayerCallback({}, {}, {});\n }}\n stretchContent\n >\n Seguir navegando\n \n )\n }\n \n \n \n \n {\n e.preventDefault();\n retrySubmit(e);\n closeLayerCallback({}, {}, {});\n }}\n >\n Reintentar\n \n { hideSecondCTA ? null :\n isLEM ? (\n
    \n \n Ir a la web\n \n
    \n ) : (\n
    \n {\n e.preventDefault();\n closeLayerCallback({}, {}, {});\n }}\n >\n Seguir navegando\n \n
    \n )\n }\n
    \n
    \n \n \n \n
    \n );\n}\n\ninterface IntermitenciaDMSKoProps {\n retrySubmit: (e: any) => void;\n closeLayerCallback?: CloseHandleV2;\n}\n\nexport function IntermitenciaDMSKo(props: IntermitenciaDMSKoProps) {\n const { retrySubmit, closeLayerCallback } = props;\n const [dmsFailed, setDmsFailed] = useState(false);\n const store: Store = useStore();\n const dispatch = useDispatch();\n const config = useFeatureAppConfig();\n\n const [day, setDay] = useState(null);\n const [franjaHoraria, setFranjaHoraria] = useState(null);\n const [name, setName] = useState(null);\n const [selectedPoint, setSelectedPoint] = useState(null);\n const { horario }: { horario?: Horario } = store.getState().formData.fields;\n\n useEffect(() => {\n const { sendDmsFailed } = store.getState().formInfo;\n let { slot, dealer }: { slot?: Slot; dealer?: DealersData } = store.getState().formData.fields;\n\n setDmsFailed(sendDmsFailed);\n const { franjaHoraria } = getFranjaAndDayFrom(slot.from);\n\n setDay(weekDay_DayNumber_De_Month(slot.from));\n setFranjaHoraria(franjaHoraria.toLowerCase());\n setName(dealer.name);\n setSelectedPoint(slot);\n }, []);\n\n const handleShowSlots = useCallback((): string | null => {\n let { slot }: { slot?: Slot } = store.getState().formData.fields;\n\n const finalSlot = getFinalSlot(slot.from);\n\n return finalSlot ? finalSlot : null;\n }, []);\n\n const getFinalSlot = (from: number) => {\n const momentSlot = weekDay_Day_Hour(from);\n const capitalizedSlot = momentSlot.charAt(0).toUpperCase() + momentSlot.slice(1);\n return capitalizedSlot.replace('-', ' a las ').concat('h');\n };\n\n const createNoDmsSlot = async (e: any) => {\n let { slot, dealer }: { slot?: Slot; dealer?: DealersData } = store.getState().formData.fields;\n dealer = {\n ...dealer,\n dmsInfo: {\n ...dealer.dmsInfo,\n dmsAvailable: false,\n },\n };\n const { franjaHoraria, day } = getFranjaAndDayFrom(slot.from);\n const { slot: newSlot, assessor } = createNoDmsSlotAndAssessor(franjaHoraria, day);\n dispatch({ type: 'UPDATE_FIELDS', payload: { slot: newSlot, assessor, dealer } });\n\n retrySubmit(e);\n };\n return (\n \n \n \n No hemos podido confirmar tu cita para el{' '}\n {handleShowSlots()}\n \n \n \n ¿Quieres que {name} se ponga en contacto contigo para\n cerrar tu cita el {day} por la {franjaHoraria}?\n \n \n {\n e.preventDefault();\n await createNoDmsSlot(e);\n closeLayerCallback({}, {}, {});\n }}\n stretchContent\n >\n Consultar con mi taller\n \n {\n config.trigger === 'cita-posventa-dealer' ? null : (\n
    \n {\n e.preventDefault();\n closeLayerCallback({}, {}, {});\n }}\n stretchContent\n >\n Buscar una nueva cita\n \n
    \n )\n }\n
    \n \n \n
    \n );\n}\n","import { Suggestion } from './feature-app';\n\nexport interface OneFormState {\n formData: FormDataGroup;\n formInfo: FormInfo;\n dealersInfo: DealersInfo;\n}\n\nexport interface Preconfiguration {\n activo: number;\n activoMatch: number;\n activoOffers: boolean;\n capacidadMaletero: number[];\n carlineName: string;\n carlineCode: number;\n carlineTitle: string;\n colores: {\n interior: string;\n exterior: {\n nombre: string;\n codigo: string;\n hexadecimal: string;\n invertido: number;\n atrevido: number;\n elegante: number;\n };\n };\n configToken: string;\n etiquetaDGT: string;\n conduccion: any;\n descripcion: string;\n descuentos: { [index: string]: number };\n destacados: any;\n equipamiento: string;\n id: number;\n marketingCode: string;\n llantas: string;\n marketingLongText: string;\n marketingShortText: string;\n espacio: any;\n motorizacion: string;\n pasajeros: any;\n plazas: number;\n precio: number;\n presupuesto: any;\n prioridad: number;\n tapiceria: string;\n titular: string;\n url: string;\n visible: boolean;\n}\nexport interface RankedPreconfiguration extends Preconfiguration {\n operaciones?: any[];\n puntuacion?: number;\n puntuaciones?: number[];\n sumHighlights?: number;\n totalStyle?: number;\n affinity?: number;\n budgetOffset?: number;\n}\n\nexport const isDealerData = (suggestion: Suggestion): suggestion is DealersData => {\n if (!suggestion) return null;\n return (suggestion as DealersData).dmsInfo !== undefined;\n};\nexport interface DealersInfo {\n carlines: CarlineBase[];\n /**\n * Al momento de enviar una cita, necesitamos esta información para mapear correctamente el modelo, por lo que lo tenemos que cargar desde el principio para que esté disponible en el momento del envio.\n */\n citaCarlines: CarlineBase[];\n dealers: DealersData[];\n selectedCarline: CarlineBase;\n installations: Installation[];\n points: Points[];\n favouriteDealer: DealersData;\n /**\n * Lo necesitamos en el caso de Cita Posventa Dealer, si el usuario tiene una concesión favorita la puede sobreescribir y debe tener prioridad la que viene por la url;\n */\n urlDealer: DealersData;\n selectedDealer: DealersData;\n selectedInstallation: Installation;\n dealersOrInstallationsMode: DealersOrInstallationsMode;\n oferta: Offer;\n salesGroup: SalesGroupInfo;\n match: RankedPreconfiguration;\n}\n\nexport type DealersOrInstallationsMode = 'dealers' | 'installations';\nexport interface InstallationResponse {\n content: { attributes: DomainAttributesValues[] }[];\n}\n\nexport interface FormDataGroup {\n fields: FormDataFields;\n headers: FormDataHeaders;\n flags?: FormDataFlags;\n}\n\nexport type Horario = 'before' | 'morning' | 'evening' | 'afternon';\nexport interface FormDataFields {\n name?: string;\n horario?: Horario;\n slot?: Slot;\n [key: string]: any;\n dealer?: any;\n}\n\nexport interface FormDataHeaders {\n [key: string]: any;\n}\nexport interface FormDataFlags {\n [key: string]: string;\n}\n\nexport interface FormInfo {\n /**\n * Flag necesario para que se dispare el journey con un dealer preseleccionado desde la url. En la primera carga omitimos la localización y el horario, pero en caso de que el\n * usuario vuelva hacia atrás el journey debe seguir siendo siempre el mismo.\n */\n firstMapLoad?: boolean;\n /**\n * Flag que se activa cuando se produce el primer dispatch al crear el formulario, para no mostrar el form hasta que no se inicie el mismo.\n */\n formStarted: boolean;\n /**\n * Flag que se activa al llegar al final del formulario. Es necesario en caso de edición de la cita para pasar del paso a editar a la confirmación de la cita sin volver a hacer todo el journey.\n */\n formEnded: boolean;\n /**\n * Flag en caso de que uno de los steps necesite mostrarse en fullscreen sin los botones de navegación.\n */\n formResponse?: any;\n\n /**\n * Flag para determinar el tema de color del form\n */\n formTheme?: 'main' | 'inverted';\n /**\n * Flag para determinar si el form se despliega en un layer o no\n */\n notALayer?: boolean;\n /**\n * Flag para determinar el tipo de front de un formulario: layer, encuesta o module\n */\n formType?: 'layer' | 'inPage' | 'module';\n\n /**\n * Flag para determinar si hay que alinear al centro, para forms formato full screen cuando solo hay una pantalla\n */\n alingItemsCenter?: boolean;\n /**\n * Flag que indica que el formulario ya ha terminado y se ha enviado.\n */\n formSubmitted: boolean;\n fullScreen: boolean;\n /**\n * Objeto con los parámetros necesarios para inicializar el mapa a partir de la búsqueda del suggest\n */\n geometry?: Geometry;\n /**\n * Flag para controlar si hay un error que impide que se pueda seguir avanzando y se tenga que cerrar el layer.\n */\n genericError: boolean;\n /**\n * En caso de que haya un paso final común se puede especificar para en el caso de que haya que volver hacia atrás, al usar el CTA de siguiente te rediriga a la última página.\n */\n initialZoom?: number;\n initialSteps?: Steps[];\n\n /**\n * Componente que se mostrará después de realizar el envío del formulario.\n */\n thankYouComponent: JSX.Element;\n lastStep?: Steps;\n multiSteps?: Steps[];\n multiStepScreenIndex?: number;\n /**\n * Flag para detectar si se está avanzando hacia adelante o hacia atrás (principalmente útil en los multisteps).\n */\n navigationMovingForward?: boolean;\n nextNumber?: number;\n nextStepCallback?: () => number;\n numberOfScreens: number;\n previousStepCallback?: () => void;\n screenIndex: number;\n /**\n * Flag que se activa en caso de que haya un problema con la DMS a la hora de grabar la cita.\n */\n sendDmsFailed?: boolean;\n sendFormCallback?: () => Promise;\n showFinalScreen: boolean;\n /**\n * Flag para mostrar el calendario o no al volver hacia atrás en cita posventa.\n */\n showCalendarOnLoad?: boolean;\n step: Steps;\n steps: Steps[];\n stepsHistory: number[];\n /**\n * Flag para controlar en el mapa si el usuario ha seleccionado una concesión, para mostrar directamente el calendario.\n */\n suggestionIsDealer?: boolean;\n /**\n * Flag para impedir avanzar al usuario en caso de que seleccione un resultado en las islas canarias para poder redirigir.\n */\n suggestionIsInCanaryIslands?: boolean;\n /**\n * Flag que indica si la sugerencia seleccionada es una dirección o no, para mostrar el marker de geolocalización.\n */\n suggestionIsAddress?: boolean;\n /**\n * Desactivamos el tracking en algunos journeys\n */\n trackingIsDisabled?: boolean;\n /**\n * Flag para ocultar el legal que se muestra por defecto en la pantalla de confirmación.\n */\n hideLegal?: boolean;\n /**\n * Elemento para mostrar un legal custom en la pantalla de legales.\n */\n customLegal?: JSX.Element;\n triggerExitAnimation: boolean;\n userCenter?: Center;\n userIsAuthenticated?: boolean;\n userSuggestion?: Suggestion;\n userGeoLocation?: Suggestion;\n waitForNextStep: boolean;\n\n //ocultar el close component y el previous step en steps configurados especialmente\n deleteCloseAndPrevious?: boolean;\n}\n\nexport interface Points {\n id?: number;\n type?: string;\n properties?: {\n parent_cluster_id?: number;\n cluster: boolean;\n concesionId?: string | number;\n dealer?: DealersData;\n installation?: Installation;\n cluster_id?: number;\n distanceFromCenter?: string;\n earliestSlot?: number;\n point_count?: number;\n selected?: boolean;\n };\n geometry?: {\n type?: string;\n coordinates?: [number, number];\n };\n}\n\nexport interface Center {\n lat: number;\n lng: number;\n}\n\nexport interface Steps {\n name?: string;\n component?: JSX.Element;\n fields?: JSX.Element;\n fullScreen?: boolean;\n multiStep?: boolean;\n multiStepLastScreen?: boolean;\n outputs?: string[];\n outputsText?: string[];\n outputsIsStars?: boolean;\n trueOrFalseQuestion?: boolean;\n screenIndex?: number;\n alternateTitle?: JSX.Element;\n title?: JSX.Element;\n isLastStep?: boolean;\n /**\n * Flag para controlar que se dispare el evento correcto de analítica en la primera carga del layer.\n */\n isFirstStep?: boolean;\n /**\n * Flag para ocultar si es necesario que se muestre el componente PreviousStep en el step.\n */\n hidePreviousStep?: boolean;\n /**\n * Flag para determinar si el step contiene un select con dropdown NO nativo\n */\n showOverflow?: boolean;\n}\n\nexport interface MolecularResponse {\n content: {\n status: string;\n code: string;\n message: string;\n data: object;\n };\n params: {\n fields: {\n COD_LEAD_ID: string;\n };\n headers: object;\n };\n status: {\n code: number;\n result: string;\n route: string;\n time: number;\n };\n success: boolean;\n}\n\nexport interface SalesGroupInfo {\n salesGroupId: string;\n salesGroupName: string;\n}\n\nexport interface AppadapResponse extends MolecularResponse {\n contentNDPS: { status: string; code: string; message: string; data: object };\n}\nexport interface DomainAttributesValues {\n name: DomainAttributesName;\n value: string;\n}\n\ntype DomainAttributesName =\n | 'Id'\n | 'TXT_V_Installation_Data_Name__c'\n | 'FRML_TXT_codVentaProvincia__c'\n | 'TXT_V_Location__c'\n | 'TXT_V_Address__c'\n | 'TXT_V_Postal_Code__c'\n | 'TXT_V_Installation_Code__c'\n | 'MPCK_Instalation_Type__c'\n | 'TXT_V_KVPS_code__c'\n | 'TXT_Code_Concession__c'\n | 'Longitude__c'\n | 'Latitude__c';\n\nexport interface DomainAttributes {\n attributes: DomainAttributesValues[];\n}\n\nexport interface DomainResponse {\n content: DomainAttributes[];\n params: {\n token: string;\n domain: string;\n };\n status: {\n code: string;\n result: string;\n route: string;\n time: number;\n };\n}\n\nexport interface VicciResponse {\n expandedConfiguration: {\n salesgroupKey: string;\n };\n}\n\nexport interface DealersData {\n id?: number;\n name?: string;\n kvps?: string;\n codInstalacion?: string;\n slots?: Slots;\n markerInfo?: {\n dealerInfo?: DealerInfo;\n svcLocation?: SvcLocation;\n id?: string;\n };\n dmsInfo?: DmsInfo;\n availabilityInfo?: null;\n}\nexport interface Slots {\n morning: Slot;\n afternon: Slot;\n evening: Slot;\n}\nexport interface Installation {\n Id: string;\n TXT_V_Installation_Data_Name__c: string;\n FRML_TXT_codVentaProvincia__c: string;\n TXT_V_Location__c: string;\n TXT_V_Address__c: string;\n TXT_V_Postal_Code__c: string;\n TXT_V_Installation_Code__c: string;\n MPCK_Instalation_Type__c: string;\n TXT_V_KVPS_code__c: string;\n TXT_Code_Concession__c: string;\n Longitude__c: string;\n Latitude__c: string;\n}\nexport interface Slots {\n morning: Slot;\n afternon: Slot;\n evening: Slot;\n}\n\nexport type SlotsTime = 'morning' | 'afternon' | 'evening';\n\nexport interface SvcLocation {\n latitude: number;\n longitude: number;\n}\n\nexport interface Slot {\n from: number;\n to: number;\n replacementCarServiceAvailable: boolean;\n dayMoment: { code: string; name: string };\n assessorCode: string;\n}\n\nexport interface DmsInfo {\n name?: string;\n phone?: string;\n email?: string;\n dmsAvailable: boolean;\n dealerId: {\n kvps: string;\n codInstalacion: string;\n brand: string;\n };\n replacementCarServiceAvailable: boolean;\n pickupCarServiceAvailabe: boolean;\n overhaulingServiceAvialable: boolean;\n assessors: Assessors[];\n reference: string;\n}\n\nexport interface Assessors {\n code: string;\n name: string;\n}\nexport interface DealerInfo {\n dealerId?: {\n kvps?: string;\n codInstalacion?: string;\n brand?: string;\n };\n name?: string;\n phone?: string;\n departmentCode?: string;\n contactName?: string;\n mail?: string;\n city?: string;\n province?: string;\n country?: string;\n address?: string;\n zipCode?: string;\n urls?: string[];\n}\n\nexport interface Availability {\n status: {\n route: string;\n code: number;\n result: string;\n time: number;\n };\n content: {\n dealer: DmsInfo;\n calendar: Calendar[];\n };\n}\n\nexport interface Calendar {\n date: string;\n slots: CalendarSlot[];\n}\n\nexport interface Day {\n dayNumber: string;\n dayOfTheWeek: string;\n date: string;\n disabled: boolean;\n active: boolean;\n}\n\nexport interface CalendarSlot {\n hour: string;\n assessor: string;\n from: number;\n to: number;\n replacementCarServiceAvailable: boolean;\n dayMoment: { code: string; name: string };\n assessorCode: string;\n GMT: string;\n}\n\nexport interface Survey {\n dealer?: {\n markerInfo: {};\n dmsInfo: {};\n };\n tc?: string;\n deviceType: string;\n urlOrigin: string;\n url: string;\n formId: string;\n formVersion: string;\n deepLink?: string;\n budget?: string;\n waid?: string;\n}\n\nexport interface Campaign {\n activo: number;\n salesforce: string;\n dfo: {\n ofertas: string;\n };\n}\n\nexport interface CarlineBase {\n activo: boolean;\n activoMatch: boolean;\n activoMeasurements: boolean;\n activoOffers: boolean;\n campaign: Campaign;\n capacidadMaletero: number[];\n categorias: Object;\n code: number;\n id: number;\n legalConsumos: string;\n medidas: Object;\n name: string;\n nuevo: boolean;\n precioMinimo?: number;\n precioMinimoModalidad?: string;\n precioMinimoText?: string;\n showroomURL: string;\n text: string;\n title: string;\n plazas: number;\n formularios: {\n testDrive: FormulariosFlagValue;\n presupuesto: FormulariosFlagValue;\n masInformacion: FormulariosFlagValue;\n prospect: FormulariosFlagValue;\n };\n}\n\nexport interface CarlinesWithSalesgroups extends CarlineBase {\n salesGroups?: Salesgroup[];\n}\n\nexport interface Salesgroup {\n id: number;\n code: number;\n name: string;\n year: number;\n}\n\nexport interface Offer {\n anchor: string;\n activo: number;\n carlineCode: number;\n carlineName: string;\n carlineText: string;\n carlineTitle: string;\n carlineNuevo: number;\n colores: {\n exterior: ExteriorColors;\n };\n cuota: number;\n cuotaInfo: string;\n cuotaText: string;\n cuotaTipo: string;\n cuotaFinal: string;\n dco: number;\n descripcion: string;\n equipamientos?: OfferEquipments;\n entrada: string;\n financiacionName: string;\n financiacionText: string;\n id: number;\n infoCuota: string;\n legal: string;\n marketingCode: string;\n mediaAssets: OfferMediaAssets;\n modalidad: string;\n motorizacion: string;\n motor: {\n combustible: string;\n dsg: number;\n fourMotion: number;\n tiptronic: number;\n cambio: string;\n };\n myRenting: boolean;\n ncuotas: number;\n next: boolean;\n ourRenting: boolean;\n precio: number;\n precioText: string;\n prioridad: number;\n promociones: Promociones[];\n tin: string;\n tae: string;\n}\n\nexport interface Promociones {\n name: string;\n text: string;\n descripcion: string;\n}\n\nexport interface ExteriorColors {\n nombre: string;\n codigo: string;\n hexadecimal: string;\n invertido: boolean;\n atrevido: boolean;\n elegante: boolean;\n}\nexport interface OfferEquipments {\n serie: OfferEquipment[];\n promocional: OfferEquipment[];\n destacados: OfferEquipment[];\n}\nexport interface OfferEquipment {\n equipamiento: {\n titulo: string;\n descripcion: string;\n icono: string;\n };\n}\n\nexport interface OfferMediaAssets {\n CarSideview: string;\n 'CarStage3-4': string;\n}\n\nexport type FormularioFlagType = 'testDrive' | 'presupuesto' | 'masInformacion' | 'prospect';\nexport type FormulariosFlagValue = 0 | 1;\n\nexport interface Geometry {\n lat: number;\n lng: number;\n bounds?: google.maps.LatLngBounds;\n viewport?: google.maps.LatLngBounds;\n}\n\nexport type SelectedTab = 'ubicacion' | 'horario';\n\nexport interface IdLead {\n ID?: string;\n attributes?: string;\n Id?: string;\n OwnerId?: string;\n IsDeleted?: string;\n Name?: string;\n CreatedDate?: string;\n CreatedById?: string;\n LastModifiedDate?: string;\n LastModifiedById?: string;\n SystemModstamp?: string;\n LastViewedDate?: string;\n LastReferencedDate?: string;\n Brand__c?: string;\n DESC_Dealer_Code__c?: string;\n DESC_Model__c?: string;\n ID_Person_DIM_IMP__c?: string;\n IS_Prospect__c?: string;\n Is_AfterSales__c?: string;\n Is_Company__c?: string;\n Is_lead__c?: string;\n LSSI__c?: string;\n LastCreatedDate__c?: string;\n TXT_Email__c?: string;\n TXT_Postal_Code__c?: string;\n TXT_Province__c?: string;\n Token__c?: string;\n Total__c?: string;\n Total_last_1_year__c?: string;\n Total_last_2_year__c?: string;\n Total_last_3_year__c?: string;\n Total_last_4_year__c?: string;\n VN_VO__c?: string;\n LKP_PersonAccount__c?: string;\n External_Id_Climapro__c?: string;\n NUM_COD_INTEREST_CARLINE__c?: string;\n TXT_DESC_DEALER_CODE__c?: string;\n IsQualified__c?: string;\n}\n\nexport interface IdPerson {\n Id?: string;\n IsDeleted?: string;\n Name?: string;\n TXT_2_Surname__c?: string;\n LastName?: string;\n FirstName?: string;\n Salutation?: string;\n RecordTypeId?: string;\n BillingAddress?: string;\n ShippingAddress?: string;\n PhotoUrl?: string;\n OwnerId?: string;\n CreatedDate?: string;\n CreatedById?: string;\n LastModifiedDate?: string;\n LastModifiedById?: string;\n SystemModstamp?: string;\n LastViewedDate?: string;\n LastReferencedDate?: string;\n IsPartner?: string;\n PersonContactId?: string;\n IsPersonAccount?: string;\n PersonMailingAddress?: string;\n PersonOtherAddress?: string;\n PersonHasOptedOutOfEmail?: string;\n PersonHasOptedOutOfFax?: string;\n PersonDoNotCall?: string;\n Audi__c?: string;\n Instalacion__c?: string;\n Skoda__c?: string;\n Volkswagen__c?: string;\n COD_Gender__c?: string;\n ID_Person_DIM_IMP__c?: string;\n LCV__c?: string;\n LSSI__c?: string;\n NUM_Phone_mobile__c?: string;\n Robinson__c?: string;\n TXT_Country__c?: string;\n TXT_Email__c?: string;\n TXT_Location__c?: string;\n TXT_NIF_CIF__c?: string;\n TXT_Postal_Code__c?: string;\n TXT_Province__c?: string;\n TXT_natural_legal_person__c?: string;\n FORM_Full_Address__c?: string;\n}\nexport interface IdVehicle {\n ID?: string;\n attributes?: string;\n Id?: string;\n OwnerId?: string;\n IsDeleted?: string;\n Name?: string;\n CreatedDate?: string;\n CreatedById?: string;\n LastModifiedDate?: string;\n LastModifiedById?: string;\n SystemModstamp?: string;\n LastViewedDate?: string;\n LastReferencedDate?: string;\n Affected_EA_189__c?: string;\n COD_comision__c?: string;\n CarNet__c?: string;\n TMAIMG__c?: string;\n Warranty_extension__c?: string;\n Included_mainetance__c?: string;\n DESC_car_model_salesgroup__c?: string;\n PKL_order_brand__c?: string;\n Frame__c?: string;\n Fuel__c?: string;\n Gear_type__c?: string;\n Installed_PR_packages__c?: string;\n KM_cobertura_garantia__c?: string;\n Assistance_years__c?: string;\n DESC_Model__c?: string;\n Registration__c?: string;\n Repaired_EA_189__c?: string;\n TrimLevel_Model__c?: string;\n VW_Connect__c?: string;\n Vehicle_age_yearly_reg__c?: string;\n Audi_Connect__c?: string;\n Car_power__c?: string;\n Carline_Code__c?: string;\n DAT_registration__c?: string;\n DESC_model_group__c?: string;\n IDClimapro__c?: string;\n Long_full_drive__c?: string;\n PersonAccount__c?: string;\n Salesgroup_Code__c?: string;\n Vehicle_age_monthly_reg__c?: string;\n years_warranty_coverage__c?: string;\n years_warranty_extension__c?: string;\n}\n\nexport interface IdOrder {\n ID?: string;\n attributes?: string;\n Id?: string;\n OwnerId?: string;\n IsDeleted?: string;\n Name?: string;\n CreatedDate?: string;\n CreatedById?: string;\n LastModifiedDate?: string;\n LastModifiedById?: string;\n SystemModstamp?: string;\n LastViewedDate?: string;\n LastReferencedDate?: string;\n CHK_excessive_waiting_Audi__c?: string;\n CHK_excessive_waiting_Audi_theoric__c?: string;\n CHK_excessive_waiting_LCV__c?: string;\n CHK_excessive_waiting_Skoda__c?: string;\n CHK_excessive_waiting_VW__c?: string;\n COD_Carline__c?: string;\n Instalacion_Audi__c?: string;\n Instalacion_LCV__c?: string;\n Instalacion_SK__c?: string;\n COD_comision__c?: string;\n COD_sales_type__c?: string;\n COD_salesgroup__c?: string;\n Customer_change_order__c?: string;\n VipEnviado__c?: string;\n DemoraTipo__c?: string;\n ConfirmacionRegaloEnviado__c?: string;\n EmailFollowUpEnviado__c?: string;\n CHK_contactable_universe__c?: string;\n Contactable_universe_vehicle__c?: string;\n DESC_Model__c?: string;\n DESC_Sales_VN_Type__c?: string;\n DESC_TrimLevel__c?: string;\n DESC_car_model_salesgroup__c?: string;\n DESC_excessive_waiting_Audi__c?: string;\n DESC_model_group__c?: string;\n EmailBienvenidaEnviado__c?: string;\n EmailDemoraEnviado__c?: string;\n EmailEstadoEnviado__c?: string;\n Factory__c?: string;\n Not_lineal_order__c?: string;\n Order_frame_FK__c?: string;\n PKL_order_VN_VO__c?: string;\n PKL_order_brand__c?: string;\n SLI_State__c?: string;\n Vehicle_age_monthly_ord__c?: string;\n Vehicle_age_yearly_ord__c?: string;\n COD_Customer_renting__c?: string;\n COD_Customer_type__c?: string;\n COD_Driver__c?: string;\n COD_Vehicle_climapro__c?: string;\n COD_owner_climapro__c?: string;\n Concesion__c?: string;\n Customer_type__c?: string;\n DAT_Customers_order__c?: string;\n DAT_Order__c?: string;\n DAT_delivery__c?: string;\n DAT_order_state_10__c?: string;\n DAT_order_state_20__c?: string;\n DAT_order_state_30__c?: string;\n DAT_order_state_40__c?: string;\n DAT_order_state_50__c?: string;\n DAT_order_state_60__c?: string;\n DAT_order_state_70__c?: string;\n DAT_order_state_80__c?: string;\n IDClimapro__c?: string;\n Instalacion__c?: string;\n}\n\nexport interface IdDealer {\n ID: string;\n attributes: string;\n Id: string;\n IsDeleted: string;\n MasterRecordId: string;\n Name: string;\n LastName: string;\n FirstName: string;\n Salutation: string;\n MiddleName: string;\n Suffix: string;\n Type: string;\n RecordTypeId: string;\n ParentId: string;\n BillingStreet: string;\n BillingCity: string;\n BillingState: string;\n BillingPostalCode: string;\n BillingCountry: string;\n BillingLatitude: string;\n BillingLongitude: string;\n BillingGeocodeAccuracy: string;\n BillingAddress: string;\n ShippingStreet: string;\n ShippingCity: string;\n ShippingState: string;\n ShippingPostalCode: string;\n ShippingCountry: string;\n ShippingLatitude: string;\n ShippingLongitude: string;\n ShippingGeocodeAccuracy: string;\n ShippingAddress: string;\n Phone: string;\n Fax: string;\n AccountNumber: string;\n Website: string;\n PhotoUrl: string;\n Sic: string;\n Industry: string;\n AnnualRevenue: string;\n NumberOfEmployees: string;\n Ownership: string;\n TickerSymbol: string;\n Description: string;\n Rating: string;\n Site: string;\n OwnerId: string;\n CreatedDate: string;\n CreatedById: string;\n LastModifiedDate: string;\n LastModifiedById: string;\n SystemModstamp: string;\n LastActivityDate: string;\n LastViewedDate: string;\n LastReferencedDate: string;\n IsPartner: string;\n PersonContactId: string;\n IsPersonAccount: string;\n PersonMailingStreet: string;\n PersonMailingCity: string;\n PersonMailingState: string;\n PersonMailingPostalCode: string;\n PersonMailingCountry: string;\n PersonMailingLatitude: string;\n PersonMailingLongitude: string;\n PersonMailingGeocodeAccuracy: string;\n PersonMailingAddress: string;\n PersonMobilePhone: string;\n PersonEmail: string;\n PersonTitle: string;\n PersonDepartment: string;\n PersonHasOptedOutOfEmail: string;\n PersonLastCURequestDate: string;\n PersonLastCUUpdateDate: string;\n PersonEmailBouncedReason: string;\n PersonEmailBouncedDate: string;\n Jigsaw: string;\n JigsawCompanyId: string;\n AccountSource: string;\n SicDesc: string;\n SalesforceCustomer: string;\n Active__c: string;\n Audi__c: string;\n Customer_Priority__c: string;\n Instalacion__c: string;\n NumberofLocations__c: string;\n SLAExpirationDate__c: string;\n SLASerialNumber__c: string;\n SLA__c: string;\n Skoda__c: string;\n UpsellOpportunity__c: string;\n Volkswagen__c: string;\n Dealer_Code_Vaesa__c: string;\n COD_Gender__c: string;\n ID_Person_DIM_IMP__c: string;\n LCV__c: string;\n LSSI__c: string;\n NUM_Phone_mobile__c: string;\n NUM_landline__c: string;\n PCK_Brand__c: string;\n Robinson__c: string;\n TXT_Country__c: string;\n TXT_Email__c: string;\n TXT_Location__c: string;\n TXT_NIF_CIF__c: string;\n TXT_Postal_Code__c: string;\n TXT_Province__c: string;\n TXT_natural_legal_person__c: string;\n Address_extra__c: string;\n Address_name__c: string;\n Address_number__c: string;\n Address_type__c: string;\n FORM_Full_Address__c: string;\n TXT_Code_Concession__c: string;\n TXT_Installation_Code__c: string;\n TXT_V_Code_Concession__c: string;\n TXT_V_Installation_Code__c: string;\n CHK_Lead_VN_Audi__c: string;\n CHK_Lead_VN_LCV__c: string;\n CHK_Lead_VN_SK__c: string;\n CHK_Lead_VN_VW__c: string;\n CHK_Lead_VO_Audi__c: string;\n CHK_Lead_VO_LCV__c: string;\n CHK_Lead_VO_SK__c: string;\n CHK_Lead_VO_VW__c: string;\n CHK_Prospect_VN_Audi__c: string;\n CHK_Prospect_VN_LCV__c: string;\n CHK_Prospect_VN_SK__c: string;\n CHK_Prospect_VN_VW__c: string;\n CHK_Prospect_VO_Audi__c: string;\n CHK_Prospect_VO_LCV__c: string;\n CHK_Prospect_VO_SK__c: string;\n CHK_Prospect_VO_VW__c: string;\n DAT_last_received_com_LCV__c: string;\n DAT_last_received_com_SK__c: string;\n DAT_last_received_com_VW__c: string;\n DAT_last_received_com__c: string;\n DAT_lead_vn_LCV__c: string;\n DAT_lead_vn_SK__c: string;\n DAT_lead_vn_VW__c: string;\n DAT_lead_vn__c: string;\n DAT_lead_vo_LCV__c: string;\n DAT_lead_vo_SK__c: string;\n DAT_lead_vo_VW__c: string;\n DAT_lead_vo__c: string;\n Desired_model_1_LCV__c: string;\n Desired_model_1_Skoda__c: string;\n Desired_model_1_VW__c: string;\n Desired_model_1__c: string;\n Desired_model_2_LCV__c: string;\n Desired_model_2_Skoda__c: string;\n Desired_model_2_VW__c: string;\n Desired_model_2__c: string;\n Last_comunication_campaign_LCV__c: string;\n Last_comunication_campaign_SK__c: string;\n Last_comunication_campaign_VW__c: string;\n Last_comunication_campaign__c: string;\n N_hits_last_14_days_LCV__c: string;\n N_hits_last_14_days_SK__c: string;\n N_hits_last_14_days_VW__c: string;\n N_hits_last_14_days__c: string;\n N_hits_last_21_days_LCV__c: string;\n N_hits_last_21_days_SK__c: string;\n N_hits_last_21_days_VW__c: string;\n N_hits_last_21_days__c: string;\n N_hits_last_30_days_LCV__c: string;\n N_hits_last_30_days_SK__c: string;\n N_hits_last_30_days_VW__c: string;\n N_hits_last_30_days__c: string;\n N_hits_last_7_days_LCV__c: string;\n N_hits_last_7_days_SK__c: string;\n N_hits_last_7_days_VW__c: string;\n N_hits_last_7_days__c: string;\n N_hits_last_90_days_LCV__c: string;\n N_hits_last_90_days_SK__c: string;\n N_hits_last_90_days_VW__c: string;\n N_hits_last_90_days__c: string;\n N_hits_last_year_LCV__c: string;\n N_hits_last_year_SK__c: string;\n N_hits_last_year_VW__c: string;\n N_hits_last_year__c: string;\n Pissed_off_client_LCV__c: string;\n Pissed_off_client_Skoda__c: string;\n Pissed_off_client_VW__c: string;\n Pissed_off_client__c: string;\n driver_is_official_dealer_LCV__c: string;\n driver_is_official_dealer_SK__c: string;\n driver_is_official_dealer_VW__c: string;\n driver_is_official_dealer__c: string;\n driver_vn_act_SK__c: string;\n driver_vn_act_LCV__c: string;\n driver_vn_act_VW__c: string;\n driver_vn_act__c: string;\n driver_vn_nact_LCV__c: string;\n driver_vn_nact_Sk__c: string;\n driver_vn_nact_VW__c: string;\n driver_vn_nact__c: string;\n driver_vo_act_LCV__c: string;\n driver_vo_act_SK__c: string;\n driver_vo_act_VW__c: string;\n driver_vo_act__c: string;\n driver_vo_nact_LCV__c: string;\n driver_vo_nact_SK__c: string;\n driver_vo_nact_VW__c: string;\n driver_vo_nact__c: string;\n owner_is_offical_dealer_LCV__c: string;\n owner_is_offical_dealer_SK__c: string;\n owner_is_offical_dealer_VW__c: string;\n owner_is_offical_dealer__c: string;\n owner_vn_act_LCV__c: string;\n owner_vn_act_SK__c: string;\n owner_vn_act_VW__c: string;\n owner_vn_act__c: string;\n owner_vn_nact_LCV__c: string;\n owner_vn_nact_SK__c: string;\n owner_vn_nact_VW__c: string;\n owner_vn_nact__c: string;\n owner_vo_act_LCV__c: string;\n owner_vo_act_SK__c: string;\n owner_vo_act_VW__c: string;\n owner_vo_act__c: string;\n owner_vo_nact_LCV__c: string;\n owner_vo_nact_SK__c: string;\n owner_vo_nact_VW__c: string;\n owner_vo_nact__c: string;\n COD_province__c: string;\n Manual_marker__c: string;\n TXT_V_Address__c: string;\n Afected_EA_189__c: string;\n DAT_prospect_vn_LCV__c: string;\n DAT_prospect_vn_SK__c: string;\n DAT_prospect_vn_VW__c: string;\n DAT_prospect_vn__c: string;\n DAT_prospect_vo_LCV__c: string;\n DAT_prospect_vo_SK__c: string;\n DAT_prospect_vo_VW__c: string;\n DAT_prospect_vo__c: string;\n Legal_risk_EA_189__c: string;\n Age__c: string;\n CHK_Current_Afected_EA_189__c: string;\n Document_type__c: string;\n Repaired_EA_189__c: string;\n LKP_After_Sales_manager__c: string;\n LKP_Sales_manager__c: string;\n Dealer_Code_Imaweb__c: string;\n ID_Climapro_Installation_Audi__c: string;\n ID_Climapro_Installation_LCV__c: string;\n ID_Climapro_Installation_SK__c: string;\n ID_Climapro_Installation_VW__c: string;\n Latitude__c: string;\n Longitude__c: string;\n NUM_V_Phone__c: string;\n Preferred_Installation_Aftersale_Audi__c: string;\n Preferred_Installation_Aftersale_LCV__c: string;\n Preferred_Installation_Aftersale_SK__c: string;\n Preferred_Installation_Aftersale_VW__c: string;\n Preferred_Installation_Sale_Audi__c: string;\n Preferred_Installation_Sale_LCV__c: string;\n Preferred_Installation_Sale_SK__c: string;\n Preferred_Installation_Sale_VW__c: string;\n TXT_KVPS_code__c: string;\n TXT_PV_Address__c: string;\n TXT_V_KVPS_code__c: string;\n TXT_V_Postal_Code__c: string;\n Cod_installation_Imaweb__c: string;\n FLAG_Baja__c: string;\n COD_Brand_Imaweb__c: string;\n NORM_Address_name__c: string;\n NORM_Address_number__c: string;\n NORM_Location__c: string;\n NORM_Postal_Code__c: string;\n TXT_Business_Group_CIF__c: string;\n TXT_Description_Concession__c: string;\n TXT_Email_Contact_Concession__c: string;\n TXT_Type_Concession__c: string;\n ID_Climapro_Concession__c: string;\n TXT_V_Email__c: string;\n Latitude_V__c: string;\n Longitude_V__c: string;\n TXT_V_Location__c: string;\n COD_V_province__c: string;\n Cod_V_installation_Imaweb__c: string;\n FLAG_V_Baja__c: string;\n Dealer_V_Code_Vaesa__c: string;\n ID_V_Climapro_Installation_Audi__c: string;\n ID_V_Climapro_Installation_LCV__c: string;\n ID_V_Climapro_Installation_SK__c: string;\n ID_V_Climapro_Installation_VW__c: string;\n Dealer_V_Code_Imaweb__c: string;\n TXT_Area_Manager_V__c: string;\n TXT_Email_Zone_Manager__c: string;\n External_ID_Otros__c: string;\n TXT_Activity__c: string;\n TXT_Last_Name_1_Manager__c: string;\n TXT_Surname_2_Manager__c: string;\n TXT_Area_code__c: string;\n TXT_Description_Installation__c: string;\n TXT_prior_appointment__c: string;\n TXT_Email_After_Sales_PV__c: string;\n TXT_Email_Manager__c: string;\n TXT_V_Email_more_info__c: string;\n TXT_Email_Sender__c: string;\n DATE_Home__c: string;\n DATE_Date_Last_Updated__c: string;\n CHK_Replacement_fleet__c: string;\n TXT_V_Installation_Data_Name__c: string;\n TXT_Installation_Data_Name__c: string;\n TXT_Manager_Name__c: string;\n TXT_Observations_Schedule__c: string;\n TXT_V_Observations_Schedule__c: string;\n CHK_V_Parking__c: string;\n TXT_business_name__c: string;\n TXT_V_business_name__c: string;\n Adblue_price__c: string;\n Anyo_matriculacion_otro_vehiculo__c: string;\n CHK_Audi_CAM__c: string;\n CHK_Audi_Lounge__c: string;\n CHK_Audi_Sport_Exclusive_Service__c: string;\n CHK_Audi_Sport__c: string;\n CHK_California_roof_repairing__c: string;\n CHK_Children_zone__c: string;\n CHK_Client_Shutle__c: string;\n CHK_Compressed_Natural_Gas_Charger__c: string;\n CHK_Crafter_Elevator__c: string;\n CHK_DRM__c: string;\n CHK_Delivery_Service__c: string;\n CHK_Do_Not_Contact_AU__c: string;\n CHK_Do_Not_Contact__c: string;\n CHK_Dont_send_Com__c: string;\n CHK_Elite_Body__c: string;\n CHK_Email_OFF__c: string;\n CHK_Exclusive_Service_VW__c: string;\n CHK_Exclusive_Service__c: string;\n CHK_Fast_Service__c: string;\n CHK_Free_Wifi__c: string;\n CHK_HVT_repairs__c: string;\n CHK_Handicapped__c: string;\n CHK_Integral_Body_Program__c: string;\n CHK_Is_Closed_Days__c: string;\n CHK_Oficial_Audi_Prestige_Service__c: string;\n CHK_PCI__c: string;\n CHK_Parking__c: string;\n CHK_SUM_Diff_Schedule_Vehicle_Recep__c: string;\n CHK_Service_Plus_Installation__c: string;\n CHK_TLMK__c: string;\n CHK_V_Children_zone__c: string;\n CHK_V_Exclusive_Service_VW__c: string;\n CHK_V_Free_Wifi__c: string;\n CHK_V_Handicapped__c: string;\n CHK_V_Waiting_zone__c: string;\n CHK_Waiting_zone__c: string;\n CHK_Working_Zone_Waiting_Clients__c: string;\n CHK_e_Hibrids__c: string;\n CHK_e_dealers__c: string;\n CHK_e_loaders__c: string;\n CampaignID__c: string;\n Contactable_after_sales__c: string;\n Contactable_sales__c: string;\n Customer_type__c: string;\n DATE_Date_Photo__c: string;\n DATE_End_Date_SUM__c: string;\n DATE_End_Date_Valid__c: string;\n DATE_Entry_Date__c: string;\n DATE_Ini_Date_SUM__c: string;\n DATE_Termination_Date__c: string;\n DATE_View_End_Period__c: string;\n DATE_View_Start_Period__c: string;\n DAT_Customer_registration_SLI__c: string;\n DAT_last_vehicle__c: string;\n Email_Business_Group__c: string;\n Es_Autonomo_VN__c: string;\n Es_Gran_empresa_propiedad_VN__c: string;\n Es_Pymes_propiedad_VN__c: string;\n Es_Pymes_renting_VN__c: string;\n Es_RaC_VN__c: string;\n Es_VO_no_particular__c: string;\n Es_gran_empresa_renting_VN__c: string;\n Es_indefinido_VN__c: string;\n Es_no_identificado_VN__c: string;\n Es_particular_VN__c: string;\n Es_resto_VN__c: string;\n Excesive_waiting__c: string;\n FRML_TXT_DPV__c: string;\n FRML_TXT_Image_Sign__c: string;\n Family_unit__c: string;\n FormID__c: string;\n Home_another_vehicle_brand__c: string;\n ID_External_ID__c: string;\n ID_Vehicle_EID__c: string;\n Id_Instalacion__c: string;\n Id_Propietario_PV_AU__c: string;\n Id_Propietario_PV_LCV__c: string;\n Id_Propietario_PV_SK__c: string;\n Id_Propietario_PV_VW__c: string;\n Id_Propietario_V_AU__c: string;\n Id_Propietario_V_LCV__c: string;\n Id_Propietario_V_SK__c: string;\n Id_Propietario_V_VW__c: string;\n Informat_cession_aceptance__c: string;\n Lead_vn_act__c: string;\n Lead_vn_nact__c: string;\n Lead_vo_act__c: string;\n Lead_vo_nact__c: string;\n Multivehicle__c: string;\n NUM_Bodywork_Price_Hour__c: string;\n NUM_Business_Group_Id__c: string;\n NUM_Fax_Business_Group__c: string;\n NUM_Id_Operation__c: string;\n NUM_Mechanical_Price_Hour__c: string;\n NUM_Number_Photo__c: string;\n NUM_Oil_Liter_Price__c: string;\n NUM_Phone_Business_Group__c: string;\n NUM_Substitution_vehicle__c: string;\n NUM_Work_Price__c: string;\n NUM_chassis_number__c: string;\n PCK_SUM_TIME_FRI_AFT_END__c: string;\n PCK_SUM_TIME_FRI_AFT_STA__c: string;\n PCK_SUM_TIME_FRI_MOR_END__c: string;\n PCK_SUM_TIME_FRI_MOR_STA__c: string;\n PCK_SUM_TIME_MON_THUR_AFT_END__c: string;\n PCK_SUM_TIME_MON_THUR_AFT_STA__c: string;\n PCK_SUM_TIME_MON_THUR_MOR_END__c: string;\n PCK_SUM_TIME_MON_THUR_MOR_STA__c: string;\n PCK_SUM_TIME_SAT_AFT_END__c: string;\n PCK_SUM_TIME_SAT_AFT_STA__c: string;\n PCK_SUM_TIME_SAT_MOR_END__c: string;\n PCK_SUM_TIME_SAT_MOR_STA__c: string;\n PCK_SUM_TIME_SUN_AFT_END__c: string;\n PCK_SUM_TIME_SUN_AFT_STA__c: string;\n PCK_SUM_TIME_SUN_MOR_END__c: string;\n PCK_SUM_TIME_SUN_MOR_STA__c: string;\n PCK_Social_Network__c: string;\n PCK_V_SUM_TIME_FRI_AFT_END__c: string;\n PCK_V_SUM_TIME_FRI_AFT_STA__c: string;\n PCK_V_SUM_TIME_FRI_MOR_END__c: string;\n PCK_V_SUM_TIME_FRI_MOR_STA__c: string;\n PCK_V_SUM_TIME_MON_THUR_AFT_END__c: string;\n PCK_V_SUM_TIME_MON_THUR_AFT_STA__c: string;\n PCK_V_SUM_TIME_MON_THUR_MOR_END__c: string;\n PCK_V_SUM_TIME_MON_THUR_MOR_STA__c: string;\n PCK_V_SUM_TIME_SAT_AFT_END__c: string;\n PCK_V_SUM_TIME_SAT_AFT_STA__c: string;\n PCK_V_SUM_TIME_SAT_MOR_END__c: string;\n PCK_V_SUM_TIME_SAT_MOR_STA__c: string;\n PCK_V_SUM_TIME_SUN_AFT_END__c: string;\n PCK_V_SUM_TIME_SUN_AFT_STA__c: string;\n PCK_V_SUM_TIME_SUN_MOR_END__c: string;\n PCK_V_SUM_TIME_SUN_MOR_STA__c: string;\n PCK_V_Social_Network__c: string;\n PCK_V_WIN_TIME_FRI_AFT_END__c: string;\n PCK_V_WIN_TIME_FRI_AFT_STA__c: string;\n PCK_V_WIN_TIME_FRI_MOR_END__c: string;\n PCK_V_WIN_TIME_FRI_MOR_STA__c: string;\n PCK_V_WIN_TIME_MON_THUR_AFT_END__c: string;\n PCK_V_WIN_TIME_MON_THUR_AFT_STA__c: string;\n PCK_V_WIN_TIME_MON_THUR_MOR_END__c: string;\n PCK_V_WIN_TIME_MON_THUR_MOR_STA__c: string;\n PCK_V_WIN_TIME_SAT_AFT_END__c: string;\n PCK_V_WIN_TIME_SAT_AFT_STA__c: string;\n PCK_V_WIN_TIME_SAT_MOR_END__c: string;\n PCK_V_WIN_TIME_SAT_MOR_STA__c: string;\n PCK_V_WIN_TIME_SUN_AFT_END__c: string;\n PCK_V_WIN_TIME_SUN_AFT_STA__c: string;\n PCK_V_WIN_TIME_SUN_MOR_END__c: string;\n PCK_V_WIN_TIME_SUN_MOR_STA__c: string;\n PCK_WIN_TIME_FRI_AFT_END__c: string;\n PCK_WIN_TIME_FRI_AFT_STA__c: string;\n PCK_WIN_TIME_FRI_MOR_END__c: string;\n PCK_WIN_TIME_FRI_MOR_STA__c: string;\n PCK_WIN_TIME_MON_THUR_AFT_END__c: string;\n PCK_WIN_TIME_MON_THUR_AFT_STA__c: string;\n PCK_WIN_TIME_MON_THUR_MOR_END__c: string;\n PCK_WIN_TIME_MON_THUR_MOR_STA__c: string;\n PCK_WIN_TIME_SAT_AFT_END__c: string;\n PCK_WIN_TIME_SAT_AFT_STA__c: string;\n PCK_WIN_TIME_SAT_MOR_END__c: string;\n PCK_WIN_TIME_SAT_MOR_STA__c: string;\n PCK_WIN_TIME_SUN_AFT_END__c: string;\n PCK_WIN_TIME_SUN_AFT_STA__c: string;\n PCK_WIN_TIME_SUN_MOR_END__c: string;\n PCK_WIN_TIME_SUN_MOR_STA__c: string;\n PKL_Exclusion_Motive_PV_AU__c: string;\n PKL_Exclusion_Motive_PersonAccount__c: string;\n Profession__c: string;\n Standard_contactable_universe_LCV__c: string;\n Standard_contactable_universe_Skoda__c: string;\n Standard_contactable_universe_VW__c: string;\n Standard_contactable_universe__c: string;\n TXT_Accept_Bases__c: string;\n TXT_Area_Manager_PV__c: string;\n TXT_Business_Group_Name__c: string;\n TXT_BussinesGroup__c: string;\n TXT_Comments_Exclusion__c: string;\n TXT_Context_ID__c: string;\n TXT_Contract_brand__c: string;\n TXT_DPV_Name__c: string;\n TXT_DPV_gender__c: string;\n TXT_DPV_treatment__c: string;\n TXT_Description_Validity__c: string;\n TXT_Email_Area_Manager__c: string;\n TXT_Email_CCDPV__c: string;\n TXT_Email_DPV__c: string;\n TXT_Email_DV__c: string;\n TXT_Email_Online_Appointment_PV__c: string;\n TXT_Email_Online_Appointment_V__c: string;\n TXT_Email_Zone_Manager_V__c: string;\n TXT_Facebook__c: string;\n TXT_Instagram__c: string;\n TXT_Last_Name_1_Area_Manager_PV__c: string;\n TXT_Last_Name_1_DPV__c: string;\n TXT_Last_Name_1_V__c: string;\n TXT_Last_name_2_DPV__c: string;\n TXT_Last_name_2_V__c: string;\n TXT_Manager_Name_PV__c: string;\n TXT_Name__c: string;\n TXT_Observations__c: string;\n TXT_Official_Web_PV__c: string;\n TXT_Official_Web_V__c: string;\n TXT_Position__c: string;\n TXT_Profile__c: string;\n TXT_Surname_2_Area_Manager_PV__c: string;\n TXT_Tradename_BusinessGroup__c: string;\n TXT_Tradename__c: string;\n TXT_Twitter__c: string;\n TXT_V_Facebook__c: string;\n TXT_V_Instagram__c: string;\n TXT_V_Name__c: string;\n TXT_V_Tradename__c: string;\n TXT_V_Twitter__c: string;\n TXT_V_Web__c: string;\n TXT_V_gender__c: string;\n TXT_Web__c: string;\n TXT_number_plate__c: string;\n URL_Business_Group_Website__c: string;\n Unsuscribed__c: string;\n Use_type__c: string;\n cond_is_official_dealer_LCV__c: string;\n cond_is_official_dealer_SK__c: string;\n cond_is_official_dealer_VW__c: string;\n cond_is_official_dealer__c: string;\n cond_vn_act_SK__c: string;\n prospect_vn_act__c: string;\n prospect_vn_nact__c: string;\n prospect_vo_act__c: string;\n prospect_vo_nact__c: string;\n et4ae5__HasOptedOutOfMobile__pc: string;\n et4ae5__Mobile_Country_Code__pc: string;\n IDClimapro__pc: string;\n}\n\nexport interface modelCar {\n id: number;\n name: string;\n title: string;\n brand: string;\n model: string;\n}\n\nexport type PassengersTypes = [number, number];\nexport type FuelTypes = 'Combustible' | 'EléctricoHibrido';\nexport type LuggageReturn = 'unaMaleta' | 'escapada' | 'unaSemana' | 'unMes' | 'mascota' | 'bici' | 'surf' | 'snow';\nexport type UsageReturn = 'urban' | 'interurban' | 'long' | 'allterrain';\nexport type HighlightsReturn =\n | 'atrevido'\n | 'comodo'\n | 'deportivo'\n | 'sostenible'\n | 'elegante'\n | 'seguro'\n | 'sonido'\n | 'tecnologico';\n\n// Necesario para el envío de los formularios de Match\nexport interface MatchSelectedOptions {\n budget: number;\n passengers: [number, number];\n luggage: number[];\n usage: number[];\n highlights: number[];\n fuel: FuelTypes;\n}\n\nexport interface ArgumentativeBlock {\n key: string;\n icon?: JSX.Element;\n title?: string;\n boldTitle?: string;\n bodycopy?: string;\n titleRevers?: boolean;\n}\nexport interface Color {\n 'id': number;\n 'title': string;\n 'code': string;\n 'hex': string;\n 'inverted': number;\n 'interior': number;\n 'elegante': number;\n 'atrevido': number;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n\nimport { Primitive } from '@sentry/types';\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isError(wat: unknown): boolean {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n\nfunction isBuiltin(wat: unknown, ty: string): boolean {\n return objectToString.call(wat) === `[object ${ty}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isErrorEvent(wat: unknown): boolean {\n return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMError(wat: unknown): boolean {\n return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMException(wat: unknown): boolean {\n return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isString(wat: unknown): boolean {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPrimitive(wat: unknown): wat is Primitive {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat: unknown): wat is Record {\n return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isEvent(wat: unknown): boolean {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isElement(wat: unknown): boolean {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isRegExp(wat: unknown): wat is RegExp {\n return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nexport function isThenable(wat: any): wat is PromiseLike {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isSyntheticEvent(wat: unknown): boolean {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nexport function isInstanceOf(wat: any, base: any): boolean {\n try {\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n","import { DesignTokenSizeEnum } from '../theme-provider';\nexport { DesignTokenSizeEnum as ContainerGutter };\nexport var ContainerWrap;\n(function (ContainerWrap) {\n ContainerWrap[\"never\"] = \"never\";\n ContainerWrap[\"always\"] = \"always\";\n ContainerWrap[\"auto\"] = \"auto\";\n})(ContainerWrap || (ContainerWrap = {}));\nexport { DesignTokenSizeEnum as ContainerPadding };\nexport var ContainerHorizontalAlignment;\n(function (ContainerHorizontalAlignment) {\n ContainerHorizontalAlignment[\"flexStart\"] = \"flex-start\";\n ContainerHorizontalAlignment[\"center\"] = \"center\";\n ContainerHorizontalAlignment[\"flexEnd\"] = \"flex-end\";\n ContainerHorizontalAlignment[\"spaceBetween\"] = \"space-between\";\n})(ContainerHorizontalAlignment || (ContainerHorizontalAlignment = {}));\nexport var ContainerVerticalAlignment;\n(function (ContainerVerticalAlignment) {\n ContainerVerticalAlignment[\"flexStart\"] = \"flex-start\";\n ContainerVerticalAlignment[\"center\"] = \"center\";\n ContainerVerticalAlignment[\"flexEnd\"] = \"flex-end\";\n})(ContainerVerticalAlignment || (ContainerVerticalAlignment = {}));\n","\"use strict\";\n\nvar _CSSTransition = _interopRequireDefault(require(\"./CSSTransition\"));\n\nvar _ReplaceTransition = _interopRequireDefault(require(\"./ReplaceTransition\"));\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n Transition: _Transition.default,\n TransitionGroup: _TransitionGroup.default,\n ReplaceTransition: _ReplaceTransition.default,\n CSSTransition: _CSSTransition.default\n};","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","/**\n * Copyright 2019 Google LLC. All Rights Reserved.\n *\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 *\n * Http://www.apache.org/licenses/LICENSE-2.0.\n *\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.\n */\n\nimport isEqual from \"fast-deep-equal\";\n\n/**\n * @ignore\n */\ndeclare global {\n interface Window {\n __googleMapsCallback: (e: Event) => void;\n }\n}\n\nexport const DEFAULT_ID = \"__googleMapsScriptId\";\n\ntype Libraries = (\n | \"drawing\"\n | \"geometry\"\n | \"localContext\"\n | \"places\"\n | \"visualization\"\n)[];\n\n/**\n * The Google Maps JavaScript API\n * [documentation](https://developers.google.com/maps/documentation/javascript/tutorial)\n * is the authoritative source for [[LoaderOptions]].\n/**\n * Loader options\n */\nexport interface LoaderOptions {\n /**\n * See https://developers.google.com/maps/documentation/javascript/get-api-key.\n */\n apiKey: string;\n /**\n * @deprecated See https://developers.google.com/maps/premium/overview.\n */\n channel?: string;\n /**\n * @deprecated See https://developers.google.com/maps/premium/overview, use `apiKey` instead.\n */\n client?: string;\n /**\n * In your application you can specify release channels or version numbers:\n *\n * The weekly version is specified with `version=weekly`. This version is\n * updated once per week, and is the most current.\n *\n * ```\n * const loader = Loader({apiKey, version: 'weekly'});\n * ```\n *\n * The quarterly version is specified with `version=quarterly`. This version\n * is updated once per quarter, and is the most predictable.\n *\n * ```\n * const loader = Loader({apiKey, version: 'quarterly'});\n * ```\n *\n * The version number is specified with `version=n.nn`. You can choose\n * `version=3.40`, `version=3.39`, or `version=3.38`. Version numbers are\n * updated once per quarter.\n *\n * ```\n * const loader = Loader({apiKey, version: '3.40'});\n * ```\n *\n * If you do not explicitly specify a version, you will receive the\n * weekly version by default.\n */\n version?: string;\n /**\n * The id of the script tag. Before adding a new script, the Loader will check for an existing one.\n */\n id?: string;\n /**\n * When loading the Maps JavaScript API via the URL you may optionally load\n * additional libraries through use of the libraries URL parameter. Libraries\n * are modules of code that provide additional functionality to the main Maps\n * JavaScript API but are not loaded unless you specifically request them.\n *\n * ```\n * const loader = Loader({\n * apiKey,\n * libraries: ['drawing', 'geometry', 'places', 'visualization'],\n * });\n * ```\n *\n * Set the [list of libraries](https://developers.google.com/maps/documentation/javascript/libraries) for more options.\n */\n libraries?: Libraries;\n /**\n * By default, the Maps JavaScript API uses the user's preferred language\n * setting as specified in the browser, when displaying textual information\n * such as the names for controls, copyright notices, driving directions and\n * labels on maps. In most cases, it's preferable to respect the browser\n * setting. However, if you want the Maps JavaScript API to ignore the\n * browser's language setting, you can force it to display information in a\n * particular language when loading the Maps JavaScript API code.\n *\n * For example, the following example localizes the language to Japan:\n *\n * ```\n * const loader = Loader({apiKey, language: 'ja', region: 'JP'});\n * ```\n *\n * See the [list of supported\n * languages](https://developers.google.com/maps/faq#languagesupport). Note\n * that new languages are added often, so this list may not be exhaustive.\n *\n */\n language?: string;\n /**\n * When you load the Maps JavaScript API from maps.googleapis.com it applies a\n * default bias for application behavior towards the United States. If you\n * want to alter your application to serve different map tiles or bias the\n * application (such as biasing geocoding results towards the region), you can\n * override this default behavior by adding a region parameter when loading\n * the Maps JavaScript API code.\n *\n * The region parameter accepts Unicode region subtag identifiers which\n * (generally) have a one-to-one mapping to country code Top-Level Domains\n * (ccTLDs). Most Unicode region identifiers are identical to ISO 3166-1\n * codes, with some notable exceptions. For example, Great Britain's ccTLD is\n * \"uk\" (corresponding to the domain .co.uk) while its region identifier is\n * \"GB.\"\n *\n * For example, the following example localizes the map to the United Kingdom:\n *\n * ```\n * const loader = Loader({apiKey, region: 'GB'});\n * ```\n */\n region?: string;\n /**\n * (Beta) You can add multiple Map IDs to your map using the map_ids paramenter in\n * your bootstrap request.\n */\n mapIds?: string[];\n /**\n * Use a custom url and path to load the Google Maps API script.\n */\n url?: string;\n /**\n * Use a cryptographic nonce attribute.\n */\n nonce?: string;\n /**\n * The number of script load retries.\n */\n retries?: number;\n}\n\n/**\n * [[Loader]] makes it easier to add Google Maps JavaScript API to your application\n * dynamically using\n * [Promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise).\n * It works by dynamically creating and appending a script node to the the\n * document head and wrapping the callback function so as to return a promise.\n *\n * ```\n * const loader = new Loader({\n * apiKey: \"\",\n * version: \"weekly\",\n * libraries: [\"places\"]\n * });\n *\n * loader.load().then(() => {\n * const map = new google.maps.Map(...)\n * })\n * ```\n */\nexport class Loader {\n /**\n * See [[LoaderOptions.version]]\n */\n version: string;\n /**\n * See [[LoaderOptions.apiKey]]\n */\n apiKey: string;\n /**\n * See [[LoaderOptions.channel]]\n */\n channel: string;\n /**\n * See [[LoaderOptions.client]]\n */\n client: string;\n /**\n * See [[LoaderOptions.id]]\n */\n id: string;\n /**\n * See [[LoaderOptions.libraries]]\n */\n libraries: Libraries;\n /**\n * See [[LoaderOptions.language]]\n */\n language: string;\n\n /**\n * See [[LoaderOptions.region]]\n */\n region: string;\n\n /**\n * See [[LoaderOptions.mapIds]]\n */\n mapIds: string[];\n\n /**\n * See [[LoaderOptions.nonce]]\n */\n nonce: string | null;\n\n /**\n * See [[LoaderOptions.retries]]\n */\n retries: number;\n\n /**\n * See [[LoaderOptions.url]]\n */\n url: string;\n\n private CALLBACK = \"__googleMapsCallback\";\n private callbacks: ((e: Event) => void)[] = [];\n private done = false;\n private loading = false;\n private onerrorEvent: Event;\n private static instance: Loader;\n private errors: ErrorEvent[] = [];\n\n /**\n * Creates an instance of Loader using [[LoaderOptions]]. No defaults are set\n * using this library, instead the defaults are set by the Google Maps\n * JavaScript API server.\n *\n * ```\n * const loader = Loader({apiKey, version: 'weekly', libraries: ['places']});\n * ```\n */\n constructor({\n apiKey,\n channel,\n client,\n id = DEFAULT_ID,\n libraries = [],\n language,\n region,\n version,\n mapIds,\n nonce,\n retries = 3,\n url = \"https://maps.googleapis.com/maps/api/js\",\n }: LoaderOptions) {\n this.version = version;\n this.apiKey = apiKey;\n this.channel = channel;\n this.client = client;\n this.id = id || DEFAULT_ID; // Do not allow empty string\n this.libraries = libraries;\n this.language = language;\n this.region = region;\n this.mapIds = mapIds;\n this.nonce = nonce;\n this.retries = retries;\n this.url = url;\n\n if (Loader.instance) {\n if (!isEqual(this.options, Loader.instance.options)) {\n throw new Error(\n `Loader must not be called again with different options. ${JSON.stringify(\n this.options\n )} !== ${JSON.stringify(Loader.instance.options)}`\n );\n }\n\n return Loader.instance;\n }\n\n Loader.instance = this;\n }\n\n get options(): LoaderOptions {\n return {\n version: this.version,\n apiKey: this.apiKey,\n channel: this.channel,\n client: this.client,\n id: this.id,\n libraries: this.libraries,\n language: this.language,\n region: this.region,\n mapIds: this.mapIds,\n nonce: this.nonce,\n url: this.url,\n };\n }\n\n /**\n * CreateUrl returns the Google Maps JavaScript API script url given the [[LoaderOptions]].\n *\n * @ignore\n */\n createUrl(): string {\n let url = this.url;\n\n url += `?callback=${this.CALLBACK}`;\n\n if (this.apiKey) {\n url += `&key=${this.apiKey}`;\n }\n\n if (this.channel) {\n url += `&channel=${this.channel}`;\n }\n\n if (this.client) {\n url += `&client=${this.client}`;\n }\n\n if (this.libraries.length > 0) {\n url += `&libraries=${this.libraries.join(\",\")}`;\n }\n\n if (this.language) {\n url += `&language=${this.language}`;\n }\n\n if (this.region) {\n url += `®ion=${this.region}`;\n }\n\n if (this.version) {\n url += `&v=${this.version}`;\n }\n\n if (this.mapIds) {\n url += `&map_ids=${this.mapIds.join(\",\")}`;\n }\n\n return url;\n }\n\n /**\n * Load the Google Maps JavaScript API script and return a Promise.\n */\n load(): Promise {\n return this.loadPromise();\n }\n\n /**\n * Load the Google Maps JavaScript API script and return a Promise.\n *\n * @ignore\n */\n loadPromise(): Promise {\n return new Promise((resolve, reject) => {\n this.loadCallback((err: Event) => {\n if (!err) {\n resolve();\n } else {\n reject(err);\n }\n });\n });\n }\n\n /**\n * Load the Google Maps JavaScript API script with a callback.\n */\n loadCallback(fn: (e: Event) => void): void {\n this.callbacks.push(fn);\n this.execute();\n }\n\n /**\n * Set the script on document.\n */\n private setScript(): void {\n if (document.getElementById(this.id)) {\n // TODO wrap onerror callback for cases where the script was loaded elsewhere\n this.callback();\n return;\n }\n\n const url = this.createUrl();\n const script = document.createElement(\"script\");\n script.id = this.id;\n script.type = \"text/javascript\";\n script.src = url;\n script.onerror = this.loadErrorCallback.bind(this);\n script.defer = true;\n script.async = true;\n\n if (this.nonce) {\n script.nonce = this.nonce;\n }\n\n document.head.appendChild(script);\n }\n\n deleteScript(): void {\n const script = document.getElementById(this.id);\n if (script) {\n script.remove();\n }\n }\n\n private resetIfRetryingFailed(): void {\n const possibleAttempts = this.retries + 1;\n if (this.done && !this.loading && this.errors.length >= possibleAttempts) {\n this.deleteScript();\n this.done = false;\n this.loading = false;\n this.errors = [];\n this.onerrorEvent = null;\n }\n }\n\n private loadErrorCallback(e: ErrorEvent): void {\n this.errors.push(e);\n\n if (this.errors.length <= this.retries) {\n const delay = this.errors.length * 2 ** this.errors.length;\n\n console.log(\n `Failed to load Google Maps script, retrying in ${delay} ms.`\n );\n\n setTimeout(() => {\n this.deleteScript();\n this.setScript();\n }, delay);\n } else {\n this.onerrorEvent = e;\n this.callback();\n }\n }\n\n private setCallback(): void {\n window.__googleMapsCallback = this.callback.bind(this);\n }\n\n private callback(): void {\n this.done = true;\n this.loading = false;\n\n this.callbacks.forEach((cb) => {\n cb(this.onerrorEvent);\n });\n\n this.callbacks = [];\n }\n\n private execute(): void {\n if (window.google && window.google.maps && window.google.maps.version) {\n console.warn(\n \"Google Maps already loaded outside @googlemaps/js-api-loader.\" +\n \"This may result in undesirable behavior as options and script parameters may not match.\"\n );\n this.callback();\n }\n\n this.resetIfRetryingFailed();\n if (this.done) {\n this.callback();\n } else {\n if (this.loading) {\n // do nothing but wait\n } else {\n this.loading = true;\n this.setCallback();\n this.setScript();\n }\n }\n }\n}\n","import React, { useEffect, useState } from 'react';\nimport { Loader } from '@googlemaps/js-api-loader';\nimport { getGoogleApiKey } from 'src/bff';\n\nconst libraries = ['places'];\n\nexport default function LoadScriptInstance(props: any) {\n const [isLoaded, setIsLoaded] = useState(false);\n\n const loader = new Loader({\n apiKey: getGoogleApiKey(),\n libraries: ['places'],\n language: 'es',\n });\n\n useEffect(() => {\n const useLoader = async () => {\n const load = await loader.load();\n setIsLoaded(true);\n props.onMapLoad();\n };\n useLoader();\n }, []);\n\n return isLoaded ? props.children : null;\n}\n","import * as React from 'react';\n\nconst useLatest = current => {\n const storedValue = React.useRef(current);\n React.useEffect(() => {\n storedValue.current = current;\n });\n return storedValue;\n};\n\nexport default useLatest;","import * as React from 'react';\nimport useLatest from '@react-hook/latest';\nexport const useDebounceCallback = (callback, wait = 100, leading = false) => {\n const storedCallback = useLatest(callback);\n const timeout = React.useRef();\n const deps = [wait, leading, storedCallback]; // Cleans up pending timeouts when the deps change\n\n function _ref() {\n timeout.current && clearTimeout(timeout.current);\n timeout.current = void 0;\n }\n\n React.useEffect(() => _ref, deps);\n\n function _ref2() {\n timeout.current = void 0;\n }\n\n return React.useCallback(function () {\n // eslint-disable-next-line prefer-rest-params\n const args = arguments;\n const {\n current\n } = timeout; // Calls on leading edge\n\n if (current === void 0 && leading) {\n timeout.current = setTimeout(_ref2, wait); // eslint-disable-next-line prefer-spread\n\n return storedCallback.current.apply(null, args);\n } // Clear the timeout every call and start waiting again\n\n\n current && clearTimeout(current); // Waits for `wait` before invoking the callback\n\n timeout.current = setTimeout(() => {\n timeout.current = void 0;\n storedCallback.current.apply(null, args);\n }, wait);\n }, deps);\n};\nexport const useDebounce = (initialState, wait, leading) => {\n const state = React.useState(initialState);\n return [state[0], useDebounceCallback(state[1], wait, leading)];\n};","import React from 'react';\nconst usePassiveLayoutEffect = React[typeof document !== 'undefined' && document.createElement !== void 0 ? 'useLayoutEffect' : 'useEffect'];\nexport default usePassiveLayoutEffect;","import * as React from 'react';\nimport useLayoutEffect from '@react-hook/passive-layout-effect';\n\nfunction useEvent(target, type, listener, cleanup) {\n const storedListener = React.useRef(listener);\n const storedCleanup = React.useRef(cleanup);\n useLayoutEffect(() => {\n storedListener.current = listener;\n storedCleanup.current = cleanup;\n });\n useLayoutEffect(() => {\n const targetEl = target && 'current' in target ? target.current : target;\n if (!targetEl) return;\n let didUnsubscribe = 0;\n\n function listener(...args) {\n if (didUnsubscribe) return;\n storedListener.current.apply(this, args);\n }\n\n targetEl.addEventListener(type, listener);\n const cleanup = storedCleanup.current;\n return () => {\n didUnsubscribe = 1;\n targetEl.removeEventListener(type, listener);\n cleanup && cleanup();\n }; // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [target, type]);\n}\n\nexport default useEvent;","import { useDebounce } from '@react-hook/debounce';\nimport useEvent from '@react-hook/event';\nconst emptyObj = {};\nconst win = typeof window === 'undefined' ? null : window;\n\nconst getSize = () => [document.documentElement.clientWidth, document.documentElement.clientHeight];\n\nexport const useWindowSize = (options = emptyObj) => {\n const {\n wait,\n leading,\n initialWidth = 0,\n initialHeight = 0\n } = options;\n const [size, setDebouncedSize] = useDebounce(\n /* istanbul ignore next */\n typeof document === 'undefined' ? [initialWidth, initialHeight] : getSize, wait, leading);\n\n const setSize = () => setDebouncedSize(getSize);\n\n useEvent(win, 'resize', setSize);\n useEvent(win, 'orientationchange', setSize);\n return size;\n};\nexport const useWindowHeight = options => useWindowSize(options)[1];\nexport const useWindowWidth = options => useWindowSize(options)[0];","module.exports = __WEBPACK_EXTERNAL_MODULE__57__;","// setPrototypeOf in constructors (see below) fixes prototype chain: https://goo.gl/0YcFxB\nimport setPrototypeOf from 'setprototypeof';\nexport class ServiceError extends Error {\n constructor(status, service, message, response) {\n super(message);\n setPrototypeOf(this, ServiceError.prototype);\n this.status = status;\n this.service = service;\n this.response = response;\n }\n}\nexport class ServiceTimeoutError extends ServiceError {\n constructor(service, message) {\n super(408, service, message);\n setPrototypeOf(this, ServiceTimeoutError.prototype);\n }\n}\nexport class NotFoundError extends ServiceError {\n constructor(status, service, message, response) {\n super(status, service, message, response);\n setPrototypeOf(this, NotFoundError.prototype);\n }\n}\nexport class BadGatewayError extends ServiceError {\n constructor(status, service, message, response) {\n super(status, service, message, response);\n setPrototypeOf(this, BadGatewayError.prototype);\n }\n}\nexport class DataversionInvalidError extends ServiceError {\n constructor(status, service, message) {\n super(status, service, message);\n setPrototypeOf(this, DataversionInvalidError.prototype);\n }\n}\nexport class ResponseParsingError extends ServiceError {\n constructor(status, service, message, response) {\n super(status, service, message, response);\n setPrototypeOf(this, ResponseParsingError.prototype);\n }\n}\nexport async function dataversionUpdateHandler(callApi, url, service, options) {\n try {\n return await callApi(url, service, options);\n }\n catch (error) {\n if (error instanceof NotFoundError) {\n throw new DataversionInvalidError(error.status, error.service, error.message);\n }\n throw error;\n }\n}\nexport class ConfigurationInvalidServiceError extends ServiceError {\n constructor(status, service, message) {\n super(status, service, message);\n setPrototypeOf(this, ConfigurationInvalidServiceError.prototype);\n }\n}\nexport async function configurationInvalidHandler(callApi, url, service, options) {\n try {\n return await dataversionUpdateHandler(callApi, url, service, options);\n }\n catch (error) {\n if (error instanceof ServiceError && error.status === 500) {\n // we assume it is a non-buildable configuration\n throw new ConfigurationInvalidServiceError(error.status, error.service, error.message);\n }\n throw error;\n }\n}\n","import { GooglePlace, Suggestion } from 'src/feature-app';\nimport { DealersData, isDealerData, Points, Center } from 'src/types';\nimport getDistance from 'geolib/es/getDistance';\nimport { Dispatch } from 'react';\nimport { Geometry, Installation } from 'src/types';\nimport { store } from '../App';\n\nexport const isGooglePlace = (suggestion: Suggestion): suggestion is GooglePlace => {\n if (suggestion) {\n return (suggestion as GooglePlace).isGooglePlace !== undefined;\n }\n return null;\n};\n\nconst getCanaryBounds = () => {\n const result: google.maps.LatLngBounds = new window.google.maps.LatLngBounds(null);\n const north = 29.463514;\n const east = -13.31543;\n const south = 27.425414;\n const west = -18.391113;\n const ne = new window.google.maps.LatLng(north, east);\n const sw = new window.google.maps.LatLng(south, west);\n result.extend(ne);\n result.extend(sw);\n\n return result;\n};\n\nexport const getLocationOfDealer = (suggestion: DealersData): Geometry => {\n const bounds: google.maps.LatLngBounds = new window.google.maps.LatLngBounds(null);\n let lat, lng;\n if (isDealerData(suggestion)) {\n lat = suggestion.markerInfo.svcLocation.latitude;\n lng = suggestion.markerInfo.svcLocation.longitude;\n } else {\n lat = Number((suggestion as Installation).Latitude__c);\n lng = Number((suggestion as Installation).Longitude__c);\n }\n const point: google.maps.LatLng = new window.google.maps.LatLng(lat, lng);\n bounds.extend(point);\n return {\n lat,\n lng,\n bounds: null,\n viewport: null,\n };\n};\n\nexport const getLocationOfDealerWithoutLoadInstance = (suggestion: Suggestion, maps: google.maps): Geometry => {\n const bounds: google.maps.LatLngBounds = new maps.LatLngBounds(null);\n let lat, lng;\n if (isDealerData(suggestion)) {\n lat = suggestion.markerInfo.svcLocation.latitude;\n lng = suggestion.markerInfo.svcLocation.longitude;\n } else {\n lat = Number((suggestion as Installation).Latitude__c);\n lng = Number((suggestion as Installation).Longitude__c);\n }\n const point: google.maps.LatLng = new maps.LatLng(lat, lng);\n bounds.extend(point);\n return {\n lat,\n lng,\n };\n};\n\nconst getBounds = (latlngBounds: google.maps.LatLngBounds): google.maps.LatLngBounds => {\n const result: google.maps.LatLngBounds = new window.google.maps.LatLngBounds(null);\n const north = latlngBounds.getNorthEast().lat();\n const east = latlngBounds.getNorthEast().lng();\n const south = latlngBounds.getSouthWest().lat();\n const west = latlngBounds.getSouthWest().lng();\n const ne = new window.google.maps.LatLng(north, east);\n const sw = new window.google.maps.LatLng(south, west);\n result.extend(ne);\n result.extend(sw);\n\n return result;\n};\n\nconst getGeometryFromGoogleResult = (result: any): Geometry => {\n let viewport = null;\n let bounds = null;\n if (result.geometry) {\n if (result.geometry.viewport) {\n viewport = getBounds(result.geometry.viewport);\n } else if (result.geometry.bounds) {\n bounds = getBounds(result.geometry.bounds);\n }\n\n const lat = result.geometry.location.lat();\n const lng = result.geometry.location.lng();\n\n return { lat, lng, bounds, viewport };\n } else {\n return { lat: null, lng: null };\n }\n};\n\ninterface GeocodeCache {\n suggestion: GooglePlace;\n geometry: Geometry;\n isAddress: boolean;\n isCanaryIslands: boolean;\n}\n\n// const cache: GeocodeCache[] = [];\n\nconst resultIsAddress = (result: google.maps.GeocoderResult) => {\n const addressTypes = [\n 'route',\n 'street_address',\n 'intersection',\n 'neighborhood',\n 'premise',\n 'subpremise',\n 'park',\n 'point_of_interest',\n 'establishment',\n 'tourist_attraction',\n ];\n const resultType = result.types[0];\n\n return addressTypes.includes(resultType);\n};\n\nexport const getGeocode = (suggestion: GooglePlace): Promise | Geometry => {\n // Se desactiva el cache porque da error en mobile\n // const cachedResult = cache.find(cachedResult => cachedResult.suggestion.name === suggestion.name);\n\n // if (cachedResult) {\n // console.log(cachedResult,'cache');\n // store.dispatch({ type: 'SUGGESTION_IS_ADDRESS', payload: cachedResult.isAddress });\n // store.dispatch({ type: 'SUGGESTION_IS_IN_CANARY_ISLANDS', payload: cachedResult.isCanaryIslands });\n // return new Promise((resolve)=>resolve(cachedResult.geometry));\n // }\n\n const geocode = new window.google.maps.Geocoder();\n return new Promise((resolve, reject) => {\n return geocode.geocode(\n { address: suggestion.name },\n (response: any) => {\n const result: google.maps.GeocoderResult = response[0];\n const geometry = getGeometryFromGoogleResult(result);\n const point: google.maps.LatLng = new window.google.maps.LatLng(geometry.lat, geometry.lng);\n const bounds: google.maps.LatLngBounds = getCanaryBounds();\n let isAddress: boolean;\n let isCanaryIslands: boolean;\n isAddress = resultIsAddress(result);\n isCanaryIslands = bounds.contains(point);\n\n store.dispatch({ type: 'SUGGESTION_IS_ADDRESS', payload: isAddress });\n store.dispatch({ type: 'SUGGESTION_IS_IN_CANARY_ISLANDS', payload: isCanaryIslands });\n store.dispatch({ type: 'UPDATE_USER_GEOLOCATION', payload: null });\n\n // cache.push({ suggestion, geometry, isAddress, isCanaryIslands });\n\n resolve(geometry);\n },\n () => reject('Problems with geocode')\n );\n });\n};\n\ninterface ReverseGeocodeResponse {\n formatted_address: string;\n}\n\nexport const getReverseGeocode = (latlng: {\n lat: number;\n lng: number;\n}): Promise<{ geometry: Geometry; name: string }> => {\n const geocode = new window.google.maps.Geocoder();\n\n return new Promise((resolve, reject) => {\n return geocode.geocode(\n { location: latlng },\n (response: ReverseGeocodeResponse[]) => {\n const result = response[0];\n const geometry = getGeometryFromGoogleResult(result);\n let name: string = response.length > 0 ? response[0].formatted_address : 'España'; // Se devuelve el primero porque no hay manera de filtrar el \"mejor\" resultado.\n resolve({ geometry, name });\n },\n () => reject('Problems with geocode')\n );\n });\n};\n\nexport const getLocationOfGooglePlace = async (suggestion: GooglePlace): Promise => {\n const geometry = await getGeocode(suggestion);\n return geometry;\n};\n\nexport const getDistanceFromCenter = (center: Center, point: Points) => {\n const lng = point.geometry.coordinates[0];\n const lat = point.geometry.coordinates[1];\n const distance = getDistance({ lat: center.lat, lng: center.lng }, { lat, lng }) / 1000;\n return distance.toFixed(1);\n};\n\nexport const getDistanceFromLatLngCenter = (center: google.maps.LatLng, point: Points) => {\n if (!center || !point) {\n return '0';\n }\n const lng = point.geometry.coordinates[0];\n const lat = point.geometry.coordinates[1];\n const distance = getDistance({ lat: center.lat(), lng: center.lng() }, { lat, lng }) / 1000;\n const toFixed = Math.round(distance).toString().length > 2 ? 0 : 1; // Para más de 100km devolvemos el número sin decimal.\n return distance.toFixed(toFixed);\n};\n\nexport const handleMapVariables = (\n dispatch: Dispatch,\n center: Center,\n zoom: number,\n geometry: Geometry,\n isDealer: boolean,\n suggestion: Suggestion\n) => {\n dispatch({ type: 'UPDATE_USER_CENTER', payload: { lat: center.lat, lng: center.lng } }); // Eliminar\n dispatch({ type: 'UPDATE_INITIAL_ZOOM', payload: zoom }); // Eliminar\n dispatch({ type: 'UPDATE_GEOMETRY', payload: geometry });\n dispatch({ type: 'UPDATE_SUGGESTION', payload: suggestion ? suggestion : null });\n dispatch({ type: 'SUGGESTION_IS_DEALER', payload: isDealer });\n dispatch({ type: 'UPDATE_FIELDS', payload: { location: suggestion.name } }); // No se si se usa, de momento lo dejo.\n};\n\nexport const updateMapVariables = async (dispatch: Dispatch, suggestion: Suggestion, geometryData?: Geometry) => {\n let geometry: Geometry = geometryData ? geometryData : null;\n let isDealer: boolean;\n if (!window.google || !window.google.maps) {\n return;\n }\n if (!geometryData) {\n geometry = isGooglePlace(suggestion) ? await getLocationOfGooglePlace(suggestion) : getLocationOfDealer(suggestion);\n }\n isDealer = !isGooglePlace(suggestion);\n if ((suggestion as GooglePlace).isGeoLocated) {\n dispatch({ type: 'UPDATE_USER_GEOLOCATION', payload: suggestion });\n }\n dispatch({ type: 'UPDATE_GEOMETRY', payload: geometry });\n dispatch({ type: 'UPDATE_SUGGESTION', payload: suggestion ? suggestion : null });\n dispatch({ type: 'SUGGESTION_IS_DEALER', payload: isDealer });\n};\n\nexport const removeWhiteSpace = (s: string): string => (s ? s.replace(/\\s/g, '') : s);\nexport const formatPrefix = (s: string): string => s ? s : '';\n\nexport const checkIfMorning = (slotHour: Date) => {\n const morningHour = getNormalizedDate('12:00:00');\n return slotHour <= morningHour ? true : false;\n};\n\nexport const checkIfMidDay = (slotHour: Date) => {\n const morningHour = getNormalizedDate('12:00:00');\n const eveningHour = getNormalizedDate('16:00:00');\n\n return slotHour > morningHour && slotHour <= eveningHour ? true : false;\n};\n\nexport const checkIfEvening = (slotHour: Date) => {\n const eveningHour = getNormalizedDate('16:00:00');\n return slotHour > eveningHour ? true : false;\n};\n\n/**\n * hour en formato 12:00:00\n * @param hour\n */\nexport const getNormalizedDate = (hour: string) => new Date(`1/1/1999 ${hour}`);\n","import { FormDataGroup } from 'src/types';\n\nexport const partialDataCitaConfigurador: Partial = {\n headers: { DESC_FORMOBJECTIVE: 'Cita' },\n fields: {\n formFields: { M_OBSERVATION_BRAND: 'Petición para reservar una cita en el concesionario.' },\n formularioFlag: 'prospect',\n formName: 'lead-cita-configure',\n formType: 'contact',\n pageCategory: 'Cita',\n },\n};\n","import {\n Breakpoints,\n Layout,\n styled,\n} from '@volkswagen-onehub/components-core';\nimport React from 'react';\nimport { useStore } from 'react-redux';\nimport { LastNavigation, LssiTkmQuestions, PoliticaPrivacidad } from 'src/components';\nimport { OneFormState } from 'src/types';\n\nconst GeneralconfirmacionWrapper = styled.div`\n \n`;\n\nexport const ConfirmacionLeadInPage = () => {\n const store = useStore();\n\n return (\n \n \n \n \n \n \n \n );\n};\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport React, { useState, useEffect } from 'react';\nimport { styled } from '@volkswagen-onehub/components-core';\nimport car34 from './car_3-4.png';\n\nconst SectionWrapper = styled.div`\n position: relative;\n height: 100%;\n\n @media all and (min-width: 960px) {\n height: max-content;\n min-height: calc(100vh - 164px);\n width: var(--size-grid012);\n margin-top: 0;\n }\n @media all and (min-width: 1600px) {\n min-height: calc(100vh - 180px);\n }\n`;\ninterface CarlineColorCardProps {\n color: string;\n showColorCard: boolean;\n}\nconst CarlineColorCard = styled.div`\n background-color: ${(props) =>\n !props.showColorCard ? '#FFFFFF' : props.color ? props.color : '#C0C5C6'};\n height: 100%;\n z-index: -2;\n position: absolute;\n top: 0;\n width: 100vw;\n @media all and (min-width: 960px) {\n right: 0;\n width: var(--size-grid009);\n height: max-content;\n min-height: calc(100vh - 164px);\n }\n @media all and (min-width: 1600px) {\n right: 0;\n width: var(--size-grid008);\n min-height: calc(100vh - 180px);\n }\n`;\n\nconst ImageWrapper = styled.div`\n @media all and (min-width: 960px) {\n margin-right: var(--size-grid001);\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n padding: 40px 0;\n }\n @media all and (min-width: 1600px) {\n padding: 52px 0;\n }\n img {\n width: var(--size-grid024);\n height: auto;\n margin: auto;\n @media all and (min-width: 560px) {\n width: var(--size-grid024);\n }\n @media all and (min-width: 960px) {\n width: var(--size-grid012);\n }\n @media all and (min-width: 1920px) {\n width: var(--size-grid011);\n }\n }\n`;\n\ninterface ImageProps {\n image: string;\n color: string;\n modelName: string;\n}\nexport const ImageCar = (props: ImageProps) => {\n const { image, color, modelName } = props;\n\n //Ocultar color pastilla en caso de la imagen que llega no sea r-media\n\n const [showColorCard, setShowColorCard] = useState(true);\n const [ loadingImage, setLoadingImage ] = useState(false);\n\n useEffect(() => {\n if (image) {\n setLoadingImage(false);\n\n if (image.includes('r-media')) {\n setShowColorCard(true);\n } else {\n setShowColorCard(false);\n }\n } else {\n setShowColorCard(true);\n setLoadingImage(true);\n }\n }, [image]);\n\n return (\n \n \n \n {image ? (\n <>\n {loadingImage ? (\n {modelName}\n ) : (\n {modelName}\n )}\n \n ) : null}\n \n\n \n );\n};\n","import { ConfigurationWithMandatoryBuildabilityV2 } from '@volkswagen-onehub/car-configuration-feature-service';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch, useStore } from 'react-redux';\nimport { dpsSend, VicciData } from 'src/bff';\nimport { getEquipmentlineName, getFeatures, getWheels } from 'src/bff/get-marketing-code';\nimport {\n FormController,\n removeWhiteSpace,\n useFaContent,\n useFeatureAppConfig,\n useGetInstalaciones,\n useGetWaidLitera,\n useOneFormContext,\n formatPrefix,\n} from 'src/feature-app';\nimport { getParamsForm } from 'src/feature-app/get-params-form';\nimport {\n CarlineBase,\n FormDataGroup,\n FormDataHeaders,\n FormInfo,\n Horario,\n OneFormState,\n Steps,\n} from 'src/types';\nimport { ThankYouLeads, getCodInterestCarline, getDescInterestCarline, getMatchData, getSalesGroup, getOfertasData } from 'src/forms/Leads';\nimport { formatFields, formatFlags, formatHeaders, formDataBuilder, getDpsFields } from 'src/forms/format-fields';\n\nexport enum LeadGenerico {\n Empezar,\n Mapa,\n Modelo,\n NombreApellido,\n EmailTelefono,\n Contacto,\n Confirmacion,\n}\n\nexport interface LeadGenericoFormProps {\n steps: Steps[];\n leadData: Partial;\n leadInfo: Partial;\n firstStep: Steps;\n lastStep: Steps;\n}\n\nexport interface LeadsFormsProps {\n configRef?: ConfigurationWithMandatoryBuildabilityV2;\n updatedFormData?: Partial;\n updatedFormInfo?: Partial;\n isOfertasOrMatch?: boolean;\n}\n\nexport const isOfertasForm = (formName: string) => formName === 'lead-oferta';\nconst getDescFormObjective = (formName: string, carline: CarlineBase, headers: FormDataHeaders) =>\n isOfertasForm(formName) && carline?.campaign?.dfo?.ofertas\n ? carline.campaign.dfo.ofertas\n : headers.DESC_FORMOBJECTIVE;\n\nexport function LeadInPageGenericoForm({ steps, leadData, leadInfo, firstStep, lastStep }: LeadGenericoFormProps) {\n const { initializeForm } = useOneFormContext();\n const store = useStore();\n const config = useFeatureAppConfig();\n const installations = useGetInstalaciones('VW_DDB_FRM_LEM_REC_LEM'); // Inicialización de las instalaciones\n const dispatch = useDispatch();\n const [loading, setLoading] = useState(true);\n const faContent = useFaContent();\n const waid = useGetWaidLitera();\n\n const getHorario = (horario: Horario) => {\n let horarioField = null;\n\n if (horario) {\n const horarioFormatted = horario === 'morning' ? 'MANANA' : horario === 'evening' ? 'MEDIODIA' : 'TARDE';\n\n horarioField = { 'fields[CITA_PREVIA_PREFERRED_SCHEDULE]': horarioFormatted };\n }\n return horarioField;\n };\n\n const getConfiguradorData = async () => {\n if (config.trigger.includes('configure')) {\n const { vicciData }: { vicciData: VicciData } = store.getState().formData.fields;\n\n return {\n 'fields[COD_VEH_SALESGROUP]': vicciData?.consolidatedData?.vehicleConfiguration?.salesgroupKey,\n 'fields[DESC_VEH_SALESGROUP]': vicciData?.consolidatedData?.vehicleConfiguration?.salesgroupName,\n 'fields[DESC_TRIM_LINE]': getEquipmentlineName(vicciData?.consolidatedData?.vehicleConfiguration?.modelFilters),\n 'fields[COD_VEH_TMAIMG]': vicciData?.consolidatedData?.vehicleConfiguration?.modelKey.split('$')[0],\n 'fields[DESC_VEH_TMAIMG]': vicciData?.consolidatedData?.vehicleConfiguration?.modelName,\n 'fields[DESC_VEH_MARKETING_CODE]': vicciData?.marketingCode,\n 'fields[COD_VEH_COLOR]': vicciData?.consolidatedData?.vehicleConfiguration?.exterior?.code,\n 'fields[DESC_VEH_COLOR]': vicciData?.consolidatedData?.vehicleConfiguration?.exterior?.name,\n 'fields[COD_VEH_COLOR_INT]': vicciData?.consolidatedData?.vehicleConfiguration?.interior?.code,\n 'fields[DESC_VEH_COLOR_INT]': vicciData?.consolidatedData?.vehicleConfiguration?.interior?.name,\n 'fields[DESC_VEH_OFFER_PRICE]': vicciData?.priceData?.body?.amount\n ? `Precio final de la configuración: ${vicciData.priceData.body.amount}Eur`\n : undefined,\n 'fields[COD_INTEREST_PR]': getFeatures(vicciData?.consolidatedData?.vehicleConfiguration?.features),\n ...getWheels(vicciData?.featuresData?.vehicleCatalogue?.features),\n };\n }\n return null;\n };\n\n const sendForm = (): Promise => {\n const { formData, dealersInfo }: OneFormState = store.getState();\n const { fields, headers, flags } = formData;\n const { selectedInstallation, salesGroup, selectedCarline } = dealersInfo;\n\n const {\n TXT_V_Installation_Data_Name__c,\n TXT_V_KVPS_code__c,\n FRML_TXT_codVentaProvincia__c,\n TXT_V_Installation_Code__c,\n } = selectedInstallation;\n\n return new Promise(async (resolve, reject) => {\n const { tc, today, referalUrl, url, device } = getParamsForm();\n const data = {\n ...formatHeaders(headers), // Headers comunes a todos los formularios de leads\n ...formatFields(fields.formFields), // Fields comunes a todos los formularios de leads\n ...formatFlags(flags), // Flags comunes a todos los formularios de leads\n 'headers[COD_FORM_ID]': `vw-oneform-${fields.formName}`,\n 'headers[DESC_URLORIGIN]': url,\n 'headers[DESC_DEVICETYPE]': device,\n 'headers[DESC_FORMOBJECTIVE]': getDescFormObjective(fields.formName, selectedCarline, headers),\n 'headers[DESC_ID_CAMPAIGN]': selectedCarline?.campaign?.salesforce\n ? selectedCarline.campaign.salesforce\n : '7010Y0000001tAOQAY',\n\n 'headers[FECHA_INSERTION_DATE]': today,\n 'headers[TC]': tc,\n\n 'fields[DESC_NAME]': fields.name,\n 'fields[DESC_SURNAME_1]': fields.surname,\n 'fields[DESC_SURNAME_2]': fields.secondSurname,\n 'fields[DESC_EMAIL_ADDRESS]': removeWhiteSpace(fields.email),\n 'fields[NUM_CELLPHONE]': fields.cellphone ? `${formatPrefix(fields.prefix)}${fields.cellphone}` : undefined,\n 'fields[COD_LEAD_ID]': 'VW_DDB_FRM_LEM_REC_LEM',\n 'fields[DESC_VEH_BRAND]': 'Volkswagen',\n 'fields[DESC_FORM_VERSION]': `vw-oneform-${fields.formName}-${process.env.VERSION}`,\n 'fields[DESC_DEALER_CODE_KVPS]': TXT_V_KVPS_code__c,\n 'fields[DESC_DEALER_CODE]': TXT_V_Installation_Code__c,\n 'fields[DESC_DEALER_PROVINCE]': fields.provinceName,\n 'fields[COD_DEALER_PROVINCE]': FRML_TXT_codVentaProvincia__c,\n 'fields[DESC_DEALER]': TXT_V_Installation_Data_Name__c,\n 'fields[COD_INTEREST_CARLINE]': getCodInterestCarline(dealersInfo, fields.carlineCode),\n 'fields[DESC_INTEREST_CARLINE]': getDescInterestCarline(dealersInfo, fields.modelo),\n 'fields[DESC_PREFERRED_CONTACT_CHANNEL]': fields.contacto,\n 'fields[DESC_LOPD]': 'PERMITE',\n 'fields[DESC_TRANF_DATA_THIRD]': 'NO INFORMADO',\n 'fields[DESC_LSSI]': fields.lssi,\n 'fields[DESC_LOPD_GDPR_PERFILADO]': fields.tmk,\n 'fields[DESC_DATA_ENRICHMENT]': fields.dataEnrichment,\n ...getSalesGroup(salesGroup),\n ...getHorario(fields.horario),\n ...getDpsFields(faContent),\n ...(await getOfertasData(formData, dealersInfo)),\n ...(await getMatchData(formData, dealersInfo, faContent)),\n ...(await getConfiguradorData()),\n };\n const dataStringified = JSON.stringify(data);\n const dataParsed = JSON.parse(dataStringified);\n\n const formDataInfo = formDataBuilder(dataParsed);\n\n const response = await dpsSend(formDataInfo);\n\n if (response && response.data && response.data.content && response.data.content.code === '200') {\n dispatch({ type: 'SET_FORM_RESPONSE', payload: response.data });\n resolve(true);\n } else {\n resolve(false);\n }\n });\n };\n\n const leadGenericoData: Partial = {\n headers: {\n DESC_BRAND: 'VW', // OK\n DESC_CAMPAIGNBLOCK: '9. VW LEM', // OK\n DESC_WAID_LITERA: waid ? waid : 'B09C01_LEM_WA1',\n DESC_TOKEN: 'VW_DDB_FRM_LEM_REC_LEM', // OK\n DESC_VN_VO: 'VN', // OK\n DESC_GDPR_ADAPTED: true, // OK\n ...leadData.headers,\n },\n flags: {\n FLAG_MAILRECEPCIONLEAD: 'true',\n FLAG_ISQUALIFIED: 'false',\n REQUIERE_CONTACTO_DEALER: 'false',\n },\n fields: { ...leadData.fields },\n };\n\n const leadGenericoInfo: Partial = {\n formStarted: true,\n fullScreen: firstStep.fullScreen ? true : false,\n lastStep,\n sendFormCallback: sendForm,\n numberOfScreens: steps.length,\n screenIndex: firstStep.screenIndex,\n step: firstStep,\n steps,\n stepsHistory: [steps[0].screenIndex],\n thankYouComponent: ,\n ...leadInfo,\n };\n\n useEffect(() => {\n initializeForm(leadGenericoInfo, leadGenericoData);\n setLoading(false);\n }, []);\n\n return loading ? null : ;\n}\n","import {\n Breakpoints,\n BreakpointWrapper,\n Container,\n ContainerGutter,\n ContainerPadding,\n styled,\n Text,\n TextAppearance,\n} from '@volkswagen-onehub/components-core';\nimport React, { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { LocateUserFullScreen } from 'src/components';\nimport { OneFormState } from 'src/types';\nimport { getColorInfo, ImageCar } from '.';\n\nconst LayoutWrapper = styled.div`\n @media all and (min-width: 960px) {\n display: flex;\n }\n`;\n\nconst InfoWrapper = styled.div`\n width: 100%;\n padding-left: var(--size-grid002);\n padding-right: var(--size-grid002);\n padding-top: 44px;\n @media all and (min-width: 5600px) {\n padding-top: 68px;\n }\n @media all and (min-width: 960px) {\n display: flex;\n justify-content: center;\n flex-direction: column;\n width: var(--size-grid012);\n padding-left: var(--size-grid002);\n padding-right: 0;\n padding-top: 0;\n }\n @media all and (min-width: 1280px) {\n padding-left: var(--size-grid003);\n }\n @media all and (min-width: 1600px) {\n padding-left: var(--size-grid002);\n }\n`;\n\nexport const renderTitle = (formName: string) => {\n return (\n <>\n {formName === 'presupuesto' || formName === 'masInformacion' ? (\n \n {' '}\n ¿Qué concesionario quieres que se{' '}\n \n encargue?*\n \n \n ) : (\n <>\n {formName === 'testDrive' ? (\n \n {' '}\n ¿Dónde prefieres{' '}\n \n provarlo?*\n \n \n ) : (\n \n {' '}\n ¿A dónde quieres{' '}\n \n ir?*\n \n \n )}\n \n )}\n \n );\n};\n\nexport const LocateUserLeadsInPage = () => {\n const { formData } = useSelector((state: OneFormState) => state);\n const { marketingCodeData, formName } = formData.fields;\n const [imageSrc, setImageSrc] = useState(null);\n const [name, setName] = useState(null);\n const [colorInfo, setColorInfo] = useState(null);\n\n useEffect(() => {\n if (!marketingCodeData) return;\n const { modelName, colorCode, mediaAssets } = marketingCodeData;\n setName(modelName);\n\n if (colorCode) {\n getColorInfo(colorCode).then((color) => {\n setColorInfo(color);\n });\n } else {\n setColorInfo('#484A52');\n }\n\n if (mediaAssets?.D6MOFASideview) {\n setImageSrc(mediaAssets?.D6MOFASideview);\n } else {\n setImageSrc(mediaAssets?.D6Explore1);\n }\n }, [marketingCodeData]);\n\n return (\n \n \n \n \n \n \n {marketingCodeData?.modelName}.\n \n \n \n Genial,{' '}\n {formName.includes('mas_informacion') ? (\n te mandamos toda la información\n ) : formName.includes('test_drive') ? (\n te esperamos para una prueba de conducción\n ) : formName.includes('presupuesto') ? (\n te enviamos tu presupuesto personalizado\n ) : formName.includes('cita') ? (\n te esperamos para contártelo todo\n ) : (\n te mandamos toda la información\n )}\n \n \n \n {' '}\n ¿Qué concesionario quieres que se{' '}\n \n encargue?*\n \n \n \n \n \n \n \n \n );\n};\n","import { Text, TextAppearance } from '@volkswagen-onehub/components-core';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { Provider, useDispatch, useSelector, useStore } from 'react-redux';\nimport { LocateUserFullScreen, MultipleCTASelection } from 'src/components';\nimport {\n LayerManagerWrapper,\n useFeatureAppEnvironment,\n useFeatureServices,\n useOneFormContext,\n} from 'src/feature-app';\nimport { RenderController, OneElementTemplateFullScreen } from 'src/feature-app/Screen';\nimport LoadScriptInstance from 'src/feature-app/NewMap/Loadscript';\nimport { TIME_FOR_TRANSFORM } from 'src/globals';\nimport { OneFormState, Steps } from 'src/types';\nimport { LocateUserLeadsInPage, renderTitle } from 'src/forms/LeadsInPage';\nimport { JourneyLeadsInPageWrapper } from 'src/forms/LeadsInPage';\nimport { InteractionLayerSizeV2, ShimBackgroundTypeV2 } from '@volkswagen-onehub/layer-manager';\nimport { CTAsHorario } from 'src/feature-app/InputsValues';\n\nconst getTitle = (marketingCodeData) => {\n if (marketingCodeData) {\n return;\n } else {\n return (\n \n {' '}\n ¿Qué concesionario quieres que se{' '}\n \n encargue?*\n \n \n );\n }\n};\n\nconst getLocatePage = (marketingCodeData) => {\n if (marketingCodeData) {\n return ;\n } else {\n return } />;\n }\n};\n\nenum MapaLeadsInPageSteps {\n Dealer,\n Horario,\n SeleccionCita,\n SeleccionFecha,\n}\n\ninterface MapaLeadsInPageProps {\n showHorario?: boolean;\n formName: string;\n}\n\nconst isLastScreen = (steps: Steps[], multiStepScreenIndex: number) => steps.length - 1 === multiStepScreenIndex;\nconst isFirstScreen = (multiStepScreenIndex: number) => multiStepScreenIndex === 0;\n\nexport function MapaLeadsInPage(props: MapaLeadsInPageProps) {\n const { formName, showHorario } = props;\n const dispatch = useDispatch();\n const store = useStore();\n const { formData, formInfo } = useSelector((state: OneFormState) => state);\n const { marketingCodeData } = formData.fields;\n const { firstMapLoad, multiStepScreenIndex, navigationMovingForward } = formInfo;\n const layerManager = useFeatureServices()['layer-manager'];\n const env = useFeatureAppEnvironment();\n const {\n handleScreenChange,\n // setWaitForNextStep,\n setNextMultiStep,\n setNextMultiStepScreenIndex,\n setPreviousMultiStep,\n setWaitForPreviousStep,\n waitForPreviousStep,\n // waitForNextStep,\n setIsFullScreen,\n setShowPreviousStep,\n nextStepEventEmitter,\n } = useOneFormContext();\n\n const mapStep = showHorario ? 2 : 1;\n\n let stepsHorario: Steps[] = [\n {\n title: getTitle(marketingCodeData),\n fields: getLocatePage(marketingCodeData),\n screenIndex: MapaLeadsInPageSteps.Dealer,\n name: 'MapSearch',\n outputs: ['location'],\n outputsText: ['location'],\n showOverflow: true,\n },\n {\n screenIndex: MapaLeadsInPageSteps.Horario,\n name: 'MapSlotPref',\n title: (\n <>\n ¿Cúando prefieres pasar por el{' '}\n \n concesionario?*\n \n \n ),\n fields: (\n }\n />\n ),\n outputs: ['horario'],\n outputsText: ['horario'],\n },\n {\n screenIndex: MapaLeadsInPageSteps.SeleccionCita,\n name: 'MapSelect',\n alternateTitle: (\n \n ¿Qué concesionario quieres que se{' '}\n \n encargue?*\n \n \n ),\n title: <>,\n fields: ,\n outputs: ['installation'],\n outputsText: ['installation'],\n fullScreen: true,\n multiStepLastScreen: true,\n hidePreviousStep: true,\n },\n ];\n\n let stepsWithoutHorario: Steps[] = [\n {\n title: getTitle(marketingCodeData),\n fields: getLocatePage(marketingCodeData),\n screenIndex: MapaLeadsInPageSteps.Dealer,\n name: 'MapSearch',\n outputs: ['location'],\n outputsText: ['location'],\n showOverflow: true,\n },\n {\n screenIndex: 1,\n name: 'MapSelect',\n alternateTitle: (\n \n ¿Qué concesionario quieres que se{' '}\n \n encargue?*\n \n \n ),\n title: <>,\n fields: ,\n outputs: ['installation'],\n outputsText: ['installation'],\n fullScreen: true,\n multiStepLastScreen: true,\n hidePreviousStep: true,\n },\n ];\n const steps = showHorario ? stepsHorario : stepsWithoutHorario;\n\n const [selectedStep, setSelectedStep] = useState(null);\n const layerRef = useRef(null);\n /**\n * Hay que esperar a que se cree el mapa de google para tener acceso a window.google\n */\n const onMapLoad = () => {\n if (multiStepScreenIndex === 0) {\n // handleFirstLoad();\n }\n };\n\n const handleFirstLoad = async () => {\n if (firstMapLoad) {\n // Inicialización\n initializeMultiStep();\n } else {\n if (navigationMovingForward || navigationMovingForward === null || navigationMovingForward === undefined) {\n // Inicialización cuando se va hacia adelante una vez inicializado el mapa o después de cerrar el layer y abrir en el mapa.\n initializeMultiStep();\n } else {\n // En caso de que estemos en la última pantalla, desactivamos el wait for next step.\n const newWaitForNextStep = !isLastScreen(steps, multiStepScreenIndex);\n // Lo mismo para previous, solo le desactivamos si estamos en la primera.\n const newWaitForPreviousStep = !isFirstScreen(multiStepScreenIndex);\n\n updateWaitForNextAndPreviousStep(newWaitForNextStep, newWaitForPreviousStep);\n updateScreenChangeVariables(multiStepScreenIndex);\n }\n }\n setNextMultiStep(() => nextMapaNoCompra);\n setPreviousMultiStep(() => previousMapaNoCompra);\n };\n\n const initializeMultiStep = () => {\n updateWaitForNextAndPreviousStep(true, false);\n updateScreenChangeVariables(0);\n };\n\n const updateWaitForNextAndPreviousStep = (waitForNextStep: boolean, waitForPreviousStep: boolean) => {\n if (waitForNextStep !== null) {\n dispatch({ type: 'UPDATE_WAIT_FOR_NEXT_STEP', payload: waitForNextStep });\n }\n if (waitForPreviousStep !== null) {\n setWaitForPreviousStep(waitForPreviousStep);\n }\n };\n\n const nextMapaNoCompra = () => {\n if (!showHorario) {\n renderLayer();\n return;\n }\n const { multiStepScreenIndex } = store.getState().formInfo;\n\n if (multiStepScreenIndex === 1) {\n renderLayer();\n updateScreenChangeVariables(mapStep);\n return;\n }\n\n handleScreenChange();\n\n // Una vez avanzamos dentro de los multisteps se activa el wait\n // previous step para volver hacia atrás dentro del propio multistep.\n if (!waitForPreviousStep || multiStepScreenIndex === 0) {\n updateWaitForNextAndPreviousStep(null, true);\n }\n\n setTimeout(() => {\n updateScreenChangeVariables(multiStepScreenIndex + 1);\n // Si estamos en el último paso del multistep se desactiva el\n // wait next step para poder salir del multistep y avanzar hacia la siguiente pantalla.\n if (steps[multiStepScreenIndex + 1].multiStepLastScreen) {\n updateWaitForNextAndPreviousStep(false, null);\n if (multiStepScreenIndex === 0) {\n setShowPreviousStep(false);\n } else {\n setShowPreviousStep(true);\n }\n }\n }, TIME_FOR_TRANSFORM);\n };\n\n const previousMapaNoCompra = () => {\n const { multiStepScreenIndex, waitForNextStep } = store.getState().formInfo;\n\n handleScreenChange();\n\n // Se desactiva el wait previous step en la segunda pantalla para que\n // en el caso de volver hacia atrás en la primera salte de step y no busque dentro de los multisteps.\n if (multiStepScreenIndex === 1) {\n updateWaitForNextAndPreviousStep(null, false);\n }\n\n if (!waitForNextStep) {\n updateWaitForNextAndPreviousStep(true, null);\n }\n\n // Se fija en la pantalla previa a la primera para que cuando se cambie\n // a la primera pantalla el CTA de anterior pase del multistep al step anterior.\n setTimeout(() => {\n updateScreenChangeVariables(multiStepScreenIndex - 1);\n }, TIME_FOR_TRANSFORM);\n };\n\n const updateScreenChangeVariables = (newMultiStepScreenIndex: number) => {\n setNextMultiStepScreenIndex(newMultiStepScreenIndex);\n dispatch({ type: 'UPDATE_MULTISTEP_SCREENINDEX', payload: newMultiStepScreenIndex });\n setSelectedStep(steps[newMultiStepScreenIndex]);\n setIsFullScreen(steps[newMultiStepScreenIndex].fullScreen);\n setShowPreviousStep(!steps[newMultiStepScreenIndex].hidePreviousStep);\n };\n\n useEffect(() => {\n dispatch({ type: 'UPDATE_MULTISTEPS', payload: steps });\n\n handleFirstLoad();\n\n return () => {\n dispatch({ type: 'UPDATE_FIRST_MAP_LOAD', payload: false });\n setShowPreviousStep(true);\n updateWaitForNextAndPreviousStep(false, false);\n };\n }, []);\n\n const renderElement = (state?: any) => {\n if (state) {\n updateWaitForNextAndPreviousStep(false, null);\n }\n\n return (\n \n \n \n \n \n );\n };\n\n /**\n * Necesario para en el caso de que se cierre el mapa se pueda mostrar la pantalla de preferencia horaria\n */\n const onCloseMap = () => {\n updateScreenChangeVariables(mapStep - 1);\n updateWaitForNextAndPreviousStep(true, false);\n };\n\n const renderLayer = () => {\n const layer = layerManager.openInteractionLayer(\n renderElement,\n { step: steps[mapStep], nextStepEventEmitter },\n {\n size: InteractionLayerSizeV2.D,\n id: 'mapaLeadInPage',\n shimBackgroundType: ShimBackgroundTypeV2.OPAQUE,\n onClose: onCloseMap,\n }\n );\n layerRef.current = layer;\n return null;\n };\n\n return selectedStep ? (\n selectedStep.screenIndex === mapStep ? null : (\n \n \n \n )\n ) : null;\n}\n","import { Breakpoints, BreakpointWrapper } from '@volkswagen-onehub/components-core';\nimport { CloseHandleV2, FocusLayerSizeV2, LayerManagerV2 } from '@volkswagen-onehub/layer-manager';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { useDispatch, useSelector, useStore } from 'react-redux';\nimport { AvailabilityErrorLayer } from 'src/components';\nimport {\n LayerManagerWrapper,\n useFeatureAppEnvironment,\n useMapGeneralController,\n sortPoints,\n useOneFormContext,\n useFeatureServices,\n NewDealerCard,\n} from 'src/feature-app';\nimport { LoadingLayer } from 'src/forms/CitaPosventa/NuevaCitaPosventa';\nimport { Horario, OneFormState, Points } from 'src/types';\nimport { fetchProvince } from 'src/bff';\nimport { TOKEN_LEADS_COMERCIALES, TOKEN_LEADS_TURISMOS } from 'src/globals';\nimport { useIsComerciales } from 'src/feature-app/hooks';\nimport { \n getDistanceFromLatLngCenter, \n LayerDesktopView, \n LayerMobileView \n} from 'src/feature-app/NewMap';\n\nexport const JourneyLeadInPageController = () => {\n const { formData } = useSelector((state: OneFormState) => state);\n const { horario }: { horario?: Horario } = formData.fields;\n const { handleNextStep } = useOneFormContext();\n const layerManager = useFeatureServices()['layer-manager'] as LayerManagerV2;\n const store = useStore();\n const dispatch = useDispatch();\n const env = useFeatureAppEnvironment();\n const [loading, setLoading] = useState(false);\n const pointsByDistanceRef = useRef(null);\n const isComerciales = useIsComerciales();\n\n const loadingLayer = useRef(null);\n const {\n clusters,\n centerToCalculateDistance,\n superClusterRef,\n cardsDistanceRef,\n cardsTimeRef,\n } = useMapGeneralController();\n\n const [pointsToList, setPointsToList] = useState(null);\n\n useEffect(() => {\n if (clusters && superClusterRef.current) {\n const { pointsByDistance } = sortPoints(\n clusters,\n horario,\n centerToCalculateDistance.current,\n superClusterRef.current\n );\n pointsByDistanceRef.current = pointsByDistance;\n setPointsToList(pointsByDistance);\n }\n }, [clusters, superClusterRef.current]);\n\n const renderPoints = (points: Points[], isTime?: boolean, isCarouselCard?: boolean): JSX.Element[] => {\n // const pointsToRender = isTime ? pointsByTime : pointsByDistance;\n\n return points.map((point: Points, index: number) => {\n if (!point.properties.cluster) {\n const { dealer } = point.properties;\n const distanceFromCenter = getDistanceFromLatLngCenter(centerToCalculateDistance.current, point);\n\n return (\n {\n cardsDistanceRef.current[index] = el;\n }}\n >\n \n
    \n );\n }\n return null;\n });\n };\n\n // Gestión del point seleccionado y del boton de seleccionar (dms)\n const handleSeleccionarOnClick = useCallback((point: Points) => {\n // Añadir lógica para guardar el dealer seleccionado\n dispatch({ type: 'SET_SELECTED_INSTALLATION', payload: point.properties.installation });\n // Necesitamos el nombre de la provincia, y éste no está disponible en la request de instalaciones.\n fetchProvince(isComerciales ? TOKEN_LEADS_COMERCIALES : TOKEN_LEADS_TURISMOS).then((response) => {\n const province = response.content.find((att) =>\n att.attributes.find((prov) => prov.value === point.properties.installation.FRML_TXT_codVentaProvincia__c)\n );\n const provinceName = province.attributes[1].value;\n\n dispatch({ type: 'UPDATE_FIELDS', payload: { provinceName } });\n });\n handleNextStep();\n }, []);\n\n const renderLoadingLayer = () => {\n return (\n \n \n \n );\n };\n\n const handleLoadingLayer = () => {\n if (loading) {\n const layer = layerManager.openFocusLayer(renderLoadingLayer, {}, { size: FocusLayerSizeV2.A });\n loadingLayer.current = layer;\n } else {\n if (loadingLayer.current) {\n loadingLayer.current.close();\n loadingLayer.current = null;\n }\n }\n };\n\n useEffect(() => {\n handleLoadingLayer();\n }, [loading]);\n\n // availability functions\n\n return (\n
    \n \n \n \n\n \n \n \n
    \n );\n};\n","import React from 'react';\nimport { JourneyLeadInPageController } from '.';\nimport { MapGeneralController } from 'src/feature-app';\n\n/**\n * Este componente está creado únicamente para que JourneyNoCompraController tenga acceso a las variables de MapGeneralController.\n */\nexport const JourneyLeadsInPageWrapper = () => {\n \n return (\n \n \n \n );\n};\n","import { FormDataGroup } from 'src/types';\n\nexport const PartialDataMasInformacionConfigurador: Partial = {\n headers: { DESC_FORMOBJECTIVE: 'Más Información' },\n fields: {\n formFields: {},\n formularioFlag: 'masInformacion',\n formName: 'lead-mas_informacion-configure',\n formType: 'contact',\n pageCategory: 'Más Información',\n },\n};\n","import { FormDataGroup } from 'src/types';\n\n export const PresupuestoPartialDataConfigurador: Partial = {\n headers: { DESC_FORMOBJECTIVE: 'Presupuesto' },\n fields: {\n formFields: {},\n formularioFlag: 'presupuesto',\n formName: 'lead-presupuesto-configure',\n formType: 'quote',\n pageCategory: 'Presupuesto',\n },\n};\n","import { FormDataGroup } from 'src/types';\n\nexport const PartialDataTestDriveConfigurador: Partial = {\n headers: { DESC_FORMOBJECTIVE: 'Test Drive' },\n fields: {\n formFields: {},\n formularioFlag: 'testDrive',\n formName: 'lead-test_drive-configure',\n formType: 'testdrive',\n pageCategory: 'Test Drive',\n },\n};\n","import { Color } from 'src';\nimport { getColors } from 'src/bff';\n\nexport const getColorInfo = async (colorCode: string): Promise => {\n if (!colorCode) return null;\n\n const colors = await getColors();\n const aux = colorCode.split(' ');\n const colorInfo = colors.colores.find((a) => a.code === aux[1]);\n\n return colorInfo;\n};\n","import { BBox } from 'geojson';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { connect } from 'react-redux';\nimport { DealersData, Geometry, Installation, isDealerData, OneFormState, SelectedTab } from 'src/types';\nimport { Points } from 'src/types';\nimport { isGooglePlace, Suggestion } from 'src/feature-app/NewMap';\nimport { getGeometry, getPoints, getUserGeolocation, getUserSuggestion } from '../redux/selectors';\nimport { generateClusters } from 'src/feature-app/NewMap/generate-clusters';\nimport { getLocationOfDealerWithoutLoadInstance } from 'src/feature-app/NewMap/utils';\n\nexport const MapGeneralControllerContext = React.createContext(null);\nexport const useMapGeneralController = (): MapGeneralControllerMethods =>\n React.useContext(MapGeneralControllerContext) as MapGeneralControllerMethods;\n\ninterface MapGeneralControllerMethods {\n cardsDistanceRef: React.MutableRefObject;\n cardsTimeRef: React.MutableRefObject;\n centerInGeoLocatedCenter: () => void;\n centerMap: (newCenter: google.maps.LatLng) => void;\n centerToCalculateDistance: React.MutableRefObject;\n clusters: Points[];\n geoLocatedCenterRef: React.MutableRefObject;\n getNewClusters: () => void;\n handleApiLoaded: (map: google.maps.Map, maps: any) => void;\n handleChangeInMapZoom: (zoomIn: boolean) => void;\n handleClusterClick: (point: Points, isCluster?: boolean, recalculateClusters?: boolean) => void;\n handleHoverPoint: (p: Points) => void;\n handleMapMovement: () => void;\n handlePointClickAndCarouselMove: (p: Points, s?: boolean, preSelectedOrderValue?: SelectedTab) => void;\n handleSelectedPoint: (p: Points) => void;\n hoverPoint: Points;\n resetMap: () => void;\n mapHasMoved: boolean;\n mapMaxZoom: number;\n markerDimensions: MarkerDimensions;\n searchIsDealer: boolean;\n searchMoreDealers: () => void;\n moreDealersSearched: boolean;\n setMoreDealersSearched: React.Dispatch>;\n selectedPoint: Points;\n setSearchIsDealer: React.Dispatch>;\n superClusterRef: any;\n userIsGeoLocated: boolean;\n centerRef: React.MutableRefObject;\n}\nexport interface MarkerDimensions {\n width: number;\n height: number;\n}\n\nconst markerDimensions: MarkerDimensions = { width: 32, height: 44 };\nconst mapMaxZoom = 16;\n\nconst MapGeneralController = React.memo(\n (props: {\n children: JSX.Element;\n points: Points[];\n geometry: Geometry;\n userSuggestion: Suggestion;\n userGeolocation: Suggestion;\n dealer?: DealersData;\n skipMapMovementOnClick?: boolean;\n }) => {\n const { points, geometry, children, userSuggestion, userGeolocation, dealer, skipMapMovementOnClick } = props;\n // const { debug } = useOneFormContext(); // Causa de los rerenders\n const boundsRef = useRef(null);\n const zoomRef = useRef(null);\n const centerRef = useRef(null);\n const geoLocatedCenterRef = useRef(null);\n const centerToCalculateDistance = useRef(null);\n const mapRef = useRef(null);\n const mapsRef = useRef(null);\n const [selectedPoint, setSelectedPoint] = useState(null);\n const [hoverPoint, setHoverPoint] = useState(null);\n const [clusters, setClusters] = useState([]);\n const superClusterRef = useRef(null);\n const cardsTimeRef = useRef([]);\n const cardsDistanceRef = useRef([]);\n const [mapHasMoved, setMapHasMoved] = useState(false);\n const [searchIsDealer, setSearchIsDealer] = useState(null);\n const [userIsGeoLocated, setUserIsGeoLocated] = useState(null);\n const zoomListenerRef = useRef(null);\n const [moreDealersSearched, setMoreDealersSearched] = useState(null);\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n if (!userSuggestion) return;\n setMapHasMoved(false);\n if (isGooglePlace(userSuggestion)) {\n setSearchIsDealer(false);\n } else {\n setSearchIsDealer(true);\n\n // Hay que preseleccionar el dealer elegido\n if (points) {\n const selectedCluster = points.find((cluster) => {\n if (cluster.properties.dealer) {\n if (\n !isGooglePlace(userSuggestion) &&\n isDealerData(userSuggestion) &&\n cluster.properties.dealer.kvps === userSuggestion.kvps\n ) {\n return cluster;\n } else if (\n !isGooglePlace(userSuggestion) &&\n !isDealerData(userSuggestion) &&\n cluster.properties.dealer.kvps === (userSuggestion as Installation).TXT_V_KVPS_code__c\n ) {\n return cluster;\n }\n }\n });\n if (selectedCluster) {\n handleSelectedPoint(selectedCluster);\n }\n }\n }\n if (mapRef.current && mapsRef.current) {\n if (isGooglePlace(userSuggestion)) {\n initializeMapWithBounds(geometry.viewport);\n } else {\n if (geometry) {\n initalizeMapWithCenter(geometry.lat, geometry.lng);\n }\n }\n }\n }, [userSuggestion, points]);\n\n useEffect(() => {\n setMounted(true);\n return () => {\n mapRef.current = null;\n mapsRef.current = null;\n setMounted(false);\n };\n }, []);\n\n useEffect(() => {\n if (userGeolocation) {\n setUserIsGeoLocated(true);\n } else {\n setUserIsGeoLocated(false);\n geoLocatedCenterRef.current = null;\n }\n }, [userGeolocation]);\n\n const resetMap = () => {\n mapRef.current = null;\n mapsRef.current = null;\n };\n\n const handleApiLoaded = (map: google.maps.Map, maps: any) => {\n // En el caso de que se haya interactuado con el mapa y se oculte por alguna razón (calendario, filtros, etc),\n // se vuelve a crear una nueva instancia del mismo, perdiendo cualquier interacción creandose de nuevo el mapa\n // con la información inicial.\n if (!mapRef.current && !mapsRef.current) {\n mapRef.current = map;\n mapsRef.current = maps;\n\n window.map = map;\n window.maps = maps;\n setMapHasMoved(false);\n if (geometry && geometry.bounds) {\n // Caso de geolocalización o búsqueda de google\n initializeMapWithBounds(geometry.bounds);\n } else if (geometry && geometry.viewport) {\n // Caso de geolocalización o búsqueda de google\n initializeMapWithBounds(geometry.viewport);\n } else if (geometry && geometry.lat && geometry.lng) {\n // Caso dealer\n initalizeMapWithCenter(geometry.lat, geometry.lng);\n } else {\n // Caso Cita posventa Dealer. En este caso al no haber precargado el mapa anteriormente en el autosuggest no están las variables\n // de maps disponibles, por lo que se tienen que crear con el mapa que sea acaba de crear y sin usar LoadInstance.\n const { lat, lng } = getLocationOfDealerWithoutLoadInstance(dealer, maps);\n initalizeMapWithCenter(lat, lng);\n }\n setZoomListener(map, maps);\n } else {\n removeZoomListener(mapsRef.current);\n // Lógica para recrear el mapa antes de su ocultación.\n map.setCenter(centerRef.current);\n map.fitBounds(transformClusterBoundsToGoogleBounds(boundsRef.current));\n map.setZoom(zoomRef.current);\n\n mapRef.current = map;\n mapsRef.current = maps;\n setZoomListener(map, maps);\n }\n };\n\n const initializeMapWithBounds = (bounds: google.maps.LatLngBounds) => {\n handleSelectedPoint(null);\n // No debería ser necesario crear las siguientes variables, ya que con center y bounds funciona la primera carga.\n // Por alguna razón, después de seleccionar una cita y volver atrás da este error:\n // InvalidValueError: setCenter: not a LatLng or LatLngLiteral with finite coordinates: in property lat: not a number.\n // a pesar de que bounds es el mismo que en la primera carga y lat si que es un número.\n // Al calcular cada variable por separado no se produce este error.\n\n const { north, east, south, west } = getCardinalPoints(bounds);\n const sw = createLatLng(south, west);\n const ne = createLatLng(north, east);\n const newBounds = new mapsRef.current.LatLngBounds(sw, ne);\n const center = newBounds.getCenter();\n const lat = center.lat();\n const lng = center.lng();\n const latlng = createLatLng(lat, lng);\n\n mapRef.current.setCenter(latlng);\n mapRef.current.fitBounds(newBounds, 0);\n const clusterBounds: BBox = transformGoogleBoundsToClusterBounds(newBounds);\n if (isGooglePlace(userSuggestion) && userSuggestion.isGeoLocated) {\n geoLocatedCenterRef.current = center;\n }\n if (!geoLocatedCenterRef.current) {\n centerToCalculateDistance.current = center;\n } else {\n centerToCalculateDistance.current = geoLocatedCenterRef.current;\n }\n setTimeout(() => {\n mapRef.current.panTo(center);\n }, 0);\n setMapClusters(points, mapRef.current.getZoom(), clusterBounds, center);\n };\n\n const initalizeMapWithCenter = (lat: number, lng: number) => {\n const zoom = 16;\n const latlng = createLatLng(lat, lng);\n mapRef.current.setCenter(latlng);\n mapRef.current.setZoom(zoom);\n const bounds = getBounds();\n const clusterBounds = transformGoogleBoundsToClusterBounds(bounds);\n centerToCalculateDistance.current = latlng;\n setMapClusters(points, zoom, clusterBounds, latlng);\n };\n\n const setZoomListener = (map: google.maps.Map, maps: any) => {\n if (maps) {\n const listener = maps.event.addListener(map, 'zoom_changed', () => {\n const zoom = map.getZoom();\n // setMapClusters(points, zoom, boundsRef.current, centerRef.current);\n zoomRef.current = zoom;\n });\n zoomListenerRef.current = listener;\n }\n };\n\n const removeZoomListener = (maps: any) => {\n maps.event.removeListener(zoomListenerRef.current);\n };\n\n const setMapClusters = (\n points: Points[],\n zoom: number,\n bounds: BBox,\n center: google.maps.LatLng,\n param?: boolean\n ) => {\n // Solución al bug Uncaught RangeError: Maximum call stack size exceeded.\n\n if (zoom < 0) {\n return;\n }\n const { clusters, supercluster }: { clusters: Points[]; supercluster: any } = generateClusters(\n points,\n zoom,\n bounds\n );\n superClusterRef.current = supercluster;\n\n // En caso de que no encuentre dealers en la ubicación seleccionada en una búsqueda de google se hace zoom out\n // hasta que encuentre al menos 2. En caso de que sea una búsqueda de dealer, buscamos hasta encontrar 1.\n // Usamos isGooglePlace y no el flag the searchIsDealer porque en la primera carga no está disponible.\n let pointCount = getPointCount(clusters);\n\n if (pointCount > 1 && !isGooglePlace(userSuggestion)) {\n }\n\n if ((pointCount < 2 && isGooglePlace(userSuggestion)) || (pointCount === 0 && !isGooglePlace(userSuggestion))) {\n const { center, clusterBounds } = zoomOutMapForSearch(zoom);\n setMapClusters(points, zoom - 1, clusterBounds, center);\n return;\n }\n\n changeMapVariables(bounds, zoom, center);\n drawRectangle();\n\n if (userSuggestion && !userSuggestion.isGooglePlace && searchIsDealer && !param) {\n const point = clusters.find((point) => {\n if (isDealerData(userSuggestion)) {\n return point.properties.dealer.kvps === (userSuggestion as DealersData).kvps;\n } else {\n return point.properties.dealer.kvps === (userSuggestion as Installation).TXT_V_KVPS_code__c;\n }\n });\n setClusters([point]);\n } else {\n setClusters(clusters);\n }\n };\n\n const getNewClusters = () => {\n resetCardReferences();\n const bounds = getBounds();\n const center = centerToCalculateDistance.current;\n const zoom = mapRef.current.getZoom();\n const clusterBounds = transformGoogleBoundsToClusterBounds(bounds);\n setSearchIsDealer(false);\n setMapClusters(points, zoom, clusterBounds, center, true);\n setMoreDealersSearched(true);\n setMapHasMoved(false);\n };\n\n /**\n * Función que hace zoom out, útil para realizar búsquedas de más talleres en caso de que los resultados no sean los deseados.\n * @param zoom\n */\n const zoomOutMapForSearch = (zoom: number) => {\n mapRef.current.setZoom(zoom - 1);\n const bounds = mapRef.current.getBounds();\n const center = bounds.getCenter();\n const clusterBounds = transformGoogleBoundsToClusterBounds(bounds);\n return { bounds, center, clusterBounds };\n };\n\n /**\n * Devuelve el número de puntos que se encuentran dentro de los clusters.\n * @param clusters\n */\n const getPointCount = (clusters: Points[]): number => {\n return clusters.reduce((acc, cluster) => {\n if (cluster.properties.cluster) {\n return acc + cluster.properties.point_count;\n } else {\n return acc + 1;\n }\n }, 0);\n };\n\n /**\n * CTA Ver más talleres en la zona. Se hace un zoom out hasta que se encuentra mínimo un taller más\n */\n const searchMoreDealers = () => {\n setSearchIsDealer(false);\n setMapHasMoved(true);\n const { center, clusterBounds } = zoomOutMapForSearch(zoomRef.current);\n\n const { clusters } = generateClusters(points, zoomRef.current, clusterBounds);\n setMapClusters(points, zoomRef.current, clusterBounds, center, true);\n setMoreDealersSearched(true);\n let pointCount = getPointCount(clusters);\n\n if (pointCount === 1) {\n searchMoreDealers();\n }\n };\n\n /**\n * Las bounds de google maps van en referencia a SW y NE. No obstante las bounds necesarias para obtener los clusters van en referencia\n * NW y SE por lo que hay que obenter la equivalencia para que funcione correctamente.\n * @param googleBounds\n */\n const transformGoogleBoundsToClusterBounds = (googleBounds: google.maps.LatLngBounds): BBox => {\n const { north, east, south, west } = getCardinalPoints(googleBounds);\n\n return [west, south, east, north];\n };\n\n const transformClusterBoundsToGoogleBounds = (bounds: BBox): google.maps.LatLngBounds => {\n const sw = createLatLng(bounds[1], bounds[0]);\n const ne = createLatLng(bounds[3], bounds[2]);\n return new mapsRef.current.LatLngBounds(sw, ne);\n // const { north, east, south, west } = getCardinalPoints(bounds);\n\n // return [west, south, east, north];\n };\n\n const getCardinalPoints = (bounds: google.maps.LatLngBounds) => {\n const north = bounds.getNorthEast().lat();\n const east = bounds.getNorthEast().lng();\n const south = bounds.getSouthWest().lat();\n const west = bounds.getSouthWest().lng();\n\n return { north, east, south, west };\n };\n\n const getBounds = (): google.maps.LatLngBounds => mapRef.current.getBounds();\n\n /**\n * Transforma las coordenadas del point en coordenadas LatLng de Google Maps.\n * @param point\n */\n const getLatLngFromPoint = (point: Points): google.maps.LatLng =>\n createLatLng(point.geometry.coordinates[1], point.geometry.coordinates[0]);\n\n const createLatLng = (lat: number, lng: number): google.maps.LatLng => new mapsRef.current.LatLng(lat, lng);\n\n const changeMapVariables = (newBounds: BBox, zoom: number, center: google.maps.LatLng) => {\n // setBounds(newBounds);\n // setZoom(zoom);\n boundsRef.current = newBounds;\n zoomRef.current = zoom;\n centerRef.current = center;\n if (isGooglePlace(userSuggestion) && !userGeolocation) {\n centerToCalculateDistance.current = center;\n }\n };\n\n const handleChangeInMapZoom = (zoomIn: boolean) => {\n const zoom = mapRef.current.getZoom();\n const newZoom = zoomIn ? zoom + 1 : zoom - 1;\n mapRef.current.setZoom(newZoom);\n\n handleMapMovement();\n };\n\n const handlePointClickAndCarouselMove = useCallback(\n (point: Points, scroll?: boolean, preSelectedOrderValue?: SelectedTab) => {\n handleSelectedPoint(point);\n\n if (scroll) {\n const cards = preSelectedOrderValue === 'horario' ? cardsTimeRef : cardsDistanceRef;\n const card = cards.current.find((el) => el.className.includes(point.properties.dealer.kvps));\n\n if (card) {\n // Añadir restriccion a solo desktop\n card.scrollIntoView({ block: 'center', behavior: 'smooth' });\n }\n }\n if (!skipMapMovementOnClick && checkIfPointIsInsideBounds(point)) {\n moveMapIfIsSlightlyOutBounds(point);\n } else {\n mapRef.current.panTo(getLatLngFromPoint(point));\n }\n },\n []\n );\n\n const handleSelectedPoint = useCallback((point: Points | null) => {\n setSelectedPoint(point);\n }, []);\n\n const handleHoverPoint = useCallback((point: Points | null) => {\n setHoverPoint(point);\n }, []);\n\n /**\n * Al clickar sobre un cluster se han de separar los dealers que contenga y hacer un zoom sobre la zona\n * sin perder los pines de la búsqueda anterior.\n * @param point\n * @param isCluster Este parámetro solo se usa cuando se clicka sobre una card para hacer el máximo zoom posible, ya\n * que si el pin se encuentra dentro de dos clusters no llega a mostrarlo correctamente con el expansion zoom.\n * @param recalculateClusters En mobile no funciona correctamente el recalculo de clusters ya que el mapa no está montado\n * y no se dispara el evento de zoom_changed por lo que necesitamos recalcular los clusters a mano para que al volver al mapa\n * estén los clusters correspondientes al nuevo zoom.\n */\n const handleClusterClick = (point: Points, isCluster?: boolean, recalculateClusters?: boolean) => {\n // breakCluster(clusterId);\n const parentCluster = clusters.find(\n (cluster) =>\n cluster.properties.cluster && (cluster.id === point.properties.parent_cluster_id || cluster.id === point.id)\n );\n if (parentCluster) {\n handleSelectedPoint(point);\n\n // Cálculo del zoom mínimo de exapansión + 1 para que se vean correctamente los nuevos pines en el mapa.\n const expansionZoom =\n isCluster && parentCluster.properties.point_count > 2\n ? mapMaxZoom - 3\n : Math.min(superClusterRef.current.getClusterExpansionZoom(parentCluster.id), mapMaxZoom);\n\n const center = createLatLng(point.geometry.coordinates[1], point.geometry.coordinates[0]);\n\n mapRef.current.setCenter(center);\n mapRef.current.setZoom(expansionZoom);\n zoomRef.current = expansionZoom;\n\n if (recalculateClusters || recalculateClusters === undefined) {\n setMapClusters(points, expansionZoom, boundsRef.current, center);\n }\n } else {\n handlePointClickAndCarouselMove(point, false);\n }\n };\n\n const resetCardReferences = () => {\n cardsDistanceRef.current = [];\n cardsTimeRef.current = [];\n };\n\n /**\n * Comprueba si el point se encuentra dentro o fuera de los límites para centrar el mapa en caso de que esté fuera.\n * @param point\n */\n const checkIfPointIsInsideBounds = (point: Points): boolean => {\n const bounds = getBounds();\n if (bounds.contains(getLatLngFromPoint(point))) {\n return true;\n } else {\n return false;\n }\n };\n\n /**\n * Si el pin se encuentra visualmente fuera de los límites del mapa hay que moverlo para que aparezca entero.\n */\n const moveMapIfIsSlightlyOutBounds = (point: Points) => {\n const lat = point.geometry.coordinates[1];\n const lng = point.geometry.coordinates[0];\n const { north, east, south, west } = getCardinalPoints(getBounds());\n const pointLatLng = getLatLngFromPoint(point);\n const northPoint = createLatLng(north, lng);\n const eastPoint = createLatLng(lat, east);\n const southPoint = createLatLng(south, lng);\n const westPoint = createLatLng(lat, west);\n\n const northDistance = distanceInPx(pointLatLng, northPoint);\n const eastDistance = distanceInPx(pointLatLng, eastPoint);\n const southDistance = distanceInPx(pointLatLng, southPoint);\n const westDistance = distanceInPx(pointLatLng, westPoint);\n\n let y = calculateY(northDistance, southDistance);\n let x = null;\n\n if (eastDistance < markerDimensions.width) {\n x = calculateEastDistance(eastDistance, southDistance);\n }\n if (westDistance < markerDimensions.width) {\n x = -markerDimensions.width;\n }\n if (x || y) {\n mapRef.current.panBy(x, y);\n }\n };\n\n const calculateY = (northDistance: number, southDistance: number) => {\n const south = calculateSouthDistance(southDistance);\n const north = -calculateNorthDistance(northDistance);\n\n if (south) {\n return south;\n }\n return north;\n };\n\n /**\n * Este cálculo se realiza por separado ya que en mobile está el carousel por encima y requiere más lógica.\n * @param southDistance\n */\n const calculateSouthDistance = (southDistance: number): number | null => {\n if (window.innerWidth < 960) {\n if (southDistance < markerDimensions.height + 220) {\n return markerDimensions.height + 220;\n }\n } else {\n if (southDistance < markerDimensions.height) {\n return markerDimensions.height;\n }\n }\n return 0;\n };\n\n const calculateNorthDistance = (northDistance: number): number | null => {\n if (window.innerWidth < 960) {\n if (northDistance < markerDimensions.height + 100) {\n return markerDimensions.height + 100;\n }\n } else {\n if (northDistance < markerDimensions.height + 56) {\n return markerDimensions.height + 56;\n } else {\n return 0;\n }\n }\n return 0;\n };\n\n const calculateEastDistance = (eastDistance: number, southDistance: number): number | null => {\n if (window.innerWidth < 959) {\n if (eastDistance < markerDimensions.width + 69 && southDistance < markerDimensions.height + 197) {\n return markerDimensions.width + 69;\n } else {\n return markerDimensions.height;\n }\n } else {\n return markerDimensions.width;\n }\n };\n /**\n * Devuelve la distancia en píxels entre dos puntos del mapa.\n *\n * @param position1\n * @param position2\n */\n const distanceInPx = (position1: google.maps.LatLng, position2: google.maps.LatLng) => {\n var p1 = mapRef.current.getProjection().fromLatLngToPoint(position1);\n var p2 = mapRef.current.getProjection().fromLatLngToPoint(position2);\n\n var pixelSize = Math.pow(2, -mapRef.current.getZoom());\n\n var d = Math.sqrt((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y)) / pixelSize;\n\n return d;\n };\n\n /**\n * Dibuja las bounds en el mapa.\n * @param bounds\n */\n const drawRectangle = () => {\n new mapsRef.current.Rectangle({\n strokeColor: '#FF0000',\n strokeOpacity: 0, //debug ? 0.8 : 0,\n strokeWeight: 2,\n fillColor: '#FF0000',\n fillOpacity: 0, //debug ? 0.35 : 0,\n map: mapRef.current,\n bounds: getBounds(),\n });\n };\n\n const centerInGeoLocatedCenter = useCallback(() => {\n mapRef.current.setCenter(geoLocatedCenterRef.current);\n }, []);\n\n const centerMap = useCallback((newCenter: google.maps.LatLng) => {\n mapRef.current.setCenter(newCenter);\n }, []);\n\n const handleMapMovement = () => {\n if (!mapHasMoved) {\n setMapHasMoved(true);\n }\n };\n\n return (\n \n {children}\n \n );\n }\n);\n\nconst mapStateToProps = (state: OneFormState) => {\n return {\n points: getPoints(state),\n geometry: getGeometry(state),\n userSuggestion: getUserSuggestion(state),\n userGeolocation: getUserGeolocation(state),\n };\n};\n\nconst ConnectedComponent = connect(mapStateToProps)(MapGeneralController);\n\nexport { ConnectedComponent as MapGeneralController };\n","/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { Integration } from '@sentry/types';\n\nimport { isNodeEnv } from './node';\n\n/** Internal */\ninterface SentryGlobal {\n Sentry?: {\n Integrations?: Integration[];\n };\n SENTRY_ENVIRONMENT?: string;\n SENTRY_DSN?: string;\n SENTRY_RELEASE?: {\n id?: string;\n };\n __SENTRY__: {\n globalEventProcessors: any;\n hub: any;\n logger: any;\n };\n}\n\nconst fallbackGlobalObject = {};\n\n/**\n * Safely get global scope object\n *\n * @returns Global scope object\n */\nexport function getGlobalObject(): T & SentryGlobal {\n return (\n isNodeEnv()\n ? global\n : typeof window !== 'undefined' // eslint-disable-line no-restricted-globals\n ? window // eslint-disable-line no-restricted-globals\n : typeof self !== 'undefined'\n ? self\n : fallbackGlobalObject\n ) as T & SentryGlobal;\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","import {\n ModelFilter,\n resolveMarketingCode,\n StoredConfigurationResponse,\n} from '@volkswagen-onehub/library-services-marketingcode';\nimport { reportErrorSentry } from 'src/bff';\nimport { TrackingConfiguration } from 'src/feature-app';\n\nexport interface MarketingCodeFields {\n 'fields[COD_VEH_SALESGROUP]': string;\n 'fields[DESC_VEH_SALESGROUP]': string;\n 'fields[DESC_TRIM_LINE]': string;\n 'fields[COD_VEH_TMAIMG]': string;\n 'fields[DESC_VEH_TMAIMG]': string;\n 'fields[DESC_VEH_MARKETING_CODE]': string;\n 'fields[COD_VEH_COLOR]': string;\n 'fields[DESC_VEH_COLOR]': string;\n 'fields[COD_VEH_COLOR_INT]': string;\n 'fields[DESC_VEH_COLOR_INT]': string;\n 'fields[COD_VEH_WHEELS]': string;\n 'fields[DESC_VEH_WHEELS]': string;\n}\n\nexport interface MarketingCodeHistory {\n marketingCode: string;\n marketingCodeConfig: TrackingConfiguration;\n fields: MarketingCodeFields;\n response: StoredConfigurationResponse;\n}\nlet marketingCodeHistory: MarketingCodeHistory[] = [];\n\nexport const getMarketingCode = async (\n marketingCode: string\n): Promise<{\n marketingCodeConfig: TrackingConfiguration;\n fields: MarketingCodeFields;\n response: StoredConfigurationResponse;\n}> => {\n // await delayRequest();\n const offerInHistory = marketingCodeHistory.find((offer) => offer.marketingCode === marketingCode);\n\n if (offerInHistory) {\n return {\n marketingCodeConfig: offerInHistory.marketingCodeConfig,\n fields: offerInHistory.fields,\n response: offerInHistory.response,\n };\n } else {\n const { marketingCodeConfig, fields, response } = await receiveMarketingCode(marketingCode);\n const history: MarketingCodeHistory = { marketingCode, marketingCodeConfig, fields, response };\n marketingCodeHistory.push(history);\n return { marketingCodeConfig, fields, response };\n }\n};\n\nexport const getFeatures = (features: { code: string }[]) => {\n if (!features) return [];\n return features.map((feature) => feature.code);\n};\n\nexport const getEquipmentlineName = (modelFilters: ModelFilter[]) => {\n if (!modelFilters) return '';\n const modelFilter: ModelFilter = modelFilters.find((modelFilter: ModelFilter) => {\n if (modelFilter.type === 'EquipmentLine') return modelFilter;\n });\n\n return modelFilter ? modelFilter.text : undefined;\n};\n\nexport const getWheelsParams = (features: { code: string; name: string }[]) => {\n if (!features) return { COD_VEH_WHEELS: '', DESC_VEH_WHEELS: '' };\n const wheel = features.find((feature) => feature.code.startsWith('MRAD'));\n\n const COD_VEH_WHEELS = wheel?.code ? wheel.code : undefined;\n const DESC_VEH_WHEELS = wheel?.name ? wheel.name : undefined;\n return { COD_VEH_WHEELS, DESC_VEH_WHEELS };\n};\n\nexport const getWheels = (features: { code: string; name: string }[]) => {\n const { COD_VEH_WHEELS, DESC_VEH_WHEELS } = getWheelsParams(features);\n\n return { 'fields[COD_VEH_WHEELS]': COD_VEH_WHEELS, 'fields[DESC_VEH_WHEELS]': DESC_VEH_WHEELS.slice(0, 65) };\n};\n\nclass ErrorLoadStorageDataset extends Error {\n constructor(message: any) {\n super(message);\n this.name = 'ErrorLoadStorageDataset';\n }\n}\n\nexport const receiveMarketingCode = async (\n marketingCode: string\n): Promise<{ marketingCodeConfig: TrackingConfiguration; fields: any; response: StoredConfigurationResponse }> => {\n try {\n const response = await resolveMarketingCode(\n { name: '', origin: 'https://cdn.venividivicci.de', path: '/vgs' },\n {},\n marketingCode\n );\n\n const marketingCodeConfig: TrackingConfiguration = {\n SalesgroupId: response.vehicleConfiguration.salesgroupKey,\n SalesgroupName: response.consolidatedData.salesgroupName,\n EquipmentlineName: getEquipmentlineName(response.consolidatedData.modelFilters),\n ModelId: response.vehicleConfiguration.modelKey.split('$')[0],\n ModelName: response.consolidatedData.modelName,\n ModelYear: response.vehicleConfiguration.modelYear,\n };\n\n const fields: MarketingCodeFields = {\n 'fields[COD_VEH_SALESGROUP]': response.consolidatedData?.salesgroupKey,\n 'fields[DESC_VEH_SALESGROUP]': response.consolidatedData?.salesgroupName,\n 'fields[DESC_TRIM_LINE]': getEquipmentlineName(response.consolidatedData?.modelFilters),\n 'fields[COD_VEH_TMAIMG]': response.consolidatedData?.modelKey.split('$')[0],\n 'fields[DESC_VEH_TMAIMG]': response.consolidatedData?.modelName,\n // 'fields[DESC_VEH_MARKETING_CODE]': marketingCode,\n 'fields[COD_VEH_COLOR]': response.consolidatedData?.exterior?.code,\n 'fields[DESC_VEH_COLOR]': response.consolidatedData?.exterior?.name,\n 'fields[COD_VEH_COLOR_INT]': response.consolidatedData?.interior?.code,\n 'fields[DESC_VEH_COLOR_INT]': response.consolidatedData?.interior?.name,\n ...getWheels(response.expandedConfiguration?.features),\n };\n\n return { marketingCodeConfig, fields, response };\n } catch (error) {\n const errorMkc = new ErrorLoadStorageDataset(error);\n reportErrorSentry(errorMkc);\n }\n};\n\n/**\n * Necesitamos retrasar la request ya que se llama desde muchos sitios al mismo tiempo, por lo que se producen llamadas\n * innecesarias. Esta función simplemente espera a que de tiempo a resolver el marketing code y se la siguiente llamada\n * ya encuentre el resultado de la request anterior en el objeto de historia.\n */\nexport const delayRequest = async () =>\n new Promise((resolve) => {\n setTimeout(resolve, 1000);\n });\n","/**\r\n * Checks whether the entire input sequence can be matched\r\n * against the regular expression.\r\n * @return {boolean}\r\n */\r\nexport default function matchesEntirely(text, regular_expression) {\r\n\t// If assigning the `''` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\ttext = text || ''\r\n\treturn new RegExp('^(?:' + regular_expression + ')$').test(text)\r\n}","import { ServiceConfigurationV1 } from '@volkswagen-onehub/service-config-provider';\nimport { getDataServiceConfig } from 'src/feature-app';\n\nconst handleErrorInRetrievingExternalConfig = (): null => {\n console.error('Error retrieving Volkswagen Data service config provider.');\n return null;\n};\n\nexport const getTenant = (dataService: ServiceConfigurationV1) => {\n return isPrivate(dataService)\n ? dataService.tenantPrivate\n : isCommercial(dataService)\n ? dataService.tenantCommercial\n : null;\n};\n\nexport const isCommercial = (dataService: ServiceConfigurationV1) => dataService.customConfig?.brand === 'N';\nexport const isPrivate = (dataService: ServiceConfigurationV1) => dataService.customConfig?.brand === 'V';\n\nexport const checkTenant = (dataService: ServiceConfigurationV1) => {\n const tenant = getTenant(dataService);\n\n return tenant ? `/${tenant}` : '';\n};\n\nexport const getDataUrl = (): string | null => {\n const data = getDataServiceConfig();\n\n if (!data) {\n return handleErrorInRetrievingExternalConfig();\n }\n\n return `${data.urlOrigin}${data.urlPath}${checkTenant(data)}`;\n};\n\nexport const getDataUrlWithoutTenant = (): string | null => {\n const data = getDataServiceConfig();\n\n if (!data) {\n return handleErrorInRetrievingExternalConfig();\n }\n\n return `${data.urlOrigin}${data.urlPath}`;\n};\n","import React, { Ref, SyntheticEvent, useEffect, useState } from 'react';\nimport { TextInput, InputAppearance, TextInputProps } from '@volkswagen-onehub/components-core';\nimport { useFormContext } from 'react-hook-form';\nimport { useFeatureServices, useOneFormContext, useTrackingManager } from 'src/feature-app';\nimport { FieldType } from 'src/feature-service/es-oneform-core-feature-service/types';\nimport { useSelector } from 'react-redux';\nimport { OneFormState } from 'src/types';\n\nexport interface TextInputExtendedProps extends TextInputProps {\n name: FieldType;\n innerRef?: Ref;\n /**\n * En caso de que el input esté junto con un CTA, se debe de pasar el label del CTA para en caso de que se seleccione el CTA no se refleje en el input.\n */\n alternateCTAText?: string;\n type?: string;\n disabled?: boolean;\n // errors: any;\n}\n\nexport function TextInputExtended(props: TextInputExtendedProps) {\n const { innerRef, name, onBlur, required, alternateCTAText, onChange, label, type, onFocus, disabled } = props;\n const { errors, register, setValue } = useFormContext();\n const { handleNextStep } = useOneFormContext();\n const trackingManager = useTrackingManager();\n\n const oneFormFeatureService = useFeatureServices()['es:oneform-core'];\n const { formData } = useSelector((state: OneFormState) => state);\n const [currentValue, setCurrentValue] = useState('');\n\n useEffect(() => {\n const value = formData.fields[name];\n\n if (value && value !== alternateCTAText) {\n setCurrentValue(value);\n }\n }, []);\n\n const centerInputInMobile = (target: EventTarget & HTMLInputElement) => {\n if (target && window.innerWidth < 959) {\n target.scrollIntoView({ block: 'center' });\n }\n };\n\n return (\n ) => {\n setCurrentValue(e.currentTarget.value);\n if (onChange) {\n onChange(e);\n }\n }}\n onBlur={(e: SyntheticEvent) => {\n if (onBlur) onBlur(e);\n setValue(name, e.currentTarget.value);\n oneFormFeatureService.setField(name, e.currentTarget.value);\n }}\n onFocus={(e: any) => {\n centerInputInMobile(e.target);\n trackingManager.trackFormFieldClick(\n {\n contentId: label,\n },\n {\n FormFieldName: name,\n }\n );\n if (onFocus) {\n onFocus(e);\n }\n }}\n type={type ? type : 'text'}\n isFloating={!currentValue ? true : false}\n value={currentValue}\n />\n );\n}\n","import React, { useEffect, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { InputError } from 'src/components';\nimport { TextInputExtended } from './TextInputExtended';\nimport { useOnlyLettersControl } from './use-only-letters-control';\n\ninterface ApellidoProps {\n name?: 'surname' | 'secondSurname';\n label?: string;\n required?: boolean;\n}\n\nexport function Apellido(props: ApellidoProps) {\n const { register, errors } = useFormContext();\n const { name, label, required } = props;\n const [inputValue, setInputValue] = useState('');\n const [pristine, setPristine] = useState(true);\n const { error, regExp } = useOnlyLettersControl(pristine, inputValue);\n\n const innerRef = required\n ? register({\n required: {\n value: true,\n message: 'Requerido',\n },\n pattern: {\n value: regExp,\n message: 'Solo se aceptan letras',\n },\n })\n : register;\n\n const handleChange = (e: any) => {\n setInputValue(e.target.value);\n setPristine(false);\n };\n\n return (\n
    \n handleChange(e)}\n required={required}\n />\n {error && Solo se aceptan letras}\n
    \n );\n}\n","import React, { useEffect, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { TextInputExtended, GeneralInputWidthWrapper } from 'src/components';\nimport { useOneFormContext } from 'src/feature-app/OneForm';\nimport { FeatureAppEnvironment } from '@feature-hub/core';\nimport { CloseHandleV2, FocusLayerSizeV2, LayerManagerV2 } from '@volkswagen-onehub/layer-manager';\nimport { useStore } from 'react-redux';\nimport { AnyAction, Store } from 'redux';\nimport { LayerManagerWrapper, useFeatureAppEnvironment, useFeatureServices } from 'src/feature-app';\n\nimport {\n Container,\n ContainerGutter,\n ContainerPadding,\n ContainerWrap,\n CTA,\n Text,\n TextAppearance,\n} from '@volkswagen-onehub/components-core';\n\ninterface EdadProps {\n notALayer?: boolean;\n}\n\nexport const EdadInputText = (props: EdadProps) => {\n const { register, clearError } = useFormContext();\n const [inputValue, setInputValue] = useState('');\n const [pristine, setPristine] = useState(true);\n const regExp = /^(1[89]|[2-9][0-9])$/g;\n const { error, setError } = useOneFormContext();\n const [ageError, setAgeError] = useState(false);\n const [errorMessage, setErrorMessage] = useState('');\n\n const store = useStore();\n const env = useFeatureAppEnvironment();\n const layerManager = useFeatureServices()['layer-manager'];\n\n const isLegalAge = (age: number) => age >= 18;\n\n const checkAgeError = (value: string) => {\n return !pristine && !regExp.test(value) && value?.length > 1 && !isLegalAge(Number(value));\n };\n\n const handleChange = (e: any) => {\n setInputValue(e.target.value);\n setPristine(false);\n };\n\n useEffect(() => {\n if (checkAgeError(inputValue)) {\n if (!isLegalAge(Number(inputValue))) {\n setErrorMessage('Copy mayor de edad');\n } else {\n setErrorMessage('Solo se aceptan números');\n }\n setAgeError(true);\n } else {\n clearError();\n setAgeError(false);\n setError(false);\n }\n }, [inputValue, pristine]);\n\n useEffect(() => {\n if ((!inputValue && error) || (error && checkAgeError(inputValue))) {\n setAgeError(true);\n renderAvisoMenorDeEdad(store, env, layerManager);\n } else {\n setAgeError(false);\n }\n }, [error]);\n\n return (\n \n
    \n handleChange(e)}\n required\n />\n
    \n {/*{ageError && {errorMessage}}*/}\n
    \n );\n};\n\n\n\nconst AvisoMenorDeEdad = ({ close }: { close: CloseHandleV2 }) => {\n const [href, setHref] = useState(null);\n const [copy, setCopy] = useState(null);\n\n return (\n \n \n \n Vaya… Todavía no eres mayor de edad\n \n \n Y aunque no puedas participar, esperamos que en el futuro podamos ayudarte a vivir cosas fuera de lo común.\n \n \n \n \n Conoce mejor el Nuevo Taigo\n \n \n \n );\n};\n\nconst renderAvisoMenorDeEdad = (\n store: Store,\n env: FeatureAppEnvironment,\n layerManager: LayerManagerV2\n) => {\n\n const render = (state: any, close: CloseHandleV2) => {\n return (\n \n \n \n );\n };\n\n layerManager.openFocusLayer(\n render,\n {},\n { size: FocusLayerSizeV2.B, userCloseable: true }\n );\n};\n\n","import React, { useEffect, useRef, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { InputError } from 'src/components';\nimport { TextInputExtended } from 'src/components';\nimport { GeneralInputWidthWrapper } from 'src/components';\nimport { useOneFormContext } from 'src/feature-app/OneForm';\n\ninterface emailProps {\n paginaConfirmacion?: boolean;\n ignoreValidation?: boolean;\n required?: boolean;\n notALayer?: boolean;\n name?: string;\n label?: string;\n disabled?: boolean;\n paddingTop?: string;\n}\n\nexport function Email(props: emailProps) {\n const { paginaConfirmacion, ignoreValidation, required, notALayer, name, label, disabled, paddingTop } = props;\n\n const { register, errors } = useFormContext();\n const [inputValue, setInputValue] = useState('');\n const [pristine, setPristine] = useState(true);\n const [emailError, setEmailError] = useState(false);\n const regExp =\n /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n const { error, setError } = useOneFormContext();\n\n const checkEmailError = (value: string) => !pristine && !regExp.test(value) && value?.length > 2;\n const handleChange = (e: any) => {\n setInputValue(e.target.value);\n setPristine(false);\n };\n\n useEffect(() => {\n if (checkEmailError(inputValue)) {\n setEmailError(true);\n } else {\n setEmailError(false);\n setError(false);\n }\n }, [inputValue, pristine]);\n\n useEffect(() => {\n if ((!inputValue && error) || (error && checkEmailError(inputValue))) {\n setEmailError(true);\n } else {\n setEmailError(false);\n }\n }, [error]);\n\n return (\n \n handleChange(e)}\n required={required}\n disabled={disabled}\n />\n {emailError && Ejemplo: nombre@email.com}\n \n );\n}\n","import { styled } from '@volkswagen-onehub/components-core';\n\ntype InputErrorProps = {\n relative?: boolean;\n maxWidth?: string;\n};\n\nexport const InputError = styled.p`\n position: relative;\n margin-top: 6px;\n background-color: #e4002c;\n color: #FFFFFF;\n /* width: max-content; */\n width: 100%;\n max-width: ${(props) => props.maxWidth ? props.maxWidth : '280px'};\n padding: 4px 8px;\n min-height: 24px;\n border-radius: 4px;\n font-size: 12px;\n text-align: left;\n @media all and (min-width: 560px) {\n max-width: ${(props) => props.maxWidth ? props.maxWidth : '303px'};\n }\n @media all and (min-width: 960px) {\n max-width: ${(props) => props.maxWidth ? props.maxWidth : '320px'};\n }\n`;\n","import React, { useEffect, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { InputError, TextInputExtended } from 'src/components';\nimport { useOnlyLettersControl } from './use-only-letters-control';\n\nexport function Nombre() {\n const { register } = useFormContext();\n const [inputValue, setInputValue] = useState('');\n const [pristine, setPristine] = useState(true);\n const { error, regExp } = useOnlyLettersControl(pristine, inputValue);\n\n const handleChange = (e: any) => {\n setInputValue(e.target.value);\n setPristine(false);\n };\n\n return (\n
    \n handleChange(e)}\n required\n />\n {error && Solo se aceptan letras}\n
    \n );\n}\n","import metadata from '../metadata'\r\nimport { Metadata as _Metadata } from '../../core/index'\r\n\r\nexport function Metadata() {\r\n\treturn _Metadata.call(this, metadata)\r\n}\r\n\r\nMetadata.prototype = Object.create(_Metadata.prototype, {})\r\nMetadata.prototype.constructor = Metadata","export default class AsYouTypeState {\r\n\tconstructor({ onCountryChange, onCallingCodeChange }) {\r\n\t\tthis.onCountryChange = onCountryChange\r\n\t\tthis.onCallingCodeChange = onCallingCodeChange\r\n\t}\r\n\r\n\treset(defaultCountry, defaultCallingCode) {\r\n\t\tthis.international = false\r\n\t\tthis.IDDPrefix = undefined\r\n\t\tthis.missingPlus = undefined\r\n\t\tthis.callingCode = undefined\r\n\t\tthis.digits = ''\r\n\t\tthis.resetNationalSignificantNumber()\r\n\t\tthis.initCountryAndCallingCode(defaultCountry, defaultCallingCode)\r\n\t}\r\n\r\n\tresetNationalSignificantNumber() {\r\n\t\tthis.nationalSignificantNumber = this.getNationalDigits()\r\n\t\tthis.nationalSignificantNumberMatchesInput = true\r\n\t\tthis.nationalPrefix = undefined\r\n\t\tthis.carrierCode = undefined\r\n\t\tthis.complexPrefixBeforeNationalSignificantNumber = undefined\r\n\t}\r\n\r\n\tupdate = (properties) => {\r\n\t\tfor (const key of Object.keys(properties)) {\r\n\t\t\tthis[key] = properties[key]\r\n\t\t}\r\n\t}\r\n\r\n\tinitCountryAndCallingCode(country, callingCode) {\r\n\t\tthis.setCountry(country)\r\n\t\tthis.setCallingCode(callingCode)\r\n\t}\r\n\r\n\tsetCountry(country) {\r\n\t\tthis.country = country\r\n\t\tthis.onCountryChange(country)\r\n\t}\r\n\r\n\tsetCallingCode(callingCode) {\r\n\t\tthis.callingCode = callingCode\r\n\t\treturn this.onCallingCodeChange(this.country, callingCode)\r\n\t}\r\n\r\n\tstartInternationalNumber() {\r\n\t\t// Prepend the `+` to parsed input.\r\n\t\tthis.international = true\r\n\t\t// If a default country was set then reset it\r\n\t\t// because an explicitly international phone\r\n\t\t// number is being entered.\r\n\t\tthis.initCountryAndCallingCode()\r\n\t}\r\n\r\n\tappendDigits(nextDigits) {\r\n\t\tthis.digits += nextDigits\r\n\t}\r\n\r\n\tappendNationalSignificantNumberDigits(nextDigits) {\r\n\t\tthis.nationalSignificantNumber += nextDigits\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the part of `this.digits` that corresponds to the national number.\r\n\t * Basically, all digits that have been input by the user, except for the\r\n\t * international prefix and the country calling code part\r\n\t * (if the number is an international one).\r\n\t * @return {string}\r\n\t */\r\n\tgetNationalDigits() {\r\n\t\tif (this.international) {\r\n\t\t\treturn this.digits.slice(\r\n\t\t\t\t(this.IDDPrefix ? this.IDDPrefix.length : 0) +\r\n\t\t\t\t(this.callingCode ? this.callingCode.length : 0)\r\n\t\t\t)\r\n\t\t}\r\n\t\treturn this.digits\r\n\t}\r\n\r\n\tgetDigitsWithoutInternationalPrefix() {\r\n\t\tif (this.international) {\r\n\t\t\tif (this.IDDPrefix) {\r\n\t\t\t\treturn this.digits.slice(this.IDDPrefix.length)\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.digits\r\n\t}\r\n}","// Should be the same as `DIGIT_PLACEHOLDER` in `libphonenumber-metadata-generator`.\r\nexport const DIGIT_PLACEHOLDER = 'x' // '\\u2008' (punctuation space)\r\nconst DIGIT_PLACEHOLDER_MATCHER = new RegExp(DIGIT_PLACEHOLDER)\r\n\r\n// Counts all occurences of a symbol in a string.\r\n// Unicode-unsafe (because using `.split()`).\r\nexport function countOccurences(symbol, string) {\r\n\tlet count = 0\r\n\t// Using `.split('')` to iterate through a string here\r\n\t// to avoid requiring `Symbol.iterator` polyfill.\r\n\t// `.split('')` is generally not safe for Unicode,\r\n\t// but in this particular case for counting brackets it is safe.\r\n\t// for (const character of string)\r\n\tfor (const character of string.split('')) {\r\n\t\tif (character === symbol) {\r\n\t\t\tcount++\r\n\t\t}\r\n\t}\r\n\treturn count\r\n}\r\n\r\n// Repeats a string (or a symbol) N times.\r\n// http://stackoverflow.com/questions/202605/repeat-string-javascript\r\nexport function repeat(string, times) {\r\n\tif (times < 1) {\r\n\t\treturn ''\r\n\t}\r\n\tlet result = ''\r\n\twhile (times > 1) {\r\n\t\tif (times & 1) {\r\n\t\t\tresult += string\r\n\t\t}\r\n\t\ttimes >>= 1\r\n\t\tstring += string\r\n\t}\r\n\treturn result + string\r\n}\r\n\r\nexport function cutAndStripNonPairedParens(string, cutBeforeIndex) {\r\n\tif (string[cutBeforeIndex] === ')') {\r\n\t\tcutBeforeIndex++\r\n\t}\r\n\treturn stripNonPairedParens(string.slice(0, cutBeforeIndex))\r\n}\r\n\r\nexport function closeNonPairedParens(template, cut_before) {\r\n\tconst retained_template = template.slice(0, cut_before)\r\n\tconst opening_braces = countOccurences('(', retained_template)\r\n\tconst closing_braces = countOccurences(')', retained_template)\r\n\tlet dangling_braces = opening_braces - closing_braces\r\n\twhile (dangling_braces > 0 && cut_before < template.length) {\r\n\t\tif (template[cut_before] === ')') {\r\n\t\t\tdangling_braces--\r\n\t\t}\r\n\t\tcut_before++\r\n\t}\r\n\treturn template.slice(0, cut_before)\r\n}\r\n\r\nexport function stripNonPairedParens(string) {\r\n\tconst dangling_braces =[]\r\n\tlet i = 0\r\n\twhile (i < string.length) {\r\n\t\tif (string[i] === '(') {\r\n\t\t\tdangling_braces.push(i)\r\n\t\t}\r\n\t\telse if (string[i] === ')') {\r\n\t\t\tdangling_braces.pop()\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\tlet start = 0\r\n\tlet cleared_string = ''\r\n\tdangling_braces.push(string.length)\r\n\tfor (const index of dangling_braces) {\r\n\t\tcleared_string += string.slice(start, index)\r\n\t\tstart = index + 1\r\n\t}\r\n\treturn cleared_string\r\n}\r\n\r\nexport function populateTemplateWithDigits(template, position, digits) {\r\n\t// Using `.split('')` to iterate through a string here\r\n\t// to avoid requiring `Symbol.iterator` polyfill.\r\n\t// `.split('')` is generally not safe for Unicode,\r\n\t// but in this particular case for `digits` it is safe.\r\n\t// for (const digit of digits)\r\n\tfor (const digit of digits.split('')) {\r\n\t\t// If there is room for more digits in current `template`,\r\n\t\t// then set the next digit in the `template`,\r\n\t\t// and return the formatted digits so far.\r\n\t\t// If more digits are entered than the current format could handle.\r\n\t\tif (template.slice(position + 1).search(DIGIT_PLACEHOLDER_MATCHER) < 0) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tposition = template.search(DIGIT_PLACEHOLDER_MATCHER)\r\n\t\ttemplate = template.replace(DIGIT_PLACEHOLDER_MATCHER, digit)\r\n\t}\r\n\treturn [template, position]\r\n}","import checkNumberLength from './helpers/checkNumberLength'\r\nimport parseDigits from './helpers/parseDigits'\r\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat'\r\n\r\nexport default function formatCompleteNumber(state, format, {\r\n\tmetadata,\r\n\tshouldTryNationalPrefixFormattingRule,\r\n\tgetSeparatorAfterNationalPrefix\r\n}) {\r\n\tconst matcher = new RegExp(`^(?:${format.pattern()})$`)\r\n\tif (matcher.test(state.nationalSignificantNumber)) {\r\n\t\treturn formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(\r\n\t\t\tstate,\r\n\t\t\tformat,\r\n\t\t\t{\r\n\t\t\t\tmetadata,\r\n\t\t\t\tshouldTryNationalPrefixFormattingRule,\r\n\t\t\t\tgetSeparatorAfterNationalPrefix\r\n\t\t\t}\r\n\t\t)\r\n\t}\r\n}\r\n\r\nexport function canFormatCompleteNumber(nationalSignificantNumber, metadata) {\r\n\treturn checkNumberLength(nationalSignificantNumber, metadata) === 'IS_POSSIBLE'\r\n}\r\n\r\nfunction formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(state, format, {\r\n\tmetadata,\r\n\tshouldTryNationalPrefixFormattingRule,\r\n\tgetSeparatorAfterNationalPrefix\r\n}) {\r\n\t// `format` has already been checked for `nationalPrefix` requirement.\r\n\r\n\tconst {\r\n\t\tnationalSignificantNumber,\r\n\t\tinternational,\r\n\t\tnationalPrefix,\r\n\t\tcarrierCode\r\n\t} = state\r\n\r\n\t// Format the number with using `national_prefix_formatting_rule`.\r\n\t// If the resulting formatted number is a valid formatted number, then return it.\r\n\t//\r\n\t// Google's AsYouType formatter is different in a way that it doesn't try\r\n\t// to format using the \"national prefix formatting rule\", and instead it\r\n\t// simply prepends a national prefix followed by a \" \" character.\r\n\t// This code does that too, but as a fallback.\r\n\t// The reason is that \"national prefix formatting rule\" may use parentheses,\r\n\t// which wouldn't be included has it used the simpler Google's way.\r\n\t//\r\n\tif (shouldTryNationalPrefixFormattingRule(format)) {\r\n\t\tconst formattedNumber = formatNationalNumber(state, format, {\r\n\t\t\tuseNationalPrefixFormattingRule: true,\r\n\t\t\tgetSeparatorAfterNationalPrefix,\r\n\t\t\tmetadata\r\n\t\t})\r\n\t\tif (formattedNumber) {\r\n\t\t\treturn formattedNumber\r\n\t\t}\r\n\t}\r\n\r\n\t// Format the number without using `national_prefix_formatting_rule`.\r\n\treturn formatNationalNumber(state, format, {\r\n\t\tuseNationalPrefixFormattingRule: false,\r\n\t\tgetSeparatorAfterNationalPrefix,\r\n\t\tmetadata\r\n\t})\r\n}\r\n\r\nfunction formatNationalNumber(state, format, {\r\n\tmetadata,\r\n\tuseNationalPrefixFormattingRule,\r\n\tgetSeparatorAfterNationalPrefix\r\n}) {\r\n\tlet formattedNationalNumber = formatNationalNumberUsingFormat(\r\n\t\tstate.nationalSignificantNumber,\r\n\t\tformat,\r\n\t\t{\r\n\t\t\tcarrierCode: state.carrierCode,\r\n\t\t\tuseInternationalFormat: state.international,\r\n\t\t\twithNationalPrefix: useNationalPrefixFormattingRule,\r\n\t\t\tmetadata\r\n\t\t}\r\n\t)\r\n\tif (!useNationalPrefixFormattingRule) {\r\n\t\tif (state.nationalPrefix) {\r\n\t\t\t// If a national prefix was extracted, then just prepend it,\r\n\t\t\t// followed by a \" \" character.\r\n\t\t\tformattedNationalNumber = state.nationalPrefix +\r\n\t\t\t\tgetSeparatorAfterNationalPrefix(format) +\r\n\t\t\t\tformattedNationalNumber\r\n\t\t} else if (state.complexPrefixBeforeNationalSignificantNumber) {\r\n\t\t\tformattedNationalNumber = state.complexPrefixBeforeNationalSignificantNumber +\r\n\t\t\t\t' ' +\r\n\t\t\t\tformattedNationalNumber\r\n\t\t}\r\n\t}\r\n\tif (isValidFormattedNationalNumber(formattedNationalNumber, state)) {\r\n\t\treturn formattedNationalNumber\r\n\t}\r\n}\r\n\r\n// Check that the formatted phone number contains exactly\r\n// the same digits that have been input by the user.\r\n// For example, when \"0111523456789\" is input for `AR` country,\r\n// the extracted `this.nationalSignificantNumber` is \"91123456789\",\r\n// which means that the national part of `this.digits` isn't simply equal to\r\n// `this.nationalPrefix` + `this.nationalSignificantNumber`.\r\n//\r\n// Also, a `format` can add extra digits to the `this.nationalSignificantNumber`\r\n// being formatted via `metadata[country].national_prefix_transform_rule`.\r\n// For example, for `VI` country, it prepends `340` to the national number,\r\n// and if this check hasn't been implemented, then there would be a bug\r\n// when `340` \"area coude\" is \"duplicated\" during input for `VI` country:\r\n// https://github.com/catamphetamine/libphonenumber-js/issues/318\r\n//\r\n// So, all these \"gotchas\" are filtered out.\r\n//\r\n// In the original Google's code, the comments say:\r\n// \"Check that we didn't remove nor add any extra digits when we matched\r\n// this formatting pattern. This usually happens after we entered the last\r\n// digit during AYTF. Eg: In case of MX, we swallow mobile token (1) when\r\n// formatted but AYTF should retain all the number entered and not change\r\n// in order to match a format (of same leading digits and length) display\r\n// in that way.\"\r\n// \"If it's the same (i.e entered number and format is same), then it's\r\n// safe to return this in formatted number as nothing is lost / added.\"\r\n// Otherwise, don't use this format.\r\n// https://github.com/google/libphonenumber/commit/3e7c1f04f5e7200f87fb131e6f85c6e99d60f510#diff-9149457fa9f5d608a11bb975c6ef4bc5\r\n// https://github.com/google/libphonenumber/commit/3ac88c7106e7dcb553bcc794b15f19185928a1c6#diff-2dcb77e833422ee304da348b905cde0b\r\n//\r\nfunction isValidFormattedNationalNumber(formattedNationalNumber, state) {\r\n\treturn parseDigits(formattedNationalNumber) === state.getNationalDigits()\r\n}","import {\r\n\tDIGIT_PLACEHOLDER,\r\n\tcountOccurences,\r\n\trepeat,\r\n\tcutAndStripNonPairedParens,\r\n\tcloseNonPairedParens,\r\n\tstripNonPairedParens,\r\n\tpopulateTemplateWithDigits\r\n} from './AsYouTypeFormatter.util'\r\n\r\nimport formatCompleteNumber, {\r\n\tcanFormatCompleteNumber\r\n} from './AsYouTypeFormatter.complete'\r\n\r\nimport parseDigits from './helpers/parseDigits'\r\nexport { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter.util'\r\nimport { FIRST_GROUP_PATTERN } from './helpers/formatNationalNumberUsingFormat'\r\nimport { VALID_PUNCTUATION } from './constants'\r\nimport applyInternationalSeparatorStyle from './helpers/applyInternationalSeparatorStyle'\r\n\r\n// Used in phone number format template creation.\r\n// Could be any digit, I guess.\r\nconst DUMMY_DIGIT = '9'\r\n// I don't know why is it exactly `15`\r\nconst LONGEST_NATIONAL_PHONE_NUMBER_LENGTH = 15\r\n// Create a phone number consisting only of the digit 9 that matches the\r\n// `number_pattern` by applying the pattern to the \"longest phone number\" string.\r\nconst LONGEST_DUMMY_PHONE_NUMBER = repeat(DUMMY_DIGIT, LONGEST_NATIONAL_PHONE_NUMBER_LENGTH)\r\n\r\n// A set of characters that, if found in a national prefix formatting rules, are an indicator to\r\n// us that we should separate the national prefix from the number when formatting.\r\nconst NATIONAL_PREFIX_SEPARATORS_PATTERN = /[- ]/\r\n\r\n// Deprecated: Google has removed some formatting pattern related code from their repo.\r\n// https://github.com/googlei18n/libphonenumber/commit/a395b4fef3caf57c4bc5f082e1152a4d2bd0ba4c\r\n// \"We no longer have numbers in formatting matching patterns, only \\d.\"\r\n// Because this library supports generating custom metadata\r\n// some users may still be using old metadata so the relevant\r\n// code seems to stay until some next major version update.\r\nconst SUPPORT_LEGACY_FORMATTING_PATTERNS = true\r\n\r\n// A pattern that is used to match character classes in regular expressions.\r\n// An example of a character class is \"[1-4]\".\r\nconst CREATE_CHARACTER_CLASS_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && (() => /\\[([^\\[\\]])*\\]/g)\r\n\r\n// Any digit in a regular expression that actually denotes a digit. For\r\n// example, in the regular expression \"80[0-2]\\d{6,10}\", the first 2 digits\r\n// (8 and 0) are standalone digits, but the rest are not.\r\n// Two look-aheads are needed because the number following \\\\d could be a\r\n// two-digit number, since the phone number can be as long as 15 digits.\r\nconst CREATE_STANDALONE_DIGIT_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && (() => /\\d(?=[^,}][^,}])/g)\r\n\r\n// A regular expression that is used to determine if a `format` is\r\n// suitable to be used in the \"as you type formatter\".\r\n// A `format` is suitable when the resulting formatted number has\r\n// the same digits as the user has entered.\r\n//\r\n// In the simplest case, that would mean that the format\r\n// doesn't add any additional digits when formatting a number.\r\n// Google says that it also shouldn't add \"star\" (`*`) characters,\r\n// like it does in some Israeli formats.\r\n// Such basic format would only contain \"valid punctuation\"\r\n// and \"captured group\" identifiers ($1, $2, etc).\r\n//\r\n// An example of a format that adds additional digits:\r\n//\r\n// Country: `AR` (Argentina).\r\n// Format:\r\n// {\r\n// \"pattern\": \"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\r\n// \"leading_digits_patterns\": [\"91\"],\r\n// \"national_prefix_formatting_rule\": \"0$1\",\r\n// \"format\": \"$2 15-$3-$4\",\r\n// \"international_format\": \"$1 $2 $3-$4\"\r\n// }\r\n//\r\n// In the format above, the `format` adds `15` to the digits when formatting a number.\r\n// A sidenote: this format actually is suitable because `national_prefix_for_parsing`\r\n// has previously removed `15` from a national number, so re-adding `15` in `format`\r\n// doesn't actually result in any extra digits added to user's input.\r\n// But verifying that would be a complex procedure, so the code chooses a simpler path:\r\n// it simply filters out all `format`s that contain anything but \"captured group\" ids.\r\n//\r\n// This regular expression is called `ELIGIBLE_FORMAT_PATTERN` in Google's\r\n// `libphonenumber` code.\r\n//\r\nconst NON_ALTERING_FORMAT_REG_EXP = new RegExp(\r\n\t'^' +\r\n\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t'(\\\\$\\\\d[' + VALID_PUNCTUATION + ']*)+' +\r\n\t'$'\r\n)\r\n\r\n// This is the minimum length of the leading digits of a phone number\r\n// to guarantee the first \"leading digits pattern\" for a phone number format\r\n// to be preemptive.\r\nconst MIN_LEADING_DIGITS_LENGTH = 3\r\n\r\nexport default class AsYouTypeFormatter {\r\n\tconstructor({\r\n\t\tstate,\r\n\t\tmetadata\r\n\t}) {\r\n\t\tthis.metadata = metadata\r\n\t\tthis.resetFormat()\r\n\t}\r\n\r\n\tresetFormat() {\r\n\t\tthis.chosenFormat = undefined\r\n\t\tthis.template = undefined\r\n\t\tthis.nationalNumberTemplate = undefined\r\n\t\tthis.populatedNationalNumberTemplate = undefined\r\n\t\tthis.populatedNationalNumberTemplatePosition = -1\r\n\t}\r\n\r\n\treset(numberingPlan, state) {\r\n\t\tthis.resetFormat()\r\n\t\tif (numberingPlan) {\r\n\t\t\tthis.isNANP = numberingPlan.callingCode() === '1'\r\n\t\t\tthis.matchingFormats = numberingPlan.formats()\r\n\t\t\tif (state.nationalSignificantNumber) {\r\n\t\t\t\tthis.narrowDownMatchingFormats(state)\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.isNANP = undefined\r\n\t\t\tthis.matchingFormats = []\r\n\t\t}\r\n\t}\r\n\r\n\tformat(nextDigits, state) {\r\n\t\t// See if the phone number digits can be formatted as a complete phone number.\r\n\t\t// If not, use the results from `formatNationalNumberWithNextDigits()`,\r\n\t\t// which formats based on the chosen formatting pattern.\r\n\t\t//\r\n\t\t// Attempting to format complete phone number first is how it's done\r\n\t\t// in Google's `libphonenumber`, so this library just follows it.\r\n\t\t// Google's `libphonenumber` code doesn't explain in detail why does it\r\n\t\t// attempt to format digits as a complete phone number\r\n\t\t// instead of just going with a previoulsy (or newly) chosen `format`:\r\n\t\t//\r\n\t\t// \"Checks to see if there is an exact pattern match for these digits.\r\n\t\t// If so, we should use this instead of any other formatting template\r\n\t\t// whose leadingDigitsPattern also matches the input.\"\r\n\t\t//\r\n\t\tif (canFormatCompleteNumber(state.nationalSignificantNumber, this.metadata)) {\r\n\t\t\tfor (const format of this.matchingFormats) {\r\n\t\t\t\tconst formattedCompleteNumber = formatCompleteNumber(\r\n\t\t\t\t\tstate,\r\n\t\t\t\t\tformat,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tmetadata: this.metadata,\r\n\t\t\t\t\t\tshouldTryNationalPrefixFormattingRule: format => this.shouldTryNationalPrefixFormattingRule(format, {\r\n\t\t\t\t\t\t\tinternational: state.international,\r\n\t\t\t\t\t\t\tnationalPrefix: state.nationalPrefix\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t\tgetSeparatorAfterNationalPrefix: this.getSeparatorAfterNationalPrefix\r\n\t\t\t\t\t}\r\n\t\t\t\t)\r\n\t\t\t\tif (formattedCompleteNumber) {\r\n\t\t\t\t\tthis.resetFormat()\r\n\t\t\t\t\tthis.chosenFormat = format\r\n\t\t\t\t\tthis.setNationalNumberTemplate(formattedCompleteNumber.replace(/\\d/g, DIGIT_PLACEHOLDER), state)\r\n\t\t\t\t\tthis.populatedNationalNumberTemplate = formattedCompleteNumber\r\n\t\t\t\t\t// With a new formatting template, the matched position\r\n\t\t\t\t\t// using the old template needs to be reset.\r\n\t\t\t\t\tthis.populatedNationalNumberTemplatePosition = this.template.lastIndexOf(DIGIT_PLACEHOLDER)\r\n\t\t\t\t\treturn formattedCompleteNumber\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Format the digits as a partial (incomplete) phone number\r\n\t\t// using the previously chosen formatting pattern (or a newly chosen one).\r\n\t\treturn this.formatNationalNumberWithNextDigits(nextDigits, state)\r\n\t}\r\n\r\n\t// Formats the next phone number digits.\r\n\tformatNationalNumberWithNextDigits(nextDigits, state) {\r\n\t\tconst previouslyChosenFormat = this.chosenFormat\r\n\t\t// Choose a format from the list of matching ones.\r\n\t\tconst newlyChosenFormat = this.chooseFormat(state)\r\n\t\tif (newlyChosenFormat) {\r\n\t\t\tif (newlyChosenFormat === previouslyChosenFormat) {\r\n\t\t\t\t// If it can format the next (current) digits\r\n\t\t\t\t// using the previously chosen phone number format\r\n\t\t\t\t// then return the updated formatted number.\r\n\t\t\t\treturn this.formatNextNationalNumberDigits(nextDigits)\r\n\t\t\t} else {\r\n\t\t\t\t// If a more appropriate phone number format\r\n\t\t\t\t// has been chosen for these \"leading digits\",\r\n\t\t\t\t// then re-format the national phone number part\r\n\t\t\t\t// using the newly selected format.\r\n\t\t\t\treturn this.formatNextNationalNumberDigits(state.getNationalDigits())\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tnarrowDownMatchingFormats({\r\n\t\tnationalSignificantNumber,\r\n\t\tnationalPrefix,\r\n\t\tinternational\r\n\t}) {\r\n\t\tconst leadingDigits = nationalSignificantNumber\r\n\r\n\t\t// \"leading digits\" pattern list starts with a\r\n\t\t// \"leading digits\" pattern fitting a maximum of 3 leading digits.\r\n\t\t// So, after a user inputs 3 digits of a national (significant) phone number\r\n\t\t// this national (significant) number can already be formatted.\r\n\t\t// The next \"leading digits\" pattern is for 4 leading digits max,\r\n\t\t// and the \"leading digits\" pattern after it is for 5 leading digits max, etc.\r\n\r\n\t\t// This implementation is different from Google's\r\n\t\t// in that it searches for a fitting format\r\n\t\t// even if the user has entered less than\r\n\t\t// `MIN_LEADING_DIGITS_LENGTH` digits of a national number.\r\n\t\t// Because some leading digit patterns already match for a single first digit.\r\n\t\tlet leadingDigitsPatternIndex = leadingDigits.length - MIN_LEADING_DIGITS_LENGTH\r\n\t\tif (leadingDigitsPatternIndex < 0) {\r\n\t\t\tleadingDigitsPatternIndex = 0\r\n\t\t}\r\n\r\n\t\tthis.matchingFormats = this.matchingFormats.filter(\r\n\t\t\tformat => this.formatSuits(format, international, nationalPrefix)\r\n\t\t\t\t&& this.formatMatches(format, leadingDigits, leadingDigitsPatternIndex)\r\n\t\t)\r\n\r\n\t\t// If there was a phone number format chosen\r\n\t\t// and it no longer holds given the new leading digits then reset it.\r\n\t\t// The test for this `if` condition is marked as:\r\n\t\t// \"Reset a chosen format when it no longer holds given the new leading digits\".\r\n\t\t// To construct a valid test case for this one can find a country\r\n\t\t// in `PhoneNumberMetadata.xml` yielding one format for 3 ``\r\n\t\t// and yielding another format for 4 `` (Australia in this case).\r\n\t\tif (this.chosenFormat && this.matchingFormats.indexOf(this.chosenFormat) === -1) {\r\n\t\t\tthis.resetFormat()\r\n\t\t}\r\n\t}\r\n\r\n\tformatSuits(format, international, nationalPrefix) {\r\n\t\t// When a prefix before a national (significant) number is\r\n\t\t// simply a national prefix, then it's parsed as `this.nationalPrefix`.\r\n\t\t// In more complex cases, a prefix before national (significant) number\r\n\t\t// could include a national prefix as well as some \"capturing groups\",\r\n\t\t// and in that case there's no info whether a national prefix has been parsed.\r\n\t\t// If national prefix is not used when formatting a phone number\r\n\t\t// using this format, but a national prefix has been entered by the user,\r\n\t\t// and was extracted, then discard such phone number format.\r\n\t\t// In Google's \"AsYouType\" formatter code, the equivalent would be this part:\r\n\t\t// https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L175-L184\r\n\t\tif (nationalPrefix &&\r\n\t\t\t!format.usesNationalPrefix() &&\r\n\t\t\t// !format.domesticCarrierCodeFormattingRule() &&\r\n\t\t\t!format.nationalPrefixIsOptionalWhenFormattingInNationalFormat()) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\t// If national prefix is mandatory for this phone number format\r\n\t\t// and there're no guarantees that a national prefix is present in user input\r\n\t\t// then discard this phone number format as not suitable.\r\n\t\t// In Google's \"AsYouType\" formatter code, the equivalent would be this part:\r\n\t\t// https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L185-L193\r\n\t\tif (!international &&\r\n\t\t\t!nationalPrefix &&\r\n\t\t\tformat.nationalPrefixIsMandatoryWhenFormattingInNationalFormat()) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\treturn true\r\n\t}\r\n\r\n\tformatMatches(format, leadingDigits, leadingDigitsPatternIndex) {\r\n\t\tconst leadingDigitsPatternsCount = format.leadingDigitsPatterns().length\r\n\t\t// If this format is not restricted to a certain\r\n\t\t// leading digits pattern then it fits.\r\n\t\tif (leadingDigitsPatternsCount === 0) {\r\n\t\t\treturn true\r\n\t\t}\r\n\t\t// Start excluding any non-matching formats only when the\r\n\t\t// national number entered so far is at least 3 digits long,\r\n\t\t// otherwise format matching would give false negatives.\r\n\t\t// For example, when the digits entered so far are `2`\r\n\t\t// and the leading digits pattern is `21` –\r\n\t\t// it's quite obvious in this case that the format could be the one\r\n\t\t// but due to the absence of further digits it would give false negative.\r\n\t\tif (leadingDigits.length < MIN_LEADING_DIGITS_LENGTH) {\r\n\t\t\treturn true\r\n\t\t}\r\n\t\t// If at least `MIN_LEADING_DIGITS_LENGTH` digits of a national number are available\r\n\t\t// then format matching starts narrowing down the list of possible formats\r\n\t\t// (only previously matched formats are considered for next digits).\r\n\t\tleadingDigitsPatternIndex = Math.min(leadingDigitsPatternIndex, leadingDigitsPatternsCount - 1)\r\n\t\tconst leadingDigitsPattern = format.leadingDigitsPatterns()[leadingDigitsPatternIndex]\r\n\t\t// Brackets are required for `^` to be applied to\r\n\t\t// all or-ed (`|`) parts, not just the first one.\r\n\t\treturn new RegExp(`^(${leadingDigitsPattern})`).test(leadingDigits)\r\n\t}\r\n\r\n\tgetFormatFormat(format, international) {\r\n\t\treturn international ? format.internationalFormat() : format.format()\r\n\t}\r\n\r\n\tchooseFormat(state) {\r\n\t\t// When there are multiple available formats, the formatter uses the first\r\n\t\t// format where a formatting template could be created.\r\n\t\tfor (const format of this.matchingFormats.slice()) {\r\n\t\t\t// If this format is currently being used\r\n\t\t\t// and is still suitable, then stick to it.\r\n\t\t\tif (this.chosenFormat === format) {\r\n\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t\t// Sometimes, a formatting rule inserts additional digits in a phone number,\r\n\t\t\t// and \"as you type\" formatter can't do that: it should only use the digits\r\n\t\t\t// that the user has input.\r\n\t\t\t//\r\n\t\t\t// For example, in Argentina, there's a format for mobile phone numbers:\r\n\t\t\t//\r\n\t\t\t// {\r\n\t\t\t// \"pattern\": \"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\r\n\t\t\t// \"leading_digits_patterns\": [\"91\"],\r\n\t\t\t// \"national_prefix_formatting_rule\": \"0$1\",\r\n\t\t\t// \"format\": \"$2 15-$3-$4\",\r\n\t\t\t// \"international_format\": \"$1 $2 $3-$4\"\r\n\t\t\t// }\r\n\t\t\t//\r\n\t\t\t// In that format, `international_format` is used instead of `format`\r\n\t\t\t// because `format` inserts `15` in the formatted number,\r\n\t\t\t// and `AsYouType` formatter should only use the digits\r\n\t\t\t// the user has actually input, without adding any extra digits.\r\n\t\t\t// In this case, it wouldn't make a difference, because the `15`\r\n\t\t\t// is first stripped when applying `national_prefix_for_parsing`\r\n\t\t\t// and then re-added when using `format`, so in reality it doesn't\r\n\t\t\t// add any new digits to the number, but to detect that, the code\r\n\t\t\t// would have to be more complex: it would have to try formatting\r\n\t\t\t// the digits using the format and then see if any digits have\r\n\t\t\t// actually been added or removed, and then, every time a new digit\r\n\t\t\t// is input, it should re-check whether the chosen format doesn't\r\n\t\t\t// alter the digits.\r\n\t\t\t//\r\n\t\t\t// Google's code doesn't go that far, and so does this library:\r\n\t\t\t// it simply requires that a `format` doesn't add any additonal\r\n\t\t\t// digits to user's input.\r\n\t\t\t//\r\n\t\t\t// Also, people in general should move from inputting phone numbers\r\n\t\t\t// in national format (possibly with national prefixes)\r\n\t\t\t// and use international phone number format instead:\r\n\t\t\t// it's a logical thing in the modern age of mobile phones,\r\n\t\t\t// globalization and the internet.\r\n\t\t\t//\r\n\t\t\t/* istanbul ignore if */\r\n\t\t\tif (!NON_ALTERING_FORMAT_REG_EXP.test(this.getFormatFormat(format, state.international))) {\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\t\t\tif (!this.createTemplateForFormat(format, state)) {\r\n\t\t\t\t// Remove the format if it can't generate a template.\r\n\t\t\t\tthis.matchingFormats = this.matchingFormats.filter(_ => _ !== format)\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\t\t\tthis.chosenFormat = format\r\n\t\t\tbreak\r\n\t\t}\r\n\t\tif (!this.chosenFormat) {\r\n\t\t\t// No format matches the national (significant) phone number.\r\n\t\t\tthis.resetFormat()\r\n\t\t}\r\n\t\treturn this.chosenFormat\r\n\t}\r\n\r\n\tcreateTemplateForFormat(format, state) {\r\n\t\t// The formatter doesn't format numbers when numberPattern contains '|', e.g.\r\n\t\t// (20|3)\\d{4}. In those cases we quickly return.\r\n\t\t// (Though there's no such format in current metadata)\r\n\t\t/* istanbul ignore if */\r\n\t\tif (SUPPORT_LEGACY_FORMATTING_PATTERNS && format.pattern().indexOf('|') >= 0) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\t// Get formatting template for this phone number format\r\n\t\tconst template = this.getTemplateForFormat(format, state)\r\n\t\t// If the national number entered is too long\r\n\t\t// for any phone number format, then abort.\r\n\t\tif (template) {\r\n\t\t\tthis.setNationalNumberTemplate(template, state)\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\tgetSeparatorAfterNationalPrefix = (format) => {\r\n\t\t// `US` metadata doesn't have a `national_prefix_formatting_rule`,\r\n\t\t// so the `if` condition below doesn't apply to `US`,\r\n\t\t// but in reality there shoudl be a separator\r\n\t\t// between a national prefix and a national (significant) number.\r\n\t\t// So `US` national prefix separator is a \"special\" \"hardcoded\" case.\r\n\t\tif (this.isNANP) {\r\n\t\t\treturn ' '\r\n\t\t}\r\n\t\t// If a `format` has a `national_prefix_formatting_rule`\r\n\t\t// and that rule has a separator after a national prefix,\r\n\t\t// then it means that there should be a separator\r\n\t\t// between a national prefix and a national (significant) number.\r\n\t\tif (format &&\r\n\t\t\tformat.nationalPrefixFormattingRule() &&\r\n\t\t\tNATIONAL_PREFIX_SEPARATORS_PATTERN.test(format.nationalPrefixFormattingRule())) {\r\n\t\t\treturn ' '\r\n\t\t}\r\n\t\t// At this point, there seems to be no clear evidence that\r\n\t\t// there should be a separator between a national prefix\r\n\t\t// and a national (significant) number. So don't insert one.\r\n\t\treturn ''\r\n\t}\r\n\r\n\tgetInternationalPrefixBeforeCountryCallingCode({ IDDPrefix, missingPlus }, options) {\r\n\t\tif (IDDPrefix) {\r\n\t\t\treturn options && options.spacing === false ? IDDPrefix : IDDPrefix + ' '\r\n\t\t}\r\n\t\tif (missingPlus) {\r\n\t\t\treturn ''\r\n\t\t}\r\n\t\treturn '+'\r\n\t}\r\n\r\n\tgetTemplate(state) {\r\n\t\tif (!this.template) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\t// `this.template` holds the template for a \"complete\" phone number.\r\n\t\t// The currently entered phone number is most likely not \"complete\",\r\n\t\t// so trim all non-populated digits.\r\n\t\tlet index = -1\r\n\t\tlet i = 0\r\n\t\tconst internationalPrefix = state.international ? this.getInternationalPrefixBeforeCountryCallingCode(state, { spacing: false }) : ''\r\n\t\twhile (i < internationalPrefix.length + state.getDigitsWithoutInternationalPrefix().length) {\r\n\t\t\tindex = this.template.indexOf(DIGIT_PLACEHOLDER, index + 1)\r\n\t\t\ti++\r\n\t\t}\r\n\t\treturn cutAndStripNonPairedParens(this.template, index + 1)\r\n\t}\r\n\r\n\tsetNationalNumberTemplate(template, state) {\r\n\t\tthis.nationalNumberTemplate = template\r\n\t\tthis.populatedNationalNumberTemplate = template\r\n\t\t// With a new formatting template, the matched position\r\n\t\t// using the old template needs to be reset.\r\n\t\tthis.populatedNationalNumberTemplatePosition = -1\r\n\t\t// For convenience, the public `.template` property\r\n\t\t// contains the whole international number\r\n\t\t// if the phone number being input is international:\r\n\t\t// 'x' for the '+' sign, 'x'es for the country phone code,\r\n\t\t// a spacebar and then the template for the formatted national number.\r\n\t\tif (state.international) {\r\n\t\t\tthis.template =\r\n\t\t\t\tthis.getInternationalPrefixBeforeCountryCallingCode(state).replace(/[\\d\\+]/g, DIGIT_PLACEHOLDER) +\r\n\t\t\t\trepeat(DIGIT_PLACEHOLDER, state.callingCode.length) +\r\n\t\t\t\t' ' +\r\n\t\t\t\ttemplate\r\n\t\t} else {\r\n\t\t\tthis.template = template\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Generates formatting template for a national phone number,\r\n\t * optionally containing a national prefix, for a format.\r\n\t * @param {Format} format\r\n\t * @param {string} nationalPrefix\r\n\t * @return {string}\r\n\t */\r\n\tgetTemplateForFormat(format, {\r\n\t\tnationalSignificantNumber,\r\n\t\tinternational,\r\n\t\tnationalPrefix,\r\n\t\tcomplexPrefixBeforeNationalSignificantNumber\r\n\t}) {\r\n\t\tlet pattern = format.pattern()\r\n\r\n\t\t/* istanbul ignore else */\r\n\t\tif (SUPPORT_LEGACY_FORMATTING_PATTERNS) {\r\n\t\t\tpattern = pattern\r\n\t\t\t\t// Replace anything in the form of [..] with \\d\r\n\t\t\t\t.replace(CREATE_CHARACTER_CLASS_PATTERN(), '\\\\d')\r\n\t\t\t\t// Replace any standalone digit (not the one in `{}`) with \\d\r\n\t\t\t\t.replace(CREATE_STANDALONE_DIGIT_PATTERN(), '\\\\d')\r\n\t\t}\r\n\r\n\t\t// Generate a dummy national number (consisting of `9`s)\r\n\t\t// that fits this format's `pattern`.\r\n\t\t//\r\n\t\t// This match will always succeed,\r\n\t\t// because the \"longest dummy phone number\"\r\n\t\t// has enough length to accomodate any possible\r\n\t\t// national phone number format pattern.\r\n\t\t//\r\n\t\tlet digits = LONGEST_DUMMY_PHONE_NUMBER.match(pattern)[0]\r\n\r\n\t\t// If the national number entered is too long\r\n\t\t// for any phone number format, then abort.\r\n\t\tif (nationalSignificantNumber.length > digits.length) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// Get a formatting template which can be used to efficiently format\r\n\t\t// a partial number where digits are added one by one.\r\n\r\n\t\t// Below `strictPattern` is used for the\r\n\t\t// regular expression (with `^` and `$`).\r\n\t\t// This wasn't originally in Google's `libphonenumber`\r\n\t\t// and I guess they don't really need it\r\n\t\t// because they're not using \"templates\" to format phone numbers\r\n\t\t// but I added `strictPattern` after encountering\r\n\t\t// South Korean phone number formatting bug.\r\n\t\t//\r\n\t\t// Non-strict regular expression bug demonstration:\r\n\t\t//\r\n\t\t// this.nationalSignificantNumber : `111111111` (9 digits)\r\n\t\t//\r\n\t\t// pattern : (\\d{2})(\\d{3,4})(\\d{4})\r\n\t\t// format : `$1 $2 $3`\r\n\t\t// digits : `9999999999` (10 digits)\r\n\t\t//\r\n\t\t// '9999999999'.replace(new RegExp(/(\\d{2})(\\d{3,4})(\\d{4})/g), '$1 $2 $3') = \"99 9999 9999\"\r\n\t\t//\r\n\t\t// template : xx xxxx xxxx\r\n\t\t//\r\n\t\t// But the correct template in this case is `xx xxx xxxx`.\r\n\t\t// The template was generated incorrectly because of the\r\n\t\t// `{3,4}` variability in the `pattern`.\r\n\t\t//\r\n\t\t// The fix is, if `this.nationalSignificantNumber` has already sufficient length\r\n\t\t// to satisfy the `pattern` completely then `this.nationalSignificantNumber`\r\n\t\t// is used instead of `digits`.\r\n\r\n\t\tconst strictPattern = new RegExp('^' + pattern + '$')\r\n\t\tconst nationalNumberDummyDigits = nationalSignificantNumber.replace(/\\d/g, DUMMY_DIGIT)\r\n\r\n\t\t// If `this.nationalSignificantNumber` has already sufficient length\r\n\t\t// to satisfy the `pattern` completely then use it\r\n\t\t// instead of `digits`.\r\n\t\tif (strictPattern.test(nationalNumberDummyDigits)) {\r\n\t\t\tdigits = nationalNumberDummyDigits\r\n\t\t}\r\n\r\n\t\tlet numberFormat = this.getFormatFormat(format, international)\r\n\t\tlet nationalPrefixIncludedInTemplate\r\n\r\n\t\t// If a user did input a national prefix (and that's guaranteed),\r\n\t\t// and if a `format` does have a national prefix formatting rule,\r\n\t\t// then see if that national prefix formatting rule\r\n\t\t// prepends exactly the same national prefix the user has input.\r\n\t\t// If that's the case, then use the `format` with the national prefix formatting rule.\r\n\t\t// Otherwise, use the `format` without the national prefix formatting rule,\r\n\t\t// and prepend a national prefix manually to it.\r\n\t\tif (this.shouldTryNationalPrefixFormattingRule(format, { international, nationalPrefix })) {\r\n\t\t\tconst numberFormatWithNationalPrefix = numberFormat.replace(\r\n\t\t\t\tFIRST_GROUP_PATTERN,\r\n\t\t\t\tformat.nationalPrefixFormattingRule()\r\n\t\t\t)\r\n\t\t\t// If `national_prefix_formatting_rule` of a `format` simply prepends\r\n\t\t\t// national prefix at the start of a national (significant) number,\r\n\t\t\t// then such formatting can be used with `AsYouType` formatter.\r\n\t\t\t// There seems to be no `else` case: everywhere in metadata,\r\n\t\t\t// national prefix formatting rule is national prefix + $1,\r\n\t\t\t// or `($1)`, in which case such format isn't even considered\r\n\t\t\t// when the user has input a national prefix.\r\n\t\t\t/* istanbul ignore else */\r\n\t\t\tif (parseDigits(format.nationalPrefixFormattingRule()) === (nationalPrefix || '') + parseDigits('$1')) {\r\n\t\t\t\tnumberFormat = numberFormatWithNationalPrefix\r\n\t\t\t\tnationalPrefixIncludedInTemplate = true\r\n\t\t\t\t// Replace all digits of the national prefix in the formatting template\r\n\t\t\t\t// with `DIGIT_PLACEHOLDER`s.\r\n\t\t\t\tif (nationalPrefix) {\r\n\t\t\t\t\tlet i = nationalPrefix.length\r\n\t\t\t\t\twhile (i > 0) {\r\n\t\t\t\t\t\tnumberFormat = numberFormat.replace(/\\d/, DIGIT_PLACEHOLDER)\r\n\t\t\t\t\t\ti--\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Generate formatting template for this phone number format.\r\n\t\tlet template = digits\r\n\t\t\t// Format the dummy phone number according to the format.\r\n\t\t\t.replace(new RegExp(pattern), numberFormat)\r\n\t\t\t// Replace each dummy digit with a DIGIT_PLACEHOLDER.\r\n\t\t\t.replace(new RegExp(DUMMY_DIGIT, 'g'), DIGIT_PLACEHOLDER)\r\n\r\n\t\t// If a prefix of a national (significant) number is not as simple\r\n\t\t// as just a basic national prefix, then just prepend such prefix\r\n\t\t// before the national (significant) number, optionally spacing\r\n\t\t// the two with a whitespace.\r\n\t\tif (!nationalPrefixIncludedInTemplate) {\r\n\t\t\tif (complexPrefixBeforeNationalSignificantNumber) {\r\n\t\t\t\t// Prepend the prefix to the template manually.\r\n\t\t\t\ttemplate = repeat(DIGIT_PLACEHOLDER, complexPrefixBeforeNationalSignificantNumber.length) +\r\n\t\t\t\t\t' ' +\r\n\t\t\t\t\ttemplate\r\n\t\t\t} else if (nationalPrefix) {\r\n\t\t\t\t// Prepend national prefix to the template manually.\r\n\t\t\t\ttemplate = repeat(DIGIT_PLACEHOLDER, nationalPrefix.length) +\r\n\t\t\t\t\tthis.getSeparatorAfterNationalPrefix(format) +\r\n\t\t\t\t\ttemplate\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (international) {\r\n\t\t\ttemplate = applyInternationalSeparatorStyle(template)\r\n\t\t}\r\n\r\n\t\treturn template\r\n\t}\r\n\r\n\tformatNextNationalNumberDigits(digits) {\r\n\t\tconst result = populateTemplateWithDigits(\r\n\t\t\tthis.populatedNationalNumberTemplate,\r\n\t\t\tthis.populatedNationalNumberTemplatePosition,\r\n\t\t\tdigits\r\n\t\t)\r\n\r\n\t\tif (!result) {\r\n\t\t\t// Reset the format.\r\n\t\t\tthis.resetFormat()\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tthis.populatedNationalNumberTemplate = result[0]\r\n\t\tthis.populatedNationalNumberTemplatePosition = result[1]\r\n\r\n\t\t// Return the formatted phone number so far.\r\n\t\treturn cutAndStripNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1)\r\n\r\n\t\t// The old way which was good for `input-format` but is not so good\r\n\t\t// for `react-phone-number-input`'s default input (`InputBasic`).\r\n\t\t// return closeNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1)\r\n\t\t// \t.replace(new RegExp(DIGIT_PLACEHOLDER, 'g'), ' ')\r\n\t}\r\n\r\n\tshouldTryNationalPrefixFormattingRule = (format, { international, nationalPrefix }) => {\r\n\t\tif (format.nationalPrefixFormattingRule()) {\r\n\t\t\t// In some countries, `national_prefix_formatting_rule` is `($1)`,\r\n\t\t\t// so it applies even if the user hasn't input a national prefix.\r\n\t\t\t// `format.usesNationalPrefix()` detects such cases.\r\n\t\t\tconst usesNationalPrefix = format.usesNationalPrefix()\r\n\t\t\tif ((usesNationalPrefix && nationalPrefix) ||\r\n\t\t\t\t(!usesNationalPrefix && !international)) {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import extractCountryCallingCode from './helpers/extractCountryCallingCode'\r\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign'\r\nimport extractNationalNumberFromPossiblyIncompleteNumber from './helpers/extractNationalNumberFromPossiblyIncompleteNumber'\r\nimport stripIddPrefix from './helpers/stripIddPrefix'\r\nimport parseDigits from './helpers/parseDigits'\r\n\r\nimport {\r\n\tVALID_DIGITS,\r\n\tVALID_PUNCTUATION,\r\n\tPLUS_CHARS\r\n} from './constants'\r\n\r\nconst VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART =\r\n\t'[' +\r\n\t\tVALID_PUNCTUATION +\r\n\t\tVALID_DIGITS +\r\n\t']+'\r\n\r\nconst VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN = new RegExp('^' + VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART + '$', 'i')\r\n\r\nconst VALID_FORMATTED_PHONE_NUMBER_PART =\r\n\t'(?:' +\r\n\t\t'[' + PLUS_CHARS + ']' +\r\n\t\t'[' +\r\n\t\t\tVALID_PUNCTUATION +\r\n\t\t\tVALID_DIGITS +\r\n\t\t']*' +\r\n\t\t'|' +\r\n\t\t'[' +\r\n\t\t\tVALID_PUNCTUATION +\r\n\t\t\tVALID_DIGITS +\r\n\t\t']+' +\r\n\t')'\r\n\r\nconst AFTER_PHONE_NUMBER_DIGITS_END_PATTERN = new RegExp(\r\n\t'[^' +\r\n\t\tVALID_PUNCTUATION +\r\n\t\tVALID_DIGITS +\r\n\t']+' +\r\n\t'.*' +\r\n\t'$'\r\n)\r\n\r\n// Tests whether `national_prefix_for_parsing` could match\r\n// different national prefixes.\r\n// Matches anything that's not a digit or a square bracket.\r\nconst COMPLEX_NATIONAL_PREFIX = /[^\\d\\[\\]]/\r\n\r\nexport default class AsYouTypeParser {\r\n\tconstructor({\r\n\t\tdefaultCountry,\r\n\t\tdefaultCallingCode,\r\n\t\tmetadata,\r\n\t\tonNationalSignificantNumberChange\r\n\t}) {\r\n\t\tthis.defaultCountry = defaultCountry\r\n\t\tthis.defaultCallingCode = defaultCallingCode\r\n\t\tthis.metadata = metadata\r\n\t\tthis.onNationalSignificantNumberChange = onNationalSignificantNumberChange\r\n\t}\r\n\r\n\tinput(text, state) {\r\n\t\tconst [formattedDigits, hasPlus] = extractFormattedDigitsAndPlus(text)\r\n\t\tconst digits = parseDigits(formattedDigits)\r\n\t\t// Checks for a special case: just a leading `+` has been entered.\r\n\t\tlet justLeadingPlus\r\n\t\tif (hasPlus) {\r\n\t\t\tif (!state.digits) {\r\n\t\t\t\tstate.startInternationalNumber()\r\n\t\t\t\tif (!digits) {\r\n\t\t\t\t\tjustLeadingPlus = true\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (digits) {\r\n\t\t\tthis.inputDigits(digits, state)\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tdigits,\r\n\t\t\tjustLeadingPlus\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Inputs \"next\" phone number digits.\r\n\t * @param {string} digits\r\n\t * @return {string} [formattedNumber] Formatted national phone number (if it can be formatted at this stage). Returning `undefined` means \"don't format the national phone number at this stage\".\r\n\t */\r\n\tinputDigits(nextDigits, state) {\r\n\t\tconst { digits } = state\r\n\t\tconst hasReceivedThreeLeadingDigits = digits.length < 3 && digits.length + nextDigits.length >= 3\r\n\r\n\t\t// Append phone number digits.\r\n\t\tstate.appendDigits(nextDigits)\r\n\r\n\t\t// Attempt to extract IDD prefix:\r\n\t\t// Some users input their phone number in international format,\r\n\t\t// but in an \"out-of-country\" dialing format instead of using the leading `+`.\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/185\r\n\t\t// Detect such numbers as soon as there're at least 3 digits.\r\n\t\t// Google's library attempts to extract IDD prefix at 3 digits,\r\n\t\t// so this library just copies that behavior.\r\n\t\t// I guess that's because the most commot IDD prefixes are\r\n\t\t// `00` (Europe) and `011` (US).\r\n\t\t// There exist really long IDD prefixes too:\r\n\t\t// for example, in Australia the default IDD prefix is `0011`,\r\n\t\t// and it could even be as long as `14880011`.\r\n\t\t// An IDD prefix is extracted here, and then every time when\r\n\t\t// there's a new digit and the number couldn't be formatted.\r\n\t\tif (hasReceivedThreeLeadingDigits) {\r\n\t\t\tthis.extractIddPrefix(state)\r\n\t\t}\r\n\r\n\t\tif (this.isWaitingForCountryCallingCode(state)) {\r\n\t\t\tif (!this.extractCountryCallingCode(state)) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tstate.appendNationalSignificantNumberDigits(nextDigits)\r\n\t\t}\r\n\r\n\t\t// If a phone number is being input in international format,\r\n\t\t// then it's not valid for it to have a national prefix.\r\n\t\t// Still, some people incorrectly input such numbers with a national prefix.\r\n\t\t// In such cases, only attempt to strip a national prefix if the number becomes too long.\r\n\t\t// (but that is done later, not here)\r\n\t\tif (!state.international) {\r\n\t\t\tif (!this.hasExtractedNationalSignificantNumber) {\r\n\t\t\t\tthis.extractNationalSignificantNumber(state.getNationalDigits(), state.update)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisWaitingForCountryCallingCode({ international, callingCode }) {\r\n\t\treturn international && !callingCode\r\n\t}\r\n\r\n\t// Extracts a country calling code from a number\r\n\t// being entered in internatonal format.\r\n\textractCountryCallingCode(state) {\r\n\t\tconst { countryCallingCode, number } = extractCountryCallingCode(\r\n\t\t\t'+' + state.getDigitsWithoutInternationalPrefix(),\r\n\t\t\tthis.defaultCountry,\r\n\t\t\tthis.defaultCallingCode,\r\n\t\t\tthis.metadata.metadata\r\n\t\t)\r\n\t\tif (countryCallingCode) {\r\n\t\t\tstate.setCallingCode(countryCallingCode)\r\n\t\t\tstate.update({\r\n\t\t\t\tnationalSignificantNumber: number\r\n\t\t\t})\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\treset(numberingPlan) {\r\n\t\tif (numberingPlan) {\r\n\t\t\tthis.hasSelectedNumberingPlan = true\r\n\t\t\tconst nationalPrefixForParsing = numberingPlan._nationalPrefixForParsing()\r\n\t\t\tthis.couldPossiblyExtractAnotherNationalSignificantNumber = nationalPrefixForParsing && COMPLEX_NATIONAL_PREFIX.test(nationalPrefixForParsing)\r\n\t\t} else {\r\n\t\t\tthis.hasSelectedNumberingPlan = undefined\r\n\t\t\tthis.couldPossiblyExtractAnotherNationalSignificantNumber = undefined\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Extracts a national (significant) number from user input.\r\n\t * Google's library is different in that it only applies `national_prefix_for_parsing`\r\n\t * and doesn't apply `national_prefix_transform_rule` after that.\r\n\t * https://github.com/google/libphonenumber/blob/a3d70b0487875475e6ad659af404943211d26456/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L539\r\n\t * @return {boolean} [extracted]\r\n\t */\r\n\textractNationalSignificantNumber(nationalDigits, setState) {\r\n\t\tif (!this.hasSelectedNumberingPlan) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tconst {\r\n\t\t\tnationalPrefix,\r\n\t\t\tnationalNumber,\r\n\t\t\tcarrierCode\r\n\t\t} = extractNationalNumberFromPossiblyIncompleteNumber(\r\n\t\t\tnationalDigits,\r\n\t\t\tthis.metadata\r\n\t\t)\r\n\t\tif (nationalNumber === nationalDigits) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tthis.onExtractedNationalNumber(\r\n\t\t\tnationalPrefix,\r\n\t\t\tcarrierCode,\r\n\t\t\tnationalNumber,\r\n\t\t\tnationalDigits,\r\n\t\t\tsetState\r\n\t\t)\r\n\t\treturn true\r\n\t}\r\n\r\n\t/**\r\n\t * In Google's code this function is called \"attempt to extract longer NDD\".\r\n\t * \"Some national prefixes are a substring of others\", they say.\r\n\t * @return {boolean} [result] — Returns `true` if extracting a national prefix produced different results from what they were.\r\n\t */\r\n\textractAnotherNationalSignificantNumber(nationalDigits, prevNationalSignificantNumber, setState) {\r\n\t\tif (!this.hasExtractedNationalSignificantNumber) {\r\n\t\t\treturn this.extractNationalSignificantNumber(nationalDigits, setState)\r\n\t\t}\r\n\t\tif (!this.couldPossiblyExtractAnotherNationalSignificantNumber) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tconst {\r\n\t\t\tnationalPrefix,\r\n\t\t\tnationalNumber,\r\n\t\t\tcarrierCode\r\n\t\t} = extractNationalNumberFromPossiblyIncompleteNumber(\r\n\t\t\tnationalDigits,\r\n\t\t\tthis.metadata\r\n\t\t)\r\n\t\t// If a national prefix has been extracted previously,\r\n\t\t// then it's always extracted as additional digits are added.\r\n\t\t// That's assuming `extractNationalNumberFromPossiblyIncompleteNumber()`\r\n\t\t// doesn't do anything different from what it currently does.\r\n\t\t// So, just in case, here's this check, though it doesn't occur.\r\n\t\t/* istanbul ignore if */\r\n\t\tif (nationalNumber === prevNationalSignificantNumber) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tthis.onExtractedNationalNumber(\r\n\t\t\tnationalPrefix,\r\n\t\t\tcarrierCode,\r\n\t\t\tnationalNumber,\r\n\t\t\tnationalDigits,\r\n\t\t\tsetState\r\n\t\t)\r\n\t\treturn true\r\n\t}\r\n\r\n\tonExtractedNationalNumber(\r\n\t\tnationalPrefix,\r\n\t\tcarrierCode,\r\n\t\tnationalSignificantNumber,\r\n\t\tnationalDigits,\r\n\t\tsetState\r\n\t) {\r\n\t\tlet complexPrefixBeforeNationalSignificantNumber\r\n\t\tlet nationalSignificantNumberMatchesInput\r\n\t\t// This check also works with empty `this.nationalSignificantNumber`.\r\n\t\tconst nationalSignificantNumberIndex = nationalDigits.lastIndexOf(nationalSignificantNumber)\r\n\t\t// If the extracted national (significant) number is the\r\n\t\t// last substring of the `digits`, then it means that it hasn't been altered:\r\n\t\t// no digits have been removed from the national (significant) number\r\n\t\t// while applying `national_prefix_transform_rule`.\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\r\n\t\tif (nationalSignificantNumberIndex >= 0 &&\r\n\t\t\tnationalSignificantNumberIndex === nationalDigits.length - nationalSignificantNumber.length) {\r\n\t\t\tnationalSignificantNumberMatchesInput = true\r\n\t\t\t// If a prefix of a national (significant) number is not as simple\r\n\t\t\t// as just a basic national prefix, then such prefix is stored in\r\n\t\t\t// `this.complexPrefixBeforeNationalSignificantNumber` property and will be\r\n\t\t\t// prepended \"as is\" to the national (significant) number to produce\r\n\t\t\t// a formatted result.\r\n\t\t\tconst prefixBeforeNationalNumber = nationalDigits.slice(0, nationalSignificantNumberIndex)\r\n\t\t\t// `prefixBeforeNationalNumber` is always non-empty,\r\n\t\t\t// because `onExtractedNationalNumber()` isn't called\r\n\t\t\t// when a national (significant) number hasn't been actually \"extracted\":\r\n\t\t\t// when a national (significant) number is equal to the national part of `digits`,\r\n\t\t\t// then `onExtractedNationalNumber()` doesn't get called.\r\n\t\t\tif (prefixBeforeNationalNumber !== nationalPrefix) {\r\n\t\t\t\tcomplexPrefixBeforeNationalSignificantNumber = prefixBeforeNationalNumber\r\n\t\t\t}\r\n\t\t}\r\n\t\tsetState({\r\n\t\t\tnationalPrefix,\r\n\t\t\tcarrierCode,\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tnationalSignificantNumberMatchesInput,\r\n\t\t\tcomplexPrefixBeforeNationalSignificantNumber\r\n\t\t})\r\n\t\t// `onExtractedNationalNumber()` is only called when\r\n\t\t// the national (significant) number actually did change.\r\n\t\tthis.hasExtractedNationalSignificantNumber = true\r\n\t\tthis.onNationalSignificantNumberChange()\r\n\t}\r\n\r\n\treExtractNationalSignificantNumber(state) {\r\n\t\t// Attempt to extract a national prefix.\r\n\t\t//\r\n\t\t// Some people incorrectly input national prefix\r\n\t\t// in an international phone number.\r\n\t\t// For example, some people write British phone numbers as `+44(0)...`.\r\n\t\t//\r\n\t\t// Also, in some rare cases, it is valid for a national prefix\r\n\t\t// to be a part of an international phone number.\r\n\t\t// For example, mobile phone numbers in Mexico are supposed to be\r\n\t\t// dialled internationally using a `1` national prefix,\r\n\t\t// so the national prefix will be part of an international number.\r\n\t\t//\r\n\t\t// Quote from:\r\n\t\t// https://www.mexperience.com/dialing-cell-phones-in-mexico/\r\n\t\t//\r\n\t\t// \"Dialing a Mexican cell phone from abroad\r\n\t\t// When you are calling a cell phone number in Mexico from outside Mexico,\r\n\t\t// it’s necessary to dial an additional “1” after Mexico’s country code\r\n\t\t// (which is “52”) and before the area code.\r\n\t\t// You also ignore the 045, and simply dial the area code and the\r\n\t\t// cell phone’s number.\r\n\t\t//\r\n\t\t// If you don’t add the “1”, you’ll receive a recorded announcement\r\n\t\t// asking you to redial using it.\r\n\t\t//\r\n\t\t// For example, if you are calling from the USA to a cell phone\r\n\t\t// in Mexico City, you would dial +52 – 1 – 55 – 1234 5678.\r\n\t\t// (Note that this is different to calling a land line in Mexico City\r\n\t\t// from abroad, where the number dialed would be +52 – 55 – 1234 5678)\".\r\n\t\t//\r\n\t\t// Google's demo output:\r\n\t\t// https://libphonenumber.appspot.com/phonenumberparser?number=%2b5215512345678&country=MX\r\n\t\t//\r\n\t\tif (this.extractAnotherNationalSignificantNumber(\r\n\t\t\tstate.getNationalDigits(),\r\n\t\t\tstate.nationalSignificantNumber,\r\n\t\t\tstate.update\r\n\t\t)) {\r\n\t\t\treturn true\r\n\t\t}\r\n\t\t// If no format matches the phone number, then it could be\r\n\t\t// \"a really long IDD\" (quote from a comment in Google's library).\r\n\t\t// An IDD prefix is first extracted when the user has entered at least 3 digits,\r\n\t\t// and then here — every time when there's a new digit and the number\r\n\t\t// couldn't be formatted.\r\n\t\t// For example, in Australia the default IDD prefix is `0011`,\r\n\t\t// and it could even be as long as `14880011`.\r\n\t\t//\r\n\t\t// Could also check `!hasReceivedThreeLeadingDigits` here\r\n\t\t// to filter out the case when this check duplicates the one\r\n\t\t// already performed when there're 3 leading digits,\r\n\t\t// but it's not a big deal, and in most cases there\r\n\t\t// will be a suitable `format` when there're 3 leading digits.\r\n\t\t//\r\n\t\tif (this.extractIddPrefix(state)) {\r\n\t\t\tthis.extractCallingCodeAndNationalSignificantNumber(state)\r\n\t\t\treturn true\r\n\t\t}\r\n\t\t// Google's AsYouType formatter supports sort of an \"autocorrection\" feature\r\n\t\t// when it \"autocorrects\" numbers that have been input for a country\r\n\t\t// with that country's calling code.\r\n\t\t// Such \"autocorrection\" feature looks weird, but different people have been requesting it:\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/376\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/375\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/316\r\n\t\tif (this.fixMissingPlus(state)) {\r\n\t\t\tthis.extractCallingCodeAndNationalSignificantNumber(state)\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\textractIddPrefix(state) {\r\n\t\t// An IDD prefix can't be present in a number written with a `+`.\r\n\t\t// Also, don't re-extract an IDD prefix if has already been extracted.\r\n\t\tconst {\r\n\t\t\tinternational,\r\n\t\t\tIDDPrefix,\r\n\t\t\tdigits,\r\n\t\t\tnationalSignificantNumber\r\n\t\t} = state\r\n\t\tif (international || IDDPrefix) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\t// Some users input their phone number in \"out-of-country\"\r\n\t\t// dialing format instead of using the leading `+`.\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/185\r\n\t\t// Detect such numbers.\r\n\t\tconst numberWithoutIDD = stripIddPrefix(\r\n\t\t\tdigits,\r\n\t\t\tthis.defaultCountry,\r\n\t\t\tthis.defaultCallingCode,\r\n\t\t\tthis.metadata.metadata\r\n\t\t)\r\n\t\tif (numberWithoutIDD !== undefined && numberWithoutIDD !== digits) {\r\n\t\t\t// If an IDD prefix was stripped then convert the IDD-prefixed number\r\n\t\t\t// to international number for subsequent parsing.\r\n\t\t\tstate.update({\r\n\t\t\t\tIDDPrefix: digits.slice(0, digits.length - numberWithoutIDD.length)\r\n\t\t\t})\r\n\t\t\tthis.startInternationalNumber(state)\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\tfixMissingPlus(state) {\r\n\t\tif (!state.international) {\r\n\t\t\tconst {\r\n\t\t\t\tcountryCallingCode: newCallingCode,\r\n\t\t\t\tnumber\r\n\t\t\t} = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(\r\n\t\t\t\tstate.digits,\r\n\t\t\t\tthis.defaultCountry,\r\n\t\t\t\tthis.defaultCallingCode,\r\n\t\t\t\tthis.metadata.metadata\r\n\t\t\t)\r\n\t\t\tif (newCallingCode) {\r\n\t\t\t\tstate.update({\r\n\t\t\t\t\tmissingPlus: true\r\n\t\t\t\t})\r\n\t\t\t\tthis.startInternationalNumber(state)\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tstartInternationalNumber(state) {\r\n\t\tstate.startInternationalNumber()\r\n\t\t// If a national (significant) number has been extracted before, reset it.\r\n\t\tif (state.nationalSignificantNumber) {\r\n\t\t\tstate.resetNationalSignificantNumber()\r\n\t\t\tthis.onNationalSignificantNumberChange()\r\n\t\t\tthis.hasExtractedNationalSignificantNumber = undefined\r\n\t\t}\r\n\t}\r\n\r\n\textractCallingCodeAndNationalSignificantNumber(state) {\r\n\t\tif (this.extractCountryCallingCode(state)) {\r\n\t\t\t// `this.extractCallingCode()` is currently called when the number\r\n\t\t\t// couldn't be formatted during the standard procedure.\r\n\t\t\t// Normally, the national prefix would be re-extracted\r\n\t\t\t// for an international number if such number couldn't be formatted,\r\n\t\t\t// but since it's already not able to be formatted,\r\n\t\t\t// there won't be yet another retry, so also extract national prefix here.\r\n\t\t\tthis.extractNationalSignificantNumber(state.getNationalDigits(), state.update)\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Extracts formatted phone number from text (if there's any).\r\n * @param {string} text\r\n * @return {string} [formattedPhoneNumber]\r\n */\r\nfunction extractFormattedPhoneNumber(text) {\r\n\t// Attempt to extract a possible number from the string passed in.\r\n\tconst startsAt = text.search(VALID_FORMATTED_PHONE_NUMBER_PART)\r\n\tif (startsAt < 0) {\r\n\t\treturn\r\n\t}\r\n\t// Trim everything to the left of the phone number.\r\n\ttext = text.slice(startsAt)\r\n\t// Trim the `+`.\r\n\tlet hasPlus\r\n\tif (text[0] === '+') {\r\n\t\thasPlus = true\r\n\t\ttext = text.slice('+'.length)\r\n\t}\r\n\t// Trim everything to the right of the phone number.\r\n\ttext = text.replace(AFTER_PHONE_NUMBER_DIGITS_END_PATTERN, '')\r\n\t// Re-add the previously trimmed `+`.\r\n\tif (hasPlus) {\r\n\t\ttext = '+' + text\r\n\t}\r\n\treturn text\r\n}\r\n\r\n/**\r\n * Extracts formatted phone number digits (and a `+`) from text (if there're any).\r\n * @param {string} text\r\n * @return {any[]}\r\n */\r\nfunction _extractFormattedDigitsAndPlus(text) {\r\n\t// Extract a formatted phone number part from text.\r\n\tconst extractedNumber = extractFormattedPhoneNumber(text) || ''\r\n\t// Trim a `+`.\r\n\tif (extractedNumber[0] === '+') {\r\n\t\treturn [extractedNumber.slice('+'.length), true]\r\n\t}\r\n\treturn [extractedNumber]\r\n}\r\n\r\n/**\r\n * Extracts formatted phone number digits (and a `+`) from text (if there're any).\r\n * @param {string} text\r\n * @return {any[]}\r\n */\r\nexport function extractFormattedDigitsAndPlus(text) {\r\n\tlet [formattedDigits, hasPlus] = _extractFormattedDigitsAndPlus(text)\r\n\t// If the extracted phone number part\r\n\t// can possibly be a part of some valid phone number\r\n\t// then parse phone number characters from a formatted phone number.\r\n\tif (!VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN.test(formattedDigits)) {\r\n\t\tformattedDigits = ''\r\n\t}\r\n\treturn [formattedDigits, hasPlus]\r\n}","import Metadata from './metadata'\r\nimport PhoneNumber from './PhoneNumber'\r\nimport AsYouTypeState from './AsYouTypeState'\r\nimport AsYouTypeFormatter, { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter'\r\nimport AsYouTypeParser, { extractFormattedDigitsAndPlus } from './AsYouTypeParser'\r\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode'\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\nexport default class AsYouType {\r\n\t/**\r\n\t * @param {(string|object)?} [optionsOrDefaultCountry] - The default country used for parsing non-international phone numbers. Can also be an `options` object.\r\n\t * @param {Object} metadata\r\n\t */\r\n\tconstructor(optionsOrDefaultCountry, metadata) {\r\n\t\tthis.metadata = new Metadata(metadata)\r\n\t\tconst [defaultCountry, defaultCallingCode] = this.getCountryAndCallingCode(optionsOrDefaultCountry)\r\n\t\tthis.defaultCountry = defaultCountry\r\n\t\tthis.defaultCallingCode = defaultCallingCode\r\n\t\tthis.reset()\r\n\t}\r\n\r\n\tgetCountryAndCallingCode(optionsOrDefaultCountry) {\r\n\t\t// Set `defaultCountry` and `defaultCallingCode` options.\r\n\t\tlet defaultCountry\r\n\t\tlet defaultCallingCode\r\n\t\t// Turns out `null` also has type \"object\". Weird.\r\n\t\tif (optionsOrDefaultCountry) {\r\n\t\t\tif (typeof optionsOrDefaultCountry === 'object') {\r\n\t\t\t\tdefaultCountry = optionsOrDefaultCountry.defaultCountry\r\n\t\t\t\tdefaultCallingCode = optionsOrDefaultCountry.defaultCallingCode\r\n\t\t\t} else {\r\n\t\t\t\tdefaultCountry = optionsOrDefaultCountry\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (defaultCountry && !this.metadata.hasCountry(defaultCountry)) {\r\n\t\t\tdefaultCountry = undefined\r\n\t\t}\r\n\t\tif (defaultCallingCode) {\r\n\t\t\t/* istanbul ignore if */\r\n\t\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\t\tif (this.metadata.isNonGeographicCallingCode(defaultCallingCode)) {\r\n\t\t\t\t\tdefaultCountry = '001'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn [defaultCountry, defaultCallingCode]\r\n\t}\r\n\r\n\t/**\r\n\t * Inputs \"next\" phone number characters.\r\n\t * @param {string} text\r\n\t * @return {string} Formatted phone number characters that have been input so far.\r\n\t */\r\n\tinput(text) {\r\n\t\tconst {\r\n\t\t\tdigits,\r\n\t\t\tjustLeadingPlus\r\n\t\t} = this.parser.input(text, this.state)\r\n\t\tif (justLeadingPlus) {\r\n\t\t\tthis.formattedOutput = '+'\r\n\t\t} else if (digits) {\r\n\t\t\tthis.determineTheCountryIfNeeded()\r\n\t\t\t// Match the available formats by the currently available leading digits.\r\n\t\t\tif (this.state.nationalSignificantNumber) {\r\n\t\t\t\tthis.formatter.narrowDownMatchingFormats(this.state)\r\n\t\t\t}\r\n\t\t\tlet formattedNationalNumber\r\n\t\t\tif (this.metadata.hasSelectedNumberingPlan()) {\r\n\t\t\t\tformattedNationalNumber = this.formatter.format(digits, this.state)\r\n\t\t\t}\r\n\t\t\tif (formattedNationalNumber === undefined) {\r\n\t\t\t\t// See if another national (significant) number could be re-extracted.\r\n\t\t\t\tif (this.parser.reExtractNationalSignificantNumber(this.state)) {\r\n\t\t\t\t\tthis.determineTheCountryIfNeeded()\r\n\t\t\t\t\t// If it could, then re-try formatting the new national (significant) number.\r\n\t\t\t\t\tconst nationalDigits = this.state.getNationalDigits()\r\n\t\t\t\t\tif (nationalDigits) {\r\n\t\t\t\t\t\tformattedNationalNumber = this.formatter.format(nationalDigits, this.state)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.formattedOutput = formattedNationalNumber\r\n\t\t\t\t? this.getFullNumber(formattedNationalNumber)\r\n\t\t\t\t: this.getNonFormattedNumber()\r\n\t\t}\r\n\t\treturn this.formattedOutput\r\n\t}\r\n\r\n\treset() {\r\n\t\tthis.state = new AsYouTypeState({\r\n\t\t\tonCountryChange: (country) => {\r\n\t\t\t\t// Before version `1.6.0`, the official `AsYouType` formatter API\r\n\t\t\t\t// included the `.country` property of an `AsYouType` instance.\r\n\t\t\t\t// Since that property (along with the others) have been moved to\r\n\t\t\t\t// `this.state`, `this.country` property is emulated for compatibility\r\n\t\t\t\t// with the old versions.\r\n\t\t\t\tthis.country = country\r\n\t\t\t},\r\n\t\t\tonCallingCodeChange: (country, callingCode) => {\r\n\t\t\t\tthis.metadata.selectNumberingPlan(country, callingCode)\r\n\t\t\t\tthis.formatter.reset(this.metadata.numberingPlan, this.state)\r\n\t\t\t\tthis.parser.reset(this.metadata.numberingPlan)\r\n\t\t\t}\r\n\t\t})\r\n\t\tthis.formatter = new AsYouTypeFormatter({\r\n\t\t\tstate: this.state,\r\n\t\t\tmetadata: this.metadata\r\n\t\t})\r\n\t\tthis.parser = new AsYouTypeParser({\r\n\t\t\tdefaultCountry: this.defaultCountry,\r\n\t\t\tdefaultCallingCode: this.defaultCallingCode,\r\n\t\t\tmetadata: this.metadata,\r\n\t\t\tstate: this.state,\r\n\t\t\tonNationalSignificantNumberChange: () => {\r\n\t\t\t\tthis.determineTheCountryIfNeeded()\r\n\t\t\t\tthis.formatter.reset(this.metadata.numberingPlan, this.state)\r\n\t\t\t}\r\n\t\t})\r\n\t\tthis.state.reset(this.defaultCountry, this.defaultCallingCode)\r\n\t\tthis.formattedOutput = ''\r\n\t\treturn this\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if the phone number is being input in international format.\r\n\t * In other words, returns `true` if and only if the parsed phone number starts with a `\"+\"`.\r\n\t * @return {boolean}\r\n\t */\r\n\tisInternational() {\r\n\t\treturn this.state.international\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the \"country calling code\" part of the phone number.\r\n\t * Returns `undefined` if the number is not being input in international format.\r\n\t * Returns \"country calling code\" for \"non-geographic\" phone numbering plans too.\r\n\t * @return {string} [callingCode]\r\n\t */\r\n\tgetCallingCode() {\r\n\t\treturn this.state.callingCode\r\n\t}\r\n\r\n\t// A legacy alias.\r\n\tgetCountryCallingCode() {\r\n\t\treturn this.getCallingCode()\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a two-letter country code of the phone number.\r\n\t * Returns `undefined` for \"non-geographic\" phone numbering plans.\r\n\t * Returns `undefined` if no phone number has been input yet.\r\n\t * @return {string} [country]\r\n\t */\r\n\tgetCountry() {\r\n\t\tconst { digits, country } = this.state\r\n\t\t// If no digits have been input yet,\r\n\t\t// then `this.country` is the `defaultCountry`.\r\n\t\t// Won't return the `defaultCountry` in such case.\r\n\t\tif (!digits) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tlet countryCode = country\r\n\t\t/* istanbul ignore if */\r\n\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\t// `AsYouType.getCountry()` returns `undefined`\r\n\t\t\t// for \"non-geographic\" phone numbering plans.\r\n\t\t\tif (countryCode === '001') {\r\n\t\t\t\tcountryCode = undefined\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn countryCode\r\n\t}\r\n\r\n\tdetermineTheCountryIfNeeded() {\r\n\t\t// Suppose a user enters a phone number in international format,\r\n\t\t// and there're several countries corresponding to that country calling code,\r\n\t\t// and a country has been derived from the number, and then\r\n\t\t// a user enters one more digit and the number is no longer\r\n\t\t// valid for the derived country, so the country should be re-derived\r\n\t\t// on every new digit in those cases.\r\n\t\t//\r\n\t\t// If the phone number is being input in national format,\r\n\t\t// then it could be a case when `defaultCountry` wasn't specified\r\n\t\t// when creating `AsYouType` instance, and just `defaultCallingCode` was specified,\r\n\t\t// and that \"calling code\" could correspond to a \"non-geographic entity\",\r\n\t\t// or there could be several countries corresponding to that country calling code.\r\n\t\t// In those cases, `this.country` is `undefined` and should be derived\r\n\t\t// from the number. Again, if country calling code is ambiguous, then\r\n\t\t// `this.country` should be re-derived with each new digit.\r\n\t\t//\r\n\t\tif (!this.state.country || this.isCountryCallingCodeAmbiguous()) {\r\n\t\t\tthis.determineTheCountry()\r\n\t\t}\r\n\t}\r\n\r\n\t// Prepends `+CountryCode ` in case of an international phone number\r\n\tgetFullNumber(formattedNationalNumber) {\r\n\t\tif (this.isInternational()) {\r\n\t\t\tconst prefix = (text) => this.formatter.getInternationalPrefixBeforeCountryCallingCode(this.state, {\r\n\t\t\t\tspacing: text ? true : false\r\n\t\t\t}) + text\r\n\t\t\tconst { callingCode } = this.state\r\n\t\t\tif (!callingCode) {\r\n\t\t\t\treturn prefix(`${this.state.getDigitsWithoutInternationalPrefix()}`)\r\n\t\t\t}\r\n\t\t\tif (!formattedNationalNumber) {\r\n\t\t\t\treturn prefix(callingCode)\r\n\t\t\t}\r\n\t\t\treturn prefix(`${callingCode} ${formattedNationalNumber}`)\r\n\t\t}\r\n\t\treturn formattedNationalNumber\r\n\t}\r\n\r\n\tgetNonFormattedNationalNumberWithPrefix() {\r\n\t\tconst {\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tcomplexPrefixBeforeNationalSignificantNumber,\r\n\t\t\tnationalPrefix\r\n\t\t} = this.state\r\n\t\tlet number = nationalSignificantNumber\r\n\t\tconst prefix = complexPrefixBeforeNationalSignificantNumber || nationalPrefix\r\n\t\tif (prefix) {\r\n\t\t\tnumber = prefix + number\r\n\t\t}\r\n\t\treturn number\r\n\t}\r\n\r\n\tgetNonFormattedNumber() {\r\n\t\tconst { nationalSignificantNumberMatchesInput } = this.state\r\n\t\treturn this.getFullNumber(\r\n\t\t\tnationalSignificantNumberMatchesInput\r\n\t\t\t\t? this.getNonFormattedNationalNumberWithPrefix()\r\n\t\t\t\t: this.state.getNationalDigits()\r\n\t\t)\r\n\t}\r\n\r\n\tgetNonFormattedTemplate() {\r\n\t\tconst number = this.getNonFormattedNumber()\r\n\t\tif (number) {\r\n\t\t\treturn number.replace(/[\\+\\d]/g, DIGIT_PLACEHOLDER)\r\n\t\t}\r\n\t}\r\n\r\n\tisCountryCallingCodeAmbiguous() {\r\n\t\tconst { callingCode } = this.state\r\n\t\tconst countryCodes = this.metadata.getCountryCodesForCallingCode(callingCode)\r\n\t\treturn countryCodes && countryCodes.length > 1\r\n\t}\r\n\r\n\t// Determines the country of the phone number\r\n\t// entered so far based on the country phone code\r\n\t// and the national phone number.\r\n\tdetermineTheCountry() {\r\n\t\tthis.state.setCountry(getCountryByCallingCode(\r\n\t\t\tthis.isInternational() ? this.state.callingCode : this.defaultCallingCode,\r\n\t\t\tthis.state.nationalSignificantNumber,\r\n\t\t\tthis.metadata\r\n\t\t))\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an instance of `PhoneNumber` class.\r\n\t * Will return `undefined` if no national (significant) number\r\n\t * digits have been entered so far, or if no `defaultCountry` has been\r\n\t * set and the user enters a phone number not in international format.\r\n\t */\r\n\tgetNumber() {\r\n\t\tlet {\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tcarrierCode\r\n\t\t} = this.state\r\n\t\tif (this.isInternational()) {\r\n\t\t\tif (!this.state.callingCode) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (!this.state.country && !this.defaultCallingCode) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (!nationalSignificantNumber) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tconst countryCode = this.getCountry()\r\n\t\tconst callingCode = this.getCountryCallingCode() || this.defaultCallingCode\r\n\t\tconst phoneNumber = new PhoneNumber(\r\n\t\t\tcountryCode || callingCode,\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tthis.metadata.metadata\r\n\t\t)\r\n\t\tif (carrierCode) {\r\n\t\t\tphoneNumber.carrierCode = carrierCode\r\n\t\t}\r\n\t\t// Phone number extensions are not supported by \"As You Type\" formatter.\r\n\t\treturn phoneNumber\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if the phone number is \"possible\".\r\n\t * Is just a shortcut for `PhoneNumber.isPossible()`.\r\n\t * @return {boolean}\r\n\t */\r\n\tisPossible() {\r\n\t\tconst phoneNumber = this.getNumber()\r\n\t\tif (!phoneNumber) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\treturn phoneNumber.isPossible()\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if the phone number is \"valid\".\r\n\t * Is just a shortcut for `PhoneNumber.isValid()`.\r\n\t * @return {boolean}\r\n\t */\r\n\tisValid() {\r\n\t\tconst phoneNumber = this.getNumber()\r\n\t\tif (!phoneNumber) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\treturn phoneNumber.isValid()\r\n\t}\r\n\r\n\t/**\r\n\t * @deprecated\r\n\t * This method is used in `react-phone-number-input/source/input-control.js`\r\n\t * in versions before `3.0.16`.\r\n\t */\r\n\tgetNationalNumber() {\r\n\t\treturn this.state.nationalSignificantNumber\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the phone number characters entered by the user.\r\n\t * @return {string}\r\n\t */\r\n\tgetChars() {\r\n\t\treturn (this.state.international ? '+' : '') + this.state.digits\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the template for the formatted phone number.\r\n\t * @return {string}\r\n\t */\r\n\tgetTemplate() {\r\n\t\treturn this.formatter.getTemplate(this.state) || this.getNonFormattedTemplate() || ''\r\n\t}\r\n}","import metadata from '../metadata'\r\nimport { AsYouType as _AsYouType } from '../../core/index'\r\n\r\nexport function AsYouType(country) {\r\n\treturn _AsYouType.call(this, country, metadata)\r\n}\r\n\r\nAsYouType.prototype = Object.create(_AsYouType.prototype, {})\r\nAsYouType.prototype.constructor = AsYouType","import { normalizeArguments } from './parsePhoneNumber'\r\nimport parsePhoneNumber from './parsePhoneNumber_'\r\nimport ParseError from './ParseError'\r\nimport Metadata from './metadata'\r\nimport checkNumberLength from './helpers/checkNumberLength'\r\n\r\nexport default function validatePhoneNumberLength() {\r\n\tlet { text, options, metadata } = normalizeArguments(arguments)\r\n\toptions = {\r\n\t\t...options,\r\n\t\textract: false\r\n\t}\r\n\r\n\t// Parse phone number.\r\n\ttry {\r\n\t\tconst phoneNumber = parsePhoneNumber(text, options, metadata)\r\n\t\tmetadata = new Metadata(metadata)\r\n\t\tmetadata.selectNumberingPlan(phoneNumber.countryCallingCode)\r\n\t\tconst result = checkNumberLength(phoneNumber.nationalNumber, metadata)\r\n\t\tif (result !== 'IS_POSSIBLE') {\r\n\t\t\treturn result\r\n\t\t}\r\n\t} catch (error) {\r\n\t\t/* istanbul ignore else */\r\n\t\tif (error instanceof ParseError) {\r\n\t\t\treturn error.message\r\n\t\t} else {\r\n\t\t\tthrow error\r\n\t\t}\r\n\t}\r\n}","import { withMetadata } from '../metadata'\r\nimport { validatePhoneNumberLength as _validatePhoneNumberLength } from '../../core/index'\r\n\r\nexport function validatePhoneNumberLength() {\r\n\treturn withMetadata(_validatePhoneNumberLength, arguments)\r\n}","import { styled } from '@volkswagen-onehub/components-core';\nimport React, { useEffect, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { TextInputExtended, SelectExtended, PaddingWrapper, InputWidthWrapper } from 'src/components';\nimport { OneFormState } from 'src/types';\nimport { useOneFormContext } from 'src/feature-app/OneForm';\nimport { InputError } from './InputError';\nimport { callingCountriesOwn } from './';\nimport {\n isPossiblePhoneNumber,\n isValidPhoneNumber,\n validatePhoneNumberLength,\n Metadata,\n AsYouType,\n} from 'libphonenumber-js';\nimport parsePhoneNumber from 'libphonenumber-js';\n\ninterface TelefonoProps {\n paginaConfirmacion?: boolean;\n ignoreValidation?: boolean;\n required?: boolean;\n notALayer?: boolean;\n onFocusHandler?: () => void;\n onChangeHandler?: () => void;\n hidePrefijo?: boolean;\n name?: string;\n}\n\nconst DisplayWrapper = styled.div`\n display: flex;\n`;\n\nconst PrefWrapper = styled.div`\n label {\n width: 109px;\n @media screen and (min-width: 560px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid005)' : '116px')};\n }\n @media screen and (min-width: 960px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid003)' : '120px')};\n }\n @media all and (min-width: 1280px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid002)' : '120px')};\n }\n @media screen and (min-width: 1600px) {\n padding-top: 0px;\n }\n @media all and (min-width: 1920px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid002)' : '120px')};\n }\n @media all and (min-width: 2560px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid001)' : '120px')};\n }\n }\n`;\nconst TelfWrapper = styled.div`\n width: 100%;\n padding-left: ${(props) => (props.notALayer ? '20px' : '24px')};\n @media screen and (min-width: 560px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid008)' : '192px')};\n padding-left: ${(props) => (props.hidePrefijo ? '0px' : props.notALayer ? '24px' : '20px')};\n }\n @media screen and (min-width: 960px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid005)' : '212px')};\n }\n @media all and (min-width: 1280px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid004)' : '212px')};\n }\n @media all and (min-width: 1600px) {\n padding-left: ${(props) => (props.hidePrefijo ? '0px' : props.notALayer ? '28px' : '20px')};\n }\n @media all and (min-width: 1920px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid003)' : '212px')};\n }\n @media all and (min-width: 2560px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid003)' : '212px')};\n }\n`;\n\nconst TelefonoFlex = styled.div`\n display: flex;\n flex-wrap: wrap;\n flex-direction: column;\n`;\n\nconst regExpNonDigit = /\\D/;\nexport const cellphoneIsInvalid = (value: string) =>\n regExpNonDigit.test(value) || !/[6|7|8|9][0-9]{8}/gi.test(value) || (value.length > 1 && value.length < 8);\n// Uso la regexp porque por alguna razón si la saco del componente y la exporto para otros componentes da error y no lo reconoce correctamente.\nexport const TelefonoInput = ({ ignoreValidation, required, onFocusHandler, onChangeHandler, name }: TelefonoProps) => {\n const { cellphone, prefix, raceCellphone, formName } = useSelector((state: OneFormState) => state.formData.fields);\n const [telefonoError, setTelefonoError] = useState(false);\n const [pristine, setPristine] = useState(true);\n const [telephone, setTelephone] = useState(null);\n const { error, setError } = useOneFormContext();\n const [minLength, setMinLength] = useState(9);\n const [maxLength, setMaxLength] = useState(9);\n const { register, errors, setError: setErrorForm, clearError } = useFormContext();\n const regExp = /[6|7|8|9][0-9]{8}/gi;\n const dispatch = useDispatch();\n\n const [inputName, setInputName ] = useState('cellphone');\n\n useEffect(()=> {\n if(name) {\n setInputName(name);\n }\n }, [name]);\n\n const handleChange = (e: any) => {\n setTelephone(e.target.value);\n dispatch({ type: 'UPDATE_FIELDS', payload: { [inputName]: e.target.value } });\n\n if (isValidPhoneNumber(`${prefix}${e.target.value}`)) {\n setTelefonoError(false);\n } else {\n setTelefonoError(true);\n }\n setPristine(false);\n };\n\n useEffect(() => {\n if ((error && !pristine) || (error && !telephone)) {\n setTelefonoError(true);\n } else {\n setTelefonoError(false);\n }\n }, [error]);\n\n useEffect(() => {\n const metadata = new Metadata();\n const asYouType = new AsYouType();\n asYouType.reset();\n asYouType.input(prefix ? prefix : '+34');\n const possibleLengths = metadata.selectNumberingPlan(asYouType.country).possibleLengths();\n const maxLength = Math.max(...possibleLengths);\n const minLength = Math.min(...possibleLengths);\n setMaxLength(maxLength);\n setMinLength(minLength);\n handleChange({ target: { value: telephone } });\n }, [prefix]);\n\n useEffect(() => {\n if(formName === 'race' && raceCellphone) {\n setTelephone(raceCellphone);\n } else {\n if (cellphone) {\n setTelephone(cellphone);\n }\n }\n \n if (!prefix) {\n // En comerciales da error si no hay prefijo, por lo que lo seteamos directamente como +34 para que se pueda validar correctamente.\n dispatch({ type: 'UPDATE_FIELDS', payload: { prefix: '+34' } });\n }\n }, []);\n\n return (\n \n isValidPhoneNumber(`${prefix}${value}`),\n // pattern: {\n // value: regExp,\n // message: 'Solo se aceptan números',\n // },\n })}\n onChange={(e) => {\n handleChange(e);\n if (onChangeHandler) {\n onChangeHandler();\n }\n }}\n onFocus={() => {\n if (onFocusHandler) {\n onFocusHandler();\n }\n }}\n required={required}\n />\n\n {telephone && telephone.length > 1 && telefonoError && !isValidPhoneNumber(`${prefix}${telephone}`) ? (\n \n {validatePhoneNumberLength(`${prefix}${telephone}`) === 'TOO_LONG'\n ? `Máximo ${maxLength} dígitos`\n : validatePhoneNumberLength(`${prefix}${telephone}`) === 'TOO_SHORT'\n ? 'Faltan números'\n : validatePhoneNumberLength(`${prefix}${telephone}`) === 'NOT_A_NUMBER'\n ? 'Solo se aceptan números'\n : isValidPhoneNumber(`${prefix}${telephone}`)\n ? null\n : 'Número no válido'}\n \n ) : null}\n \n );\n};\n\nexport const PrefijoInput = ({ required, name }: TelefonoProps) => {\n const { prefix : prefixFromData, racePrefix: racePrefixFromData, formName} = useSelector((state: OneFormState) => state.formData.fields);\n const [prefix, setPrefix] = useState(null);\n const [prefixData, setPrefixData] = useState([]);\n const dispatch = useDispatch();\n\n const [inputName, setInputName ] = useState('prefix');\n\n useEffect(()=> {\n if(name) {\n setInputName(name);\n }\n }, [name]);\n\n useEffect(() => {\n if (prefix) {\n dispatch({ type: 'UPDATE_FIELDS', payload: { prefix } });\n }\n }, [prefix]);\n\n useEffect(() => {\n if(formName === 'race' && racePrefixFromData) {\n setPrefix(racePrefixFromData);\n } else if (prefixFromData) {\n setPrefix(prefixFromData);\n } else {\n setPrefix('+34');\n dispatch({ type: 'UPDATE_FIELDS', payload: { [inputName]: '+34' } });\n }\n\n const merged = [].concat(...callingCountriesOwn);\n const prefixData = merged\n .map((code) => code.replace(/ |\\+/g, ''))\n .filter((elem, index, self) => index === self.indexOf(elem))\n .sort((a: any, b: any) => a - b)\n .map((code) => `+${code}`);\n\n setPrefixData(prefixData);\n }, []);\n\n function handleChangePrefix(event: any) {\n const newPrefix = event.currentTarget.value;\n setPrefix(newPrefix);\n }\n\n return (\n null}\n updateFields\n setOption={setPrefix}\n isRequired={required}\n />\n );\n};\n\nexport function TelefonoPrefijo(props: TelefonoProps) {\n return (\n <>\n {props.hidePrefijo ? null : (\n \n \n \n )}\n \n \n \n \n );\n}\n\nexport function Telefono(props: TelefonoProps) {\n return (\n \n \n \n \n \n \n \n );\n}\n","import React, { Ref, useEffect, useState } from 'react';\nimport { TextArea, TextAreaProps } from '@volkswagen-onehub/components-core';\nimport { useFormContext } from 'react-hook-form';\nimport { useFeatureServices } from 'src/feature-app';\nimport { FieldType } from 'src/feature-service/es-oneform-core-feature-service/types';\nimport { useSelector } from 'react-redux';\nimport { OneFormState } from 'src/types';\nimport { useTrackingManager } from 'src/feature-app/hooks';\nimport { useOneFormContext } from 'src/feature-app';\n\nexport interface TextAreaExtendedProps extends TextAreaProps {\n name: FieldType;\n innerRef?: Ref;\n /**\n * En caso de que el input esté junto con un CTA, se debe de pasar el label del CTA para en caso de que se seleccione el CTA no se refleje en el input.\n */\n alternateCTAText?: string;\n rows?: number;\n required?: boolean;\n maxLength?: number;\n}\n\nexport function TextAreaExtended(props: TextAreaExtendedProps) {\n const { innerRef, name, onBlur, alternateCTAText, onChange, label, rows, required, maxLength } = props;\n const { setValue } = useFormContext();\n const { error, setError } = useOneFormContext();\n const trackingManager = useTrackingManager();\n const oneFormFeatureService = useFeatureServices()['es:oneform-core'];\n const { formData } = useSelector((state: OneFormState) => state);\n const [currentValue, setCurrentValue] = useState('');\n\n const addMaxLength = () => {\n const aux = document.getElementsByTagName('textarea');\n aux[0].setAttribute('maxlength', maxLength.toString());\n };\n\n useEffect(() => {\n if (maxLength) addMaxLength();\n const value = formData.fields[name];\n\n if (value && value !== alternateCTAText) {\n setCurrentValue(value);\n }\n\n }, []);\n\n return (\n <>\n {\n setCurrentValue(e.currentTarget.value);\n if(e.currentTarget.value.length > 3){\n setError(false);\n }\n if (onChange) {\n onChange(e);\n }\n }}\n onBlur={(e: any) => {\n if (onBlur) onBlur(e);\n setValue(name, e.currentTarget.value);\n oneFormFeatureService.setField(name, e.currentTarget.value);\n }}\n onFocus={() => {\n trackingManager.trackFormFieldClick(\n {\n contentId: label,\n },\n {\n FormFieldName: name,\n }\n );\n }}\n value={currentValue}\n rows={rows ? rows : 3}\n required={required ? required : false}\n maxLength={maxLength}\n />\n \n \n );\n}\n","export const callingCountriesOwn = [\n ['+247'],\n ['+376'],\n ['+971'],\n ['+93'],\n ['+1 268'],\n ['+1 264'],\n ['+355'],\n ['+374'],\n ['+244'],\n ['+672'],\n ['+54'],\n ['+1 684'],\n ['+43'],\n ['+61'],\n ['+297'],\n ['+358'],\n ['+994'],\n ['+387'],\n ['+1 246'],\n ['+880'],\n ['+32'],\n ['+226'],\n ['+359'],\n ['+973'],\n ['+257'],\n ['+229'],\n ['+590'],\n ['+1 441'],\n ['+673'],\n ['+591'],\n ['+599'],\n ['+55'],\n ['+1 242'],\n ['+975'],\n ['+267'],\n ['+375'],\n ['+501'],\n ['+1'],\n ['+61'],\n ['+243'],\n ['+236'],\n ['+242'],\n ['+41'],\n ['+225'],\n ['+682'],\n ['+56'],\n ['+237'],\n ['+86'],\n ['+57'],\n ['+506'],\n ['+53'],\n ['+238'],\n ['+599'],\n ['+61'],\n ['+357'],\n ['+420'],\n ['+49'],\n ['+253'],\n ['+45'],\n ['+1 767'],\n ['+1 809', '+1 829', '+1 849'],\n ['+213'],\n ['+593'],\n ['+372'],\n ['+20'],\n ['+212'],\n ['+291'],\n ['+34'],\n ['+251'],\n ['+388'],\n ['+358'],\n ['+679'],\n ['+500'],\n ['+691'],\n ['+298'],\n ['+33'],\n ['+241'],\n ['+241'],\n ['+44'],\n ['+473'],\n ['+995'],\n ['+594'],\n ['+44'],\n ['+233'],\n ['+350'],\n ['+299'],\n ['+220'],\n ['+224'],\n ['+590'],\n ['+240'],\n ['+30'],\n ['+502'],\n ['+1 671'],\n ['+245'],\n ['+592'],\n ['+852'],\n ['+504'],\n ['+385'],\n ['+509'],\n ['+36'],\n ['+62'],\n ['+353'],\n ['+972'],\n ['+44'],\n ['+91'],\n ['+246'],\n ['+964'],\n ['+98'],\n ['+354'],\n ['+39'],\n ['+44'],\n ['+1 876'],\n ['+962'],\n ['+81'],\n ['+254'],\n ['+996'],\n ['+855'],\n ['+686'],\n ['+269'],\n ['+1 869'],\n ['+850'],\n ['+82'],\n ['+965'],\n ['+1 345'],\n ['+7', '+7 6', '+7 7'],\n ['+856'],\n ['+961'],\n ['+1 758'],\n ['+423'],\n ['+94'],\n ['+231'],\n ['+266'],\n ['+370'],\n ['+352'],\n ['+371'],\n ['+218'],\n ['+212'],\n ['+377'],\n ['+373'],\n ['+382'],\n ['+590'],\n ['+261'],\n ['+692'],\n ['+389'],\n ['+223'],\n ['+95'],\n ['+976'],\n ['+853'],\n ['+1 670'],\n ['+596'],\n ['+222'],\n ['+1 664'],\n ['+356'],\n ['+230'],\n ['+960'],\n ['+265'],\n ['+52'],\n ['+60'],\n ['+258'],\n ['+264'],\n ['+687'],\n ['+227'],\n ['+672'],\n ['+234'],\n ['+505'],\n ['+31'],\n ['+47'],\n ['+977'],\n ['+674'],\n ['+683'],\n ['+64'],\n ['+968'],\n ['+507'],\n ['+51'],\n ['+689'],\n ['+675'],\n ['+63'],\n ['+92'],\n ['+48'],\n ['+508'],\n ['+872'],\n ['+1 787', '+1 939'],\n ['+970'],\n ['+351'],\n ['+680'],\n ['+595'],\n ['+974'],\n ['+262'],\n ['+40'],\n ['+381'],\n ['+7', '+7 3', '+7 4', '+7 8'],\n ['+250'],\n ['+966'],\n ['+677'],\n ['+248'],\n ['+249'],\n ['+46'],\n ['+65'],\n ['+290'],\n ['+386'],\n ['+47'],\n ['+421'],\n ['+232'],\n ['+378'],\n ['+221'],\n ['+252'],\n ['+597'],\n ['+211'],\n ['+239'],\n ['+503'],\n ['+1 721'],\n ['+963'],\n ['+268'],\n ['+290'],\n ['+1 649'],\n ['+235'],\n ['+228'],\n ['+66'],\n ['+992'],\n ['+690'],\n ['+670'],\n ['+993'],\n ['+216'],\n ['+676'],\n ['+90'],\n ['+1 868'],\n ['+688'],\n ['+886'],\n ['+255'],\n ['+380'],\n ['+256'],\n ['+1'],\n ['+1'],\n ['+598'],\n ['+998'],\n ['+379', '+39'],\n ['+1 784'],\n ['+58'],\n ['+1 284'],\n ['+1 340'],\n ['+84'],\n ['+678'],\n ['+681'],\n ['+685'],\n ['+383'],\n ['+967'],\n ['+262'],\n ['+27'],\n ['+260'],\n ['+263'],\n];\n","import React from 'react';\nimport { Text, TextAppearance, TextColor, styled, TextAlignment } from '@volkswagen-onehub/components-core';\n\nconst Mark = styled.span`\n display: inline-block;\n position: relative;\n border: 1px solid #001e50;\n width: 24px;\n height: 24px;\n left: 0;\n border-radius: 50%;\n margin-right: 12px;\n vertical-align: middle;\n &::after {\n content: '';\n display: block;\n width: 0;\n height: 0;\n border-radius: 50%;\n background-color: #001e50;\n opacity: 0;\n left: 50%;\n top: 50%;\n position: absolute;\n transition: all 110ms;\n }\n`;\n\nconst RadioButtonWrapper = styled.label`\n display: flex;\n justify-content: center;\n cursor: pointer;\n position: relative;\n color: #001e50;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n\n input {\n position: absolute;\n visibility: hidden;\n display: none;\n &:checked + ${Mark} {\n &::after {\n width: 12px;\n height: 12px;\n opacity: 1;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n }\n }\n }\n`;\n\ninterface radioButtonProps {\n onClick?: any;\n inputName?: string;\n inputValue?: string;\n checked?: boolean;\n}\n\nexport const CustomRadioButton = (props: radioButtonProps) => {\n return (\n \n \n \n \n {props.inputValue}\n \n \n );\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport { styled, Text, TextAppearance, Select } from '@volkswagen-onehub/components-core';\nimport { ChevronDown, ChevronUp, Checkmark } from 'src/icons-core-imports';\n\nimport { useDispatch } from 'react-redux';\n\ntype WrapperProps = {\n disabled?: boolean;\n};\ntype DropwDownProps = {\n showOptions: boolean;\n itemWidth: number;\n disabled?: boolean;\n error?: boolean;\n selectY?: number;\n atTheBottom?: boolean;\n};\ntype LabelProps = {\n disabled: boolean;\n isActive: boolean;\n};\n\nconst SelectWrapper = styled.div`\n position: relative;\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n width: 100%;\n cursor: ${(props) => (props.disabled ? 'not-allowed' : 'pointer')};\n text-align: left;\n`;\nconst DropDown = styled.div`\n width: ${(props) => (props.itemWidth ? `${props.itemWidth}px` : '100%')};\n display: flex;\n justify-content: space-between;\n align-items: flex-end;\n border-bottom: 1px solid ${(props) => (props.error ? '#E4002C' : '#DFE4E8')};\n padding: 8px 0 5px;\n color: ${(props) => (props.disabled ? '#DFE4E8' : '#FFFFFF')};\n .sel-item {\n margin: 0;\n div {\n margin: 0;\n }\n @media screen and (min-width: 560px) {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n width: 85%;\n * {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n width: 85%;\n }\n }\n }\n`;\nconst OptionsList = styled.ul`\n display: ${(props) => (props.showOptions ? 'block' : 'none')};\n width: ${(props) => (props.itemWidth ? `${props.itemWidth}px` : 'auto')};\n background-color: white;\n z-index: 100;\n height: auto;\n /* max-height: ${(props) => (props.selectY ? `calc(100vh - ${props.selectY}px)` : '256px')}; */\n max-height: 256px;\n overflow-y: auto;\n position: ${(props) => (props.atTheBottom ? null : 'absolute')};\n padding-left: 0;\n margin-top: 0;\n li:last-child {\n padding-bottom: ${(props) => (props.atTheBottom ? '0' : '31px')};\n }\n`;\nconst Option = styled.li`\n position: relative;\n display: flex;\n box-sizing: border-box;\n border-bottom: 1px solid #dfe4e8;\n padding-left: 40px;\n color: #001e50;\n svg {\n position: absolute;\n left: 6px;\n top: 10px;\n }\n &:hover {\n transition: 0.3s;\n background-color: #f6f6f6;\n }\n &.selected {\n border-bottom: 1px solid #001e50 !important;\n }\n`;\nconst Label = styled.label`\n position: absolute;\n width: 100%;\n transform: ${(props) => (props.isActive ? 'translate(0, -20px)' : 'translate(0, 4px)')};\n @media all and (min-width: 1600px) {\n transform: ${(props) => (props.isActive ? 'translate(0, -20px)' : 'translate(0, -1px)')};\n }\n letter-spacing: ${(props) => (props.isActive ? '0.00938em' : 'inherit')};\n transform-origin: top left;\n transition: all 150ms ease-in;\n color: ${(props) => (props.disabled ? '#DFE4E8' : '#001E50')};\n cursor: ${(props) => (props.disabled ? 'not-allowed' : 'pointer')};\n > div {\n margin: 0;\n }\n`;\n\ninterface SelectProps {\n options: Array | Array;\n name: string;\n label: string;\n value?: any;\n required?: boolean;\n disabled?: boolean;\n error?: boolean;\n getDealers?: (provincia: string) => void;\n setFormValue?: (selValueIndex: number) => void;\n onClick?: (e?: any) => void;\n setOption?: React.Dispatch>;\n updateFields?: boolean;\n atTheBottom: boolean;\n}\n\nexport const CustomSelect = React.forwardRef((props: SelectProps, ref: React.Ref) => {\n const [selItem, setSelItem] = useState(null);\n const [showOptions, setShowOptions] = useState(false);\n const [selectWidth, setSelectWitdh] = useState(null);\n const [selectY, setSelectY] = useState(null);\n const [keyValuePair, setKeyValuePair] = useState();\n const { name, options, setOption, updateFields, value, atTheBottom } = props;\n const wrapperRef = useRef(null);\n const dispatch = useDispatch();\n\n const optionsToggle = () => {\n if (!props.disabled) {\n setShowOptions(!showOptions);\n }\n };\n\n const handleClickOutside = (e: any) => {\n if (!wrapperRef.current.contains(e.target)) {\n setShowOptions(false);\n }\n };\n\n const setItem = (option: any, index: number) => {\n if (!props.disabled) {\n if (typeof option !== 'object') {\n setSelItem(option);\n if (setOption) setOption(option);\n // if (props.name === 'provincia') props.getDealers(option);\n } else {\n const dealerName = option.props.children[0].props.children;\n setSelItem(dealerName);\n }\n if (props.setFormValue) props.setFormValue(index);\n setShowOptions(false);\n }\n };\n\n useEffect(() => {\n setSelItem(null);\n }, [props.options]);\n\n useEffect(() => {\n const width = wrapperRef.current ? wrapperRef.current.offsetWidth : 0;\n const height = wrapperRef.current ? wrapperRef.current.offsetTop : 0;\n setSelectWitdh(width);\n setSelectY(height);\n document.addEventListener('mousedown', handleClickOutside);\n // función que se llama cuando la componente se desmonta\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [wrapperRef.current]);\n\n useEffect(() => {\n updateFields\n ? dispatch({ type: 'UPDATE_FIELDS', payload: { [name]: keyValuePair ? keyValuePair : value } })\n : undefined;\n }, [keyValuePair, value]);\n\n useEffect(() => {\n if (value) {\n setTimeout(() => {\n setSelItem(value);\n }, 0);\n }\n }, [value]);\n\n //Adaptación max-height ul según viewrport\n\n return (\n \n optionsToggle()}\n isActive={selItem !== null ? true : false}\n disabled={props.disabled}\n className=\"select-label\"\n >\n \n {props.label}\n {/* {props.required ? * : null} */}\n \n \n {\n optionsToggle();\n props.onClick();\n }}\n defaultValue={value}\n showOptions={showOptions}\n itemWidth={selectWidth}\n disabled={props.disabled}\n error={props.error}\n className=\"drop-down\"\n >\n

    \n {selItem}\n

    \n {showOptions ? : }\n \n \n {options.map((option: any, index: number) => {\n if (typeof option === 'string') {\n return (\n {\n setItem(option, index);\n }}\n key={index}\n className={selItem == option ? 'selected' : 'option'}\n >\n {selItem == option ? : null}\n

    {option}

    \n \n );\n } else {\n return (\n {\n setItem(option.name, index);\n setKeyValuePair(option.code);\n }}\n key={index}\n className={selItem == option.name ? 'selected' : 'option'}\n >\n {selItem == option.name ? : null}\n

    {option.name}

    \n \n );\n }\n })}\n \n \n
    \n );\n});\n","import { styled } from '@volkswagen-onehub/components-core';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useStore, useSelector, useDispatch } from 'react-redux';\nimport { InputButton } from '.';\nimport { OneFormState } from 'src/types';\nimport { useOneFormContext } from 'src/feature-app/OneForm';\n\ntype CTAWrapperProps = {\n ctaWidth?: string;\n wrapperWidth?: string;\n};\n\nconst CTAWrapper = styled.div`\n text-align: left;\n margin: -10px;\n margin-top: 32px;\n max-width: ${(props) => (props.wrapperWidth ? props.wrapperWidth : null)};\n\n @media all and (max-height: 624px) {\n margin-top: 24px;\n }\n & > button {\n margin: 12px;\n width: ${(props) => (props.ctaWidth ? `${props.ctaWidth}px` : 'auto')};\n }\n`;\n\ninterface CTAValues {\n value?: string;\n label: string;\n}\n\ninterface MultipleOptionCTAsProps {\n ctaValues: CTAValues[];\n name: string;\n minSelected?: number;\n maxSelected?: number;\n ignoreHandleClick?: boolean;\n wrapperWidth?: string;\n exclusiveCTA?: boolean;\n exclusiveCTAValues?: CTAValues[];\n}\n\ninterface CTAsRef {\n [ctaName: string]: HTMLButtonElement;\n}\n\nexport function MultipleOptionCTAs(props: MultipleOptionCTAsProps) {\n const dispatch = useDispatch();\n const { \n ctaValues, \n ignoreHandleClick, \n name, \n maxSelected = ctaValues.length, \n minSelected = 1, \n wrapperWidth,\n exclusiveCTA,\n exclusiveCTAValues\n } = props;\n const { formData } = useSelector((state: OneFormState) => state);\n\n const { register, setValue } = useFormContext();\n const [selectedValue, setSelectedValue] = useState(null);\n const [selectedLabel, setSelectedLabel] = useState(null);\n const [ disabledAll, setDisabledAll ] = useState(false);\n const [ disabledExclusiveCTA, setDisabledExclusiveCTA ] = useState(false);\n const [aux, setAux] = useState(null);\n const ctaRefs = useRef({});\n\n useEffect(() => {\n if (formData.fields[name]) {\n const aux = formData.fields[name].split(',');\n let selectedVal = [];\n let selectedLabel = [];\n for (let i = 0; i < aux.length; i++) {\n const auxDos = ctaValues.find((e) => aux[i] === e.value);\n if (auxDos) {\n selectedVal.push(auxDos.value);\n selectedLabel.push(auxDos.label);\n }\n }\n setSelectedLabel(selectedLabel);\n setSelectedValue(selectedVal);\n }\n }, []);\n\n const handleOnClick = (cta: CTAValues) => {\n if (ctaRefs.current) {\n const ref = ctaRefs.current[cta.label];\n if (ref) {\n ref.blur();\n }\n }\n if (selectedValue === null) {\n setSelectedValue([cta.value]);\n setSelectedLabel([cta.label]);\n } else if (!selectedLabel.includes(cta.label)) { \n if (selectedLabel.length < maxSelected) {\n const aux = selectedValue.concat([cta.value]);\n const auxTwo = selectedLabel.concat([cta.label]);\n setSelectedValue(aux);\n setSelectedLabel(auxTwo);\n }\n } else if (selectedLabel.includes(cta.label)) {\n const aux = selectedValue.filter((a) => a !== cta.value);\n const auxTwo = selectedLabel.filter((a) => a !== cta.label);\n if (aux === []) {\n setSelectedValue(null);\n setSelectedLabel(null);\n } else {\n setSelectedValue(aux);\n setSelectedLabel(auxTwo);\n }\n } else {\n setSelectedValue(null);\n setSelectedLabel(null);\n setValue(name, null);\n dispatch({ type: 'UPDATE_FIELDS', payload: { [name]: null } });\n }\n };\n\n useEffect(()=>{\n if(exclusiveCTA && selectedValue) {\n if(selectedValue.length === 0) {\n setDisabledAll(false);\n setDisabledExclusiveCTA(false);\n } else if(selectedValue.includes(exclusiveCTAValues[0].value)) {\n setDisabledAll(true);\n setDisabledExclusiveCTA(false);\n } else {\n setDisabledAll(false);\n setDisabledExclusiveCTA(true);\n }\n }\n }, [selectedValue]);\n\n useEffect(() => {\n if (selectedValue) {\n if (selectedLabel.length >= minSelected && selectedLabel.length <= maxSelected) {\n setValue(name, selectedValue);\n setAux(selectedValue);\n } else {\n setValue(name, null);\n }\n } else {\n setValue(name, null);\n }\n }),\n [selectedValue];\n\n return (\n \n {ctaValues.map((cta: CTAValues, index: number) => (\n {\n register(ref, {\n required: true,\n });\n if (!ctaRefs.current || !ctaRefs.current[cta.label]) {\n ctaRefs.current[cta.label] = ref;\n }\n }}\n ignoreHandleClick={ignoreHandleClick}\n selectedValue={\n selectedLabel === null\n ? ''\n : selectedLabel.find((e) => e === cta.label)\n ? selectedLabel.find((e) => e === cta.label)\n : ''\n }\n size={'small'}\n key={index}\n onClick={(e) => {\n e.preventDefault();\n handleOnClick(cta);\n }}\n disabled={disabledAll}\n />\n ))}\n {\n exclusiveCTA ? (\n <>\n {\n exclusiveCTAValues.map((cta: CTAValues, index: number) => (\n {\n register(ref, {\n required: true,\n });\n if (!ctaRefs.current || !ctaRefs.current[cta.label]) {\n ctaRefs.current[cta.label] = ref;\n }\n }}\n ignoreHandleClick={ignoreHandleClick}\n selectedValue={\n selectedLabel === null\n ? ''\n : selectedLabel.find((e) => e === cta.label)\n ? selectedLabel.find((e) => e === cta.label)\n : ''\n }\n size={'small'}\n key={index}\n onClick={(e) => {\n e.preventDefault();\n handleOnClick(cta);\n }}\n disabled={disabledExclusiveCTA}\n />\n ))\n }\n \n ) : null\n }\n \n \n );\n}\n","import { styled } from '@volkswagen-onehub/components-core';\nimport React, { useEffect, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useStore, useSelector, useDispatch } from 'react-redux';\nimport { InputButton } from '.';\nimport { OneFormState } from 'src/types';\nimport { useOneFormContext } from 'src/feature-app/OneForm';\n\ntype CTAWrapperProps = {\n ctaWidth?: string;\n color?: string;\n marginTop?: string;\n wrapperWidth?: string;\n};\n\nconst CTAWrapper = styled.div`\n text-align: left;\n margin: -10px;\n margin-top: ${(props) => props.marginTop ? props.marginTop : '32px'};\n max-width: ${(props) => props.wrapperWidth ? props.wrapperWidth : null};\n\n @media all and (max-height: 624px) {\n margin-top: ${(props) => props.marginTop ? props.marginTop : '24px'};\n }\n \n & > button {\n margin: 12px;\n width: ${(props) => props.ctaWidth ? `${props.ctaWidth}px` : 'auto'};\n color: ${(props)=> props.color ? props.color : null};\n border-color: ${(props)=> props.color ? props.color : null};\n }\n`;\n\nexport interface CTAValues {\n value?: string | boolean;\n label: string;\n}\n\ninterface MultipleCTASelectionProps {\n ctaValues: CTAValues[];\n name: string;\n nextOnClick?: boolean;\n ctaWidth?: string;\n preSelectedValue?: string;\n color?: string;\n marginTop?: string;\n wrapperWidth?: string;\n}\n\nexport function MultipleCTASelection(props: MultipleCTASelectionProps) {\n const store = useStore();\n const dispatch = useDispatch();\n const { \n ctaValues, \n name, \n nextOnClick, \n ctaWidth, \n preSelectedValue, \n color, \n marginTop,\n wrapperWidth \n } = props;\n const { formData } = useSelector((state: OneFormState) => state);\n\n const { register, errors, control, setValue } = useFormContext();\n const { handleNextStep } = useOneFormContext();\n const [selectedValue, setSelectedValue] = useState(null);\n\n useEffect(() => {\n const value = preSelectedValue || formData.fields[name];\n\n if (value) {\n const selectedCtaValue = ctaValues.find((cta) => cta.value === value);\n if (selectedCtaValue) {\n setSelectedValue(selectedCtaValue.label);\n setValue(name, selectedCtaValue.value);\n } else {\n setSelectedValue(value);\n setValue(name, value);\n }\n }\n }, [preSelectedValue]);\n\n return (\n \n {ctaValues.map((cta: CTAValues, index: number) => (\n {\n if (cta.label !== selectedValue) {\n setSelectedValue(cta.label);\n setValue(name, cta.value !== null ? cta.value : cta.label);\n dispatch({ type: 'UPDATE_FIELDS', payload: { [name]: cta.value !== null ? cta.value : cta.label } });\n\n if (nextOnClick) {\n handleNextStep(e);\n }\n } else {\n setSelectedValue(null);\n setValue(name, null);\n dispatch({ type: 'UPDATE_FIELDS', payload: { [name]: null } });\n }\n }}\n />\n ))}\n \n \n );\n}\n","import {\n Text,\n styled,\n TextAppearance,\n TextAlignment,\n Container,\n ContainerPadding,\n Breakpoints,\n BreakpointWrapper\n} from '@volkswagen-onehub/components-core';\nimport React, { useEffect, useState } from 'react';\nimport { StarFilled, StarOutline } from 'src/icons-core-imports';\nimport { useOneFormContext } from 'src/feature-app/OneForm';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useFormContext } from 'react-hook-form';\nimport { OneFormState } from 'src/types';\nimport { InputButton } from 'src/components';\n\nconst StarWrapper = styled.div<{ isPrevStep?: boolean; textUnderStars?: boolean }>`\n\n padding-right: ${(props) => (props.isPrevStep ? '20px' : '32px')};\n padding-right: ${(props) => (props.textUnderStars && '0px')};\n padding-left: ${(props) => (props.textUnderStars ? '32px' : '0px')};\n padding-top: ${(props) => (props.textUnderStars ? '32px' : '0px')};\n\n cursor: ${(props) => (props.isPrevStep ? null : 'pointer')};\n \n svg {\n width: 32px;\n height: 32px;\n \n @media all and (min-width: 560px) {\n width: ${(props) => (props.isPrevStep ? '20px' : '40px')};\n height: ${(props) => (props.isPrevStep ? '20px' : '40px')};\n }\n @media all and (min-width: 1600px) {\n width: ${(props) => (props.isPrevStep ? '20px' : '48px')};\n height: ${(props) => (props.isPrevStep ? '20px' : '48px')};\n }\n }\n \n @media all and (max-width: 400px) {\n padding-left: ${(props) => (props.textUnderStars ? '7%' : '2vw')};\n padding-right: ${(props) => (props.textUnderStars ? '0px' : '2vw')};\n\n svg{\n width: ${(props) => (props.isPrevStep ? '10px' : '30px')};\n height: ${(props) => (props.isPrevStep ? '10px' : '30px')};\n }\n }\n\n &.filled {\n color: #ffd100;\n }\n\n &.outline {\n color: #6a767d;\n }\n`;\n\nconst StarText = styled.div`\n display: flex;\n justify-content: center;\n div{\n position: absolute;\n }\n`;\n\nconst TextMini = styled.div`\n color: rgb(0, 0, 0);\n font-size: 3vw;\n margin-top: 2px;\n @media all and (min-width: 400px){\n font-size: 12px;\n margin-top: 0;\n }\n`;\n\ninterface RatingStarsProps {\n name?: string;\n nextOnClick?: boolean;\n preSelectedRate?: number;\n stars?: number;\n isRequired?: boolean;\n isPrevStep?: boolean;\n textBad?: string;\n textGood?: string;\n textUnderStars?: boolean;\n starsText?: string[];\n CTASinRespuesta?: boolean;\n}\n\nexport const RatingStars = (props: RatingStarsProps) => {\n const {\n name,\n nextOnClick,\n stars,\n isRequired,\n isPrevStep,\n preSelectedRate,\n textBad,\n textGood,\n textUnderStars,\n starsText,\n CTASinRespuesta\n } = props;\n const { handleNextStep } = useOneFormContext();\n const { register, setValue } = useFormContext();\n const [rateValue, setRateValue] = useState(preSelectedRate ? preSelectedRate : 0);\n const dispatch = useDispatch();\n const { formData } = useSelector((state: OneFormState) => state);\n const numberOfStars = stars ? stars : 5;\n\n useEffect(() => {\n if (formData.fields[name]) {\n if (formData.fields[name] === 'Sin respuesta') {\n setTimeout(() => {\n setValue(name, 'Sin respuesta');\n }, 1000);\n setRateValue(0);\n } else {\n setRateValue(Number(formData.fields[name]));\n }\n }\n }, []);\n\n const handleClick = (i: number, e: any) => {\n const rateValue = i + 1;\n setRateValue(rateValue);\n dispatch({ type: 'UPDATE_FIELDS', payload: { [name]: `${rateValue}` } });\n\n if (nextOnClick) {\n setTimeout(() => {\n handleNextStep(e);\n }, 0);\n }\n };\n\n const renderStarsText = (starsText, index: number) => {\n if (starsText[index] === undefined) {\n return
    \n }\n else return (\n \n \n {starsText[index]}\n \n \n {starsText[index]}\n \n \n );\n };\n\n const renderStars = (rateValue: number, numberOfStars: number) => {\n const auxArr = [];\n for (let i = 0; i < numberOfStars; i++) {\n if (i <= rateValue - 1) {\n auxArr.push(\n {\n e.preventDefault();\n if (isPrevStep) {\n return;\n } else {\n handleClick(i, e);\n }\n }}\n isPrevStep={isPrevStep}\n textUnderStars={textUnderStars}\n >\n \n {textUnderStars &&\n (\n renderStarsText(starsText, i)\n )\n }\n \n );\n } else {\n auxArr.push(\n {\n e.preventDefault();\n if (isPrevStep) {\n return;\n } else {\n handleClick(i, e);\n }\n }}\n isPrevStep={isPrevStep}\n textUnderStars={textUnderStars}\n >\n \n {textUnderStars &&\n (\n renderStarsText(starsText, i)\n )\n }\n \n );\n }\n }\n\n return auxArr;\n };\n\n const handleField = () => {\n // Hack para solucionar el problema que se da en el caso de elegir Sin respuesta y volver hacia atrás.\n if (formData.fields[name] === 'Sin respuesta') {\n setTimeout(() => {\n setValue(name, 'Sin respuesta');\n }, 0);\n }\n };\n\n return (\n
    \n {isPrevStep || textUnderStars ? null : (\n \n \n Valora del 1 al 5, siendo 1 {textBad} y 5 totalmente{' '}\n \n {textGood}\n *.\n \n \n \n )}\n
    {renderStars(rateValue, numberOfStars)}
    \n {isPrevStep ? null : (\n \n )}\n {CTASinRespuesta ? (\n
    \n {\n handleNextStep(e);\n }}\n />\n
    \n ) : null}\n
    \n );\n};\n","import React, { useState } from 'react';\nimport { styled, Text, TextAppearance, TextAlignment } from '@volkswagen-onehub/components-core';\n\nconst CustomInputRange = styled.input<{ numberOfSteps: number }>`\n width: 100%;\n height: 24px;\n background: transparent;\n font-size: 1em;\n cursor: pointer;\n -webkit-appearance: none;\n\n &::-webkit-slider-runnable-track,\n &::-webkit-slider-thumb {\n -webkit-appearance: none;\n }\n &::-webkit-slider-runnable-track {\n position: relative;\n width: 100%;\n height: 1px;\n background: #00b0f0;\n }\n &::-moz-range-track {\n width: 100%;\n height: 1px;\n background: #00b0f0;\n }\n &::-ms-track {\n border: none;\n width: 100%;\n height: 1px;\n background: #00b0f0;\n color: transparent;\n }\n &::-ms-fill-lower {\n display: none;\n }\n &::-webkit-slider-thumb {\n margin-top: -4px;\n box-sizing: border-box;\n width: calc(100% / ${(props) => props.numberOfSteps});\n height: 8px;\n border-radius: 4px;\n background: #ffffff;\n }\n &::-moz-range-thumb {\n box-sizing: border-box;\n width: calc(100% / ${(props) => props.numberOfSteps});\n height: 8px;\n border-radius: 4px;\n background: #ffffff;\n }\n &::-ms-thumb {\n box-sizing: border-box;\n width: calc(100% / ${(props) => props.numberOfSteps});\n height: 8px;\n border-radius: 4px;\n background: #ffffff;\n }\n &::-webkit-slider-runnable-track:before,\n &::-webkit-slider-runnable-track:after,\n & /deep/ #track:before,\n &/deep/ #track:after {\n position: absolute;\n bottom: 100%;\n color: #2c2c2b;\n font: 700 0.875em / 2 arial, sans-serif;\n background: #ffffff;\n }\n &::-webkit-slider-runnable-track:before,\n & /deep/ #track:before {\n left: 0.8125em;\n word-spacing: 1.4375em;\n content: '1 2 3 4 5 6 7 8 9';\n }\n &::-webkit-slider-runnable-track:after,\n & /deep/ #track:after {\n right: 0.625em;\n word-spacing: 0.875em;\n content: '10 11 12 13 14 15 16';\n }\n &:focus {\n outline: none;\n }\n`;\nconst Mark = styled.div`\n height: 9px;\n width: 1px;\n background-color: #ffffff;\n`;\nconst MarksPosition = styled.div`\n display: flex;\n display: -webkit-flex;\n width: 100%;\n justify-content: space-between;\n align-items: center;\n margin-bottom: -16.5px;\n z-index: 3;\n margin-left: 7px;\n @media screen and (min-width: 960px) {\n margin-left: 4px;\n }\n`;\nconst SliderPosition = styled.div`\n width: 100%;\n display: flex;\n justify-content: center;\n margin-left: 7px;\n @media screen and (min-width: 960px) {\n margin-left: 4px;\n }\n`;\nconst SlideLabelsPosition = styled.div`\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\nconst SliderAndMarksPosition = styled.div`\n width: 96%;\n padding-right: 20px;\n @media all and (min-width: 960px) {\n width: 97%;\n }\n`;\ninterface CustomSliderProps {\n handleInputChange: any;\n value: number;\n formatNumber?: (num: number | number[]) => string;\n maxValue: number;\n numberOfSteps: number;\n}\n\nexport const CustomSlider = ({\n value,\n handleInputChange,\n numberOfSteps,\n formatNumber,\n maxValue,\n}: CustomSliderProps) => {\n const sliderMarks = [];\n\n for (let i = 0; i < numberOfSteps + 1; i++) {\n sliderMarks.push();\n }\n\n document.documentElement.classList.add('js');\n\n return (\n <>\n \n {sliderMarks ? sliderMarks : null}\n \n handleInputChange(e)}\n value={value}\n />\n \n \n \n \n 0km\n \n \n {'+'}\n {formatNumber(maxValue)}km\n \n \n \n );\n};\n","import React,{ useState } from 'react';\nimport { styled } from '@volkswagen-onehub/components-core';\nimport { useWindowWidth} from '@react-hook/window-size';\ninterface CustomSwitch {\n color?: string;\n setSelected?: any;\n isSelected?: boolean;\n toggle?: any;\n}\n\nconst Switch = styled.label`\n position: relative;\n display: inline-block;\n width: 60px;\n height: 24px;\n background-color: ${({ toggle, color }) => (toggle ? color : 'transparent')};\n border : ${({ toggle, color }) => (toggle ? '2px solid #00B0F0' : '2px solid #6A767D')};\n border-radius: 12px;\n transition: 0.3s;\n\n & .input-custom-switch {\n opacity: 0;\n width: 0;\n height: 0;\n }\n`;\n\nconst Slider = styled.span`\n position: absolute;\n cursor: pointer;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: ${({ toggle, color }) => (toggle ? color : 'transparent')};\n border-radius: 12px;\n transition: 0.3s;\n\n :before {\n content: \"\";\n\n position: absolute;\n left: 2px;\n bottom: 2px;\n\n width: 16px;\n height: 16px;\n border-radius: 100%;\n\n background-color: ${({ toggle, color }) => (toggle ? '#FFFFFF' : '#6A767D')};\n\n transition: 0.3s; \n }\n`;\n\nconst Input = styled.input`\n &:checked + ${Slider}:before {\n transform: translateX(36px);\n } \n`;\n\nexport const CustomSwitch = (props: CustomSwitch) => { \n const { setSelected, color, isSelected } = props;\n const [toggle, setToggle] = useState(false);\n const width = useWindowWidth();\n\n return (\n \n \n {\n width < 960 ? (\n {\n setToggle(!toggle);\n setSelected(!isSelected);\n }}\n />\n ) : (\n {\n setToggle(!toggle);\n setSelected(!isSelected);\n }}\n />\n )\n }\n \n \n );\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Function equal to merge with the difference being that no reference\n * to original objects is kept.\n *\n * @see merge\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction deepMerge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = deepMerge(result[key], val);\n } else if (typeof val === 'object') {\n result[key] = deepMerge({}, val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n deepMerge: deepMerge,\n extend: extend,\n trim: trim\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","import { useFeatureAppEnvironment, Dependencies } from 'src/feature-app';\n\nexport function useFeatureServices(): Dependencies {\n const { featureServices } = useFeatureAppEnvironment();\n\n return featureServices;\n}\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","export function warn(...messages) {\n if (process.env.NODE_ENV !== 'production') {\n messages.forEach((message) => console.warn(`vwa-lsg: ${message}`));\n }\n}\nexport function warnWithTrace(...messages) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof window === 'undefined') {\n messages.forEach((message) => {\n console.warn(`vwa-lsg: ${message}`);\n });\n }\n else {\n const disableComponentsCoreLogging = (window.sessionStorage &&\n window.sessionStorage.getItem('disableComponentsCoreLogging')) ||\n (window.location.search &&\n window.location.search.includes('disableComponentsCoreLogging'));\n if (!disableComponentsCoreLogging) {\n messages.forEach((message) => {\n console.groupCollapsed(`vwa-lsg: ${message}`);\n console.warn(`vwa-lsg: ${message}`);\n console.trace();\n console.groupEnd();\n });\n }\n }\n }\n}\n","\nimport { useEffect, useReducer, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { getCarlines, getSalesgroups } from 'src/bff';\nimport { OneFormContent, useFaContent, useFeatureServices } from 'src/feature-app';\nimport { findCarlineFromSalesgroup, findCarline, isCarlineMode } from 'src/components';\nimport { CarlineBase, CarlinesWithSalesgroups, SalesGroupInfo, Steps } from 'src/types';\nimport { ConfigurationWithBuildabilityV2 } from '@volkswagen-onehub/car-configuration-feature-service';\nimport { useIsComerciales } from 'src/feature-app/hooks';\nimport { removeStep, resetStepsScreenIndex } from '../helpers/add-remove-steps';\nimport { getMarketingCode } from 'src/bff';\n\n\nconst getLastItemOfSteps = (steps: Steps[]) => steps[steps.length - 1];\nconst carlineInFaContent = (faContent: OneFormContent) => faContent?.carlines && faContent.carlines.length === 1;\nconst salesgroupInFaContent = (faContent: OneFormContent) =>\n faContent?.salesgroups && faContent.salesgroups.length === 1;\nconst findSalesgroup = (carline: CarlinesWithSalesgroups, salesgroupId: string) =>\n carline?.salesGroups?.find((salesgroup) => salesgroup.code === Number(salesgroupId));\n\ninterface LeadsInitialConfig {\n loading: boolean;\n steps: Steps[];\n firstStep: Steps;\n lastStep: Steps;\n}\n\nconst updateSteps = (steps: Steps[]) => {\n return {\n type: 'UPDATE_STEPS',\n payload: steps,\n };\n};\n\nconst reducer = (state: LeadsInitialConfig, action: any): LeadsInitialConfig => {\n switch (action.type) {\n case 'UPDATE_STEPS':\n return {\n ...state,\n steps: action.payload,\n firstStep: action.payload[0],\n lastStep: getLastItemOfSteps(action.payload),\n loading: false,\n };\n default:\n return state;\n }\n};\n\nconst initialState: LeadsInitialConfig = {\n loading: true,\n steps: [],\n firstStep: null,\n lastStep: null,\n};\n\nexport const createSalesgroup = (code: string | number, name: string) => {\n if (!code && !name) {\n return null;\n }\n return { salesGroupId: String(code), salesGroupName: String(name) };\n};\n\nexport function useInitializeLeadForm(\n defaultSteps: Steps[],\n isOfertasOrMatch?: boolean,\n configRef?: ConfigurationWithBuildabilityV2,\n isConfigurador?: boolean,\n) {\n const dispatch = useDispatch();\n const faContent = useFaContent();\n const { 'car-configuration': carConfigurationService } = useFeatureServices();\n const [state, dispatchLead] = useReducer(reducer, initialState);\n const { loading, firstStep, lastStep, steps } = state;\n const isComerciales = useIsComerciales();\n\n const requestCarlines = async () => {\n let carlines;\n\n if (faContent?.mode === 'Carline') {\n carlines = await getCarlines();\n } else {\n carlines = await getSalesgroups();\n }\n\n dispatch({ type: 'SET_CARLINES', payload: carlines });\n\n return carlines;\n };\n\n const getCarlineAndSalesgroup = (carlines: CarlineBase[]): { carline: CarlineBase; salesgroup: SalesGroupInfo } => {\n let carlineCode: string = carConfigurationService.get().carlineId;\n let salesgroupId = carConfigurationService.get().salesGroupId;\n\n if ((isOfertasOrMatch && faContent?.oferta) || (isOfertasOrMatch && faContent?.match)) {\n // Formulario de ofertas o match\n let offerOrPreconfiguration = faContent?.oferta ? faContent.oferta : faContent.match;\n\n const carline = findCarline(carlines, offerOrPreconfiguration.carlineCode);\n const salesgroup = createSalesgroup(\n faContent.marketingCodeConfig?.SalesgroupId,\n faContent.marketingCodeConfig?.SalesgroupName\n ); // puede que no sea necesaria esta parte, también se hace la request del marketing code al momento del envío.\n\n dispatch({ type: 'SET_OFERTA', payload: offerOrPreconfiguration });\n\n return { carline, salesgroup };\n } else if (configRef) {\n // Formulario configurador\n const carline = findCarline(carlines, Number(configRef.carlineId));\n const salesgroup = createSalesgroup(configRef.salesGroupId, '');\n\n return { carline, salesgroup };\n } else if (carlineCode && salesgroupId) {\n // Showroom\n const carline = findCarline(carlines, Number(carlineCode), Number(salesgroupId));\n const salesgroupCarline = findSalesgroup(carline, salesgroupId);\n const salesgroup = createSalesgroup(salesgroupCarline?.code, salesgroupCarline?.name);\n\n return { carline, salesgroup };\n } else if (carlineInFaContent(faContent)) {\n const carline = findCarline(carlines, Number(faContent.carlines[0]));\n\n return { carline, salesgroup: null };\n } else if (salesgroupInFaContent(faContent) && !isCarlineMode(faContent)) {\n const carline = findCarlineFromSalesgroup(carlines, Number(faContent.salesgroups[0]));\n const salesgroupCarline = findSalesgroup(carline, String(faContent.salesgroups[0]));\n const salesgroup = createSalesgroup(salesgroupCarline?.code, salesgroupCarline?.name);\n\n return { carline, salesgroup };\n }\n return { carline: null, salesgroup: null };\n };\n\n const removeStepAndReset = (steps: Steps[], stepName: string) => {\n let updatedSteps = [...steps];\n updatedSteps = removeStep(steps, stepName);\n updatedSteps = resetStepsScreenIndex(steps);\n return updatedSteps;\n };\n\n //inicio de leadInPage\n\n const findAsset = (mediaAssets: any[], assetName: string) =>\n mediaAssets.find((asset) => asset.mpsId === assetName);\n\n const getAsset = (\n mediaAssets: any[],\n assetName: string\n ): string => {\n const asset = findAsset(mediaAssets, assetName);\n let assetUrl = asset.asset;\n\n if (assetUrl.includes('r-media') && assetUrl.includes('.jpg')) {\n assetUrl = assetUrl.replace('.jpg', '.png');\n }\n\n return assetUrl;\n };\n\n const useLeadsWithMarketingCode = (marketingCode: string) => {\n getMarketingCode(marketingCode)\n .then((res) => {\n const colorCode = res.response.consolidatedData?.exterior.code;\n const D6MOFASideview = getAsset(\n res.response.consolidatedData?.mediaAssets,\n 'D6MOFASideview'\n );\n const D6Explore1 = getAsset(\n res.response.consolidatedData?.mediaAssets,\n 'D6Explore1'\n );\n const modelName = res.response.consolidatedData?.modelName;\n const marketingCodeData = { modelName, colorCode, mediaAssets: { D6MOFASideview, D6Explore1 } };\n \n let finalSteps: Steps[] = [...defaultSteps];\n\n finalSteps = removeStepAndReset(finalSteps, 'Modelo');\n\n if (!isComerciales) {\n finalSteps = removeStepAndReset(finalSteps, 'CodigoPostal');\n }\n \n dispatchLead(updateSteps(finalSteps));\n\n dispatch({ type: 'SET_DELETE_CLOSE_AND_PREVIOUS', payload: true });\n\n dispatch({\n type: 'UPDATE_FIELDS',\n payload: { marketingCodeData, marketingCodeResponse: res.response },\n });\n\n })\n .catch((err) => {\n requestCarlines().then((carlines) => {\n const { carline, salesgroup } = getCarlineAndSalesgroup(carlines);\n \n let finalSteps: Steps[] = [...defaultSteps];\n \n if (!isComerciales) {\n finalSteps = removeStepAndReset(finalSteps, 'CodigoPostal');\n }\n if (carline) {\n finalSteps = removeStepAndReset(finalSteps, 'Modelo');\n \n dispatch({ type: 'SET_SELECTED_CARLINE', payload: carline });\n dispatch({\n type: 'SET_SALESGROUP',\n payload: salesgroup,\n });\n dispatch({\n type: 'UPDATE_FIELDS',\n payload: { modelo: carline.title },\n });\n }\n dispatchLead(updateSteps(finalSteps));\n });\n // console.log(err, 'error');\n });\n\n };\n\n useEffect(() => {\n\n if(isConfigurador) {\n const urlParams = new URLSearchParams(window.location.search);\n const marketingCode = urlParams.get('marketingCode');\n useLeadsWithMarketingCode(marketingCode);\n\n } else {\n requestCarlines().then((carlines) => {\n const { carline, salesgroup } = getCarlineAndSalesgroup(carlines);\n\n let finalSteps: Steps[] = [...defaultSteps];\n\n if (!isComerciales) {\n finalSteps = removeStepAndReset(finalSteps, 'CodigoPostal');\n }\n if (carline) {\n finalSteps = removeStepAndReset(finalSteps, 'Modelo');\n\n dispatch({ type: 'SET_SELECTED_CARLINE', payload: carline });\n dispatch({\n type: 'SET_SALESGROUP',\n payload: salesgroup,\n });\n dispatch({\n type: 'UPDATE_FIELDS',\n payload: { modelo: carline.title },\n });\n }\n dispatchLead(updateSteps(finalSteps));\n });\n }\n \n }, []);\n\n return { loading, steps, firstStep, lastStep };\n}\n","import {\n Breakpoints,\n Container,\n ContainerGutter,\n ContainerPadding,\n ContainerWrap,\n Layout,\n Text,\n TextAppearance,\n} from '@volkswagen-onehub/components-core';\nimport React from 'react';\nimport { useStore } from 'react-redux';\nimport { LastNavigation, LegalesFormatoLayer, LssiTkmQuestions, PoliticaPrivacidad, GeneralConfirmacionLayerWrapper } from 'src/components';\nimport { OneFormState } from 'src/types';\n\nexport const ConfirmacionLeads = () => {\n const store = useStore();\n\n const { dealersInfo }: OneFormState = store.getState();\n const { oferta } = dealersInfo;\n\n return (\n \n \n \n\n \n\n \n\n \n \n Texto legal de Volkswagen\n \n {oferta ? (\n \n {oferta.legal}\n \n ) : null}\n \n \n \n \n );\n};\n","export const appendJsonKey = (result: any) => `JSONKEY${JSON.stringify(result)}`;\n","import { appendJsonKey } from 'src/forms';\nimport { DealersData, FormDataGroup } from 'src/types';\n\nexport const isCalculadoraForm = (formName: string) => formName === 'prospect-posventa-calculadora';\n\nexport const getCalculadoraData = (formData: FormDataGroup) => {\n const { fields } = formData;\n const dealer: DealersData = fields.dealer;\n\n if (!isCalculadoraForm(fields.formName)) {\n return null;\n } else {\n const calculadoraFields = {\n 'fields[DESC_DEALER_CODE]': dealer?.dmsInfo?.dealerId?.codInstalacion,\n 'fields[DESC_DEALER_CODE_KVPS]': dealer?.kvps,\n 'fields[DESC_DEALER]': dealer?.name,\n 'fields[DESC_DEALER_ADDRESS]': getAddress(dealer),\n 'fields[NUM_PHONE_ALTERNATIVE]': dealer?.markerInfo?.dealerInfo?.phone,\n 'fields[DESC_AUXFIELD1]': dealer?.markerInfo?.dealerInfo?.mail,\n 'fields[DESC_VEH_PLATE]': fields.matricula,\n 'fields[DESC_VEH_PLATE_DATE]': fields.anoMatriculacion + ' 00:00:00',\n 'fields[DESC_ACTUAL_VEHICLE_MODEL]': fields.modelo,\n 'fields[DESC_RATING_MILEAGE]': fields.kilometros,\n 'fields[DESC_BUDGET]': appendJsonKey(fields.budget),\n 'fields[DESC_AUXFIELD11]': fields.deepLink,\n };\n\n return { ...calculadoraFields };\n }\n};\n\nconst getAddress = (dealerData: DealersData) => {\n const { address, zipCode, city, province, country } = dealerData?.markerInfo?.dealerInfo;\n return `${address} ${zipCode} ${city} ${province} ${country}`;\n};\n","import { DealersInfo } from 'src/types';\n\nexport const getCodInterestCarline = (dealersInfo: DealersInfo, code: string) => {\n const { selectedCarline } = dealersInfo;\n\n if (!code && !selectedCarline) return '';\n if (code && !selectedCarline) {\n return code;\n }\n\n return String(selectedCarline.code);\n};\n","import { DealersInfo } from 'src/types';\n\nexport const getDescInterestCarline = (dealersInfo: DealersInfo, modelo: string) => {\n const { selectedCarline } = dealersInfo;\n\n if (!modelo && !selectedCarline) return '';\n if (modelo && !selectedCarline) {\n return modelo;\n }\n\n return `${selectedCarline.nuevo ? 'Nuevo ' : ''}${selectedCarline.title}`;\n};\n","import { OneFormContent } from 'src';\nimport { appendJsonKey } from 'src/forms';\nimport { getFeatures, getMarketingCode } from 'src/bff/get-marketing-code';\nimport {\n DealersInfo,\n FormDataGroup,\n HighlightsReturn,\n LuggageReturn,\n MatchSelectedOptions,\n Offer,\n PassengersTypes,\n RankedPreconfiguration,\n UsageReturn,\n} from 'src/types';\n\nconst getMatchHash = () => {\n const searchParams = new URLSearchParams(window?.location?.search);\n const hash = searchParams.get('match-app');\n return hash;\n};\n\nexport const isMatchForm = (formName: string) => formName === 'lead-match' || formName === 'prospect-match';\n\nexport const getMatchData = async (formData: FormDataGroup, dealersInfo: DealersInfo, faContent: OneFormContent) => {\n const { fields } = formData;\n const { match } = dealersInfo;\n\n if (!isMatchForm(fields.formName)) {\n return null;\n } else {\n const { fields: marketingCodeFields, response } = await getMarketingCode(match?.marketingCode);\n\n const matchFields = {\n ...marketingCodeFields,\n 'fields[COD_INTEREST_CARLINE]': match?.carlineCode,\n 'fields[DESC_INTEREST_CARLINE]': match?.carlineTitle,\n // 'fields[DESC_FINANCIAL_PRODUCT]': match?.financiacionText?.slice(4),\n 'fields[DESC_VEH_MARKETING_CODE]': match?.marketingCode,\n 'fields[DESC_VEH_OFFER_PRICE]': createOfferPrice(match),\n 'fields[COD_INTEREST_PR]': getFeatures(response?.consolidatedData?.features),\n 'fields[DESC_AUXFIELD2]': getMatchHash(),\n 'fields[DESC_AUXFIELD3]': match?.affinity,\n 'fields[DESC_AUXFIELD4]': match?.precio,\n 'fields[DESC_AUXFIELD5]': match?.etiquetaDGT.toUpperCase(),\n 'fields[DESC_AUXFIELD6]': fields?.argumentatives,\n };\n\n const matchOptions = getMatchOptions(faContent?.matchOptions);\n\n return { ...matchFields, ...matchOptions };\n }\n};\n\n\n\nconst getMatchOptions = (options: MatchSelectedOptions) => {\n if (!options) {\n return null;\n }\n\n return {\n 'fields[DESC_PRF_BUDGET]': options.budget,\n 'fields[DESC_PRF_COMPANION]': appendJsonKey(getPassengers(options.passengers)),\n 'fields[DESC_PRF_TRIP]': appendJsonKey(getUsage(options.usage)),\n 'fields[DESC_PRF_BAGGAGE]': appendJsonKey(getLuggage(options.luggage)),\n 'fields[DESC_PRF_CAR_CHARACTERISTICS]': appendJsonKey(getHighlights(options.highlights)),\n 'fields[DESC_PRF_ENGINE]': options.fuel,\n };\n};\n\nconst getPassengers = (passengers: PassengersTypes) => {\n if (!Array.isArray(passengers)) {\n return { adult: 0, kid: 0 };\n }\n return { adult: passengers[0], kids: passengers[1] };\n};\n\nconst getLuggage = (lugagge: number[]): string[] => {\n const lugaggeOptions: LuggageReturn[] = [\n 'unaMaleta',\n 'escapada',\n 'unaSemana',\n 'unMes',\n 'mascota',\n 'bici',\n 'surf',\n 'snow',\n ];\n const [unaMaleta, escapada, unaSemana, unMes, mascota, bici, surf, snow] = lugagge;\n const options = { unaMaleta, escapada, unaSemana, unMes, mascota, bici, surf, snow };\n\n return lugaggeOptions.filter((option) => options[option] === 1);\n};\n\nconst getUsage = (usage: number[]): string[] => {\n const usageOptions: UsageReturn[] = ['urban', 'interurban', 'long', 'allterrain'];\n const [urban, interurban, long, allterrain] = usage;\n const options = { urban, interurban, long, allterrain };\n\n return usageOptions.filter((option) => options[option] === 1);\n};\n\nconst getHighlights = (highlights: number[]): string[] => {\n const hihglightsOptions: HighlightsReturn[] = [\n 'atrevido',\n 'comodo',\n 'deportivo',\n 'sostenible',\n 'elegante',\n 'seguro',\n 'sonido',\n 'tecnologico',\n ];\n const [atrevido, comodo, deportivo, sostenible, elegante, seguro, sonido, tecnologico] = highlights;\n const options = { atrevido, comodo, deportivo, sostenible, elegante, seguro, sonido, tecnologico };\n\n return hihglightsOptions.filter((option) => options[option] === 1);\n};\n\nconst createOfferPrice = (match: RankedPreconfiguration) => {\n return `Precio final de la configuración: ${match.precio}Eur`;\n};\n","import { SalesGroupInfo } from 'src/types';\n\nexport const getSalesGroup = (salesGroup: SalesGroupInfo) => {\n let salesGroupInfo = null;\n\n if (salesGroup) {\n salesGroupInfo = {\n 'fields[COD_VEH_SALESGROUP]': salesGroup.salesGroupId,\n 'fields[DESC_VEH_SALESGROUP]': salesGroup.salesGroupName,\n };\n }\n return salesGroupInfo;\n};\n\n","// https://stackoverflow.com/a/46971044/970769\r\nexport default class ParseError {\r\n constructor(code) {\r\n this.name = this.constructor.name\r\n this.message = code\r\n this.stack = (new Error(code)).stack\r\n }\r\n}\r\n\r\nParseError.prototype = Object.create(Error.prototype)\r\nParseError.prototype.constructor = ParseError","/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ExtendedError, WrappedFunction } from '@sentry/types';\n\nimport { htmlTreeAsString } from './browser';\nimport { isElement, isError, isEvent, isInstanceOf, isPlainObject, isPrimitive, isSyntheticEvent } from './is';\nimport { memoBuilder, MemoFunc } from './memo';\nimport { getFunctionName } from './stacktrace';\nimport { truncate } from './string';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, )` or `origMethod.apply(this, [])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nexport function fill(source: { [key: string]: any }, name: string, replacementFactory: (...args: any[]) => any): void {\n if (!(name in source)) {\n return;\n }\n\n const original = source[name] as () => any;\n const wrapped = replacementFactory(original) as WrappedFunction;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n try {\n markFunctionWrapped(wrapped, original);\n } catch (_Oo) {\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n }\n\n source[name] = wrapped;\n}\n\n/**\n * Defines a non enumerable property. This creates a non enumerable property on an object.\n *\n * @param func The function to set a property to\n * @param name the name of the special sentry property\n * @param value the property to define\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function addNonEnumerableProperty(func: any, name: string, value: any): void {\n Object.defineProperty(func, name, {\n value: value,\n });\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nexport function markFunctionWrapped(wrapped: WrappedFunction, original: WrappedFunction): void {\n const proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n}\n\n/**\n * This extracts the original function if available. See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\nexport function getOriginalFunction(func: WrappedFunction): WrappedFunction | undefined {\n return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nexport function urlEncode(object: { [key: string]: any }): string {\n return Object.keys(object)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n .join('&');\n}\n\n/**\n * Transforms any object into an object literal with all its attributes\n * attached to it.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n */\nfunction getWalkSource(value: any): {\n [key: string]: any;\n} {\n if (isError(value)) {\n const error = value as ExtendedError;\n const err: {\n [key: string]: any;\n stack: string | undefined;\n message: string;\n name: string;\n } = {\n message: error.message,\n name: error.name,\n stack: error.stack,\n };\n\n for (const i in error) {\n if (Object.prototype.hasOwnProperty.call(error, i)) {\n err[i] = error[i];\n }\n }\n\n return err;\n }\n\n if (isEvent(value)) {\n /**\n * Event-like interface that's usable in browser and node\n */\n interface SimpleEvent {\n [key: string]: unknown;\n type: string;\n target?: unknown;\n currentTarget?: unknown;\n }\n\n const event = value as unknown as SimpleEvent;\n\n const source: {\n [key: string]: any;\n } = {};\n\n // Accessing event attributes can throw (see https://github.com/getsentry/sentry-javascript/issues/768 and\n // https://github.com/getsentry/sentry-javascript/issues/838), but accessing `type` hasn't been wrapped in a\n // try-catch in at least two years and no one's complained, so that's likely not an issue anymore\n source.type = event.type;\n\n try {\n source.target = isElement(event.target)\n ? htmlTreeAsString(event.target)\n : Object.prototype.toString.call(event.target);\n } catch (_oO) {\n source.target = '';\n }\n\n try {\n source.currentTarget = isElement(event.currentTarget)\n ? htmlTreeAsString(event.currentTarget)\n : Object.prototype.toString.call(event.currentTarget);\n } catch (_oO) {\n source.currentTarget = '';\n }\n\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n source.detail = event.detail;\n }\n\n for (const attr in event) {\n if (Object.prototype.hasOwnProperty.call(event, attr)) {\n source[attr] = event[attr];\n }\n }\n\n return source;\n }\n\n return value as {\n [key: string]: any;\n };\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value: string): number {\n // eslint-disable-next-line no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\nfunction jsonSize(value: any): number {\n return utf8Length(JSON.stringify(value));\n}\n\n/** JSDoc */\nexport function normalizeToSize(\n object: { [key: string]: any },\n // Default Node.js REPL depth\n depth: number = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize: number = 100 * 1024,\n): T {\n const serialized = normalize(object, depth);\n\n if (jsonSize(serialized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return serialized as T;\n}\n\n/**\n * Transform any non-primitive, BigInt, or Symbol-type value into a string. Acts as a no-op on strings, numbers,\n * booleans, null, and undefined.\n *\n * @param value The value to stringify\n * @returns For non-primitive, BigInt, and Symbol-type values, a string denoting the value's type, type and value, or\n * type and `description` property, respectively. For non-BigInt, non-Symbol primitives, returns the original value,\n * unchanged.\n */\nfunction serializeValue(value: any): any {\n // Node.js REPL notation\n if (typeof value === 'string') {\n return value;\n }\n\n const type = Object.prototype.toString.call(value);\n if (type === '[object Object]') {\n return '[Object]';\n }\n if (type === '[object Array]') {\n return '[Array]';\n }\n\n const normalized = normalizeValue(value);\n return isPrimitive(normalized) ? normalized : type;\n}\n\n/**\n * normalizeValue()\n *\n * Takes unserializable input and make it serializable friendly\n *\n * - translates undefined/NaN values to \"[undefined]\"/\"[NaN]\" respectively,\n * - serializes Error objects\n * - filter global objects\n */\nfunction normalizeValue(value: T, key?: any): T | string {\n if (key === 'domain' && value && typeof value === 'object' && (value as unknown as { _events: any })._events) {\n return '[Domain]';\n }\n\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n\n if (typeof (global as any) !== 'undefined' && (value as unknown) === global) {\n return '[Global]';\n }\n\n // It's safe to use `window` and `document` here in this manner, as we are asserting using `typeof` first\n // which won't throw if they are not present.\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof (window as any) !== 'undefined' && (value as unknown) === window) {\n return '[Window]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof (document as any) !== 'undefined' && (value as unknown) === document) {\n return '[Document]';\n }\n\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n\n if (typeof value === 'number' && value !== value) {\n return '[NaN]';\n }\n\n if (value === void 0) {\n return '[undefined]';\n }\n\n if (typeof value === 'function') {\n return `[Function: ${getFunctionName(value)}]`;\n }\n\n // symbols and bigints are considered primitives by TS, but aren't natively JSON-serilaizable\n\n if (typeof value === 'symbol') {\n return `[${String(value)}]`;\n }\n\n if (typeof value === 'bigint') {\n return `[BigInt: ${String(value)}]`;\n }\n\n return value;\n}\n\n/**\n * Walks an object to perform a normalization on it\n *\n * @param key of object that's walked in current iteration\n * @param value object to be walked\n * @param depth Optional number indicating how deep should walking be performed\n * @param memo Optional Memo class handling decycling\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function walk(key: string, value: any, depth: number = +Infinity, memo: MemoFunc = memoBuilder()): any {\n // If we reach the maximum depth, serialize whatever is left\n if (depth === 0) {\n return serializeValue(value);\n }\n\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n // If value implements `toJSON` method, call it and return early\n if (value !== null && value !== undefined && typeof value.toJSON === 'function') {\n return value.toJSON();\n }\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n\n // If normalized value is a primitive, there are no branches left to walk, so bail out\n const normalized = normalizeValue(value, key);\n if (isPrimitive(normalized)) {\n return normalized;\n }\n\n // Create source that we will use for the next iteration. It will either be an objectified error object (`Error` type\n // with extracted key:value pairs) or the input itself.\n const source = getWalkSource(value);\n\n // Create an accumulator that will act as a parent for all future itterations of that branch\n const acc = Array.isArray(value) ? [] : {};\n\n // If we already walked that branch, bail out, as it's circular reference\n if (memo[0](value)) {\n return '[Circular ~]';\n }\n\n // Walk all keys of the source\n for (const innerKey in source) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(source, innerKey)) {\n continue;\n }\n // Recursively walk through all the child nodes\n (acc as { [key: string]: any })[innerKey] = walk(innerKey, source[innerKey], depth - 1, memo);\n }\n\n // Once walked through all the branches, remove the parent from memo storage\n memo[1](value);\n\n // Return accumulated values\n return acc;\n}\n\n/**\n * normalize()\n *\n * - Creates a copy to prevent original input mutation\n * - Skip non-enumerablers\n * - Calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializeable values (undefined/NaN/Functions) to serializable format\n * - Translates known global objects/Classes to a string representations\n * - Takes care of Error objects serialization\n * - Optionally limit depth of final output\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function normalize(input: any, depth?: number): any {\n try {\n return JSON.parse(JSON.stringify(input, (key: string, value: any) => walk(key, value, depth)));\n } catch (_oO) {\n return '**non-serializable**';\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function extractExceptionKeysForMessage(exception: any, maxLength: number = 40): string {\n const keys = Object.keys(getWalkSource(exception));\n keys.sort();\n\n if (!keys.length) {\n return '[object has no keys]';\n }\n\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n const serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return the new object with removed keys that value was `undefined`.\n * Works recursively on objects and arrays.\n */\nexport function dropUndefinedKeys(val: T): T {\n if (isPlainObject(val)) {\n const obj = val as { [key: string]: any };\n const rv: { [key: string]: any } = {};\n for (const key of Object.keys(obj)) {\n if (typeof obj[key] !== 'undefined') {\n rv[key] = dropUndefinedKeys(obj[key]);\n }\n }\n return rv as T;\n }\n\n if (Array.isArray(val)) {\n return (val as any[]).map(dropUndefinedKeys) as any;\n }\n\n return val;\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nexport function objectify(wat: unknown): typeof Object {\n let objectified;\n switch (true) {\n case wat === undefined || wat === null:\n objectified = new String(wat);\n break;\n\n // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n // an object in order to wrap it.\n case typeof wat === 'symbol' || typeof wat === 'bigint':\n objectified = Object(wat);\n break;\n\n // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n case isPrimitive(wat):\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n objectified = new (wat as any).constructor(wat);\n break;\n\n // by process of elimination, at this point we know that `wat` must already be an object\n default:\n objectified = wat;\n break;\n }\n return objectified;\n}\n","import React, { useEffect, useState } from 'react';\n\nexport function useOnlyLettersControl(pristine: boolean, input: string) {\n const [error, setError] = useState(false);\n // const regExp = /^[ña-zÑA-Z\\s]*$/;\n // const regExp = /^[A-Za-zÁÉÍÓÚáéíóúñÑ]+$/g;\n const regExp = /^[a-zA-ZÀ-ÿ\\u00f1\\u00d1]+(\\s*[a-zA-ZÀ-ÿ\\u00f1\\u00d1]*)*[a-zA-ZÀ-ÿ\\u00f1\\u00d1\\s+]+$/;\n\n useEffect(() => {\n if (input && !pristine && !regExp.test(input)) {\n setError(true);\n } else {\n setError(false);\n }\n }, [input, pristine]);\n\n return { error, regExp };\n}\n","import { css } from 'styled-components';\nimport { createStylesForBreakpoints, isBreakpointConfig, } from '../helpers/breakpoint';\nimport { createCSSVarName } from '../theme-provider/create-css-var-name';\nimport { ContainerWrap } from './definitions';\nconst directions = [\n 'top',\n 'right',\n 'bottom',\n 'left',\n 'inlineStart',\n 'inlineEnd',\n];\nfunction isDirectionalConfig(prop) {\n return (typeof prop === 'object' &&\n Object.keys(prop).every((key) => directions.includes(key)));\n}\nexport function createCSSVariablesForSizes(configOrSize, theme) {\n if (!configOrSize) {\n return '';\n }\n if (isDirectionalConfig(configOrSize)) {\n return directions\n .map((key) => {\n const directionalConfigOrSize = configOrSize[key];\n return createCSSVariablesForSizes(directionalConfigOrSize, theme);\n })\n .join('');\n }\n if (isBreakpointConfig(configOrSize)) {\n const cssVar = createCSSVarName(configOrSize, 'container');\n return createStylesForBreakpoints(configOrSize, (size) => {\n const value = theme.size[size];\n return `${cssVar}: ${value};`;\n });\n }\n return '';\n}\nfunction createSpacing(gutter, theme) {\n if (isBreakpointConfig(gutter)) {\n const cssVar = createCSSVarName(gutter, 'container');\n return `var(${cssVar})`;\n }\n return theme.size[gutter];\n}\nexport function createHorizontalAlignmentStyles(horizontalAlign) {\n if (isBreakpointConfig(horizontalAlign)) {\n return createStylesForBreakpoints(horizontalAlign, (breakpointHorizontalAlign) => `justify-content: ${breakpointHorizontalAlign};`);\n }\n return `justify-content: ${horizontalAlign};`;\n}\nfunction wrapStyles(wrap, theme, gutter) {\n const spacing = (gutter && createSpacing(gutter, theme)) || '0px';\n switch (wrap) {\n case ContainerWrap.never:\n return `\n\t\t\t\tdisplay: flex;\n\t\t\t\tflex-wrap: nowrap;\n\t\t\t\tmargin: 0;\n\t\t\t`;\n case ContainerWrap.always:\n return `\n\t\t\t\tdisplay: block;\n\t\t\t\tflex-wrap: unset;\n\t\t\t\tmargin: 0;\n\t\t\t`;\n default: {\n return `\n\t\t\t\tdisplay: flex;\n\t\t\t\tflex-wrap: wrap;\n\t\t\t\tmargin: 0 calc(-0.5 * ${spacing}) calc(-1 * ${spacing});\n\t\t\t`;\n }\n }\n}\nexport function createWrapStyles(wrap = ContainerWrap.auto, theme, gutter) {\n if (isBreakpointConfig(wrap)) {\n return css `${createStylesForBreakpoints(wrap, (breakpointWrap) => wrapStyles(breakpointWrap, theme, gutter))}`;\n }\n return wrapStyles(wrap, theme, gutter);\n}\nfunction spacingBetweenElementsStyles(wrap, theme, gutter, direction) {\n const spacing = (gutter && createSpacing(gutter, theme)) || '0px';\n switch (wrap) {\n case ContainerWrap.never:\n return `\n\t\t\t\tmargin: 0 calc(${spacing} / 2);\n\t\t\t\t:first-child {\n\t\t\t\t\t${(theme.direction || direction) === 'rtl'\n ? `margin: 0 0 0 calc(${spacing} / 2);`\n : `margin: 0 calc(${spacing} / 2) 0 0;`}\n\t\t\t\t}\n\t\t\t\t:last-child {\n\t\t\t\t\t${(theme.direction || direction) === 'rtl'\n ? `margin: 0 calc(${spacing} / 2) 0 0;`\n : `margin: 0 0 0 calc(${spacing} / 2);`}\n\t\t\t\t}\n\t\t\t`;\n case ContainerWrap.always:\n return `\n\t\t\t\tmargin: 0 0 ${spacing};\n\t\t\t\t:last-child {\n\t\t\t\t\tmargin: 0;\n\t\t\t\t}\n\t\t\t`;\n default:\n return `\n\t\t\t\tmargin: 0 calc(${spacing} / 2) ${spacing};\n\t\t\t\t:last-child {\n\t\t\t\t\tmargin: 0 calc(${spacing} / 2) ${spacing};\n\t\t\t\t}\n\t\t\t`;\n }\n}\nexport function createSpacingBetweenElementsStyles(props) {\n if (isBreakpointConfig(props.wrapped)) {\n return css `${createStylesForBreakpoints(props.wrapped, (wrap) => spacingBetweenElementsStyles(wrap, props.theme, props.gutter, props.direction))}`;\n }\n return spacingBetweenElementsStyles(props.wrapped || ContainerWrap.auto, props.theme, props.gutter, props.direction);\n}\nfunction createPaddings(value, key) {\n switch (key) {\n case 'inlineStart':\n return `\n\t\t\t\tpadding-inline-start: ${value};\n\t\t\t`;\n case 'inlineEnd':\n return `\n\t\t\t\tpadding-inline-end: ${value};\n\t\t\t`;\n default:\n return `padding-${key}: ${value};`;\n }\n}\nfunction createDirectionalSpacings(key, padding, theme) {\n const directionalPadding = padding[key];\n if (isBreakpointConfig(directionalPadding)) {\n const cssVar = createCSSVarName(directionalPadding, 'container');\n return createPaddings(`var(${cssVar})`, key);\n }\n if (typeof directionalPadding === 'string' && theme) {\n return createPaddings(theme.size[directionalPadding], key);\n }\n return '';\n}\nexport function createSpacingAroundElementsStyles(padding, theme) {\n if (typeof padding === 'string' && theme) {\n return css `padding:${theme.size[padding]};`;\n }\n if (isDirectionalConfig(padding)) {\n return css `padding:0;${directions.reduce((acc, key) => {\n return `\n\t\t\t\t\t\t${acc}\n\t\t\t\t\t\t${createDirectionalSpacings(key, padding, theme)}\n\t\t\t\t\t`;\n }, '')};`;\n }\n if (isBreakpointConfig(padding)) {\n const cssVar = createCSSVarName(padding, 'container');\n return css `padding:var(${cssVar});`;\n }\n return css `padding:0;`;\n}\n","import * as React from 'react';\nimport { styled } from '../theme-provider';\nimport { createCSSVariablesForSizes, createHorizontalAlignmentStyles, createSpacingAroundElementsStyles, createSpacingBetweenElementsStyles, createWrapStyles, } from './helpers';\nimport { createElectricTransition } from '../helpers/animation';\nimport { createStylesForBreakpoints, isBreakpointConfig, } from '../helpers/breakpoint';\nconst createStretchContentForBreakpoints = (props) => {\n if (!props.stretchContent) {\n return '';\n }\n if (isBreakpointConfig(props.stretchContent)) {\n return createStylesForBreakpoints(props.stretchContent, (stretchContent) => stretchContent ? 'flex-grow: 1;' : 'flex-grow: initial;');\n }\n return props.stretchContent && 'flex-grow: 1;';\n};\nconst createShrinkContentForBreakpoints = (props) => {\n if (!props.shrinkContent) {\n return '';\n }\n if (isBreakpointConfig(props.shrinkContent)) {\n return createStylesForBreakpoints(props.shrinkContent, (shrinkContent) => shrinkContent ? 'flex-shrink: 1;' : 'flex-shrink: initial;');\n }\n return props.shrinkContent && 'flex-shrink: 1;';\n};\nconst StyledChildWrapper = styled.div.withConfig({ displayName: \"StyledChildWrapper\", componentId: \"sc-1d21nde\" }) `flex-shrink:0;max-width:100%;${createStretchContentForBreakpoints};${createShrinkContentForBreakpoints};${createSpacingBetweenElementsStyles};:empty{display:none;}`;\nStyledChildWrapper.displayName = 'StyledChildWrapper';\nconst StyledOverflowWrapper = styled.div.withConfig({ displayName: \"StyledOverflowWrapper\", componentId: \"sc-mfnmbg\" }) `overflow:${(props) => (props.wrap ? '' : 'hidden')};`;\nStyledOverflowWrapper.displayName = 'StyledOverflowWrapper';\nconst StyledContainer = styled.div.withConfig({ displayName: \"StyledContainer\", componentId: \"sc-18harj2\" }) `${(props) => props.gutter && createCSSVariablesForSizes(props.gutter, props.theme)} ${(props) => props.padding && createCSSVariablesForSizes(props.padding, props.theme)} ${(props) => createWrapStyles(props.wrapChildren, props.theme, props.gutter)} align-items:${(props) => props.verticalAlign};${(props) => props.horizontalAlign &&\n createHorizontalAlignmentStyles(props.horizontalAlign)} ${(props) => props.padding &&\n createSpacingAroundElementsStyles(props.padding, props.theme)};${(props) => props.animateChange && createElectricTransition(...props.animateChange)};`;\nStyledContainer.displayName = 'StyledContainer';\nclass ContainerInner extends React.Component {\n constructor(props) {\n super(props);\n }\n render() {\n const { children, gutter, padding, wrap, stretchContent, shrinkContent, verticalAlign, horizontalAlign, animateChange, innerRef, } = this.props;\n const childElements = React.Children.toArray(children).filter(React.isValidElement);\n if (!childElements.length) {\n return null;\n }\n return (React.createElement(StyledOverflowWrapper, { ref: innerRef, wrap: wrap },\n React.createElement(StyledContainer, { gutter: gutter, padding: padding, wrapChildren: wrap, verticalAlign: verticalAlign, horizontalAlign: horizontalAlign, animateChange: animateChange }, childElements.map((child) => {\n const key = child.key === null ? undefined : child.key;\n return (React.createElement(StyledChildWrapper, { key: key, gutter: gutter, wrapped: wrap, stretchContent: stretchContent, shrinkContent: shrinkContent }, child));\n }))));\n }\n}\nexport const Container = React.forwardRef((props, ref) => React.createElement(ContainerInner, Object.assign({}, props, { innerRef: ref })));\nContainer.displayName = 'Container';\n","export * from './definitions';\nexport * from './container';\n","// This file is a workaround for a bug in web browsers' \"native\"\n// ES6 importing system which is uncapable of importing \"*.json\" files.\n// https://github.com/catamphetamine/libphonenumber-js/issues/239\nexport default {\"version\":4,\"country_calling_codes\":{\"1\":[\"US\",\"AG\",\"AI\",\"AS\",\"BB\",\"BM\",\"BS\",\"CA\",\"DM\",\"DO\",\"GD\",\"GU\",\"JM\",\"KN\",\"KY\",\"LC\",\"MP\",\"MS\",\"PR\",\"SX\",\"TC\",\"TT\",\"VC\",\"VG\",\"VI\"],\"7\":[\"RU\",\"KZ\"],\"20\":[\"EG\"],\"27\":[\"ZA\"],\"30\":[\"GR\"],\"31\":[\"NL\"],\"32\":[\"BE\"],\"33\":[\"FR\"],\"34\":[\"ES\"],\"36\":[\"HU\"],\"39\":[\"IT\",\"VA\"],\"40\":[\"RO\"],\"41\":[\"CH\"],\"43\":[\"AT\"],\"44\":[\"GB\",\"GG\",\"IM\",\"JE\"],\"45\":[\"DK\"],\"46\":[\"SE\"],\"47\":[\"NO\",\"SJ\"],\"48\":[\"PL\"],\"49\":[\"DE\"],\"51\":[\"PE\"],\"52\":[\"MX\"],\"53\":[\"CU\"],\"54\":[\"AR\"],\"55\":[\"BR\"],\"56\":[\"CL\"],\"57\":[\"CO\"],\"58\":[\"VE\"],\"60\":[\"MY\"],\"61\":[\"AU\",\"CC\",\"CX\"],\"62\":[\"ID\"],\"63\":[\"PH\"],\"64\":[\"NZ\"],\"65\":[\"SG\"],\"66\":[\"TH\"],\"81\":[\"JP\"],\"82\":[\"KR\"],\"84\":[\"VN\"],\"86\":[\"CN\"],\"90\":[\"TR\"],\"91\":[\"IN\"],\"92\":[\"PK\"],\"93\":[\"AF\"],\"94\":[\"LK\"],\"95\":[\"MM\"],\"98\":[\"IR\"],\"211\":[\"SS\"],\"212\":[\"MA\",\"EH\"],\"213\":[\"DZ\"],\"216\":[\"TN\"],\"218\":[\"LY\"],\"220\":[\"GM\"],\"221\":[\"SN\"],\"222\":[\"MR\"],\"223\":[\"ML\"],\"224\":[\"GN\"],\"225\":[\"CI\"],\"226\":[\"BF\"],\"227\":[\"NE\"],\"228\":[\"TG\"],\"229\":[\"BJ\"],\"230\":[\"MU\"],\"231\":[\"LR\"],\"232\":[\"SL\"],\"233\":[\"GH\"],\"234\":[\"NG\"],\"235\":[\"TD\"],\"236\":[\"CF\"],\"237\":[\"CM\"],\"238\":[\"CV\"],\"239\":[\"ST\"],\"240\":[\"GQ\"],\"241\":[\"GA\"],\"242\":[\"CG\"],\"243\":[\"CD\"],\"244\":[\"AO\"],\"245\":[\"GW\"],\"246\":[\"IO\"],\"247\":[\"AC\"],\"248\":[\"SC\"],\"249\":[\"SD\"],\"250\":[\"RW\"],\"251\":[\"ET\"],\"252\":[\"SO\"],\"253\":[\"DJ\"],\"254\":[\"KE\"],\"255\":[\"TZ\"],\"256\":[\"UG\"],\"257\":[\"BI\"],\"258\":[\"MZ\"],\"260\":[\"ZM\"],\"261\":[\"MG\"],\"262\":[\"RE\",\"YT\"],\"263\":[\"ZW\"],\"264\":[\"NA\"],\"265\":[\"MW\"],\"266\":[\"LS\"],\"267\":[\"BW\"],\"268\":[\"SZ\"],\"269\":[\"KM\"],\"290\":[\"SH\",\"TA\"],\"291\":[\"ER\"],\"297\":[\"AW\"],\"298\":[\"FO\"],\"299\":[\"GL\"],\"350\":[\"GI\"],\"351\":[\"PT\"],\"352\":[\"LU\"],\"353\":[\"IE\"],\"354\":[\"IS\"],\"355\":[\"AL\"],\"356\":[\"MT\"],\"357\":[\"CY\"],\"358\":[\"FI\",\"AX\"],\"359\":[\"BG\"],\"370\":[\"LT\"],\"371\":[\"LV\"],\"372\":[\"EE\"],\"373\":[\"MD\"],\"374\":[\"AM\"],\"375\":[\"BY\"],\"376\":[\"AD\"],\"377\":[\"MC\"],\"378\":[\"SM\"],\"380\":[\"UA\"],\"381\":[\"RS\"],\"382\":[\"ME\"],\"383\":[\"XK\"],\"385\":[\"HR\"],\"386\":[\"SI\"],\"387\":[\"BA\"],\"389\":[\"MK\"],\"420\":[\"CZ\"],\"421\":[\"SK\"],\"423\":[\"LI\"],\"500\":[\"FK\"],\"501\":[\"BZ\"],\"502\":[\"GT\"],\"503\":[\"SV\"],\"504\":[\"HN\"],\"505\":[\"NI\"],\"506\":[\"CR\"],\"507\":[\"PA\"],\"508\":[\"PM\"],\"509\":[\"HT\"],\"590\":[\"GP\",\"BL\",\"MF\"],\"591\":[\"BO\"],\"592\":[\"GY\"],\"593\":[\"EC\"],\"594\":[\"GF\"],\"595\":[\"PY\"],\"596\":[\"MQ\"],\"597\":[\"SR\"],\"598\":[\"UY\"],\"599\":[\"CW\",\"BQ\"],\"670\":[\"TL\"],\"672\":[\"NF\"],\"673\":[\"BN\"],\"674\":[\"NR\"],\"675\":[\"PG\"],\"676\":[\"TO\"],\"677\":[\"SB\"],\"678\":[\"VU\"],\"679\":[\"FJ\"],\"680\":[\"PW\"],\"681\":[\"WF\"],\"682\":[\"CK\"],\"683\":[\"NU\"],\"685\":[\"WS\"],\"686\":[\"KI\"],\"687\":[\"NC\"],\"688\":[\"TV\"],\"689\":[\"PF\"],\"690\":[\"TK\"],\"691\":[\"FM\"],\"692\":[\"MH\"],\"850\":[\"KP\"],\"852\":[\"HK\"],\"853\":[\"MO\"],\"855\":[\"KH\"],\"856\":[\"LA\"],\"880\":[\"BD\"],\"886\":[\"TW\"],\"960\":[\"MV\"],\"961\":[\"LB\"],\"962\":[\"JO\"],\"963\":[\"SY\"],\"964\":[\"IQ\"],\"965\":[\"KW\"],\"966\":[\"SA\"],\"967\":[\"YE\"],\"968\":[\"OM\"],\"970\":[\"PS\"],\"971\":[\"AE\"],\"972\":[\"IL\"],\"973\":[\"BH\"],\"974\":[\"QA\"],\"975\":[\"BT\"],\"976\":[\"MN\"],\"977\":[\"NP\"],\"992\":[\"TJ\"],\"993\":[\"TM\"],\"994\":[\"AZ\"],\"995\":[\"GE\"],\"996\":[\"KG\"],\"998\":[\"UZ\"]},\"countries\":{\"AC\":[\"247\",\"00\",\"(?:[01589]\\\\d|[46])\\\\d{4}\",[5,6]],\"AD\":[\"376\",\"00\",\"(?:1|6\\\\d)\\\\d{7}|[135-9]\\\\d{5}\",[6,8,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"[135-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]]],\"AE\":[\"971\",\"00\",\"(?:[4-7]\\\\d|9[0-689])\\\\d{7}|800\\\\d{2,9}|[2-4679]\\\\d{7}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{2,9})\",\"$1 $2\",[\"60|8\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[236]|[479][2-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{5})\",\"$1 $2 $3\",[\"[479]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\"],\"AF\":[\"93\",\"00\",\"[2-7]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"]],\"0\"],\"AG\":[\"1\",\"011\",\"(?:268|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([457]\\\\d{6})$\",\"268$1\",0,\"268\"],\"AI\":[\"1\",\"011\",\"(?:264|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2457]\\\\d{6})$\",\"264$1\",0,\"264\"],\"AL\":[\"355\",\"00\",\"(?:700\\\\d\\\\d|900)\\\\d{3}|8\\\\d{5,7}|(?:[2-5]|6\\\\d)\\\\d{7}\",[6,7,8,9],[[\"(\\\\d{3})(\\\\d{3,4})\",\"$1 $2\",[\"80|9\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2358][2-5]|4\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[23578]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"]],\"0\"],\"AM\":[\"374\",\"00\",\"(?:[1-489]\\\\d|55|60|77)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]0\"],\"0 $1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2|3[12]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"1|47\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[3-9]\"],\"0$1\"]],\"0\"],\"AO\":[\"244\",\"00\",\"[29]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[29]\"]]]],\"AR\":[\"54\",\"00\",\"(?:11|[89]\\\\d\\\\d)\\\\d{8}|[2368]\\\\d{9}\",[10,11],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2-$3\",[\"2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])\",\"2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"1\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[68]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[23]\"],\"0$1\",1],[\"(\\\\d)(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9(?:2[2-469]|3[3-578])\",\"9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))\",\"9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 15-$3-$4\",[\"91\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9\"],\"0$1\",0,\"$1 $2 $3-$4\"]],\"0\",0,\"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?\",\"9$1\"],\"AS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|684|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([267]\\\\d{6})$\",\"684$1\",0,\"684\"],\"AT\":[\"43\",\"00\",\"1\\\\d{3,12}|2\\\\d{6,12}|43(?:(?:0\\\\d|5[02-9])\\\\d{3,9}|2\\\\d{4,5}|[3467]\\\\d{4}|8\\\\d{4,6}|9\\\\d{4,7})|5\\\\d{4,12}|8\\\\d{7,12}|9\\\\d{8,12}|(?:[367]\\\\d|4[0-24-9])\\\\d{4,11}\",[4,5,6,7,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{3,12})\",\"$1 $2\",[\"1(?:11|[2-9])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})\",\"$1 $2\",[\"517\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"5[079]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,10})\",\"$1 $2\",[\"(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,9})\",\"$1 $2\",[\"[2-467]|5[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,7})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\"],\"AU\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{7,8}|8[0-24-9]\\\\d{7})|[2-478]\\\\d{8}|1\\\\d{4,7}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"16\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"16\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"14|4\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[2378]\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:30|[89])\"]]],\"0\",0,\"0|(183[12])\",0,0,0,[[\"(?:(?:2(?:[0-26-9]\\\\d|3[0-8]|4[02-9]|5[0135-9])|3(?:[0-3589]\\\\d|4[0-578]|6[1-9]|7[0-35-9])|7(?:[013-57-9]\\\\d|2[0-8]))\\\\d{3}|8(?:51(?:0(?:0[03-9]|[12479]\\\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\\\d|7[89]|9[0-4]))|(?:6[0-8]|[78]\\\\d)\\\\d{3}|9(?:[02-9]\\\\d{3}|1(?:(?:[0-58]\\\\d|6[0135-9])\\\\d|7(?:0[0-24-9]|[1-9]\\\\d)|9(?:[0-46-9]\\\\d|5[0-79])))))\\\\d{3}\",[9]],[\"4(?:83[0-38]|93[0-4])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,[\"163\\\\d{2,6}\",[5,6,7,8,9]],[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{3}|45[0-4])\\\\d{3}|13\\\\d{4}\",[6,8,10]]],\"0011\"],\"AW\":[\"297\",\"00\",\"(?:[25-79]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[25-9]\"]]]],\"AX\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"2\\\\d{4,9}|35\\\\d{4,5}|(?:60\\\\d\\\\d|800)\\\\d{4,6}|7\\\\d{5,11}|(?:[14]\\\\d|3[0-46-9]|50)\\\\d{4,8}\",[5,6,7,8,9,10,11,12],0,\"0\",0,0,0,0,\"18\",0,\"00\"],\"AZ\":[\"994\",\"00\",\"365\\\\d{6}|(?:[124579]\\\\d|60|88)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[28]|2|365|46\",\"1[28]|2|365|46\",\"1[28]|2|365(?:[0-46-9]|5[0-35-9])|46\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[13-9]\"],\"0$1\"]],\"0\"],\"BA\":[\"387\",\"00\",\"6\\\\d{8}|(?:[35689]\\\\d|49|70)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[1-3]|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2-$3\",[\"[3-5]|6[56]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"6\"],\"0$1\"]],\"0\"],\"BB\":[\"1\",\"011\",\"(?:246|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"246$1\",0,\"246\"],\"BD\":[\"880\",\"00\",\"1\\\\d{9}|2\\\\d{7,8}|88\\\\d{4,6}|(?:8[0-79]|9\\\\d)\\\\d{4,8}|(?:[346]\\\\d|[57])\\\\d{5,8}\",[6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1-$2\",[\"31[5-8]|[459]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1-$2\",[\"3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:28|4[14]|5)|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,6})\",\"$1-$2\",[\"[13-9]\"],\"0$1\"],[\"(\\\\d)(\\\\d{7,8})\",\"$1-$2\",[\"2\"],\"0$1\"]],\"0\"],\"BE\":[\"32\",\"00\",\"4\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:80|9)0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[239]|4[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[15-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4\"],\"0$1\"]],\"0\"],\"BF\":[\"226\",\"00\",\"[025-7]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[025-7]\"]]]],\"BG\":[\"359\",\"00\",\"[2-7]\\\\d{6,7}|[89]\\\\d{6,8}|2\\\\d{5}\",[6,7,8,9],[[\"(\\\\d)(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"43[1-6]|70[1-9]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:70|8)0\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"43[1-7]|7\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[48]|9[08]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"BH\":[\"973\",\"00\",\"[136-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[13679]|8[047]\"]]]],\"BI\":[\"257\",\"00\",\"(?:[267]\\\\d|31)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2367]\"]]]],\"BJ\":[\"229\",\"00\",\"[25689]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[25689]\"]]]],\"BL\":[\"590\",\"00\",\"(?:590|(?:69|80)\\\\d|976)\\\\d{6}\",[9],0,\"0\",0,0,0,0,0,[[\"590(?:2[7-9]|5[12]|87)\\\\d{4}\"],[\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"976[01]\\\\d{5}\"]]],\"BM\":[\"1\",\"011\",\"(?:441|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-8]\\\\d{6})$\",\"441$1\",0,\"441\"],\"BN\":[\"673\",\"00\",\"[2-578]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-578]\"]]]],\"BO\":[\"591\",\"00(?:1\\\\d)?\",\"(?:[2-467]\\\\d\\\\d|8001)\\\\d{5}\",[8,9],[[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[23]|4[46]\"]],[\"(\\\\d{8})\",\"$1\",[\"[67]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\",0,\"0(1\\\\d)?\"],\"BQ\":[\"599\",\"00\",\"(?:[34]1|7\\\\d)\\\\d{5}\",[7],0,0,0,0,0,0,\"[347]\"],\"BR\":[\"55\",\"00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)\",\"(?:[1-46-9]\\\\d\\\\d|5(?:[0-46-9]\\\\d|5[0-24679]))\\\\d{8}|[1-9]\\\\d{9}|[3589]\\\\d{8}|[34]\\\\d{7}\",[8,9,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"300|4(?:0[02]|37)\",\"4(?:02|37)0|[34]00\"]],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:[358]|90)0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]\"],\"($1)\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1 $2-$3\",[\"[16][1-9]|[2-57-9]\"],\"($1)\"]],\"0\",0,\"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\\\d{10,11}))?\",\"$2\"],\"BS\":[\"1\",\"011\",\"(?:242|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([3-8]\\\\d{6})$\",\"242$1\",0,\"242\"],\"BT\":[\"975\",\"00\",\"[17]\\\\d{7}|[2-8]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-68]|7[246]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[67]|7\"]]]],\"BW\":[\"267\",\"00\",\"(?:0800|(?:[37]|800)\\\\d)\\\\d{6}|(?:[2-6]\\\\d|90)\\\\d{5}\",[7,8,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[24-6]|3[15-79]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"BY\":[\"375\",\"810\",\"(?:[12]\\\\d|33|44|902)\\\\d{7}|8(?:0[0-79]\\\\d{5,7}|[1-7]\\\\d{9})|8(?:1[0-489]|[5-79]\\\\d)\\\\d{7}|8[1-79]\\\\d{6,7}|8[0-79]\\\\d{5}|8\\\\d{5}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"800\"],\"8 $1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,4})\",\"$1 $2 $3\",[\"800\"],\"8 $1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{3})\",\"$1 $2-$3\",[\"1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])\",\"1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"1(?:[56]|7[467])|2[1-3]\"],\"8 0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-4]\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"8 $1\"]],\"8\",0,\"0|80?\",0,0,0,0,\"8~10\"],\"BZ\":[\"501\",\"00\",\"(?:0800\\\\d|[2-8])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-8]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"0\"]]]],\"CA\":[\"1\",\"011\",\"(?:[2-8]\\\\d|90)\\\\d{8}\",[10],0,\"1\",0,0,0,0,0,[[\"(?:2(?:04|[23]6|[48]9|50)|3(?:06|43|6[578])|4(?:03|1[68]|3[178]|50|74)|5(?:06|1[49]|48|79|8[17])|6(?:04|13|39|47|72)|7(?:0[59]|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\\\d{6}\"],[\"\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|(?:5(?:00|2[12]|33|44|66|77|88)|622)[2-9]\\\\d{6}\"],0,0,0,[\"600[2-9]\\\\d{6}\"]]],\"CC\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d|8[0-24-9])\\\\d{7}|[148]\\\\d{8}|1\\\\d{5,7}\",[6,7,8,9,10],0,\"0\",0,\"0|([59]\\\\d{7})$\",\"8$1\",0,0,[[\"8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\\\d|70[23]|959))\\\\d{3}\",[9]],[\"4(?:83[0-38]|93[0-4])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{3}|45[0-4])\\\\d{3}|13\\\\d{4}\",[6,8,10]]],\"0011\"],\"CD\":[\"243\",\"00\",\"[189]\\\\d{8}|[1-68]\\\\d{6}\",[7,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[1-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\"],\"CF\":[\"236\",\"00\",\"(?:[27]\\\\d{3}|8776)\\\\d{4}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[278]\"]]]],\"CG\":[\"242\",\"00\",\"222\\\\d{6}|(?:0\\\\d|80)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"801\"]],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[02]\"]]]],\"CH\":[\"41\",\"00\",\"8\\\\d{11}|[2-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8[047]|90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-79]|81\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"8\"],\"0$1\"]],\"0\"],\"CI\":[\"225\",\"00\",\"[02]\\\\d{9}\",[10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d)(\\\\d{5})\",\"$1 $2 $3 $4\",[\"2\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"0\"]]]],\"CK\":[\"682\",\"00\",\"[2-578]\\\\d{4}\",[5],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"[2-578]\"]]]],\"CL\":[\"56\",\"(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0\",\"12300\\\\d{6}|6\\\\d{9,10}|[2-9]\\\\d{8}\",[9,10,11],[[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"219\",\"2196\"],\"($1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[1-3]\"],\"($1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"9[2-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"60|8\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"60\"]]]],\"CM\":[\"237\",\"00\",\"[26]\\\\d{8}|88\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"88\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[26]|88\"]]]],\"CN\":[\"86\",\"00|1(?:[12]\\\\d|79)\\\\d\\\\d00\",\"1[127]\\\\d{8,9}|2\\\\d{9}(?:\\\\d{2})?|[12]\\\\d{6,7}|86\\\\d{6}|(?:1[03-689]\\\\d|6)\\\\d{7,9}|(?:[3-579]\\\\d|8[0-57-9])\\\\d{6,9}\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5,6})\",\"$1 $2\",[\"(?:10|2[0-57-9])[19]\",\"(?:10|2[0-57-9])(?:10|9[56])\",\"(?:10|2[0-57-9])(?:100|9[56])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]\",\"(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))[19]\",\"85[23](?:10|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:10|9[56])\",\"85[23](?:100|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:100|9[56])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:4|80)0\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|2(?:[02-57-9]|1[1-9])\",\"10|2(?:[02-57-9]|1[1-9])\",\"10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-578]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"1[3-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"[12]\"],\"0$1\",1]],\"0\",0,\"0|(1(?:[12]\\\\d|79)\\\\d\\\\d)\",0,0,0,0,\"00\"],\"CO\":[\"57\",\"00(?:4(?:[14]4|56)|[579])\",\"(?:(?:1\\\\d|[36])\\\\d{3}|9101)\\\\d{6}|[124-8]\\\\d{7}\",[8,10,11],[[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[146][2-9]|[2578]\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"6\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"[39]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{7})\",\"$1-$2-$3\",[\"1\"],\"0$1\",0,\"$1 $2 $3\"]],\"0\",0,\"0([3579]|4(?:[14]4|56))?\"],\"CR\":[\"506\",\"00\",\"(?:8\\\\d|90)\\\\d{8}|(?:[24-8]\\\\d{3}|3005)\\\\d{4}\",[8,10],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[3-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[89]\"]]],0,0,\"(19(?:0[0-2468]|1[09]|20|66|77|99))\"],\"CU\":[\"53\",\"119\",\"[27]\\\\d{6,7}|[34]\\\\d{5,7}|(?:5|8\\\\d\\\\d)\\\\d{7}\",[6,7,8,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"2[1-4]|[34]\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{6,7})\",\"$1 $2\",[\"7\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"5\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"8\"],\"0$1\"]],\"0\"],\"CV\":[\"238\",\"0\",\"(?:[2-59]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2-589]\"]]]],\"CW\":[\"599\",\"00\",\"(?:[34]1|60|(?:7|9\\\\d)\\\\d)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[3467]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9[4-8]\"]]],0,0,0,0,0,\"[69]\"],\"CX\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d|8[0-24-9])\\\\d{7}|[148]\\\\d{8}|1\\\\d{5,7}\",[6,7,8,9,10],0,\"0\",0,\"0|([59]\\\\d{7})$\",\"8$1\",0,0,[[\"8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\\\d|7(?:0[01]|1[0-2])|958))\\\\d{3}\",[9]],[\"4(?:83[0-38]|93[0-4])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{3}|45[0-4])\\\\d{3}|13\\\\d{4}\",[6,8,10]]],\"0011\"],\"CY\":[\"357\",\"00\",\"(?:[279]\\\\d|[58]0)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[257-9]\"]]]],\"CZ\":[\"420\",\"00\",\"(?:[2-578]\\\\d|60)\\\\d{7}|9\\\\d{8,11}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]|9[015-7]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]]],\"DE\":[\"49\",\"00\",\"[2579]\\\\d{5,14}|49(?:[34]0|69|8\\\\d)\\\\d\\\\d?|49(?:37|49|60|7[089]|9\\\\d)\\\\d{1,3}|49(?:[12]\\\\d|3[2-689]|7[1-7])\\\\d{1,8}|(?:1|[368]\\\\d|4[0-8])\\\\d{3,13}|49(?:[05]\\\\d|31|[46][1-8])\\\\d{1,9}\",[4,5,6,7,8,9,10,11,12,13,14,15],[[\"(\\\\d{2})(\\\\d{3,13})\",\"$1 $2\",[\"3[02]|40|[68]9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,12})\",\"$1 $2\",[\"2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\",\"2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2,11})\",\"$1 $2\",[\"[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]\",\"[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"138\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{2,10})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,11})\",\"$1 $2\",[\"181\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{4,10})\",\"$1 $2 $3\",[\"1(?:3|80)|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"1[67]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,12})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"185\",\"1850\",\"18500\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"18[68]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"15[0568]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"15[1279]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{8})\",\"$1 $2\",[\"18\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{7,8})\",\"$1 $2 $3\",[\"1(?:6[023]|7)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{7})\",\"$1 $2 $3\",[\"15[279]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{8})\",\"$1 $2 $3\",[\"15\"],\"0$1\"]],\"0\"],\"DJ\":[\"253\",\"00\",\"(?:2\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[27]\"]]]],\"DK\":[\"45\",\"00\",\"[2-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-9]\"]]]],\"DM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|767|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-7]\\\\d{6})$\",\"767$1\",0,\"767\"],\"DO\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"8001|8[024]9\"],\"DZ\":[\"213\",\"00\",\"(?:[1-4]|[5-79]\\\\d|80)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-8]\"],\"0$1\"]],\"0\"],\"EC\":[\"593\",\"00\",\"1\\\\d{9,10}|(?:[2-7]|9\\\\d)\\\\d{7}\",[8,9,10,11],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[2-7]\"],\"(0$1)\",0,\"$1-$2-$3\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"EE\":[\"372\",\"00\",\"8\\\\d{9}|[4578]\\\\d{7}|(?:[3-8]\\\\d|90)\\\\d{5}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88\",\"[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88\"]],[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[45]|8(?:00|[1-49])\",\"[45]|8(?:00[1-9]|[1-49])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"EG\":[\"20\",\"00\",\"[189]\\\\d{8,9}|[24-6]\\\\d{8}|[135]\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{7,8})\",\"$1 $2\",[\"[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,7})\",\"$1 $2\",[\"1[35]|[4-6]|8[2468]|9[235-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[189]\"],\"0$1\"]],\"0\"],\"EH\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],0,\"0\",0,0,0,0,\"528[89]\"],\"ER\":[\"291\",\"00\",\"[178]\\\\d{6}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[178]\"],\"0$1\"]],\"0\"],\"ES\":[\"34\",\"00\",\"[5-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]00\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-9]\"]]]],\"ET\":[\"251\",\"00\",\"(?:11|[2-59]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-59]\"],\"0$1\"]],\"0\"],\"FI\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"[1-35689]\\\\d{4}|7\\\\d{10,11}|(?:[124-7]\\\\d|3[0-46-9])\\\\d{8}|[1-9]\\\\d{5,8}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d)(\\\\d{4,9})\",\"$1 $2\",[\"[2568][1-8]|3(?:0[1-9]|[1-9])|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[12]00|[368]|70[07-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,8})\",\"$1 $2\",[\"[1245]|7[135]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,10})\",\"$1 $2\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,\"1[03-79]|[2-9]\",0,\"00\"],\"FJ\":[\"679\",\"0(?:0|52)\",\"45\\\\d{5}|(?:0800\\\\d|[235-9])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[235-9]|45\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]]],0,0,0,0,0,0,0,\"00\"],\"FK\":[\"500\",\"00\",\"[2-7]\\\\d{4}\",[5]],\"FM\":[\"691\",\"00\",\"(?:[39]\\\\d\\\\d|820)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[389]\"]]]],\"FO\":[\"298\",\"00\",\"[2-9]\\\\d{5}\",[6],[[\"(\\\\d{6})\",\"$1\",[\"[2-9]\"]]],0,0,\"(10(?:01|[12]0|88))\"],\"FR\":[\"33\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0 $1\"],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[1-79]\"],\"0$1\"]],\"0\"],\"GA\":[\"241\",\"00\",\"(?:[067]\\\\d|11)\\\\d{6}|[2-7]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"11|[67]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]]],0,0,\"0(11\\\\d{6}|6[256]\\\\d{6}|7[47]\\\\d{6})\",\"$1\"],\"GB\":[\"44\",\"00\",\"[1-357-9]\\\\d{9}|[18]\\\\d{8}|8\\\\d{6}\",[7,9,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"800\",\"8001\",\"80011\",\"800111\",\"8001111\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"845\",\"8454\",\"84546\",\"845464\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"1(?:38|5[23]|69|76|94)\",\"1(?:(?:38|69)7|5(?:24|39)|768|946)\",\"1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"1(?:[2-69][02-9]|[78])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[25]|7(?:0|6[02-9])\",\"[25]|7(?:0|6(?:[03-9]|2[356]))\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1389]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:1(?:1(?:3(?:[0-58]\\\\d\\\\d|73[0235])|4(?:[0-5]\\\\d\\\\d|69[7-9]|70[0359])|(?:5[0-26-9]|[78][0-49])\\\\d\\\\d|6(?:[0-4]\\\\d\\\\d|50[02459]))|2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\\\d)\\\\d\\\\d|1(?:[0-7]\\\\d\\\\d|8(?:[02]\\\\d|1[0-278])))|(?:3(?:0\\\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\\\d\\\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\\\d{3})\\\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\\\d)|76\\\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\\\d|7[4-79])|295[5-7]|35[34]\\\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\\\d{3}\",[9,10]],[\"7(?:457[0-57-9]|700[01]|911[028])\\\\d{5}|7(?:[1-3]\\\\d\\\\d|4(?:[0-46-9]\\\\d|5[0-689])|5(?:0[0-8]|[13-9]\\\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\\\d|8[02-9]|9[0-689])|8(?:[014-9]\\\\d|[23][0-8])|9(?:[024-9]\\\\d|1[02-9]|3[0-689]))\\\\d{6}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[2-49]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:464|652)\\\\d{5}|76(?:0[0-2]|2[356]|34|4[01347]|5[49]|6[0-369]|77|81|9[139])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]],0,\" x\"],\"GD\":[\"1\",\"011\",\"(?:473|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"473$1\",0,\"473\"],\"GE\":[\"995\",\"00\",\"(?:[3-57]\\\\d\\\\d|800)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"32\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[57]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[348]\"],\"0$1\"]],\"0\"],\"GF\":[\"594\",\"00\",\"(?:[56]94|80\\\\d|976)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"GG\":[\"44\",\"00\",\"(?:1481|[357-9]\\\\d{3})\\\\d{6}|8\\\\d{6}(?:\\\\d{2})?\",[7,9,10],0,\"0\",0,\"0|([25-9]\\\\d{5})$\",\"1481$1\",0,0,[[\"1481[25-9]\\\\d{5}\",[10]],[\"7(?:(?:781|839)\\\\d|911[17])\\\\d{5}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[0-3]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:464|652)\\\\d{5}|76(?:0[0-2]|2[356]|34|4[01347]|5[49]|6[0-369]|77|81|9[139])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]]],\"GH\":[\"233\",\"00\",\"(?:[235]\\\\d{3}|800)\\\\d{5}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[235]\"],\"0$1\"]],\"0\"],\"GI\":[\"350\",\"00\",\"(?:[25]\\\\d\\\\d|606)\\\\d{5}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2\"]]]],\"GL\":[\"299\",\"00\",\"(?:19|[2-689]\\\\d|70)\\\\d{4}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"19|[2-9]\"]]]],\"GM\":[\"220\",\"00\",\"[2-9]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"GN\":[\"224\",\"00\",\"722\\\\d{6}|(?:3|6\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"3\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[67]\"]]]],\"GP\":[\"590\",\"00\",\"(?:590|(?:69|80)\\\\d|976)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"590(?:0[1-68]|1[0-2]|2[0-68]|3[1289]|4[0-24-9]|5[3-579]|6[0189]|7[08]|8[0-689]|9\\\\d)\\\\d{4}\"],[\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"976[01]\\\\d{5}\"]]],\"GQ\":[\"240\",\"00\",\"222\\\\d{6}|(?:3\\\\d|55|[89]0)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235]\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[89]\"]]]],\"GR\":[\"30\",\"00\",\"5005000\\\\d{3}|8\\\\d{9,10}|(?:[269]\\\\d|70)\\\\d{8}\",[10,11],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"21|7\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2689]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"8\"]]]],\"GT\":[\"502\",\"00\",\"(?:1\\\\d{3}|[2-7])\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]]],\"GU\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|671|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([3-9]\\\\d{6})$\",\"671$1\",0,\"671\"],\"GW\":[\"245\",\"00\",\"[49]\\\\d{8}|4\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"40\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"]]]],\"GY\":[\"592\",\"001\",\"(?:862\\\\d|9008)\\\\d{3}|(?:[2-46]\\\\d|77)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46-9]\"]]]],\"HK\":[\"852\",\"00(?:30|5[09]|[126-9]?)\",\"8[0-46-9]\\\\d{6,7}|9\\\\d{4}(?:\\\\d(?:\\\\d(?:\\\\d{4})?)?)?|(?:[235-79]\\\\d|46)\\\\d{6}\",[5,6,7,8,9,11],[[\"(\\\\d{3})(\\\\d{2,5})\",\"$1 $2\",[\"900\",\"9003\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[1-4]|9(?:0[1-9]|[1-8])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]],0,0,0,0,0,0,0,\"00\"],\"HN\":[\"504\",\"00\",\"8\\\\d{10}|[237-9]\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[237-9]\"]]]],\"HR\":[\"385\",\"00\",\"(?:[24-69]\\\\d|3[0-79])\\\\d{7}|80\\\\d{5,7}|[1-79]\\\\d{7}|6\\\\d{5,6}\",[6,7,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"6[01]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-5]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"HT\":[\"509\",\"00\",\"[2-489]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-489]\"]]]],\"HU\":[\"36\",\"00\",\"[235-7]\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"06 $1\"]],\"06\"],\"ID\":[\"62\",\"00[89]\",\"(?:(?:00[1-9]|8\\\\d)\\\\d{4}|[1-36])\\\\d{6}|00\\\\d{10}|[1-9]\\\\d{8,10}|[2-9]\\\\d{7}\",[7,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"15\"]],[\"(\\\\d{2})(\\\\d{5,9})\",\"$1 $2\",[\"2[124]|[36]1\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,7})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,8})\",\"$1 $2\",[\"[2-79]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{3})\",\"$1-$2-$3\",[\"8[1-35-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6,8})\",\"$1 $2\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"804\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"80\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"]],\"0\"],\"IE\":[\"353\",\"00\",\"(?:1\\\\d|[2569])\\\\d{6,8}|4\\\\d{6,9}|7\\\\d{8}|8\\\\d{8,9}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"2[24-9]|47|58|6[237-9]|9[35-9]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[45]0\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2569]|4[1-69]|7[14]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"81\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"4\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"IL\":[\"972\",\"0(?:0|1[2-9])\",\"1\\\\d{6}(?:\\\\d{3,5})?|[57]\\\\d{8}|[1-489]\\\\d{7}\",[7,8,9,10,11,12],[[\"(\\\\d{4})(\\\\d{3})\",\"$1-$2\",[\"125\"]],[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"121\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2-489]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"12\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1-$2\",[\"159\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"1[7-9]\"]],[\"(\\\\d{3})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3-$4\",[\"15\"]]],\"0\"],\"IM\":[\"44\",\"00\",\"1624\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"0|([25-8]\\\\d{5})$\",\"1624$1\",0,\"74576|(?:16|7[56])24\"],\"IN\":[\"91\",\"00\",\"(?:000800|[2-9]\\\\d\\\\d)\\\\d{7}|1\\\\d{7,12}\",[8,9,10,11,12,13],[[\"(\\\\d{8})\",\"$1\",[\"5(?:0|2[23]|3[03]|[67]1|88)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)\"],0,1],[\"(\\\\d{4})(\\\\d{4,5})\",\"$1 $2\",[\"180\",\"1800\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"140\"],0,1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"11|2[02]|33|4[04]|79[1-7]|80[2-46]\",\"11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])\",\"11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807\",\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]\",\"1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\\\d|7(?:1(?:[013-8]\\\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]))[2-7]\"],\"0$1\",1],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"[6-9]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{2,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:6|8[06])\",\"1(?:6|8[06]0)\"],0,1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"18\"],0,1]],\"0\"],\"IO\":[\"246\",\"00\",\"3\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"3\"]]]],\"IQ\":[\"964\",\"00\",\"(?:1|7\\\\d\\\\d)\\\\d{7}|[2-6]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"IR\":[\"98\",\"00\",\"[1-9]\\\\d{9}|(?:[1-8]\\\\d\\\\d|9)\\\\d{3,4}\",[4,5,6,7,10],[[\"(\\\\d{4,5})\",\"$1\",[\"96\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,5})\",\"$1 $2\",[\"(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-8]\"],\"0$1\"]],\"0\"],\"IS\":[\"354\",\"00|1(?:0(?:01|[12]0)|100)\",\"(?:38\\\\d|[4-9])\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"3\"]]],0,0,0,0,0,0,0,\"00\"],\"IT\":[\"39\",\"00\",\"0\\\\d{5,10}|3[0-8]\\\\d{7,10}|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?|(?:1\\\\d|39)\\\\d{7,8}\",[6,7,8,9,10,11],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"0[26]\"]],[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"0[13-57-9][0159]|8(?:03|4[17]|9[245])\",\"0[13-57-9][0159]|8(?:03|4[17]|9(?:2|[45][0-4]))\"]],[\"(\\\\d{4})(\\\\d{2,6})\",\"$1 $2\",[\"0(?:[13-579][2-46-8]|8[236-8])\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"894\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[26]|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1[4679]|[38]\"]],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[13-57-9][0159]\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{5})\",\"$1 $2 $3\",[\"0[26]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"3\"]]],0,0,0,0,0,0,[[\"0669[0-79]\\\\d{1,6}|0(?:1(?:[0159]\\\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\\\d\\\\d|3(?:[0159]\\\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\\\d|6[0-8])|7(?:[0159]\\\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\\\d|2[3-578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\\\d{2,7}\"],[\"3[1-9]\\\\d{8}|3[2-9]\\\\d{7}\",[9,10]],[\"80(?:0\\\\d{3}|3)\\\\d{3}\",[6,9]],[\"(?:0878\\\\d\\\\d|89(?:2|4[5-9]\\\\d))\\\\d{3}|89[45][0-4]\\\\d\\\\d|(?:1(?:44|6[346])|89(?:5[5-9]|9))\\\\d{6}\",[6,8,9,10]],[\"1(?:78\\\\d|99)\\\\d{6}\",[9,10]],0,0,0,[\"55\\\\d{8}\",[10]],[\"84(?:[08]\\\\d{3}|[17])\\\\d{3}\",[6,9]]]],\"JE\":[\"44\",\"00\",\"1534\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"0|([0-24-8]\\\\d{5})$\",\"1534$1\",0,0,[[\"1534[0-24-8]\\\\d{5}\"],[\"7(?:(?:(?:50|82)9|937)\\\\d|7(?:00[378]|97[7-9]))\\\\d{5}\"],[\"80(?:07(?:35|81)|8901)\\\\d{4}\"],[\"(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\\\d{4}\"],[\"701511\\\\d{4}\"],0,[\"(?:3(?:0(?:07(?:35|81)|8901)|3\\\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\\\d{4})\\\\d{4}\"],[\"76(?:464|652)\\\\d{5}|76(?:0[0-2]|2[356]|34|4[01347]|5[49]|6[0-369]|77|81|9[139])\\\\d{6}\"],[\"56\\\\d{8}\"]]],\"JM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|658|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"658|876\"],\"JO\":[\"962\",\"00\",\"(?:(?:[2689]|7\\\\d)\\\\d|32|53)\\\\d{6}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2356]|87\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"70\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"JP\":[\"81\",\"010\",\"00[1-9]\\\\d{6,14}|[257-9]\\\\d{9}|(?:00|[1-9]\\\\d\\\\d)\\\\d{6}\",[8,9,10,11,12,13,14,15,16,17],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"(?:12|57|99)0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:49|80|9[16])\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9]|636)|9(?:496|802|9(?:1[23]|69))|1(?:45|58)[67]\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9]|636[457-9])|9(?:496|802|9(?:1[23]|69))|1(?:45|58)[67]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[36]|4(?:2[09]|7[01])\",\"[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[27-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9])|5(?:2|3[045]|4[0-369]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|49|51|6(?:[0-24]|36|5[0-3589]|72|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:49|55|83)[29]|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|7[015-9]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17|3[015-9]))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9(?:[019]|4[1-3]|6(?:[0-47-9]|5[01346-9])))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|829(?:2|66)|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"[14]|[289][2-9]|5[3-9]|7[2-4679]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"800\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[257-9]\"],\"0$1\"]],\"0\"],\"KE\":[\"254\",\"000\",\"(?:[17]\\\\d\\\\d|900)\\\\d{6}|(?:2|80)0\\\\d{6,7}|[4-6]\\\\d{6,8}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"[24-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[17]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\"],\"KG\":[\"996\",\"00\",\"8\\\\d{9}|(?:[235-8]\\\\d|99)\\\\d{7}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3(?:1[346]|[24-79])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235-79]|88\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d)(\\\\d{2,3})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"KH\":[\"855\",\"00[14-9]\",\"1\\\\d{9}|[1-9]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"KI\":[\"686\",\"00\",\"(?:[37]\\\\d|6[0-79])\\\\d{6}|(?:[2-48]\\\\d|50)\\\\d{3}\",[5,8],0,\"0\"],\"KM\":[\"269\",\"00\",\"[3478]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[3478]\"]]]],\"KN\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-7]\\\\d{6})$\",\"869$1\",0,\"869\"],\"KP\":[\"850\",\"00|99\",\"85\\\\d{6}|(?:19\\\\d|[2-7])\\\\d{7}\",[8,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"]],\"0\"],\"KR\":[\"82\",\"00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))\",\"00[1-9]\\\\d{8,11}|(?:[12]|5\\\\d{3})\\\\d{7}|[13-6]\\\\d{9}|(?:[1-6]\\\\d|80)\\\\d{7}|[3-6]\\\\d{4,5}|(?:00|7)0\\\\d{8}\",[5,6,8,9,10,11,12,13,14],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1-$2\",[\"(?:3[1-3]|[46][1-4]|5[1-5])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"1\"]],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"[1346]|5[1-5]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1-$2-$3\",[\"5\"],\"0$1\"]],\"0\",0,\"0(8(?:[1-46-8]|5\\\\d\\\\d))?\"],\"KW\":[\"965\",\"00\",\"(?:18|[2569]\\\\d\\\\d)\\\\d{5}\",[7,8],[[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[169]|2(?:[235]|4[1-35-9])|52\"]],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[25]\"]]]],\"KY\":[\"1\",\"011\",\"(?:345|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"345$1\",0,\"345\"],\"KZ\":[\"7\",\"810\",\"(?:33622|8\\\\d{8})\\\\d{5}|[78]\\\\d{9}\",[10,14],0,\"8\",0,0,0,0,\"33|7\",0,\"8~10\"],\"LA\":[\"856\",\"00\",\"[23]\\\\d{9}|3\\\\d{8}|(?:[235-8]\\\\d|41)\\\\d{6}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2[13]|3[14]|[4-8]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"30[013-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\"],\"LB\":[\"961\",\"00\",\"[27-9]\\\\d{7}|[13-9]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27-9]\"]]],\"0\"],\"LC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|758|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-8]\\\\d{6})$\",\"758$1\",0,\"758\"],\"LI\":[\"423\",\"00\",\"90\\\\d{5}|(?:[2378]|6\\\\d\\\\d)\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[237-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"69\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]],\"0\",0,\"0|(1001)\"],\"LK\":[\"94\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[1-689]\"],\"0$1\"]],\"0\"],\"LR\":[\"231\",\"00\",\"(?:2|33|5\\\\d|77|88)\\\\d{7}|[4-6]\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[4-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3578]\"],\"0$1\"]],\"0\"],\"LS\":[\"266\",\"00\",\"(?:[256]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2568]\"]]]],\"LT\":[\"370\",\"00\",\"(?:[3469]\\\\d|52|[78]0)\\\\d{6}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"52[0-7]\"],\"(8-$1)\",1],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"8 $1\",1],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"37|4(?:[15]|6[1-8])\"],\"(8-$1)\",1],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[3-6]\"],\"(8-$1)\",1]],\"8\",0,\"[08]\"],\"LU\":[\"352\",\"00\",\"35[013-9]\\\\d{4,8}|6\\\\d{8}|35\\\\d{2,4}|(?:[2457-9]\\\\d|3[0-46-9])\\\\d{2,9}\",[4,5,6,7,8,9,10,11],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"20[2-689]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4\",[\"2(?:[0367]|4[3-8])\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"80[01]|90[015]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"20\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4 $5\",[\"2(?:[0367]|4[3-8])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,5})\",\"$1 $2 $3 $4\",[\"[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]\"]]],0,0,\"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\\\d)\"],\"LV\":[\"371\",\"00\",\"(?:[268]\\\\d|90)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[269]|8[01]\"]]]],\"LY\":[\"218\",\"00\",\"[2-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"[2-9]\"],\"0$1\"]],\"0\"],\"MA\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],[[\"(\\\\d{5})(\\\\d{4})\",\"$1-$2\",[\"5(?:29|38)\",\"5(?:29|38)[89]\",\"5(?:29|38)[89]0\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5[45]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1-$2\",[\"5(?:2[2-489]|3[5-9]|9)|892\",\"5(?:2(?:[2-49]|8[235-9])|3[5-9]|9)|892\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"8\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1-$2\",[\"[5-7]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"5(?:29(?:[189][05]|2[29]|3[01])|38[89][05])\\\\d{4}|5(?:2(?:[0-25-7]\\\\d|3[1-578]|4[02-46-8]|8[0235-7]|90)|3(?:[0-47]\\\\d|5[02-9]|6[02-8]|80|9[3-9])|(?:4[067]|5[03])\\\\d)\\\\d{5}\"],[\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:0\\\\d|1[0-3]|6[1267]|7[0-57]))\\\\d{6}\"],[\"80\\\\d{7}\"],[\"89\\\\d{7}\"],0,0,0,0,[\"592(?:4[0-2]|93)\\\\d{4}\"]]],\"MC\":[\"377\",\"00\",\"(?:[3489]|6\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"4\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[389]\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"6\"],\"0$1\"]],\"0\"],\"MD\":[\"373\",\"00\",\"(?:[235-7]\\\\d|[89]0)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"22|3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[25-7]\"],\"0$1\"]],\"0\"],\"ME\":[\"382\",\"00\",\"(?:20|[3-79]\\\\d)\\\\d{6}|80\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"0$1\"]],\"0\"],\"MF\":[\"590\",\"00\",\"(?:590|(?:69|80)\\\\d|976)\\\\d{6}\",[9],0,\"0\",0,0,0,0,0,[[\"590(?:0[079]|[14]3|[27][79]|30|5[0-268]|87)\\\\d{4}\"],[\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"976[01]\\\\d{5}\"]]],\"MG\":[\"261\",\"00\",\"[23]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\",0,\"0|([24-9]\\\\d{6})$\",\"20$1\"],\"MH\":[\"692\",\"011\",\"329\\\\d{4}|(?:[256]\\\\d|45)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-6]\"]]],\"1\"],\"MK\":[\"389\",\"00\",\"[2-578]\\\\d{7}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[347]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[58]\"],\"0$1\"]],\"0\"],\"ML\":[\"223\",\"00\",\"[24-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-9]\"]]]],\"MM\":[\"95\",\"00\",\"1\\\\d{5,7}|95\\\\d{6}|(?:[4-7]|9[0-46-9])\\\\d{6,8}|(?:2|8\\\\d)\\\\d{5,8}\",[6,7,8,9,10],[[\"(\\\\d)(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"16|2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[45]|6(?:0[23]|[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-6]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[4-7]|8[1-35]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4,6})\",\"$1 $2 $3\",[\"9(?:2[0-4]|[35-9]|4[137-9])\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"92\"],\"0$1\"],[\"(\\\\d)(\\\\d{5})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"MN\":[\"976\",\"001\",\"[12]\\\\d{7,9}|[57-9]\\\\d{7}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[12]1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[57-9]\"]],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[12]2[1-3]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])\",\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"[12]\"],\"0$1\"]],\"0\"],\"MO\":[\"853\",\"00\",\"0800\\\\d{3}|(?:28|[68]\\\\d)\\\\d{6}\",[7,8],[[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[268]\"]]]],\"MP\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:67|90)0\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"670$1\",0,\"670\"],\"MQ\":[\"596\",\"00\",\"(?:69|80)\\\\d{7}|(?:59|97)6\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"MR\":[\"222\",\"00\",\"(?:[2-4]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-48]\"]]]],\"MS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|664|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([34]\\\\d{6})$\",\"664$1\",0,\"664\"],\"MT\":[\"356\",\"00\",\"3550\\\\d{4}|(?:[2579]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2357-9]\"]]]],\"MU\":[\"230\",\"0(?:0|[24-7]0|3[03])\",\"(?:5|8\\\\d\\\\d)\\\\d{7}|[2-468]\\\\d{6}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46]|8[013]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"5\"]],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"8\"]]],0,0,0,0,0,0,0,\"020\"],\"MV\":[\"960\",\"0(?:0|19)\",\"(?:800|9[0-57-9]\\\\d)\\\\d{7}|[34679]\\\\d{6}\",[7,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[3467]|9[13-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]],0,0,0,0,0,0,0,\"00\"],\"MW\":[\"265\",\"00\",\"(?:[19]\\\\d|[23]1|77|88)\\\\d{7}|1\\\\d{6}\",[7,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[137-9]\"],\"0$1\"]],\"0\"],\"MX\":[\"52\",\"0[09]\",\"1(?:65[0-689]|99[1-9])\\\\d{7}|(?:1(?:[0147]\\\\d|[235][1-9]|6[0-46-9]|8[1-79]|9[1-8])|[2-9]\\\\d)\\\\d{8}\",[10,11],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"33|5[56]|81\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-9]\"],0,1],[\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 $3 $4\",[\"1(?:33|5[56]|81)\"],0,1],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 $3 $4\",[\"1\"],0,1]],\"01\",0,\"0(?:[12]|4[45])|1\",0,0,0,0,\"00\"],\"MY\":[\"60\",\"00\",\"1\\\\d{8,9}|(?:3\\\\d|[4-9])\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"[4-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1-$2 $3\",[\"1(?:[02469]|[378][1-9])|8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"3\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3-$4\",[\"1[36-8]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"15\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"1\"],\"0$1\"]],\"0\"],\"MZ\":[\"258\",\"00\",\"(?:2|8\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2|8[2-79]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"NA\":[\"264\",\"00\",\"[68]\\\\d{7,8}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"87\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"NC\":[\"687\",\"00\",\"[2-57-9]\\\\d{5}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1.$2.$3\",[\"[2-57-9]\"]]]],\"NE\":[\"227\",\"00\",\"[027-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"08\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[089]|2[013]|7[04]\"]]]],\"NF\":[\"672\",\"00\",\"[13]\\\\d{5}\",[6],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"1[0-3]\"]],[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"[13]\"]]],0,0,\"([0-258]\\\\d{4})$\",\"3$1\"],\"NG\":[\"234\",\"009\",\"(?:[124-7]|9\\\\d{3})\\\\d{6}|[1-9]\\\\d{7}|[78]\\\\d{9,13}\",[7,8,10,11,12,13,14],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"78\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]|9(?:0[3-9]|[1-9])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-7]|8[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})(\\\\d{5,6})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"]],\"0\"],\"NI\":[\"505\",\"00\",\"(?:1800|[25-8]\\\\d{3})\\\\d{4}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[125-8]\"]]]],\"NL\":[\"31\",\"00\",\"(?:[124-7]\\\\d\\\\d|3(?:[02-9]\\\\d|1[0-8]))\\\\d{6}|[89]\\\\d{6,9}|1\\\\d{4,5}\",[5,6,7,8,9,10],[[\"(\\\\d{3})(\\\\d{4,7})\",\"$1 $2\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"66\"],\"0$1\"],[\"(\\\\d)(\\\\d{8})\",\"$1 $2\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[16-8]|2[259]|3[124]|4[17-9]|5[124679]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-57-9]\"],\"0$1\"]],\"0\"],\"NO\":[\"47\",\"00\",\"(?:0|[2-9]\\\\d{3})\\\\d{4}\",[5,8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[489]|59\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[235-7]\"]]],0,0,0,0,0,\"[02-689]|7[0-8]\"],\"NP\":[\"977\",\"00\",\"(?:1\\\\d|9)\\\\d{9}|[1-9]\\\\d{7}\",[8,10,11],[[\"(\\\\d)(\\\\d{7})\",\"$1-$2\",[\"1[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1-$2\",[\"1[01]|[2-8]|9(?:[1-579]|6[2-6])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"9\"]]],\"0\"],\"NR\":[\"674\",\"00\",\"(?:444|(?:55|8\\\\d)\\\\d|666)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-68]\"]]]],\"NU\":[\"683\",\"00\",\"(?:[47]|888\\\\d)\\\\d{3}\",[4,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"8\"]]]],\"NZ\":[\"64\",\"0(?:0|161)\",\"[29]\\\\d{7,9}|50\\\\d{5}(?:\\\\d{2,3})?|6[0-35-9]\\\\d{6}|7\\\\d{7,8}|8\\\\d{4,9}|(?:11\\\\d|[34])\\\\d{7}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,8})\",\"$1 $2\",[\"8[1-579]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"50[036-8]|[89]0\",\"50(?:[0367]|88)|[89]0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"24|[346]|7[2-57-9]|9[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:10|74)|[59]|80\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1|2[028]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,5})\",\"$1 $2 $3\",[\"2(?:[169]|7[0-35-9])|7|86\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"00\"],\"OM\":[\"968\",\"00\",\"(?:1505|[279]\\\\d{3}|500)\\\\d{4}|800\\\\d{5,6}\",[7,8,9],[[\"(\\\\d{3})(\\\\d{4,6})\",\"$1 $2\",[\"[58]\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[179]\"]]]],\"PA\":[\"507\",\"00\",\"8\\\\d{9}|[68]\\\\d{7}|[1-57-9]\\\\d{6}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[1-57-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[68]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]]],\"PE\":[\"51\",\"19(?:1[124]|77|90)00\",\"(?:[14-8]|9\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[4-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"]]],\"0\",0,0,0,0,0,0,0,\" Anexo \"],\"PF\":[\"689\",\"00\",\"4\\\\d{5}(?:\\\\d{2})?|8\\\\d{7,8}\",[6,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4|8[7-9]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]]],\"PG\":[\"675\",\"00|140[1-3]\",\"(?:180|[78]\\\\d{3})\\\\d{4}|(?:[2-589]\\\\d|64)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"18|[2-69]|85\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[78]\"]]],0,0,0,0,0,0,0,\"00\"],\"PH\":[\"63\",\"00\",\"(?:[2-7]|9\\\\d)\\\\d{8}|2\\\\d{5}|(?:1800|8)\\\\d{7,9}\",[6,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"2\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2\",\"3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"346|4(?:27|9[35])|883\",\"3469|4(?:279|9(?:30|56))|8834\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|8[2-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{4})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"1\"]]],\"0\"],\"PK\":[\"92\",\"00\",\"122\\\\d{6}|[24-8]\\\\d{10,11}|9(?:[013-9]\\\\d{8,10}|2(?:[01]\\\\d\\\\d|2(?:[06-8]\\\\d|1[01]))\\\\d{7})|(?:[2-8]\\\\d{3}|92(?:[0-7]\\\\d|8[1-9]))\\\\d{6}|[24-9]\\\\d{8}|[89]\\\\d{7}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,7})\",\"$1 $2 $3\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{6,7})\",\"$1 $2\",[\"2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])\",\"9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{7,8})\",\"$1 $2\",[\"(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"58\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[24-9]\"],\"(0$1)\"]],\"0\"],\"PL\":[\"48\",\"00\",\"6\\\\d{5}(?:\\\\d{2})?|8\\\\d{9}|[1-9]\\\\d{6}(?:\\\\d{2})?\",[6,7,8,9,10],[[\"(\\\\d{5})\",\"$1\",[\"19\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"11|64\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1\",\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"64\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[2-8]|[2-7]|8[1-79]|9[145]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"8\"]]]],\"PM\":[\"508\",\"00\",\"(?:[45]|80\\\\d\\\\d)\\\\d{5}\",[6,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[45]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"PR\":[\"1\",\"011\",\"(?:[589]\\\\d\\\\d|787)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"787|939\"],\"PS\":[\"970\",\"00\",\"[2489]2\\\\d{6}|(?:1\\\\d|5)\\\\d{8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2489]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"PT\":[\"351\",\"00\",\"1693\\\\d{5}|(?:[26-9]\\\\d|30)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2[12]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"16|[236-9]\"]]]],\"PW\":[\"680\",\"01[12]\",\"(?:[24-8]\\\\d\\\\d|345|900)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"PY\":[\"595\",\"00\",\"59\\\\d{4,6}|9\\\\d{5,10}|(?:[2-46-8]\\\\d|5[0-8])\\\\d{4,7}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"[2-9]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{4,5})\",\"$1 $2\",[\"2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"87\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"9(?:[5-79]|8[1-6])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"]]],\"0\"],\"QA\":[\"974\",\"00\",\"[2-7]\\\\d{7}|800\\\\d{4}(?:\\\\d{2})?|2\\\\d{6}\",[7,8,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"2[126]|8\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]\"]]]],\"RE\":[\"262\",\"00\",\"9769\\\\d{5}|(?:26|[68]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2689]\"],\"0$1\"]],\"0\",0,0,0,0,\"26[23]|69|[89]\"],\"RO\":[\"40\",\"00\",\"(?:[237]\\\\d|[89]0)\\\\d{7}|[23]\\\\d{5}\",[6,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"2[3-6]\",\"2[3-6]\\\\d9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"219|31\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[23]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[237-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,0,0,\" int \"],\"RS\":[\"381\",\"00\",\"38[02-9]\\\\d{6,9}|6\\\\d{7,9}|90\\\\d{4,8}|38\\\\d{5,6}|(?:7\\\\d\\\\d|800)\\\\d{3,9}|(?:[12]\\\\d|3[0-79])\\\\d{5,10}\",[6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3,9})\",\"$1 $2\",[\"(?:2[389]|39)0|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5,10})\",\"$1 $2\",[\"[1-36]\"],\"0$1\"]],\"0\"],\"RU\":[\"7\",\"810\",\"8\\\\d{13}|[347-9]\\\\d{9}\",[10,14],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-8]|2[1-9])\",\"7(?:1(?:[0-6]2|7|8[27])|2(?:1[23]|[2-9]2))\",\"7(?:1(?:[0-6]2|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2\"],\"8 ($1)\",1],[\"(\\\\d{5})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-68]|2[1-9])\",\"7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))\",\"7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[349]|8(?:[02-7]|1[1-8])\"],\"8 ($1)\",1],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"8\"],\"8 ($1)\"]],\"8\",0,0,0,0,\"3[04-689]|[489]\",0,\"8~10\"],\"RW\":[\"250\",\"00\",\"(?:06|[27]\\\\d\\\\d|[89]00)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"]]],\"0\"],\"SA\":[\"966\",\"00\",\"92\\\\d{7}|(?:[15]|8\\\\d)\\\\d{8}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"81\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\"],\"SB\":[\"677\",\"0[01]\",\"(?:[1-6]|[7-9]\\\\d\\\\d)\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7|8[4-9]|9(?:[1-8]|9[0-8])\"]]]],\"SC\":[\"248\",\"010|0[0-2]\",\"8000\\\\d{3}|(?:[249]\\\\d|64)\\\\d{5}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[246]|9[57]\"]]],0,0,0,0,0,0,0,\"00\"],\"SD\":[\"249\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\"],\"SE\":[\"46\",\"00\",\"(?:[26]\\\\d\\\\d|9)\\\\d{9}|[1-9]\\\\d{8}|[1-689]\\\\d{7}|[1-4689]\\\\d{6}|2\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"20\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"9(?:00|39|44)\"],\"0$1\",0,\"$1 $2\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3\",[\"[12][136]|3[356]|4[0246]|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{3})\",\"$1-$2 $3\",[\"9(?:00|39|44)\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"10|7\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1-$2 $3 $4\",[\"9\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4 $5\",[\"[26]\"],\"0$1\",0,\"$1 $2 $3 $4 $5\"]],\"0\"],\"SG\":[\"65\",\"0[0-3]\\\\d\",\"(?:(?:1\\\\d|8)\\\\d\\\\d|7000)\\\\d{7}|[3689]\\\\d{7}\",[8,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[369]|8(?:0[1-4]|[1-9])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]]],\"SH\":[\"290\",\"00\",\"(?:[256]\\\\d|8)\\\\d{3}\",[4,5],0,0,0,0,0,0,\"[256]\"],\"SI\":[\"386\",\"00|10(?:22|66|88|99)\",\"[1-7]\\\\d{7}|8\\\\d{4,7}|90\\\\d{4,6}\",[5,6,7,8],[[\"(\\\\d{2})(\\\\d{3,6})\",\"$1 $2\",[\"8[09]|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"59|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37][01]|4[0139]|51|6\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-57]\"],\"(0$1)\"]],\"0\",0,0,0,0,0,0,\"00\"],\"SJ\":[\"47\",\"00\",\"0\\\\d{4}|(?:[489]\\\\d|[57]9)\\\\d{6}\",[5,8],0,0,0,0,0,0,\"79\"],\"SK\":[\"421\",\"00\",\"[2-689]\\\\d{8}|[2-59]\\\\d{6}|[2-5]\\\\d{5}\",[6,7,9],[[\"(\\\\d)(\\\\d{2})(\\\\d{3,4})\",\"$1 $2 $3\",[\"21\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-5][1-8]1\",\"[3-5][1-8]1[67]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[689]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"[3-5]\"],\"0$1\"]],\"0\"],\"SL\":[\"232\",\"00\",\"(?:[237-9]\\\\d|66)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[236-9]\"],\"(0$1)\"]],\"0\"],\"SM\":[\"378\",\"00\",\"(?:0549|[5-7]\\\\d)\\\\d{6}\",[8,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"0\"]]],0,0,\"([89]\\\\d{5})$\",\"0549$1\"],\"SN\":[\"221\",\"00\",\"(?:[378]\\\\d|93)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[379]\"]]]],\"SO\":[\"252\",\"00\",\"[346-9]\\\\d{8}|[12679]\\\\d{7}|[1-5]\\\\d{6}|[1348]\\\\d{5}\",[6,7,8,9],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"8[125]\"]],[\"(\\\\d{6})\",\"$1\",[\"[134]\"]],[\"(\\\\d)(\\\\d{6})\",\"$1 $2\",[\"[15]|2[0-79]|3[0-46-8]|4[0-7]\"]],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"24|[67]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[3478]|64|90\"]],[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"1|28|6(?:0[5-7]|[1-35-9])|9[2-9]\"]]],\"0\"],\"SR\":[\"597\",\"00\",\"(?:[2-5]|68|[78]\\\\d)\\\\d{5}\",[6,7],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"56\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1-$2\",[\"[2-5]\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[6-8]\"]]]],\"SS\":[\"211\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\"],\"ST\":[\"239\",\"00\",\"(?:22|9\\\\d)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[29]\"]]]],\"SV\":[\"503\",\"00\",\"[267]\\\\d{7}|[89]00\\\\d{4}(?:\\\\d{4})?\",[7,8,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[89]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[267]\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]]],\"SX\":[\"1\",\"011\",\"7215\\\\d{6}|(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|(5\\\\d{6})$\",\"721$1\",0,\"721\"],\"SY\":[\"963\",\"00\",\"[1-39]\\\\d{8}|[1-5]\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-5]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\",1]],\"0\"],\"SZ\":[\"268\",\"00\",\"0800\\\\d{4}|(?:[237]\\\\d|900)\\\\d{6}\",[8,9],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[0237]\"]],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"9\"]]]],\"TA\":[\"290\",\"00\",\"8\\\\d{3}\",[4],0,0,0,0,0,0,\"8\"],\"TC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|649|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-479]\\\\d{6})$\",\"649$1\",0,\"649\"],\"TD\":[\"235\",\"00|16\",\"(?:22|[69]\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2679]\"]]],0,0,0,0,0,0,0,\"00\"],\"TG\":[\"228\",\"00\",\"[279]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[279]\"]]]],\"TH\":[\"66\",\"00[1-9]\",\"1\\\\d{9}|[1689]\\\\d{8}|[1-57]\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[13-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"TJ\":[\"992\",\"810\",\"(?:00|11|[2-57-9]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{6})(\\\\d)(\\\\d{2})\",\"$1 $2 $3\",[\"331\",\"3317\"],0,1],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[34]7|91[78]\"],0,1],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"3[1-5]\"],0,1],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[02-57-9]|11\"],0,1]],\"8\",0,0,0,0,0,0,\"8~10\"],\"TK\":[\"690\",\"00\",\"[2-47]\\\\d{3,6}\",[4,5,6,7]],\"TL\":[\"670\",\"00\",\"7\\\\d{7}|(?:[2-47]\\\\d|[89]0)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-489]|70\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"7\"]]]],\"TM\":[\"993\",\"810\",\"[1-6]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"12\"],\"(8 $1)\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-5]\"],\"(8 $1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"6\"],\"8 $1\"]],\"8\",0,0,0,0,0,0,\"8~10\"],\"TN\":[\"216\",\"00\",\"[2-57-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-57-9]\"]]]],\"TO\":[\"676\",\"00\",\"(?:0800|(?:[5-8]\\\\d\\\\d|999)\\\\d)\\\\d{3}|[2-8]\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1-$2\",[\"[2-4]|50|6[09]|7[0-24-69]|8[05]\"]],[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[5-9]\"]]]],\"TR\":[\"90\",\"00\",\"4\\\\d{6}|8\\\\d{11,12}|(?:[2-58]\\\\d\\\\d|900)\\\\d{7}\",[7,10,12,13],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"512|8[01589]|90\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5(?:[0-59]|61)\",\"5(?:[0-59]|616)\",\"5(?:[0-59]|6161)\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24][1-8]|3[1-9]\"],\"(0$1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{6,7})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1]],\"0\"],\"TT\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-46-8]\\\\d{6})$\",\"868$1\",0,\"868\"],\"TV\":[\"688\",\"00\",\"(?:2|7\\\\d\\\\d|90)\\\\d{4}\",[5,6,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]]],\"TW\":[\"886\",\"0(?:0[25-79]|19)\",\"[2-689]\\\\d{8}|7\\\\d{9,10}|[2-8]\\\\d{7}|2\\\\d{6}\",[7,8,9,10,11],[[\"(\\\\d{2})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"202\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[258]0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]\",\"[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,0,0,0,\"#\"],\"TZ\":[\"255\",\"00[056]\",\"(?:[26-8]\\\\d|41|90)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[24]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"]],\"0\"],\"UA\":[\"380\",\"00\",\"[89]\\\\d{9}|[3-9]\\\\d{8}\",[9,10],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]\",\"6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4[45][0-5]|5(?:0|6[37])|6(?:[12][018]|[36-8])|7|89|9[1-9]|(?:48|57)[0137-9]\",\"4[45][0-5]|5(?:0|6(?:3[14-7]|7))|6(?:[12][018]|[36-8])|7|89|9[1-9]|(?:48|57)[0137-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"[3-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"0~0\"],\"UG\":[\"256\",\"00[057]\",\"800\\\\d{6}|(?:[29]0|[347]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"202\",\"2024\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[27-9]|4(?:6[45]|[7-9])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[34]\"],\"0$1\"]],\"0\"],\"US\":[\"1\",\"011\",\"[2-9]\\\\d{9}\",[10],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"($1) $2-$3\",[\"[2-9]\"],0,1,\"$1-$2-$3\"]],\"1\",0,0,0,0,0,[[\"5(?:05(?:[2-57-9]\\\\d\\\\d|6(?:[0-35-9]\\\\d|44))|82(?:2(?:0[0-2]|[28]2)|3(?:0[02]|33)|4(?:00|4[24]|65|82)|5(?:00|29|83)|6(?:00|66|82)|777|8(?:00|88)|9(?:00|9[89])))\\\\d{4}|(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[01356]|3[0-24679]|4[167]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[39]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[0-5]|8[056])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[0179]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[08]|3[0-289]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01579]|5[12469]|7[0-389]|8[04-69]))[2-9]\\\\d{6}\"],[\"\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\"]]],\"UY\":[\"598\",\"0(?:0|1[3-9]\\\\d)\",\"4\\\\d{9}|[249]\\\\d{7}|(?:[49]\\\\d|80)\\\\d{5}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"405|8|90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[24]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"00\",\" int. \"],\"UZ\":[\"998\",\"810\",\"(?:33|55|[679]\\\\d|88)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[35-9]\"],\"8 $1\"]],\"8\",0,0,0,0,0,0,\"8~10\"],\"VA\":[\"39\",\"00\",\"0\\\\d{5,10}|3[0-8]\\\\d{7,10}|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?|(?:1\\\\d|39)\\\\d{7,8}\",[6,7,8,9,10,11],0,0,0,0,0,0,\"06698\"],\"VC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|784|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-7]\\\\d{6})$\",\"784$1\",0,\"784\"],\"VE\":[\"58\",\"00\",\"[68]00\\\\d{7}|(?:[24]\\\\d|[59]0)\\\\d{8}\",[10],[[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"[24-689]\"],\"0$1\"]],\"0\"],\"VG\":[\"1\",\"011\",\"(?:284|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-578]\\\\d{6})$\",\"284$1\",0,\"284\"],\"VI\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:34|90)0\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"340$1\",0,\"340\"],\"VN\":[\"84\",\"00\",\"[12]\\\\d{9}|[135-9]\\\\d{8}|[16]\\\\d{7}|[16-8]\\\\d{6}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"1\"],0,1],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[69]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[3578]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[48]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\",1]],\"0\"],\"VU\":[\"678\",\"00\",\"[57-9]\\\\d{6}|(?:[238]\\\\d|48)\\\\d{3}\",[5,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[57-9]\"]]]],\"WF\":[\"681\",\"00\",\"(?:40|72)\\\\d{4}|8\\\\d{5}(?:\\\\d{3})?\",[6,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[478]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]]],\"WS\":[\"685\",\"0\",\"(?:[2-6]|8\\\\d{5})\\\\d{4}|[78]\\\\d{6}|[68]\\\\d{5}\",[5,6,7,10],[[\"(\\\\d{5})\",\"$1\",[\"[2-5]|6[1-9]\"]],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[68]\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]]],\"XK\":[\"383\",\"00\",\"[23]\\\\d{7,8}|(?:4\\\\d\\\\d|[89]00)\\\\d{5}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[23]\"],\"0$1\"]],\"0\"],\"YE\":[\"967\",\"00\",\"(?:1|7\\\\d)\\\\d{7}|[1-7]\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-6]|7[24-68]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"YT\":[\"262\",\"00\",\"80\\\\d{7}|(?:26|63)9\\\\d{6}\",[9],0,\"0\",0,0,0,0,\"269|63\"],\"ZA\":[\"27\",\"00\",\"[1-79]\\\\d{8}|8\\\\d{4,9}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"860\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"ZM\":[\"260\",\"00\",\"(?:63|80)0\\\\d{6}|(?:21|[79]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[28]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[79]\"],\"0$1\"]],\"0\"],\"ZW\":[\"263\",\"00\",\"2(?:[0-57-9]\\\\d{6,8}|6[0-24-9]\\\\d{6,7})|[38]\\\\d{9}|[35-8]\\\\d{8}|[3-6]\\\\d{7}|[1-689]\\\\d{6}|[1-3569]\\\\d{5}|[1356]\\\\d{4}\",[5,6,7,8,9,10],[[\"(\\\\d{3})(\\\\d{3,5})\",\"$1 $2\",[\"2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"80\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2\",\"2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)\",\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"29[013-9]|39|54\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,5})\",\"$1 $2\",[\"(?:25|54)8\",\"258|5483\"],\"0$1\"]],\"0\"]},\"nonGeographic\":{\"800\":[\"800\",0,\"(?:005|[1-9]\\\\d\\\\d)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"\\\\d\"]]],0,0,0,0,0,0,[0,0,[\"(?:005|[1-9]\\\\d\\\\d)\\\\d{5}\"]]],\"808\":[\"808\",0,\"[1-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[1-9]\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,0,[\"[1-9]\\\\d{7}\"]]],\"870\":[\"870\",0,\"7\\\\d{11}|[35-7]\\\\d{8}\",[9,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[35-7]\"]]],0,0,0,0,0,0,[0,[\"(?:[356]|774[45])\\\\d{8}|7[6-8]\\\\d{7}\"]]],\"878\":[\"878\",0,\"10\\\\d{10}\",[12],[[\"(\\\\d{2})(\\\\d{5})(\\\\d{5})\",\"$1 $2 $3\",[\"1\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"10\\\\d{10}\"]]],\"881\":[\"881\",0,\"[0-36-9]\\\\d{8}\",[9],[[\"(\\\\d)(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"[0-36-9]\"]]],0,0,0,0,0,0,[0,[\"[0-36-9]\\\\d{8}\"]]],\"882\":[\"882\",0,\"[13]\\\\d{6}(?:\\\\d{2,5})?|285\\\\d{9}|(?:[19]\\\\d|49)\\\\d{6}\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"16|342\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"4\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[19]\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"3[23]\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"34[57]\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"34\"]],[\"(\\\\d{2})(\\\\d{4,5})(\\\\d{5})\",\"$1 $2 $3\",[\"[1-3]\"]]],0,0,0,0,0,0,[0,[\"342\\\\d{4}|(?:337|49)\\\\d{6}|3(?:2|47|7\\\\d{3})\\\\d{7}\",[7,8,9,10,12]],0,0,0,0,0,0,[\"1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\\\d{4}|6\\\\d{5,10})|(?:(?:285\\\\d\\\\d|3(?:45|[69]\\\\d{3}))\\\\d|9[89])\\\\d{6}\"]]],\"883\":[\"883\",0,\"210\\\\d{7}|51\\\\d{7}(?:\\\\d{3})?\",[9,10,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"510\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"510\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"(?:210|51[013]0\\\\d)\\\\d{7}|5100\\\\d{5}\"]]],\"888\":[\"888\",0,\"\\\\d{11}\",[11],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\"]],0,0,0,0,0,0,[0,0,0,0,0,0,[\"\\\\d{11}\"]]],\"979\":[\"979\",0,\"[1359]\\\\d{8}\",[9],[[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1359]\"]]],0,0,0,0,0,0,[0,0,0,[\"[1359]\\\\d{8}\"]]]}}","// Importing from `.json.js` a workaround for a bug in web browsers' \"native\"\r\n// ES6 importing system which is uncapable of importing \"*.json\" files.\r\n// https://github.com/catamphetamine/libphonenumber-js/issues/239\r\nimport metadata from '../metadata.min.json.js'\r\nexport default metadata\r\n\r\nexport function withMetadata(func, _arguments) {\r\n\tvar args = Array.prototype.slice.call(_arguments)\r\n\targs.push(metadata)\r\n\treturn func.apply(this, args)\r\n}","import mergeArrays from './mergeArrays'\r\n\r\nexport default function checkNumberLength(nationalNumber, metadata) {\r\n\treturn checkNumberLengthForType(nationalNumber, undefined, metadata)\r\n}\r\n\r\n// Checks whether a number is possible for the country based on its length.\r\n// Should only be called for the \"new\" metadata which has \"possible lengths\".\r\nexport function checkNumberLengthForType(nationalNumber, type, metadata) {\r\n\tconst type_info = metadata.type(type)\r\n\r\n\t// There should always be \"\" set for every type element.\r\n\t// This is declared in the XML schema.\r\n\t// For size efficiency, where a sub-description (e.g. fixed-line)\r\n\t// has the same \"\" as the \"general description\", this is missing,\r\n\t// so we fall back to the \"general description\". Where no numbers of the type\r\n\t// exist at all, there is one possible length (-1) which is guaranteed\r\n\t// not to match the length of any real phone number.\r\n\tlet possible_lengths = type_info && type_info.possibleLengths() || metadata.possibleLengths()\r\n\t// let local_lengths = type_info && type.possibleLengthsLocal() || metadata.possibleLengthsLocal()\r\n\r\n\t// Metadata before version `1.0.18` didn't contain `possible_lengths`.\r\n\tif (!possible_lengths) {\r\n\t\treturn 'IS_POSSIBLE'\r\n\t}\r\n\r\n\tif (type === 'FIXED_LINE_OR_MOBILE') {\r\n\t\t// No such country in metadata.\r\n\t\t/* istanbul ignore next */\r\n\t\tif (!metadata.type('FIXED_LINE')) {\r\n\t\t\t// The rare case has been encountered where no fixedLine data is available\r\n\t\t\t// (true for some non-geographic entities), so we just check mobile.\r\n\t\t\treturn checkNumberLengthForType(nationalNumber, 'MOBILE', metadata)\r\n\t\t}\r\n\r\n\t\tconst mobile_type = metadata.type('MOBILE')\r\n\t\tif (mobile_type) {\r\n\t\t\t// Merge the mobile data in if there was any. \"Concat\" creates a new\r\n\t\t\t// array, it doesn't edit possible_lengths in place, so we don't need a copy.\r\n\t\t\t// Note that when adding the possible lengths from mobile, we have\r\n\t\t\t// to again check they aren't empty since if they are this indicates\r\n\t\t\t// they are the same as the general desc and should be obtained from there.\r\n\t\t\tpossible_lengths = mergeArrays(possible_lengths, mobile_type.possibleLengths())\r\n\t\t\t// The current list is sorted; we need to merge in the new list and\r\n\t\t\t// re-sort (duplicates are okay). Sorting isn't so expensive because\r\n\t\t\t// the lists are very small.\r\n\r\n\t\t\t// if (local_lengths) {\r\n\t\t\t// \tlocal_lengths = mergeArrays(local_lengths, mobile_type.possibleLengthsLocal())\r\n\t\t\t// } else {\r\n\t\t\t// \tlocal_lengths = mobile_type.possibleLengthsLocal()\r\n\t\t\t// }\r\n\t\t}\r\n\t}\r\n\t// If the type doesn't exist then return 'INVALID_LENGTH'.\r\n\telse if (type && !type_info) {\r\n\t\treturn 'INVALID_LENGTH'\r\n\t}\r\n\r\n\tconst actual_length = nationalNumber.length\r\n\r\n\t// In `libphonenumber-js` all \"local-only\" formats are dropped for simplicity.\r\n\t// // This is safe because there is never an overlap beween the possible lengths\r\n\t// // and the local-only lengths; this is checked at build time.\r\n\t// if (local_lengths && local_lengths.indexOf(nationalNumber.length) >= 0)\r\n\t// {\r\n\t// \treturn 'IS_POSSIBLE_LOCAL_ONLY'\r\n\t// }\r\n\r\n\tconst minimum_length = possible_lengths[0]\r\n\r\n\tif (minimum_length === actual_length) {\r\n\t\treturn 'IS_POSSIBLE'\r\n\t}\r\n\r\n\tif (minimum_length > actual_length) {\r\n\t\treturn 'TOO_SHORT'\r\n\t}\r\n\r\n\tif (possible_lengths[possible_lengths.length - 1] < actual_length) {\r\n\t\treturn 'TOO_LONG'\r\n\t}\r\n\r\n\t// We skip the first element since we've already checked it.\r\n\treturn possible_lengths.indexOf(actual_length, 1) >= 0 ? 'IS_POSSIBLE' : 'INVALID_LENGTH'\r\n}","/**\r\n * Merges two arrays.\r\n * @param {*} a\r\n * @param {*} b\r\n * @return {*}\r\n */\r\nexport default function mergeArrays(a, b) {\r\n\tconst merged = a.slice()\r\n\r\n\tfor (const element of b) {\r\n\t\tif (a.indexOf(element) < 0) {\r\n\t\t\tmerged.push(element)\r\n\t\t}\r\n\t}\r\n\r\n\treturn merged.sort((a, b) => a - b)\r\n\r\n\t// ES6 version, requires Set polyfill.\r\n\t// let merged = new Set(a)\r\n\t// for (const element of b) {\r\n\t// \tmerged.add(i)\r\n\t// }\r\n\t// return Array.from(merged).sort((a, b) => a - b)\r\n}","import { Integration, WrappedFunction } from '@sentry/types';\nimport { getOriginalFunction } from '@sentry/utils';\n\nlet originalFunctionToString: () => void;\n\n/** Patch toString calls to return proper name for wrapped functions */\nexport class FunctionToString implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'FunctionToString';\n\n /**\n * @inheritDoc\n */\n public name: string = FunctionToString.id;\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n originalFunctionToString = Function.prototype.toString;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Function.prototype.toString = function (this: WrappedFunction, ...args: any[]): string {\n const context = getOriginalFunction(this) || this;\n return originalFunctionToString.apply(context, args);\n };\n }\n}\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/typedef */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isThenable } from './is';\n\n/** SyncPromise internal states */\nconst enum States {\n /** Pending */\n PENDING = 0,\n /** Resolved / OK */\n RESOLVED = 1,\n /** Rejected / Error */\n REJECTED = 2,\n}\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nexport function resolvedSyncPromise(value: T | PromiseLike): PromiseLike {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nexport function rejectedSyncPromise(reason?: any): PromiseLike {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise implements PromiseLike {\n private _state: States = States.PENDING;\n private _handlers: Array<[boolean, (value: T) => void, (reason: any) => any]> = [];\n private _value: any;\n\n public constructor(\n executor: (resolve: (value?: T | PromiseLike | null) => void, reject: (reason?: any) => void) => void,\n ) {\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n public then(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike) | null,\n ): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n this._handlers.push([\n false,\n result => {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result as any);\n } else {\n try {\n resolve(onfulfilled(result));\n } catch (e) {\n reject(e);\n }\n }\n },\n reason => {\n if (!onrejected) {\n reject(reason);\n } else {\n try {\n resolve(onrejected(reason));\n } catch (e) {\n reject(e);\n }\n }\n },\n ]);\n this._executeHandlers();\n });\n }\n\n /** JSDoc */\n public catch(\n onrejected?: ((reason: any) => TResult | PromiseLike) | null,\n ): PromiseLike {\n return this.then(val => val, onrejected);\n }\n\n /** JSDoc */\n public finally(onfinally?: (() => void) | null): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n let val: TResult | any;\n let isRejected: boolean;\n\n return this.then(\n value => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n reason => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n },\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n\n resolve(val as unknown as any);\n });\n });\n }\n\n /** JSDoc */\n private readonly _resolve = (value?: T | PromiseLike | null) => {\n this._setResult(States.RESOLVED, value);\n };\n\n /** JSDoc */\n private readonly _reject = (reason?: any) => {\n this._setResult(States.REJECTED, reason);\n };\n\n /** JSDoc */\n private readonly _setResult = (state: States, value?: T | PromiseLike | any) => {\n if (this._state !== States.PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n void (value as PromiseLike).then(this._resolve, this._reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };\n\n /** JSDoc */\n private readonly _executeHandlers = () => {\n if (this._state === States.PENDING) {\n return;\n }\n\n const cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler[0]) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler[1](this._value as unknown as any);\n }\n\n if (this._state === States.REJECTED) {\n handler[2](this._value);\n }\n\n handler[0] = true;\n });\n };\n}\n\nexport { SyncPromise };\n","/* eslint-disable max-lines */\nimport {\n Breadcrumb,\n CaptureContext,\n Context,\n Contexts,\n Event,\n EventHint,\n EventProcessor,\n Extra,\n Extras,\n Primitive,\n RequestSession,\n Scope as ScopeInterface,\n ScopeContext,\n Severity,\n Span,\n Transaction,\n User,\n} from '@sentry/types';\nimport { dateTimestampInSeconds, getGlobalObject, isPlainObject, isThenable, SyncPromise } from '@sentry/utils';\n\nimport { Session } from './session';\n\n/**\n * Absolute maximum number of breadcrumbs added to an event.\n * The `maxBreadcrumbs` option cannot be higher than this value.\n */\nconst MAX_BREADCRUMBS = 100;\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nexport class Scope implements ScopeInterface {\n /** Flag if notifying is happening. */\n protected _notifyingListeners: boolean = false;\n\n /** Callback for client to receive scope changes. */\n protected _scopeListeners: Array<(scope: Scope) => void> = [];\n\n /** Callback list that will be called after {@link applyToEvent}. */\n protected _eventProcessors: EventProcessor[] = [];\n\n /** Array of breadcrumbs. */\n protected _breadcrumbs: Breadcrumb[] = [];\n\n /** User */\n protected _user: User = {};\n\n /** Tags */\n protected _tags: { [key: string]: Primitive } = {};\n\n /** Extra */\n protected _extra: Extras = {};\n\n /** Contexts */\n protected _contexts: Contexts = {};\n\n /** Fingerprint */\n protected _fingerprint?: string[];\n\n /** Severity */\n protected _level?: Severity;\n\n /** Transaction Name */\n protected _transactionName?: string;\n\n /** Span */\n protected _span?: Span;\n\n /** Session */\n protected _session?: Session;\n\n /** Request Mode Session Status */\n protected _requestSession?: RequestSession;\n\n /**\n * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n * sent to Sentry\n */\n protected _sdkProcessingMetadata?: { [key: string]: unknown } = {};\n\n /**\n * Inherit values from the parent scope.\n * @param scope to clone.\n */\n public static clone(scope?: Scope): Scope {\n const newScope = new Scope();\n if (scope) {\n newScope._breadcrumbs = [...scope._breadcrumbs];\n newScope._tags = { ...scope._tags };\n newScope._extra = { ...scope._extra };\n newScope._contexts = { ...scope._contexts };\n newScope._user = scope._user;\n newScope._level = scope._level;\n newScope._span = scope._span;\n newScope._session = scope._session;\n newScope._transactionName = scope._transactionName;\n newScope._fingerprint = scope._fingerprint;\n newScope._eventProcessors = [...scope._eventProcessors];\n newScope._requestSession = scope._requestSession;\n }\n return newScope;\n }\n\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n public addScopeListener(callback: (scope: Scope) => void): void {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public addEventProcessor(callback: EventProcessor): this {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): this {\n this._user = user || {};\n if (this._session) {\n this._session.update({ user });\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getUser(): User | undefined {\n return this._user;\n }\n\n /**\n * @inheritDoc\n */\n public getRequestSession(): RequestSession | undefined {\n return this._requestSession;\n }\n\n /**\n * @inheritDoc\n */\n public setRequestSession(requestSession?: RequestSession): this {\n this._requestSession = requestSession;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): this {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): this {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): this {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): this {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setFingerprint(fingerprint: string[]): this {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setLevel(level: Severity): this {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTransactionName(name?: string): this {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Can be removed in major version.\n * @deprecated in favor of {@link this.setTransactionName}\n */\n public setTransaction(name?: string): this {\n return this.setTransactionName(name);\n }\n\n /**\n * @inheritDoc\n */\n public setContext(key: string, context: Context | null): this {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts = { ...this._contexts, [key]: context };\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setSpan(span?: Span): this {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSpan(): Span | undefined {\n return this._span;\n }\n\n /**\n * @inheritDoc\n */\n public getTransaction(): Transaction | undefined {\n // Often, this span (if it exists at all) will be a transaction, but it's not guaranteed to be. Regardless, it will\n // have a pointer to the currently-active transaction.\n const span = this.getSpan();\n return span && span.transaction;\n }\n\n /**\n * @inheritDoc\n */\n public setSession(session?: Session): this {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSession(): Session | undefined {\n return this._session;\n }\n\n /**\n * @inheritDoc\n */\n public update(captureContext?: CaptureContext): this {\n if (!captureContext) {\n return this;\n }\n\n if (typeof captureContext === 'function') {\n const updatedScope = (captureContext as (scope: T) => T)(this);\n return updatedScope instanceof Scope ? updatedScope : this;\n }\n\n if (captureContext instanceof Scope) {\n this._tags = { ...this._tags, ...captureContext._tags };\n this._extra = { ...this._extra, ...captureContext._extra };\n this._contexts = { ...this._contexts, ...captureContext._contexts };\n if (captureContext._user && Object.keys(captureContext._user).length) {\n this._user = captureContext._user;\n }\n if (captureContext._level) {\n this._level = captureContext._level;\n }\n if (captureContext._fingerprint) {\n this._fingerprint = captureContext._fingerprint;\n }\n if (captureContext._requestSession) {\n this._requestSession = captureContext._requestSession;\n }\n } else if (isPlainObject(captureContext)) {\n // eslint-disable-next-line no-param-reassign\n captureContext = captureContext as ScopeContext;\n this._tags = { ...this._tags, ...captureContext.tags };\n this._extra = { ...this._extra, ...captureContext.extra };\n this._contexts = { ...this._contexts, ...captureContext.contexts };\n if (captureContext.user) {\n this._user = captureContext.user;\n }\n if (captureContext.level) {\n this._level = captureContext.level;\n }\n if (captureContext.fingerprint) {\n this._fingerprint = captureContext.fingerprint;\n }\n if (captureContext.requestSession) {\n this._requestSession = captureContext.requestSession;\n }\n }\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clear(): this {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._requestSession = undefined;\n this._span = undefined;\n this._session = undefined;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this {\n const maxCrumbs = typeof maxBreadcrumbs === 'number' ? Math.min(maxBreadcrumbs, MAX_BREADCRUMBS) : MAX_BREADCRUMBS;\n\n // No data has been changed, so don't notify scope listeners\n if (maxCrumbs <= 0) {\n return this;\n }\n\n const mergedBreadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n };\n this._breadcrumbs = [...this._breadcrumbs, mergedBreadcrumb].slice(-maxCrumbs);\n this._notifyScopeListeners();\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clearBreadcrumbs(): this {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Applies the current context and fingerprint to the event.\n * Note that breadcrumbs will be added by the client.\n * Also if the event has already breadcrumbs on it, we do not merge them.\n * @param event Event\n * @param hint May contain additional information about the original exception.\n * @hidden\n */\n public applyToEvent(event: Event, hint?: EventHint): PromiseLike {\n if (this._extra && Object.keys(this._extra).length) {\n event.extra = { ...this._extra, ...event.extra };\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = { ...this._tags, ...event.tags };\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = { ...this._user, ...event.user };\n }\n if (this._contexts && Object.keys(this._contexts).length) {\n event.contexts = { ...this._contexts, ...event.contexts };\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transactionName) {\n event.transaction = this._transactionName;\n }\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relies on that.\n if (this._span) {\n event.contexts = { trace: this._span.getTraceContext(), ...event.contexts };\n const transactionName = this._span.transaction && this._span.transaction.name;\n if (transactionName) {\n event.tags = { transaction: transactionName, ...event.tags };\n }\n }\n\n this._applyFingerprint(event);\n\n event.breadcrumbs = [...(event.breadcrumbs || []), ...this._breadcrumbs];\n event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n\n event.sdkProcessingMetadata = this._sdkProcessingMetadata;\n\n return this._notifyEventProcessors([...getGlobalEventProcessors(), ...this._eventProcessors], event, hint);\n }\n\n /**\n * Add data which will be accessible during event processing but won't get sent to Sentry\n */\n public setSDKProcessingMetadata(newData: { [key: string]: unknown }): this {\n this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n return this;\n }\n\n /**\n * This will be called after {@link applyToEvent} is finished.\n */\n protected _notifyEventProcessors(\n processors: EventProcessor[],\n event: Event | null,\n hint?: EventHint,\n index: number = 0,\n ): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n const processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n const result = processor({ ...event }, hint) as Event | null;\n if (isThenable(result)) {\n void (result as PromiseLike)\n .then(final => this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n void this._notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n }\n\n /**\n * This will be called on every set call.\n */\n protected _notifyScopeListeners(): void {\n // We need this check for this._notifyingListeners to be able to work on scope during updates\n // If this check is not here we'll produce endless recursion when something is done with the scope\n // during the callback.\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n }\n }\n\n /**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\n private _applyFingerprint(event: Event): void {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint\n ? Array.isArray(event.fingerprint)\n ? event.fingerprint\n : [event.fingerprint]\n : [];\n\n // If we have something on the scope, then merge it with event\n if (this._fingerprint) {\n event.fingerprint = event.fingerprint.concat(this._fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n }\n}\n\n/**\n * Returns the global event processors.\n */\nfunction getGlobalEventProcessors(): EventProcessor[] {\n /* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access */\n const global = getGlobalObject();\n global.__SENTRY__ = global.__SENTRY__ || {};\n global.__SENTRY__.globalEventProcessors = global.__SENTRY__.globalEventProcessors || [];\n return global.__SENTRY__.globalEventProcessors;\n /* eslint-enable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access */\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nexport function addGlobalEventProcessor(callback: EventProcessor): void {\n getGlobalEventProcessors().push(callback);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Event, Exception, Mechanism, StackFrame } from '@sentry/types';\n\nimport { getGlobalObject } from './global';\nimport { addNonEnumerableProperty } from './object';\nimport { snipLine } from './string';\n\n/**\n * Extended Window interface that allows for Crypto API usage in IE browsers\n */\ninterface MsCryptoWindow extends Window {\n msCrypto?: Crypto;\n}\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4(): string {\n const global = getGlobalObject() as MsCryptoWindow;\n const crypto = global.crypto || global.msCrypto;\n\n if (!(crypto === void 0) && crypto.getRandomValues) {\n // Use window.crypto API if available\n const arr = new Uint16Array(8);\n crypto.getRandomValues(arr);\n\n // set 4 in byte 7\n // eslint-disable-next-line no-bitwise\n arr[3] = (arr[3] & 0xfff) | 0x4000;\n // set 2 most significant bits of byte 9 to '10'\n // eslint-disable-next-line no-bitwise\n arr[4] = (arr[4] & 0x3fff) | 0x8000;\n\n const pad = (num: number): string => {\n let v = num.toString(16);\n while (v.length < 4) {\n v = `0${v}`;\n }\n return v;\n };\n\n return (\n pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7])\n );\n }\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, c => {\n // eslint-disable-next-line no-bitwise\n const r = (Math.random() * 16) | 0;\n // eslint-disable-next-line no-bitwise\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\n/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nexport function parseUrl(url: string): {\n host?: string;\n path?: string;\n protocol?: string;\n relative?: string;\n} {\n if (!url) {\n return {};\n }\n\n const match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n if (!match) {\n return {};\n }\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n const query = match[6] || '';\n const fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n relative: match[5] + query + fragment, // everything minus origin\n };\n}\n\nfunction getFirstException(event: Event): Exception | undefined {\n return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nexport function getEventDescription(event: Event): string {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n const firstException = getFirstException(event);\n if (firstException) {\n if (firstException.type && firstException.value) {\n return `${firstException.type}: ${firstException.value}`;\n }\n return firstException.type || firstException.value || eventId || '';\n }\n return eventId || '';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nexport function addExceptionTypeValue(event: Event, value?: string, type?: string): void {\n const exception = (event.exception = event.exception || {});\n const values = (exception.values = exception.values || []);\n const firstException = (values[0] = values[0] || {});\n if (!firstException.value) {\n firstException.value = value || '';\n }\n if (!firstException.type) {\n firstException.type = type || 'Error';\n }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nexport function addExceptionMechanism(event: Event, newMechanism?: Partial): void {\n const firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n const defaultMechanism = { type: 'generic', handled: true };\n const currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n const mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n firstException.mechanism.data = mergedData;\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP =\n /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\ninterface SemVer {\n major?: number;\n minor?: number;\n patch?: number;\n prerelease?: string;\n buildmetadata?: string;\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input: string): SemVer {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = parseInt(match[1], 10);\n const minor = parseInt(match[2], 10);\n const patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\nconst defaultRetryAfter = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param now current unix timestamp\n * @param header string representation of 'Retry-After' header\n */\nexport function parseRetryAfterHeader(now: number, header?: string | number | null): number {\n if (!header) {\n return defaultRetryAfter;\n }\n\n const headerDelay = parseInt(`${header}`, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n\n const headerDate = Date.parse(`${header}`);\n if (!isNaN(headerDate)) {\n return headerDate - now;\n }\n\n return defaultRetryAfter;\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nexport function addContextToFrame(lines: string[], frame: StackFrame, linesOfContext: number = 5): void {\n const lineno = frame.lineno || 0;\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines, lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line: string) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line: string) => snipLine(line, 0));\n}\n\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nexport function stripUrlQueryAndFragment(urlPath: string): string {\n // eslint-disable-next-line no-useless-escape\n return urlPath.split(/[\\?#]/, 1)[0];\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nexport function checkOrSetAlreadyCaught(exception: unknown): boolean {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (exception && (exception as any).__sentry_captured__) {\n return true;\n }\n\n try {\n // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n // `ExtraErrorData` integration\n addNonEnumerableProperty(exception, '__sentry_captured__', true);\n } catch (err) {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { WrappedFunction } from '@sentry/types';\n\nimport { getGlobalObject } from './global';\n\n// TODO: Implement different loggers for different environments\nconst global = getGlobalObject();\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\n/** JSDoc */\ninterface ExtensibleConsole extends Console {\n [key: string]: any;\n}\n\n/**\n * Temporarily unwrap `console.log` and friends in order to perform the given callback using the original methods.\n * Restores wrapping after the callback completes.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nexport function consoleSandbox(callback: () => any): any {\n const global = getGlobalObject();\n const levels = ['debug', 'info', 'warn', 'error', 'log', 'assert'];\n\n if (!('console' in global)) {\n return callback();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const originalConsole = (global as any).console as ExtensibleConsole;\n const wrappedLevels: { [key: string]: any } = {};\n\n // Restore all wrapped console methods\n levels.forEach(level => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (level in (global as any).console && (originalConsole[level] as WrappedFunction).__sentry_original__) {\n wrappedLevels[level] = originalConsole[level] as WrappedFunction;\n originalConsole[level] = (originalConsole[level] as WrappedFunction).__sentry_original__;\n }\n });\n\n // Perform callback manipulations\n const result = callback();\n\n // Revert restoration to wrapped state\n Object.keys(wrappedLevels).forEach(level => {\n originalConsole[level] = wrappedLevels[level];\n });\n\n return result;\n}\n\n/** JSDoc */\nclass Logger {\n /** JSDoc */\n private _enabled: boolean;\n\n /** JSDoc */\n public constructor() {\n this._enabled = false;\n }\n\n /** JSDoc */\n public disable(): void {\n this._enabled = false;\n }\n\n /** JSDoc */\n public enable(): void {\n this._enabled = true;\n }\n\n /** JSDoc */\n public log(...args: any[]): void {\n if (!this._enabled) {\n return;\n }\n consoleSandbox(() => {\n global.console.log(`${PREFIX}[Log]: ${args.join(' ')}`);\n });\n }\n\n /** JSDoc */\n public warn(...args: any[]): void {\n if (!this._enabled) {\n return;\n }\n consoleSandbox(() => {\n global.console.warn(`${PREFIX}[Warn]: ${args.join(' ')}`);\n });\n }\n\n /** JSDoc */\n public error(...args: any[]): void {\n if (!this._enabled) {\n return;\n }\n consoleSandbox(() => {\n global.console.error(`${PREFIX}[Error]: ${args.join(' ')}`);\n });\n }\n}\n\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nglobal.__SENTRY__ = global.__SENTRY__ || {};\nconst logger = (global.__SENTRY__.logger as Logger) || (global.__SENTRY__.logger = new Logger());\n\nexport { logger };\n","import { Session as SessionInterface, SessionContext, SessionStatus } from '@sentry/types';\nimport { dropUndefinedKeys, timestampInSeconds, uuid4 } from '@sentry/utils';\n\n/**\n * @inheritdoc\n */\nexport class Session implements SessionInterface {\n public userAgent?: string;\n public errors: number = 0;\n public release?: string;\n public sid: string = uuid4();\n public did?: string;\n public timestamp: number;\n public started: number;\n public duration?: number = 0;\n public status: SessionStatus = 'ok';\n public environment?: string;\n public ipAddress?: string;\n public init: boolean = true;\n public ignoreDuration: boolean = false;\n\n public constructor(context?: Omit) {\n // Both timestamp and started are in seconds since the UNIX epoch.\n const startingTime = timestampInSeconds();\n this.timestamp = startingTime;\n this.started = startingTime;\n if (context) {\n this.update(context);\n }\n }\n\n /** JSDoc */\n // eslint-disable-next-line complexity\n public update(context: SessionContext = {}): void {\n if (context.user) {\n if (!this.ipAddress && context.user.ip_address) {\n this.ipAddress = context.user.ip_address;\n }\n\n if (!this.did && !context.did) {\n this.did = context.user.id || context.user.email || context.user.username;\n }\n }\n\n this.timestamp = context.timestamp || timestampInSeconds();\n if (context.ignoreDuration) {\n this.ignoreDuration = context.ignoreDuration;\n }\n if (context.sid) {\n // Good enough uuid validation. — Kamil\n this.sid = context.sid.length === 32 ? context.sid : uuid4();\n }\n if (context.init !== undefined) {\n this.init = context.init;\n }\n if (!this.did && context.did) {\n this.did = `${context.did}`;\n }\n if (typeof context.started === 'number') {\n this.started = context.started;\n }\n if (this.ignoreDuration) {\n this.duration = undefined;\n } else if (typeof context.duration === 'number') {\n this.duration = context.duration;\n } else {\n const duration = this.timestamp - this.started;\n this.duration = duration >= 0 ? duration : 0;\n }\n if (context.release) {\n this.release = context.release;\n }\n if (context.environment) {\n this.environment = context.environment;\n }\n if (!this.ipAddress && context.ipAddress) {\n this.ipAddress = context.ipAddress;\n }\n if (!this.userAgent && context.userAgent) {\n this.userAgent = context.userAgent;\n }\n if (typeof context.errors === 'number') {\n this.errors = context.errors;\n }\n if (context.status) {\n this.status = context.status;\n }\n }\n\n /** JSDoc */\n public close(status?: Exclude): void {\n if (status) {\n this.update({ status });\n } else if (this.status === 'ok') {\n this.update({ status: 'exited' });\n } else {\n this.update();\n }\n }\n\n /** JSDoc */\n public toJSON(): {\n init: boolean;\n sid: string;\n did?: string;\n timestamp: string;\n started: string;\n duration?: number;\n status: SessionStatus;\n errors: number;\n attrs?: {\n release?: string;\n environment?: string;\n user_agent?: string;\n ip_address?: string;\n };\n } {\n return dropUndefinedKeys({\n sid: `${this.sid}`,\n init: this.init,\n // Make sure that sec is converted to ms for date constructor\n started: new Date(this.started * 1000).toISOString(),\n timestamp: new Date(this.timestamp * 1000).toISOString(),\n status: this.status,\n errors: this.errors,\n did: typeof this.did === 'number' || typeof this.did === 'string' ? `${this.did}` : undefined,\n duration: this.duration,\n attrs: {\n release: this.release,\n environment: this.environment,\n ip_address: this.ipAddress,\n user_agent: this.userAgent,\n },\n });\n }\n}\n","/* eslint-disable max-lines */\nimport {\n Breadcrumb,\n BreadcrumbHint,\n Client,\n CustomSamplingContext,\n Event,\n EventHint,\n Extra,\n Extras,\n Hub as HubInterface,\n Integration,\n IntegrationClass,\n Primitive,\n SessionContext,\n Severity,\n Span,\n SpanContext,\n Transaction,\n TransactionContext,\n User,\n} from '@sentry/types';\nimport { consoleSandbox, dateTimestampInSeconds, getGlobalObject, isNodeEnv, logger, uuid4 } from '@sentry/utils';\n\nimport { Scope } from './scope';\nimport { Session } from './session';\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nexport const API_VERSION = 4;\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\n/**\n * A layer in the process stack.\n * @hidden\n */\nexport interface Layer {\n client?: Client;\n scope?: Scope;\n}\n\n/**\n * An object that contains a hub and maintains a scope stack.\n * @hidden\n */\nexport interface Carrier {\n __SENTRY__?: {\n hub?: Hub;\n /**\n * Extra Hub properties injected by various SDKs\n */\n integrations?: Integration[];\n extensions?: {\n /** Hack to prevent bundlers from breaking our usage of the domain package in the cross-platform Hub package */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n domain?: { [key: string]: any };\n } & {\n /** Extension methods for the hub, which are bound to the current Hub instance */\n // eslint-disable-next-line @typescript-eslint/ban-types\n [key: string]: Function;\n };\n };\n}\n\n/**\n * @hidden\n * @deprecated Can be removed once `Hub.getActiveDomain` is removed.\n */\nexport interface DomainAsCarrier extends Carrier {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n members: { [key: string]: any }[];\n}\n\n/**\n * @inheritDoc\n */\nexport class Hub implements HubInterface {\n /** Is a {@link Layer}[] containing the client and scope */\n private readonly _stack: Layer[] = [{}];\n\n /** Contains the last event id of a captured event. */\n private _lastEventId?: string;\n\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n */\n public constructor(client?: Client, scope: Scope = new Scope(), private readonly _version: number = API_VERSION) {\n this.getStackTop().scope = scope;\n if (client) {\n this.bindClient(client);\n }\n }\n\n /**\n * @inheritDoc\n */\n public isOlderThan(version: number): boolean {\n return this._version < version;\n }\n\n /**\n * @inheritDoc\n */\n public bindClient(client?: Client): void {\n const top = this.getStackTop();\n top.client = client;\n if (client && client.setupIntegrations) {\n client.setupIntegrations();\n }\n }\n\n /**\n * @inheritDoc\n */\n public pushScope(): Scope {\n // We want to clone the content of prev scope\n const scope = Scope.clone(this.getScope());\n this.getStack().push({\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * @inheritDoc\n */\n public popScope(): boolean {\n if (this.getStack().length <= 1) return false;\n return !!this.getStack().pop();\n }\n\n /**\n * @inheritDoc\n */\n public withScope(callback: (scope: Scope) => void): void {\n const scope = this.pushScope();\n try {\n callback(scope);\n } finally {\n this.popScope();\n }\n }\n\n /**\n * @inheritDoc\n */\n public getClient(): C | undefined {\n return this.getStackTop().client as C;\n }\n\n /** Returns the scope of the top stack. */\n public getScope(): Scope | undefined {\n return this.getStackTop().scope;\n }\n\n /** Returns the scope stack for domains or the process. */\n public getStack(): Layer[] {\n return this._stack;\n }\n\n /** Returns the topmost scope layer in the order domain > local > process. */\n public getStackTop(): Layer {\n return this._stack[this._stack.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public captureException(exception: any, hint?: EventHint): string {\n const eventId = (this._lastEventId = uuid4());\n let finalHint = hint;\n\n // If there's no explicit hint provided, mimic the same thing that would happen\n // in the minimal itself to create a consistent behavior.\n // We don't do this in the client, as it's the lowest level API, and doing this,\n // would prevent user from having full control over direct calls.\n if (!hint) {\n let syntheticException: Error;\n try {\n throw new Error('Sentry syntheticException');\n } catch (exception) {\n syntheticException = exception as Error;\n }\n finalHint = {\n originalException: exception,\n syntheticException,\n };\n }\n\n this._invokeClient('captureException', exception, {\n ...finalHint,\n event_id: eventId,\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(message: string, level?: Severity, hint?: EventHint): string {\n const eventId = (this._lastEventId = uuid4());\n let finalHint = hint;\n\n // If there's no explicit hint provided, mimic the same thing that would happen\n // in the minimal itself to create a consistent behavior.\n // We don't do this in the client, as it's the lowest level API, and doing this,\n // would prevent user from having full control over direct calls.\n if (!hint) {\n let syntheticException: Error;\n try {\n throw new Error(message);\n } catch (exception) {\n syntheticException = exception as Error;\n }\n finalHint = {\n originalException: message,\n syntheticException,\n };\n }\n\n this._invokeClient('captureMessage', message, level, {\n ...finalHint,\n event_id: eventId,\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint): string {\n const eventId = uuid4();\n if (event.type !== 'transaction') {\n this._lastEventId = eventId;\n }\n\n this._invokeClient('captureEvent', event, {\n ...hint,\n event_id: eventId,\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public lastEventId(): string | undefined {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void {\n const { scope, client } = this.getStackTop();\n\n if (!scope || !client) return;\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n (client.getOptions && client.getOptions()) || {};\n\n if (maxBreadcrumbs <= 0) return;\n\n const timestamp = dateTimestampInSeconds();\n const mergedBreadcrumb = { timestamp, ...breadcrumb };\n const finalBreadcrumb = beforeBreadcrumb\n ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) as Breadcrumb | null)\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): void {\n const scope = this.getScope();\n if (scope) scope.setUser(user);\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): void {\n const scope = this.getScope();\n if (scope) scope.setTags(tags);\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): void {\n const scope = this.getScope();\n if (scope) scope.setExtras(extras);\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): void {\n const scope = this.getScope();\n if (scope) scope.setTag(key, value);\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): void {\n const scope = this.getScope();\n if (scope) scope.setExtra(key, extra);\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public setContext(name: string, context: { [key: string]: any } | null): void {\n const scope = this.getScope();\n if (scope) scope.setContext(name, context);\n }\n\n /**\n * @inheritDoc\n */\n public configureScope(callback: (scope: Scope) => void): void {\n const { scope, client } = this.getStackTop();\n if (scope && client) {\n callback(scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n public run(callback: (hub: Hub) => void): void {\n const oldHub = makeMain(this);\n try {\n callback(this);\n } finally {\n makeMain(oldHub);\n }\n }\n\n /**\n * @inheritDoc\n */\n public getIntegration(integration: IntegrationClass): T | null {\n const client = this.getClient();\n if (!client) return null;\n try {\n return client.getIntegration(integration);\n } catch (_oO) {\n logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n public startSpan(context: SpanContext): Span {\n return this._callExtensionMethod('startSpan', context);\n }\n\n /**\n * @inheritDoc\n */\n public startTransaction(context: TransactionContext, customSamplingContext?: CustomSamplingContext): Transaction {\n return this._callExtensionMethod('startTransaction', context, customSamplingContext);\n }\n\n /**\n * @inheritDoc\n */\n public traceHeaders(): { [key: string]: string } {\n return this._callExtensionMethod<{ [key: string]: string }>('traceHeaders');\n }\n\n /**\n * @inheritDoc\n */\n public captureSession(endSession: boolean = false): void {\n // both send the update and pull the session from the scope\n if (endSession) {\n return this.endSession();\n }\n\n // only send the update\n this._sendSessionUpdate();\n }\n\n /**\n * @inheritDoc\n */\n public endSession(): void {\n const layer = this.getStackTop();\n const scope = layer && layer.scope;\n const session = scope && scope.getSession();\n if (session) {\n session.close();\n }\n this._sendSessionUpdate();\n\n // the session is over; take it off of the scope\n if (scope) {\n scope.setSession();\n }\n }\n\n /**\n * @inheritDoc\n */\n public startSession(context?: SessionContext): Session {\n const { scope, client } = this.getStackTop();\n const { release, environment } = (client && client.getOptions()) || {};\n\n // Will fetch userAgent if called from browser sdk\n const global = getGlobalObject<{ navigator?: { userAgent?: string } }>();\n const { userAgent } = global.navigator || {};\n\n const session = new Session({\n release,\n environment,\n ...(scope && { user: scope.getUser() }),\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n if (scope) {\n // End existing session if there's one\n const currentSession = scope.getSession && scope.getSession();\n if (currentSession && currentSession.status === 'ok') {\n currentSession.update({ status: 'exited' });\n }\n this.endSession();\n\n // Afterwards we set the new session on the scope\n scope.setSession(session);\n }\n\n return session;\n }\n\n /**\n * Sends the current Session on the scope\n */\n private _sendSessionUpdate(): void {\n const { scope, client } = this.getStackTop();\n if (!scope) return;\n\n const session = scope.getSession && scope.getSession();\n if (session) {\n if (client && client.captureSession) {\n client.captureSession(session);\n }\n }\n }\n\n /**\n * Internal helper function to call a method on the top client if it exists.\n *\n * @param method The method to call on the client.\n * @param args Arguments to pass to the client function.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _invokeClient(method: M, ...args: any[]): void {\n const { scope, client } = this.getStackTop();\n if (client && client[method]) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n (client as any)[method](...args, scope);\n }\n }\n\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-ignore Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _callExtensionMethod(method: string, ...args: any[]): T {\n const carrier = getMainCarrier();\n const sentry = carrier.__SENTRY__;\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n }\n}\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nexport function getMainCarrier(): Carrier {\n const carrier = getGlobalObject();\n carrier.__SENTRY__ = carrier.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return carrier;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n */\nexport function makeMain(hub: Hub): Hub {\n const registry = getMainCarrier();\n const oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n */\nexport function getCurrentHub(): Hub {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n\n // If there's no hub, or its an old API, assign a new one\n if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) {\n setHubOnCarrier(registry, new Hub());\n }\n\n // Prefer domains over global if they are there (applicable only to Node environment)\n if (isNodeEnv()) {\n return getHubFromActiveDomain(registry);\n }\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n\n/**\n * Returns the active domain, if one exists\n * @deprecated No longer used; remove in v7\n * @returns The domain, or undefined if there is no active domain\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getActiveDomain(): DomainAsCarrier | undefined {\n logger.warn('Function `getActiveDomain` is deprecated and will be removed in a future version.');\n\n const sentry = getMainCarrier().__SENTRY__;\n\n return sentry && sentry.extensions && sentry.extensions.domain && sentry.extensions.domain.active;\n}\n\n/**\n * Try to read the hub from an active domain, and fallback to the registry if one doesn't exist\n * @returns discovered hub\n */\nfunction getHubFromActiveDomain(registry: Carrier): Hub {\n try {\n const sentry = getMainCarrier().__SENTRY__;\n const activeDomain = sentry && sentry.extensions && sentry.extensions.domain && sentry.extensions.domain.active;\n\n // If there's no active domain, just return global hub\n if (!activeDomain) {\n return getHubFromCarrier(registry);\n }\n\n // If there's no hub on current domain, or it's an old API, assign a new one\n if (!hasHubOnCarrier(activeDomain) || getHubFromCarrier(activeDomain).isOlderThan(API_VERSION)) {\n const registryHubTopStack = getHubFromCarrier(registry).getStackTop();\n setHubOnCarrier(activeDomain, new Hub(registryHubTopStack.client, Scope.clone(registryHubTopStack.scope)));\n }\n\n // Return hub that lives on a domain\n return getHubFromCarrier(activeDomain);\n } catch (_Oo) {\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n }\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier: Carrier): boolean {\n return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub);\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\nexport function getHubFromCarrier(carrier: Carrier): Hub {\n if (carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub) return carrier.__SENTRY__.hub;\n carrier.__SENTRY__ = carrier.__SENTRY__ || {};\n carrier.__SENTRY__.hub = new Hub();\n return carrier.__SENTRY__.hub;\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\nexport function setHubOnCarrier(carrier: Carrier, hub: Hub): boolean {\n if (!carrier) return false;\n carrier.__SENTRY__ = carrier.__SENTRY__ || {};\n carrier.__SENTRY__.hub = hub;\n return true;\n}\n","/**\n * TODO(v7): Remove this enum and replace with SeverityLevel\n */\nexport enum Severity {\n /** JSDoc */\n Fatal = 'fatal',\n /** JSDoc */\n Error = 'error',\n /** JSDoc */\n Warning = 'warning',\n /** JSDoc */\n Log = 'log',\n /** JSDoc */\n Info = 'info',\n /** JSDoc */\n Debug = 'debug',\n /** JSDoc */\n Critical = 'critical',\n}\n\n// TODO: in v7, these can disappear, because they now also exist in `@sentry/utils`. (Having them there rather than here\n// is nice because then it enforces the idea that only types are exported from `@sentry/types`.)\nexport const SeverityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug', 'critical'] as const;\nexport type SeverityLevel = typeof SeverityLevels[number];\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { Event, Integration, StackFrame } from '@sentry/types';\nimport { getEventDescription, isDebugBuild, isMatchingPattern, logger } from '@sentry/utils';\n\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nconst DEFAULT_IGNORE_ERRORS = [/^Script error\\.?$/, /^Javascript error: Script error\\.? on line 0$/];\n\n/** JSDoc */\ninterface InboundFiltersOptions {\n allowUrls: Array;\n denyUrls: Array;\n ignoreErrors: Array;\n ignoreInternal: boolean;\n\n /** @deprecated use {@link InboundFiltersOptions.allowUrls} instead. */\n whitelistUrls: Array;\n /** @deprecated use {@link InboundFiltersOptions.denyUrls} instead. */\n blacklistUrls: Array;\n}\n\n/** Inbound filters configurable by the user */\nexport class InboundFilters implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'InboundFilters';\n\n /**\n * @inheritDoc\n */\n public name: string = InboundFilters.id;\n\n public constructor(private readonly _options: Partial = {}) {}\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n addGlobalEventProcessor((event: Event) => {\n const hub = getCurrentHub();\n if (!hub) {\n return event;\n }\n const self = hub.getIntegration(InboundFilters);\n if (self) {\n const client = hub.getClient();\n const clientOptions = client ? client.getOptions() : {};\n // This checks prevents most of the occurrences of the bug linked below:\n // https://github.com/getsentry/sentry-javascript/issues/2622\n // The bug is caused by multiple SDK instances, where one is minified and one is using non-mangled code.\n // Unfortunatelly we cannot fix it reliably (thus reserved property in rollup's terser config),\n // as we cannot force people using multiple instances in their apps to sync SDK versions.\n const options = typeof self._mergeOptions === 'function' ? self._mergeOptions(clientOptions) : {};\n if (typeof self._shouldDropEvent !== 'function') {\n return event;\n }\n return self._shouldDropEvent(event, options) ? null : event;\n }\n return event;\n });\n }\n\n /** JSDoc */\n private _shouldDropEvent(event: Event, options: Partial): boolean {\n if (this._isSentryError(event, options)) {\n if (isDebugBuild()) {\n logger.warn(`Event dropped due to being internal Sentry Error.\\nEvent: ${getEventDescription(event)}`);\n }\n return true;\n }\n if (this._isIgnoredError(event, options)) {\n if (isDebugBuild()) {\n logger.warn(\n `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n }\n return true;\n }\n if (this._isDeniedUrl(event, options)) {\n if (isDebugBuild()) {\n logger.warn(\n `Event dropped due to being matched by \\`denyUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${this._getEventFilterUrl(event)}`,\n );\n }\n return true;\n }\n if (!this._isAllowedUrl(event, options)) {\n if (isDebugBuild()) {\n logger.warn(\n `Event dropped due to not being matched by \\`allowUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${this._getEventFilterUrl(event)}`,\n );\n }\n return true;\n }\n return false;\n }\n\n /** JSDoc */\n private _isSentryError(event: Event, options: Partial): boolean {\n if (!options.ignoreInternal) {\n return false;\n }\n\n try {\n // @ts-ignore can't be a sentry error if undefined\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return event.exception.values[0].type === 'SentryError';\n } catch (e) {\n // ignore\n }\n\n return false;\n }\n\n /** JSDoc */\n private _isIgnoredError(event: Event, options: Partial): boolean {\n if (!options.ignoreErrors || !options.ignoreErrors.length) {\n return false;\n }\n\n return this._getPossibleEventMessages(event).some(message =>\n // Not sure why TypeScript complains here...\n (options.ignoreErrors as Array).some(pattern => isMatchingPattern(message, pattern)),\n );\n }\n\n /** JSDoc */\n private _isDeniedUrl(event: Event, options: Partial): boolean {\n // TODO: Use Glob instead?\n if (!options.denyUrls || !options.denyUrls.length) {\n return false;\n }\n const url = this._getEventFilterUrl(event);\n return !url ? false : options.denyUrls.some(pattern => isMatchingPattern(url, pattern));\n }\n\n /** JSDoc */\n private _isAllowedUrl(event: Event, options: Partial): boolean {\n // TODO: Use Glob instead?\n if (!options.allowUrls || !options.allowUrls.length) {\n return true;\n }\n const url = this._getEventFilterUrl(event);\n return !url ? true : options.allowUrls.some(pattern => isMatchingPattern(url, pattern));\n }\n\n /** JSDoc */\n private _mergeOptions(clientOptions: Partial = {}): Partial {\n return {\n allowUrls: [\n // eslint-disable-next-line deprecation/deprecation\n ...(this._options.whitelistUrls || []),\n ...(this._options.allowUrls || []),\n // eslint-disable-next-line deprecation/deprecation\n ...(clientOptions.whitelistUrls || []),\n ...(clientOptions.allowUrls || []),\n ],\n denyUrls: [\n // eslint-disable-next-line deprecation/deprecation\n ...(this._options.blacklistUrls || []),\n ...(this._options.denyUrls || []),\n // eslint-disable-next-line deprecation/deprecation\n ...(clientOptions.blacklistUrls || []),\n ...(clientOptions.denyUrls || []),\n ],\n ignoreErrors: [\n ...(this._options.ignoreErrors || []),\n ...(clientOptions.ignoreErrors || []),\n ...DEFAULT_IGNORE_ERRORS,\n ],\n ignoreInternal: typeof this._options.ignoreInternal !== 'undefined' ? this._options.ignoreInternal : true,\n };\n }\n\n /** JSDoc */\n private _getPossibleEventMessages(event: Event): string[] {\n if (event.message) {\n return [event.message];\n }\n if (event.exception) {\n try {\n const { type = '', value = '' } = (event.exception.values && event.exception.values[0]) || {};\n return [`${value}`, `${type}: ${value}`];\n } catch (oO) {\n if (isDebugBuild()) {\n logger.error(`Cannot extract message for event ${getEventDescription(event)}`);\n }\n return [];\n }\n }\n return [];\n }\n\n /** JSDoc */\n private _getLastValidUrl(frames: StackFrame[] = []): string | null {\n for (let i = frames.length - 1; i >= 0; i--) {\n const frame = frames[i];\n\n if (frame && frame.filename !== '' && frame.filename !== '[native code]') {\n return frame.filename || null;\n }\n }\n\n return null;\n }\n\n /** JSDoc */\n private _getEventFilterUrl(event: Event): string | null {\n try {\n if (event.stacktrace) {\n return this._getLastValidUrl(event.stacktrace.frames);\n }\n let frames;\n try {\n // @ts-ignore we only care about frames if the whole thing here is defined\n frames = event.exception.values[0].stacktrace.frames;\n } catch (e) {\n // ignore\n }\n return frames ? this._getLastValidUrl(frames) : null;\n } catch (oO) {\n if (isDebugBuild()) {\n logger.error(`Cannot extract url for event ${getEventDescription(event)}`);\n }\n return null;\n }\n }\n}\n","import { isDebugBuild } from './env';\nimport { getGlobalObject } from './global';\nimport { logger } from './logger';\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent(): boolean {\n try {\n new ErrorEvent('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMError(): boolean {\n try {\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-ignore It really needs 1 argument, not 0.\n new DOMError('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMException(): boolean {\n try {\n new DOMException('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsFetch(): boolean {\n if (!('fetch' in getGlobalObject())) {\n return false;\n }\n\n try {\n new Headers();\n new Request('');\n new Response();\n return true;\n } catch (e) {\n return false;\n }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isNativeFetch(func: Function): boolean {\n return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nexport function supportsNativeFetch(): boolean {\n if (!supportsFetch()) {\n return false;\n }\n\n const global = getGlobalObject();\n\n // Fast path to avoid DOM I/O\n // eslint-disable-next-line @typescript-eslint/unbound-method\n if (isNativeFetch(global.fetch)) {\n return true;\n }\n\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n let result = false;\n const doc = global.document;\n // eslint-disable-next-line deprecation/deprecation\n if (doc && typeof (doc.createElement as unknown) === `function`) {\n try {\n const sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n result = isNativeFetch(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n } catch (err) {\n if (isDebugBuild()) {\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n }\n\n return result;\n}\n\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReportingObserver(): boolean {\n return 'ReportingObserver' in getGlobalObject();\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReferrerPolicy(): boolean {\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n // (see https://caniuse.com/#feat=referrer-policy),\n // it doesn't. And it throws an exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n\n if (!supportsFetch()) {\n return false;\n }\n\n try {\n new Request('_', {\n referrerPolicy: 'origin' as ReferrerPolicy,\n });\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsHistory(): boolean {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n const global = getGlobalObject();\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const chrome = (global as any).chrome;\n const isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n const hasHistoryApi = 'history' in global && !!global.history.pushState && !!global.history.replaceState;\n\n return !isChromePackagedApp && hasHistoryApi;\n}\n","/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport { WrappedFunction } from '@sentry/types';\n\nimport { isDebugBuild } from './env';\nimport { getGlobalObject } from './global';\nimport { isInstanceOf, isString } from './is';\nimport { logger } from './logger';\nimport { fill } from './object';\nimport { getFunctionName } from './stacktrace';\nimport { supportsHistory, supportsNativeFetch } from './supports';\n\nconst global = getGlobalObject();\n\ntype InstrumentHandlerType =\n | 'console'\n | 'dom'\n | 'fetch'\n | 'history'\n | 'sentry'\n | 'xhr'\n | 'error'\n | 'unhandledrejection';\ntype InstrumentHandlerCallback = (data: any) => void;\n\n/**\n * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.\n * - Console API\n * - Fetch API\n * - XHR API\n * - History API\n * - DOM API (click/typing)\n * - Error API\n * - UnhandledRejection API\n */\n\nconst handlers: { [key in InstrumentHandlerType]?: InstrumentHandlerCallback[] } = {};\nconst instrumented: { [key in InstrumentHandlerType]?: boolean } = {};\n\n/** Instruments given API */\nfunction instrument(type: InstrumentHandlerType): void {\n if (instrumented[type]) {\n return;\n }\n\n instrumented[type] = true;\n\n switch (type) {\n case 'console':\n instrumentConsole();\n break;\n case 'dom':\n instrumentDOM();\n break;\n case 'xhr':\n instrumentXHR();\n break;\n case 'fetch':\n instrumentFetch();\n break;\n case 'history':\n instrumentHistory();\n break;\n case 'error':\n instrumentError();\n break;\n case 'unhandledrejection':\n instrumentUnhandledRejection();\n break;\n default:\n logger.warn('unknown instrumentation type:', type);\n }\n}\n\n/**\n * Add handler that will be called when given type of instrumentation triggers.\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addInstrumentationHandler(type: InstrumentHandlerType, callback: InstrumentHandlerCallback): void {\n handlers[type] = handlers[type] || [];\n (handlers[type] as InstrumentHandlerCallback[]).push(callback);\n instrument(type);\n}\n\n/** JSDoc */\nfunction triggerHandlers(type: InstrumentHandlerType, data: any): void {\n if (!type || !handlers[type]) {\n return;\n }\n\n for (const handler of handlers[type] || []) {\n try {\n handler(data);\n } catch (e) {\n if (isDebugBuild()) {\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(\n handler,\n )}\\nError: ${e}`,\n );\n }\n }\n }\n}\n\n/** JSDoc */\nfunction instrumentConsole(): void {\n if (!('console' in global)) {\n return;\n }\n\n ['debug', 'info', 'warn', 'error', 'log', 'assert'].forEach(function (level: string): void {\n if (!(level in global.console)) {\n return;\n }\n\n fill(global.console, level, function (originalConsoleLevel: () => any): Function {\n return function (...args: any[]): void {\n triggerHandlers('console', { args, level });\n\n // this fails for some browsers. :(\n if (originalConsoleLevel) {\n Function.prototype.apply.call(originalConsoleLevel, global.console, args);\n }\n };\n });\n });\n}\n\n/** JSDoc */\nfunction instrumentFetch(): void {\n if (!supportsNativeFetch()) {\n return;\n }\n\n fill(global, 'fetch', function (originalFetch: () => void): () => void {\n return function (...args: any[]): void {\n const handlerData = {\n args,\n fetchData: {\n method: getFetchMethod(args),\n url: getFetchUrl(args),\n },\n startTimestamp: Date.now(),\n };\n\n triggerHandlers('fetch', {\n ...handlerData,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return originalFetch.apply(global, args).then(\n (response: Response) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n response,\n });\n return response;\n },\n (error: Error) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n error,\n });\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the sentry.javascript SDK caught an error invoking your application code.\n // This is expected behavior and NOT indicative of a bug with sentry.javascript.\n throw error;\n },\n );\n };\n });\n}\n\ntype XHRSendInput = null | Blob | BufferSource | FormData | URLSearchParams | string;\n\n/** JSDoc */\ninterface SentryWrappedXMLHttpRequest extends XMLHttpRequest {\n [key: string]: any;\n __sentry_xhr__?: {\n method?: string;\n url?: string;\n status_code?: number;\n body?: XHRSendInput;\n };\n}\n\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/** Extract `method` from fetch call arguments */\nfunction getFetchMethod(fetchArgs: any[] = []): string {\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request) && fetchArgs[0].method) {\n return String(fetchArgs[0].method).toUpperCase();\n }\n if (fetchArgs[1] && fetchArgs[1].method) {\n return String(fetchArgs[1].method).toUpperCase();\n }\n return 'GET';\n}\n\n/** Extract `url` from fetch call arguments */\nfunction getFetchUrl(fetchArgs: any[] = []): string {\n if (typeof fetchArgs[0] === 'string') {\n return fetchArgs[0];\n }\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request)) {\n return fetchArgs[0].url;\n }\n return String(fetchArgs[0]);\n}\n/* eslint-enable @typescript-eslint/no-unsafe-member-access */\n\n/** JSDoc */\nfunction instrumentXHR(): void {\n if (!('XMLHttpRequest' in global)) {\n return;\n }\n\n const xhrproto = XMLHttpRequest.prototype;\n\n fill(xhrproto, 'open', function (originalOpen: () => void): () => void {\n return function (this: SentryWrappedXMLHttpRequest, ...args: any[]): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr = this;\n const url = args[1];\n const xhrInfo: SentryWrappedXMLHttpRequest['__sentry_xhr__'] = (xhr.__sentry_xhr__ = {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n url: args[1],\n });\n\n // if Sentry key appears in URL, don't capture it as a request\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (isString(url) && xhrInfo.method === 'POST' && url.match(/sentry_key/)) {\n xhr.__sentry_own_request__ = true;\n }\n\n const onreadystatechangeHandler = function (): void {\n if (xhr.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n xhrInfo.status_code = xhr.status;\n } catch (e) {\n /* do nothing */\n }\n\n triggerHandlers('xhr', {\n args,\n endTimestamp: Date.now(),\n startTimestamp: Date.now(),\n xhr,\n });\n }\n };\n\n if ('onreadystatechange' in xhr && typeof xhr.onreadystatechange === 'function') {\n fill(xhr, 'onreadystatechange', function (original: WrappedFunction): Function {\n return function (...readyStateArgs: any[]): void {\n onreadystatechangeHandler();\n return original.apply(xhr, readyStateArgs);\n };\n });\n } else {\n xhr.addEventListener('readystatechange', onreadystatechangeHandler);\n }\n\n return originalOpen.apply(xhr, args);\n };\n });\n\n fill(xhrproto, 'send', function (originalSend: () => void): () => void {\n return function (this: SentryWrappedXMLHttpRequest, ...args: any[]): void {\n if (this.__sentry_xhr__ && args[0] !== undefined) {\n this.__sentry_xhr__.body = args[0];\n }\n\n triggerHandlers('xhr', {\n args,\n startTimestamp: Date.now(),\n xhr: this,\n });\n\n return originalSend.apply(this, args);\n };\n });\n}\n\nlet lastHref: string;\n\n/** JSDoc */\nfunction instrumentHistory(): void {\n if (!supportsHistory()) {\n return;\n }\n\n const oldOnPopState = global.onpopstate;\n global.onpopstate = function (this: WindowEventHandlers, ...args: any[]): any {\n const to = global.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n const from = lastHref;\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n if (oldOnPopState) {\n // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n // https://github.com/getsentry/sentry-javascript/issues/3344\n // https://github.com/bugsnag/bugsnag-js/issues/469\n try {\n return oldOnPopState.apply(this, args);\n } catch (_oO) {\n // no-empty\n }\n }\n };\n\n /** @hidden */\n function historyReplacementFunction(originalHistoryFunction: () => void): () => void {\n return function (this: History, ...args: any[]): void {\n const url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n const from = lastHref;\n const to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n\n fill(global.history, 'pushState', historyReplacementFunction);\n fill(global.history, 'replaceState', historyReplacementFunction);\n}\n\nconst debounceDuration = 1000;\nlet debounceTimerID: number | undefined;\nlet lastCapturedEvent: Event | undefined;\n\n/**\n * Decide whether the current event should finish the debounce of previously captured one.\n * @param previous previously captured event\n * @param current event to be captured\n */\nfunction shouldShortcircuitPreviousDebounce(previous: Event | undefined, current: Event): boolean {\n // If there was no previous event, it should always be swapped for the new one.\n if (!previous) {\n return true;\n }\n\n // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n if (previous.type !== current.type) {\n return true;\n }\n\n try {\n // If both events have the same type, it's still possible that actions were performed on different targets.\n // e.g. 2 clicks on different buttons.\n if (previous.target !== current.target) {\n return true;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n // to which an event listener was attached), we treat them as the same action, as we want to capture\n // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n return false;\n}\n\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(event: Event): boolean {\n // We are only interested in filtering `keypress` events for now.\n if (event.type !== 'keypress') {\n return false;\n }\n\n try {\n const target = event.target as HTMLElement;\n\n if (!target || !target.tagName) {\n return true;\n }\n\n // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n // e.g.tabbing through elements, hotkeys, etc.\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return false;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n return true;\n}\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param handler function that will be triggered\n * @param globalListener indicates whether event was captured by the global event listener\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction makeDOMEventHandler(handler: Function, globalListener: boolean = false): (event: Event) => void {\n return (event: Event): void => {\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors).\n // Ignore if we've already captured that event.\n if (!event || lastCapturedEvent === event) {\n return;\n }\n\n // We always want to skip _some_ events.\n if (shouldSkipDOMEvent(event)) {\n return;\n }\n\n const name = event.type === 'keypress' ? 'input' : event.type;\n\n // If there is no debounce timer, it means that we can safely capture the new event and store it for future comparisons.\n if (debounceTimerID === undefined) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n // If there is a debounce awaiting, see if the new event is different enough to treat it as a unique one.\n // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n else if (shouldShortcircuitPreviousDebounce(lastCapturedEvent, event)) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n\n // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n clearTimeout(debounceTimerID);\n debounceTimerID = global.setTimeout(() => {\n debounceTimerID = undefined;\n }, debounceDuration);\n };\n}\n\ntype AddEventListener = (\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n) => void;\ntype RemoveEventListener = (\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n) => void;\n\ntype InstrumentedElement = Element & {\n __sentry_instrumentation_handlers__?: {\n [key in 'click' | 'keypress']?: {\n handler?: Function;\n /** The number of custom listeners attached to this element */\n refCount: number;\n };\n };\n};\n\n/** JSDoc */\nfunction instrumentDOM(): void {\n if (!('document' in global)) {\n return;\n }\n\n // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n const triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n const globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n global.document.addEventListener('click', globalDOMEventHandler, false);\n global.document.addEventListener('keypress', globalDOMEventHandler, false);\n\n // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n // guaranteed to fire at least once.)\n ['EventTarget', 'Node'].forEach((target: string) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = (global as any)[target] && (global as any)[target].prototype;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (originalAddEventListener: AddEventListener): AddEventListener {\n return function (\n this: Element,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): AddEventListener {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this as InstrumentedElement;\n const handlers = (el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {});\n const handlerForType = (handlers[type] = handlers[type] || { refCount: 0 });\n\n if (!handlerForType.handler) {\n const handler = makeDOMEventHandler(triggerDOMHandler);\n handlerForType.handler = handler;\n originalAddEventListener.call(this, type, handler, options);\n }\n\n handlerForType.refCount += 1;\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalAddEventListener.call(this, type, listener, options);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (originalRemoveEventListener: RemoveEventListener): RemoveEventListener {\n return function (\n this: Element,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this as InstrumentedElement;\n const handlers = el.__sentry_instrumentation_handlers__ || {};\n const handlerForType = handlers[type];\n\n if (handlerForType) {\n handlerForType.refCount -= 1;\n // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n if (handlerForType.refCount <= 0) {\n originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n handlerForType.handler = undefined;\n delete handlers[type]; // eslint-disable-line @typescript-eslint/no-dynamic-delete\n }\n\n // If there are no longer any custom handlers of any type on this element, cleanup everything.\n if (Object.keys(handlers).length === 0) {\n delete el.__sentry_instrumentation_handlers__;\n }\n }\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalRemoveEventListener.call(this, type, listener, options);\n };\n },\n );\n });\n}\n\nlet _oldOnErrorHandler: OnErrorEventHandler = null;\n/** JSDoc */\nfunction instrumentError(): void {\n _oldOnErrorHandler = global.onerror;\n\n global.onerror = function (msg: any, url: any, line: any, column: any, error: any): boolean {\n triggerHandlers('error', {\n column,\n error,\n line,\n msg,\n url,\n });\n\n if (_oldOnErrorHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n}\n\nlet _oldOnUnhandledRejectionHandler: ((e: any) => void) | null = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection(): void {\n _oldOnUnhandledRejectionHandler = global.onunhandledrejection;\n\n global.onunhandledrejection = function (e: any): boolean {\n triggerHandlers('unhandledrejection', e);\n\n if (_oldOnUnhandledRejectionHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n}\n","/**\n * This was originally forked from https://github.com/occ/TraceKit, but has since been\n * largely modified and is now maintained as part of Sentry JS SDK.\n */\n\n/* eslint-disable @typescript-eslint/no-unsafe-member-access, max-lines */\n\n/**\n * An object representing a single stack frame.\n * {Object} StackFrame\n * {string} url The JavaScript or HTML file URL.\n * {string} func The function name, or empty for anonymous functions (if guessing did not work).\n * {string[]?} args The arguments passed to the function, if known.\n * {number=} line The line number, if known.\n * {number=} column The column number, if known.\n * {string[]} context An array of source code lines; the middle element corresponds to the correct line#.\n */\nexport interface StackFrame {\n url: string;\n func: string;\n args: string[];\n line: number | null;\n column: number | null;\n}\n\n/**\n * An object representing a JavaScript stack trace.\n * {Object} StackTrace\n * {string} name The name of the thrown exception.\n * {string} message The exception error message.\n * {TraceKit.StackFrame[]} stack An array of stack frames.\n */\nexport interface StackTrace {\n name: string;\n message: string;\n mechanism?: string;\n stack: StackFrame[];\n failed?: boolean;\n}\n\n// global reference to slice\nconst UNKNOWN_FUNCTION = '?';\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nconst chrome =\n /^\\s*at (?:(.*?) ?\\()?((?:file|https?|blob|chrome-extension|address|native|eval|webpack||[-a-z]+:|.*bundle|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nconst gecko =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension|capacitor).*?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst winjs =\n /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nconst geckoEval = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nconst chromeEval = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nconst reactMinifiedRegexp = /Minified React error #\\d+;/i;\n\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nexport function computeStackTrace(ex: any): StackTrace {\n let stack = null;\n let popSize = 0;\n\n if (ex) {\n if (typeof ex.framesToPop === 'number') {\n popSize = ex.framesToPop;\n } else if (reactMinifiedRegexp.test(ex.message)) {\n popSize = 1;\n }\n }\n\n try {\n // This must be tried first because Opera 10 *destroys*\n // its stacktrace property if you try to access the stack\n // property first!!\n stack = computeStackTraceFromStacktraceProp(ex);\n if (stack) {\n return popFrames(stack, popSize);\n }\n } catch (e) {\n // no-empty\n }\n\n try {\n stack = computeStackTraceFromStackProp(ex);\n if (stack) {\n return popFrames(stack, popSize);\n }\n } catch (e) {\n // no-empty\n }\n\n return {\n message: extractMessage(ex),\n name: ex && ex.name,\n stack: [],\n failed: true,\n };\n}\n\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, complexity\nfunction computeStackTraceFromStackProp(ex: any): StackTrace | null {\n if (!ex || !ex.stack) {\n return null;\n }\n\n const stack = [];\n const lines = ex.stack.split('\\n');\n let isEval;\n let submatch;\n let parts;\n let element;\n\n for (let i = 0; i < lines.length; ++i) {\n if ((parts = chrome.exec(lines[i]))) {\n const isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n if (isEval && (submatch = chromeEval.exec(parts[2]))) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n parts[3] = submatch[2]; // line\n parts[4] = submatch[3]; // column\n }\n\n // Arpad: Working with the regexp above is super painful. it is quite a hack, but just stripping the `address at `\n // prefix here seems like the quickest solution for now.\n let url = parts[2] && parts[2].indexOf('address at ') === 0 ? parts[2].substr('address at '.length) : parts[2];\n // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n let func = parts[1] || UNKNOWN_FUNCTION;\n [func, url] = extractSafariExtensionDetails(func, url);\n\n element = {\n url,\n func,\n args: isNative ? [parts[2]] : [],\n line: parts[3] ? +parts[3] : null,\n column: parts[4] ? +parts[4] : null,\n };\n } else if ((parts = winjs.exec(lines[i]))) {\n element = {\n url: parts[2],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: [],\n line: +parts[3],\n column: parts[4] ? +parts[4] : null,\n };\n } else if ((parts = gecko.exec(lines[i]))) {\n isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval && (submatch = geckoEval.exec(parts[3]))) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || `eval`;\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = ''; // no column when eval\n } else if (i === 0 && !parts[5] && ex.columnNumber !== void 0) {\n // FireFox uses this awesome columnNumber property for its top frame\n // Also note, Firefox's column number is 0-based and everything else expects 1-based,\n // so adding 1\n // NOTE: this hack doesn't work if top-most frame is eval\n stack[0].column = (ex.columnNumber as number) + 1;\n }\n\n let url = parts[3];\n let func = parts[1] || UNKNOWN_FUNCTION;\n [func, url] = extractSafariExtensionDetails(func, url);\n\n element = {\n url,\n func,\n args: parts[2] ? parts[2].split(',') : [],\n line: parts[4] ? +parts[4] : null,\n column: parts[5] ? +parts[5] : null,\n };\n } else {\n continue;\n }\n\n if (!element.func && element.line) {\n element.func = UNKNOWN_FUNCTION;\n }\n\n stack.push(element);\n }\n\n if (!stack.length) {\n return null;\n }\n\n return {\n message: extractMessage(ex),\n name: ex.name,\n stack,\n };\n}\n\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction computeStackTraceFromStacktraceProp(ex: any): StackTrace | null {\n if (!ex || !ex.stacktrace) {\n return null;\n }\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n const stacktrace = ex.stacktrace;\n const opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n const opera11Regex =\n / line (\\d+), column (\\d+)\\s*(?:in (?:]+)>|([^)]+))\\((.*)\\))? in (.*):\\s*$/i;\n const lines = stacktrace.split('\\n');\n const stack = [];\n let parts;\n\n for (let line = 0; line < lines.length; line += 2) {\n let element = null;\n if ((parts = opera10Regex.exec(lines[line]))) {\n element = {\n url: parts[2],\n func: parts[3],\n args: [],\n line: +parts[1],\n column: null,\n };\n } else if ((parts = opera11Regex.exec(lines[line]))) {\n element = {\n url: parts[6],\n func: parts[3] || parts[4],\n args: parts[5] ? parts[5].split(',') : [],\n line: +parts[1],\n column: +parts[2],\n };\n }\n\n if (element) {\n if (!element.func && element.line) {\n element.func = UNKNOWN_FUNCTION;\n }\n stack.push(element);\n }\n }\n\n if (!stack.length) {\n return null;\n }\n\n return {\n message: extractMessage(ex),\n name: ex.name,\n stack,\n };\n}\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n * at function@url:row:col\n * at function@url:row:col\n * at function@url:row:col\n *\n * it produces something like:\n *\n * function@url:row:col\n * function@url:row:col\n * function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunatelly \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nconst extractSafariExtensionDetails = (func: string, url: string): [string, string] => {\n const isSafariExtension = func.indexOf('safari-extension') !== -1;\n const isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;\n\n return isSafariExtension || isSafariWebExtension\n ? [\n func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${url}` : `safari-web-extension:${url}`,\n ]\n : [func, url];\n};\n\n/** Remove N number of frames from the stack */\nfunction popFrames(stacktrace: StackTrace, popSize: number): StackTrace {\n try {\n return {\n ...stacktrace,\n stack: stacktrace.stack.slice(popSize),\n };\n } catch (e) {\n return stacktrace;\n }\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction extractMessage(ex: any): string {\n const message = ex && ex.message;\n if (!message) {\n return 'No error message';\n }\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n return message;\n}\n","import { Event, Exception, StackFrame } from '@sentry/types';\nimport { extractExceptionKeysForMessage, isEvent, normalizeToSize } from '@sentry/utils';\n\nimport { computeStackTrace, StackFrame as TraceKitStackFrame, StackTrace as TraceKitStackTrace } from './tracekit';\n\nconst STACKTRACE_LIMIT = 50;\n\n/**\n * This function creates an exception from an TraceKitStackTrace\n * @param stacktrace TraceKitStackTrace that will be converted to an exception\n * @hidden\n */\nexport function exceptionFromStacktrace(stacktrace: TraceKitStackTrace): Exception {\n const frames = prepareFramesForEvent(stacktrace.stack);\n\n const exception: Exception = {\n type: stacktrace.name,\n value: stacktrace.message,\n };\n\n if (frames && frames.length) {\n exception.stacktrace = { frames };\n }\n\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n\n return exception;\n}\n\n/**\n * @hidden\n */\nexport function eventFromPlainObject(\n exception: Record,\n syntheticException?: Error,\n rejection?: boolean,\n): Event {\n const event: Event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : rejection ? 'UnhandledRejection' : 'Error',\n value: `Non-Error ${\n rejection ? 'promise rejection' : 'exception'\n } captured with keys: ${extractExceptionKeysForMessage(exception)}`,\n },\n ],\n },\n extra: {\n __serialized__: normalizeToSize(exception),\n },\n };\n\n if (syntheticException) {\n const stacktrace = computeStackTrace(syntheticException);\n const frames = prepareFramesForEvent(stacktrace.stack);\n event.stacktrace = {\n frames,\n };\n }\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromStacktrace(stacktrace: TraceKitStackTrace): Event {\n const exception = exceptionFromStacktrace(stacktrace);\n\n return {\n exception: {\n values: [exception],\n },\n };\n}\n\n/**\n * @hidden\n */\nexport function prepareFramesForEvent(stack: TraceKitStackFrame[]): StackFrame[] {\n if (!stack || !stack.length) {\n return [];\n }\n\n let localStack = stack;\n\n const firstFrameFunction = localStack[0].func || '';\n const lastFrameFunction = localStack[localStack.length - 1].func || '';\n\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (firstFrameFunction.indexOf('captureMessage') !== -1 || firstFrameFunction.indexOf('captureException') !== -1) {\n localStack = localStack.slice(1);\n }\n\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (lastFrameFunction.indexOf('sentryWrapped') !== -1) {\n localStack = localStack.slice(0, -1);\n }\n\n // The frame where the crash happened, should be the last entry in the array\n return localStack\n .slice(0, STACKTRACE_LIMIT)\n .map(\n (frame: TraceKitStackFrame): StackFrame => ({\n colno: frame.column === null ? undefined : frame.column,\n filename: frame.url || localStack[0].url,\n function: frame.func || '?',\n in_app: true,\n lineno: frame.line === null ? undefined : frame.line,\n }),\n )\n .reverse();\n}\n","import { Event, EventHint, Options, Severity } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n isDOMError,\n isDOMException,\n isError,\n isErrorEvent,\n isEvent,\n isPlainObject,\n resolvedSyncPromise,\n} from '@sentry/utils';\n\nimport { eventFromPlainObject, eventFromStacktrace, prepareFramesForEvent } from './parsers';\nimport { computeStackTrace } from './tracekit';\n\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nexport function eventFromException(options: Options, exception: unknown, hint?: EventHint): PromiseLike {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromUnknownInput(exception, syntheticException, {\n attachStacktrace: options.attachStacktrace,\n });\n addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n event.level = Severity.Error;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(\n options: Options,\n message: string,\n level: Severity = Severity.Info,\n hint?: EventHint,\n): PromiseLike {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromString(message, syntheticException, {\n attachStacktrace: options.attachStacktrace,\n });\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * @hidden\n */\nexport function eventFromUnknownInput(\n exception: unknown,\n syntheticException?: Error,\n options: {\n isRejection?: boolean;\n attachStacktrace?: boolean;\n } = {},\n): Event {\n let event: Event;\n\n if (isErrorEvent(exception as ErrorEvent) && (exception as ErrorEvent).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n const errorEvent = exception as ErrorEvent;\n // eslint-disable-next-line no-param-reassign\n exception = errorEvent.error;\n event = eventFromStacktrace(computeStackTrace(exception as Error));\n return event;\n }\n\n // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n if (isDOMError(exception as DOMError) || isDOMException(exception as DOMException)) {\n const domException = exception as DOMException;\n\n if ('stack' in (exception as Error)) {\n event = eventFromStacktrace(computeStackTrace(exception as Error));\n } else {\n const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n const message = domException.message ? `${name}: ${domException.message}` : name;\n event = eventFromString(message, syntheticException, options);\n addExceptionTypeValue(event, message);\n }\n if ('code' in domException) {\n event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n }\n\n return event;\n }\n if (isError(exception as Error)) {\n // we have a real Error object, do nothing\n event = eventFromStacktrace(computeStackTrace(exception as Error));\n return event;\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n // group on any key/value change.\n const objectException = exception as Record;\n event = eventFromPlainObject(objectException, syntheticException, options.isRejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(exception as string, syntheticException, options);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromString(\n input: string,\n syntheticException?: Error,\n options: {\n attachStacktrace?: boolean;\n } = {},\n): Event {\n const event: Event = {\n message: input,\n };\n\n if (options.attachStacktrace && syntheticException) {\n const stacktrace = computeStackTrace(syntheticException);\n const frames = prepareFramesForEvent(stacktrace.stack);\n event.stacktrace = {\n frames,\n };\n }\n\n return event;\n}\n","import { getCurrentHub, Hub, Scope } from '@sentry/hub';\nimport {\n Breadcrumb,\n CaptureContext,\n CustomSamplingContext,\n Event,\n Extra,\n Extras,\n Primitive,\n Severity,\n Transaction,\n TransactionContext,\n User,\n} from '@sentry/types';\n\n/**\n * This calls a function on the current hub.\n * @param method function to call on hub.\n * @param args to pass to function.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction callOnHub(method: string, ...args: any[]): T {\n const hub = getCurrentHub();\n if (hub && hub[method as keyof Hub]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (hub[method as keyof Hub] as any)(...args);\n }\n throw new Error(`No hub defined or ${method} was not found on the hub, please open a bug report.`);\n}\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception An exception-like object.\n * @returns The generated eventId.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nexport function captureException(exception: any, captureContext?: CaptureContext): string {\n let syntheticException: Error;\n try {\n throw new Error('Sentry syntheticException');\n } catch (exception) {\n syntheticException = exception as Error;\n }\n return callOnHub('captureException', exception, {\n captureContext,\n originalException: exception,\n syntheticException,\n });\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param message The message to send to Sentry.\n * @param Severity Define the level of the message.\n * @returns The generated eventId.\n */\nexport function captureMessage(message: string, captureContext?: CaptureContext | Severity): string {\n let syntheticException: Error;\n try {\n throw new Error(message);\n } catch (exception) {\n syntheticException = exception as Error;\n }\n\n // This is necessary to provide explicit scopes upgrade, without changing the original\n // arity of the `captureMessage(message, level)` method.\n const level = typeof captureContext === 'string' ? captureContext : undefined;\n const context = typeof captureContext !== 'string' ? { captureContext } : undefined;\n\n return callOnHub('captureMessage', message, level, {\n originalException: message,\n syntheticException,\n ...context,\n });\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param event The event to send to Sentry.\n * @returns The generated eventId.\n */\nexport function captureEvent(event: Event): string {\n return callOnHub('captureEvent', event);\n}\n\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n */\nexport function configureScope(callback: (scope: Scope) => void): void {\n callOnHub('configureScope', callback);\n}\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\nexport function addBreadcrumb(breadcrumb: Breadcrumb): void {\n callOnHub('addBreadcrumb', breadcrumb);\n}\n\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function setContext(name: string, context: { [key: string]: any } | null): void {\n callOnHub('setContext', name, context);\n}\n\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\nexport function setExtras(extras: Extras): void {\n callOnHub('setExtras', extras);\n}\n\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\nexport function setTags(tags: { [key: string]: Primitive }): void {\n callOnHub('setTags', tags);\n}\n\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\nexport function setExtra(key: string, extra: Extra): void {\n callOnHub('setExtra', key, extra);\n}\n\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\nexport function setTag(key: string, value: Primitive): void {\n callOnHub('setTag', key, value);\n}\n\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\nexport function setUser(user: User | null): void {\n callOnHub('setUser', user);\n}\n\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n *\n * This is essentially a convenience function for:\n *\n * pushScope();\n * callback();\n * popScope();\n *\n * @param callback that will be enclosed into push/popScope.\n */\nexport function withScope(callback: (scope: Scope) => void): void {\n callOnHub('withScope', callback);\n}\n\n/**\n * Calls a function on the latest client. Use this with caution, it's meant as\n * in \"internal\" helper so we don't need to expose every possible function in\n * the shim. It is not guaranteed that the client actually implements the\n * function.\n *\n * @param method The method to call on the client/client.\n * @param args Arguments to pass to the client/fontend.\n * @hidden\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function _callOnClient(method: string, ...args: any[]): void {\n callOnHub('_invokeClient', method, ...args);\n}\n\n/**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.finish()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n */\nexport function startTransaction(\n context: TransactionContext,\n customSamplingContext?: CustomSamplingContext,\n): Transaction {\n return callOnHub('startTransaction', { ...context }, customSamplingContext);\n}\n","export const setPrototypeOf =\n Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties);\n\n/**\n * setPrototypeOf polyfill using __proto__\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction setProtoOf(obj: TTarget, proto: TProto): TTarget & TProto {\n // @ts-ignore __proto__ does not exist on obj\n obj.__proto__ = proto;\n return obj as TTarget & TProto;\n}\n\n/**\n * setPrototypeOf polyfill using mixin\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction mixinProperties(obj: TTarget, proto: TProto): TTarget & TProto {\n for (const prop in proto) {\n if (!Object.prototype.hasOwnProperty.call(obj, prop)) {\n // @ts-ignore typescript complains about indexing so we remove\n obj[prop] = proto[prop];\n }\n }\n\n return obj as TTarget & TProto;\n}\n","import { setPrototypeOf } from './polyfill';\n\n/** An error emitted by Sentry SDKs and related utilities. */\nexport class SentryError extends Error {\n /** Display name of this error instance. */\n public name: string;\n\n public constructor(public message: string) {\n super(message);\n\n this.name = new.target.prototype.constructor.name;\n setPrototypeOf(this, new.target.prototype);\n }\n}\n","import { DsnComponents, DsnLike, DsnProtocol } from '@sentry/types';\n\nimport { isDebugBuild } from './env';\nimport { SentryError } from './error';\n\n/** Regular expression used to parse a Dsn. */\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+))?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol?: string): protocol is DsnProtocol {\n return protocol === 'http' || protocol === 'https';\n}\n\n/**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\nexport function dsnToString(dsn: DsnComponents, withPassword: boolean = false): string {\n const { host, path, pass, port, projectId, protocol, publicKey } = dsn;\n return (\n `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ''}` +\n `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}`\n );\n}\n\nfunction dsnFromString(str: string): DsnComponents {\n const match = DSN_REGEX.exec(str);\n\n if (!match) {\n throw new SentryError(`Invalid Sentry Dsn: ${str}`);\n }\n\n const [protocol, publicKey, pass = '', host, port = '', lastPath] = match.slice(1);\n let path = '';\n let projectId = lastPath;\n\n const split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop() as string;\n }\n\n if (projectId) {\n const projectMatch = projectId.match(/^\\d+/);\n if (projectMatch) {\n projectId = projectMatch[0];\n }\n }\n\n return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol as DsnProtocol, publicKey });\n}\n\nfunction dsnFromComponents(components: DsnComponents): DsnComponents {\n // TODO this is for backwards compatibility, and can be removed in a future version\n if ('user' in components && !('publicKey' in components)) {\n components.publicKey = components.user;\n }\n\n return {\n user: components.publicKey || '',\n protocol: components.protocol,\n publicKey: components.publicKey || '',\n pass: components.pass || '',\n host: components.host,\n port: components.port || '',\n path: components.path || '',\n projectId: components.projectId,\n };\n}\n\nfunction validateDsn(dsn: DsnComponents): boolean | void {\n if (!isDebugBuild()) {\n return;\n }\n\n const { port, projectId, protocol } = dsn;\n\n const requiredComponents: ReadonlyArray = ['protocol', 'publicKey', 'host', 'projectId'];\n requiredComponents.forEach(component => {\n if (!dsn[component]) {\n throw new SentryError(`Invalid Sentry Dsn: ${component} missing`);\n }\n });\n\n if (!projectId.match(/^\\d+$/)) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n }\n\n if (!isValidProtocol(protocol)) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n }\n\n if (port && isNaN(parseInt(port, 10))) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid port ${port}`);\n }\n\n return true;\n}\n\n/** The Sentry Dsn, identifying a Sentry instance and project. */\nexport function makeDsn(from: DsnLike): DsnComponents {\n const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n\n validateDsn(components);\n\n return components;\n}\n","import { DsnComponents, DsnLike, SdkMetadata } from '@sentry/types';\nimport { dsnToString, makeDsn, urlEncode } from '@sentry/utils';\n\nconst SENTRY_API_VERSION = '7';\n\n/**\n * Stores details about a Sentry SDK\n */\nexport interface APIDetails {\n /** The DSN as passed to Sentry.init() */\n initDsn: DsnLike;\n /** Metadata about the SDK (name, version, etc) for inclusion in envelope headers */\n metadata: SdkMetadata;\n /** The internally used Dsn object. */\n readonly dsn: DsnComponents;\n /** The envelope tunnel to use. */\n readonly tunnel?: string;\n}\n\n/**\n * Helper class to provide urls, headers and metadata that can be used to form\n * different types of requests to Sentry endpoints.\n * Supports both envelopes and regular event requests.\n *\n * @deprecated Please use APIDetails\n **/\nexport class API {\n /** The DSN as passed to Sentry.init() */\n public dsn: DsnLike;\n\n /** Metadata about the SDK (name, version, etc) for inclusion in envelope headers */\n public metadata: SdkMetadata;\n\n /** The internally used Dsn object. */\n private readonly _dsnObject: DsnComponents;\n\n /** The envelope tunnel to use. */\n private readonly _tunnel?: string;\n\n /** Create a new instance of API */\n public constructor(dsn: DsnLike, metadata: SdkMetadata = {}, tunnel?: string) {\n this.dsn = dsn;\n this._dsnObject = makeDsn(dsn);\n this.metadata = metadata;\n this._tunnel = tunnel;\n }\n\n /** Returns the Dsn object. */\n public getDsn(): DsnComponents {\n return this._dsnObject;\n }\n\n /** Does this transport force envelopes? */\n public forceEnvelope(): boolean {\n return !!this._tunnel;\n }\n\n /** Returns the prefix to construct Sentry ingestion API endpoints. */\n public getBaseApiEndpoint(): string {\n return getBaseApiEndpoint(this._dsnObject);\n }\n\n /** Returns the store endpoint URL. */\n public getStoreEndpoint(): string {\n return getStoreEndpoint(this._dsnObject);\n }\n\n /**\n * Returns the store endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\n public getStoreEndpointWithUrlEncodedAuth(): string {\n return getStoreEndpointWithUrlEncodedAuth(this._dsnObject);\n }\n\n /**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\n public getEnvelopeEndpointWithUrlEncodedAuth(): string {\n return getEnvelopeEndpointWithUrlEncodedAuth(this._dsnObject, this._tunnel);\n }\n}\n\n/** Initializes API Details */\nexport function initAPIDetails(dsn: DsnLike, metadata?: SdkMetadata, tunnel?: string): APIDetails {\n return {\n initDsn: dsn,\n metadata: metadata || {},\n dsn: makeDsn(dsn),\n tunnel,\n } as APIDetails;\n}\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn: DsnComponents): string {\n const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n const port = dsn.port ? `:${dsn.port}` : '';\n return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`;\n}\n\n/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn: DsnComponents, target: 'store' | 'envelope'): string {\n return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/${target}/`;\n}\n\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn: DsnComponents): string {\n return urlEncode({\n // We send only the minimum set of required information. See\n // https://github.com/getsentry/sentry-javascript/issues/2572.\n sentry_key: dsn.publicKey,\n sentry_version: SENTRY_API_VERSION,\n });\n}\n\n/** Returns the store endpoint URL. */\nfunction getStoreEndpoint(dsn: DsnComponents): string {\n return _getIngestEndpoint(dsn, 'store');\n}\n\n/**\n * Returns the store endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nexport function getStoreEndpointWithUrlEncodedAuth(dsn: DsnComponents): string {\n return `${getStoreEndpoint(dsn)}?${_encodedAuth(dsn)}`;\n}\n\n/** Returns the envelope endpoint URL. */\nfunction _getEnvelopeEndpoint(dsn: DsnComponents): string {\n return _getIngestEndpoint(dsn, 'envelope');\n}\n\n/**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nexport function getEnvelopeEndpointWithUrlEncodedAuth(dsn: DsnComponents, tunnel?: string): string {\n return tunnel ? tunnel : `${_getEnvelopeEndpoint(dsn)}?${_encodedAuth(dsn)}`;\n}\n\n/**\n * Returns an object that can be used in request headers.\n * This is needed for node and the old /store endpoint in sentry\n */\nexport function getRequestHeaders(\n dsn: DsnComponents,\n clientName: string,\n clientVersion: string,\n): { [key: string]: string } {\n // CHANGE THIS to use metadata but keep clientName and clientVersion compatible\n const header = [`Sentry sentry_version=${SENTRY_API_VERSION}`];\n header.push(`sentry_client=${clientName}/${clientVersion}`);\n header.push(`sentry_key=${dsn.publicKey}`);\n if (dsn.pass) {\n header.push(`sentry_secret=${dsn.pass}`);\n }\n return {\n 'Content-Type': 'application/json',\n 'X-Sentry-Auth': header.join(', '),\n };\n}\n\n/** Returns the url to the report dialog endpoint. */\nexport function getReportDialogEndpoint(\n dsnLike: DsnLike,\n dialogOptions: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n user?: { name?: string; email?: string };\n },\n): string {\n const dsn = makeDsn(dsnLike);\n const endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n let encodedOptions = `dsn=${dsnToString(dsn)}`;\n for (const key in dialogOptions) {\n if (key === 'dsn') {\n continue;\n }\n\n if (key === 'user') {\n if (!dialogOptions.user) {\n continue;\n }\n if (dialogOptions.user.name) {\n encodedOptions += `&name=${encodeURIComponent(dialogOptions.user.name)}`;\n }\n if (dialogOptions.user.email) {\n encodedOptions += `&email=${encodeURIComponent(dialogOptions.user.email)}`;\n }\n } else {\n encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] as string)}`;\n }\n }\n\n return `${endpoint}?${encodedOptions}`;\n}\n","import { captureException, getReportDialogEndpoint, withScope } from '@sentry/core';\nimport { DsnLike, Event as SentryEvent, Mechanism, Scope, WrappedFunction } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n addNonEnumerableProperty,\n getGlobalObject,\n getOriginalFunction,\n isDebugBuild,\n logger,\n markFunctionWrapped,\n} from '@sentry/utils';\n\nconst global = getGlobalObject();\nlet ignoreOnError: number = 0;\n\n/**\n * @hidden\n */\nexport function shouldIgnoreOnError(): boolean {\n return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nexport function ignoreNextOnError(): void {\n // onerror should trigger before setTimeout\n ignoreOnError += 1;\n setTimeout(() => {\n ignoreOnError -= 1;\n });\n}\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap.\n * @returns The wrapped function.\n * @hidden\n */\nexport function wrap(\n fn: WrappedFunction,\n options: {\n mechanism?: Mechanism;\n } = {},\n before?: WrappedFunction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n // for future readers what this does is wrap a function and then create\n // a bi-directional wrapping between them.\n //\n // example: wrapped = wrap(original);\n // original.__sentry_wrapped__ -> wrapped\n // wrapped.__sentry_original__ -> original\n\n if (typeof fn !== 'function') {\n return fn;\n }\n\n try {\n // if we're dealing with a function that was previously wrapped, return\n // the original wrapper.\n const wrapper = fn.__sentry_wrapped__;\n if (wrapper) {\n return wrapper;\n }\n\n // We don't wanna wrap it twice\n if (getOriginalFunction(fn)) {\n return fn;\n }\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return fn;\n }\n\n /* eslint-disable prefer-rest-params */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const sentryWrapped: WrappedFunction = function (this: any): void {\n const args = Array.prototype.slice.call(arguments);\n\n try {\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n const wrappedArguments = args.map((arg: any) => wrap(arg, options));\n\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n } catch (ex) {\n ignoreNextOnError();\n\n withScope((scope: Scope) => {\n scope.addEventProcessor((event: SentryEvent) => {\n if (options.mechanism) {\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, options.mechanism);\n }\n\n event.extra = {\n ...event.extra,\n arguments: args,\n };\n\n return event;\n });\n\n captureException(ex);\n });\n\n throw ex;\n }\n };\n /* eslint-enable prefer-rest-params */\n\n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n try {\n for (const property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property] = fn[property];\n }\n }\n } catch (_oO) {} // eslint-disable-line no-empty\n\n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n markFunctionWrapped(sentryWrapped, fn);\n\n addNonEnumerableProperty(fn, '__sentry_wrapped__', sentryWrapped);\n\n // Restore original function name (not all browsers allow that)\n try {\n const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name') as PropertyDescriptor;\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get(): string {\n return fn.name;\n },\n });\n }\n // eslint-disable-next-line no-empty\n } catch (_oO) {}\n\n return sentryWrapped;\n}\n\n/**\n * All properties the report dialog supports\n */\nexport interface ReportDialogOptions {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n eventId?: string;\n dsn?: DsnLike;\n user?: {\n email?: string;\n name?: string;\n };\n lang?: string;\n title?: string;\n subtitle?: string;\n subtitle2?: string;\n labelName?: string;\n labelEmail?: string;\n labelComments?: string;\n labelClose?: string;\n labelSubmit?: string;\n errorGeneric?: string;\n errorFormEntry?: string;\n successMessage?: string;\n /** Callback after reportDialog showed up */\n onLoad?(): void;\n}\n\n/**\n * Injects the Report Dialog script\n * @hidden\n */\nexport function injectReportDialog(options: ReportDialogOptions = {}): void {\n if (!global.document) {\n return;\n }\n\n if (!options.eventId) {\n if (isDebugBuild()) {\n logger.error(`Missing eventId option in showReportDialog call`);\n }\n return;\n }\n\n if (!options.dsn) {\n if (isDebugBuild()) {\n logger.error(`Missing dsn option in showReportDialog call`);\n }\n return;\n }\n\n const script = global.document.createElement('script');\n script.async = true;\n script.src = getReportDialogEndpoint(options.dsn, options);\n\n if (options.onLoad) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n script.onload = options.onLoad;\n }\n\n const injectionPoint = global.document.head || global.document.body;\n\n if (injectionPoint) {\n injectionPoint.appendChild(script);\n }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport { getCurrentHub } from '@sentry/core';\nimport { Event, EventHint, Hub, Integration, Primitive, Severity } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addInstrumentationHandler,\n getLocationHref,\n isDebugBuild,\n isErrorEvent,\n isPrimitive,\n isString,\n logger,\n} from '@sentry/utils';\n\nimport { eventFromUnknownInput } from '../eventbuilder';\nimport { shouldIgnoreOnError } from '../helpers';\n\ntype GlobalHandlersIntegrationsOptionKeys = 'onerror' | 'onunhandledrejection';\n\n/** JSDoc */\ntype GlobalHandlersIntegrations = Record;\n\n/** Global handlers */\nexport class GlobalHandlers implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'GlobalHandlers';\n\n /**\n * @inheritDoc\n */\n public name: string = GlobalHandlers.id;\n\n /** JSDoc */\n private readonly _options: GlobalHandlersIntegrations;\n\n /**\n * Stores references functions to installing handlers. Will set to undefined\n * after they have been run so that they are not used twice.\n */\n private _installFunc: Record void) | undefined> = {\n onerror: _installGlobalOnErrorHandler,\n onunhandledrejection: _installGlobalOnUnhandledRejectionHandler,\n };\n\n /** JSDoc */\n public constructor(options?: GlobalHandlersIntegrations) {\n this._options = {\n onerror: true,\n onunhandledrejection: true,\n ...options,\n };\n }\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n Error.stackTraceLimit = 50;\n const options = this._options;\n\n // We can disable guard-for-in as we construct the options object above + do checks against\n // `this._installFunc` for the property.\n // eslint-disable-next-line guard-for-in\n for (const key in options) {\n const installFunc = this._installFunc[key as GlobalHandlersIntegrationsOptionKeys];\n if (installFunc && options[key as GlobalHandlersIntegrationsOptionKeys]) {\n globalHandlerLog(key);\n installFunc();\n this._installFunc[key as GlobalHandlersIntegrationsOptionKeys] = undefined;\n }\n }\n }\n}\n\n/** JSDoc */\nfunction _installGlobalOnErrorHandler(): void {\n addInstrumentationHandler(\n 'error',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (data: { msg: any; url: any; line: any; column: any; error: any }) => {\n const [hub, attachStacktrace] = getHubAndAttachStacktrace();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n const { msg, url, line, column, error } = data;\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return;\n }\n\n const event =\n error === undefined && isString(msg)\n ? _eventFromIncompleteOnError(msg, url, line, column)\n : _enhanceEventWithInitialFrame(\n eventFromUnknownInput(error || msg, undefined, {\n attachStacktrace,\n isRejection: false,\n }),\n url,\n line,\n column,\n );\n\n event.level = Severity.Error;\n\n addMechanismAndCapture(hub, error, event, 'onerror');\n },\n );\n}\n\n/** JSDoc */\nfunction _installGlobalOnUnhandledRejectionHandler(): void {\n addInstrumentationHandler(\n 'unhandledrejection',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (e: any) => {\n const [hub, attachStacktrace] = getHubAndAttachStacktrace();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n let error = e;\n\n // dig the object of the rejection out of known event types\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in e) {\n error = e.reason;\n }\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in e && 'reason' in e.detail) {\n error = e.detail.reason;\n }\n } catch (_oO) {\n // no-empty\n }\n\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return true;\n }\n\n const event = isPrimitive(error)\n ? _eventFromRejectionWithPrimitive(error)\n : eventFromUnknownInput(error, undefined, {\n attachStacktrace,\n isRejection: true,\n });\n\n event.level = Severity.Error;\n\n addMechanismAndCapture(hub, error, event, 'onunhandledrejection');\n return;\n },\n );\n}\n\n/**\n * Create an event from a promise rejection where the `reason` is a primitive.\n *\n * @param reason: The `reason` property of the promise rejection\n * @returns An Event object with an appropriate `exception` value\n */\nfunction _eventFromRejectionWithPrimitive(reason: Primitive): Event {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n },\n ],\n },\n };\n}\n\n/**\n * This function creates a stack from an old, error-less onerror handler.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _eventFromIncompleteOnError(msg: any, url: any, line: any, column: any): Event {\n const ERROR_TYPES_RE =\n /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n\n // If 'message' is ErrorEvent, get real message from inside\n let message = isErrorEvent(msg) ? msg.message : msg;\n let name = 'Error';\n\n const groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n\n const event = {\n exception: {\n values: [\n {\n type: name,\n value: message,\n },\n ],\n },\n };\n\n return _enhanceEventWithInitialFrame(event, url, line, column);\n}\n\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _enhanceEventWithInitialFrame(event: Event, url: any, line: any, column: any): Event {\n // event.exception\n const e = (event.exception = event.exception || {});\n // event.exception.values\n const ev = (e.values = e.values || []);\n // event.exception.values[0]\n const ev0 = (ev[0] = ev[0] || {});\n // event.exception.values[0].stacktrace\n const ev0s = (ev0.stacktrace = ev0.stacktrace || {});\n // event.exception.values[0].stacktrace.frames\n const ev0sf = (ev0s.frames = ev0s.frames || []);\n\n const colno = isNaN(parseInt(column, 10)) ? undefined : column;\n const lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n const filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n // event.exception.values[0].stacktrace.frames\n if (ev0sf.length === 0) {\n ev0sf.push({\n colno,\n filename,\n function: '?',\n in_app: true,\n lineno,\n });\n }\n\n return event;\n}\n\nfunction globalHandlerLog(type: string): void {\n if (isDebugBuild()) {\n logger.log(`Global Handler attached: ${type}`);\n }\n}\n\nfunction addMechanismAndCapture(hub: Hub, error: EventHint['originalException'], event: Event, type: string): void {\n addExceptionMechanism(event, {\n handled: false,\n type,\n });\n hub.captureEvent(event, {\n originalException: error,\n });\n}\n\nfunction getHubAndAttachStacktrace(): [Hub, boolean | undefined] {\n const hub = getCurrentHub();\n const client = hub.getClient();\n const attachStacktrace = client && client.getOptions().attachStacktrace;\n return [hub, attachStacktrace];\n}\n","import { Integration, WrappedFunction } from '@sentry/types';\nimport { fill, getFunctionName, getGlobalObject, getOriginalFunction } from '@sentry/utils';\n\nimport { wrap } from '../helpers';\n\nconst DEFAULT_EVENT_TARGET = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n];\n\ntype XMLHttpRequestProp = 'onload' | 'onerror' | 'onprogress' | 'onreadystatechange';\n\n/** JSDoc */\ninterface TryCatchOptions {\n setTimeout: boolean;\n setInterval: boolean;\n requestAnimationFrame: boolean;\n XMLHttpRequest: boolean;\n eventTarget: boolean | string[];\n}\n\n/** Wrap timer functions and event targets to catch errors and provide better meta data */\nexport class TryCatch implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'TryCatch';\n\n /**\n * @inheritDoc\n */\n public name: string = TryCatch.id;\n\n /** JSDoc */\n private readonly _options: TryCatchOptions;\n\n /**\n * @inheritDoc\n */\n public constructor(options?: Partial) {\n this._options = {\n XMLHttpRequest: true,\n eventTarget: true,\n requestAnimationFrame: true,\n setInterval: true,\n setTimeout: true,\n ...options,\n };\n }\n\n /**\n * Wrap timer functions and event targets to catch errors\n * and provide better metadata.\n */\n public setupOnce(): void {\n const global = getGlobalObject();\n\n if (this._options.setTimeout) {\n fill(global, 'setTimeout', _wrapTimeFunction);\n }\n\n if (this._options.setInterval) {\n fill(global, 'setInterval', _wrapTimeFunction);\n }\n\n if (this._options.requestAnimationFrame) {\n fill(global, 'requestAnimationFrame', _wrapRAF);\n }\n\n if (this._options.XMLHttpRequest && 'XMLHttpRequest' in global) {\n fill(XMLHttpRequest.prototype, 'send', _wrapXHR);\n }\n\n const eventTargetOption = this._options.eventTarget;\n if (eventTargetOption) {\n const eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n eventTarget.forEach(_wrapEventTarget);\n }\n }\n}\n\n/** JSDoc */\nfunction _wrapTimeFunction(original: () => void): () => number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: any, ...args: any[]): number {\n const originalCallback = args[0];\n args[0] = wrap(originalCallback, {\n mechanism: {\n data: { function: getFunctionName(original) },\n handled: true,\n type: 'instrument',\n },\n });\n return original.apply(this, args);\n };\n}\n\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _wrapRAF(original: any): (callback: () => void) => any {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: any, callback: () => void): () => void {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return original.call(\n this,\n wrap(callback, {\n mechanism: {\n data: {\n function: 'requestAnimationFrame',\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n }),\n );\n };\n}\n\n/** JSDoc */\nfunction _wrapXHR(originalSend: () => void): () => void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: XMLHttpRequest, ...args: any[]): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr = this;\n const xmlHttpRequestProps: XMLHttpRequestProp[] = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n xmlHttpRequestProps.forEach(prop => {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fill(xhr, prop, function (original: WrappedFunction): () => any {\n const wrapOptions = {\n mechanism: {\n data: {\n function: prop,\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n };\n\n // If Instrument integration has been called before TryCatch, get the name of original function\n const originalFunction = getOriginalFunction(original);\n if (originalFunction) {\n wrapOptions.mechanism.data.handler = getFunctionName(originalFunction);\n }\n\n // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n\n return originalSend.apply(this, args);\n };\n}\n\n/** JSDoc */\nfunction _wrapEventTarget(target: string): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const global = getGlobalObject() as { [key: string]: any };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = global[target] && global[target].prototype;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (original: () => void): (\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ) => void {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): (eventName: string, fn: EventListenerObject, capture?: boolean, secure?: boolean) => void {\n try {\n if (typeof fn.handleEvent === 'function') {\n fn.handleEvent = wrap(fn.handleEvent.bind(fn), {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n });\n }\n } catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n return original.call(\n this,\n eventName,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n wrap(fn as any as WrappedFunction, {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n }),\n options,\n );\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (\n originalRemoveEventListener: () => void,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): (this: any, eventName: string, fn: EventListenerObject, options?: boolean | EventListenerOptions) => () => void {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\n /**\n * There are 2 possible scenarios here:\n *\n * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified\n * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function\n * as a pass-through, and call original `removeEventListener` with it.\n *\n * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using\n * our wrapped version of `addEventListener`, which internally calls `wrap` helper.\n * This helper \"wraps\" whole callback inside a try/catch statement, and attached appropriate metadata to it,\n * in order for us to make a distinction between wrapped/non-wrapped functions possible.\n * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.\n *\n * When someone adds a handler prior to initialization, and then do it again, but after,\n * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible\n * to get rid of the initial handler and it'd stick there forever.\n */\n const wrappedEventHandler = fn as unknown as WrappedFunction;\n try {\n const originalEventHandler = wrappedEventHandler && wrappedEventHandler.__sentry_wrapped__;\n if (originalEventHandler) {\n originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n }\n } catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return originalRemoveEventListener.call(this, eventName, wrappedEventHandler, options);\n };\n },\n );\n}\n","export const SeverityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug', 'critical'] as const;\nexport type SeverityLevel = typeof SeverityLevels[number];\n","import { Severity } from '@sentry/types';\n\nimport { SeverityLevel, SeverityLevels } from './enums';\n\nfunction isSupportedSeverity(level: string): level is Severity {\n return SeverityLevels.indexOf(level as SeverityLevel) !== -1;\n}\n/**\n * Converts a string-based level into a {@link Severity}.\n *\n * @param level string representation of Severity\n * @returns Severity\n */\nexport function severityFromString(level: SeverityLevel | string): Severity {\n if (level === 'warn') return Severity.Warning;\n if (isSupportedSeverity(level)) {\n return level;\n }\n return Severity.Log;\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable max-lines */\nimport { getCurrentHub } from '@sentry/core';\nimport { Event, Integration, Severity } from '@sentry/types';\nimport {\n addInstrumentationHandler,\n getEventDescription,\n getGlobalObject,\n htmlTreeAsString,\n parseUrl,\n safeJoin,\n severityFromString,\n} from '@sentry/utils';\n\n/** JSDoc */\ninterface BreadcrumbsOptions {\n console: boolean;\n dom: boolean | { serializeAttribute: string | string[] };\n fetch: boolean;\n history: boolean;\n sentry: boolean;\n xhr: boolean;\n}\n\n/**\n * Default Breadcrumbs instrumentations\n * TODO: Deprecated - with v6, this will be renamed to `Instrument`\n */\nexport class Breadcrumbs implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Breadcrumbs';\n\n /**\n * @inheritDoc\n */\n public name: string = Breadcrumbs.id;\n\n /** JSDoc */\n private readonly _options: BreadcrumbsOptions;\n\n /**\n * @inheritDoc\n */\n public constructor(options?: Partial) {\n this._options = {\n console: true,\n dom: true,\n fetch: true,\n history: true,\n sentry: true,\n xhr: true,\n ...options,\n };\n }\n\n /**\n * Create a breadcrumb of `sentry` from the events themselves\n */\n public addSentryBreadcrumb(event: Event): void {\n if (!this._options.sentry) {\n return;\n }\n getCurrentHub().addBreadcrumb(\n {\n category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n event_id: event.event_id,\n level: event.level,\n message: getEventDescription(event),\n },\n {\n event,\n },\n );\n }\n\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - Console API\n * - DOM API (click/typing)\n * - XMLHttpRequest API\n * - Fetch API\n * - History API\n */\n public setupOnce(): void {\n if (this._options.console) {\n addInstrumentationHandler('console', _consoleBreadcrumb);\n }\n if (this._options.dom) {\n addInstrumentationHandler('dom', _domBreadcrumb(this._options.dom));\n }\n if (this._options.xhr) {\n addInstrumentationHandler('xhr', _xhrBreadcrumb);\n }\n if (this._options.fetch) {\n addInstrumentationHandler('fetch', _fetchBreadcrumb);\n }\n if (this._options.history) {\n addInstrumentationHandler('history', _historyBreadcrumb);\n }\n }\n}\n\n/**\n * A HOC that creaes a function that creates breadcrumbs from DOM API calls.\n * This is a HOC so that we get access to dom options in the closure.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _domBreadcrumb(dom: BreadcrumbsOptions['dom']): (handlerData: { [key: string]: any }) => void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _innerDomBreadcrumb(handlerData: { [key: string]: any }): void {\n let target;\n let keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined;\n\n if (typeof keyAttrs === 'string') {\n keyAttrs = [keyAttrs];\n }\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n target = handlerData.event.target\n ? htmlTreeAsString(handlerData.event.target as Node, keyAttrs)\n : htmlTreeAsString(handlerData.event as unknown as Node, keyAttrs);\n } catch (e) {\n target = '';\n }\n\n if (target.length === 0) {\n return;\n }\n\n getCurrentHub().addBreadcrumb(\n {\n category: `ui.${handlerData.name}`,\n message: target,\n },\n {\n event: handlerData.event,\n name: handlerData.name,\n global: handlerData.global,\n },\n );\n }\n\n return _innerDomBreadcrumb;\n}\n\n/**\n * Creates breadcrumbs from console API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _consoleBreadcrumb(handlerData: { [key: string]: any }): void {\n const breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: severityFromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\n\n if (handlerData.level === 'assert') {\n if (handlerData.args[0] === false) {\n breadcrumb.message = `Assertion failed: ${safeJoin(handlerData.args.slice(1), ' ') || 'console.assert'}`;\n breadcrumb.data.arguments = handlerData.args.slice(1);\n } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n getCurrentHub().addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n}\n\n/**\n * Creates breadcrumbs from XHR API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _xhrBreadcrumb(handlerData: { [key: string]: any }): void {\n if (handlerData.endTimestamp) {\n // We only capture complete, non-sentry requests\n if (handlerData.xhr.__sentry_own_request__) {\n return;\n }\n\n const { method, url, status_code, body } = handlerData.xhr.__sentry_xhr__ || {};\n\n getCurrentHub().addBreadcrumb(\n {\n category: 'xhr',\n data: {\n method,\n url,\n status_code,\n },\n type: 'http',\n },\n {\n xhr: handlerData.xhr,\n input: body,\n },\n );\n\n return;\n }\n}\n\n/**\n * Creates breadcrumbs from fetch API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _fetchBreadcrumb(handlerData: { [key: string]: any }): void {\n // We only capture complete fetch requests\n if (!handlerData.endTimestamp) {\n return;\n }\n\n if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') {\n // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)\n return;\n }\n\n if (handlerData.error) {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: handlerData.fetchData,\n level: Severity.Error,\n type: 'http',\n },\n {\n data: handlerData.error,\n input: handlerData.args,\n },\n );\n } else {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: {\n ...handlerData.fetchData,\n status_code: handlerData.response.status,\n },\n type: 'http',\n },\n {\n input: handlerData.args,\n response: handlerData.response,\n },\n );\n }\n}\n\n/**\n * Creates breadcrumbs from history API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _historyBreadcrumb(handlerData: { [key: string]: any }): void {\n const global = getGlobalObject();\n let from = handlerData.from;\n let to = handlerData.to;\n const parsedLoc = parseUrl(global.location.href);\n let parsedFrom = parseUrl(from);\n const parsedTo = parseUrl(to);\n\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom.path) {\n parsedFrom = parsedLoc;\n }\n\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n from = parsedFrom.relative;\n }\n\n getCurrentHub().addBreadcrumb({\n category: 'navigation',\n data: {\n from,\n to,\n },\n });\n}\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { Event, EventHint, Exception, ExtendedError, Integration } from '@sentry/types';\nimport { isInstanceOf } from '@sentry/utils';\n\nimport { exceptionFromStacktrace } from '../parsers';\nimport { computeStackTrace } from '../tracekit';\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\ninterface LinkedErrorsOptions {\n key: string;\n limit: number;\n}\n\n/** Adds SDK info to an event. */\nexport class LinkedErrors implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'LinkedErrors';\n\n /**\n * @inheritDoc\n */\n public readonly name: string = LinkedErrors.id;\n\n /**\n * @inheritDoc\n */\n private readonly _key: LinkedErrorsOptions['key'];\n\n /**\n * @inheritDoc\n */\n private readonly _limit: LinkedErrorsOptions['limit'];\n\n /**\n * @inheritDoc\n */\n public constructor(options: Partial = {}) {\n this._key = options.key || DEFAULT_KEY;\n this._limit = options.limit || DEFAULT_LIMIT;\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n addGlobalEventProcessor((event: Event, hint?: EventHint) => {\n const self = getCurrentHub().getIntegration(LinkedErrors);\n return self ? _handler(self._key, self._limit, event, hint) : event;\n });\n }\n}\n\n/**\n * @inheritDoc\n */\nexport function _handler(key: string, limit: number, event: Event, hint?: EventHint): Event | null {\n if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return event;\n }\n const linkedErrors = _walkErrorTree(limit, hint.originalException as ExtendedError, key);\n event.exception.values = [...linkedErrors, ...event.exception.values];\n return event;\n}\n\n/**\n * JSDOC\n */\nexport function _walkErrorTree(limit: number, error: ExtendedError, key: string, stack: Exception[] = []): Exception[] {\n if (!isInstanceOf(error[key], Error) || stack.length + 1 >= limit) {\n return stack;\n }\n const stacktrace = computeStackTrace(error[key]);\n const exception = exceptionFromStacktrace(stacktrace);\n return _walkErrorTree(limit, error[key], key, [exception, ...stack]);\n}\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { Event, Integration } from '@sentry/types';\nimport { getGlobalObject } from '@sentry/utils';\n\nconst global = getGlobalObject();\n\n/** UserAgent */\nexport class UserAgent implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'UserAgent';\n\n /**\n * @inheritDoc\n */\n public name: string = UserAgent.id;\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n addGlobalEventProcessor((event: Event) => {\n if (getCurrentHub().getIntegration(UserAgent)) {\n // if none of the information we want exists, don't bother\n if (!global.navigator && !global.location && !global.document) {\n return event;\n }\n\n // grab as much info as exists and add it to the event\n const url = (event.request && event.request.url) || (global.location && global.location.href);\n const { referrer } = global.document || {};\n const { userAgent } = global.navigator || {};\n\n const headers = {\n ...(event.request && event.request.headers),\n ...(referrer && { Referer: referrer }),\n ...(userAgent && { 'User-Agent': userAgent }),\n };\n const request = { ...(url && { url }), headers };\n\n return { ...event, request };\n }\n return event;\n });\n }\n}\n","import { Event, EventProcessor, Exception, Hub, Integration, StackFrame } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\n/** Deduplication filter */\nexport class Dedupe implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Dedupe';\n\n /**\n * @inheritDoc\n */\n public name: string = Dedupe.id;\n\n /**\n * @inheritDoc\n */\n private _previousEvent?: Event;\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n addGlobalEventProcessor((currentEvent: Event) => {\n const self = getCurrentHub().getIntegration(Dedupe);\n if (self) {\n // Juuust in case something goes wrong\n try {\n if (_shouldDropEvent(currentEvent, self._previousEvent)) {\n logger.warn(`Event dropped due to being a duplicate of previously captured event.`);\n return null;\n }\n } catch (_oO) {\n return (self._previousEvent = currentEvent);\n }\n\n return (self._previousEvent = currentEvent);\n }\n return currentEvent;\n });\n }\n}\n\n/** JSDoc */\nfunction _shouldDropEvent(currentEvent: Event, previousEvent?: Event): boolean {\n if (!previousEvent) {\n return false;\n }\n\n if (_isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n return false;\n}\n\n/** JSDoc */\nfunction _isSameMessageEvent(currentEvent: Event, previousEvent: Event): boolean {\n const currentMessage = currentEvent.message;\n const previousMessage = previousEvent.message;\n\n // If neither event has a message property, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n return false;\n }\n\n if (currentMessage !== previousMessage) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameExceptionEvent(currentEvent: Event, previousEvent: Event): boolean {\n const previousException = _getExceptionFromEvent(previousEvent);\n const currentException = _getExceptionFromEvent(currentEvent);\n\n if (!previousException || !currentException) {\n return false;\n }\n\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameStacktrace(currentEvent: Event, previousEvent: Event): boolean {\n let currentFrames = _getFramesFromEvent(currentEvent);\n let previousFrames = _getFramesFromEvent(previousEvent);\n\n // If neither event has a stacktrace, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n return false;\n }\n\n currentFrames = currentFrames as StackFrame[];\n previousFrames = previousFrames as StackFrame[];\n\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n\n // Otherwise, compare the two\n for (let i = 0; i < previousFrames.length; i++) {\n const frameA = previousFrames[i];\n const frameB = currentFrames[i];\n\n if (\n frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function\n ) {\n return false;\n }\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameFingerprint(currentEvent: Event, previousEvent: Event): boolean {\n let currentFingerprint = currentEvent.fingerprint;\n let previousFingerprint = previousEvent.fingerprint;\n\n // If neither event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\n }\n\n // If only one event has a fingerprint, but not the other one, they are not the same\n if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n return false;\n }\n\n currentFingerprint = currentFingerprint as string[];\n previousFingerprint = previousFingerprint as string[];\n\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n } catch (_oO) {\n return false;\n }\n}\n\n/** JSDoc */\nfunction _getExceptionFromEvent(event: Event): Exception | undefined {\n return event.exception && event.exception.values && event.exception.values[0];\n}\n\n/** JSDoc */\nfunction _getFramesFromEvent(event: Event): StackFrame[] | undefined {\n const exception = event.exception;\n\n if (exception) {\n try {\n // @ts-ignore Object could be undefined\n return exception.values[0].stacktrace.frames;\n } catch (_oO) {\n return undefined;\n }\n } else if (event.stacktrace) {\n return event.stacktrace.frames;\n }\n return undefined;\n}\n","export * from './exports';\n\nimport { Integrations as CoreIntegrations } from '@sentry/core';\nimport { getGlobalObject } from '@sentry/utils';\n\nimport * as BrowserIntegrations from './integrations';\nimport * as Transports from './transports';\n\nlet windowIntegrations = {};\n\n// This block is needed to add compatibility with the integrations packages when used with a CDN\nconst _window = getGlobalObject();\nif (_window.Sentry && _window.Sentry.Integrations) {\n windowIntegrations = _window.Sentry.Integrations;\n}\n\nconst INTEGRATIONS = {\n ...windowIntegrations,\n ...CoreIntegrations,\n ...BrowserIntegrations,\n};\n\nexport { INTEGRATIONS as Integrations, Transports };\n","export const SDK_VERSION = '6.17.5';\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { Integration, Options } from '@sentry/types';\nimport { addNonEnumerableProperty, logger } from '@sentry/utils';\n\nexport const installedIntegrations: string[] = [];\n\n/** Map of integrations assigned to a client */\nexport type IntegrationIndex = {\n [key: string]: Integration;\n} & { initialized?: boolean };\n\n/**\n * @private\n */\nfunction filterDuplicates(integrations: Integration[]): Integration[] {\n return integrations.reduce((acc, integrations) => {\n if (acc.every(accIntegration => integrations.name !== accIntegration.name)) {\n acc.push(integrations);\n }\n return acc;\n }, [] as Integration[]);\n}\n\n/** Gets integration to install */\nexport function getIntegrationsToSetup(options: Options): Integration[] {\n const defaultIntegrations = (options.defaultIntegrations && [...options.defaultIntegrations]) || [];\n const userIntegrations = options.integrations;\n\n let integrations: Integration[] = [...filterDuplicates(defaultIntegrations)];\n\n if (Array.isArray(userIntegrations)) {\n // Filter out integrations that are also included in user options\n integrations = [\n ...integrations.filter(integrations =>\n userIntegrations.every(userIntegration => userIntegration.name !== integrations.name),\n ),\n // And filter out duplicated user options integrations\n ...filterDuplicates(userIntegrations),\n ];\n } else if (typeof userIntegrations === 'function') {\n integrations = userIntegrations(integrations);\n integrations = Array.isArray(integrations) ? integrations : [integrations];\n }\n\n // Make sure that if present, `Debug` integration will always run last\n const integrationsNames = integrations.map(i => i.name);\n const alwaysLastToRun = 'Debug';\n if (integrationsNames.indexOf(alwaysLastToRun) !== -1) {\n integrations.push(...integrations.splice(integrationsNames.indexOf(alwaysLastToRun), 1));\n }\n\n return integrations;\n}\n\n/** Setup given integration */\nexport function setupIntegration(integration: Integration): void {\n if (installedIntegrations.indexOf(integration.name) !== -1) {\n return;\n }\n integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n installedIntegrations.push(integration.name);\n logger.log(`Integration installed: ${integration.name}`);\n}\n\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nexport function setupIntegrations(options: O): IntegrationIndex {\n const integrations: IntegrationIndex = {};\n getIntegrationsToSetup(options).forEach(integration => {\n integrations[integration.name] = integration;\n setupIntegration(integration);\n });\n // set the `initialized` flag so we don't run through the process again unecessarily; use `Object.defineProperty`\n // because by default it creates a property which is nonenumerable, which we want since `initialized` shouldn't be\n // considered a member of the index the way the actual integrations are\n addNonEnumerableProperty(integrations, 'initialized', true);\n return integrations;\n}\n","/* eslint-disable max-lines */\nimport { Scope, Session } from '@sentry/hub';\nimport {\n Client,\n DsnComponents,\n Event,\n EventHint,\n Integration,\n IntegrationClass,\n Options,\n Severity,\n Transport,\n} from '@sentry/types';\nimport {\n checkOrSetAlreadyCaught,\n dateTimestampInSeconds,\n isDebugBuild,\n isPlainObject,\n isPrimitive,\n isThenable,\n logger,\n makeDsn,\n normalize,\n rejectedSyncPromise,\n resolvedSyncPromise,\n SentryError,\n SyncPromise,\n truncate,\n uuid4,\n} from '@sentry/utils';\n\nimport { Backend, BackendClass } from './basebackend';\nimport { IntegrationIndex, setupIntegrations } from './integration';\n\nconst ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding backend constructor and options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}. Also, the Backend instance is available via\n * {@link Client.getBackend}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event via the backend, it is passed through\n * {@link BaseClient._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient {\n * public constructor(options: NodeOptions) {\n * super(NodeBackend, options);\n * }\n *\n * // ...\n * }\n */\nexport abstract class BaseClient implements Client {\n /**\n * The backend used to physically interact in the environment. Usually, this\n * will correspond to the client. When composing SDKs, however, the Backend\n * from the root SDK will be used.\n */\n protected readonly _backend: B;\n\n /** Options passed to the SDK. */\n protected readonly _options: O;\n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n protected readonly _dsn?: DsnComponents;\n\n /** Array of used integrations. */\n protected _integrations: IntegrationIndex = {};\n\n /** Number of calls being processed */\n protected _numProcessing: number = 0;\n\n /**\n * Initializes this client instance.\n *\n * @param backendClass A constructor function to create the backend.\n * @param options Options for the client.\n */\n protected constructor(backendClass: BackendClass, options: O) {\n this._backend = new backendClass(options);\n this._options = options;\n\n if (options.dsn) {\n this._dsn = makeDsn(options.dsn);\n }\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public captureException(exception: any, hint?: EventHint, scope?: Scope): string | undefined {\n // ensure we haven't captured this very object before\n if (checkOrSetAlreadyCaught(exception)) {\n logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId: string | undefined = hint && hint.event_id;\n\n this._process(\n this._getBackend()\n .eventFromException(exception, hint)\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(message: string, level?: Severity, hint?: EventHint, scope?: Scope): string | undefined {\n let eventId: string | undefined = hint && hint.event_id;\n\n const promisedEvent = isPrimitive(message)\n ? this._getBackend().eventFromMessage(String(message), level, hint)\n : this._getBackend().eventFromException(message, hint);\n\n this._process(\n promisedEvent\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint, scope?: Scope): string | undefined {\n // ensure we haven't captured this very object before\n if (hint && hint.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId: string | undefined = hint && hint.event_id;\n\n this._process(\n this._captureEvent(event, hint, scope).then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureSession(session: Session): void {\n if (!this._isEnabled()) {\n if (isDebugBuild()) {\n logger.warn('SDK not enabled, will not capture session.');\n }\n return;\n }\n\n if (!(typeof session.release === 'string')) {\n if (isDebugBuild()) {\n logger.warn('Discarded session because of missing or non-string release');\n }\n } else {\n this._sendSession(session);\n // After sending, we set init false to indicate it's not the first occurrence\n session.update({ init: false });\n }\n }\n\n /**\n * @inheritDoc\n */\n public getDsn(): DsnComponents | undefined {\n return this._dsn;\n }\n\n /**\n * @inheritDoc\n */\n public getOptions(): O {\n return this._options;\n }\n\n /**\n * @inheritDoc\n */\n public getTransport(): Transport {\n return this._getBackend().getTransport();\n }\n\n /**\n * @inheritDoc\n */\n public flush(timeout?: number): PromiseLike {\n return this._isClientDoneProcessing(timeout).then(clientFinished => {\n return this.getTransport()\n .close(timeout)\n .then(transportFlushed => clientFinished && transportFlushed);\n });\n }\n\n /**\n * @inheritDoc\n */\n public close(timeout?: number): PromiseLike {\n return this.flush(timeout).then(result => {\n this.getOptions().enabled = false;\n return result;\n });\n }\n\n /**\n * Sets up the integrations\n */\n public setupIntegrations(): void {\n if (this._isEnabled() && !this._integrations.initialized) {\n this._integrations = setupIntegrations(this._options);\n }\n }\n\n /**\n * @inheritDoc\n */\n public getIntegration(integration: IntegrationClass): T | null {\n try {\n return (this._integrations[integration.id] as T) || null;\n } catch (_oO) {\n logger.warn(`Cannot retrieve integration ${integration.id} from the current Client`);\n return null;\n }\n }\n\n /** Updates existing session based on the provided event */\n protected _updateSessionFromEvent(session: Session, event: Event): void {\n let crashed = false;\n let errored = false;\n const exceptions = event.exception && event.exception.values;\n\n if (exceptions) {\n errored = true;\n\n for (const ex of exceptions) {\n const mechanism = ex.mechanism;\n if (mechanism && mechanism.handled === false) {\n crashed = true;\n break;\n }\n }\n }\n\n // A session is updated and that session update is sent in only one of the two following scenarios:\n // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update\n // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update\n const sessionNonTerminal = session.status === 'ok';\n const shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed);\n\n if (shouldUpdateAndSend) {\n session.update({\n ...(crashed && { status: 'crashed' }),\n errors: session.errors || Number(errored || crashed),\n });\n this.captureSession(session);\n }\n }\n\n /** Deliver captured session to Sentry */\n protected _sendSession(session: Session): void {\n this._getBackend().sendSession(session);\n }\n\n /**\n * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n * `false` otherwise\n */\n protected _isClientDoneProcessing(timeout?: number): PromiseLike {\n return new SyncPromise(resolve => {\n let ticked: number = 0;\n const tick: number = 1;\n\n const interval = setInterval(() => {\n if (this._numProcessing == 0) {\n clearInterval(interval);\n resolve(true);\n } else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n clearInterval(interval);\n resolve(false);\n }\n }\n }, tick);\n });\n }\n\n /** Returns the current backend. */\n protected _getBackend(): B {\n return this._backend;\n }\n\n /** Determines whether this SDK is enabled and a valid Dsn is present. */\n protected _isEnabled(): boolean {\n return this.getOptions().enabled !== false && this._dsn !== undefined;\n }\n\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n */\n protected _prepareEvent(event: Event, scope?: Scope, hint?: EventHint): PromiseLike {\n const { normalizeDepth = 3 } = this.getOptions();\n const prepared: Event = {\n ...event,\n event_id: event.event_id || (hint && hint.event_id ? hint.event_id : uuid4()),\n timestamp: event.timestamp || dateTimestampInSeconds(),\n };\n\n this._applyClientOptions(prepared);\n this._applyIntegrationsMetadata(prepared);\n\n // If we have scope given to us, use it as the base for further modifications.\n // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n let finalScope = scope;\n if (hint && hint.captureContext) {\n finalScope = Scope.clone(finalScope).update(hint.captureContext);\n }\n\n // We prepare the result here with a resolved Event.\n let result = resolvedSyncPromise(prepared);\n\n // This should be the last thing called, since we want that\n // {@link Hub.addEventProcessor} gets the finished prepared event.\n if (finalScope) {\n // In case we have a hub we reassign it.\n result = finalScope.applyToEvent(prepared, hint);\n }\n\n return result.then(evt => {\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return this._normalizeEvent(evt, normalizeDepth);\n }\n return evt;\n });\n }\n\n /**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\n protected _normalizeEvent(event: Event | null, depth: number): Event | null {\n if (!event) {\n return null;\n }\n\n const normalized = {\n ...event,\n ...(event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(b => ({\n ...b,\n ...(b.data && {\n data: normalize(b.data, depth),\n }),\n })),\n }),\n ...(event.user && {\n user: normalize(event.user, depth),\n }),\n ...(event.contexts && {\n contexts: normalize(event.contexts, depth),\n }),\n ...(event.extra && {\n extra: normalize(event.extra, depth),\n }),\n };\n // event.contexts.trace stores information about a Transaction. Similarly,\n // event.spans[] stores information about child Spans. Given that a\n // Transaction is conceptually a Span, normalization should apply to both\n // Transactions and Spans consistently.\n // For now the decision is to skip normalization of Transactions and Spans,\n // so this block overwrites the normalized event to add back the original\n // Transaction information prior to normalization.\n if (event.contexts && event.contexts.trace) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n normalized.contexts.trace = event.contexts.trace;\n }\n\n event.sdkProcessingMetadata = { ...event.sdkProcessingMetadata, baseClientNormalized: true };\n\n return normalized;\n }\n\n /**\n * Enhances event using the client configuration.\n * It takes care of all \"static\" values like environment, release and `dist`,\n * as well as truncating overly long values.\n * @param event event instance to be enhanced\n */\n protected _applyClientOptions(event: Event): void {\n const options = this.getOptions();\n const { environment, release, dist, maxValueLength = 250 } = options;\n\n if (!('environment' in event)) {\n event.environment = 'environment' in options ? environment : 'production';\n }\n\n if (event.release === undefined && release !== undefined) {\n event.release = release;\n }\n\n if (event.dist === undefined && dist !== undefined) {\n event.dist = dist;\n }\n\n if (event.message) {\n event.message = truncate(event.message, maxValueLength);\n }\n\n const exception = event.exception && event.exception.values && event.exception.values[0];\n if (exception && exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n\n const request = event.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\n }\n }\n\n /**\n * This function adds all used integrations to the SDK info in the event.\n * @param event The event that will be filled with all integrations.\n */\n protected _applyIntegrationsMetadata(event: Event): void {\n const integrationsArray = Object.keys(this._integrations);\n if (integrationsArray.length > 0) {\n event.sdk = event.sdk || {};\n event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationsArray];\n }\n }\n\n /**\n * Tells the backend to send this event\n * @param event The Sentry event to send\n */\n protected _sendEvent(event: Event): void {\n this._getBackend().sendEvent(event);\n }\n\n /**\n * Processes the event and logs an error in case of rejection\n * @param event\n * @param hint\n * @param scope\n */\n protected _captureEvent(event: Event, hint?: EventHint, scope?: Scope): PromiseLike {\n return this._processEvent(event, hint, scope).then(\n finalEvent => {\n return finalEvent.event_id;\n },\n reason => {\n logger.error(reason);\n return undefined;\n },\n );\n }\n\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n protected _processEvent(event: Event, hint?: EventHint, scope?: Scope): PromiseLike {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const { beforeSend, sampleRate } = this.getOptions();\n const transport = this.getTransport();\n\n type RecordLostEvent = NonNullable;\n type RecordLostEventParams = Parameters;\n\n function recordLostEvent(outcome: RecordLostEventParams[0], category: RecordLostEventParams[1]): void {\n if (transport.recordLostEvent) {\n transport.recordLostEvent(outcome, category);\n }\n }\n\n if (!this._isEnabled()) {\n return rejectedSyncPromise(new SentryError('SDK not enabled, will not capture event.'));\n }\n\n const isTransaction = event.type === 'transaction';\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n // Sampling for transaction happens somewhere else\n if (!isTransaction && typeof sampleRate === 'number' && Math.random() > sampleRate) {\n recordLostEvent('sample_rate', 'event');\n return rejectedSyncPromise(\n new SentryError(\n `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n ),\n );\n }\n\n return this._prepareEvent(event, scope, hint)\n .then(prepared => {\n if (prepared === null) {\n recordLostEvent('event_processor', event.type || 'event');\n throw new SentryError('An event processor returned null, will not send event.');\n }\n\n const isInternalException = hint && hint.data && (hint.data as { __sentry__: boolean }).__sentry__ === true;\n if (isInternalException || isTransaction || !beforeSend) {\n return prepared;\n }\n\n const beforeSendResult = beforeSend(prepared, hint);\n return _ensureBeforeSendRv(beforeSendResult);\n })\n .then(processedEvent => {\n if (processedEvent === null) {\n recordLostEvent('before_send', event.type || 'event');\n throw new SentryError('`beforeSend` returned `null`, will not send event.');\n }\n\n const session = scope && scope.getSession && scope.getSession();\n if (!isTransaction && session) {\n this._updateSessionFromEvent(session, processedEvent);\n }\n\n this._sendEvent(processedEvent);\n return processedEvent;\n })\n .then(null, reason => {\n if (reason instanceof SentryError) {\n throw reason;\n }\n\n this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason as Error,\n });\n throw new SentryError(\n `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n );\n });\n }\n\n /**\n * Occupies the client with processing and event\n */\n protected _process(promise: PromiseLike): void {\n this._numProcessing += 1;\n void promise.then(\n value => {\n this._numProcessing -= 1;\n return value;\n },\n reason => {\n this._numProcessing -= 1;\n return reason;\n },\n );\n }\n}\n\n/**\n * Verifies that return value of configured `beforeSend` is of expected type.\n */\nfunction _ensureBeforeSendRv(rv: PromiseLike | Event | null): PromiseLike | Event | null {\n const nullErr = '`beforeSend` method has to return `null` or a valid event.';\n if (isThenable(rv)) {\n return rv.then(\n event => {\n if (!(isPlainObject(event) || event === null)) {\n throw new SentryError(nullErr);\n }\n return event;\n },\n e => {\n throw new SentryError(`beforeSend rejected with ${e}`);\n },\n );\n } else if (!(isPlainObject(rv) || rv === null)) {\n throw new SentryError(nullErr);\n }\n return rv;\n}\n","import { Event, Response, Transport } from '@sentry/types';\nimport { resolvedSyncPromise } from '@sentry/utils';\n\n/** Noop transport */\nexport class NoopTransport implements Transport {\n /**\n * @inheritDoc\n */\n public sendEvent(_: Event): PromiseLike {\n return resolvedSyncPromise({\n reason: `NoopTransport: Event has been skipped because no Dsn is configured.`,\n status: 'skipped',\n });\n }\n\n /**\n * @inheritDoc\n */\n public close(_?: number): PromiseLike {\n return resolvedSyncPromise(true);\n }\n}\n","import { Event, EventHint, Options, Session, Severity, Transport } from '@sentry/types';\nimport { isDebugBuild, logger, SentryError } from '@sentry/utils';\n\nimport { NoopTransport } from './transports/noop';\n\n/**\n * Internal platform-dependent Sentry SDK Backend.\n *\n * While {@link Client} contains business logic specific to an SDK, the\n * Backend offers platform specific implementations for low-level operations.\n * These are persisting and loading information, sending events, and hooking\n * into the environment.\n *\n * Backends receive a handle to the Client in their constructor. When a\n * Backend automatically generates events, it must pass them to\n * the Client for validation and processing first.\n *\n * Usually, the Client will be of corresponding type, e.g. NodeBackend\n * receives NodeClient. However, higher-level SDKs can choose to instantiate\n * multiple Backends and delegate tasks between them. In this case, an event\n * generated by one backend might very well be sent by another one.\n *\n * The client also provides access to options via {@link Client.getOptions}.\n * @hidden\n */\nexport interface Backend {\n /** Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n eventFromException(exception: any, hint?: EventHint): PromiseLike;\n\n /** Creates an {@link Event} from primitive inputs to `captureMessage`. */\n eventFromMessage(message: string, level?: Severity, hint?: EventHint): PromiseLike;\n\n /** Submits the event to Sentry */\n sendEvent(event: Event): void;\n\n /** Submits the session to Sentry */\n sendSession(session: Session): void;\n\n /**\n * Returns the transport that is used by the backend.\n * Please note that the transport gets lazy initialized so it will only be there once the first event has been sent.\n *\n * @returns The transport.\n */\n getTransport(): Transport;\n}\n\n/**\n * A class object that can instantiate Backend objects.\n * @hidden\n */\nexport type BackendClass = new (options: O) => B;\n\n/**\n * This is the base implemention of a Backend.\n * @hidden\n */\nexport abstract class BaseBackend implements Backend {\n /** Options passed to the SDK. */\n protected readonly _options: O;\n\n /** Cached transport used internally. */\n protected _transport: Transport;\n\n /** Creates a new backend instance. */\n public constructor(options: O) {\n this._options = options;\n if (!this._options.dsn) {\n logger.warn('No DSN provided, backend will not do anything.');\n }\n this._transport = this._setupTransport();\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public eventFromException(_exception: any, _hint?: EventHint): PromiseLike {\n throw new SentryError('Backend has to implement `eventFromException` method');\n }\n\n /**\n * @inheritDoc\n */\n public eventFromMessage(_message: string, _level?: Severity, _hint?: EventHint): PromiseLike {\n throw new SentryError('Backend has to implement `eventFromMessage` method');\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event): void {\n void this._transport.sendEvent(event).then(null, reason => {\n if (isDebugBuild()) {\n logger.error(`Error while sending event: ${reason}`);\n }\n });\n }\n\n /**\n * @inheritDoc\n */\n public sendSession(session: Session): void {\n if (!this._transport.sendSession) {\n if (isDebugBuild()) {\n logger.warn(\"Dropping session because custom transport doesn't implement sendSession\");\n }\n return;\n }\n\n void this._transport.sendSession(session).then(null, reason => {\n if (isDebugBuild()) {\n logger.error(`Error while sending session: ${reason}`);\n }\n });\n }\n\n /**\n * @inheritDoc\n */\n public getTransport(): Transport {\n return this._transport;\n }\n\n /**\n * Sets up the transport so it can be used later to send requests.\n */\n protected _setupTransport(): Transport {\n return new NoopTransport();\n }\n}\n","import { Event, SdkInfo, SentryRequest, SentryRequestType, Session, SessionAggregates } from '@sentry/types';\nimport { dsnToString, normalize } from '@sentry/utils';\n\nimport { APIDetails, getEnvelopeEndpointWithUrlEncodedAuth, getStoreEndpointWithUrlEncodedAuth } from './api';\n\n/** Extract sdk info from from the API metadata */\nfunction getSdkMetadataForEnvelopeHeader(api: APIDetails): SdkInfo | undefined {\n if (!api.metadata || !api.metadata.sdk) {\n return;\n }\n const { name, version } = api.metadata.sdk;\n return { name, version };\n}\n\n/**\n * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.\n * Merge with existing data if any.\n **/\nfunction enhanceEventWithSdkInfo(event: Event, sdkInfo?: SdkInfo): Event {\n if (!sdkInfo) {\n return event;\n }\n event.sdk = event.sdk || {};\n event.sdk.name = event.sdk.name || sdkInfo.name;\n event.sdk.version = event.sdk.version || sdkInfo.version;\n event.sdk.integrations = [...(event.sdk.integrations || []), ...(sdkInfo.integrations || [])];\n event.sdk.packages = [...(event.sdk.packages || []), ...(sdkInfo.packages || [])];\n return event;\n}\n\n/** Creates a SentryRequest from a Session. */\nexport function sessionToSentryRequest(session: Session | SessionAggregates, api: APIDetails): SentryRequest {\n const sdkInfo = getSdkMetadataForEnvelopeHeader(api);\n const envelopeHeaders = JSON.stringify({\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!api.tunnel && { dsn: dsnToString(api.dsn) }),\n });\n // I know this is hacky but we don't want to add `session` to request type since it's never rate limited\n const type: SentryRequestType = 'aggregates' in session ? ('sessions' as SentryRequestType) : 'session';\n const itemHeaders = JSON.stringify({\n type,\n });\n\n return {\n body: `${envelopeHeaders}\\n${itemHeaders}\\n${JSON.stringify(session)}`,\n type,\n url: getEnvelopeEndpointWithUrlEncodedAuth(api.dsn, api.tunnel),\n };\n}\n\n/** Creates a SentryRequest from an event. */\nexport function eventToSentryRequest(event: Event, api: APIDetails): SentryRequest {\n const sdkInfo = getSdkMetadataForEnvelopeHeader(api);\n const eventType = event.type || 'event';\n const useEnvelope = eventType === 'transaction' || !!api.tunnel;\n\n const { transactionSampling } = event.sdkProcessingMetadata || {};\n const { method: samplingMethod, rate: sampleRate } = transactionSampling || {};\n\n // TODO: Below is a temporary hack in order to debug a serialization error - see\n // https://github.com/getsentry/sentry-javascript/issues/2809 and\n // https://github.com/getsentry/sentry-javascript/pull/4425. TL;DR: even though we normalize all events (which should\n // prevent this), something is causing `JSON.stringify` to throw a circular reference error.\n //\n // When it's time to remove it:\n // 1. Delete everything between here and where the request object `req` is created, EXCEPT the line deleting\n // `sdkProcessingMetadata`\n // 2. Restore the original version of the request body, which is commented out\n // 3. Search for `skippedNormalization` and pull out the companion hack in the browser playwright tests\n enhanceEventWithSdkInfo(event, api.metadata.sdk);\n event.tags = event.tags || {};\n event.extra = event.extra || {};\n\n // In theory, all events should be marked as having gone through normalization and so\n // we should never set this tag\n if (!(event.sdkProcessingMetadata && event.sdkProcessingMetadata.baseClientNormalized)) {\n event.tags.skippedNormalization = true;\n }\n\n // prevent this data from being sent to sentry\n // TODO: This is NOT part of the hack - DO NOT DELETE\n delete event.sdkProcessingMetadata;\n\n let body;\n try {\n // 99.9% of events should get through just fine - no change in behavior for them\n body = JSON.stringify(event);\n } catch (err) {\n // Record data about the error without replacing original event data, then force renormalization\n event.tags.JSONStringifyError = true;\n event.extra.JSONStringifyError = err;\n try {\n body = JSON.stringify(normalize(event));\n } catch (newErr) {\n // At this point even renormalization hasn't worked, meaning something about the event data has gone very wrong.\n // Time to cut our losses and record only the new error. With luck, even in the problematic cases we're trying to\n // debug with this hack, we won't ever land here.\n const innerErr = newErr as Error;\n body = JSON.stringify({\n message: 'JSON.stringify error after renormalization',\n // setting `extra: { innerErr }` here for some reason results in an empty object, so unpack manually\n extra: { message: innerErr.message, stack: innerErr.stack },\n });\n }\n }\n\n const req: SentryRequest = {\n // this is the relevant line of code before the hack was added, to make it easy to undo said hack once we've solved\n // the mystery\n // body: JSON.stringify(sdkInfo ? enhanceEventWithSdkInfo(event, api.metadata.sdk) : event),\n body,\n type: eventType,\n url: useEnvelope\n ? getEnvelopeEndpointWithUrlEncodedAuth(api.dsn, api.tunnel)\n : getStoreEndpointWithUrlEncodedAuth(api.dsn),\n };\n\n // https://develop.sentry.dev/sdk/envelopes/\n\n // Since we don't need to manipulate envelopes nor store them, there is no\n // exported concept of an Envelope with operations including serialization and\n // deserialization. Instead, we only implement a minimal subset of the spec to\n // serialize events inline here.\n if (useEnvelope) {\n const envelopeHeaders = JSON.stringify({\n event_id: event.event_id,\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!api.tunnel && { dsn: dsnToString(api.dsn) }),\n });\n const itemHeaders = JSON.stringify({\n type: eventType,\n\n // TODO: Right now, sampleRate may or may not be defined (it won't be in the cases of inheritance and\n // explicitly-set sampling decisions). Are we good with that?\n sample_rates: [{ id: samplingMethod, rate: sampleRate }],\n\n // The content-type is assumed to be 'application/json' and not part of\n // the current spec for transaction items, so we don't bloat the request\n // body with it.\n //\n // content_type: 'application/json',\n //\n // The length is optional. It must be the number of bytes in req.Body\n // encoded as UTF-8. Since the server can figure this out and would\n // otherwise refuse events that report the length incorrectly, we decided\n // not to send the length to avoid problems related to reporting the wrong\n // size and to reduce request body size.\n //\n // length: new TextEncoder().encode(req.body).length,\n });\n // The trailing newline is optional. We intentionally don't send it to avoid\n // sending unnecessary bytes.\n //\n // const envelope = `${envelopeHeaders}\\n${itemHeaders}\\n${req.body}\\n`;\n const envelope = `${envelopeHeaders}\\n${itemHeaders}\\n${req.body}`;\n req.body = envelope;\n }\n\n return req;\n}\n","import { SentryError } from './error';\nimport { rejectedSyncPromise, resolvedSyncPromise, SyncPromise } from './syncpromise';\n\nexport interface PromiseBuffer {\n // exposes the internal array so tests can assert on the state of it.\n // XXX: this really should not be public api.\n $: Array>;\n add(taskProducer: () => PromiseLike): PromiseLike;\n drain(timeout?: number): PromiseLike;\n}\n\n/**\n * Creates an new PromiseBuffer object with the specified limit\n * @param limit max number of promises that can be stored in the buffer\n */\nexport function makePromiseBuffer(limit?: number): PromiseBuffer {\n const buffer: Array> = [];\n\n function isReady(): boolean {\n return limit === undefined || buffer.length < limit;\n }\n\n /**\n * Remove a promise from the queue.\n *\n * @param task Can be any PromiseLike\n * @returns Removed promise.\n */\n function remove(task: PromiseLike): PromiseLike {\n return buffer.splice(buffer.indexOf(task), 1)[0];\n }\n\n /**\n * Add a promise (representing an in-flight action) to the queue, and set it to remove itself on fulfillment.\n *\n * @param taskProducer A function producing any PromiseLike; In previous versions this used to be `task:\n * PromiseLike`, but under that model, Promises were instantly created on the call-site and their executor\n * functions therefore ran immediately. Thus, even if the buffer was full, the action still happened. By\n * requiring the promise to be wrapped in a function, we can defer promise creation until after the buffer\n * limit check.\n * @returns The original promise.\n */\n function add(taskProducer: () => PromiseLike): PromiseLike {\n if (!isReady()) {\n return rejectedSyncPromise(new SentryError('Not adding Promise due to buffer limit reached.'));\n }\n\n // start the task and add its promise to the queue\n const task = taskProducer();\n if (buffer.indexOf(task) === -1) {\n buffer.push(task);\n }\n void task\n .then(() => remove(task))\n // Use `then(null, rejectionHandler)` rather than `catch(rejectionHandler)` so that we can use `PromiseLike`\n // rather than `Promise`. `PromiseLike` doesn't have a `.catch` method, making its polyfill smaller. (ES5 didn't\n // have promises, so TS has to polyfill when down-compiling.)\n .then(null, () =>\n remove(task).then(null, () => {\n // We have to add another catch here because `remove()` starts a new promise chain.\n }),\n );\n return task;\n }\n\n /**\n * Wait for all promises in the queue to resolve or for timeout to expire, whichever comes first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the queue is still non-empty. Passing `0` (or\n * not passing anything) will make the promise wait as long as it takes for the queue to drain before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if the queue is already empty or drains before the timeout, and\n * `false` otherwise\n */\n function drain(timeout?: number): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n let counter = buffer.length;\n\n if (!counter) {\n return resolve(true);\n }\n\n // wait for `timeout` ms and then resolve to `false` (if not cancelled first)\n const capturedSetTimeout = setTimeout(() => {\n if (timeout && timeout > 0) {\n resolve(false);\n }\n }, timeout);\n\n // if all promises resolve in time, cancel the timer and resolve to `true`\n buffer.forEach(item => {\n void resolvedSyncPromise(item).then(() => {\n // eslint-disable-next-line no-plusplus\n if (!--counter) {\n clearTimeout(capturedSetTimeout);\n resolve(true);\n }\n }, reject);\n });\n });\n }\n\n return {\n $: buffer,\n add,\n drain,\n };\n}\n","import { forget, getGlobalObject, isDebugBuild, isNativeFetch, logger, supportsFetch } from '@sentry/utils';\n\nconst global = getGlobalObject();\nlet cachedFetchImpl: FetchImpl;\n\nexport type FetchImpl = typeof fetch;\n\n/**\n * A special usecase for incorrectly wrapped Fetch APIs in conjunction with ad-blockers.\n * Whenever someone wraps the Fetch API and returns the wrong promise chain,\n * this chain becomes orphaned and there is no possible way to capture it's rejections\n * other than allowing it bubble up to this very handler. eg.\n *\n * const f = window.fetch;\n * window.fetch = function () {\n * const p = f.apply(this, arguments);\n *\n * p.then(function() {\n * console.log('hi.');\n * });\n *\n * return p;\n * }\n *\n * `p.then(function () { ... })` is producing a completely separate promise chain,\n * however, what's returned is `p` - the result of original `fetch` call.\n *\n * This mean, that whenever we use the Fetch API to send our own requests, _and_\n * some ad-blocker blocks it, this orphaned chain will _always_ reject,\n * effectively causing another event to be captured.\n * This makes a whole process become an infinite loop, which we need to somehow\n * deal with, and break it in one way or another.\n *\n * To deal with this issue, we are making sure that we _always_ use the real\n * browser Fetch API, instead of relying on what `window.fetch` exposes.\n * The only downside to this would be missing our own requests as breadcrumbs,\n * but because we are already not doing this, it should be just fine.\n *\n * Possible failed fetch error messages per-browser:\n *\n * Chrome: Failed to fetch\n * Edge: Failed to Fetch\n * Firefox: NetworkError when attempting to fetch resource\n * Safari: resource blocked by content blocker\n */\nexport function getNativeFetchImplementation(): FetchImpl {\n if (cachedFetchImpl) {\n return cachedFetchImpl;\n }\n\n /* eslint-disable @typescript-eslint/unbound-method */\n\n // Fast path to avoid DOM I/O\n if (isNativeFetch(global.fetch)) {\n return (cachedFetchImpl = global.fetch.bind(global));\n }\n\n const document = global.document;\n let fetchImpl = global.fetch;\n // eslint-disable-next-line deprecation/deprecation\n if (document && typeof document.createElement === `function`) {\n try {\n const sandbox = document.createElement('iframe');\n sandbox.hidden = true;\n document.head.appendChild(sandbox);\n const contentWindow = sandbox.contentWindow;\n if (contentWindow && contentWindow.fetch) {\n fetchImpl = contentWindow.fetch;\n }\n document.head.removeChild(sandbox);\n } catch (e) {\n if (isDebugBuild()) {\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', e);\n }\n }\n }\n\n return (cachedFetchImpl = fetchImpl.bind(global));\n /* eslint-enable @typescript-eslint/unbound-method */\n}\n\n/**\n * Sends sdk client report using sendBeacon or fetch as a fallback if available\n *\n * @param url report endpoint\n * @param body report payload\n */\nexport function sendReport(url: string, body: string): void {\n const isRealNavigator = Object.prototype.toString.call(global && global.navigator) === '[object Navigator]';\n const hasSendBeacon = isRealNavigator && typeof global.navigator.sendBeacon === 'function';\n\n if (hasSendBeacon) {\n // Prevent illegal invocations - https://xgwang.me/posts/you-may-not-know-beacon/#it-may-throw-error%2C-be-sure-to-catch\n const sendBeacon = global.navigator.sendBeacon.bind(global.navigator);\n return sendBeacon(url, body);\n }\n\n if (supportsFetch()) {\n const fetch = getNativeFetchImplementation();\n return forget(\n fetch(url, {\n body,\n method: 'POST',\n credentials: 'omit',\n keepalive: true,\n }),\n );\n }\n}\n","/**\n * Consumes the promise and logs the error when it rejects.\n * @param promise A promise to forget.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function forget(promise: PromiseLike): void {\n void promise.then(null, e => {\n // TODO: Use a better logging mechanism\n // eslint-disable-next-line no-console\n console.error(e);\n });\n}\n","import {\n APIDetails,\n eventToSentryRequest,\n getEnvelopeEndpointWithUrlEncodedAuth,\n getStoreEndpointWithUrlEncodedAuth,\n initAPIDetails,\n sessionToSentryRequest,\n} from '@sentry/core';\nimport {\n Event,\n Outcome,\n Response as SentryResponse,\n SentryRequest,\n SentryRequestType,\n Session,\n Transport,\n TransportOptions,\n} from '@sentry/types';\nimport {\n dateTimestampInSeconds,\n dsnToString,\n eventStatusFromHttpCode,\n getGlobalObject,\n isDebugBuild,\n logger,\n makePromiseBuffer,\n parseRetryAfterHeader,\n PromiseBuffer,\n} from '@sentry/utils';\n\nimport { sendReport } from './utils';\n\nfunction requestTypeToCategory(ty: SentryRequestType): string {\n const tyStr = ty as string;\n return tyStr === 'event' ? 'error' : tyStr;\n}\n\nconst global = getGlobalObject();\n\n/** Base Transport class implementation */\nexport abstract class BaseTransport implements Transport {\n /**\n * @deprecated\n */\n public url: string;\n\n /** Helper to get Sentry API endpoints. */\n protected readonly _api: APIDetails;\n\n /** A simple buffer holding all requests. */\n protected readonly _buffer: PromiseBuffer = makePromiseBuffer(30);\n\n /** Locks transport after receiving rate limits in a response */\n protected readonly _rateLimits: Record = {};\n\n protected _outcomes: { [key: string]: number } = {};\n\n public constructor(public options: TransportOptions) {\n this._api = initAPIDetails(options.dsn, options._metadata, options.tunnel);\n // eslint-disable-next-line deprecation/deprecation\n this.url = getStoreEndpointWithUrlEncodedAuth(this._api.dsn);\n\n if (this.options.sendClientReports && global.document) {\n global.document.addEventListener('visibilitychange', () => {\n if (global.document.visibilityState === 'hidden') {\n this._flushOutcomes();\n }\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event): PromiseLike {\n return this._sendRequest(eventToSentryRequest(event, this._api), event);\n }\n\n /**\n * @inheritDoc\n */\n public sendSession(session: Session): PromiseLike {\n return this._sendRequest(sessionToSentryRequest(session, this._api), session);\n }\n\n /**\n * @inheritDoc\n */\n public close(timeout?: number): PromiseLike {\n return this._buffer.drain(timeout);\n }\n\n /**\n * @inheritDoc\n */\n public recordLostEvent(reason: Outcome, category: SentryRequestType): void {\n if (!this.options.sendClientReports) {\n return;\n }\n // We want to track each category (event, transaction, session) separately\n // but still keep the distinction between different type of outcomes.\n // We could use nested maps, but it's much easier to read and type this way.\n // A correct type for map-based implementation if we want to go that route\n // would be `Partial>>>`\n const key = `${requestTypeToCategory(category)}:${reason}`;\n logger.log(`Adding outcome: ${key}`);\n this._outcomes[key] = (this._outcomes[key] ?? 0) + 1;\n }\n\n /**\n * Send outcomes as an envelope\n */\n protected _flushOutcomes(): void {\n if (!this.options.sendClientReports) {\n return;\n }\n\n const outcomes = this._outcomes;\n this._outcomes = {};\n\n // Nothing to send\n if (!Object.keys(outcomes).length) {\n logger.log('No outcomes to flush');\n return;\n }\n\n logger.log(`Flushing outcomes:\\n${JSON.stringify(outcomes, null, 2)}`);\n\n const url = getEnvelopeEndpointWithUrlEncodedAuth(this._api.dsn, this._api.tunnel);\n // Envelope header is required to be at least an empty object\n const envelopeHeader = JSON.stringify({ ...(this._api.tunnel && { dsn: dsnToString(this._api.dsn) }) });\n const itemHeaders = JSON.stringify({\n type: 'client_report',\n });\n const item = JSON.stringify({\n timestamp: dateTimestampInSeconds(),\n discarded_events: Object.keys(outcomes).map(key => {\n const [category, reason] = key.split(':');\n return {\n reason,\n category,\n quantity: outcomes[key],\n };\n }),\n });\n const envelope = `${envelopeHeader}\\n${itemHeaders}\\n${item}`;\n\n try {\n sendReport(url, envelope);\n } catch (e) {\n logger.error(e);\n }\n }\n\n /**\n * Handle Sentry repsonse for promise-based transports.\n */\n protected _handleResponse({\n requestType,\n response,\n headers,\n resolve,\n reject,\n }: {\n requestType: SentryRequestType;\n response: Response | XMLHttpRequest;\n headers: Record;\n resolve: (value?: SentryResponse | PromiseLike | null | undefined) => void;\n reject: (reason?: unknown) => void;\n }): void {\n const status = eventStatusFromHttpCode(response.status);\n /**\n * \"The name is case-insensitive.\"\n * https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n */\n const limited = this._handleRateLimit(headers);\n if (limited && isDebugBuild()) {\n logger.warn(`Too many ${requestType} requests, backing off until: ${this._disabledUntil(requestType)}`);\n }\n\n if (status === 'success') {\n resolve({ status });\n return;\n }\n\n reject(response);\n }\n\n /**\n * Gets the time that given category is disabled until for rate limiting\n */\n protected _disabledUntil(requestType: SentryRequestType): Date {\n const category = requestTypeToCategory(requestType);\n return this._rateLimits[category] || this._rateLimits.all;\n }\n\n /**\n * Checks if a category is rate limited\n */\n protected _isRateLimited(requestType: SentryRequestType): boolean {\n return this._disabledUntil(requestType) > new Date(Date.now());\n }\n\n /**\n * Sets internal _rateLimits from incoming headers. Returns true if headers contains a non-empty rate limiting header.\n */\n protected _handleRateLimit(headers: Record): boolean {\n const now = Date.now();\n const rlHeader = headers['x-sentry-rate-limits'];\n const raHeader = headers['retry-after'];\n\n if (rlHeader) {\n // rate limit headers are of the form\n //
    ,
    ,..\n // where each
    is of the form\n // : : : \n // where\n // is a delay in ms\n // is the event type(s) (error, transaction, etc) being rate limited and is of the form\n // ;;...\n // is what's being limited (org, project, or key) - ignored by SDK\n // is an arbitrary string like \"org_quota\" - ignored by SDK\n for (const limit of rlHeader.trim().split(',')) {\n const parameters = limit.split(':', 2);\n const headerDelay = parseInt(parameters[0], 10);\n const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n for (const category of parameters[1].split(';')) {\n this._rateLimits[category || 'all'] = new Date(now + delay);\n }\n }\n return true;\n } else if (raHeader) {\n this._rateLimits.all = new Date(now + parseRetryAfterHeader(now, raHeader));\n return true;\n }\n return false;\n }\n\n protected abstract _sendRequest(\n sentryRequest: SentryRequest,\n originalPayload: Event | Session,\n ): PromiseLike;\n}\n","import { EventStatus } from '@sentry/types';\n/**\n * Converts an HTTP status code to sentry status {@link EventStatus}.\n *\n * @param code number HTTP status code\n * @returns EventStatus\n */\nexport function eventStatusFromHttpCode(code: number): EventStatus {\n if (code >= 200 && code < 300) {\n return 'success';\n }\n\n if (code === 429) {\n return 'rate_limit';\n }\n\n if (code >= 400 && code < 500) {\n return 'invalid';\n }\n\n if (code >= 500) {\n return 'failed';\n }\n\n return 'unknown';\n}\n","import { Event, Response, SentryRequest, Session, TransportOptions } from '@sentry/types';\nimport { SentryError, supportsReferrerPolicy, SyncPromise } from '@sentry/utils';\n\nimport { BaseTransport } from './base';\nimport { FetchImpl, getNativeFetchImplementation } from './utils';\n\n/** `fetch` based transport */\nexport class FetchTransport extends BaseTransport {\n /**\n * Fetch API reference which always points to native browser implementation.\n */\n private _fetch: typeof fetch;\n\n public constructor(options: TransportOptions, fetchImpl: FetchImpl = getNativeFetchImplementation()) {\n super(options);\n this._fetch = fetchImpl;\n }\n\n /**\n * @param sentryRequest Prepared SentryRequest to be delivered\n * @param originalPayload Original payload used to create SentryRequest\n */\n protected _sendRequest(sentryRequest: SentryRequest, originalPayload: Event | Session): PromiseLike {\n if (this._isRateLimited(sentryRequest.type)) {\n this.recordLostEvent('ratelimit_backoff', sentryRequest.type);\n\n return Promise.reject({\n event: originalPayload,\n type: sentryRequest.type,\n reason: `Transport for ${sentryRequest.type} requests locked till ${this._disabledUntil(\n sentryRequest.type,\n )} due to too many requests.`,\n status: 429,\n });\n }\n\n const options: RequestInit = {\n body: sentryRequest.body,\n method: 'POST',\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n // (see https://caniuse.com/#feat=referrer-policy),\n // it doesn't. And it throws an exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n referrerPolicy: (supportsReferrerPolicy() ? 'origin' : '') as ReferrerPolicy,\n };\n if (this.options.fetchParameters !== undefined) {\n Object.assign(options, this.options.fetchParameters);\n }\n if (this.options.headers !== undefined) {\n options.headers = this.options.headers;\n }\n\n return this._buffer\n .add(\n () =>\n new SyncPromise((resolve, reject) => {\n void this._fetch(sentryRequest.url, options)\n .then(response => {\n const headers = {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n };\n this._handleResponse({\n requestType: sentryRequest.type,\n response,\n headers,\n resolve,\n reject,\n });\n })\n .catch(reject);\n }),\n )\n .then(undefined, reason => {\n // It's either buffer rejection or any other xhr/fetch error, which are treated as NetworkError.\n if (reason instanceof SentryError) {\n this.recordLostEvent('queue_overflow', sentryRequest.type);\n } else {\n this.recordLostEvent('network_error', sentryRequest.type);\n }\n throw reason;\n });\n }\n}\n","import { Event, Response, SentryRequest, Session } from '@sentry/types';\nimport { SentryError, SyncPromise } from '@sentry/utils';\n\nimport { BaseTransport } from './base';\n\n/** `XHR` based transport */\nexport class XHRTransport extends BaseTransport {\n /**\n * @param sentryRequest Prepared SentryRequest to be delivered\n * @param originalPayload Original payload used to create SentryRequest\n */\n protected _sendRequest(sentryRequest: SentryRequest, originalPayload: Event | Session): PromiseLike {\n if (this._isRateLimited(sentryRequest.type)) {\n this.recordLostEvent('ratelimit_backoff', sentryRequest.type);\n\n return Promise.reject({\n event: originalPayload,\n type: sentryRequest.type,\n reason: `Transport for ${sentryRequest.type} requests locked till ${this._disabledUntil(\n sentryRequest.type,\n )} due to too many requests.`,\n status: 429,\n });\n }\n\n return this._buffer\n .add(\n () =>\n new SyncPromise((resolve, reject) => {\n const request = new XMLHttpRequest();\n\n request.onreadystatechange = (): void => {\n if (request.readyState === 4) {\n const headers = {\n 'x-sentry-rate-limits': request.getResponseHeader('X-Sentry-Rate-Limits'),\n 'retry-after': request.getResponseHeader('Retry-After'),\n };\n this._handleResponse({ requestType: sentryRequest.type, response: request, headers, resolve, reject });\n }\n };\n\n request.open('POST', sentryRequest.url);\n for (const header in this.options.headers) {\n if (Object.prototype.hasOwnProperty.call(this.options.headers, header)) {\n request.setRequestHeader(header, this.options.headers[header]);\n }\n }\n request.send(sentryRequest.body);\n }),\n )\n .then(undefined, reason => {\n // It's either buffer rejection or any other xhr/fetch error, which are treated as NetworkError.\n if (reason instanceof SentryError) {\n this.recordLostEvent('queue_overflow', sentryRequest.type);\n } else {\n this.recordLostEvent('network_error', sentryRequest.type);\n }\n throw reason;\n });\n }\n}\n","import { BaseBackend } from '@sentry/core';\nimport { Event, EventHint, Options, Severity, Transport } from '@sentry/types';\nimport { supportsFetch } from '@sentry/utils';\n\nimport { eventFromException, eventFromMessage } from './eventbuilder';\nimport { FetchTransport, XHRTransport } from './transports';\n\n/**\n * Configuration options for the Sentry Browser SDK.\n * @see BrowserClient for more information.\n */\nexport interface BrowserOptions extends Options {\n /**\n * A pattern for error URLs which should exclusively be sent to Sentry.\n * This is the opposite of {@link Options.denyUrls}.\n * By default, all errors will be sent.\n */\n allowUrls?: Array;\n\n /**\n * A pattern for error URLs which should not be sent to Sentry.\n * To allow certain errors instead, use {@link Options.allowUrls}.\n * By default, all errors will be sent.\n */\n denyUrls?: Array;\n\n /** @deprecated use {@link Options.allowUrls} instead. */\n whitelistUrls?: Array;\n\n /** @deprecated use {@link Options.denyUrls} instead. */\n blacklistUrls?: Array;\n}\n\n/**\n * The Sentry Browser SDK Backend.\n * @hidden\n */\nexport class BrowserBackend extends BaseBackend {\n /**\n * @inheritDoc\n */\n public eventFromException(exception: unknown, hint?: EventHint): PromiseLike {\n return eventFromException(this._options, exception, hint);\n }\n /**\n * @inheritDoc\n */\n public eventFromMessage(message: string, level: Severity = Severity.Info, hint?: EventHint): PromiseLike {\n return eventFromMessage(this._options, message, level, hint);\n }\n\n /**\n * @inheritDoc\n */\n protected _setupTransport(): Transport {\n if (!this._options.dsn) {\n // We return the noop transport here in case there is no Dsn.\n return super._setupTransport();\n }\n\n const transportOptions = {\n ...this._options.transportOptions,\n dsn: this._options.dsn,\n tunnel: this._options.tunnel,\n sendClientReports: this._options.sendClientReports,\n _metadata: this._options._metadata,\n };\n\n if (this._options.transport) {\n return new this._options.transport(transportOptions);\n }\n if (supportsFetch()) {\n return new FetchTransport(transportOptions);\n }\n return new XHRTransport(transportOptions);\n }\n}\n","import { BaseClient, Scope, SDK_VERSION } from '@sentry/core';\nimport { Event, EventHint } from '@sentry/types';\nimport { getGlobalObject, logger } from '@sentry/utils';\n\nimport { BrowserBackend, BrowserOptions } from './backend';\nimport { injectReportDialog, ReportDialogOptions } from './helpers';\nimport { Breadcrumbs } from './integrations';\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nexport class BrowserClient extends BaseClient {\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n public constructor(options: BrowserOptions = {}) {\n options._metadata = options._metadata || {};\n options._metadata.sdk = options._metadata.sdk || {\n name: 'sentry.javascript.browser',\n packages: [\n {\n name: 'npm:@sentry/browser',\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n };\n\n super(BrowserBackend, options);\n }\n\n /**\n * Show a report dialog to the user to send feedback to a specific event.\n *\n * @param options Set individual options for the dialog\n */\n public showReportDialog(options: ReportDialogOptions = {}): void {\n // doesn't work without a document (React Native)\n const document = getGlobalObject().document;\n if (!document) {\n return;\n }\n\n if (!this._isEnabled()) {\n logger.error('Trying to call showReportDialog with Sentry Client disabled');\n return;\n }\n\n injectReportDialog({\n ...options,\n dsn: options.dsn || this.getDsn(),\n });\n }\n\n /**\n * @inheritDoc\n */\n protected _prepareEvent(event: Event, scope?: Scope, hint?: EventHint): PromiseLike {\n event.platform = event.platform || 'javascript';\n return super._prepareEvent(event, scope, hint);\n }\n\n /**\n * @inheritDoc\n */\n protected _sendEvent(event: Event): void {\n const integration = this.getIntegration(Breadcrumbs);\n if (integration) {\n integration.addSentryBreadcrumb(event);\n }\n super._sendEvent(event);\n }\n}\n","import {} from '@sentry/integrations';\nimport * as Sentry from '@sentry/react';\nimport { FeatureAppConfig } from 'src';\nimport { Dependencies } from 'src/feature-app';\n\nconst getOptions = (stage: 'dev' | string): Sentry.BrowserOptions => {\n return {\n dsn: 'https://c72951f5b7c54e769470906bceb05c92@o192159.ingest.sentry.io/6118409',\n integrations: [\n new Sentry.Integrations.InboundFilters(),\n new Sentry.Integrations.FunctionToString(),\n new Sentry.Integrations.TryCatch(),\n new Sentry.Integrations.Breadcrumbs({ console: true, dom: true, fetch: true, history: true, xhr: true }),\n new Sentry.Integrations.GlobalHandlers(),\n new Sentry.Integrations.LinkedErrors(),\n new Sentry.Integrations.Dedupe(),\n new Sentry.Integrations.UserAgent(),\n ],\n tracesSampleRate: 1,\n environment: stage === 'dev' ? 'Stage' : 'Prod',\n release: process.env.VERSION,\n\n beforeSend: (event: Sentry.Event) => {\n // Solo reportamos los errores en producción\n // if (stage === 'dev') {\n // return null;\n // }\n event.exception.values = event.exception.values.map(value => {\n value.mechanism.handled = false;\n return value;\n });\n return event;\n },\n };\n};\n\nlet sentryHub: Sentry.Hub = null;\n\nexport const initSentry = (featureServices: Dependencies, config: FeatureAppConfig) => {\n const stageCustomConfig = featureServices['service-config-provider'].configs?.stage?.customConfig;\n const faContent = featureServices['fa-content-service'].content;\n\n const client = new Sentry.BrowserClient(getOptions(stageCustomConfig?.stage));\n const hub = new Sentry.Hub(client);\n // Sentry.makeMain(hub); // Desactivado ya que provoca que se reporten errores de otros proyectos.\n hub.setContext('Feature App Config', { ...config });\n hub.setContext('Feature App Content', { ...faContent });\n setSentryHub(hub);\n return { hub };\n};\n\nexport const getSentryHub = () => sentryHub;\n\nexport const setSentryTag = (tag:string, value: string) => {\n sentryHub.setTag(tag, value);\n};\n\nconst setSentryHub = (newHub: Sentry.Hub) => {\n sentryHub = newHub;\n};\n","'use strict'\n/* eslint no-proto: 0 */\nmodule.exports = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties)\n\nfunction setProtoOf (obj, proto) {\n obj.__proto__ = proto\n return obj\n}\n\nfunction mixinProperties (obj, proto) {\n for (var prop in proto) {\n if (!Object.prototype.hasOwnProperty.call(obj, prop)) {\n obj[prop] = proto[prop]\n }\n }\n return obj\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","import { ConfigurationWithMandatoryBuildabilityV2 } from '@volkswagen-onehub/car-configuration-feature-service';\nimport Axios, { AxiosResponse } from 'axios';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch, useStore } from 'react-redux';\nimport { dpsSend, getPriceDataWithMarketingCode } from 'src/bff';\nimport { getEquipmentlineName, getFeatures, getWheels } from 'src/bff/get-marketing-code';\nimport {\n FormController,\n removeWhiteSpace,\n useFaContent,\n useFeatureAppConfig,\n useGetInstalaciones,\n useGetWaidLitera,\n useOneFormContext,\n formatPrefix,\n} from 'src/feature-app';\nimport { getParamsForm } from 'src/feature-app/get-params-form';\nimport { CarlineBase, FormDataGroup, FormDataHeaders, FormInfo, Horario, OneFormState, Steps } from 'src/types';\nimport { ThankYouLeads } from '.';\nimport { formatFields, formatFlags, formatHeaders, formDataBuilder, getDpsFields } from '../format-fields';\nimport { getCodInterestCarline, getDescInterestCarline, getMatchData, getSalesGroup } from './helpers';\nimport { getOfertasData } from './helpers/get-ofertas-data';\n\nexport enum LeadGenerico {\n Empezar,\n Mapa,\n Modelo,\n NombreApellido,\n EmailTelefono,\n Contacto,\n Confirmacion,\n}\n\nexport interface LeadGenericoFormProps {\n steps: Steps[];\n leadData: Partial;\n leadInfo: Partial;\n firstStep: Steps;\n lastStep: Steps;\n inPage?: boolean;\n isConfigurador?: boolean;\n}\n\nexport interface LeadsFormsProps {\n configRef?: ConfigurationWithMandatoryBuildabilityV2;\n updatedFormData?: Partial;\n updatedFormInfo?: Partial;\n isOfertasOrMatch?: boolean;\n inPage?: boolean;\n isConfigurador?: boolean;\n}\n\nexport const isOfertasForm = (formName: string) => formName === 'lead-oferta';\nconst getDescFormObjective = (formName: string, carline: CarlineBase, headers: FormDataHeaders) =>\n isOfertasForm(formName) && carline?.campaign?.dfo?.ofertas\n ? carline.campaign.dfo.ofertas\n : headers.DESC_FORMOBJECTIVE;\n\nexport function LeadGenericoForm({\n steps,\n leadData,\n leadInfo,\n firstStep,\n lastStep,\n inPage,\n isConfigurador,\n}: LeadGenericoFormProps) {\n const { initializeForm } = useOneFormContext();\n const store = useStore();\n const config = useFeatureAppConfig();\n const installations = useGetInstalaciones('VW_DDB_FRM_LEM_REC_LEM'); // Inicialización de las instalaciones\n const dispatch = useDispatch();\n const [loading, setLoading] = useState(true);\n const faContent = useFaContent();\n const waid = useGetWaidLitera();\n\n const getHorario = (horario: Horario) => {\n let horarioField = null;\n\n if (horario) {\n const horarioFormatted = horario === 'morning' ? 'MANANA' : horario === 'evening' ? 'MEDIODIA' : 'TARDE';\n\n horarioField = { 'fields[CITA_PREVIA_PREFERRED_SCHEDULE]': horarioFormatted };\n }\n return horarioField;\n };\n\n const getConfiguradorData = async (isConfigurador: boolean) => {\n const { marketingCodeResponse } = store.getState().formData.fields;\n\n if (!marketingCodeResponse || !isConfigurador) return null;\n\n const price = await getPriceDataWithMarketingCode(marketingCodeResponse);\n\n return {\n 'fields[COD_VEH_SALESGROUP]': marketingCodeResponse?.consolidatedData?.salesgroupKey,\n 'fields[DESC_VEH_SALESGROUP]': marketingCodeResponse?.consolidatedData?.salesgroupName,\n 'fields[DESC_TRIM_LINE]': getEquipmentlineName(marketingCodeResponse?.consolidatedData?.modelFilters),\n 'fields[COD_VEH_TMAIMG]': marketingCodeResponse?.consolidatedData?.modelKey.split('$')[0],\n 'fields[DESC_VEH_TMAIMG]': marketingCodeResponse?.consolidatedData?.modelName,\n 'fields[DESC_VEH_MARKETING_CODE]': marketingCodeResponse?.marketingCode,\n 'fields[COD_VEH_COLOR]': marketingCodeResponse?.consolidatedData?.exterior?.code,\n 'fields[DESC_VEH_COLOR]': marketingCodeResponse?.consolidatedData?.exterior?.name,\n 'fields[COD_VEH_COLOR_INT]': marketingCodeResponse?.consolidatedData?.interior?.code,\n 'fields[DESC_VEH_COLOR_INT]': marketingCodeResponse?.consolidatedData?.interior?.name,\n 'fields[DESC_VEH_OFFER_PRICE]': price?.body?.amount\n ? `Precio final de la configuración: ${price?.body?.amount}Eur`\n : undefined,\n 'fields[COD_INTEREST_PR]': getFeatures(marketingCodeResponse?.consolidatedData?.features),\n ...getWheels(marketingCodeResponse?.expandedConfiguration?.features),\n 'fields[COD_INTEREST_CARLINE]': marketingCodeResponse?.consolidatedData?.carlineKey,\n 'fields[DESC_INTEREST_CARLINE]': marketingCodeResponse?.consolidatedData?.carlineName,\n };\n };\n\n const sendForm = (): Promise => {\n const { formData, dealersInfo }: OneFormState = store.getState();\n const { fields, headers, flags } = formData;\n const { selectedInstallation, salesGroup, selectedCarline } = dealersInfo;\n\n const {\n TXT_V_Installation_Data_Name__c,\n TXT_V_KVPS_code__c,\n FRML_TXT_codVentaProvincia__c,\n TXT_V_Installation_Code__c,\n } = selectedInstallation;\n\n return new Promise(async (resolve, reject) => {\n const { tc, today, referalUrl, url, device } = getParamsForm();\n //resolve(true);\n const data = {\n ...formatHeaders(headers), // Headers comunes a todos los formularios de leads\n ...formatFields(fields.formFields), // Fields comunes a todos los formularios de leads\n ...formatFlags(flags), // Flags comunes a todos los formularios de leads\n 'headers[COD_FORM_ID]': `vw-oneform-${fields.formName}`,\n 'headers[DESC_URLORIGIN]': url,\n 'headers[DESC_DEVICETYPE]': device,\n 'headers[DESC_FORMOBJECTIVE]': getDescFormObjective(fields.formName, selectedCarline, headers),\n 'headers[DESC_ID_CAMPAIGN]': selectedCarline?.campaign?.salesforce\n ? selectedCarline.campaign.salesforce\n : '7010Y0000001tAOQAY',\n\n 'headers[FECHA_INSERTION_DATE]': today,\n 'headers[TC]': tc,\n\n 'fields[DESC_NAME]': fields.name,\n 'fields[DESC_SURNAME_1]': fields.surname,\n 'fields[DESC_SURNAME_2]': fields.secondSurname,\n 'fields[DESC_EMAIL_ADDRESS]': removeWhiteSpace(fields.email),\n 'fields[NUM_CELLPHONE]': fields.cellphone ? `${formatPrefix(fields.prefix)}${fields.cellphone}` : undefined,\n 'fields[COD_LEAD_ID]': 'VW_DDB_FRM_LEM_REC_LEM',\n 'fields[DESC_VEH_BRAND]': 'Volkswagen',\n 'fields[DESC_FORM_VERSION]': `vw-oneform-${fields.formName}-${process.env.VERSION}`,\n 'fields[DESC_DEALER_CODE_KVPS]': TXT_V_KVPS_code__c,\n 'fields[DESC_DEALER_CODE]': TXT_V_Installation_Code__c,\n 'fields[DESC_DEALER_PROVINCE]': fields.provinceName,\n 'fields[COD_DEALER_PROVINCE]': FRML_TXT_codVentaProvincia__c,\n 'fields[DESC_DEALER]': TXT_V_Installation_Data_Name__c,\n 'fields[COD_INTEREST_CARLINE]': getCodInterestCarline(dealersInfo, fields.carlineCode),\n 'fields[DESC_INTEREST_CARLINE]': getDescInterestCarline(dealersInfo, fields.modelo),\n 'fields[DESC_PREFERRED_CONTACT_CHANNEL]': fields.contacto,\n 'fields[DESC_LOPD]': 'PERMITE',\n 'fields[DESC_TRANF_DATA_THIRD]': 'NO INFORMADO',\n 'fields[DESC_LSSI]': fields.lssi,\n 'fields[DESC_LOPD_GDPR_PERFILADO]': fields.tmk,\n 'fields[DESC_DATA_ENRICHMENT]': fields.dataEnrichment,\n ...getSalesGroup(salesGroup),\n ...getHorario(fields.horario),\n ...getDpsFields(faContent),\n ...(await getOfertasData(formData, dealersInfo)),\n ...(await getMatchData(formData, dealersInfo, faContent)),\n ...(await getConfiguradorData(isConfigurador)),\n };\n const dataStringified = JSON.stringify(data);\n const dataParsed = JSON.parse(dataStringified);\n\n const formDataInfo = formDataBuilder(dataParsed);\n\n const response = await dpsSend(formDataInfo);\n\n if (response && response.data && response.data.content && response.data.content.code === '200') {\n dispatch({ type: 'SET_FORM_RESPONSE', payload: response.data });\n resolve(true);\n } else {\n resolve(false);\n }\n });\n };\n\n const leadGenericoData: Partial = {\n headers: {\n DESC_BRAND: 'VW', // OK\n DESC_CAMPAIGNBLOCK: '9. VW LEM', // OK\n DESC_WAID_LITERA: waid ? waid : 'B09C01_LEM_WA1',\n DESC_TOKEN: 'VW_DDB_FRM_LEM_REC_LEM', // OK\n DESC_VN_VO: 'VN', // OK\n DESC_GDPR_ADAPTED: true, // OK\n ...leadData.headers,\n },\n flags: {\n FLAG_MAILRECEPCIONLEAD: 'true',\n FLAG_ISQUALIFIED: 'false',\n REQUIERE_CONTACTO_DEALER: 'false',\n },\n fields: { ...leadData.fields },\n };\n\n const leadGenericoInfo: Partial = {\n formStarted: true,\n fullScreen: firstStep.fullScreen ? true : false,\n lastStep,\n sendFormCallback: sendForm,\n numberOfScreens: steps.length,\n screenIndex: firstStep.screenIndex,\n step: firstStep,\n steps,\n stepsHistory: [steps[0].screenIndex],\n thankYouComponent: ,\n notALayer: inPage ? true : false,\n formTheme: inPage ? 'main' : 'inverted',\n formType: inPage ? 'inPage' : 'layer',\n ...leadInfo,\n };\n\n useEffect(() => {\n initializeForm(leadGenericoInfo, leadGenericoData);\n setLoading(false);\n }, []);\n\n return loading ? null : ;\n}\n","import $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error('It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error('You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected the listener to be a function.');\n }\n\n if (isDispatching) {\n throw new Error('You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api-reference/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionDescription = actionType && \"action \\\"\" + String(actionType) + \"\\\"\" || 'an action';\n return \"Given \" + actionDescription + \", reducer \\\"\" + key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\";\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n keys.push.apply(keys, Object.getOwnPropertySymbols(object));\n }\n\n if (enumerableOnly) keys = keys.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error('Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread2({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore };\n","// These mappings map a character (key) to a specific digit that should\r\n// replace it for normalization purposes. Non-European digits that\r\n// may be used in phone numbers are mapped to a European equivalent.\r\n//\r\n// E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n//\r\nexport const DIGITS = {\r\n\t'0': '0',\r\n\t'1': '1',\r\n\t'2': '2',\r\n\t'3': '3',\r\n\t'4': '4',\r\n\t'5': '5',\r\n\t'6': '6',\r\n\t'7': '7',\r\n\t'8': '8',\r\n\t'9': '9',\r\n\t'\\uFF10': '0', // Fullwidth digit 0\r\n\t'\\uFF11': '1', // Fullwidth digit 1\r\n\t'\\uFF12': '2', // Fullwidth digit 2\r\n\t'\\uFF13': '3', // Fullwidth digit 3\r\n\t'\\uFF14': '4', // Fullwidth digit 4\r\n\t'\\uFF15': '5', // Fullwidth digit 5\r\n\t'\\uFF16': '6', // Fullwidth digit 6\r\n\t'\\uFF17': '7', // Fullwidth digit 7\r\n\t'\\uFF18': '8', // Fullwidth digit 8\r\n\t'\\uFF19': '9', // Fullwidth digit 9\r\n\t'\\u0660': '0', // Arabic-indic digit 0\r\n\t'\\u0661': '1', // Arabic-indic digit 1\r\n\t'\\u0662': '2', // Arabic-indic digit 2\r\n\t'\\u0663': '3', // Arabic-indic digit 3\r\n\t'\\u0664': '4', // Arabic-indic digit 4\r\n\t'\\u0665': '5', // Arabic-indic digit 5\r\n\t'\\u0666': '6', // Arabic-indic digit 6\r\n\t'\\u0667': '7', // Arabic-indic digit 7\r\n\t'\\u0668': '8', // Arabic-indic digit 8\r\n\t'\\u0669': '9', // Arabic-indic digit 9\r\n\t'\\u06F0': '0', // Eastern-Arabic digit 0\r\n\t'\\u06F1': '1', // Eastern-Arabic digit 1\r\n\t'\\u06F2': '2', // Eastern-Arabic digit 2\r\n\t'\\u06F3': '3', // Eastern-Arabic digit 3\r\n\t'\\u06F4': '4', // Eastern-Arabic digit 4\r\n\t'\\u06F5': '5', // Eastern-Arabic digit 5\r\n\t'\\u06F6': '6', // Eastern-Arabic digit 6\r\n\t'\\u06F7': '7', // Eastern-Arabic digit 7\r\n\t'\\u06F8': '8', // Eastern-Arabic digit 8\r\n\t'\\u06F9': '9' // Eastern-Arabic digit 9\r\n}\r\n\r\nexport function parseDigit(character) {\r\n\treturn DIGITS[character]\r\n}\r\n\r\n/**\r\n * Parses phone number digits from a string.\r\n * Drops all punctuation leaving only digits.\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * parseDigits('8 (800) 555')\r\n * // Outputs '8800555'.\r\n * ```\r\n */\r\nexport default function parseDigits(string) {\r\n\tlet result = ''\r\n\t// Using `.split('')` here instead of normal `for ... of`\r\n\t// because the importing application doesn't neccessarily include an ES6 polyfill.\r\n\t// The `.split('')` approach discards \"exotic\" UTF-8 characters\r\n\t// (the ones consisting of four bytes) but digits\r\n\t// (including non-European ones) don't fall into that range\r\n\t// so such \"exotic\" characters would be discarded anyway.\r\n\tfor (const character of string.split('')) {\r\n\t\tconst digit = parseDigit(character)\r\n\t\tif (digit) {\r\n\t\t\tresult += digit\r\n\t\t}\r\n\t}\r\n\treturn result\r\n}","import React from 'react';\n\n//Cita posventa\n\nexport const kilometrosValues = [\n '0km - 30.000km',\n '30.000km - 60.000km',\n '60.000km - 90.000km',\n '90.000km - 120.000km',\n '120.000km - 150.000km',\n '150.000km - 180.000km',\n 'Más de 180.000km',\n 'No estoy seguro',\n];\n\nexport const kilometrosComercialesValues = [\n '0km - 50.000km',\n '50.000km - 100.000km',\n '100.000km - 150.000km',\n '150.000km - 200.000km',\n '200.000km - 250.000km',\n '250.000km - 300.000km',\n '300.000km - 350.000km',\n 'Más de 400.000km',\n 'No estoy seguro',\n];\n\nexport const millageValues = [\n [0, 30000],\n [30000, 60000],\n [60000, 90000],\n [90000, 120000],\n [120000, 150000],\n [150000, 180000],\n [180000, 210000],\n];\n\nexport const millageComercialesValues = [\n [0, 50000],\n [50000, 100000],\n [100000, 150000],\n [150000, 200000],\n [200000, 250000],\n [250000, 300000],\n [300000, 350000],\n [350000, 400000],\n];\n\nexport const getKilometrosInfo = (isComerciales: boolean) => {\n if (isComerciales) {\n return { kilometrosValues: kilometrosComercialesValues, millageValues: millageComercialesValues };\n }\n return { kilometrosValues, millageValues };\n};\n\nexport const franjaHoraria = [\n { code: 'MANANA', name: ' por la mañana' },\n { code: 'MEDIODIA', name: ' al mediodía' },\n { code: 'TARDE', name: ' por la tarde' },\n];\n\nexport const meses = [\n {\n name: 'Enero',\n number: '01',\n },\n {\n name: 'Febrero',\n number: '02',\n },\n {\n name: 'Marzo',\n number: '03',\n },\n {\n name: 'Abril',\n number: '04',\n },\n {\n name: 'Mayo',\n number: '05',\n },\n {\n name: 'Junio',\n number: '06',\n },\n {\n name: 'Julio',\n number: '07',\n },\n {\n name: 'Agosto',\n number: '08',\n },\n {\n name: 'Septiembre',\n number: '09',\n },\n {\n name: 'Octubre',\n number: '10',\n },\n {\n name: 'Noviembre',\n number: '11',\n },\n {\n name: 'Diciembre',\n number: '12',\n }\n];\n","import React from 'react';\nimport {\n Layout,\n Breakpoints,\n LayoutRowGap,\n} from '@volkswagen-onehub/components-core';\n\ninterface OneElementTemplateProps {\n element: JSX.Element;\n allowOverflowingContent?: boolean;\n}\n\n// Refactorizar\nfunction OneElementTemplate(props: OneElementTemplateProps) {\n const { element, allowOverflowingContent } = props;\n return (\n \n {element}\n \n );\n}\n\ninterface TwoElementsTemplateProps {\n firstElement: JSX.Element;\n secondElement: JSX.Element;\n allowOverflowingContent?: boolean;\n}\n\nfunction TwoElementsTemplate(props: TwoElementsTemplateProps) {\n const { firstElement, secondElement } = props;\n return (\n \n {firstElement}\n {secondElement}\n \n );\n}\n\ninterface ThreeElementsTemplateProps {\n firstElement: JSX.Element;\n secondElement: JSX.Element;\n thirdElement: JSX.Element;\n allowOverflowingContent?: boolean;\n}\n\nfunction ThreeElementsTemplate(props: ThreeElementsTemplateProps) {\n const { firstElement, secondElement, thirdElement } = props;\n return (\n \n {firstElement}\n {secondElement}\n {thirdElement}\n \n );\n}\n\nexport { OneElementTemplate, TwoElementsTemplate, ThreeElementsTemplate };\n","export function createCSSVarName(data, prefix) {\n if (!data || Object.keys(data).length === 0) {\n throw new Error('invalid data');\n }\n const path = [\n ...(prefix ? [prefix] : []),\n ...(typeof data === 'string'\n ? [data]\n : Object.keys(data)\n .sort()\n .reduce((acc, key) => [...acc, key, data[key]], [])),\n ];\n return `--${path\n .join('-')\n .toLowerCase()\n .replace(/[^a-z,0-9-]/g, '-')}`;\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.areaConversion=exports.timeConversion=exports.distanceConversion=exports.altitudeKeys=exports.latitudeKeys=exports.longitudeKeys=exports.MAXLON=exports.MINLON=exports.MAXLAT=exports.MINLAT=exports.earthRadius=exports.sexagesimalPattern=void 0;var sexagesimalPattern=/^([0-9]{1,3})°\\s*([0-9]{1,3}(?:\\.(?:[0-9]{1,}))?)['′]\\s*(([0-9]{1,3}(\\.([0-9]{1,}))?)[\"″]\\s*)?([NEOSW]?)$/;exports.sexagesimalPattern=sexagesimalPattern;var earthRadius=6378137;exports.earthRadius=earthRadius;var MINLAT=-90;exports.MINLAT=MINLAT;var MAXLAT=90;exports.MAXLAT=MAXLAT;var MINLON=-180;exports.MINLON=MINLON;var MAXLON=180;exports.MAXLON=MAXLON;var longitudeKeys=[\"lng\",\"lon\",\"longitude\",0];exports.longitudeKeys=longitudeKeys;var latitudeKeys=[\"lat\",\"latitude\",1];exports.latitudeKeys=latitudeKeys;var altitudeKeys=[\"alt\",\"altitude\",\"elevation\",\"elev\",2];exports.altitudeKeys=altitudeKeys;var distanceConversion={m:1,km:0.001,cm:100,mm:1000,mi:1/1609.344,sm:1/1852.216,ft:100/30.48,in:100/2.54,yd:1/0.9144};exports.distanceConversion=distanceConversion;var timeConversion={m:60,h:3600,d:86400};exports.timeConversion=timeConversion;var areaConversion={m2:1,km2:0.000001,ha:0.0001,a:0.01,ft2:10.763911,yd2:1.19599,in2:1550.0031};exports.areaConversion=areaConversion;areaConversion.sqm=areaConversion.m2;areaConversion.sqkm=areaConversion.km2;areaConversion.sqft=areaConversion.ft2;areaConversion.sqyd=areaConversion.yd2;areaConversion.sqin=areaConversion.in2;","import axios from 'axios';\nimport { reportErrorSentry } from 'src/bff';\nimport { DealersData } from 'src/types';\nimport { getDataUrl } from '../get-data-url';\n\nexport const getDealerKvps = async (kvps: string): Promise => {\n try {\n const dataUrl = getDataUrl();\n\n const dealerResponse = await axios.get(`${dataUrl}/getDealer/${kvps}`);\n\n if (dealerResponse?.data?.dealer) {\n return dealerResponse.data.dealer;\n }\n\n reportErrorSentry('Could not get dealer');\n console.error('Could not get dealer');\n return null;\n } catch (error) {\n reportErrorSentry(error);\n return null;\n }\n};\n","import * as React from 'react';\nimport * as Sentry from '@sentry/react';\nimport { CloseHandleV2 } from '@volkswagen-onehub/layer-manager';\nimport { makeMain } from '@sentry/react';\n\ninterface Props {\n hub: Sentry.Hub;\n close?: CloseHandleV2;\n\n}\nclass ErrorBoundary extends React.Component {\n constructor(props: Props) {\n super(props);\n this.state = { eventId: null };\n }\n\n static getDerivedStateFromError() {\n return { hasError: true };\n }\n\n componentDidCatch(error, errorInfo) {\n /** \n * We make use of the Sentry hub passed in props to report the application\n * error to the intended recipient Sentry project.\n * Note: if Sentry.init was used, it looks like they should get a copy of\n * that error in their Sentry project too (though this behaviour might only\n * be applicable in development, to be confirmed.)\n */\n // Sentry.makeMain(this.props.hub);\n this.props.hub.run(currentHub => {\n currentHub.withScope((scope) => {\n scope.setExtras(errorInfo);\n const eventId = currentHub.captureException(error);\n this.setState({eventId});\n });\n\n });\n if (this.props.close) {\n this.props.close({},{},{});\n }\n\n }\n\n render() {\n if (this.state.hasError) {\n //render fallback UI\n return null;\n }\n\n //when there's not an error, render children untouched\n return this.props.children;\n }\n}\n\nexport default ErrorBoundary;\n","import * as React from 'react';\nimport { warnWithTrace } from '../helpers/logger';\nconst NO_NAME = 'Component';\nconst REACT_STATICS = {\n childContextTypes: true,\n contextTypes: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true,\n};\nconst KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true,\n};\nconst getPrototypeOf = Object.getPrototypeOf;\nconst objectPrototype = getPrototypeOf && getPrototypeOf(Object);\nfunction hoistNonReactStatics(targetComponent, sourceComponent) {\n if (objectPrototype) {\n const inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent);\n }\n }\n const keys = Object.getOwnPropertyNames(sourceComponent);\n keys.forEach((key) => {\n if (!REACT_STATICS[key] && !KNOWN_STATICS[key]) {\n const descriptor = Object.getOwnPropertyDescriptor(sourceComponent, key);\n if (descriptor) {\n try {\n Object.defineProperty(targetComponent, key, descriptor);\n }\n catch (e) {\n }\n }\n }\n });\n return targetComponent;\n}\nfunction getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || NO_NAME;\n}\nfunction createComponentMessage(component, value) {\n return [\n typeof value !== 'string'\n ? `The component \"${getDisplayName(component)}\" is deprecated.`\n : value,\n ];\n}\nfunction getBaseMessage(prop, name) {\n return `The prop \"${prop}\" on component \"${name || NO_NAME}\" is deprecated.`;\n}\nfunction createComponentPropsMessage(component, value, props) {\n return value.reduce((result, descriptor) => {\n const [prop, message = ''] = (Array.isArray(descriptor) ? descriptor : [descriptor]);\n const deprecationMessage = message || getBaseMessage(prop, component.name);\n if (typeof prop === 'string' &&\n Object.prototype.hasOwnProperty.call(props, prop)) {\n return [...result, deprecationMessage];\n }\n return result;\n }, []);\n}\nfunction createDeprecatedFunction(sfc, config) {\n const getMessageFactory = (props) => Array.isArray(config)\n ? createComponentPropsMessage(sfc, config, props)\n : createComponentMessage(sfc, config);\n const wrapper = (props, context) => {\n warnWithTrace(...getMessageFactory(props));\n return sfc.call(null, props, context);\n };\n const propertyDescriptor = Object.getOwnPropertyDescriptor(wrapper, 'name');\n if (propertyDescriptor && propertyDescriptor.configurable) {\n Object.defineProperty(wrapper, 'name', { writable: true, value: sfc.name });\n }\n return wrapper;\n}\nfunction createDeprecatedMethodDescriptor(target, args, value) {\n const [name, descriptor] = args;\n const original = descriptor.value;\n if (typeof original === 'function') {\n descriptor.value = (...vargs) => {\n warnWithTrace(value ||\n `The method \"${name}\" called on component \"${target.constructor.name || NO_NAME}\" is deprecated.`);\n return original.apply(target, vargs);\n };\n }\n return descriptor;\n}\nfunction createDeprecatedComponent(WrappedComponent, config) {\n const getMessageFactory = (props) => Array.isArray(config)\n ? createComponentPropsMessage(WrappedComponent, config, props)\n : createComponentMessage(WrappedComponent, config);\n class Deprecated extends React.Component {\n componentDidMount() {\n warnWithTrace(...getMessageFactory(this.props));\n }\n componentDidUpdate() {\n warnWithTrace(...getMessageFactory(this.props));\n }\n render() {\n return React.createElement(WrappedComponent, Object.assign({}, this.props));\n }\n }\n Deprecated.displayName = `Deprecated(${getDisplayName(WrappedComponent)})`;\n hoistNonReactStatics(Deprecated, WrappedComponent);\n const propertyDescriptor = Object.getOwnPropertyDescriptor(Deprecated, 'name');\n if (propertyDescriptor && propertyDescriptor.configurable) {\n Object.defineProperty(Deprecated, 'name', {\n value: getDisplayName(WrappedComponent),\n });\n }\n return Deprecated;\n}\nexport function deprecated(value, config) {\n if (typeof value === 'function') {\n return createDeprecatedFunction(value, config);\n }\n return (target, name, descriptor) => {\n if (name && descriptor) {\n if (value && typeof value !== 'string') {\n throw new TypeError(`A method decorator can only take a string as optional error message! Type ${typeof value} given.`);\n }\n return createDeprecatedMethodDescriptor(target, [name, descriptor], value);\n }\n return createDeprecatedComponent(target, value);\n };\n}\n","import { Breakpoints, styled, Layout } from '@volkswagen-onehub/components-core';\nimport { LegalesFormatoLayer, LssiTkmQuestions, PoliticaPrivacidad, LastNavigation, GeneralConfirmacionLayerWrapper } from 'src/components';\nimport React from 'react';\n\nexport const ConfirmacionProspects = () => {\n\n return (\n \n \n \n \n\n \n \n \n \n );\n};\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import setPrototypeOf from \"./setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","/**\n * This module mostly exists for optimizations in the build process\n * through rollup and terser. We define some global constants which\n * are normally undefined. However terser overrides these with global\n * definitions which can be evaluated by the static analyzer when\n * creating a bundle.\n *\n * In turn the `isDebugBuild` and `isBrowserBundle` functions are pure\n * and can help us remove unused code from the bundles.\n */\n\ndeclare const __SENTRY_BROWSER_BUNDLE__: boolean | undefined;\ndeclare const __SENTRY_NO_DEBUG__: boolean | undefined;\n\n/**\n * Figures out if we're building with debug functionality.\n *\n * @returns true if this is a debug build\n */\nexport function isDebugBuild(): boolean {\n return typeof __SENTRY_NO_DEBUG__ !== 'undefined' && !__SENTRY_BROWSER_BUNDLE__;\n}\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nexport function isBrowserBundle(): boolean {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n","import React from 'react';\nimport { useGetBrand } from 'src/feature-app/hooks';\nimport { LeadGenericoComercialesForm } from './LeadGenericoComercialesForm';\nimport { LeadGenericoForm, LeadGenericoFormProps } from './LeadGenericoForm';\n\nexport const LeadGenericoController = (props: LeadGenericoFormProps) => {\n const brand = useGetBrand();\n\n return brand === 'V' ? : brand === 'N' ? : null;\n};\n","import {\n CarlineBase,\n DealersData,\n DealersOrInstallationsMode,\n Installation,\n Offer,\n Points,\n RankedPreconfiguration,\n SalesGroupInfo,\n} from 'src/types';\n\nexport const SET_DEALERS = 'SET_DEALERS';\nexport const SET_POINTS = 'SET_POINTS';\nexport const SET_SELECTED_DEALER = 'SET_SELECTED_DEALER';\nexport const SET_FAVOURITE_DEALER = 'SET_FAVOURITE_DEALER';\nexport const SET_SELECTED_INSTALLATION = 'SET_SELECTED_INSTALLATION';\nexport const SET_INSTALLATIONS = 'SET_INSTALLATIONS';\nexport const DEALERS_OR_INSTALLATIONS_MODE = 'DEALERS_OR_INSTALLATIONS_MODE';\nexport const SET_CARLINES = 'SET_CARLINES';\nexport const SET_SELECTED_CARLINE = 'SET_SELECTED_CARLINE';\nexport const SET_OFERTA = 'SET_OFERTA';\nexport const SET_SALESGROUP = 'SET_SALESGROUP';\nexport const SET_URL_DEALER = 'SET_URL_DEALER';\nexport const SET_MATCH = 'SET_MATCH';\nexport const SET_CITA_CARLINES = 'SET_CITA_CARLINES';\n\ninterface SetDealersAction {\n type: typeof SET_DEALERS;\n payload: DealersData[];\n}\ninterface SetPointsAction {\n type: typeof SET_POINTS;\n payload: Points[];\n}\n\ninterface SetSelectedDealerAction {\n type: typeof SET_SELECTED_DEALER;\n payload: DealersData;\n}\ninterface SetUrlDealerAction {\n type: typeof SET_URL_DEALER;\n payload: DealersData;\n}\ninterface SetFavouriteDealerAction {\n type: typeof SET_FAVOURITE_DEALER;\n payload: DealersData;\n}\ninterface SetSelectedInstallationAction {\n type: typeof SET_SELECTED_INSTALLATION;\n payload: Installation;\n}\ninterface SetInstallationsAction {\n type: typeof SET_INSTALLATIONS;\n payload: Installation[];\n}\ninterface SetDealersOrInstallationModeAction {\n type: typeof DEALERS_OR_INSTALLATIONS_MODE;\n payload: DealersOrInstallationsMode;\n}\ninterface SetCarlinesAction {\n type: typeof SET_CARLINES;\n payload: CarlineBase[];\n}\ninterface SetCitaCarlinesAction {\n type: typeof SET_CITA_CARLINES;\n payload: CarlineBase[];\n}\ninterface SetSelectedCarlineAction {\n type: typeof SET_SELECTED_CARLINE;\n payload: CarlineBase;\n}\ninterface SetMatchAction {\n type: typeof SET_MATCH;\n payload: RankedPreconfiguration;\n}\n\ninterface SetOfertaAction {\n type: typeof SET_OFERTA;\n payload: Offer;\n}\n\ninterface SetSalesGroupAction {\n type: typeof SET_SALESGROUP;\n payload: SalesGroupInfo;\n}\n\nexport type DealersActionTypes =\n | SetFavouriteDealerAction\n | SetUrlDealerAction\n | SetCarlinesAction\n | SetDealersAction\n | SetDealersOrInstallationModeAction\n | SetInstallationsAction\n | SetMatchAction\n | SetOfertaAction\n | SetPointsAction\n | SetSalesGroupAction\n | SetSelectedCarlineAction\n | SetCitaCarlinesAction\n | SetSelectedDealerAction\n | SetSelectedInstallationAction;\n","import { DealersInfo } from 'src/types';\nimport { dealersInfo } from './';\nimport {\n DealersActionTypes,\n DEALERS_OR_INSTALLATIONS_MODE,\n SET_CARLINES,\n SET_CITA_CARLINES,\n SET_DEALERS,\n SET_INSTALLATIONS,\n SET_OFERTA,\n SET_FAVOURITE_DEALER,\n SET_POINTS,\n SET_SALESGROUP,\n SET_SELECTED_CARLINE,\n SET_SELECTED_DEALER,\n SET_SELECTED_INSTALLATION,\n SET_URL_DEALER,\n SET_MATCH,\n} from './dealers-types';\nimport { OneFormActionTypes, RESET_STATE } from './types';\n\nexport function dealersReducer(state: DealersInfo = null, action: OneFormActionTypes | DealersActionTypes): any {\n switch (action.type) {\n // case RESET_STATE:\n // return { ...dealersInfo };\n case SET_DEALERS:\n return {\n ...state,\n dealers: [...action.payload],\n };\n case SET_INSTALLATIONS:\n return {\n ...state,\n installations: [...action.payload],\n };\n case SET_POINTS:\n return {\n ...state,\n points: [...action.payload],\n };\n case SET_CARLINES:\n return {\n ...state,\n carlines: [...action.payload],\n };\n case SET_CITA_CARLINES:\n return {\n ...state,\n citaCarlines: [...action.payload],\n };\n case SET_SELECTED_CARLINE:\n return {\n ...state,\n selectedCarline: action.payload,\n };\n case SET_SELECTED_DEALER:\n return {\n ...state,\n selectedDealer: action.payload,\n };\n case SET_URL_DEALER:\n return {\n ...state,\n urlDealer: action.payload,\n };\n case SET_FAVOURITE_DEALER:\n return {\n ...state,\n favouriteDealer: action.payload,\n };\n case DEALERS_OR_INSTALLATIONS_MODE:\n return {\n ...state,\n dealersOrInstallationsMode: action.payload,\n };\n case SET_SELECTED_INSTALLATION:\n return {\n ...state,\n selectedInstallation: action.payload,\n };\n case SET_OFERTA:\n return {\n ...state,\n oferta: action.payload,\n };\n case SET_MATCH:\n return {\n ...state,\n match: action.payload,\n };\n case SET_SALESGROUP:\n return {\n ...state,\n salesGroup: action.payload,\n };\n default:\n return state;\n }\n}\n","export const RESET_STATE = 'RESET_STATE';\n\ninterface ResetStateAction {\n type: typeof RESET_STATE;\n}\n\nexport type OneFormActionTypes = ResetStateAction;\n","export const UPDATE_FORM = 'UPDATE_FORM';\nexport const UPDATE_FIELDS = 'UPDATE_FIELDS';\n\ninterface UpdateFormAction {\n type: typeof UPDATE_FORM;\n payload: any;\n}\n\ninterface UpdateFieldsAction {\n type: typeof UPDATE_FIELDS;\n payload: any;\n}\n\nexport type FormDataActionTypes = UpdateFieldsAction | UpdateFormAction;\n","import { formData } from './';\nimport { FormDataGroup } from 'src/types';\nimport { OneFormActionTypes, RESET_STATE } from './types';\nimport { FormDataActionTypes, UPDATE_FIELDS, UPDATE_FORM } from './form-data-types';\n\nexport function formDataReducer(state: FormDataGroup = null, action: OneFormActionTypes | FormDataActionTypes): any {\n switch (action.type) {\n case RESET_STATE:\n return { ...formData };\n case UPDATE_FORM:\n return {\n fields: { ...state.fields, ...action.payload.fields },\n headers: { ...state.headers, ...action.payload.headers },\n flags: { ...state.flags, ...action.payload.flags },\n };\n case UPDATE_FIELDS:\n return {\n ...state,\n fields: { ...state.fields, ...action.payload },\n };\n default:\n return state;\n }\n}\n","import { Center, FormInfo, Geometry, Steps } from 'src/types';\nimport { Suggestion } from '../NewMap';\n\nexport const RESET_FORM_INFO = 'RESET_FORM_INFO';\nexport const SEND_FORM = 'SEND_FORM';\nexport const SET_FORM_INFO = 'SET_FORM_INFO';\nexport const SET_FORM_RESPONSE = 'SET_FORM_RESPONSE';\nexport const HIDE_LEGAL = 'HIDE_LEGAL';\nexport const SET_CUSTOM_LEGAL = 'SET_CUSTOM_LEGAL';\nexport const SET_SHOW_CALENDAR_ON_LOAD = 'SET_SHOW_CALENDAR_ON_LOAD';\nexport const SET_DELETE_CLOSE_AND_PREVIOUS = 'SET_DELETE_CLOSE_AND_PREVIOUS';\nexport const SET_FORM_SUBMITTED = 'SET_FORM_SUBMITTED';\nexport const SET_INITIAL_STEPS = 'SET_INITIAL_STEPS';\nexport const SET_MOLECULAR_SERVICE_CONFIG = 'SET_MOLECULAR_SERVICE_CONFIG';\nexport const SET_NUMBER_OF_SCREENS = 'SET_NUMBER_OF_SCREENS';\nexport const SET_SEND_DMS_FAILED = 'SET_SEND_DMS_FAILED';\nexport const SET_STEPS_HISTORY = 'SET_STEPS_HISTORY';\nexport const SET_NAVIGATION_MOVING_FORWARD = 'SET_NAVIGATION_MOVING_FORWARD';\nexport const SHOW_FINAL_SCREEN = 'SHOW_FINAL_SCREEN';\nexport const SUGGESTION_IS_DEALER = 'SUGGESTION_IS_DEALER';\nexport const SUGGESTION_IS_ADDRESS = 'SUGGESTION_IS_ADDRESS';\nexport const SUGGESTION_IS_IN_CANARY_ISLANDS = 'SUGGESTION_IS_IN_CANARY_ISLANDS';\nexport const TRIGGER_EXIT_ANIMATION = 'TRIGGER_EXIT_ANIMATION';\nexport const UPDATE_FIRST_MAP_LOAD = 'UPDATE_FIRST_MAP_LOAD';\nexport const UPDATE_FORM_ENDED = 'UPDATE_FORM_ENDED';\nexport const UPDATE_FULLSCREEN = 'UPDATE_FULLSCREEN';\nexport const UPDATE_GENERIC_ERROR = 'UPDATE_GENERIC_ERROR';\nexport const UPDATE_GEOMETRY = 'UPDATE_GEOMETRY';\nexport const DISABLE_TRACKING = 'DISABLE_TRACKING';\nexport const UPDATE_INITIAL_ZOOM = 'UPDATE_INITIAL_ZOOM';\nexport const UPDATE_LAST_STEP = 'UPDATE_LAST_STEP';\nexport const UPDATE_MULTISTEP_SCREENINDEX = 'UPDATE_MULTISTEP_SCREENINDEX';\nexport const UPDATE_MULTISTEPS = 'UPDATE_MULTISTEPS';\nexport const UPDATE_NEXT_STEP = 'UPDATE_NEXT_STEP';\nexport const UPDATE_SCREEN = 'UPDATE_SCREEN';\nexport const UPDATE_SEND_FORM = 'UPDATE_SEND_FORM';\nexport const UPDATE_STEP = 'UPDATE_STEP';\nexport const UPDATE_STEPS = 'UPDATE_STEPS';\nexport const UPDATE_STEPS_HISTORY = 'UPDATE_STEPS_HISTORY';\nexport const UPDATE_SUGGESTION = 'UPDATE_SUGGESTION';\nexport const UPDATE_USER_CENTER = 'UPDATE_USER_CENTER';\nexport const UPDATE_USER_GEOLOCATION = 'UPDATE_USER_GEOLOCATION';\nexport const UPDATE_WAIT_FOR_NEXT_STEP = 'UPDATE_WAIT_FOR_NEXT_STEP';\n\ninterface SetFormInfoAction {\n type: typeof SET_FORM_INFO;\n payload: Partial;\n}\ninterface SetFormResponseAction {\n type: typeof SET_FORM_RESPONSE;\n payload: any;\n}\ninterface SetFormSubmittedAction {\n type: typeof SET_FORM_SUBMITTED;\n payload: boolean;\n}\ninterface SetStepsHistoryAction {\n type: typeof SET_STEPS_HISTORY;\n payload: number[];\n}\ninterface SetShowCalendarAction {\n type: typeof SET_SHOW_CALENDAR_ON_LOAD;\n payload: boolean;\n}\n\ninterface DeleteCloseAndPrevious {\n type: typeof SET_DELETE_CLOSE_AND_PREVIOUS;\n payload: boolean;\n}\ninterface SetCustomLegalAction {\n type: typeof SET_CUSTOM_LEGAL;\n payload: JSX.Element;\n}\ninterface HideLegalAction {\n type: typeof HIDE_LEGAL;\n payload: boolean;\n}\ninterface SetInitialStepsAction {\n type: typeof SET_INITIAL_STEPS;\n payload: Steps[];\n}\ninterface SetNavigationMovingForwardAction {\n type: typeof SET_NAVIGATION_MOVING_FORWARD;\n payload: boolean;\n}\ninterface SetSendDmsFailedAction {\n type: typeof SET_SEND_DMS_FAILED;\n payload: boolean;\n}\ninterface SendFormAction {\n type: typeof SEND_FORM;\n payload: any;\n}\n\ninterface ResetFormInfoAction {\n type: typeof RESET_FORM_INFO;\n}\ninterface UpdateScreenAction {\n type: typeof UPDATE_SCREEN;\n payload: number;\n}\n\ninterface UpdateStepsHistoryAction {\n type: typeof UPDATE_STEPS_HISTORY;\n payload: number;\n}\ninterface UpdateInitialZoomAction {\n type: typeof UPDATE_INITIAL_ZOOM;\n payload: number;\n}\ninterface UpdateStepAction {\n type: typeof UPDATE_STEP;\n payload: Steps;\n}\ninterface UpdateLastStepAction {\n type: typeof UPDATE_LAST_STEP;\n payload: Steps;\n}\ninterface UpdateStepsAction {\n type: typeof UPDATE_STEPS;\n payload: Steps[];\n}\ninterface UpdateGenericErrorAction {\n type: typeof UPDATE_GENERIC_ERROR;\n payload: boolean;\n}\ninterface UpdateWaitForNextStepAction {\n type: typeof UPDATE_WAIT_FOR_NEXT_STEP;\n payload: boolean;\n}\n\ninterface TriggerExitAnimationAction {\n type: typeof TRIGGER_EXIT_ANIMATION;\n payload: boolean;\n}\n\ninterface UpdateFirstMapLoadAction {\n type: typeof UPDATE_FIRST_MAP_LOAD;\n payload: boolean;\n}\ninterface UpdateNextStepAction {\n type: typeof UPDATE_NEXT_STEP;\n payload: () => number;\n}\n\ninterface UpdateSendFormAction {\n type: typeof UPDATE_SEND_FORM;\n payload: () => boolean;\n}\n\ninterface ShowFinalScreenAction {\n type: typeof SHOW_FINAL_SCREEN;\n payload: boolean;\n}\n\ninterface SetNumberOfScreensAction {\n type: typeof SET_NUMBER_OF_SCREENS;\n payload: number;\n}\n\ninterface UpdateFullscreenAction {\n type: typeof UPDATE_FULLSCREEN;\n payload: boolean;\n}\ninterface UpdateMultiStepsAction {\n type: typeof UPDATE_MULTISTEPS;\n payload: Steps[];\n}\ninterface UpdateMultiScreenIndexAction {\n type: typeof UPDATE_MULTISTEP_SCREENINDEX;\n payload: number;\n}\n\ninterface UpdateUserCenterAction {\n type: typeof UPDATE_USER_CENTER;\n payload: Center;\n}\n\ninterface UpdateSuggestionIsDealer {\n type: typeof SUGGESTION_IS_DEALER;\n payload: boolean;\n}\ninterface UpdateSuggestionIsInCanaryIslands {\n type: typeof SUGGESTION_IS_IN_CANARY_ISLANDS;\n payload: boolean;\n}\ninterface UpdateSuggestionIsAddress {\n type: typeof SUGGESTION_IS_ADDRESS;\n payload: boolean;\n}\ninterface UpdateSuggestion {\n type: typeof UPDATE_SUGGESTION;\n payload: Suggestion;\n}\ninterface UpdateUserGeolocation {\n type: typeof UPDATE_USER_GEOLOCATION;\n payload: Suggestion;\n}\n\ninterface UpdateFormEnded {\n type: typeof UPDATE_FORM_ENDED;\n payload: boolean;\n}\n\ninterface UpdateGeometryAction {\n type: typeof UPDATE_GEOMETRY;\n payload: Geometry;\n}\ninterface DisableTrackingAction {\n type: typeof DISABLE_TRACKING;\n}\n\nexport type FormInfoActionTypes =\n | SetInitialStepsAction\n | ResetFormInfoAction\n | SendFormAction\n | SetCustomLegalAction\n | SetShowCalendarAction\n | HideLegalAction\n | SetFormInfoAction\n | SetFormResponseAction\n | SetFormSubmittedAction\n | SetNavigationMovingForwardAction\n | SetNumberOfScreensAction\n | SetSendDmsFailedAction\n | SetStepsHistoryAction\n | ShowFinalScreenAction\n | TriggerExitAnimationAction\n | UpdateFirstMapLoadAction\n | UpdateFormEnded\n | UpdateFullscreenAction\n | UpdateGenericErrorAction\n | UpdateGeometryAction\n | UpdateInitialZoomAction\n | UpdateLastStepAction\n | UpdateMultiScreenIndexAction\n | UpdateMultiStepsAction\n | UpdateNextStepAction\n | UpdateScreenAction\n | UpdateSendFormAction\n | UpdateStepAction\n | UpdateStepsAction\n | UpdateStepsAction\n | UpdateStepsHistoryAction\n | UpdateSuggestion\n | UpdateSuggestionIsAddress\n | UpdateSuggestionIsDealer\n | UpdateSuggestionIsInCanaryIslands\n | UpdateUserCenterAction\n | UpdateUserGeolocation\n | DisableTrackingAction\n | UpdateWaitForNextStepAction;\n","import { FormInfo } from 'src/types';\nimport { OneFormActionTypes, RESET_STATE } from './types';\nimport {\n FormInfoActionTypes,\n SET_FORM_INFO,\n SET_FORM_RESPONSE,\n SET_INITIAL_STEPS,\n SET_FORM_SUBMITTED,\n SET_SHOW_CALENDAR_ON_LOAD,\n SET_DELETE_CLOSE_AND_PREVIOUS,\n SET_NUMBER_OF_SCREENS,\n SET_SEND_DMS_FAILED,\n SET_STEPS_HISTORY,\n SHOW_FINAL_SCREEN,\n SET_NAVIGATION_MOVING_FORWARD,\n SUGGESTION_IS_DEALER,\n SUGGESTION_IS_IN_CANARY_ISLANDS,\n TRIGGER_EXIT_ANIMATION,\n UPDATE_FIRST_MAP_LOAD,\n UPDATE_FORM_ENDED,\n UPDATE_FULLSCREEN,\n UPDATE_GENERIC_ERROR,\n UPDATE_GEOMETRY,\n DISABLE_TRACKING,\n UPDATE_INITIAL_ZOOM,\n UPDATE_LAST_STEP,\n UPDATE_MULTISTEP_SCREENINDEX,\n UPDATE_MULTISTEPS,\n UPDATE_NEXT_STEP,\n UPDATE_SCREEN,\n UPDATE_SEND_FORM,\n UPDATE_STEP,\n UPDATE_STEPS_HISTORY,\n UPDATE_STEPS,\n UPDATE_SUGGESTION,\n SUGGESTION_IS_ADDRESS,\n HIDE_LEGAL,\n SET_CUSTOM_LEGAL,\n UPDATE_USER_CENTER,\n UPDATE_USER_GEOLOCATION,\n UPDATE_WAIT_FOR_NEXT_STEP,\n} from './form-info-types';\n\nimport { formInfo } from './';\n\nexport function formInfoReducer(state: FormInfo = null, action: OneFormActionTypes | FormInfoActionTypes): any {\n switch (action.type) {\n case RESET_STATE:\n return { ...formInfo };\n case SET_FORM_INFO:\n return { ...state, ...action.payload };\n case SET_FORM_RESPONSE:\n return { ...state, formResponse: action.payload };\n case HIDE_LEGAL:\n return { ...state, hideLegal: action.payload };\n \n case SET_CUSTOM_LEGAL:\n return { ...state, customLegal: action.payload };\n\n case SET_FORM_SUBMITTED:\n return { ...state, formSubmitted: action.payload };\n case UPDATE_SCREEN:\n return {\n ...state,\n screenIndex: action.payload,\n };\n case SET_NAVIGATION_MOVING_FORWARD:\n return {\n ...state,\n navigationMovingForward: action.payload,\n };\n case SET_NUMBER_OF_SCREENS:\n return {\n ...state,\n numberOfScreens: action.payload,\n };\n case SET_STEPS_HISTORY:\n return { ...state, stepsHistory: action.payload };\n case UPDATE_STEPS_HISTORY:\n if (!state.stepsHistory || state.stepsHistory.length === 0) {\n return {\n ...state,\n };\n }\n \n const previousSteps = [...state.stepsHistory];\n const newNumber = action.payload;\n const index = previousSteps.indexOf(newNumber);\n\n if (index === -1) {\n previousSteps.push(newNumber);\n return {\n ...state,\n stepsHistory: previousSteps,\n };\n }\n return {\n ...state,\n };\n case UPDATE_STEP:\n return {\n ...state,\n step: action.payload,\n };\n case UPDATE_LAST_STEP:\n return {\n ...state,\n lastStep: action.payload,\n };\n case UPDATE_STEPS:\n return {\n ...state,\n steps: action.payload,\n };\n case SET_INITIAL_STEPS:\n return {\n ...state,\n initialSteps: action.payload,\n };\n case SET_SHOW_CALENDAR_ON_LOAD:\n return {\n ...state,\n showCalendarOnLoad: action.payload,\n };\n case SET_DELETE_CLOSE_AND_PREVIOUS:\n return {\n ...state,\n deleteCloseAndPrevious: action.payload,\n };\n case TRIGGER_EXIT_ANIMATION:\n return {\n ...state,\n triggerExitAnimation: action.payload,\n };\n case UPDATE_GENERIC_ERROR:\n return {\n ...state,\n genericError: action.payload,\n };\n case SET_SEND_DMS_FAILED:\n return {\n ...state,\n sendDmsFailed: action.payload,\n };\n case UPDATE_NEXT_STEP:\n return {\n ...state,\n nextStepCallback: action.payload,\n };\n case UPDATE_FIRST_MAP_LOAD:\n return {\n ...state,\n firstMapLoad: action.payload,\n };\n case UPDATE_SEND_FORM:\n return {\n ...state,\n sendFormCallback: action.payload,\n };\n case UPDATE_FULLSCREEN:\n return {\n ...state,\n fullScreen: action.payload,\n };\n case SHOW_FINAL_SCREEN:\n return {\n ...state,\n showFinalScreen: action.payload,\n };\n case UPDATE_MULTISTEPS:\n return {\n ...state,\n multiSteps: action.payload,\n };\n case UPDATE_MULTISTEP_SCREENINDEX:\n return {\n ...state,\n multiStepScreenIndex: action.payload,\n };\n case UPDATE_USER_CENTER:\n return {\n ...state,\n userCenter: action.payload,\n };\n case SUGGESTION_IS_DEALER:\n return {\n ...state,\n suggestionIsDealer: action.payload,\n };\n case SUGGESTION_IS_IN_CANARY_ISLANDS:\n return {\n ...state,\n suggestionIsInCanaryIslands: action.payload,\n };\n case SUGGESTION_IS_ADDRESS:\n return {\n ...state,\n suggestionIsAddress: action.payload,\n };\n case UPDATE_SUGGESTION:\n return {\n ...state,\n userSuggestion: action.payload,\n };\n case UPDATE_USER_GEOLOCATION:\n return {\n ...state,\n userGeoLocation: action.payload,\n };\n case UPDATE_WAIT_FOR_NEXT_STEP:\n return {\n ...state,\n waitForNextStep: action.payload,\n };\n case UPDATE_FORM_ENDED:\n return {\n ...state,\n formEnded: action.payload,\n };\n /** deprecated */\n case UPDATE_INITIAL_ZOOM:\n return {\n ...state,\n initialZoom: action.payload,\n };\n case UPDATE_GEOMETRY:\n return {\n ...state,\n geometry: action.payload,\n };\n case DISABLE_TRACKING:\n return {\n ...state,\n trackingIsDisabled: true\n };\n\n default:\n return state;\n }\n}\n","import { combineReducers } from 'redux';\nimport { DealersInfo, FormDataGroup, FormInfo, OneFormState } from 'src/types';\nimport { dealersReducer, formDataReducer, formInfoReducer } from './';\n\nexport const formInfoInitialState: FormInfo = {\n firstMapLoad: true,\n formEnded: false,\n formStarted: false,\n fullScreen: false,\n genericError: false,\n formSubmitted: false,\n multiStepScreenIndex: null,\n numberOfScreens: null,\n screenIndex: null,\n showFinalScreen: false,\n step: null,\n steps: null,\n stepsHistory: null,\n thankYouComponent: null,\n triggerExitAnimation: false,\n userIsAuthenticated: false,\n waitForNextStep: false,\n trackingIsDisabled: false\n};\n\nexport const formData: FormDataGroup = { headers: {}, fields: {} };\nexport const dealersInfo: DealersInfo = {\n dealers: null,\n installations: null,\n selectedCarline: null,\n points: null,\n selectedDealer: null,\n favouriteDealer: null,\n urlDealer: null,\n selectedInstallation: null,\n dealersOrInstallationsMode: null,\n carlines: null,\n oferta: null,\n salesGroup: null,\n match: null,\n citaCarlines: null,\n};\n\nexport const initialState: OneFormState = {\n formInfo: formInfoInitialState,\n formData,\n dealersInfo,\n};\n\nexport const oneFormReducer = combineReducers({\n formData: formDataReducer,\n formInfo: formInfoReducer,\n dealersInfo: dealersReducer,\n});\n","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import getPrototypeOf from \"./getPrototypeOf\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn\";\nexport default function _createSuper(Derived) {\n return function () {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (isNativeReflectConstruct()) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/typeof\";\nimport { compose } from 'redux';\n\nfunction extensionComposeStub() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) return undefined;\n if (_typeof(funcs[0]) === 'object') return compose;\n return compose.apply(void 0, _toConsumableArray(funcs));\n}\n\nexport var composeWithDevTools = typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : extensionComposeStub;\nexport var devToolsEnhancer = typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__ : function () {\n return function (noop) {\n return noop;\n };\n};\nexport { composeWithDevTools as composeWithDevToolsDevelopmentOnly, devToolsEnhancer as devToolsEnhancerDevelopmentOnly } from './developmentOnly';\nexport { composeWithDevTools as composeWithDevToolsLogOnly, devToolsEnhancer as devToolsEnhancerLogOnly } from './logOnly';\nexport { composeWithDevTools as composeWithDevToolsLogOnlyInProduction, devToolsEnhancer as devToolsEnhancerLogOnlyInProduction } from './logOnlyInProduction';","import React, { useEffect, useState } from 'react';\nimport { Provider } from 'react-redux';\nimport { createStore, Store } from 'redux';\nimport { OneFormTrigger } from 'src/triggers';\nimport { OneFormState } from 'src/types';\nimport { useIsDevStage, useFeatureAppConfig, useFaContent, useFeatureServices } from 'src/feature-app';\nimport { initialState, oneFormReducer } from './redux';\nimport { composeWithDevTools } from '@redux-devtools/extension';\n\ndeclare global {\n var s: { persCmp?: string };\n}\n\nexport const store: Store = createStore(oneFormReducer, initialState, composeWithDevTools());\nexport default function App() {\n const [loading, setLoading] = useState(true);\n const oneFormService = useFeatureServices()['es:oneform-core'];\n const faContent = useFaContent();\n const config = useFeatureAppConfig();\n const isDevStage = useIsDevStage();\n useEffect(() => {\n oneFormService.initializeService(false); // Necesario para saltarse la comprobación del login en los formularios en los que no sea necesario.\n\n const oneFormCoreDpsIsLoaded = oneFormService.getLoadedState();\n\n oneFormCoreDpsIsLoaded.subscribe({\n next(value) {},\n error(err) {},\n complete() {\n // One Form no se inicializa hasta que no se han cargado todos los datos.\n const { person } = oneFormService.get();\n\n if (person) {\n store.dispatch({ type: 'UPDATE_FIELDS', payload: { ...person } });\n store.dispatch({\n type: 'SET_FORM_INFO',\n payload: { userIsAuthenticated: person.userIsAuthenticated === 'true' ? true : false },\n });\n }\n // setObjectValues(person, methods.setValue);\n if (isDevStage) {\n console.log('%cOneForm Version:', 'font-weight: 700', process.env.VERSION);\n console.log('%cOneForm Feature App Content:', 'font-weight: 700', faContent);\n console.log('%cOneForm Feature App Config:', 'font-weight: 700', config);\n }\n setLoading(false);\n },\n });\n }, []);\n return {loading ? null : };\n}\n","import * as React from 'react';\nimport { Breakpoints } from '../helpers/breakpoint';\nimport { DesignTokenSizeEnum, styled } from '../theme-provider';\nexport { DesignTokenSizeEnum as LayoutRowGap };\nexport const LayoutConfigurations = {\n full: {\n [Breakpoints.default]: [{ name: 'a', columns: 24 }],\n },\n half: {\n [Breakpoints.default]: [\n { name: 'a', columns: 24 },\n { name: 'b', columns: 24 },\n ],\n [Breakpoints.b960]: [\n { name: 'a', columns: 12 },\n { name: 'b', columns: 12 },\n ],\n },\n};\nconst areaConfigIsPlaceholder = (areaConfig) => areaConfig.name !== '.';\nexport const createFullLayoutConfiguration = (config, length) => {\n const configWithoutEmptySpaces = config.filter(areaConfigIsPlaceholder);\n return Array.from({\n length: Math.ceil(length / configWithoutEmptySpaces.length) * config.length,\n }, (_ignore, index) => {\n const name = config[index % config.length].name;\n const columns = config[index % config.length].columns;\n if (name === '.') {\n return {\n name,\n columns,\n };\n }\n return {\n name: `${name}${Math.floor(index / config.length)}`,\n columns,\n };\n });\n};\nexport const createLayoutConfigurationLines = (config) => config.reduce((acc, area) => {\n const newAreas = new Array(area.columns).fill(area.name);\n if (!acc.length || acc[acc.length - 1].length + area.columns > 24) {\n acc.push(newAreas);\n }\n else {\n acc[acc.length - 1].push(...newAreas);\n }\n return acc;\n}, []);\nconst StyledContainer = styled.div.withConfig({ displayName: \"StyledContainer\", componentId: \"sc-6xo49d\" }) `display:grid;max-width:${Breakpoints.b2560}px;margin:auto;${(props) => Object.keys(props.appearance).map((breakpoint) => {\n const config = props.appearance[breakpoint];\n const fullConfig = createFullLayoutConfiguration(config, props.length);\n const configLines = createLayoutConfigurationLines(fullConfig);\n const rule = `\n\t\t\t\t\tgrid-template-columns: repeat(24, 1fr);\n\t\t\t\t\tgrid-template-areas: ${configLines\n .map((line) => `\"${line.join(' ')}\"`)\n .join(' ')};\n\t\t\t\t`;\n if (parseInt(breakpoint, 10) === Breakpoints.default) {\n return rule;\n }\n return `\n\t\t\t\t@media (min-width: ${breakpoint}px) {\n\t\t\t\t\t${rule}\n\t\t\t\t}\n\t\t\t`;\n})} row-gap:${(props) => props.rowGap && props.theme.size[props.rowGap]};`;\nStyledContainer.displayName = 'StyledContainer';\nconst getGridAreaForConfigAndChild = (config, index) => Object.keys(config).map((breakpoint) => {\n const configForBreakpoint = config[breakpoint].filter(areaConfigIsPlaceholder);\n const configForDefaultBreakpoint = config[Breakpoints.default].filter(areaConfigIsPlaceholder);\n const rule = `grid-area: ${configForDefaultBreakpoint[index % configForBreakpoint.length].name}${Math.floor(index / configForBreakpoint.length)};`;\n if (parseInt(breakpoint, 10) === Breakpoints.default) {\n return rule;\n }\n return `\n\t\t\t@media (min-width: ${breakpoint}px) {\n\t\t\t\t${rule}\n\t\t\t}\n\t\t`;\n});\nconst StyledChildWrapper = styled.div.withConfig({ displayName: \"StyledChildWrapper\", componentId: \"sc-ybw8a0\" }) `${(props) => {\n const { appearance, index = 0 } = props;\n return getGridAreaForConfigAndChild(appearance, index);\n}};overflow:${(props) => props.allowOverflowingContent ? 'visible' : 'hidden'};`;\nStyledChildWrapper.displayName = 'StyledChildWrapper';\nexport const Layout = (props) => {\n const { children, rowGap, allowOverflowingContent, appearance = LayoutConfigurations.full, } = props;\n const filteredChildren = React.Children.toArray(children).filter(React.isValidElement);\n if (filteredChildren.length === 0) {\n return null;\n }\n const wrappedChildren = filteredChildren.map((child, index) => {\n const key = child.key === null ? undefined : child.key;\n return (React.createElement(StyledChildWrapper, { appearance: appearance, key: key, index: index, allowOverflowingContent: allowOverflowingContent }, child));\n });\n return (React.createElement(StyledContainer, { appearance: appearance, rowGap: rowGap, length: filteredChildren.length }, wrappedChildren));\n};\nLayout.displayName = 'Layout';\n","'use strict';\n\nmodule.exports = Point;\n\n/**\n * A standalone point geometry with useful accessor, comparison, and\n * modification methods.\n *\n * @class Point\n * @param {Number} x the x-coordinate. this could be longitude or screen\n * pixels, or any other sort of unit.\n * @param {Number} y the y-coordinate. this could be latitude or screen\n * pixels, or any other sort of unit.\n * @example\n * var point = new Point(-77, 38);\n */\nfunction Point(x, y) {\n this.x = x;\n this.y = y;\n}\n\nPoint.prototype = {\n\n /**\n * Clone this point, returning a new point that can be modified\n * without affecting the old one.\n * @return {Point} the clone\n */\n clone: function() { return new Point(this.x, this.y); },\n\n /**\n * Add this point's x & y coordinates to another point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n add: function(p) { return this.clone()._add(p); },\n\n /**\n * Subtract this point's x & y coordinates to from point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n sub: function(p) { return this.clone()._sub(p); },\n\n /**\n * Multiply this point's x & y coordinates by point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n multByPoint: function(p) { return this.clone()._multByPoint(p); },\n\n /**\n * Divide this point's x & y coordinates by point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n divByPoint: function(p) { return this.clone()._divByPoint(p); },\n\n /**\n * Multiply this point's x & y coordinates by a factor,\n * yielding a new point.\n * @param {Point} k factor\n * @return {Point} output point\n */\n mult: function(k) { return this.clone()._mult(k); },\n\n /**\n * Divide this point's x & y coordinates by a factor,\n * yielding a new point.\n * @param {Point} k factor\n * @return {Point} output point\n */\n div: function(k) { return this.clone()._div(k); },\n\n /**\n * Rotate this point around the 0, 0 origin by an angle a,\n * given in radians\n * @param {Number} a angle to rotate around, in radians\n * @return {Point} output point\n */\n rotate: function(a) { return this.clone()._rotate(a); },\n\n /**\n * Rotate this point around p point by an angle a,\n * given in radians\n * @param {Number} a angle to rotate around, in radians\n * @param {Point} p Point to rotate around\n * @return {Point} output point\n */\n rotateAround: function(a,p) { return this.clone()._rotateAround(a,p); },\n\n /**\n * Multiply this point by a 4x1 transformation matrix\n * @param {Array} m transformation matrix\n * @return {Point} output point\n */\n matMult: function(m) { return this.clone()._matMult(m); },\n\n /**\n * Calculate this point but as a unit vector from 0, 0, meaning\n * that the distance from the resulting point to the 0, 0\n * coordinate will be equal to 1 and the angle from the resulting\n * point to the 0, 0 coordinate will be the same as before.\n * @return {Point} unit vector point\n */\n unit: function() { return this.clone()._unit(); },\n\n /**\n * Compute a perpendicular point, where the new y coordinate\n * is the old x coordinate and the new x coordinate is the old y\n * coordinate multiplied by -1\n * @return {Point} perpendicular point\n */\n perp: function() { return this.clone()._perp(); },\n\n /**\n * Return a version of this point with the x & y coordinates\n * rounded to integers.\n * @return {Point} rounded point\n */\n round: function() { return this.clone()._round(); },\n\n /**\n * Return the magitude of this point: this is the Euclidean\n * distance from the 0, 0 coordinate to this point's x and y\n * coordinates.\n * @return {Number} magnitude\n */\n mag: function() {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n },\n\n /**\n * Judge whether this point is equal to another point, returning\n * true or false.\n * @param {Point} other the other point\n * @return {boolean} whether the points are equal\n */\n equals: function(other) {\n return this.x === other.x &&\n this.y === other.y;\n },\n\n /**\n * Calculate the distance from this point to another point\n * @param {Point} p the other point\n * @return {Number} distance\n */\n dist: function(p) {\n return Math.sqrt(this.distSqr(p));\n },\n\n /**\n * Calculate the distance from this point to another point,\n * without the square root step. Useful if you're comparing\n * relative distances.\n * @param {Point} p the other point\n * @return {Number} distance\n */\n distSqr: function(p) {\n var dx = p.x - this.x,\n dy = p.y - this.y;\n return dx * dx + dy * dy;\n },\n\n /**\n * Get the angle from the 0, 0 coordinate to this point, in radians\n * coordinates.\n * @return {Number} angle\n */\n angle: function() {\n return Math.atan2(this.y, this.x);\n },\n\n /**\n * Get the angle from this point to another point, in radians\n * @param {Point} b the other point\n * @return {Number} angle\n */\n angleTo: function(b) {\n return Math.atan2(this.y - b.y, this.x - b.x);\n },\n\n /**\n * Get the angle between this point and another point, in radians\n * @param {Point} b the other point\n * @return {Number} angle\n */\n angleWith: function(b) {\n return this.angleWithSep(b.x, b.y);\n },\n\n /*\n * Find the angle of the two vectors, solving the formula for\n * the cross product a x b = |a||b|sin(θ) for θ.\n * @param {Number} x the x-coordinate\n * @param {Number} y the y-coordinate\n * @return {Number} the angle in radians\n */\n angleWithSep: function(x, y) {\n return Math.atan2(\n this.x * y - this.y * x,\n this.x * x + this.y * y);\n },\n\n _matMult: function(m) {\n var x = m[0] * this.x + m[1] * this.y,\n y = m[2] * this.x + m[3] * this.y;\n this.x = x;\n this.y = y;\n return this;\n },\n\n _add: function(p) {\n this.x += p.x;\n this.y += p.y;\n return this;\n },\n\n _sub: function(p) {\n this.x -= p.x;\n this.y -= p.y;\n return this;\n },\n\n _mult: function(k) {\n this.x *= k;\n this.y *= k;\n return this;\n },\n\n _div: function(k) {\n this.x /= k;\n this.y /= k;\n return this;\n },\n\n _multByPoint: function(p) {\n this.x *= p.x;\n this.y *= p.y;\n return this;\n },\n\n _divByPoint: function(p) {\n this.x /= p.x;\n this.y /= p.y;\n return this;\n },\n\n _unit: function() {\n this._div(this.mag());\n return this;\n },\n\n _perp: function() {\n var y = this.y;\n this.y = this.x;\n this.x = -y;\n return this;\n },\n\n _rotate: function(angle) {\n var cos = Math.cos(angle),\n sin = Math.sin(angle),\n x = cos * this.x - sin * this.y,\n y = sin * this.x + cos * this.y;\n this.x = x;\n this.y = y;\n return this;\n },\n\n _rotateAround: function(angle, p) {\n var cos = Math.cos(angle),\n sin = Math.sin(angle),\n x = p.x + cos * (this.x - p.x) - sin * (this.y - p.y),\n y = p.y + sin * (this.x - p.x) + cos * (this.y - p.y);\n this.x = x;\n this.y = y;\n return this;\n },\n\n _round: function() {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n return this;\n }\n};\n\n/**\n * Construct a point from an array if necessary, otherwise if the input\n * is already a Point, or an unknown type, return it unchanged\n * @param {Array|Point|*} a any kind of input value\n * @return {Point} constructed point, or passed-through value.\n * @example\n * // this\n * var point = Point.convert([0, 1]);\n * // is equivalent to\n * var point = new Point(0, 1);\n */\nPoint.convert = function (a) {\n if (a instanceof Point) {\n return a;\n }\n if (Array.isArray(a)) {\n return new Point(a[0], a[1]);\n }\n return a;\n};\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","import { ServiceTimeoutError } from './error-handling';\nimport { getFetchWithTracing } from './setup';\nimport { getAuthorizationHeader } from './utils/auth';\nimport { startServiceTimeout } from './utils/timeout';\nconst defaultServiceTimeout = 10000;\nexport function getFetchOptions(serviceOptions = {}, mockConfig = {}) {\n const timeout = serviceOptions.timeout || defaultServiceTimeout;\n const headers = {};\n const authorizationHeader = getAuthorizationHeader(serviceOptions, mockConfig);\n if (authorizationHeader) {\n headers.Authorization = authorizationHeader;\n }\n const availableHeaders = serviceOptions.headers;\n if (availableHeaders) {\n Object.keys(availableHeaders).forEach(header => {\n headers[header] = availableHeaders[header];\n });\n }\n return { headers, timeout };\n}\nfunction isNodeFetchRequestTimeoutError(error) {\n return error.type === 'request-timeout';\n}\nfunction isNetworkTimeoutError(error) {\n if (isNodeFetchRequestTimeoutError(error)) {\n return true;\n }\n // https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch\n return error instanceof TypeError;\n}\nasync function startFetching(url, options, serviceName) {\n try {\n const fetchFn = getFetchWithTracing(serviceName);\n return await fetchFn(url, options);\n }\n catch (error) {\n if (isNetworkTimeoutError(error)) {\n throw new ServiceTimeoutError(serviceName);\n }\n throw error;\n }\n}\nexport async function fetch(url, serviceName, options = {}) {\n // tslint:disable-next-line strict-type-predicates\n if (typeof document !== 'undefined' && options.timeout) {\n return Promise.race([\n startFetching(url, options, serviceName),\n startServiceTimeout(options.timeout, serviceName)\n ]);\n }\n return startFetching(url, options, serviceName);\n}\n","import isomorphicFetch from 'isomorphic-fetch';\nconst defaultConfiguration = {\n createLogger: () => console,\n getFetchWithTracing: () => isomorphicFetch,\n recordOutgoingMetrics: () => () => undefined\n};\nlet configuration;\nexport function setup(config) {\n configuration = config;\n}\nexport function createLogger(name) {\n return {\n error: (...args) => getLogger(name).error(...args),\n warn: (...args) => getLogger(name).warn(...args),\n info: (...args) => getLogger(name).info(...args),\n trace: (...args) => getLogger(name).trace(...args)\n };\n}\nconst loggers = {};\n/**\n * Because of the configurability, we can't create a logger at the top of each file that needs it and be done with it\n * because at that time the configuration probably didn't happen yet. Instead get the logger each time you need it.\n *\n * Do not cache the result at module level!\n */\nfunction getLogger(name) {\n if (!loggers[name]) {\n const create = (configuration && configuration.createLogger) ||\n defaultConfiguration.createLogger;\n loggers[name] = create(name);\n }\n return loggers[name];\n}\nexport function getFetchWithTracing(serviceName) {\n const get = (configuration && configuration.getFetchWithTracing) ||\n defaultConfiguration.getFetchWithTracing;\n return get(serviceName);\n}\nexport function recordOutgoingMetrics(serviceName) {\n const record = (configuration && configuration.recordOutgoingMetrics) ||\n defaultConfiguration.recordOutgoingMetrics;\n return record(serviceName);\n}\n","import { CTA } from '@volkswagen-onehub/components-core';\nimport { CTAButtonProps } from '@volkswagen-onehub/components-core/dist/call-to-action';\nimport React, { useEffect, useState } from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport { useSelector } from 'react-redux';\nimport { useTrackingManager } from 'src/feature-app/hooks/use-tracking-manager';\nimport { OneFormState } from 'src/types';\n\ndeclare type Emphasis = 'primary' | 'secondary' | 'tertiary';\ndeclare type Size = 'small' | 'large';\n\ninterface InputButtonProps extends CTAButtonProps {\n innerRef?: any;\n name: string;\n key: string | number;\n label: string;\n selectedValue?: string;\n size?: Size;\n ignoreHandleClick?: boolean;\n disabled?: boolean;\n}\n\nexport function InputButton(props: InputButtonProps) {\n const trackingManager = useTrackingManager();\n\n const { innerRef, title, key, selectedValue, label, name, onClick, size, ignoreHandleClick, disabled } = props;\n const { formData } = useSelector((state: OneFormState) => state);\n\n const { control, register, setValue } = useFormContext();\n const [apparence, setApparence] = useState('secondary');\n\n const handleClick = () => {\n apparence === 'secondary' ? setApparence('primary') : setApparence('secondary');\n setValue(name, label);\n };\n\n useEffect(() => {\n selectedValue === label ? setApparence('primary') : setApparence('secondary');\n const value = formData.fields[name];\n if (value && value === label) {\n setApparence('primary');\n }\n }, [selectedValue]);\n\n return (\n {\n e.preventDefault();\n trackingManager.trackFormButtonClick({\n contentId: label,\n });\n // if (onClick) onClick(e);\n // else handleClick();\n if (!ignoreHandleClick) {\n handleClick();\n }\n if (onClick) {\n onClick(e);\n }\n }}\n size={size ? size : 'large'}\n disabled={disabled}\n >\n {label}\n \n }\n key={key}\n name={name}\n control={control}\n />\n );\n}\n","import { getDistanceFromLatLngCenter } from './utils';\nimport { isNull } from 'src/feature-app';\nimport { Horario, Slot, Points, Center, Slots } from 'src/types';\n\nexport const sortPoints = (\n clusters: Points[],\n horario: Horario,\n center: google.maps.LatLng,\n supercluster: supercluster\n // zoom: number,\n // firstLoad: boolean\n): { pointsByTime: Points[] | null; pointsByDistance: Points[] | null; newCenter?: Center; newZoom?: number } => {\n // Filtramos los puntos que no son clusters para eliminar las agrupaciones y quedarnos con los dealers unicamente, para posteriormente obtener su distancia la centro del mapa.\n\n // const distanceForFilter = getDistanceForFilter(zoom);\n\n // points = points.filter((point: Points) => Number(point.properties.distanceFromCenter) < distanceForFilter);\n let points: Points[] = [...clusters];\n\n const realClusters = points.filter((point: Points) => point.properties.cluster === true);\n // .sort((a: Points, b: Points) => Number(b.properties.point_count) - Number(a.properties.point_count));\n\n realClusters.forEach((cluster) => {\n if (supercluster) {\n const leaves: Points[] = supercluster.getLeaves(cluster.id);\n leaves.forEach((dealer) => {\n // Necesitamos esta propiedad para en caso de hover sobre la card, poder cambiar el cluster de color.\n dealer.properties.parent_cluster_id = cluster.id;\n\n points.push(dealer);\n });\n }\n });\n\n points = points.filter((point: Points) => point.properties.cluster === false);\n points = [...points]\n // .filter((point: Points) => point.properties.cluster === false)\n .map((point: Points) => {\n const distanceFromCenter = getDistanceFromLatLngCenter(center, point);\n return {\n ...point,\n properties: {\n ...point.properties,\n distanceFromCenter,\n },\n };\n });\n // if (points.length === 0 && firstLoad) {\n // return { pointsByTime: null, pointsByDistance: null, newCenter: center, newZoom: zoom - 1 };\n // }\n\n const pointsByTime = sortByTime(points, horario);\n\n const pointsByDistance = points.sort(\n (a: Points, b: Points) => Number(a.properties.distanceFromCenter) - Number(b.properties.distanceFromCenter)\n );\n\n return { pointsByTime, pointsByDistance, newCenter: null, newZoom: null };\n};\n\nconst sortByTime = (points: Points[], horario: Horario): Points[] => {\n const pointsWithDms: Points[] = [];\n const pointsWithoutDms: Points[] = [];\n\n points.forEach((point: Points) => {\n const { dealer } = point.properties;\n dealer.dmsInfo && dealer.dmsInfo.dmsAvailable ? pointsWithDms.push(point) : pointsWithoutDms.push(point);\n });\n\n const pointsWithoutDmsSorted = pointsWithoutDms.sort(\n (a: Points, b: Points) => Number(a.properties.distanceFromCenter) - Number(b.properties.distanceFromCenter)\n );\n\n const pointsWithSlots = pointsWithDms.filter((point: Points) => !isNull(point.properties.dealer.slots));\n // Si el usuario elige cualquier opción que no sea Lo antes posible se le devuelven los slots predeterminados.\n // En caso contrario, se debe elegir el turno más temprano de cada concesión y guardarlo como earliestSlot para poder ordenarlos más adelante.\n if (horario !== 'before') {\n const pointsWithDmsAndAvailableSlots: Points[] = [];\n const pointsWithDmsAndWithoutAvailableSlots: Points[] = [];\n pointsWithSlots.forEach((point) => {\n const { dealer } = point.properties;\n isNull(dealer.slots[horario])\n ? pointsWithDmsAndWithoutAvailableSlots.push(point)\n : pointsWithDmsAndAvailableSlots.push(point);\n });\n\n pointsWithDmsAndAvailableSlots.sort(\n (a: Points, b: Points) => a.properties.dealer.slots[horario].from - b.properties.dealer.slots[horario].from\n );\n\n return [...pointsWithDmsAndAvailableSlots, ...pointsWithDmsAndWithoutAvailableSlots, ...pointsWithoutDms];\n } else {\n const pointsWithoutSlots: Points[] = [];\n const pointsWithAtLeastOneSlot: Points[] = [];\n\n // Separamos los dealers con DMS según si tienen al menos un slot disponible o no.\n pointsWithSlots.forEach((dealer: Points) => {\n if (\n !isNull(dealer.properties.dealer.slots.morning) ||\n !isNull(dealer.properties.dealer.slots.evening) ||\n !isNull(dealer.properties.dealer.slots.afternon)\n ) {\n pointsWithAtLeastOneSlot.push(dealer);\n } else {\n pointsWithoutSlots.push(dealer);\n }\n });\n\n const pointsWithEarliestSlot = pointsWithAtLeastOneSlot\n .map((point: Points) => {\n const { slots } = point.properties.dealer;\n const slotsFiltered = Object.values(slots)\n .filter((slot: Slot) => !isNull(slot) && !isNull(slot.from))\n .map((slot: Slot) => slot.from);\n point.properties.earliestSlot = Math.min(...slotsFiltered);\n return point;\n })\n .sort((a: Points, b: Points) => a.properties.earliestSlot - b.properties.earliestSlot);\n return [...pointsWithEarliestSlot, ...pointsWithoutSlots, ...pointsWithoutDmsSorted];\n }\n};\n\nexport const sortPointsByDistance = (\n clusters: Points[],\n center: google.maps.LatLng,\n supercluster: supercluster\n): Points[] => {\n let points: Points[] = [...clusters];\n\n const realClusters = points.filter((point: Points) => point.properties.cluster === true);\n realClusters.forEach((cluster) => {\n if (supercluster) {\n const leaves: Points[] = supercluster.getLeaves(cluster.id);\n leaves.forEach((dealer) => {\n // Necesitamos esta propiedad para en caso de hover sobre la card, poder cambiar el cluster de color.\n dealer.properties.parent_cluster_id = cluster.id;\n\n points.push(dealer);\n });\n }\n });\n\n return points\n .filter((point: Points) => point.properties.cluster === false)\n .map((point: Points) => {\n const distanceFromCenter = getDistanceFromLatLngCenter(center, point);\n return {\n ...point,\n properties: {\n ...point.properties,\n distanceFromCenter,\n },\n };\n })\n .sort((a: Points, b: Points) => Number(a.properties.distanceFromCenter) - Number(b.properties.distanceFromCenter));\n};\n\nexport const getEarliestSlot = (slots: Slots) => {\n if (!slots) {\n return null;\n }\n const filteredSlots = Object.values(slots)\n .filter((slot: Slot) => !isNull(slot) && !isNull(slot.from))\n .map((slot: Slot) => slot.from);\n if (filteredSlots.length === 0) {\n return null;\n }\n return Math.min(...filteredSlots);\n};\n","export * from './NuevaCitaPosventa';\nexport * from './CitaPosventaEmbedded';\nexport * from './types';\nexport * from './MapaCita';\n","import { styled } from '@volkswagen-onehub/components-core';\n\nexport const Background = styled.div<{ calendarIsStep: boolean }>`\n background-color: #ffffff;\n width: 100%;\n min-height: ${(props)=>(props.calendarIsStep ? '100vh' : 'calc(100vh - 52px)')};\n display: flex;\n flex-direction: column;\n justify-content: center;\n margin-top: -2px;\n`;\nexport const AllContentWrapper = styled.div`\n display: flex;\n align-items: center; \n`;\nexport const DealerInfoWrapper = styled.div`\n width: 83vw;\n @media screen and (min-width: 960px) {\n width: 660px;\n }\n`;\nexport const GoBackWrapper = styled.div`\n padding-left: 20px;\n padding-top: 24px;\n padding-bottom: 3px;\n background-color: #ffffff;\n`;\nexport const GreyText = styled.span`\n color: '#6A767D';\n`;\nexport const CalendarHandlerWrapper = styled.div`\n width: 100%;\n display: flex;\n padding: 44px 4% 32px;\n justify-content: space-between;\n align-items: center;\n @media screen and (min-width: 560px) {\n padding: 44px 11% 32px;\n }\n @media screen and (min-width: 960px) {\n padding: 44px 11% 32px;\n }\n`;\nexport const AllDaysWrapper = styled.div`\n width: 100%;\n margin: auto;\n align-self: center;\n justify-self: center;\n margin-bottom: 44px;\n @media screen and (min-width: 560px) {\n width: 89%;\n }\n @media screen and (min-width: 960px) {\n width: 96%;\n margin-left: 32px;\n margin-rigth: 0;\n }\n`;\nexport const TabsWitdh = styled.div`\n width: 83vw;\n @media all and (min-width: 960px) {\n width: 660px;\n }\n`;\nexport const DividerC = styled.div`\n height: 1px;\n width: 100%;\n background-color: #dfe4e8;\n`;\nexport const DayPositionWrapper = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n`;\ninterface DayWrapperProps {\n active?: any;\n presentDay?: any;\n disabled?: boolean;\n}\nexport const DayWrapper = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n color: ${(props) => (props.active ? '#FFFFFF' : props.disabled ? '#dfe4e8' : '#001E50')};\n font-size: ${(props) => (props.presentDay ? '700' : null)};\n background-color: ${(props) => (props.active ? '#001E50' : null)};\n width: 40px;\n height: 40px;\n border-radius: 50%;\n cursor: ${(props) => (props.disabled ? 'default' : 'pointer')};\n\n @media screen and (min-width: 960px) {\n width: 44px;\n height: 44px;\n }\n`;\n\ninterface CapitalizeWrapperProps {\n hasTitle?: boolean;\n isDisabled: boolean;\n}\nexport const Capitalize = styled.span`\n text-transform: capitalize;\n color: ${(props) => (props.isDisabled ? '#E8DFE4' : '#001e50')};\n padding: ${(props) => (props.hasTitle ? null : '0 32px')};\n padding-top: ${(props) => (props.hasTitle ? null : '2px')};\n cursor: ${(props) => (props.isDisabled ? 'default' : 'pointer')};\n`;\n","import {\n Breakpoints,\n BreakpointWrapper,\n Container,\n ContainerHorizontalAlignment,\n ContainerPadding,\n ContainerWrap,\n CTA,\n Layout,\n LayoutRowGap,\n Text,\n TextAlignment,\n TextAppearance,\n TextColor,\n ThemeProvider,\n} from '@volkswagen-onehub/components-core';\nimport dayjs from 'dayjs';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { AnteriorCTA } from 'src/components';\nimport {\n getActualMonth,\n getActualMonthNumber,\n getActualYearNumber,\n getNextActualMonth,\n getPreviousActualMonth,\n getYYYYMMDD,\n useFeatureAppConfig,\n year_MonthNumber_DayNumber,\n useTrackingManager,\n} from 'src/feature-app';\nimport { ArrowLeft, ChevronLeft, ChevronRight } from 'src/icons-core-imports';\nimport { Availability, Calendar, CalendarSlot, Day, DealersData, Horario, OneFormState, Points } from 'src/types';\nimport {\n checkIfEvening,\n checkIfMidDay,\n checkIfMorning,\n getDistanceFromLatLngCenter,\n getNormalizedDate,\n} from '../NewMap';\nimport { CloseInDealerCalendar, FranjaHoraria, getFirstAndLastDayOfMonth, TabsHorario } from './';\nimport {\n AllContentWrapper,\n AllDaysWrapper,\n Background,\n CalendarHandlerWrapper,\n Capitalize,\n DayPositionWrapper,\n DayWrapper,\n DealerInfoWrapper,\n DividerC,\n GoBackWrapper,\n GreyText,\n TabsWitdh,\n} from './CalandarioStyles';\n\nexport interface SlotsHorarios {\n manana: CalendarSlot[];\n mediodia: CalendarSlot[];\n tarde: CalendarSlot[];\n}\n\ninterface CalendarioCitaProps {\n selectedPoint: Points;\n availability: Availability;\n getAvailability: (dealer: DealersData, start: number, end: number) => Promise;\n selectedSlot: any;\n setSelectedSlot: React.Dispatch;\n handleDmsMapExit: (slot: CalendarSlot, point: Points) => void;\n handleNoDmsMapExit: (franjaHoraria: string, day: string, point: Points) => void;\n center: google.maps.LatLng;\n horario: Horario;\n handleHideCalendarOnClick: () => void;\n userIsGeoLocated?: boolean;\n /**\n * Flag para cuando el calendario es un step y no forma parte del mapa, cambian los estilos y es fullscreen;\n */\n calendarIsStep?: boolean;\n}\n\nconst checkDmsAvailableInAvailability = (availability: Availability) => availability?.content?.dealer?.dmsAvailable;\nconst delerHasError = (availability: Availability) => availability?.content?.dealer.hasOwnProperty('error');\n\nexport function CalendarioCita(props: CalendarioCitaProps) {\n const {\n selectedPoint,\n availability,\n getAvailability,\n selectedSlot,\n setSelectedSlot,\n handleDmsMapExit,\n handleNoDmsMapExit,\n center,\n horario,\n handleHideCalendarOnClick,\n userIsGeoLocated,\n calendarIsStep,\n } = props;\n\n const { formName } = useSelector((state: OneFormState) => state.formData.fields);\n\n let name, address, city, zipCode, dealer, distanceFromCenter;\n if (selectedPoint.properties?.dealer?.markerInfo?.dealerInfo) {\n name = selectedPoint.properties.dealer.markerInfo.dealerInfo.name;\n address = selectedPoint.properties.dealer.markerInfo.dealerInfo.address;\n city = selectedPoint.properties.dealer.markerInfo.dealerInfo.city;\n zipCode = selectedPoint.properties.dealer.markerInfo.dealerInfo.zipCode;\n dealer = selectedPoint.properties.dealer;\n distanceFromCenter = selectedPoint.properties.distanceFromCenter;\n } else {\n name = '';\n address = '';\n city = '';\n zipCode = '';\n dealer = {};\n distanceFromCenter = 0;\n }\n // const { dealer } = selectedPoint.properties;\n // const { dmsInfo } = dealer;\n // const { distanceFromCenter } = selectedPoint.properties;\n\n const [preselectedDealerForm, setPreselectedDealerForm] = useState(false);\n const [isCalculadoraFirstStep, setIsCalculadoraFirstStep] = useState(false);\n const config = useFeatureAppConfig();\n\n useEffect(() => {\n if (formName === 'cita-posventa-calculadora') {\n setIsCalculadoraFirstStep(true);\n }\n if (config.trigger === 'cita-posventa-dealer' || formName === 'cita-posventa-calculadora') {\n setPreselectedDealerForm(true);\n } else {\n setPreselectedDealerForm(false);\n }\n }, []);\n\n const daysOfTheWeek = ['Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb', 'Dom'];\n const [loading, setLoading] = useState(false);\n const [month, setMonth] = useState(getActualMonth());\n const [nextMonth, setNextMonth] = useState(getNextActualMonth());\n const [previousMonth, setPreviousMonth] = useState(getPreviousActualMonth());\n const [monthNumber, setMonthNumber] = useState(getActualMonthNumber());\n const [monthOffset, setMonthOffset] = useState(0);\n const [monthDays, setMonthDays] = useState(null);\n const [yearNumber, setYearNumber] = useState(getActualYearNumber());\n const [selectedDay, setSelectedDay] = useState(null);\n const [selectedFranjaHoraria, setSelectedFranjaHoraria] = useState(null);\n const [pastMonthBlocked, setPastMonthBlocked] = useState(false); // En el caso de que el mes actual no tenga fechas disponibles no se debería poder volver atrás.\n const [calendar, setCalendar] = useState(null);\n const [horarios, setHorarios] = useState(null);\n const tabsRef = useRef(null);\n const availabilityRef = useRef(null);\n const [dmsAvailable, setDmsAvailable] = useState(null);\n const trackingManager = useTrackingManager();\n \n useEffect(() => {\n trackingManager.trackFormStepLoad(\n {},\n {\n FormStart: false,\n },\n { StepName: 'MapSlot' }\n );\n handleChangeOfMonth(0); // Primera carga del calendario.\n }, []);\n\n const handleChangeOfMonth = async (newMonthOffset: number): Promise => {\n const { currentMonthNumber, currentMonth, yearNumber, nextMonth } = getDates(newMonthOffset);\n const { firstDayOfMonth, lastDayOfMonth } = getFirstAndLastDayOfMonth(currentMonthNumber, yearNumber);\n\n const availability = await getAvailability(dealer, firstDayOfMonth, lastDayOfMonth);\n\n if (\n checkDmsAvailableInAvailability(availability) &&\n availability.content?.calendar &&\n calendarHasNoProblems(availability) &&\n !delerHasError(availability)\n ) {\n setDmsAvailable(true);\n } else if (\n checkDmsAvailableInAvailability(availability) &&\n calendarHasNoProblems(availability) &&\n !availability.content.calendar\n ) {\n if (newMonthOffset === 2) {\n setDmsAvailable(false);\n } else {\n setPastMonthBlocked(true);\n handleChangeOfMonth(monthOffset + 1);\n }\n return;\n } else {\n setDmsAvailable(false);\n }\n availabilityRef.current = availability;\n\n const { updatedMonthDays, selectedDay } = buildCalendar(currentMonthNumber, yearNumber, availability);\n\n if (selectedDay) {\n setMonthDays(updatedMonthDays);\n setSelectedDay(selectedDay);\n setVariables(newMonthOffset, currentMonth, currentMonthNumber, nextMonth, yearNumber);\n } else {\n setPastMonthBlocked(true);\n handleChangeOfMonth(monthOffset + 1);\n }\n };\n\n const buildCalendar = (monthNumber: string, yearNumber: string, availability: Availability) => {\n // 1. Crear los días del mes.\n const days = createMonthDays(monthNumber, yearNumber);\n // 2. Con el availability, desactivar todos los días que no son necesarios.\n const updatedDays = getDisabledDays(days, availability);\n // 3. Buscar el primer día activo.\n const firstAvailableDay = getFirstAvailableDay(updatedDays, availability);\n // 3.1 En caso de que no encuentre un día en el mes en curso, devolvemos null para que handleChangeOfMonth se\n // ocupe de cargar el siguiente mes.\n if (!firstAvailableDay) {\n return { updatedMonthDays: null, selectedDay: null };\n }\n // 4. Cambiar el estado del primer dia activo\n const { updatedMonthDays, selectedDay } = handleChangeActiveDay(updatedDays, firstAvailableDay);\n // 5. Carga de los horarios del dia seleccionado\n handleChangeInSelectedDay(firstAvailableDay);\n\n return { updatedMonthDays, selectedDay };\n };\n\n /**\n * Genera los dias del calendario para el mes y año seleccionado.\n * @param monthNumber\n * @param yearNumber\n */\n const createMonthDays = (monthNumber: string, yearNumber: string): Day[] => {\n const firstDayOfMonth = dayjs()\n .year(Number(yearNumber))\n .month(Number(monthNumber) - 1)\n .date(1);\n\n const daysInMonth = dayjs()\n .year(Number(yearNumber))\n .month(Number(monthNumber) - 1)\n .daysInMonth();\n\n const firstDayInweek = firstDayOfMonth.format('d'); // The day of the week, with Sunday as 0\n\n let days: Day[] = [];\n\n // Se genera una array con espacios vacios para rellenar la primera fila del calendario. Ej: Si el primer día\n // del mes cae en domingo, se genera una array con 6 espacios vacios, donde el 7º día será el domingo.\n if (firstDayInweek === '0') {\n days = new Array(6).fill('');\n } else {\n days = new Array(parseInt(firstDayInweek) - 1).fill('');\n }\n\n let day = firstDayOfMonth;\n\n for (let i = 1; i <= daysInMonth; i++) {\n let date = getYYYYMMDD(`${yearNumber}-${monthNumber}-${day.format('D')}`); // YYYY - MM - DD\n const dayNumber = day.format('D'); // 1 - 31\n const dayOfTheWeek = day.format('d'); // 0 - 6\n let newDay: Day = {\n dayNumber,\n dayOfTheWeek,\n date,\n disabled: null,\n active: false,\n };\n days.push(newDay);\n day = day.add(1, 'day');\n newDay = null;\n date = null;\n }\n return days;\n };\n\n /**\n * Devuelve los días generados con la propiedad disabled actualizada, según\n * si el día está disponible o no. Si el dealer tiene dms el día estará disponible\n * en caso de que también lo esté en el availability. Para el resto de casos se siguen las\n * normas de la función checkIfDayIsDisabled.\n *\n * @param days\n * @param availability\n */\n const getDisabledDays = (days: Day[], availability: Availability): Day[] => {\n let updatedDays: Day[];\n\n // FLUJO CON DMS\n if (availability && availability.content && availability.content.calendar && calendarHasNoProblems(availability)) {\n const availableDates = availability.content.calendar.map((calendarDay) => calendarDay.date);\n updatedDays = days.map((day) => {\n // Days contiene strings vacías.\n if (typeof day === 'object') {\n const foundDate = availableDates.find((date) => date === day.date);\n day.disabled = !foundDate || checkIfDayIsDisabled(day.date) ? true : false;\n return day;\n }\n return day;\n });\n } else {\n // FLUJO SIN DMS\n updatedDays = days.map((day) => {\n // Days contiene strings vacías.\n if (typeof day === 'object') {\n day.disabled = checkIfDayIsDisabled(day.date) ? true : false;\n }\n return day;\n });\n }\n return updatedDays;\n };\n\n /**\n *\n * Las reglas para desactivar un día son:\n * Si el día ya ha pasado o es el mismo día (no pueden ofrecer cita para el mismo día).\n * Si es domingo en todos los casos.\n * Si es sábado y no tiene DMS.\n *\n * @param date Se necesita la fecha en formato YYYY-MM-DD\n */\n const checkIfDayIsDisabled = (date: string): boolean => {\n const actualDay = year_MonthNumber_DayNumber();\n const dayOfTheWeek = dayjs(date).format('d');\n const isPastOrSameDate = dayjs(date).isSameOrBefore(actualDay);\n const disableSaturday = dayOfTheWeek === '6' && !dmsAvailable;\n const disableSunday = dayOfTheWeek === '0';\n\n if (isPastOrSameDate || disableSaturday || disableSunday) {\n return true;\n }\n return false;\n };\n\n /**\n * Función para comprobar si, aunque el calendario retorne una array con slots, estos son recientes.\n * En el caso de \"Binefar\" devuelve una array a fecha de 1/1/1970, por lo que comprobamos si las fechas son\n * anteriores a una fecha ya pasada aleatoria como el 1/1/2021 para eliminar estos casos.\n * @param availability\n */\n const calendarHasNoProblems = (availability: Availability): boolean => {\n const msForReference = dayjs('2021-01-01', 'YYYY-MM-DD').locale('es').utc().format('x');\n\n if (availability && availability.content && availability.content.calendar) {\n const badFormattedDay = availability.content.calendar.find((calendarDay) => {\n const dateInMs = dayjs(calendarDay.date, 'YYYY-MM-DD').locale('es').utc().format('x');\n if (msForReference > dateInMs) {\n return true;\n }\n });\n if (badFormattedDay) {\n return false;\n }\n }\n return true;\n };\n\n /**\n * Función para obtener el primer dia activo en el calendario.\n * En caso de que la concesión disponga de DMS se busca el primer día que tenga slots disponible en cualquiera de los turnos.\n * En caso de que no encuentre ninguno o no tenga DMS, fija el primer dia que no esté desactivado.\n *\n * @param monthDays\n * @param availability\n */\n const getFirstAvailableDay = (monthDays: Day[], availability: Availability): Day => {\n let firstDay: Day;\n\n //Flujo con DMS\n if (availability && availability.content && availability.content.calendar && calendarHasNoProblems(availability)) {\n for (const dayCalendar of availability.content.calendar) {\n const horarios = sortSlotsByHour(dayCalendar);\n\n if (horario === 'morning' && horarios.manana.length > 0) {\n firstDay = setFirstDay(monthDays, dayCalendar);\n break;\n } else if (horario === 'afternon' && horarios.mediodia.length > 0) {\n firstDay = setFirstDay(monthDays, dayCalendar);\n break;\n } else if (horario === 'evening' && horarios.tarde.length > 0) {\n firstDay = setFirstDay(monthDays, dayCalendar);\n break;\n }\n }\n }\n // Flujo sin DMS\n if (!firstDay) {\n firstDay = monthDays.find((day) => day.disabled === false);\n }\n\n return firstDay;\n };\n\n /**\n * Reparte los slots del calendario en mañana, mediodía y tarde, además de eliminar arrays vacías para evitar posibles errores.\n *\n * @param calendar\n */\n const sortSlotsByHour = (calendar: Calendar): SlotsHorarios => {\n // Se elige un dia aleatorio (1/1/1999) ya que se comparan horas del mismo dia y este es irrelevante.\n\n const manana = calendar.slots\n .filter((slot: CalendarSlot) => checkIfMorning(getNormalizedDate(slot.hour)))\n .sort((a, b) => a.from - b.from);\n const mediodia = calendar.slots\n .filter((slot: CalendarSlot) => checkIfMidDay(getNormalizedDate(slot.hour)))\n .sort((a, b) => a.from - b.from);\n const tarde = calendar.slots\n .filter((slot: CalendarSlot) => checkIfEvening(getNormalizedDate(slot.hour)))\n .sort((a, b) => a.from - b.from);\n return { manana, mediodia, tarde };\n };\n\n const setFirstDay = (monthDays: Day[], dayCalendar: Calendar) => {\n const monthDay = monthDays.find((day) => day.date === dayCalendar.date);\n\n if (monthDay && !monthDay.disabled) {\n return monthDay;\n }\n return null;\n };\n\n /**\n * Función que se encarga de cargar los horarios del availability según el dia seleccionado.\n * @param day\n * @param isClick es false en la carga del calendario, ya que no hace falta volver a llamar a la función handleChangeActiveDay.\n */\n const handleChangeInSelectedDay = (day: Day, isClick?: boolean) => {\n if (isClick) {\n const { updatedMonthDays } = handleChangeActiveDay(monthDays, day);\n setMonthDays(updatedMonthDays);\n setSelectedDay(day.date);\n }\n\n if (!availabilityRef.current || !availabilityRef.current.content || !availabilityRef.current.content.calendar) {\n return;\n }\n let calendar: Calendar = availabilityRef.current.content.calendar.find((calendarDate) => {\n return day.date === calendarDate.date;\n });\n\n if (calendar) {\n calendar.slots = calendar.slots.sort((a, b) => a.from - b.from);\n const horarios = sortSlotsByHour(calendar);\n const selectedSlot = getSelectedSlot(calendar, horarios);\n setCalendar(calendar);\n setHorarios(horarios);\n setSelectedSlot(selectedSlot);\n if (calendar.slots.length > 1) {\n // selectedCalendar.slots[0].map();\n }\n } else {\n setCalendar(null);\n setHorarios(null);\n setSelectedSlot(null);\n }\n };\n\n const getSelectedSlot = (selectedCalendar: Calendar, horarios: SlotsHorarios) => {\n if (horario === 'morning') {\n return horarios.manana[0];\n } else if (horario === 'afternon' && horarios.mediodia.length > 0) {\n return horarios.mediodia[0];\n } else if (horario === 'evening' && horarios.tarde.length > 0) {\n return horarios.tarde[0];\n }\n return selectedCalendar.slots[0];\n };\n\n const handleNextMonthYear = (e: any) => {\n e.preventDefault();\n if (monthOffset === 2) {\n return;\n }\n handleChangeOfMonth(monthOffset + 1);\n // setMonthOffset(monthOffset + 1);\n };\n\n const handlePreviousMonthYear = (e: any) => {\n e.preventDefault();\n\n if (monthOffset === 0) {\n return;\n }\n handleChangeOfMonth(monthOffset - 1);\n // setMonthOffset(monthOffset - 1);\n };\n\n const getDates = (monthOffset: number) => {\n const currentMonth = dayjs().add(monthOffset, 'month').locale('es').format('MMMM');\n const nextMonth = dayjs()\n .add(monthOffset + 1, 'month')\n .locale('es')\n .format('MMMM');\n const currentMonthNumber = dayjs().add(monthOffset, 'month').format('M');\n const yearNumber = dayjs().add(monthOffset, 'month').format('YYYY');\n\n return { currentMonth, nextMonth, currentMonthNumber, yearNumber };\n };\n\n useEffect(() => {\n let monthCapitalize = month.charAt(0).toUpperCase() + month.slice(1);\n switch (monthCapitalize) {\n case 'Enero':\n setPreviousMonth('Diciembre');\n break;\n case 'Febrero':\n setPreviousMonth('Enero');\n break;\n case 'Marzo':\n setPreviousMonth('Febrero');\n break;\n case 'Abril':\n setPreviousMonth('Marzo');\n break;\n case 'Mayo':\n setPreviousMonth('Abril');\n break;\n case 'Junio':\n setPreviousMonth('Mayo');\n break;\n case 'Julio':\n setPreviousMonth('Junio');\n break;\n case 'Agosto':\n setPreviousMonth('Julio');\n break;\n case 'Septiembre':\n setPreviousMonth('Agosto');\n break;\n case 'Octubre':\n setPreviousMonth('Septiembre');\n break;\n case 'Noviembre':\n setPreviousMonth('Octubre');\n break;\n case 'Diciembre':\n setPreviousMonth('Noviembre');\n break;\n }\n }, [month]);\n\n const setVariables = (\n monthOffset: number,\n currentMonth: string,\n currentMonthNumber: string,\n nextMonth: string,\n year: string\n ) => {\n setMonthOffset(monthOffset);\n setMonth(currentMonth);\n setMonthNumber(currentMonthNumber);\n setNextMonth(nextMonth);\n setYearNumber(year);\n };\n\n const handleSelectedSlot = (slot: CalendarSlot[]) => {\n setSelectedSlot(slot);\n };\n\n const handleFranjaHoraria = (franjaHoraria: string) => {\n setSelectedFranjaHoraria(franjaHoraria);\n };\n\n const handleChangeActiveDay = (monthDays: Day[], day: Day): { updatedMonthDays: Day[]; selectedDay: string } => {\n if (day) {\n const updatedMonthDays = monthDays.map((monthDay) => {\n if (monthDay.dayNumber === day.dayNumber && !day.active) {\n monthDay.active = true;\n } else if (monthDay.active && monthDay.dayNumber !== day.dayNumber) {\n monthDay.active = false;\n }\n return monthDay;\n });\n\n return { updatedMonthDays, selectedDay: day.date };\n } else {\n const tomorrow = dayjs().add(1, 'day').format('YYYY-MM-DD');\n\n return { updatedMonthDays: monthDays, selectedDay: tomorrow };\n }\n };\n\n return selectedPoint ? (\n <>\n {!isCalculadoraFirstStep && preselectedDealerForm ? : null}\n \n {isCalculadoraFirstStep ? (\n \n ) : preselectedDealerForm ? (\n \n \n \n \n
    \n \n \n ) : (\n \n \n }\n onClick={(e) => {\n e.preventDefault();\n handleHideCalendarOnClick();\n // Hack para contabilizar en analítica los usuarios que vuelven desde el calendario al mapa.\n trackingManager.trackFormStepLoad(\n {},\n {\n FormStart: false,\n },\n { StepName: 'MapSearch' });\n }}\n >\n Ir al mapa\n \n \n \n )}\n\n \n \n \n
    \n \n {preselectedDealerForm ? (\n \n \n \n ¿Cuándo prefieres pasar por el{' '}\n \n taller?*\n \n \n \n \n \n ¿Cuándo prefieres pasar por el{' '}\n \n taller?*\n \n \n \n {dmsAvailable ? (\n \n Selecciona la fecha y la hora de tu visita.\n \n ) : null}\n \n ) : (\n \n \n \n \n {name}\n \n {userIsGeoLocated ? (\n <>\n {getDistanceFromLatLngCenter(center, selectedPoint) === '0.0' ? null : (\n \n {distanceFromCenter\n ? distanceFromCenter\n : getDistanceFromLatLngCenter(center, selectedPoint)}\n km\n \n )}\n \n ) : null}\n \n \n {address}, {zipCode} {city}\n \n \n \n \n )}\n \n\n \n }\n />\n \n \n {previousMonth}\n \n \n \n \n {month} {yearNumber}\n \n \n \n \n {nextMonth}\n \n \n }\n />\n \n\n \n \n {daysOfTheWeek.map((day, index) => {\n if (index > 4) {\n return (\n \n \n \n {day}\n \n \n \n );\n } else {\n return (\n \n \n \n {day}\n \n \n \n );\n }\n })}\n {monthDays && !loading ? (\n monthDays.map((day, i) => {\n return (\n \n {\n e.preventDefault();\n\n if (!day.disabled) {\n if (tabsRef && tabsRef.current) {\n tabsRef.current.scrollIntoView({ behavior: 'smooth' });\n }\n // const { updatedMonthDays, selectedDay } = handleChangeActiveDay(monthDays, day);\n // setMonthDays(updatedMonthDays);\n // setSelectedDay(selectedDay);\n handleChangeInSelectedDay(day, true);\n }\n }}\n active={day.active}\n disabled={day.disabled}\n className=\"day-wrapper\"\n >\n \n {day.dayNumber}\n \n \n \n );\n })\n ) : (\n \n loading...\n \n )}\n \n \n \n \n \n {dmsAvailable ? (\n \n ) : (\n \n )}\n \n \n \n {\n e.preventDefault();\n dmsAvailable\n ? handleDmsMapExit(selectedSlot, selectedPoint)\n : handleNoDmsMapExit(selectedFranjaHoraria, selectedDay, selectedPoint);\n }}\n ariaLabel=\"aria label\"\n >\n Seleccionar\n \n \n
    \n
    \n
    \n
    \n \n \n ) : null;\n}\n","import {\n Container,\n ContainerGutter,\n ContainerHorizontalAlignment,\n ContainerPadding,\n ContainerWrap,\n CTA,\n Text,\n TextAppearance,\n styled,\n TextAlignment,\n} from '@volkswagen-onehub/components-core';\n\nimport React, { useEffect } from 'react';\nimport { Horario } from 'src/types';\n\ninterface FranjaHorariaProps {\n selectedFranjaHoraria: string;\n handleFranjaHoraria: (s: string) => void;\n horario: Horario;\n}\n\nexport function FranjaHoraria(props: FranjaHorariaProps) {\n const { handleFranjaHoraria, selectedFranjaHoraria, horario } = props;\n\n useEffect(() => {\n if (horario === 'afternon') {\n handleFranjaHoraria('Mediodía');\n } else if (horario === 'evening') {\n handleFranjaHoraria('Tarde');\n } else {\n handleFranjaHoraria('Mañana');\n }\n }, []);\n\n return (\n \n \n Selecciona una franja horaria\n \n \n {\n e.preventDefault();\n handleFranjaHoraria('Mañana');\n }}\n >\n Mañana\n \n {\n e.preventDefault();\n handleFranjaHoraria('Mediodía');\n }}\n >\n Mediodía\n \n {\n e.preventDefault();\n handleFranjaHoraria('Tarde');\n }}\n >\n Tarde\n \n \n \n );\n}\n","import React, { useState, useEffect } from 'react';\nimport {\n CTA,\n Container,\n Text,\n TextTag,\n ContainerGutter,\n ContainerWrap,\n TextAppearance,\n TextColor,\n TextAlignment,\n styled,\n} from '@volkswagen-onehub/components-core';\nimport { CalendarSlot, Slot } from 'src/types';\nimport { isNull } from 'src/feature-app';\n\ninterface hourWrapperProps {\n selected: any;\n}\n\nconst HourWrapper = styled.div`\n width: 68px;\n height: 33px;\n border: ${(props) => (props.selected ? '1px solid #001E50' : '1px solid #DFE4E8')};\n background-color: ${(props) => (props.selected ? '#001E50' : null)};\n color: ${(props) => (props.selected ? '#FFFFFF' : '#001E50')};\n border-radius: 16px;\n cursor: pointer;\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\ninterface slotsHorarioProps {\n avaiableHours: CalendarSlot[];\n // selectedHourIndex: number;\n handleSelectedSlot: any;\n selectedSlot: CalendarSlot;\n}\n\nexport const SlotsHorario = (props: slotsHorarioProps) => {\n const { avaiableHours, handleSelectedSlot, selectedSlot } = props;\n\n const checkIfHourIsSelected = (slot: CalendarSlot) => {\n if (selectedSlot) {\n return slot.from === selectedSlot.from ? true : false;\n }\n return false;\n };\n\n return (\n \n {avaiableHours && avaiableHours.length > 0 ? (\n avaiableHours.map((slot: CalendarSlot, i) => {\n return (\n {\n e.preventDefault();\n handleSelectedSlot(slot, i);\n }}\n key={slot.from}\n selected={checkIfHourIsSelected(slot)}\n >\n \n {slot.hour.slice(0, 5)}\n \n \n );\n })\n ) : (\n \n No hay horas disponibles en esta franja.\n \n )}\n \n );\n};\n","import { Container, ContainerPadding, styled, Tabs, Text } from '@volkswagen-onehub/components-core';\nimport { isNull } from 'src/feature-app';\nimport React, { useEffect, useState } from 'react';\nimport { SlotsHorarios } from './CalendarioCita';\nimport { CalendarSlot } from 'src/types';\nimport { SlotsHorario } from '.';\nimport { checkIfEvening, checkIfMidDay, checkIfMorning } from '../NewMap';\n\nconst TabsWrapper = styled.div`\n ul {\n margin: 5px;\n width: 86vw;\n\n @media screen and (min-width: 560px) {\n width: 76vw;\n }\n @media screen and (min-width: 960px) {\n width: 640px;\n }\n }\n`;\n\ninterface TabsHorariosProps {\n handleSelectedSlot: any;\n selectedSlot: CalendarSlot;\n horarios: SlotsHorarios;\n}\n\nexport function TabsHorario(props: TabsHorariosProps) {\n const { handleSelectedSlot, selectedSlot, horarios } = props;\n\n const [defaultIndex, setDefaultIndex] = useState(0);\n\n useEffect(() => {\n if (selectedSlot) {\n const defaultIndex = handleDefaultTabIndex(selectedSlot);\n setDefaultIndex(defaultIndex);\n }\n }, [selectedSlot]);\n\n const handleDefaultTabIndex = (slot: CalendarSlot) => {\n const slotHour = new Date(`1/1/1999 ${slot.hour}`);\n\n if (checkIfMorning(slotHour)) {\n return 0;\n } else if (checkIfMidDay(slotHour)) {\n return 1;\n } else if (checkIfEvening(slotHour)) {\n return 2;\n }\n return 0;\n };\n\n return (\n <>\n \n \n {\n setDefaultIndex(index);\n }}\n >\n {{\n title: Mañana,\n content: (\n \n \n \n ),\n key: 'a',\n }}\n {{\n title: Mediodía,\n content: (\n \n \n \n ),\n key: 'b',\n }}\n {{\n title: Tarde,\n content: (\n \n \n \n ),\n key: 'c',\n }}\n \n \n \n \n );\n}\n","import axios, { AxiosResponse } from 'axios';\nimport { Availability, DealersData } from 'src/types';\nimport { FeatureAppConfig } from 'src/feature-app';\nimport { getMolecularUrl } from 'src/bff';\nimport dayjs from 'dayjs';\nimport { useGetBrand } from 'src/feature-app/hooks';\n\nexport const getSlots = async (\n config: FeatureAppConfig,\n dealer: DealersData,\n start?: number,\n end?: number\n): Promise> => {\n const groupBrand = useGetBrand();\n const { firstDayOfMonth, lastDayOfMonth } = getFirstAndLastDayOfMonth();\n\n const from = start ? start : firstDayOfMonth;\n const to = end ? end : lastDayOfMonth;\n\n const MOLECULAR_URL = getMolecularUrl();\n\n const { kvps, codInstalacion } = dealer;\n const slots = await axios.get(\n `${MOLECULAR_URL}/request-appadap-availability.php?group_brand=${groupBrand}&kvps=${kvps}&cod_instalacion=${codInstalacion}×tamp_from=${from}×tamp_to=${to}&check_dealer=true`\n );\n\n return slots;\n};\n\nexport const getFirstAndLastDayOfMonth = (\n monthNumber?: string,\n yearNumber?: string\n): { firstDayOfMonth: number; lastDayOfMonth: number } => {\n let firstDayOfMonth;\n let lastDayOfMonth;\n\n if (yearNumber && monthNumber) {\n firstDayOfMonth = Number(\n dayjs()\n .locale('es')\n .utc()\n .month(Number(monthNumber) - 1) // Months are zero indexed, so January is month 0.\n .year(Number(yearNumber))\n .startOf('month')\n .format('x')\n );\n lastDayOfMonth = Number(\n dayjs()\n .locale('es')\n .utc()\n // .add(1, 'month')\n .month(Number(monthNumber) - 1)\n .year(Number(yearNumber))\n .endOf('month')\n .format('x')\n );\n } else {\n firstDayOfMonth = Number(dayjs().add(1, 'day').locale('es').utc().format('x'));\n lastDayOfMonth = Number(\n dayjs()\n .locale('es')\n .utc()\n // .add(1, 'month')\n .endOf('month')\n .format('x')\n );\n }\n\n return { firstDayOfMonth, lastDayOfMonth };\n};\n\nexport const getToAndFromForCheckCita = (citaTo: number): { from: number; to: number } => {\n const from = Number(dayjs().locale('es').utc().format('x'));\n const to = Number(dayjs(citaTo).locale('es').utc().format('x'));\n\n return { from, to };\n};\n","import { styled, BreakpointWrapper, Breakpoints, ThemeProvider } from '@volkswagen-onehub/components-core';\nimport { CloseButton, AnteriorCTA } from 'src/components';\nimport React from 'react';\n\n\nconst CloseDiv = styled.div`\n padding: 24px 20px 20px;\n color: #001E50;\n background-color: #FFFFFF;\n margin-bottom: -2px;\n display: flex;\n justify-content: space-between;\n @media all and (min-width: 560px) {\n padding: 24px 0 0;\n display: flex;\n justify-content: center;\n align-items: center;\n width: var(--size-grid002);\n position: fixed;\n top: 0;\n color: #FFFFFF;\n background-color: transparent;\n margin-bottom: 0;\n }\n @media all and (min-width: 960px) {\n width: 80px;\n }\n`;\n\n\nexport const CloseInDealerCalendar = () => {\n\n return (\n \n \n \n \n \n \n \n \n );\n};\n","export const removeConfigurationHash = () => history.pushState('', document.title, window.location.pathname + window.location.search);\n","var __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};\nimport * as React from 'react';\nimport { styled } from '../theme-provider';\nexport const Image = styled.img.withConfig({ displayName: \"Image\", componentId: \"sc-3anbxi\" }) `display:block;width:100%;object-fit:${(props) => props.objectFit};${(props) => props.reduceBrightness && 'filter: brightness(80%)'};`;\nImage.displayName = 'Image';\nexport const DecorativeImage = React.forwardRef((props, ref) => {\n const { alt } = props, others = __rest(props, [\"alt\"]);\n return React.createElement(Image, Object.assign({ alt: \"\", \"aria-hidden\": true }, others, { ref: ref }));\n});\nDecorativeImage.displayName = 'DecorativeImage';\nconst TRANSPARENT_GIF = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';\nexport const LazyImage = React.forwardRef((props, ref) => {\n const { src, srcPlaceholder, srcSet, sizes, className, alt, reduceBrightness, _disableNoScript } = props, others = __rest(props, [\"src\", \"srcPlaceholder\", \"srcSet\", \"sizes\", \"className\", \"alt\", \"reduceBrightness\", \"_disableNoScript\"]);\n return (React.createElement(React.Fragment, null,\n _disableNoScript ? undefined : (React.createElement(\"noscript\", null,\n React.createElement(Image, Object.assign({ alt: alt, className: className, sizes: sizes, src: src, srcSet: srcSet, reduceBrightness: reduceBrightness }, others)))),\n React.createElement(Image, Object.assign({ className: `lazyload ${className || ''}`, src: srcPlaceholder || TRANSPARENT_GIF, \"data-src\": src, \"data-srcset\": srcSet, \"data-sizes\": sizes, alt: alt, reduceBrightness: reduceBrightness, ref: ref }, others))));\n});\nLazyImage.displayName = 'LazyImage';\nexport const DecorativeLazyImage = React.forwardRef((props, ref) => {\n const { alt, reduceBrightness } = props, others = __rest(props, [\"alt\", \"reduceBrightness\"]);\n return (React.createElement(LazyImage, Object.assign({ reduceBrightness: reduceBrightness, alt: \"\" }, others, { ref: ref })));\n});\nDecorativeLazyImage.displayName = 'DecorativeLazyImage';\n","function defaultEqualityCheck(a, b) {\n return a === b;\n}\n\nfunction areArgumentsShallowlyEqual(equalityCheck, prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n }\n\n // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n var length = prev.length;\n for (var i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function defaultMemoize(func) {\n var equalityCheck = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultEqualityCheck;\n\n var lastArgs = null;\n var lastResult = null;\n // we reference arguments instead of spreading them for performance reasons\n return function () {\n if (!areArgumentsShallowlyEqual(equalityCheck, lastArgs, arguments)) {\n // apply arguments instead of spreading for performance.\n lastResult = func.apply(null, arguments);\n }\n\n lastArgs = arguments;\n return lastResult;\n };\n}\n\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep;\n }).join(', ');\n throw new Error('Selector creators expect all input-selectors to be functions, ' + ('instead received the following types: [' + dependencyTypes + ']'));\n }\n\n return dependencies;\n}\n\nexport function createSelectorCreator(memoize) {\n for (var _len = arguments.length, memoizeOptions = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n memoizeOptions[_key - 1] = arguments[_key];\n }\n\n return function () {\n for (var _len2 = arguments.length, funcs = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n funcs[_key2] = arguments[_key2];\n }\n\n var recomputations = 0;\n var resultFunc = funcs.pop();\n var dependencies = getDependencies(funcs);\n\n var memoizedResultFunc = memoize.apply(undefined, [function () {\n recomputations++;\n // apply arguments instead of spreading for performance.\n return resultFunc.apply(null, arguments);\n }].concat(memoizeOptions));\n\n // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n var selector = memoize(function () {\n var params = [];\n var length = dependencies.length;\n\n for (var i = 0; i < length; i++) {\n // apply arguments instead of spreading and mutate a local list of params for performance.\n params.push(dependencies[i].apply(null, arguments));\n }\n\n // apply arguments instead of spreading for performance.\n return memoizedResultFunc.apply(null, params);\n });\n\n selector.resultFunc = resultFunc;\n selector.dependencies = dependencies;\n selector.recomputations = function () {\n return recomputations;\n };\n selector.resetRecomputations = function () {\n return recomputations = 0;\n };\n return selector;\n };\n}\n\nexport var createSelector = createSelectorCreator(defaultMemoize);\n\nexport function createStructuredSelector(selectors) {\n var selectorCreator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : createSelector;\n\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + ('where each property is a selector, instead received a ' + typeof selectors));\n }\n var objectKeys = Object.keys(selectors);\n return selectorCreator(objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len3 = arguments.length, values = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n}","import { OneFormState } from 'src/types';\n\nimport { createSelector } from 'reselect';\n\nconst getPoint = (state: OneFormState) => {\n return state.dealersInfo.points;\n};\n\nexport const getPoints = createSelector(getPoint, (getPoint) => getPoint);\n\nconst getGeometryProperty = (state: OneFormState) => {\n return state.formInfo.geometry;\n};\n\nexport const getGeometry = createSelector(getGeometryProperty, (getGeometryProperty) => getGeometryProperty);\n\nconst getUserSuggestionProperty = (state: OneFormState) => {\n return state.formInfo.userSuggestion;\n};\n\nexport const getUserSuggestion = createSelector(\n getUserSuggestionProperty,\n (getUserSuggestionProperty) => getUserSuggestionProperty\n);\n\nconst getUserGeolocationProperty = (state: OneFormState) => {\n return state.formInfo.userGeoLocation;\n};\n\nexport const getUserGeolocation = createSelector(\n getUserGeolocationProperty,\n (getUserGeolocationProperty) => getUserGeolocationProperty\n);\n","import { isRegExp, isString } from './is';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nexport function truncate(str: string, max: number = 0): string {\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.substr(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nexport function snipLine(line: string, colno: number): string {\n let newLine = line;\n const lineLength = newLine.length;\n if (lineLength <= 150) {\n return newLine;\n }\n if (colno > lineLength) {\n // eslint-disable-next-line no-param-reassign\n colno = lineLength;\n }\n\n let start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n\n let end = Math.min(start + 140, lineLength);\n if (end > lineLength - 5) {\n end = lineLength;\n }\n if (end === lineLength) {\n start = Math.max(end - 140, 0);\n }\n\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = `'{snip} ${newLine}`;\n }\n if (end < lineLength) {\n newLine += ' {snip}';\n }\n\n return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function safeJoin(input: any[], delimiter?: string): string {\n if (!Array.isArray(input)) {\n return '';\n }\n\n const output = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < input.length; i++) {\n const value = input[i];\n try {\n output.push(String(value));\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n/**\n * Checks if the value matches a regex or includes the string\n * @param value The string value to be checked against\n * @param pattern Either a regex or a string that must be contained in value\n */\nexport function isMatchingPattern(value: string, pattern: RegExp | string): boolean {\n if (!isString(value)) {\n return false;\n }\n\n if (isRegExp(pattern)) {\n return (pattern as RegExp).test(value);\n }\n if (typeof pattern === 'string') {\n return value.indexOf(pattern) !== -1;\n }\n return false;\n}\n\n/**\n * Given a string, escape characters which have meaning in the regex grammar, such that the result is safe to feed to\n * `new RegExp()`.\n *\n * Based on https://github.com/sindresorhus/escape-string-regexp. Vendored to a) reduce the size by skipping the runtime\n * type-checking, and b) ensure it gets down-compiled for old versions of Node (the published package only supports Node\n * 12+).\n *\n * @param regexString The string to escape\n * @returns An version of the string with all special regex characters escaped\n */\nexport function escapeStringForRegex(regexString: string): string {\n // escape the hyphen separately so we can also replace it with a unicode literal hyphen, to avoid the problems\n // discussed in https://github.com/sindresorhus/escape-string-regexp/issues/20.\n return regexString.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d');\n}\n","import React from 'react';\nimport {\n Text,\n ThemeProvider,\n TextAppearance,\n Container,\n CTA,\n ContainerGutter,\n styled,\n} from '@volkswagen-onehub/components-core';\nimport { TriggerProps, useFaContent } from 'src/feature-app';\nimport { DiaDeLaMadreForm } from 'src/forms/FormsAdhoc/DiaDeLaMadre';\n\nconst MarginWrapper = styled.div`\n width: var(--size-grid020);\n padding: var(--size-grid002) var(--size-grid001) var(--size-grid006) var(--size-grid003);\n display: flex;\n flex-direction: column;\n\n @media all and (min-width: 560px) {\n margin-top: 40px;\n width: var(--size-grid008);\n margin-bottom: var(--size-grid004);\n padding: 0;\n }\n @media all and (min-width: 960px) {\n margin-top: 64px;\n width: var(--size-grid007);\n margin-bottom: calc(var(--size-grid002) + 40px);\n }\n @media all and (min-width: 1280px) {\n width: var(--size-grid006);\n margin-bottom: 0;\n }\n @media all and (min-width: 1600px) {\n margin-top: 80px;\n }\n @media all and (min-width: 1920px) {\n margin: 52px 0 72px var(--size-grid002);\n width: var(--size-grid005);\n }\n`;\n\nexport const CajaCTATrigger = (props: TriggerProps) => {\n const { setSelectedJourney, setCTALabel } = props;\n\n const faContent = useFaContent();\n\n const getCtaLabel = () => (faContent?.cta ? faContent.cta : 'Dale amor');\n\n return (\n \n \n
    \n \n Solo falta la tuya\n \n
    \n
    \n \n A veces un {'\"'}te quiero{'\"'} no puede esperar. Díselo ahora para entrar en el{' '}\n sorteo* de un finde para dos personas en tu parador favorito al volante del nuevo ID.4\n , haciendo lo que más desea tu madre:{' '}pasar tiempo contigo.\n \n
    \n
    \n {\n setCTALabel(getCtaLabel());\n setSelectedJourney();\n }}\n >\n {getCtaLabel()}\n \n
    \n
    \n \n *Sorteo exclusivo para clientes de Volkswagen.\n \n
    \n
    \n
    \n );\n};\n","import {\n Breakpoints,\n BreakpointWrapper,\n Container,\n ContainerHorizontalAlignment,\n ContainerPadding,\n CTA,\n styled,\n Text,\n TextAlignment,\n TextAppearance,\n Layout,\n ContainerGutter,\n} from '@volkswagen-onehub/components-core';\nimport { LegalesFormatoLayer, LssiTkmQuestions } from 'src/components';\nimport { CloseHandleV2, FocusLayerSizeV2, LayerHandleV2, LayerManagerV2 } from '@volkswagen-onehub/layer-manager';\nimport React, { useEffect, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { connect, useDispatch, useStore } from 'react-redux';\nimport {\n LayerManagerWrapper,\n useFeatureAppEnvironment,\n useFeatureServices,\n useOneFormContext,\n useTrackingManager,\n} from 'src/feature-app';\nimport { OneFormState } from 'src/types';\nimport { KoScreen, LoadingScreen } from 'src/forms/CitaPosventa/NuevaCitaPosventa/ConfirmarCitaLayer';\n\nconst GeneralconfirmacionWrapper = styled.div`\n padding: 72px 0 44px;\n @media all and (min-width: 960px) {\n padding: 86px 0 0;\n }\n`;\n\nconst WhiteLinkWrapper = styled.span`\n a {\n color: #ffffff;\n font-weight: bold;\n }\n`;\n\nfunction ConfirmacionDiaDeLaMadre() {\n const dispatch = useDispatch();\n\n const [lssi, setLssi] = useState(null);\n const [tmk, setTmk] = useState(null);\n const [lssiError, setLssiError] = useState(false);\n const [tmkError, setTmkError] = useState(false);\n\n useEffect(() => {\n if (lssi) {\n const values = { lssi: lssi };\n dispatch({ type: 'UPDATE_FIELDS', payload: values });\n setLssiError(false);\n }\n if (tmk) {\n const values = { tmk: tmk };\n dispatch({ type: 'UPDATE_FIELDS', payload: values });\n setTmkError(false);\n }\n }, [lssi, tmk]);\n\n return (\n \n \n \n \n ¡Gracias! Unas últimas preguntas para tenerlo todo claro\n \n \n \n \n ¡Gracias! Unas últimas preguntas para tenerlo todo claro\n \n \n\n \n \n \n Enviando este formulario, estás aceptando nuestra{' '}\n \n \n política de privacidad.\n \n \n \n \n\n
    \n \n
    \n \n \n
    \n );\n}\n\ninterface LastNavigationProps {\n tmk: string;\n lssi: string;\n setTmkError: React.Dispatch>;\n setLssiError: React.Dispatch>;\n}\n\nfunction LastNavigation(props: LastNavigationProps) {\n const { tmk, lssi, setTmkError, setLssiError } = props;\n // const dispatch = useDispatch();\n const { handleShowFinalScreen, handleSubmit } = useOneFormContext();\n const { reset } = useFormContext();\n const [layerVisible, setLayerVisible] = useState(false);\n const [koLayer, setKoLayer] = useState>(null);\n const [koScreen, setKoScreen] = useState(false);\n const layerManager = useFeatureServices()['layer-manager'] as LayerManagerV2;\n const store = useStore();\n const env = useFeatureAppEnvironment();\n const dispatch = useDispatch();\n const trackingManager = useTrackingManager();\n\n //Loading and Ko layers\n\n const handleKoLayer = () => {\n const layer = layerManager.openFocusLayer(renderKoLayer, {}, { size: FocusLayerSizeV2.A });\n setKoLayer(layer);\n };\n\n const renderKoLayer = (state: any, close: CloseHandleV2) => {\n return (\n \n \n \n );\n };\n\n const handleLoadingScreenLayer = () => {\n const layer = layerManager.openFocusLayer(renderLoadingScreen, {}, { size: FocusLayerSizeV2.A });\n\n return layer;\n };\n\n const renderLoadingScreen = (state: any, close: CloseHandleV2) => {\n return (\n \n \n \n );\n };\n\n // 1. check de lssi y tmk\n // 2. submit de la cita y activación la pantalla de feedback correspondiente\n // no se hace ninguna validación en este último paso porque esta ya se ha hecho en el edit-guardar de cada campo previamente\n async function handleConfirmarCita(e: any) {\n if (tmk === null && tmk === null) {\n setTmkError(true);\n setLssiError(true);\n } else if (tmk === null) {\n setTmkError(true);\n } else if (lssi === null) {\n setLssiError(true);\n } else {\n trackingManager.trackFormCTAClick({\n contentId: 'Enviar',\n });\n\n const loadingLayer = handleLoadingScreenLayer();\n setLayerVisible(true);\n\n const value = await handleSubmit(e);\n loadingLayer.close();\n\n if (value) {\n handleShowFinalScreen();\n } else {\n handleKoLayer();\n }\n }\n }\n async function retrySubmit(e: any) {\n if (koLayer) {\n koLayer.close();\n }\n setKoScreen(false);\n const loadingLayer = handleLoadingScreenLayer();\n const value = await handleSubmit(e);\n loadingLayer.close();\n if (value) {\n handleShowFinalScreen();\n } else {\n handleKoLayer();\n setKoScreen(true);\n }\n }\n\n useEffect(() => {\n if (!layerVisible && koScreen) setKoScreen(false);\n }, [layerVisible]);\n\n useEffect(() => {\n dispatch({ type: 'UPDATE_FORM_ENDED', payload: true });\n }, []);\n\n return (\n <>\n \n {\n e.preventDefault();\n handleConfirmarCita(e);\n }}\n stretchContent\n >\n Enviar\n \n \n \n {\n e.preventDefault();\n handleConfirmarCita(e);\n }}\n >\n Enviar\n \n \n \n );\n}\n\nconst mapStateToProps = (state: OneFormState) => {\n return {\n formInfo: state.formInfo,\n formData: state.formData,\n };\n};\n\nconst ConnectedComponent = connect(mapStateToProps)(ConfirmacionDiaDeLaMadre);\n\nexport { ConnectedComponent as ConfirmacionDiaDeLaMadre };\n","import React, { useEffect, useState } from 'react';\nimport {\n Text,\n styled,\n ThemeProvider,\n BreakpointWrapper,\n Breakpoints,\n Container,\n ContainerPadding,\n} from '@volkswagen-onehub/components-core';\nimport { CajaCTATrigger } from '.';\nimport { CarouselComponent } from 'src/components';\nimport { TriggerProps } from 'src/feature-app';\nimport imageOne from 'src/forms/DiaDeLaMadre/assets/turismos_campana_dia-de-la-madre_USP-1_1280x853px.jpg';\nimport imageTwo from 'src/forms/DiaDeLaMadre/assets/turismos_campana_dia-de-la-madre_USP-2_1280x768px.jpg';\nimport imageThree from 'src/forms/DiaDeLaMadre/assets/turismos_campana_dia-de-la-madre_USP-3_1280x768px.jpg';\n\nconst BackgroundBlue = styled.div`\n margin-right: var(--size-grid002);\n margin-top: calc(var(--size-grid002) * -1);\n background-color: #001e50;\n width: var(--size-grid022);\n position: absolute;\n height: 100%;\n z-index: -1;\n\n @media all and (min-width: 560px) {\n width: var(--size-grid022);\n margin-left: var(--size-grid002);\n margin-right: 0;\n margin-top: 0;\n }\n @media all and (min-width: 960px) {\n margin-left: var(--size-grid003);\n margin-right: var(--size-grid001);\n width: var(--size-grid020);\n height: calc(100% - 24px);\n margin-top: 24px;\n }\n @media all and (min-width: 1280px) {\n margin-left: var(--size-grid004);\n margin-right: var(--size-grid002);\n width: var(--size-grid018);\n }\n @media all and (min-width: 1600px) {\n margin-top: 28px;\n height: calc(100% - 28px);\n }\n @media all and (min-width: 1920px) {\n margin-left: var(--size-grid004);\n margin-right: var(--size-grid009);\n width: var(--size-grid011);\n margin-top: 72px;\n margin-bottom: 72px;\n height: calc(100% - 72px);\n }\n`;\n\nconst ImageOneAndTextWrapper = styled.div`\n display: flex;\n margin-left: var(--size-grid001);\n\n @media all and (min-width: 960px) {\n margin-left: var(--size-grid002);\n }\n @media all and (min-width: 1280px) {\n margin-left: var(--size-grid003);\n }\n @media all and (min-width: 1920px) {\n flex-direction: column;\n align-items: flex-start;\n justify-content: flex-start;\n }\n\n .image-one {\n width: var(--size-grid013);\n margin-right: var(--size-grid001);\n height: fit-content;\n @media all and (min-width: 960px) {\n width: var(--size-grid012);\n margin-bottom: var(--size-grid002);\n }\n @media all and (min-width: 1280px) {\n width: var(--size-grid011);\n }\n @media all and (min-width: 1920px) {\n width: var(--size-grid010);\n margin-right: 0;\n margin-bottom: 0;\n }\n }\n`;\n\nconst ImageTwoWrapper = styled.div`\n margin-top: calc(var(--size-grid002) * -1);\n margin-left: var(--size-grid001);\n\n @media all and (min-width: 960px) {\n margin-left: var(--size-grid002);\n margin-top: calc((var(--size-grid001) + 20px) * -1);\n }\n @media all and (min-width: 1280px) {\n margin-left: var(--size-grid003);\n margin-top: calc(var(--size-grid001) * -1);\n }\n @media all and (min-width: 1920px) {\n margin-left: var(--size-grid001);\n margin-top: 0;\n }\n\n .image-two {\n width: var(--size-grid010);\n margin-right: var(--size-grid002);\n @media all and (min-width: 960px) {\n width: var(--size-grid009);\n }\n @media all and (min-width: 1280px) {\n width: var(--size-grid008);\n }\n @media all and (min-width: 1920px) {\n width: var(--size-grid007);\n margin-right: 0;\n }\n }\n`;\n\nconst ImageThreeWrapper = styled.div`\n margin-top: calc(var(--size-grid002) * -1);\n\n @media all and (min-width: 960px) {\n margin-top: calc((var(--size-grid001) + 20px) * -1);\n }\n @media all and (min-width: 1280px) {\n margin-top: calc(var(--size-grid001) * -1);\n }\n @media all and (min-width: 1920px) {\n margin-top: calc((var(--size-grid003) + 20px) * -1);\n margin-left: var(--size-grid012);\n }\n\n .image-three {\n width: var(--size-grid010);\n @media all and (min-width: 960px) {\n width: var(--size-grid009);\n }\n @media all and (min-width: 1280px) {\n width: var(--size-grid008);\n }\n @media all and (min-width: 1920px) {\n width: var(--size-grid007);\n }\n }\n`;\n\nconst BottomImagesWrapper = styled.div`\n width: 100%;\n display: flex;\n`;\n\nconst RelativeWrapper = styled.div`\n position: relative;\n\n @media all and (min-width: 1920px) {\n display: flex;\n }\n`;\n\nconst imageArray = [\n {\n src: 'imageOne',\n name: 'turismos_campana_dia-de-la-madre',\n className: 'image-one',\n },\n {\n src: 'imageTwo',\n name: 'turismos_campana_dia-de-la-madre',\n className: 'image-two',\n },\n {\n src: 'imageThree',\n name: 'turismos_campana_dia-de-la-madre',\n className: 'image-three',\n },\n];\n\nconst CarouselImageWrapper = styled.div`\n padding: 0 2.5%;\n width: 83.2vw;\n height: 83.2vw;\n overflow: hidden;\n\n .wrapper-image-one {\n padding-left: 6.32%;\n }\n\n .image-one {\n transform: scale(0.6) translate(-82%, -54%);\n @media all and (min-width: 450px) {\n transform: scale(0.6) translate(-71%, -47%);\n }\n }\n .image-two {\n transform: scale(0.5) translate(-65%, -63%);\n @media all and (min-width: 450px) {\n transform: scale(0.6) translate(-50%, -37%);\n }\n }\n .image-three {\n transform: scale(0.5) translate(-62%, -63%);\n @media all and (min-width: 450px) {\n transform: scale(0.6) translate(-50%, -37%);\n }\n }\n`;\n\nconst MovileImageWrapper = styled.div`\n margin: 0 auto;\n width: var(--size-grid020);\n height: var(--size-grid020);\n overflow: hidden;\n margin-left: var(--size-grid002);\n .wrapper-image-one {\n }\n\n .image-one {\n transform: scale(0.6) translate(-82%, -54%);\n @media all and (min-width: 450px) {\n transform: scale(0.6) translate(-71%, -47%);\n }\n }\n`;\n\nexport const DisplayImagenesYCTATrigger = (props: TriggerProps) => {\n const { setSelectedJourney, setCTALabel } = props;\n\n const renderList = (imageArray: Array) => {\n return imageArray.map((image, ind) => {\n return (\n \n
    \n {image.name}\n
    \n
    \n );\n });\n };\n\n return (\n
    \n \n \n
    \n \n
    \n
    \n \n \n \n \n
    \n {/* maquetación breakpoints a partir de 560*/}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n );\n};\n","import React, { useState, useEffect } from 'react';\nimport {\n Container,\n ContainerGutter,\n ContainerWrap,\n ContainerHorizontalAlignment,\n ContainerPadding,\n styled,\n TextAreaAppearance,\n InputAppearance,\n} from '@volkswagen-onehub/components-core';\nimport { TextAreaExtended } from 'src/components';\nimport { useOneFormContext } from 'src/feature-app';\nimport { useFormContext } from 'react-hook-form';\nimport { useTrackingManager } from 'src/feature-app/hooks/use-tracking-manager';\n\nconst ButtonWrapper = styled.div`\n display: flex;\n justify-content: flex-start;\n`;\ninterface DetalleMotivoProps {\n hideCTA?: boolean;\n}\n\nexport function Mensaje(props: DetalleMotivoProps) {\n const { hideCTA } = props;\n const { register } = useFormContext();\n const { handleNextStep } = useOneFormContext();\n const [currentValue, setCurrentValue] = useState('');\n const trackingManager = useTrackingManager();\n\n const handleChange = (e: any) => {\n const aux = e.currentTarget.value;\n e.preventDefault();\n setCurrentValue(aux);\n };\n\n return (\n \n handleChange(e)}\n appearance={InputAppearance.Default}\n isFloating={false}\n innerRef={register({\n required: {\n value: true,\n message: 'Requerido',\n },\n })}\n placeholder=\"Por ejemplo: Feliz yo de tenerte, mamá <3. Un solo día se te queda corto. Te quiero hoy y los 364 restantes.\"\n rows={3}\n />\n \n );\n}\n","import React, { useState, useEffect } from 'react';\nimport {\n styled,\n Text,\n TextAppearance,\n ThemeProvider,\n} from '@volkswagen-onehub/components-core';\nimport { CSSTransition } from 'react-transition-group';\n\nconst CardsWrapper = styled.div`\n position: relative;\n height: calc((2 *var(--size-grid003)/1.04) + 89px);\n @media screen and (max-width: 780px) {\n height: calc((2 *var(--size-grid003)/1.04) + 140px);\n }\n @media screen and (max-width: 712px) {\n height: 369px;\n }\n @media screen and (max-width: 654px) {\n height: 410px;\n }\n @media screen and (max-width: 654px) {\n height: 388px;\n }\n @media screen and (max-width: 420px) {\n height: 375px;\n }\n`;\n\ntype CardProps = {\n bgColor: string,\n number: number,\n size?: number,\n position: {\n top?: string,\n right?: string,\n bottom?: string,\n left?: string\n }\n}\n\nconst Card = styled.article`\n position: absolute;\n width: var(--size-grid003);\n height: calc(var(--size-grid003)/1.04);\n display: flex;\n align-items: center;\n justify-content: center;\n color: #ffffff;\n text-align: center;\n top: ${props => props.position.top ? `${props.position.top}` : 'unset'};\n right: ${props => props.position.right ? `${props.position.right}` : 'unset'};\n bottom: ${props => props.position.bottom ? `${props.position.bottom}` : 'unset'};\n left: ${props => props.position.left ? `${props.position.left}` : 'unset'};\n background: ${props => props.bgColor === 'dark' ? '#001E50' : '#00B0F0'};\n padding: 16px;\n display: none;\n &.card-enter {\n transform: scale(0);\n display: flex;\n }\n &.card-enter-active {\n transform: scale(1.1);\n transition: transform 150ms;\n display: flex;\n }\n &.card-enter-done {\n transform: scale(1);\n transition: transform 150ms;\n display: flex;\n }\n @media screen and (max-width: 1188px) {\n width: max-content;\n max-width: 165px;\n height: 131px;\n }\n @media screen and (max-width: 654px) {\n text-align: left;\n }\n @media screen and (max-width: 420px) {\n max-width: unset;\n width: ${\n props => props.number === 0 ? '120px'\n : props.number === 1 ? '120px'\n : props.number === 2 ? '164px'\n : props.number === 3 ? '144px'\n : '140px'\n};\n height: ${\n props => props.number === 0 ? '125px'\n : props.number === 1 ? '121px'\n : props.number === 2 ? '145px'\n : props.number === 3 ? '161px'\n : '140px'\n};\n }\n`;\n\nconst mensajes = [\n {\n bgColor: 'light',\n text: 'Mamá, éste sí que es nuestro año. ¡Te quiero!'\n },\n {\n bgColor: 'dark',\n text: 'Mamá, ¿te ape un plan juntos, solos tú y yo?'\n },\n {\n bgColor: 'light',\n text: '¡Felicidades, Carmen! Prepárate, porque se vienen cositas hihi'\n },\n {\n bgColor: 'dark',\n text: 'Madre no hay más que una, y en eso eres la mejor del mundo <3'\n },\n {\n bgColor: 'dark',\n text: 'Feliz día a ti, mami. ¡Eres mi mayor referente!'},\n];\n\nconst mensajesPosition = {\n default: [\n { name: 'default'},\n {\n top: '25%',\n right: '22%',\n },\n {\n top: '45%',\n left: '22%',\n },\n {\n top: '10.5%',\n left: '0px',\n },\n {\n top: '0px',\n right: '0px',\n },\n {\n right: '0px',\n bottom: '0px'\n }\n ],\n b1188: [\n { name: 'b1188'},\n {\n top: '25%',\n right: '22%',\n },\n {\n top: '45%',\n left: '7%',\n },\n {\n top: '11.5%',\n left: '0px',\n },\n {\n top: '0px',\n right: '0px',\n },\n {\n right: '0px',\n bottom: '0px'\n }\n ],\n b960: [\n { name: 'b960'},\n {\n top: '25%',\n right: '25%',\n },\n {\n top: '47%',\n left: '10%',\n },\n {\n top: '11.5%',\n left: '0px',\n },\n {\n top: '0px',\n right: '0px',\n },\n {\n right: '0px',\n bottom: '0px'\n }\n ],\n b654: [\n { name: 'b654'},\n {\n top: '25%',\n right: '25%',\n },\n {\n top: '37%',\n left: '30%',\n },\n {\n top: '16.5%',\n left: '0px',\n },\n {\n top: '0px',\n right: '0px',\n },\n {\n right: '0px',\n bottom: '0px'\n }\n ],\n b420: [\n { name: 'b654'},\n {\n top: '25%',\n right: '14%',\n },\n {\n top: '34%',\n left: '24%',\n },\n {\n top: '6.5%',\n left: '0px',\n },\n {\n top: '0px',\n right: '0px',\n },\n {\n right: '0px',\n bottom: '0px'\n }\n ]\n};\n\nexport function MensajesCards(props: {showMessages: boolean}) {\n const { showMessages } = props;\n const [ showCard1, setShowCard1 ] = useState(false);\n const [ showCard2, setShowCard2 ] = useState(false);\n const [ showCard3, setShowCard3 ] = useState(false);\n const [ showCard4, setShowCard4 ] = useState(false);\n const [ showCard5, setShowCard5 ] = useState(false);\n\n const [positionsArray, setPositionsArray] = useState(mensajesPosition.default);\n\n function activateTriggers(num: number) {\n switch(num) {\n case 2:\n setTimeout(() => {\n setShowCard2(true);\n activateTriggers(3);\n }, 450);\n break;\n case 3:\n setTimeout(() => {\n setShowCard3(true);\n activateTriggers(4);\n }, 450);\n break;\n case 4:\n setTimeout(() => {\n setShowCard4(true);\n activateTriggers(5);\n }, 450);\n break;\n case 5:\n setTimeout(() => {\n setShowCard5(true);\n }, 450);\n break;\n default:\n break;\n }\n }\n\n useEffect(() => {\n if (showMessages) {\n setShowCard1(true);\n activateTriggers(2);\n } else {\n setShowCard1(false);\n setShowCard2(false);\n setShowCard3(false);\n setShowCard4(false);\n setShowCard5(false);\n }\n }, [showMessages]);\n\n useEffect(() => {\n function changeCardsPosition(bp: string) {\n if (bp === '959' && positionsArray[0].name !== 'b960') {\n setPositionsArray(mensajesPosition.b960);\n } else if (bp === '654' && positionsArray[0].name !== 'b654') {\n setPositionsArray(mensajesPosition.b654);\n } else if (bp === '420' && positionsArray[0].name !== 'b420') {\n setPositionsArray(mensajesPosition.b420);\n } else if (bp === '1188' && positionsArray[0].name !== 'b1188') {\n setPositionsArray(mensajesPosition.b1188);\n } else {\n setPositionsArray(mensajesPosition.default);\n }\n }\n\n const mediaQueryListObject1188 = window.matchMedia('(max-width: 1188px)');\n try {\n mediaQueryListObject1188.addEventListener('change', () => changeCardsPosition('1188'));\n } catch (e) {\n try {\n mediaQueryListObject1188.addListener(() => changeCardsPosition('1188'));\n }\n catch(e) {\n console.log(e);\n }\n }\n\n const mediaQueryListObject959 = window.matchMedia('(max-width: 959px)');\n try {\n mediaQueryListObject959.addEventListener('change', () => changeCardsPosition('959'));\n } catch (e) {\n try {\n mediaQueryListObject959.addListener(() => changeCardsPosition('959'));\n }\n catch(e) {\n console.log(e);\n }\n }\n\n const mediaQueryListObject654 = window.matchMedia('(max-width: 654px)');\n try {\n mediaQueryListObject654.addEventListener('change', () => changeCardsPosition('654'));\n } catch (e) {\n try {\n mediaQueryListObject654.addListener(() => changeCardsPosition('654'));\n }\n catch(e) {\n console.log(e);\n }\n }\n\n const mediaQueryListObject420 = window.matchMedia('(max-width: 420px)');\n try {\n mediaQueryListObject420.addEventListener('change', () => changeCardsPosition('420'));\n } catch (e) {\n try {\n mediaQueryListObject420.addListener(() => changeCardsPosition('420'));\n }\n catch(e) {\n console.log(e);\n }\n }\n\n if (window.matchMedia('(max-width:420px)').matches) {\n setPositionsArray(mensajesPosition.b420);\n } else if (window.matchMedia('(max-width:654px)').matches) {\n setPositionsArray(mensajesPosition.b654);\n } else if (window.matchMedia('(max-width:959px)').matches) {\n setPositionsArray(mensajesPosition.b960);\n } else if (window.matchMedia('(max-width:1188px)').matches) {\n setPositionsArray(mensajesPosition.b1188);\n }\n\n return () => {\n mediaQueryListObject1188.removeEventListener('change', () => changeCardsPosition('1188'));\n mediaQueryListObject959.removeEventListener('change', () => changeCardsPosition('959'));\n mediaQueryListObject654.removeEventListener('change', () => changeCardsPosition('654'));\n mediaQueryListObject420.removeEventListener('change', () => changeCardsPosition('420'));\n };\n }, []);\n\n return (\n \n \n {mensajes.map((mensaje, i) => {\n return (\n \n \n {mensaje.text}\n \n \n );\n })}\n \n \n );\n}\n","import React, { useEffect, useState } from 'react';\nimport {\n Breakpoints,\n BreakpointWrapper,\n styled,\n Text,\n TextAppearance,\n ThemeProvider\n} from '@volkswagen-onehub/components-core';\nimport { MensajesCards } from '.';\nimport { keyframes } from 'styled-components';\nimport { useFaContent } from 'src/feature-app';\n\nconst spinnerKeyframe = keyframes`\n 0% {\n stroke-dasharray: 0 100;\n }\n`;\n\nconst Wrapper = styled.div`\n position: relative;\n margin-left: var(--size-grid003);\n margin-right: var(--size-grid003);\n width: var(--size-grid018);\n display: flex;\n justify-content: space-between;\n .cards {\n width: var(--size-grid009);\n @media screen and (max-width: 990px) {\n width: var(--size-grid011);\n }\n @media screen and (max-width: 959px) {\n margin-left: auto;\n width: 56%;\n }\n @media screen and (max-width: 910px) {\n margin-left: auto;\n width: 60%;\n }\n @media screen and (max-width: 840px) {\n margin-left: auto;\n width: 63%;\n }\n @media screen and (max-width: 780px) {\n margin-left: auto;\n width: 70%;\n }\n @media screen and (max-width: 712px) {\n margin-left: auto;\n width: 85%;\n }\n @media screen and (max-width: 654px) {\n width: 100%;\n }\n }\n .info {\n width: var(--size-grid007);\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n @media screen and (max-width: 959px) {\n width: 80%;\n }\n @media screen and (max-width: 560px) {\n margin-bottom: 10px;\n width: 90%;\n }\n #number-messages {\n display: inline-block;\n min-width: 100px;\n }\n }\n @media screen and (max-width: 990px) {\n margin-left: var(--size-grid002);\n margin-right: var(--size-grid002);\n width: var(--size-grid020);\n }\n @media screen and (max-width: 959px) {\n flex-wrap: wrap-reverse;\n }\n`;\n\nconst Spinner = styled.div`\n width: 200px;\n height: 200px;\n margin-left: auto;\n margin-bottom: 17px;\n border-radius: 100%;\n position: relative;\n .dashed-circumference {\n position: absolute;\n top: 5.5%;\n left: 4.5%;\n z-index: -1;\n width: 90%;\n height: 90%;\n border-radius: 100%;\n border: 1px dotted #001E50;\n }\n .percentage-bar {\n .circle {\n stroke: #071e50;\n fill: none;\n stroke-width: 0.75;\n animation: ${spinnerKeyframe} 3.5s ease-out forwards;\n }\n }\n .percentage-text {\n position: absolute;\n top: 50%;\n right: 50%;\n transform: translate3d(50%, -50%, 0);\n #percentage-messages {\n width: 28px;\n display: inline-block;\n text-align: right;\n @media screen and (min-width: 960px) {\n width: 40px;\n }\n @media screen and (min-width: 1600px) {\n width: 56px;\n }\n }\n }\n @media screen and (max-width: 959px) {\n width: 150px;\n height: 150px;\n position: absolute;\n margin: 0;\n bottom: 0;\n left: 0;\n }\n @media screen and (max-width: 559px) {\n width: 123px;\n height: 123px;\n }\n`;\n\nfunction animateNumber(id: string, start: number, end: number, duration: number) {\n const range = end - start;\n let current = start;\n const increment = id === 'number-messages' ? 2 : 1;\n const stepTime = Math.abs(Math.floor(duration / range));\n let obj = document.getElementById(id);\n const timer = setInterval(function() {\n current += increment;\n if (id === 'percentage-messages' && current < 10) {\n obj.innerHTML = `${current}`;\n } else {\n obj.innerHTML = current.toString();\n }\n if (current === end) {\n clearInterval(timer);\n }\n }, stepTime);\n}\n\nexport function SectionMensajes() {\n const [ showMessages, setShowMessages ] = useState(false);\n const [ madres, setMadres ] = useState(1000);\n const [ porcentaje, setPorcentaje ] = useState(25);\n const faContent = useFaContent();\n\n useEffect(() => {\n if (faContent.madres) setMadres(parseInt(faContent.madres));\n if (faContent.porcentaje) setPorcentaje(parseInt(faContent.porcentaje));\n }, [faContent]);\n\n useEffect(() => {\n if (showMessages) {\n animateNumber('number-messages', 10, madres, 4000);\n animateNumber('percentage-messages', 0, porcentaje, 3000);\n }\n }, [showMessages]);\n\n useEffect(() => {\n const options = { threshold: 0.8 };\n const element = document.querySelector('#mensajes');\n const observer = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n if (entry.intersectionRatio > 0 && !showMessages) {\n setShowMessages(true);\n }\n });\n }, options);\n observer.observe(element);\n }, []);\n\n return (\n \n
    \n \n
    \n
    \n \n \n Más de 10 madres han recibido\n {' '}\n su carga de amor\n \n \n {showMessages ? (\n \n
    \n \n \n \n
    \n 0%\n
    \n \n ) : null}\n \n \n
    \n \n {showMessages ? (\n \n
    \n \n \n \n
    \n 0%\n
    \n \n ) : null}\n \n \n );\n}\n","import { styled } from '@volkswagen-onehub/components-core';\nimport React from 'react';\n\nconst Svg = styled.svg`\n width: 100%;\n height: auto;\n fill: #ffffff;\n`;\nconst SvgWrapper = styled.div`\n width: 44px;\n height: 44px;\n`;\n\nexport const FacebookSvg = () => (\n \n \n 631056F4-6CA7-4833-8173-D917CE902E32\n Created with sketchtool.\n \n \n \n \n \n \n \n \n);\n\nexport const TwitterSvg = () => (\n \n \n 13918EB6-6D62-43B8-99A2-2965833D2774\n Created with sketchtool.\n \n \n \n \n \n \n \n \n);\n\nexport const WhatsappSvg = () => (\n \n \n ic_whatsapp\n Created with Sketch.\n \n \n \n \n \n \n);\n","import {\n Breakpoints,\n BreakpointWrapper,\n Container,\n ContainerGutter,\n ContainerPadding,\n Layout,\n styled,\n Text,\n TextAlignment,\n TextAppearance,\n} from '@volkswagen-onehub/components-core';\nimport React, { useEffect } from 'react';\nimport { connect, useDispatch, useSelector } from 'react-redux';\nimport { useFeatureAppConfig, useTrackingManager, TrackingForm } from 'src/feature-app';\nimport { RenderController } from 'src/feature-app/Screen';\nimport { FormDataFields, FormInfo, OneFormState, Steps } from 'src/types';\nimport { FacebookSvg, TwitterSvg, WhatsappSvg } from '../assets/Svgs';\n\ninterface FieldProps {\n copyBook?: string;\n cliente: string;\n}\n\ninterface NDPSField {\n name: string;\n value: string;\n}\n\nconst Anchor = styled.a`\n outline: none;\n color: none;\n`;\n\nfunction Fields() {\n const { formData, formInfo } = useSelector((state: OneFormState) => state);\n const config = useFeatureAppConfig();\n\n return (\n \n
    \n \n \n {formData.fields.cliente === 'true'\n ? 'Tu madre recibirá tu “te quiero” en su bandeja de entrada y, quizá, también un fin de semana contigo al volante del Nuevo ID.4. ¡Mucha suerte! '\n : 'Tu madre está a punto de recibir tu “te quiero” en su bandeja de entrada. ¡Le alegrarás el día! '}\n \n \n ¿Conoces a más conductores/as Volkswagen? Comparte esta página para que ninguna madre se quede sin su “te\n quiero”.\n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \n );\n}\n\ninterface ThankYouProps {\n formData: FormDataFields;\n formInfo: FormInfo;\n}\n\nfunction ThankYouDiaDeLaMadre(props: ThankYouProps) {\n const { formData, formInfo } = props;\n const { formResponse } = formInfo;\n\n const trackingManager = useTrackingManager();\n const dispatch = useDispatch();\n const getTrackingForm = (): TrackingForm => {\n let LeadID;\n if (formResponse && formResponse.content && formResponse.content.data && formResponse.content.data.fields) {\n const leadField: NDPSField = formResponse.content.data.fields.find(\n (field: NDPSField) => field.name === 'COD_LEAD_ID'\n );\n LeadID = leadField ? leadField.value : undefined;\n }\n return {\n LeadID,\n FormFields: undefined,\n };\n };\n\n useEffect(() => {\n dispatch({ type: 'SET_FORM_SUBMITTED', payload: true });\n\n trackingManager.trackFormSubmissionSuccessMessageLoad(\n {\n contentId: undefined,\n },\n getTrackingForm()\n );\n }, []);\n\n const renderTitle = () => {\n return (\n <>\n \n \n Seguro que le encanta tu mensaje\n \n \n \n \n Seguro que le encanta tu mensaje\n \n \n \n );\n };\n\n const screen: Steps = {\n title: <>{renderTitle()},\n fields: ,\n };\n return (\n \n );\n}\n\nconst mapStateToProps = (state: OneFormState) => {\n return {\n formData: state.formData.fields,\n formInfo: state.formInfo,\n };\n};\n\nconst ConnectedComponent = connect(mapStateToProps)(ThankYouDiaDeLaMadre);\n\nexport { ConnectedComponent as ThankYouDiaDeLaMadre };\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","export function useMocks(mockConfig) {\n const { enabled, mockId } = mockConfig;\n return Boolean(enabled && mockId);\n}\n","module.exports = { \n HttpProxy: function() {},\n HttpsProxy: function() {}\n};\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar React = require(\"react\");\nexports.Close = React.forwardRef(Object.assign(function (props, forwardRef) {\n var variant = props.variant || \"default\";\n if (variant === \"default\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"m21.474 3.467-.942-.941L12 11.059 3.466 2.526l-.94.941L11.059 12l-8.533 8.532.94.942L12 12.941l8.532 8.533.942-.942L12.941 12z\" }));\n }\n if (variant === \"small\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"12\", height: \"12\", viewBox: \"0 0 12 12\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"m10.466 2.473-.94-.94L6 5.06 2.474 1.533l-.941.94L5.06 6 1.533 9.527l.941.94L6 6.94l3.526 3.527.94-.94L6.94 6z\" }));\n }\n return null;\n}, { displayName: 'Close' }));\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar React = require(\"react\");\nexports.Phone = React.forwardRef(Object.assign(function (props, forwardRef) {\n var variant = props.variant || \"default\";\n if (variant === \"default\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M9.5 23.1c-.9 0-1.7-.2-2.4-.5-1-.5-2.8-1.5-3.2-2.9-.2-.8.6-2.9 1.1-4.1l.1-.1c1-1.3 2.8-1.7 5.2-1l2.6-5.3C11.4 7.8 10 6 10.8 4.3c.4-.7 1.6-2.8 2.6-3.2 1.3-.4 2.8-.2 4 .6 1.1.6 2.1 1.6 2.5 2.9.4 1.4.1 2.7-.6 3.9L13.7 20c-.7 1.7-2.2 2.9-4.1 3.1h-.1zm-3.3-6.9c-.6 1.4-1.1 2.8-1 3.2.2.6 1.1 1.4 2.4 2 .6.3 1.3.4 2 .4 1.3-.2 2.4-1 2.9-2.3l5.7-11.7c.5-.9.7-1.9.5-2.8-.3-.9-1-1.6-1.9-2.1-.9-.6-1.9-.7-2.9-.5-.3.2-1.2 1.3-1.9 2.5-.3.8.5 2.1 2.2 3.6l.4.3L11 16l-.5-.2c-1.3-.3-3.3-.8-4.3.4z\" }));\n }\n if (variant === \"small\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { width: \"12\", height: \"12\", viewBox: \"0 0 12 12\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M3.421 11.496a3.334 3.334 0 0 1-1.614-1.504A2.222 2.222 0 0 1 1.9 8.279l.373-.71a1.726 1.726 0 0 1 2.224-.61l1.27-2.587a2.05 2.05 0 0 1-.723-2.198l.259-.612A2.132 2.132 0 0 1 6.548.357L6.55.356A2.787 2.787 0 0 1 8.77.639a3.02 3.02 0 0 1 1.434 1.611 2.656 2.656 0 0 1-.277 2.104l-2.793 5.719a2.799 2.799 0 0 1-2.285 1.699 2.837 2.837 0 0 1-1.428-.276zm.198-3.383c-.111 0-.147.053-.207.14l-.323.624a.889.889 0 0 0-.028.672 2.23 2.23 0 0 0 .923.741 1.376 1.376 0 0 0 .792.155c.588-.013.998-.618 1.164-.956l2.788-5.71a1.452 1.452 0 0 0 .222-1.087 1.714 1.714 0 0 0-.796-.875 1.425 1.425 0 0 0-1.15-.21.803.803 0 0 0-.477.477l-.238.554c-.07.227.013.466.725 1.055l.404.334-2.233 4.552-.867-.28a2.82 2.82 0 0 0-.699-.186z\" }));\n }\n return null;\n}, { displayName: 'Phone' }));\n","import { FeatureAppEnvironment } from '@feature-hub/core';\nimport React from 'react';\nimport { FeatureAppConfig, Dependencies } from 'src/feature-app';\n\nexport type OneFormFeatureAppEnvironment = FeatureAppEnvironment;\n\nexport const FeatureAppEnvironmentContext = React.createContext(undefined);\n\nexport function useFeatureAppEnvironment(): OneFormFeatureAppEnvironment {\n const featureAppEnvironment = React.useContext(FeatureAppEnvironmentContext);\n\n if (!featureAppEnvironment) {\n throw new Error('No featureAppEnvironment context value was provided.');\n }\n\n return featureAppEnvironment;\n}\n","import { Breakpoints } from '../helpers/breakpoint';\nimport { getColumnsWidthForBreakpoint, getGridColumn } from '../helpers/grid';\nimport { DesignTokenFontSizes, } from './definitions';\nconst fontSizes = {\n size0100: {\n [Breakpoints.default]: 12,\n [Breakpoints.b1600]: 14,\n },\n size0150: {\n [Breakpoints.default]: 14,\n [Breakpoints.b1600]: 16,\n },\n size0200: {\n [Breakpoints.default]: 16,\n [Breakpoints.b1600]: 20,\n },\n size0250: {\n [Breakpoints.default]: 20,\n [Breakpoints.b1600]: 24,\n },\n size0300: {\n [Breakpoints.default]: 24,\n [Breakpoints.b1600]: 32,\n },\n size0350: {\n [Breakpoints.default]: 28,\n [Breakpoints.b560]: 32,\n [Breakpoints.b1600]: 48,\n },\n size0400: {\n [Breakpoints.default]: 32,\n [Breakpoints.b560]: 48,\n [Breakpoints.b1600]: 60,\n },\n size0450: {\n [Breakpoints.default]: 44,\n [Breakpoints.b560]: 60,\n [Breakpoints.b1600]: 76,\n },\n size0500: {\n [Breakpoints.default]: 56,\n [Breakpoints.b560]: 72,\n [Breakpoints.b1600]: 96,\n },\n size0550: {\n [Breakpoints.default]: 84,\n [Breakpoints.b560]: 96,\n [Breakpoints.b1600]: 120,\n },\n size0600: {\n [Breakpoints.default]: 100,\n [Breakpoints.b560]: 116,\n [Breakpoints.b1600]: 148,\n },\n};\nvar FontStyles;\n(function (FontStyles) {\n FontStyles[FontStyles[\"Copy\"] = 0] = \"Copy\";\n FontStyles[FontStyles[\"Headline\"] = 1] = \"Headline\";\n FontStyles[FontStyles[\"Label\"] = 2] = \"Label\";\n})(FontStyles || (FontStyles = {}));\nconst generateBreakpoints = (fontSize, fn) => Object.values(Breakpoints).reduce((acc, breakpoint) => {\n if (fontSize[breakpoint]) {\n return [\n ...acc,\n {\n breakpoint: breakpoint === Breakpoints.default ? breakpoint : `${breakpoint}px`,\n value: fn(fontSize[breakpoint]),\n },\n ];\n }\n return acc;\n}, []);\nconst generateFontType = (size, style) => {\n const lineHeightFactor = style === FontStyles.Copy ? 1.5 : 1.1;\n const letterSpacingFactor = -0.35;\n const baseFontSize = 16;\n const lineHeightCalculation = (fontSize) => `${Math.ceil((fontSize * lineHeightFactor) / 4) * 4}px`;\n const letterSpacingCalculation = (fontSize) => `${((fontSize / baseFontSize - 1) * letterSpacingFactor).toFixed(2)}px`;\n const reducedFontSizeCalculation = (fontSize) => `${Math.max(Math.ceil(fontSize / 2 / 4) * 4, 12)}px`;\n const fontFamily = style === FontStyles.Headline\n ? 'var(--font-family-head, vw-head, Helvetica, Arial, sans-serif);'\n : 'var(--font-family-text, vw-text, Helvetica, Arial, sans-serif);';\n return {\n fontFamily,\n fontSize: generateBreakpoints(fontSizes[size], (e) => `${e}px`),\n reducedFontSize: generateBreakpoints(fontSizes[size], reducedFontSizeCalculation),\n lineHeight: generateBreakpoints(fontSizes[size], lineHeightCalculation),\n static: {\n fontSize: `${fontSizes[size][Breakpoints.default]}px`,\n lineHeight: lineHeightCalculation(fontSizes[size][Breakpoints.default]),\n letterSpacing: letterSpacingCalculation(fontSizes[size][Breakpoints.default]),\n reducedFontSize: reducedFontSizeCalculation(fontSizes[size][Breakpoints.default]),\n },\n letterSpacing: generateBreakpoints(fontSizes[size], letterSpacingCalculation),\n };\n};\nconst sizes = {\n static0: '0',\n static100: '4px',\n static150: '8px',\n static200: '12px',\n static250: '16px',\n static300: '20px',\n static350: '24px',\n static370: '28px',\n static400: '32px',\n static450: '40px',\n static500: '44px',\n static510: '48px',\n static515: '52px',\n static520: '56px',\n static530: '64px',\n static535: '68px',\n static550: '72px',\n static565: '80px',\n static575: '84px',\n static600: '92px',\n static625: '96px',\n static650: '100px',\n static750: '120px',\n static800: '132px',\n static900: '156px',\n static1000: '172px',\n static1100: '184px',\n static1200: '196px',\n grid001: [\n { breakpoint: `${Breakpoints.default}`, value: getGridColumn(1) },\n {\n breakpoint: `${Breakpoints.b2560}px`,\n value: getColumnsWidthForBreakpoint(1, Breakpoints.b2560),\n },\n ],\n grid002: [\n { breakpoint: `${Breakpoints.default}`, value: getGridColumn(2) },\n {\n breakpoint: `${Breakpoints.b2560}px`,\n value: getColumnsWidthForBreakpoint(2, Breakpoints.b2560),\n },\n ],\n grid003: [\n { breakpoint: `${Breakpoints.default}`, value: getGridColumn(3) },\n {\n breakpoint: `${Breakpoints.b2560}px`,\n value: getColumnsWidthForBreakpoint(3, Breakpoints.b2560),\n },\n ],\n grid004: [\n { breakpoint: `${Breakpoints.default}`, value: getGridColumn(4) },\n {\n breakpoint: `${Breakpoints.b2560}px`,\n value: getColumnsWidthForBreakpoint(4, Breakpoints.b2560),\n },\n ],\n grid005: [\n { breakpoint: `${Breakpoints.default}`, value: getGridColumn(5) },\n {\n breakpoint: `${Breakpoints.b2560}px`,\n value: getColumnsWidthForBreakpoint(5, Breakpoints.b2560),\n },\n ],\n grid006: [\n { breakpoint: `${Breakpoints.default}`, value: getGridColumn(6) },\n {\n breakpoint: `${Breakpoints.b2560}px`,\n value: getColumnsWidthForBreakpoint(6, Breakpoints.b2560),\n },\n ],\n grid007: [\n { breakpoint: `${Breakpoints.default}`, value: getGridColumn(7) },\n {\n breakpoint: `${Breakpoints.b2560}px`,\n value: getColumnsWidthForBreakpoint(7, Breakpoints.b2560),\n },\n ],\n grid008: [\n { breakpoint: `${Breakpoints.default}`, value: getGridColumn(8) },\n {\n breakpoint: `${Breakpoints.b2560}px`,\n value: getColumnsWidthForBreakpoint(8, Breakpoints.b2560),\n },\n ],\n grid009: [\n { breakpoint: `${Breakpoints.default}`, value: getGridColumn(9) },\n {\n breakpoint: `${Breakpoints.b2560}px`,\n value: getColumnsWidthForBreakpoint(9, Breakpoints.b2560),\n },\n ],\n grid010: [\n { breakpoint: `${Breakpoints.default}`, value: getGridColumn(10) },\n {\n breakpoint: `${Breakpoints.b2560}px`,\n value: getColumnsWidthForBreakpoint(10, Breakpoints.b2560),\n },\n ],\n grid011: [\n { breakpoint: `${Breakpoints.default}`, value: getGridColumn(11) },\n {\n breakpoint: `${Breakpoints.b2560}px`,\n value: getColumnsWidthForBreakpoint(11, Breakpoints.b2560),\n },\n ],\n grid012: [\n { breakpoint: `${Breakpoints.default}`, value: getGridColumn(12) },\n {\n breakpoint: `${Breakpoints.b2560}px`,\n value: getColumnsWidthForBreakpoint(12, Breakpoints.b2560),\n },\n ],\n grid013: [\n { breakpoint: `${Breakpoints.default}`, value: getGridColumn(13) },\n {\n breakpoint: `${Breakpoints.b2560}px`,\n value: getColumnsWidthForBreakpoint(13, Breakpoints.b2560),\n },\n ],\n grid014: [\n { breakpoint: `${Breakpoints.default}`, value: getGridColumn(14) },\n {\n breakpoint: `${Breakpoints.b2560}px`,\n value: getColumnsWidthForBreakpoint(14, Breakpoints.b2560),\n },\n ],\n grid015: [\n { breakpoint: `${Breakpoints.default}`, value: getGridColumn(15) },\n {\n breakpoint: `${Breakpoints.b2560}px`,\n value: getColumnsWidthForBreakpoint(15, Breakpoints.b2560),\n },\n ],\n grid016: [\n { breakpoint: `${Breakpoints.default}`, value: getGridColumn(16) },\n {\n breakpoint: `${Breakpoints.b2560}px`,\n value: getColumnsWidthForBreakpoint(16, Breakpoints.b2560),\n },\n ],\n grid017: [\n { breakpoint: `${Breakpoints.default}`, value: getGridColumn(17) },\n {\n breakpoint: `${Breakpoints.b2560}px`,\n value: getColumnsWidthForBreakpoint(17, Breakpoints.b2560),\n },\n ],\n grid018: [\n { breakpoint: `${Breakpoints.default}`, value: getGridColumn(18) },\n {\n breakpoint: `${Breakpoints.b2560}px`,\n value: getColumnsWidthForBreakpoint(18, Breakpoints.b2560),\n },\n ],\n grid019: [\n { breakpoint: `${Breakpoints.default}`, value: getGridColumn(19) },\n {\n breakpoint: `${Breakpoints.b2560}px`,\n value: getColumnsWidthForBreakpoint(19, Breakpoints.b2560),\n },\n ],\n grid020: [\n { breakpoint: `${Breakpoints.default}`, value: getGridColumn(20) },\n {\n breakpoint: `${Breakpoints.b2560}px`,\n value: getColumnsWidthForBreakpoint(20, Breakpoints.b2560),\n },\n ],\n grid021: [\n { breakpoint: `${Breakpoints.default}`, value: getGridColumn(21) },\n {\n breakpoint: `${Breakpoints.b2560}px`,\n value: getColumnsWidthForBreakpoint(21, Breakpoints.b2560),\n },\n ],\n grid022: [\n { breakpoint: `${Breakpoints.default}`, value: getGridColumn(22) },\n {\n breakpoint: `${Breakpoints.b2560}px`,\n value: getColumnsWidthForBreakpoint(22, Breakpoints.b2560),\n },\n ],\n grid023: [\n { breakpoint: `${Breakpoints.default}`, value: getGridColumn(23) },\n {\n breakpoint: `${Breakpoints.b2560}px`,\n value: getColumnsWidthForBreakpoint(23, Breakpoints.b2560),\n },\n ],\n grid024: [\n { breakpoint: `${Breakpoints.default}`, value: getGridColumn(24) },\n {\n breakpoint: `${Breakpoints.b2560}px`,\n value: getColumnsWidthForBreakpoint(24, Breakpoints.b2560),\n },\n ],\n dynamic0020: [\n { breakpoint: `${Breakpoints.default}`, value: '4px' },\n { breakpoint: `${Breakpoints.b560}px`, value: '4px' },\n { breakpoint: `${Breakpoints.b1600}px`, value: '8px' },\n ],\n dynamic0040: [\n { breakpoint: `${Breakpoints.default}`, value: '12px' },\n { breakpoint: `${Breakpoints.b560}px`, value: '20px' },\n { breakpoint: `${Breakpoints.b1600}px`, value: '32px' },\n { breakpoint: `${Breakpoints.b2560}px`, value: '48px' },\n ],\n dynamic0050: [\n { breakpoint: `${Breakpoints.default}`, value: '12px' },\n { breakpoint: `${Breakpoints.b560}px`, value: '20px' },\n { breakpoint: `${Breakpoints.b1600}px`, value: '24px' },\n ],\n dynamic0100: [\n { breakpoint: `${Breakpoints.default}`, value: '20px' },\n { breakpoint: `${Breakpoints.b560}px`, value: '24px' },\n { breakpoint: `${Breakpoints.b1600}px`, value: '28px' },\n ],\n dynamic0120: [\n { breakpoint: `${Breakpoints.default}`, value: '24px' },\n { breakpoint: `${Breakpoints.b560}px`, value: '20px' },\n { breakpoint: `${Breakpoints.b1600}px`, value: '20px' },\n ],\n dynamic0130: [\n { breakpoint: `${Breakpoints.default}`, value: '24px' },\n { breakpoint: `${Breakpoints.b560}px`, value: '40px' },\n { breakpoint: `${Breakpoints.b1600}px`, value: '52px' },\n ],\n dynamic0140: [\n { breakpoint: `${Breakpoints.default}`, value: '28px' },\n { breakpoint: `${Breakpoints.b560}px`, value: '32px' },\n { breakpoint: `${Breakpoints.b1600}px`, value: '48px' },\n ],\n dynamic0150: [\n { breakpoint: `${Breakpoints.default}`, value: '28px' },\n { breakpoint: `${Breakpoints.b560}px`, value: '52px' },\n { breakpoint: `${Breakpoints.b1600}px`, value: '64px' },\n ],\n dynamic0200: [\n { breakpoint: `${Breakpoints.default}`, value: '32px' },\n { breakpoint: `${Breakpoints.b560}px`, value: '56px' },\n { breakpoint: `${Breakpoints.b1600}px`, value: '72px' },\n ],\n dynamic0250: [\n { breakpoint: `${Breakpoints.default}`, value: '44px' },\n { breakpoint: `${Breakpoints.b560}px`, value: '68px' },\n { breakpoint: `${Breakpoints.b1600}px`, value: '84px' },\n ],\n dynamic0270: [\n { breakpoint: `${Breakpoints.default}`, value: '56px' },\n { breakpoint: `${Breakpoints.b560}px`, value: '80px' },\n { breakpoint: `${Breakpoints.b1600}px`, value: '100px' },\n ],\n dynamic0300: [\n { breakpoint: `${Breakpoints.default}`, value: '72px' },\n { breakpoint: `${Breakpoints.b560}px`, value: '96px' },\n { breakpoint: `${Breakpoints.b1600}px`, value: '120px' },\n ],\n dynamic0350: [\n { breakpoint: `${Breakpoints.default}`, value: '100px' },\n { breakpoint: `${Breakpoints.b560}px`, value: '132px' },\n { breakpoint: `${Breakpoints.b1600}px`, value: '196px' },\n ],\n dynamic0450: [\n { breakpoint: `${Breakpoints.default}`, value: '156px' },\n { breakpoint: `${Breakpoints.b560}px`, value: '172px' },\n { breakpoint: `${Breakpoints.b1600}px`, value: '184px' },\n ],\n line100: '1px',\n line200: '2px',\n};\nexport const designTokens = {\n animation: {\n duration: {\n duration300: '300ms',\n duration400: '400ms',\n duration500: '500ms',\n duration600: '600ms',\n duration2000: '2000ms',\n },\n timingFunction: {\n timing100: 'ease',\n timing200: 'linear',\n timing300: 'cubic-bezier(0.215, 0.61, 0.355, 1)',\n timing400: 'ease-in',\n },\n },\n color: {\n 'white-000': '#ffffff',\n 'black-000': '#000000',\n 'grey-100': '#DFE4E8',\n 'grey-200': '#C2CACF',\n 'grey-300': '#96A3A8',\n 'grey-400': '#6A767D',\n 'grey-500': '#3C484D',\n 'blue-100': '#4CC7F4',\n 'blue-200': '#00B0F0',\n 'blue-350': '#0077CC',\n 'blue-500': '#00437A',\n 'blue-600': '#001E50',\n 'blue-900': '#0040C5',\n 'mint-100': '#00E6E6',\n 'red-100': '#FF335C',\n 'red-200': '#E4002C',\n 'purple-100': '#5B08A4',\n 'green-100': '#ADE5A1',\n 'green-200': '#008437',\n 'yellow-000': '#FFD100',\n transparent: 'transparent',\n 'black-000-transparent-10': 'rgba(0, 0, 0, 0.1)',\n 'black-000-transparent-50': 'rgba(0, 0, 0, 0.5)',\n 'black-000-transparent-80': 'rgba(0, 0, 0, 0.8)',\n 'grey-100-transparent-40': 'rgba(223, 228, 232, 0.4)',\n 'grey-200-transparent-20': 'rgba(194, 202, 207, 0.2)',\n 'white-000-transparent-20': 'rgba(255, 255, 255, 0.2)',\n 'white-000-transparent-40': 'rgba(255, 255, 255, 0.4)',\n 'white-000-transparent-98': 'rgba(255, 255, 255, 0.98)',\n },\n textAppearances: {\n copy100: generateFontType(DesignTokenFontSizes.size0100, FontStyles.Copy),\n copy150: generateFontType(DesignTokenFontSizes.size0150, FontStyles.Copy),\n copy200: generateFontType(DesignTokenFontSizes.size0200, FontStyles.Copy),\n copy250: generateFontType(DesignTokenFontSizes.size0250, FontStyles.Copy),\n copy300: generateFontType(DesignTokenFontSizes.size0300, FontStyles.Copy),\n headline200: generateFontType(DesignTokenFontSizes.size0200, FontStyles.Headline),\n headline250: generateFontType(DesignTokenFontSizes.size0250, FontStyles.Headline),\n headline300: generateFontType(DesignTokenFontSizes.size0300, FontStyles.Headline),\n headline350: generateFontType(DesignTokenFontSizes.size0350, FontStyles.Headline),\n headline400: generateFontType(DesignTokenFontSizes.size0400, FontStyles.Headline),\n headline450: generateFontType(DesignTokenFontSizes.size0450, FontStyles.Headline),\n headline500: generateFontType(DesignTokenFontSizes.size0500, FontStyles.Headline),\n headline550: generateFontType(DesignTokenFontSizes.size0550, FontStyles.Headline),\n headline600: generateFontType(DesignTokenFontSizes.size0600, FontStyles.Headline),\n label100: generateFontType(DesignTokenFontSizes.size0100, FontStyles.Label),\n label150: generateFontType(DesignTokenFontSizes.size0150, FontStyles.Label),\n label200: generateFontType(DesignTokenFontSizes.size0200, FontStyles.Label),\n label250: generateFontType(DesignTokenFontSizes.size0250, FontStyles.Label),\n label300: generateFontType(DesignTokenFontSizes.size0300, FontStyles.Label),\n },\n font: {\n weight: {\n regular: 'normal',\n light: '200',\n bold: 'bold',\n },\n },\n size: sizes,\n};\n","import * as React from 'react';\nimport { styled } from '../theme-provider';\nimport { Text, TextAppearance, TextColor, TextTag } from '../text';\nconst StyledCharacterCounter = styled.span.withConfig({ displayName: \"StyledCharacterCounter\", componentId: \"sc-omfthb\" }) `margin-inline-start:auto;`;\nexport const CharacterCounter = ({ limit, value = 0 }) => (React.createElement(StyledCharacterCounter, { \"aria-hidden\": true },\n React.createElement(Text, { tag: TextTag.span, color: TextColor.inherit, appearance: TextAppearance.copy100 },\n value,\n \" / \",\n limit)));\n","import Axios, { AxiosResponse } from 'axios';\nimport React, { useEffect } from 'react';\nimport { Text } from '@volkswagen-onehub/components-core';\nimport { OneElementTemplate } from 'src/feature-app/Screen';\nimport { ConfirmacionProspects } from './ConfirmacionProspects';\nimport { Email, PantallaNombreApellido, CarlineSelect, findCarline } from 'src/components';\nimport { useDispatch, useStore } from 'react-redux';\nimport { getCarlines, getMolecularUrl } from 'src/bff';\nimport { isCalculadoraForm } from 'src/forms';\nimport { getParamsForm } from 'src/feature-app/get-params-form';\nimport { FormDataGroup, FormInfo, OneFormState, Steps, MolecularResponse } from 'src/types';\nimport {\n FormController,\n removeWhiteSpace,\n useFaContent,\n useFeatureAppConfig,\n useFeatureServices,\n useOneFormContext,\n} from 'src/feature-app';\nimport { ThankYouProspects } from '.';\nimport { formatFields, formatHeaders, formDataBuilder } from '../format-fields';\nimport { removeStep, resetStepsScreenIndex } from '../helpers/add-remove-steps';\nimport { getCodInterestCarline, getDescInterestCarline, getMatchData, getCalculadoraData } from '../Leads';\n\nexport enum ProspectsSteps {\n Modelo,\n NombreApellido,\n Email,\n Confirmacion,\n}\n\ninterface ProspectsFormProps {\n customSteps?: Steps[];\n updatedFormData?: Partial;\n updatedFormInfo?: Partial;\n}\n\nexport function ProspectsVentaForm({ customSteps, updatedFormData }: ProspectsFormProps) {\n const { initializeForm } = useOneFormContext();\n const store = useStore();\n const config = useFeatureAppConfig();\n const dispatch = useDispatch();\n const faContent = useFaContent();\n\n const steps: Steps[] = customSteps\n ? customSteps\n : [\n {\n title: (\n <>\n ¿Qué modelo te apetece conducir?\n \n ),\n fields: (\n \n \n
    \n }\n />\n ),\n screenIndex: ProspectsSteps.Modelo,\n name: 'Modelo',\n outputs: ['modelo'],\n outputsText: ['modelo'],\n },\n {\n title: (\n <>\n Queremos contártelo todo sobre nuestro próximo modelo, el Nuevo Taigo. Pero antes, nos gustaría saber{' '}\n quién eres\n \n ),\n fields: (\n \n \n
    \n }\n />\n ),\n screenIndex: ProspectsSteps.NombreApellido,\n name: 'NombreApellido',\n outputs: ['name', 'surname', 'secondSurname'],\n outputsText: ['name', 'surname', 'secondSurname'],\n },\n {\n title: (\n <>\n ¿A qué email te enviamos las novedades sobre el Nuevo Taigo?\n \n ),\n fields: (\n \n \n \n }\n />\n ),\n screenIndex: ProspectsSteps.Email,\n name: 'Email',\n outputs: ['email'],\n outputsText: ['email'],\n },\n {\n fields: ,\n screenIndex: ProspectsSteps.Confirmacion,\n name: 'Confirmacion',\n isLastStep: true,\n hidePreviousStep: true,\n },\n ];\n\n const NuevoFormData: Partial = {\n headers: {\n DESC_BRAND: 'VW',\n DESC_GDPR_ADAPTED: 'true',\n DESC_CAMPAIGNBLOCK: 'B5. VW Launch Prospects',\n DESC_FORMOBJECTIVE: 'Prospect',\n DESC_ID_CAMPAIGN: '7011n000000JrSNAA0',\n DESC_TOKEN: 'VW_DDB_FRM_PROSPECT_LAUNCH',\n ...updatedFormData?.headers,\n },\n fields: {\n formName: 'prospect',\n formType: 'otherform',\n pageCategory: 'Prospect',\n formFields: {\n DESC_LOPD: 'PERMITE',\n DESC_TRANF_DATA_THIRD: 'NO INFORMADO',\n },\n ...updatedFormData?.fields,\n }, // Analítica\n };\n\n const getFormInfo = (steps: Steps[]): Partial => {\n const firstStep = steps[0];\n const lastStep = steps[steps.length - 1];\n const stepsHistory = [0];\n const numberOfScreens = steps.length;\n\n return {\n formStarted: true,\n sendFormCallback: sendForm,\n fullScreen: firstStep.fullScreen ? true : false,\n lastStep,\n numberOfScreens,\n formTheme: 'inverted',\n formType: 'layer',\n screenIndex: firstStep.screenIndex,\n step: firstStep,\n steps,\n stepsHistory,\n thankYouComponent: ,\n };\n };\n\n const getFormDataWithCarline = async () => {\n const carlineCode = faContent?.carlines[0];\n const carlines = await getCarlines();\n const carlineFromFaContent = carlines.find((carline) => carline.code === Number(carlineCode));\n\n return {\n ...NuevoFormData,\n fields: {\n ...NuevoFormData.fields,\n formFields: {\n ...NuevoFormData.fields.formFields,\n COD_INTEREST_CARLINE: carlineFromFaContent?.code,\n DESC_INTEREST_CARLINE: carlineFromFaContent?.title,\n },\n },\n };\n };\n\n const sendForm = (): Promise => {\n const { formData, dealersInfo }: OneFormState = store.getState();\n\n const { fields, headers } = formData;\n\n return new Promise(async (resolve, reject) => {\n const { tc, today, url, device } = getParamsForm();\n\n const data = {\n ...formatHeaders(headers),\n 'headers[DESC_VN_VO]': 'VN',\n 'headers[DESC_DEVICETYPE]': device,\n 'headers[DESC_URLORIGIN]': url,\n 'headers[FECHA_INSERTION_DATE]': today,\n 'headers[TC]': tc,\n 'headers[COD_FORM_ID]': `vw-oneform-${fields.formName}`,\n\n 'fields[DESC_NAME]': fields.name,\n 'fields[DESC_SURNAME_1]': fields.surname,\n 'fields[DESC_SURNAME_2]': fields.secondSurname,\n 'fields[DESC_EMAIL_ADDRESS]': removeWhiteSpace(fields.email),\n 'fields[DESC_FORM_VERSION]': `vw-oneform-${fields.formName}-${process.env.VERSION}`,\n 'fields[COD_INTEREST_CARLINE]': getCodInterestCarline(dealersInfo, fields.carlineCode),\n 'fields[DESC_INTEREST_CARLINE]': getDescInterestCarline(dealersInfo, fields.modelo),\n ...formatFields(fields.formFields),\n\n 'fields[DESC_LSSI]': fields.lssi,\n 'fields[DESC_LOPD_GDPR_PERFILADO]': fields.tmk,\n ...(await getMatchData(formData, dealersInfo, faContent)),\n };\n\n const dataStringified = JSON.stringify(data);\n const dataParsed = JSON.parse(dataStringified);\n\n const formDataInfo = formDataBuilder(dataParsed);\n\n const MOLECULAR_URL = getMolecularUrl();\n\n const response: AxiosResponse = await Axios.post(\n `${MOLECULAR_URL}/request-dps-send.php`,\n formDataInfo\n );\n\n if (response && response.data && response.data.content && response.data.content.code === '200') {\n dispatch({ type: 'SET_FORM_RESPONSE', payload: response.data });\n resolve(true);\n } else {\n resolve(false);\n }\n });\n };\n\n const getFormDataAndInfo = async () => {\n let formData = { ...NuevoFormData };\n let formInfo = getFormInfo(steps);\n\n if (faContent?.match) {\n let match = faContent.match;\n const carlines = await getCarlines();\n const carline = findCarline(carlines, match.carlineCode);\n dispatch({ type: 'SET_SELECTED_CARLINE', payload: carline });\n dispatch({ type: 'SET_CARLINES', payload: carlines });\n dispatch({ type: 'SET_OFERTA', payload: match });\n\n return { formData, formInfo };\n } else if (faContent?.carlines && faContent?.carlines?.length > 0) {\n formData = await getFormDataWithCarline();\n const newSteps = removeStep(steps, 'Modelo');\n const finalSteps = resetStepsScreenIndex(newSteps);\n formInfo = getFormInfo(finalSteps);\n } else {\n const carlines = await getCarlines();\n dispatch({ type: 'SET_CARLINES', payload: carlines });\n }\n\n return { formData, formInfo };\n };\n\n useEffect(() => {\n getFormDataAndInfo().then((response) => {\n const { formData, formInfo } = response;\n initializeForm(formInfo, formData);\n });\n }, []);\n\n return ;\n}\n","function isDynamicTokenSubtree(subtree) {\n return !Array.isArray(subtree) && typeof subtree !== 'string';\n}\nexport function getDynamicTokens(tokens, path) {\n return Object.keys(tokens).reduce((result, key) => {\n const newPath = path ? `${path}.${key}` : key;\n const currentToken = tokens[key];\n if (Array.isArray(currentToken)) {\n currentToken.forEach((dynamic) => {\n result[dynamic.breakpoint] = result[dynamic.breakpoint] || {};\n result[dynamic.breakpoint] = Object.assign(Object.assign({}, result[dynamic.breakpoint]), { [newPath]: dynamic.value });\n });\n return result;\n }\n if (isDynamicTokenSubtree(currentToken)) {\n const subtreeResults = getDynamicTokens(currentToken, newPath);\n Object.keys(subtreeResults).forEach((breakpoint) => {\n result[breakpoint] = Object.assign(Object.assign({}, (result[breakpoint] || {})), subtreeResults[breakpoint]);\n });\n return result;\n }\n return result;\n }, {});\n}\n","import * as React from 'react';\nimport { normalize } from 'styled-normalize';\nimport { createGlobalStyle } from 'styled-components';\nimport { styled, css } from '../theme-provider';\nimport { getMediaQueryVars } from '../theme-provider/get-media-query-vars';\nconst GlobalStyle = createGlobalStyle `${normalize};b,strong{font-weight:bold;}`;\nexport const _fontFamilyStyles = css `--font-family-head:vw-head,Helvetica,Arial,sans-serif;--font-family-text:vw-text,Helvetica,Arial,sans-serif;:lang(ko),:lang(zh),:lang(zh-tw),:lang(ja),:lang(ar){font-style:normal;}:lang(ko){--font-family-head:vw-head,Apple SD Gothic Neo,BonGothic,\\uB9D1\\uC740 \\uACE0\\uB515,Malgun Gothic,\\uAD74\\uB9BC,Gulim,\\uB3CB\\uC6C0,Dotum,Helvetica Neue,Helvetica,Arial,sans-serif;--font-family-text:vw-text,Apple SD Gothic Neo,BonGothic,\\uB9D1\\uC740 \\uACE0\\uB515,Malgun Gothic,\\uAD74\\uB9BC,Gulim,\\uB3CB\\uC6C0,Dotum,Helvetica Neue,Helvetica,Arial,sans-serif;word-break:keep-all;hyphens:auto;}:lang(zh){--font-family-head:vw-head,\\u534E\\u6587\\u7EC6\\u9ED1,STXihei,PingFang TC,\\u5FAE\\u8F6F\\u96C5\\u9ED1\\u4F53,Microsoft YaHei New,\\u5FAE\\u8F6F\\u96C5\\u9ED1,Microsoft Yahei,\\u5B8B\\u4F53,SimSun,Helvetica Neue,Helvetica,Arial,sans-serif;--font-family-text:vw-text,\\u534E\\u6587\\u7EC6\\u9ED1,STXihei,PingFang TC,\\u5FAE\\u8F6F\\u96C5\\u9ED1\\u4F53,Microsoft YaHei New,\\u5FAE\\u8F6F\\u96C5\\u9ED1,Microsoft Yahei,\\u5B8B\\u4F53,SimSun,Helvetica Neue,Helvetica,Arial,sans-serif;}:lang(zh-tw){--font-family-head:vw-head,Helvetica Neue,Helvetica,Arial,sans-serif;--font-family-text:vw-text,Helvetica Neue,Helvetica,Arial,sans-serif;}:lang(ja){--font-family-head:vw-head,\\u30D2\\u30E9\\u30AD\\u3099\\u30CE\\u89D2\\u30B3\\u3099 Pro W3,Hiragino Kaku Gothic Pro,Osaka,\\u30E1\\u30A4\\u30EA\\u30AA,Meiryo,MS P\\u30B3\\u3099\\u30B7\\u30C3\\u30AF,MS PGothic,Helvetica Neue,Helvetica,Arial,sans-serif;--font-family-text:vw-text,\\u30D2\\u30E9\\u30AD\\u3099\\u30CE\\u89D2\\u30B3\\u3099 Pro W3,Hiragino Kaku Gothic Pro,Osaka,\\u30E1\\u30A4\\u30EA\\u30AA,Meiryo,MS P\\u30B3\\u3099\\u30B7\\u30C3\\u30AF,MS PGothic,Helvetica Neue,Helvetica,Arial,sans-serif;}:lang(vi){--font-family-head:roboto-vi,Helvetica Neue,Helvetica,Arial,sans-serif;--font-family-text:roboto-vi,Helvetica Neue,Helvetica,Arial,sans-serif;}:lang(ar){--font-family-head:vw-head,vw-head-ar,Helvetica Neue,Helvetica,Arial,sans-serif;--font-family-text:vw-text,vw-text-ar,Helvetica Neue,Helvetica,Arial,sans-serif;}font-family:var(--font-family-text);`;\nexport const StyledIntegratorRoot = styled.div.withConfig({ displayName: \"StyledIntegratorRoot\", componentId: \"sc-7fx0kf\" }) `${_fontFamilyStyles} -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;*{box-sizing:border-box;}${getMediaQueryVars()};`;\nexport class IntegratorRoot extends React.Component {\n render() {\n const { language } = this.props;\n return (React.createElement(StyledIntegratorRoot, { lang: language },\n React.createElement(GlobalStyle, null),\n this.props.children));\n }\n}\n","import { compareBreakpoints } from '../helpers/breakpoint';\nimport { getDynamicTokens } from './dynamic-tokens';\nimport { createCSSVarName } from './create-css-var-name';\nimport { designTokens } from './example-design-tokens';\nexport function getMediaQueryVars(optionsOverride) {\n const optionsTokens = optionsOverride && optionsOverride.tokens;\n const dynamicTokens = getDynamicTokens(optionsTokens || designTokens);\n return Object.keys(dynamicTokens)\n .sort(compareBreakpoints)\n .reduce((result, breakpoint) => {\n const styles = Object.keys(dynamicTokens[breakpoint]).reduce((cssVars, path) => `\n\t\t\t\t${cssVars}\n\t\t\t\t${createCSSVarName(path)}: ${dynamicTokens[breakpoint][path]};\n\t\t\t`, '');\n return breakpoint === '0'\n ? `${styles}\n\t\t\t\t\t${result}`\n : `${result}\n\t\t\t\t\t@media (min-width: ${breakpoint}) {\n\t\t\t\t\t\t${styles}\n\t\t\t\t\t}`;\n }, '');\n}\n","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _slider = _interopRequireDefault(require(\"./slider\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar _default = _slider[\"default\"];\nexports[\"default\"] = _default;","import * as React from 'react';\nimport { Text, TextAppearance, TextTag } from '../text';\nimport { styled, ThemeProvider } from '../theme-provider';\nimport { InputAppearance, getNotificationColor } from '../helpers/input';\nconst StyledNotificationMessage = styled.div.withConfig({ displayName: \"StyledNotificationMessage\", componentId: \"sc-197whcx\" }) `display:flex;justify-content:center;align-items:center;background-color:${getNotificationColor};color:${({ theme }) => theme.interaction.recipe100.default};margin:${({ theme }) => theme.size.static100} 0 0;padding:0 ${({ theme }) => theme.size.static100};border-radius:${({ theme }) => theme.size.static100};min-height:${({ theme }) => theme.size.static350};min-width:${({ theme }) => theme.size.static350};`;\nexport const NotificationMessage = ({ appearance = InputAppearance.Default, children }) => (React.createElement(\"div\", { \"aria-live\": appearance === InputAppearance.Error ? 'assertive' : 'polite', \"aria-relevant\": \"additions text\" }, React.Children.count(children) ? (React.createElement(ThemeProvider, { theme: \"inverted\" },\n React.createElement(StyledNotificationMessage, { appearance: appearance },\n React.createElement(Text, { appearance: TextAppearance.copy0100, tag: TextTag.p }, children)))) : undefined));\n","import parsePhoneNumber_ from './parsePhoneNumber_'\r\n\r\nexport default function parsePhoneNumber() {\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\treturn parsePhoneNumber_(text, options, metadata)\r\n}\r\n\r\nexport function normalizeArguments(args)\r\n{\r\n\tconst [arg_1, arg_2, arg_3, arg_4] = Array.prototype.slice.call(args)\r\n\r\n\tlet text\r\n\tlet options\r\n\tlet metadata\r\n\r\n\t// If the phone number is passed as a string.\r\n\t// `parsePhoneNumber('88005553535', ...)`.\r\n\tif (typeof arg_1 === 'string') {\r\n\t\ttext = arg_1\r\n\t}\r\n\telse throw new TypeError('A text for parsing must be a string.')\r\n\r\n\t// If \"default country\" argument is being passed then move it to `options`.\r\n\t// `parsePhoneNumber('88005553535', 'RU', [options], metadata)`.\r\n\tif (!arg_2 || typeof arg_2 === 'string')\r\n\t{\r\n\t\tif (arg_4) {\r\n\t\t\toptions = arg_3\r\n\t\t\tmetadata = arg_4\r\n\t\t} else {\r\n\t\t\toptions = undefined\r\n\t\t\tmetadata = arg_3\r\n\t\t}\r\n\r\n\t\tif (arg_2) {\r\n\t\t\toptions = { defaultCountry: arg_2, ...options }\r\n\t\t}\r\n\t}\r\n\t// `defaultCountry` is not passed.\r\n\t// Example: `parsePhoneNumber('+78005553535', [options], metadata)`.\r\n\telse if (isObject(arg_2))\r\n\t{\r\n\t\tif (arg_3) {\r\n\t\t\toptions = arg_2\r\n\t\t\tmetadata = arg_3\r\n\t\t} else {\r\n\t\t\tmetadata = arg_2\r\n\t\t}\r\n\t}\r\n\telse throw new Error(`Invalid second argument: ${arg_2}`)\r\n\r\n\treturn {\r\n\t\ttext,\r\n\t\toptions,\r\n\t\tmetadata\r\n\t}\r\n}\r\n\r\n// Otherwise istanbul would show this as \"branch not covered\".\r\n/* istanbul ignore next */\r\nconst isObject = _ => typeof _ === 'object'","import Metadata from '../metadata'\r\nimport matchesEntirely from './matchesEntirely'\r\n\r\nconst NON_FIXED_LINE_PHONE_TYPES = [\r\n\t'MOBILE',\r\n\t'PREMIUM_RATE',\r\n\t'TOLL_FREE',\r\n\t'SHARED_COST',\r\n\t'VOIP',\r\n\t'PERSONAL_NUMBER',\r\n\t'PAGER',\r\n\t'UAN',\r\n\t'VOICEMAIL'\r\n]\r\n\r\n// Finds out national phone number type (fixed line, mobile, etc)\r\nexport default function getNumberType(input, options, metadata)\r\n{\r\n\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\toptions = options || {}\r\n\r\n\t// When `parse()` returned `{}`\r\n\t// meaning that the phone number is not a valid one.\r\n\tif (!input.country) {\r\n\t\treturn\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\tmetadata.selectNumberingPlan(input.country, input.countryCallingCode)\r\n\r\n\tconst nationalNumber = options.v2 ? input.nationalNumber : input.phone\r\n\r\n\t// The following is copy-pasted from the original function:\r\n\t// https://github.com/googlei18n/libphonenumber/blob/3ea547d4fbaa2d0b67588904dfa5d3f2557c27ff/javascript/i18n/phonenumbers/phonenumberutil.js#L2835\r\n\r\n\t// Is this national number even valid for this country\r\n\tif (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())) {\r\n\t\treturn\r\n\t}\r\n\r\n\t// Is it fixed line number\r\n\tif (isNumberTypeEqualTo(nationalNumber, 'FIXED_LINE', metadata)) {\r\n\t\t// Because duplicate regular expressions are removed\r\n\t\t// to reduce metadata size, if \"mobile\" pattern is \"\"\r\n\t\t// then it means it was removed due to being a duplicate of the fixed-line pattern.\r\n\t\t//\r\n\t\tif (metadata.type('MOBILE') && metadata.type('MOBILE').pattern() === '') {\r\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\r\n\t\t}\r\n\r\n\t\t// v1 metadata.\r\n\t\t// Legacy.\r\n\t\t// Deprecated.\r\n\t\tif (!metadata.type('MOBILE')) {\r\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\r\n\t\t}\r\n\r\n\t\t// Check if the number happens to qualify as both fixed line and mobile.\r\n\t\t// (no such country in the minimal metadata set)\r\n\t\t/* istanbul ignore if */\r\n\t\tif (isNumberTypeEqualTo(nationalNumber, 'MOBILE', metadata)) {\r\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\r\n\t\t}\r\n\r\n\t\treturn 'FIXED_LINE'\r\n\t}\r\n\r\n\tfor (const type of NON_FIXED_LINE_PHONE_TYPES) {\r\n\t\tif (isNumberTypeEqualTo(nationalNumber, type, metadata)) {\r\n\t\t\treturn type\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function isNumberTypeEqualTo(nationalNumber, type, metadata) {\r\n\ttype = metadata.type(type)\r\n\tif (!type || !type.pattern()) {\r\n\t\treturn false\r\n\t}\r\n\t// Check if any possible number lengths are present;\r\n\t// if so, we use them to avoid checking\r\n\t// the validation pattern if they don't match.\r\n\t// If they are absent, this means they match\r\n\t// the general description, which we have\r\n\t// already checked before a specific number type.\r\n\tif (type.possibleLengths() &&\r\n\t\ttype.possibleLengths().indexOf(nationalNumber.length) < 0) {\r\n\t\treturn false\r\n\t}\r\n\treturn matchesEntirely(nationalNumber, type.pattern())\r\n}","import applyInternationalSeparatorStyle from './applyInternationalSeparatorStyle'\r\n\r\n// This was originally set to $1 but there are some countries for which the\r\n// first group is not used in the national pattern (e.g. Argentina) so the $1\r\n// group does not match correctly. Therefore, we use `\\d`, so that the first\r\n// group actually used in the pattern will be matched.\r\nexport const FIRST_GROUP_PATTERN = /(\\$\\d)/\r\n\r\nexport default function formatNationalNumberUsingFormat(\r\n\tnumber,\r\n\tformat,\r\n\t{\r\n\t\tuseInternationalFormat,\r\n\t\twithNationalPrefix,\r\n\t\tcarrierCode,\r\n\t\tmetadata\r\n\t}\r\n) {\r\n\tconst formattedNumber = number.replace(\r\n\t\tnew RegExp(format.pattern()),\r\n\t\tuseInternationalFormat\r\n\t\t\t? format.internationalFormat()\r\n\t\t\t: (\r\n\t\t\t\t// This library doesn't use `domestic_carrier_code_formatting_rule`,\r\n\t\t\t\t// because that one is only used when formatting phone numbers\r\n\t\t\t\t// for dialing from a mobile phone, and this is not a dialing library.\r\n\t\t\t\t// carrierCode && format.domesticCarrierCodeFormattingRule()\r\n\t\t\t\t// \t// First, replace the $CC in the formatting rule with the desired carrier code.\r\n\t\t\t\t// \t// Then, replace the $FG in the formatting rule with the first group\r\n\t\t\t\t// \t// and the carrier code combined in the appropriate way.\r\n\t\t\t\t// \t? format.format().replace(FIRST_GROUP_PATTERN, format.domesticCarrierCodeFormattingRule().replace('$CC', carrierCode))\r\n\t\t\t\t// \t: (\r\n\t\t\t\t// \t\twithNationalPrefix && format.nationalPrefixFormattingRule()\r\n\t\t\t\t// \t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\r\n\t\t\t\t// \t\t\t: format.format()\r\n\t\t\t\t// \t)\r\n\t\t\t\twithNationalPrefix && format.nationalPrefixFormattingRule()\r\n\t\t\t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\r\n\t\t\t\t\t: format.format()\r\n\t\t\t)\r\n\t)\r\n\tif (useInternationalFormat) {\r\n\t\treturn applyInternationalSeparatorStyle(formattedNumber)\r\n\t}\r\n\treturn formattedNumber\r\n}","\"use strict\";\n\nmodule.exports = require('./Autosuggest')[\"default\"];","import createExtensionPattern from './createExtensionPattern'\r\n\r\n// Regexp of all known extension prefixes used by different regions followed by\r\n// 1 or more valid digits, for use when parsing.\r\nconst EXTN_PATTERN = new RegExp('(?:' + createExtensionPattern() + ')$', 'i')\r\n\r\n// Strips any extension (as in, the part of the number dialled after the call is\r\n// connected, usually indicated with extn, ext, x or similar) from the end of\r\n// the number, and returns it.\r\nexport default function extractExtension(number) {\r\n\tconst start = number.search(EXTN_PATTERN)\r\n\tif (start < 0) {\r\n\t\treturn {}\r\n\t}\r\n\t// If we find a potential extension, and the number preceding this is a viable\r\n\t// number, we assume it is an extension.\r\n\tconst numberWithoutExtension = number.slice(0, start)\r\n\tconst matches = number.match(EXTN_PATTERN)\r\n\tlet i = 1\r\n\twhile (i < matches.length) {\r\n\t\tif (matches[i]) {\r\n\t\t\treturn {\r\n\t\t\t\tnumber: numberWithoutExtension,\r\n\t\t\t\text: matches[i]\r\n\t\t\t}\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n}","import { parseDigit } from './helpers/parseDigits'\r\n\r\n/**\r\n * Parses phone number characters from a string.\r\n * Drops all punctuation leaving only digits and the leading `+` sign (if any).\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * // Outputs '8800555'.\r\n * parseIncompletePhoneNumber('8 (800) 555')\r\n * // Outputs '+7800555'.\r\n * parseIncompletePhoneNumber('+7 800 555')\r\n * ```\r\n */\r\nexport default function parseIncompletePhoneNumber(string) {\r\n\tlet result = ''\r\n\t// Using `.split('')` here instead of normal `for ... of`\r\n\t// because the importing application doesn't neccessarily include an ES6 polyfill.\r\n\t// The `.split('')` approach discards \"exotic\" UTF-8 characters\r\n\t// (the ones consisting of four bytes) but digits\r\n\t// (including non-European ones) don't fall into that range\r\n\t// so such \"exotic\" characters would be discarded anyway.\r\n\tfor (const character of string.split('')) {\r\n\t\tresult += parsePhoneNumberCharacter(character, result) || ''\r\n\t}\r\n\treturn result\r\n}\r\n\r\n/**\r\n * Parses next character while parsing phone number digits (including a `+`)\r\n * from text: discards everything except `+` and digits, and `+` is only allowed\r\n * at the start of a phone number.\r\n * For example, is used in `react-phone-number-input` where it uses\r\n * [`input-format`](https://gitlab.com/catamphetamine/input-format).\r\n * @param {string} character - Yet another character from raw input string.\r\n * @param {string?} prevParsedCharacters - Previous parsed characters.\r\n * @param {object} meta - Optional custom use-case-specific metadata.\r\n * @return {string?} The parsed character.\r\n */\r\nexport function parsePhoneNumberCharacter(character, prevParsedCharacters) {\r\n\t// Only allow a leading `+`.\r\n\tif (character === '+') {\r\n\t\t// If this `+` is not the first parsed character\r\n\t\t// then discard it.\r\n\t\tif (prevParsedCharacters) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\treturn '+'\r\n\t}\r\n\t// Allow digits.\r\n\treturn parseDigit(character)\r\n}","// This is a port of Google Android `libphonenumber`'s\r\n// `phonenumberutil.js` of December 31th, 2018.\r\n//\r\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\r\n\r\nimport {\r\n\tVALID_DIGITS,\r\n\tPLUS_CHARS,\r\n\tMIN_LENGTH_FOR_NSN,\r\n\tMAX_LENGTH_FOR_NSN\r\n} from './constants'\r\n\r\nimport ParseError from './ParseError'\r\nimport Metadata from './metadata'\r\nimport isViablePhoneNumber, { isViablePhoneNumberStart } from './helpers/isViablePhoneNumber'\r\nimport extractExtension from './helpers/extension/extractExtension'\r\nimport parseIncompletePhoneNumber from './parseIncompletePhoneNumber'\r\nimport getCountryCallingCode from './getCountryCallingCode'\r\nimport { isPossibleNumber } from './isPossibleNumber_'\r\nimport { parseRFC3966 } from './helpers/RFC3966'\r\nimport PhoneNumber from './PhoneNumber'\r\nimport matchesEntirely from './helpers/matchesEntirely'\r\nimport extractCountryCallingCode from './helpers/extractCountryCallingCode'\r\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign'\r\nimport extractNationalNumber from './helpers/extractNationalNumber'\r\nimport stripIddPrefix from './helpers/stripIddPrefix'\r\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode'\r\n\r\n// We don't allow input strings for parsing to be longer than 250 chars.\r\n// This prevents malicious input from consuming CPU.\r\nconst MAX_INPUT_STRING_LENGTH = 250\r\n\r\n// This consists of the plus symbol, digits, and arabic-indic digits.\r\nconst PHONE_NUMBER_START_PATTERN = new RegExp('[' + PLUS_CHARS + VALID_DIGITS + ']')\r\n\r\n// Regular expression of trailing characters that we want to remove.\r\n// A trailing `#` is sometimes used when writing phone numbers with extensions in US.\r\n// Example: \"+1 (645) 123 1234-910#\" number has extension \"910\".\r\nconst AFTER_PHONE_NUMBER_END_PATTERN = new RegExp('[^' + VALID_DIGITS + '#' + ']+$')\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\n// Examples:\r\n//\r\n// ```js\r\n// parse('8 (800) 555-35-35', 'RU')\r\n// parse('8 (800) 555-35-35', 'RU', metadata)\r\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } })\r\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata)\r\n// parse('+7 800 555 35 35')\r\n// parse('+7 800 555 35 35', metadata)\r\n// ```\r\n//\r\nexport default function parse(text, options, metadata) {\r\n\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\toptions = options || {}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\t// Validate `defaultCountry`.\r\n\tif (options.defaultCountry && !metadata.hasCountry(options.defaultCountry)) {\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('INVALID_COUNTRY')\r\n\t\t}\r\n\t\tthrow new Error(`Unknown country: ${options.defaultCountry}`)\r\n\t}\r\n\r\n\t// Parse the phone number.\r\n\tconst { number: formattedPhoneNumber, ext, error } = parseInput(text, options.v2, options.extract)\r\n\r\n\t// If the phone number is not viable then return nothing.\r\n\tif (!formattedPhoneNumber) {\r\n\t\tif (options.v2) {\r\n\t\t\tif (error === 'TOO_SHORT') {\r\n\t\t\t\tthrow new ParseError('TOO_SHORT')\r\n\t\t\t}\r\n\t\t\tthrow new ParseError('NOT_A_NUMBER')\r\n\t\t}\r\n\t\treturn {}\r\n\t}\r\n\r\n\tconst {\r\n\t\tcountry,\r\n\t\tnationalNumber,\r\n\t\tcountryCallingCode,\r\n\t\tcarrierCode\r\n\t} = parsePhoneNumber(\r\n\t\tformattedPhoneNumber,\r\n\t\toptions.defaultCountry,\r\n\t\toptions.defaultCallingCode,\r\n\t\tmetadata\r\n\t)\r\n\r\n\tif (!metadata.hasSelectedNumberingPlan()) {\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('INVALID_COUNTRY')\r\n\t\t}\r\n\t\treturn {}\r\n\t}\r\n\r\n\t// Validate national (significant) number length.\r\n\tif (!nationalNumber || nationalNumber.length < MIN_LENGTH_FOR_NSN) {\r\n\t\t// Won't throw here because the regexp already demands length > 1.\r\n\t\t/* istanbul ignore if */\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('TOO_SHORT')\r\n\t\t}\r\n\t\t// Google's demo just throws an error in this case.\r\n\t\treturn {}\r\n\t}\r\n\r\n\t// Validate national (significant) number length.\r\n\t//\r\n\t// A sidenote:\r\n\t//\r\n\t// They say that sometimes national (significant) numbers\r\n\t// can be longer than `MAX_LENGTH_FOR_NSN` (e.g. in Germany).\r\n\t// https://github.com/googlei18n/libphonenumber/blob/7e1748645552da39c4e1ba731e47969d97bdb539/resources/phonenumber.proto#L36\r\n\t// Such numbers will just be discarded.\r\n\t//\r\n\tif (nationalNumber.length > MAX_LENGTH_FOR_NSN) {\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('TOO_LONG')\r\n\t\t}\r\n\t\t// Google's demo just throws an error in this case.\r\n\t\treturn {}\r\n\t}\r\n\r\n\tif (options.v2) {\r\n\t\tconst phoneNumber = new PhoneNumber(\r\n\t\t\tcountryCallingCode,\r\n\t\t\tnationalNumber,\r\n\t\t\tmetadata.metadata\r\n\t\t)\r\n\t\tif (country) {\r\n\t\t\tphoneNumber.country = country\r\n\t\t}\r\n\t\tif (carrierCode) {\r\n\t\t\tphoneNumber.carrierCode = carrierCode\r\n\t\t}\r\n\t\tif (ext) {\r\n\t\t\tphoneNumber.ext = ext\r\n\t\t}\r\n\t\treturn phoneNumber\r\n\t}\r\n\r\n\t// Check if national phone number pattern matches the number.\r\n\t// National number pattern is different for each country,\r\n\t// even for those ones which are part of the \"NANPA\" group.\r\n\tconst valid = (options.extended ? metadata.hasSelectedNumberingPlan() : country) ?\r\n\t\tmatchesEntirely(nationalNumber, metadata.nationalNumberPattern()) :\r\n\t\tfalse\r\n\r\n\tif (!options.extended) {\r\n\t\treturn valid ? result(country, nationalNumber, ext) : {}\r\n\t}\r\n\r\n\t// isInternational: countryCallingCode !== undefined\r\n\r\n\treturn {\r\n\t\tcountry,\r\n\t\tcountryCallingCode,\r\n\t\tcarrierCode,\r\n\t\tvalid,\r\n\t\tpossible: valid ? true : (\r\n\t\t\toptions.extended === true &&\r\n\t\t\tmetadata.possibleLengths() &&\r\n\t\t\tisPossibleNumber(nationalNumber, metadata) ? true : false\r\n\t\t),\r\n\t\tphone: nationalNumber,\r\n\t\text\r\n\t}\r\n}\r\n\r\n/**\r\n * Extracts a formatted phone number from text.\r\n * Doesn't guarantee that the extracted phone number\r\n * is a valid phone number (for example, doesn't validate its length).\r\n * @param {string} text\r\n * @param {boolean} [extract] — If `false`, then will parse the entire `text` as a phone number.\r\n * @param {boolean} [throwOnError] — By default, it won't throw if the text is too long.\r\n * @return {string}\r\n * @example\r\n * // Returns \"(213) 373-4253\".\r\n * extractFormattedPhoneNumber(\"Call (213) 373-4253 for assistance.\")\r\n */\r\nfunction extractFormattedPhoneNumber(text, extract, throwOnError) {\r\n\tif (!text) {\r\n\t\treturn\r\n\t}\r\n\tif (text.length > MAX_INPUT_STRING_LENGTH) {\r\n\t\tif (throwOnError) {\r\n\t\t\tthrow new ParseError('TOO_LONG')\r\n\t\t}\r\n\t\treturn\r\n\t}\r\n\tif (extract === false) {\r\n\t\treturn text\r\n\t}\r\n\t// Attempt to extract a possible number from the string passed in\r\n\tconst startsAt = text.search(PHONE_NUMBER_START_PATTERN)\r\n\tif (startsAt < 0) {\r\n\t\treturn\r\n\t}\r\n\treturn text\r\n\t\t// Trim everything to the left of the phone number\r\n\t\t.slice(startsAt)\r\n\t\t// Remove trailing non-numerical characters\r\n\t\t.replace(AFTER_PHONE_NUMBER_END_PATTERN, '')\r\n}\r\n\r\n/**\r\n * @param {string} text - Input.\r\n * @param {boolean} v2 - Legacy API functions don't pass `v2: true` flag.\r\n * @param {boolean} [extract] - Whether to extract a phone number from `text`, or attempt to parse the entire text as a phone number.\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\r\nfunction parseInput(text, v2, extract) {\r\n\t// Parse RFC 3966 phone number URI.\r\n\tif (text && text.indexOf('tel:') === 0) {\r\n\t\treturn parseRFC3966(text)\r\n\t}\r\n\tlet number = extractFormattedPhoneNumber(text, extract, v2)\r\n\t// If the phone number is not viable, then abort.\r\n\tif (!number) {\r\n\t\treturn {}\r\n\t}\r\n\tif (!isViablePhoneNumber(number)) {\r\n\t\tif (isViablePhoneNumberStart(number)) {\r\n\t\t\treturn { error: 'TOO_SHORT' }\r\n\t\t}\r\n\t\treturn {}\r\n\t}\r\n\t// Attempt to parse extension first, since it doesn't require region-specific\r\n\t// data and we want to have the non-normalised number here.\r\n\tconst withExtensionStripped = extractExtension(number)\r\n\tif (withExtensionStripped.ext) {\r\n\t\treturn withExtensionStripped\r\n\t}\r\n\treturn { number }\r\n}\r\n\r\n/**\r\n * Creates `parse()` result object.\r\n */\r\nfunction result(country, nationalNumber, ext) {\r\n\tconst result = {\r\n\t\tcountry,\r\n\t\tphone: nationalNumber\r\n\t}\r\n\tif (ext) {\r\n\t\tresult.ext = ext\r\n\t}\r\n\treturn result\r\n}\r\n\r\n/**\r\n * Parses a viable phone number.\r\n * @param {string} formattedPhoneNumber — Example: \"(213) 373-4253\".\r\n * @param {string} [defaultCountry]\r\n * @param {string} [defaultCallingCode]\r\n * @param {Metadata} metadata\r\n * @return {object} Returns `{ country: string?, countryCallingCode: string?, nationalNumber: string? }`.\r\n */\r\nfunction parsePhoneNumber(\r\n\tformattedPhoneNumber,\r\n\tdefaultCountry,\r\n\tdefaultCallingCode,\r\n\tmetadata\r\n) {\r\n\t// Extract calling code from phone number.\r\n\tlet { countryCallingCode, number } = extractCountryCallingCode(\r\n\t\tparseIncompletePhoneNumber(formattedPhoneNumber),\r\n\t\tdefaultCountry,\r\n\t\tdefaultCallingCode,\r\n\t\tmetadata.metadata\r\n\t)\r\n\r\n\t// Choose a country by `countryCallingCode`.\r\n\tlet country\r\n\tif (countryCallingCode) {\r\n\t\tmetadata.selectNumberingPlan(countryCallingCode)\r\n\t}\r\n\t// If `formattedPhoneNumber` is in \"national\" format\r\n\t// then `number` is defined and `countryCallingCode` isn't.\r\n\telse if (number && (defaultCountry || defaultCallingCode)) {\r\n\t\tmetadata.selectNumberingPlan(defaultCountry, defaultCallingCode)\r\n\t\tif (defaultCountry) {\r\n\t\t\tcountry = defaultCountry\r\n\t\t} else {\r\n\t\t\t/* istanbul ignore if */\r\n\t\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\t\tif (metadata.isNonGeographicCallingCode(defaultCallingCode)) {\r\n\t\t\t\t\tcountry = '001'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tcountryCallingCode = defaultCallingCode || getCountryCallingCode(defaultCountry, metadata.metadata)\r\n\t}\r\n\telse return {}\r\n\r\n\tif (!number) {\r\n\t\treturn { countryCallingCode }\r\n\t}\r\n\r\n\tconst {\r\n\t\tnationalNumber,\r\n\t\tcarrierCode\r\n\t} = extractNationalNumber(\r\n\t\tparseIncompletePhoneNumber(number),\r\n\t\tmetadata\r\n\t)\r\n\r\n\t// Sometimes there are several countries\r\n\t// corresponding to the same country phone code\r\n\t// (e.g. NANPA countries all having `1` country phone code).\r\n\t// Therefore, to reliably determine the exact country,\r\n\t// national (significant) number should have been parsed first.\r\n\t//\r\n\t// When `metadata.json` is generated, all \"ambiguous\" country phone codes\r\n\t// get their countries populated with the full set of\r\n\t// \"phone number type\" regular expressions.\r\n\t//\r\n\tconst exactCountry = getCountryByCallingCode(countryCallingCode, nationalNumber, metadata)\r\n\tif (exactCountry) {\r\n\t\tcountry = exactCountry\r\n\t\t/* istanbul ignore if */\r\n\t\tif (exactCountry === '001') {\r\n\t\t\t// Can't happen with `USE_NON_GEOGRAPHIC_COUNTRY_CODE` being `false`.\r\n\t\t\t// If `USE_NON_GEOGRAPHIC_COUNTRY_CODE` is set to `true` for some reason,\r\n\t\t\t// then remove the \"istanbul ignore if\".\r\n\t\t} else {\r\n\t\t\tmetadata.country(country)\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\tcountry,\r\n\t\tcountryCallingCode,\r\n\t\tnationalNumber,\r\n\t\tcarrierCode\r\n\t}\r\n}","import parseNumber from './parse_'\r\n\r\nexport default function parsePhoneNumber(text, options, metadata) {\r\n\treturn parseNumber(text, { ...options, v2: true }, metadata)\r\n}","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\n\nvar UAParser = require('ua-parser-js/dist/ua-parser.min');\n\nvar UA = new UAParser();\nvar browser = UA.getBrowser();\nvar cpu = UA.getCPU();\nvar device = UA.getDevice();\nvar engine = UA.getEngine();\nvar os = UA.getOS();\nvar ua = UA.getUA();\n\nvar setDefaults = function setDefaults(p) {\n var d = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'none';\n return p ? p : d;\n};\nvar getNavigatorInstance = function getNavigatorInstance() {\n if (typeof window !== 'undefined') {\n if (window.navigator || navigator) {\n return window.navigator || navigator;\n }\n }\n\n return false;\n};\nvar isIOS13Check = function isIOS13Check(type) {\n var nav = getNavigatorInstance();\n return nav && nav.platform && (nav.platform.indexOf(type) !== -1 || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1 && !window.MSStream);\n};\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nvar DEVICE_TYPES = {\n MOBILE: 'mobile',\n TABLET: 'tablet',\n SMART_TV: 'smarttv',\n CONSOLE: 'console',\n WEARABLE: 'wearable',\n BROWSER: undefined\n};\nvar BROWSER_TYPES = {\n CHROME: 'Chrome',\n FIREFOX: \"Firefox\",\n OPERA: \"Opera\",\n YANDEX: \"Yandex\",\n SAFARI: \"Safari\",\n INTERNET_EXPLORER: \"Internet Explorer\",\n EDGE: \"Edge\",\n CHROMIUM: \"Chromium\",\n IE: 'IE',\n MOBILE_SAFARI: \"Mobile Safari\",\n EDGE_CHROMIUM: \"Edge Chromium\",\n MIUI: \"MIUI Browser\"\n};\nvar OS_TYPES = {\n IOS: 'iOS',\n ANDROID: \"Android\",\n WINDOWS_PHONE: \"Windows Phone\",\n WINDOWS: 'Windows',\n MAC_OS: 'Mac OS'\n};\nvar initialData = {\n isMobile: false,\n isTablet: false,\n isBrowser: false,\n isSmartTV: false,\n isConsole: false,\n isWearable: false\n};\nvar checkType = function checkType(type) {\n switch (type) {\n case DEVICE_TYPES.MOBILE:\n return {\n isMobile: true\n };\n\n case DEVICE_TYPES.TABLET:\n return {\n isTablet: true\n };\n\n case DEVICE_TYPES.SMART_TV:\n return {\n isSmartTV: true\n };\n\n case DEVICE_TYPES.CONSOLE:\n return {\n isConsole: true\n };\n\n case DEVICE_TYPES.WEARABLE:\n return {\n isWearable: true\n };\n\n case DEVICE_TYPES.BROWSER:\n return {\n isBrowser: true\n };\n\n default:\n return initialData;\n }\n};\nvar broPayload = function broPayload(isBrowser, browser, engine, os, ua) {\n return {\n isBrowser: isBrowser,\n browserMajorVersion: setDefaults(browser.major),\n browserFullVersion: setDefaults(browser.version),\n browserName: setDefaults(browser.name),\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar mobilePayload = function mobilePayload(type, device, os, ua) {\n return _objectSpread2({}, type, {\n vendor: setDefaults(device.vendor),\n model: setDefaults(device.model),\n os: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n ua: setDefaults(ua)\n });\n};\nvar stvPayload = function stvPayload(isSmartTV, engine, os, ua) {\n return {\n isSmartTV: isSmartTV,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar consolePayload = function consolePayload(isConsole, engine, os, ua) {\n return {\n isConsole: isConsole,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar wearPayload = function wearPayload(isWearable, engine, os, ua) {\n return {\n isWearable: isWearable,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\n\nvar type = checkType(device.type);\n\nfunction deviceDetect() {\n var isBrowser = type.isBrowser,\n isMobile = type.isMobile,\n isTablet = type.isTablet,\n isSmartTV = type.isSmartTV,\n isConsole = type.isConsole,\n isWearable = type.isWearable;\n\n if (isBrowser) {\n return broPayload(isBrowser, browser, engine, os, ua);\n }\n\n if (isSmartTV) {\n return stvPayload(isSmartTV, engine, os, ua);\n }\n\n if (isConsole) {\n return consolePayload(isConsole, engine, os, ua);\n }\n\n if (isMobile) {\n return mobilePayload(type, device, os, ua);\n }\n\n if (isTablet) {\n return mobilePayload(type, device, os, ua);\n }\n\n if (isWearable) {\n return wearPayload(isWearable, engine, os, ua);\n }\n}\n\nvar isMobileType = function isMobileType() {\n return device.type === DEVICE_TYPES.MOBILE;\n};\n\nvar isTabletType = function isTabletType() {\n return device.type === DEVICE_TYPES.TABLET;\n};\n\nvar isMobileAndTabletType = function isMobileAndTabletType() {\n switch (device.type) {\n case DEVICE_TYPES.MOBILE:\n case DEVICE_TYPES.TABLET:\n return true;\n\n default:\n return false;\n }\n};\n\nvar isEdgeChromiumType = function isEdgeChromiumType() {\n return typeof ua === 'string' && ua.indexOf('Edg/') !== -1;\n};\n\nvar isSmartTVType = function isSmartTVType() {\n return device.type === DEVICE_TYPES.SMART_TV;\n};\n\nvar isBrowserType = function isBrowserType() {\n return device.type === DEVICE_TYPES.BROWSER;\n};\n\nvar isWearableType = function isWearableType() {\n return device.type === DEVICE_TYPES.WEARABLE;\n};\n\nvar isConsoleType = function isConsoleType() {\n return device.type === DEVICE_TYPES.CONSOLE;\n};\n\nvar isAndroidType = function isAndroidType() {\n return os.name === OS_TYPES.ANDROID;\n};\n\nvar isWindowsType = function isWindowsType() {\n return os.name === OS_TYPES.WINDOWS;\n};\n\nvar isMacOsType = function isMacOsType() {\n return os.name === OS_TYPES.MAC_OS;\n};\n\nvar isWinPhoneType = function isWinPhoneType() {\n return os.name === OS_TYPES.WINDOWS_PHONE;\n};\n\nvar isIOSType = function isIOSType() {\n return os.name === OS_TYPES.IOS;\n};\n\nvar isChromeType = function isChromeType() {\n return browser.name === BROWSER_TYPES.CHROME;\n};\n\nvar isFirefoxType = function isFirefoxType() {\n return browser.name === BROWSER_TYPES.FIREFOX;\n};\n\nvar isChromiumType = function isChromiumType() {\n return browser.name === BROWSER_TYPES.CHROMIUM;\n};\n\nvar isEdgeType = function isEdgeType() {\n return browser.name === BROWSER_TYPES.EDGE;\n};\n\nvar isYandexType = function isYandexType() {\n return browser.name === BROWSER_TYPES.YANDEX;\n};\n\nvar isSafariType = function isSafariType() {\n return browser.name === BROWSER_TYPES.SAFARI || browser.name === BROWSER_TYPES.MOBILE_SAFARI;\n};\n\nvar isMobileSafariType = function isMobileSafariType() {\n return browser.name === BROWSER_TYPES.MOBILE_SAFARI;\n};\n\nvar isOperaType = function isOperaType() {\n return browser.name === BROWSER_TYPES.OPERA;\n};\n\nvar isIEType = function isIEType() {\n return browser.name === BROWSER_TYPES.INTERNET_EXPLORER || browser.name === BROWSER_TYPES.IE;\n};\n\nvar isMIUIType = function isMIUIType() {\n return browser.name === BROWSER_TYPES.MIUI;\n};\n\nvar isElectronType = function isElectronType() {\n var nav = getNavigatorInstance();\n var ua = nav && nav.userAgent.toLowerCase();\n return typeof ua === 'string' ? /electron/.test(ua) : false;\n};\n\nvar getIOS13 = function getIOS13() {\n var nav = getNavigatorInstance();\n return nav && (/iPad|iPhone|iPod/.test(nav.platform) || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1) && !window.MSStream;\n};\n\nvar getIPad13 = function getIPad13() {\n return isIOS13Check('iPad');\n};\n\nvar getIphone13 = function getIphone13() {\n return isIOS13Check('iPhone');\n};\n\nvar getIPod13 = function getIPod13() {\n return isIOS13Check('iPod');\n};\n\nvar getBrowserFullVersion = function getBrowserFullVersion() {\n return setDefaults(browser.version);\n};\n\nvar getBrowserVersion = function getBrowserVersion() {\n return setDefaults(browser.major);\n};\n\nvar getOsVersion = function getOsVersion() {\n return setDefaults(os.version);\n};\n\nvar getOsName = function getOsName() {\n return setDefaults(os.name);\n};\n\nvar getBrowserName = function getBrowserName() {\n return setDefaults(browser.name);\n};\n\nvar getMobileVendor = function getMobileVendor() {\n return setDefaults(device.vendor);\n};\n\nvar getMobileModel = function getMobileModel() {\n return setDefaults(device.model);\n};\n\nvar getEngineName = function getEngineName() {\n return setDefaults(engine.name);\n};\n\nvar getEngineVersion = function getEngineVersion() {\n return setDefaults(engine.version);\n};\n\nvar getUseragent = function getUseragent() {\n return setDefaults(ua);\n};\n\nvar getDeviceType = function getDeviceType() {\n return setDefaults(device.type, 'browser');\n};\n\nvar isSmartTV = isSmartTVType();\nvar isConsole = isConsoleType();\nvar isWearable = isWearableType();\nvar isMobileSafari = isMobileSafariType() || getIPad13();\nvar isChromium = isChromiumType();\nvar isMobile = isMobileAndTabletType() || getIPad13();\nvar isMobileOnly = isMobileType();\nvar isTablet = isTabletType() || getIPad13();\nvar isBrowser = isBrowserType();\nvar isAndroid = isAndroidType();\nvar isWinPhone = isWinPhoneType();\nvar isIOS = isIOSType() || getIPad13();\nvar isChrome = isChromeType();\nvar isFirefox = isFirefoxType();\nvar isSafari = isSafariType();\nvar isOpera = isOperaType();\nvar isIE = isIEType();\nvar osVersion = getOsVersion();\nvar osName = getOsName();\nvar fullBrowserVersion = getBrowserFullVersion();\nvar browserVersion = getBrowserVersion();\nvar browserName = getBrowserName();\nvar mobileVendor = getMobileVendor();\nvar mobileModel = getMobileModel();\nvar engineName = getEngineName();\nvar engineVersion = getEngineVersion();\nvar getUA = getUseragent();\nvar isEdge = isEdgeType() || isEdgeChromiumType();\nvar isYandex = isYandexType();\nvar deviceType = getDeviceType();\nvar isIOS13 = getIOS13();\nvar isIPad13 = getIPad13();\nvar isIPhone13 = getIphone13();\nvar isIPod13 = getIPod13();\nvar isElectron = isElectronType();\nvar isEdgeChromium = isEdgeChromiumType();\nvar isLegacyEdge = isEdgeType() && !isEdgeChromiumType();\nvar isWindows = isWindowsType();\nvar isMacOs = isMacOsType();\nvar isMIUI = isMIUIType();\n\nvar AndroidView = function AndroidView(_ref) {\n var renderWithFragment = _ref.renderWithFragment,\n children = _ref.children,\n viewClassName = _ref.viewClassName,\n style = _ref.style;\n return isAndroid ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", {\n className: viewClassName,\n style: style\n }, children) : null;\n};\nvar BrowserView = function BrowserView(_ref2) {\n var renderWithFragment = _ref2.renderWithFragment,\n children = _ref2.children,\n viewClassName = _ref2.viewClassName,\n style = _ref2.style;\n return isBrowser ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", {\n className: viewClassName,\n style: style\n }, children) : null;\n};\nvar IEView = function IEView(_ref3) {\n var renderWithFragment = _ref3.renderWithFragment,\n children = _ref3.children,\n viewClassName = _ref3.viewClassName,\n style = _ref3.style;\n return isIE ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", {\n className: viewClassName,\n style: style\n }, children) : null;\n};\nvar IOSView = function IOSView(_ref4) {\n var renderWithFragment = _ref4.renderWithFragment,\n children = _ref4.children,\n viewClassName = _ref4.viewClassName,\n style = _ref4.style;\n return isIOS ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", {\n className: viewClassName,\n style: style\n }, children) : null;\n};\nvar MobileView = function MobileView(_ref5) {\n var renderWithFragment = _ref5.renderWithFragment,\n children = _ref5.children,\n viewClassName = _ref5.viewClassName,\n style = _ref5.style;\n return isMobile ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", {\n className: viewClassName,\n style: style\n }, children) : null;\n};\nvar TabletView = function TabletView(_ref6) {\n var renderWithFragment = _ref6.renderWithFragment,\n children = _ref6.children,\n viewClassName = _ref6.viewClassName,\n style = _ref6.style;\n return isTablet ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", {\n className: viewClassName,\n style: style\n }, children) : null;\n};\nvar WinPhoneView = function WinPhoneView(_ref7) {\n var renderWithFragment = _ref7.renderWithFragment,\n children = _ref7.children,\n viewClassName = _ref7.viewClassName,\n style = _ref7.style;\n return isWinPhone ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", {\n className: viewClassName,\n style: style\n }, children) : null;\n};\nvar MobileOnlyView = function MobileOnlyView(_ref8) {\n var renderWithFragment = _ref8.renderWithFragment,\n children = _ref8.children,\n viewClassName = _ref8.viewClassName,\n style = _ref8.style;\n return isMobileOnly ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", {\n className: viewClassName,\n style: style\n }, children) : null;\n};\nvar SmartTVView = function SmartTVView(_ref9) {\n var renderWithFragment = _ref9.renderWithFragment,\n children = _ref9.children,\n viewClassName = _ref9.viewClassName,\n style = _ref9.style;\n return isSmartTV ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", {\n className: viewClassName,\n style: style\n }, children) : null;\n};\nvar ConsoleView = function ConsoleView(_ref10) {\n var renderWithFragment = _ref10.renderWithFragment,\n children = _ref10.children,\n viewClassName = _ref10.viewClassName,\n style = _ref10.style;\n return isConsole ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", {\n className: viewClassName,\n style: style\n }, children) : null;\n};\nvar WearableView = function WearableView(_ref11) {\n var renderWithFragment = _ref11.renderWithFragment,\n children = _ref11.children,\n viewClassName = _ref11.viewClassName,\n style = _ref11.style;\n return isWearable ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", {\n className: viewClassName,\n style: style\n }, children) : null;\n};\nvar CustomView = function CustomView(_ref12) {\n var renderWithFragment = _ref12.renderWithFragment,\n children = _ref12.children,\n viewClassName = _ref12.viewClassName,\n style = _ref12.style,\n condition = _ref12.condition;\n return condition ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", {\n className: viewClassName,\n style: style\n }, children) : null;\n};\n\nfunction withOrientationChange(WrappedComponent) {\n return (\n /*#__PURE__*/\n function (_React$Component) {\n _inherits(_class, _React$Component);\n\n function _class(props) {\n var _this;\n\n _classCallCheck(this, _class);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(_class).call(this, props));\n _this.isEventListenerAdded = false;\n _this.handleOrientationChange = _this.handleOrientationChange.bind(_assertThisInitialized(_this));\n _this.onOrientationChange = _this.onOrientationChange.bind(_assertThisInitialized(_this));\n _this.onPageLoad = _this.onPageLoad.bind(_assertThisInitialized(_this));\n _this.state = {\n isLandscape: false,\n isPortrait: false\n };\n return _this;\n }\n\n _createClass(_class, [{\n key: \"handleOrientationChange\",\n value: function handleOrientationChange() {\n if (!this.isEventListenerAdded) {\n this.isEventListenerAdded = true;\n }\n\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n this.setState({\n isPortrait: orientation === 0,\n isLandscape: orientation === 90\n });\n }\n }, {\n key: \"onOrientationChange\",\n value: function onOrientationChange() {\n this.handleOrientationChange();\n }\n }, {\n key: \"onPageLoad\",\n value: function onPageLoad() {\n this.handleOrientationChange();\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== undefined && isMobile) {\n if (!this.isEventListenerAdded) {\n this.handleOrientationChange();\n window.addEventListener(\"load\", this.onPageLoad, false);\n } else {\n window.removeEventListener(\"load\", this.onPageLoad, false);\n }\n\n window.addEventListener(\"resize\", this.onOrientationChange, false);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n window.removeEventListener(\"resize\", this.onOrientationChange, false);\n }\n }, {\n key: \"render\",\n value: function render() {\n return React__default.createElement(WrappedComponent, _extends({}, this.props, {\n isLandscape: this.state.isLandscape,\n isPortrait: this.state.isPortrait\n }));\n }\n }]);\n\n return _class;\n }(React__default.Component)\n );\n}\n\nexports.AndroidView = AndroidView;\nexports.BrowserView = BrowserView;\nexports.ConsoleView = ConsoleView;\nexports.CustomView = CustomView;\nexports.IEView = IEView;\nexports.IOSView = IOSView;\nexports.MobileOnlyView = MobileOnlyView;\nexports.MobileView = MobileView;\nexports.SmartTVView = SmartTVView;\nexports.TabletView = TabletView;\nexports.WearableView = WearableView;\nexports.WinPhoneView = WinPhoneView;\nexports.browserName = browserName;\nexports.browserVersion = browserVersion;\nexports.deviceDetect = deviceDetect;\nexports.deviceType = deviceType;\nexports.engineName = engineName;\nexports.engineVersion = engineVersion;\nexports.fullBrowserVersion = fullBrowserVersion;\nexports.getUA = getUA;\nexports.isAndroid = isAndroid;\nexports.isBrowser = isBrowser;\nexports.isChrome = isChrome;\nexports.isChromium = isChromium;\nexports.isConsole = isConsole;\nexports.isEdge = isEdge;\nexports.isEdgeChromium = isEdgeChromium;\nexports.isElectron = isElectron;\nexports.isFirefox = isFirefox;\nexports.isIE = isIE;\nexports.isIOS = isIOS;\nexports.isIOS13 = isIOS13;\nexports.isIPad13 = isIPad13;\nexports.isIPhone13 = isIPhone13;\nexports.isIPod13 = isIPod13;\nexports.isLegacyEdge = isLegacyEdge;\nexports.isMIUI = isMIUI;\nexports.isMacOs = isMacOs;\nexports.isMobile = isMobile;\nexports.isMobileOnly = isMobileOnly;\nexports.isMobileSafari = isMobileSafari;\nexports.isOpera = isOpera;\nexports.isSafari = isSafari;\nexports.isSmartTV = isSmartTV;\nexports.isTablet = isTablet;\nexports.isWearable = isWearable;\nexports.isWinPhone = isWinPhone;\nexports.isWindows = isWindows;\nexports.isYandex = isYandex;\nexports.mobileModel = mobileModel;\nexports.mobileVendor = mobileVendor;\nexports.osName = osName;\nexports.osVersion = osVersion;\nexports.withOrientationChange = withOrientationChange;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.clamp = clamp;\nexports.canUseDOM = exports.slidesOnLeft = exports.slidesOnRight = exports.siblingDirection = exports.getTotalSlides = exports.getPostClones = exports.getPreClones = exports.getTrackLeft = exports.getTrackAnimateCSS = exports.getTrackCSS = exports.checkSpecKeys = exports.getSlideCount = exports.checkNavigable = exports.getNavigableIndexes = exports.swipeEnd = exports.swipeMove = exports.swipeStart = exports.keyHandler = exports.changeSlide = exports.slideHandler = exports.initializedState = exports.extractObject = exports.canGoNext = exports.getSwipeDirection = exports.getHeight = exports.getWidth = exports.lazySlidesOnRight = exports.lazySlidesOnLeft = exports.lazyEndIndex = exports.lazyStartIndex = exports.getRequiredLazySlides = exports.getOnDemandLazySlides = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction clamp(number, lowerBound, upperBound) {\n return Math.max(lowerBound, Math.min(number, upperBound));\n}\n\nvar getOnDemandLazySlides = function getOnDemandLazySlides(spec) {\n var onDemandSlides = [];\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n\n for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n if (spec.lazyLoadedList.indexOf(slideIndex) < 0) {\n onDemandSlides.push(slideIndex);\n }\n }\n\n return onDemandSlides;\n}; // return list of slides that need to be present\n\n\nexports.getOnDemandLazySlides = getOnDemandLazySlides;\n\nvar getRequiredLazySlides = function getRequiredLazySlides(spec) {\n var requiredSlides = [];\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n\n for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n requiredSlides.push(slideIndex);\n }\n\n return requiredSlides;\n}; // startIndex that needs to be present\n\n\nexports.getRequiredLazySlides = getRequiredLazySlides;\n\nvar lazyStartIndex = function lazyStartIndex(spec) {\n return spec.currentSlide - lazySlidesOnLeft(spec);\n};\n\nexports.lazyStartIndex = lazyStartIndex;\n\nvar lazyEndIndex = function lazyEndIndex(spec) {\n return spec.currentSlide + lazySlidesOnRight(spec);\n};\n\nexports.lazyEndIndex = lazyEndIndex;\n\nvar lazySlidesOnLeft = function lazySlidesOnLeft(spec) {\n return spec.centerMode ? Math.floor(spec.slidesToShow / 2) + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : 0;\n};\n\nexports.lazySlidesOnLeft = lazySlidesOnLeft;\n\nvar lazySlidesOnRight = function lazySlidesOnRight(spec) {\n return spec.centerMode ? Math.floor((spec.slidesToShow - 1) / 2) + 1 + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : spec.slidesToShow;\n}; // get width of an element\n\n\nexports.lazySlidesOnRight = lazySlidesOnRight;\n\nvar getWidth = function getWidth(elem) {\n return elem && elem.offsetWidth || 0;\n};\n\nexports.getWidth = getWidth;\n\nvar getHeight = function getHeight(elem) {\n return elem && elem.offsetHeight || 0;\n};\n\nexports.getHeight = getHeight;\n\nvar getSwipeDirection = function getSwipeDirection(touchObject) {\n var verticalSwiping = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var xDist, yDist, r, swipeAngle;\n xDist = touchObject.startX - touchObject.curX;\n yDist = touchObject.startY - touchObject.curY;\n r = Math.atan2(yDist, xDist);\n swipeAngle = Math.round(r * 180 / Math.PI);\n\n if (swipeAngle < 0) {\n swipeAngle = 360 - Math.abs(swipeAngle);\n }\n\n if (swipeAngle <= 45 && swipeAngle >= 0 || swipeAngle <= 360 && swipeAngle >= 315) {\n return \"left\";\n }\n\n if (swipeAngle >= 135 && swipeAngle <= 225) {\n return \"right\";\n }\n\n if (verticalSwiping === true) {\n if (swipeAngle >= 35 && swipeAngle <= 135) {\n return \"up\";\n } else {\n return \"down\";\n }\n }\n\n return \"vertical\";\n}; // whether or not we can go next\n\n\nexports.getSwipeDirection = getSwipeDirection;\n\nvar canGoNext = function canGoNext(spec) {\n var canGo = true;\n\n if (!spec.infinite) {\n if (spec.centerMode && spec.currentSlide >= spec.slideCount - 1) {\n canGo = false;\n } else if (spec.slideCount <= spec.slidesToShow || spec.currentSlide >= spec.slideCount - spec.slidesToShow) {\n canGo = false;\n }\n }\n\n return canGo;\n}; // given an object and a list of keys, return new object with given keys\n\n\nexports.canGoNext = canGoNext;\n\nvar extractObject = function extractObject(spec, keys) {\n var newObject = {};\n keys.forEach(function (key) {\n return newObject[key] = spec[key];\n });\n return newObject;\n}; // get initialized state\n\n\nexports.extractObject = extractObject;\n\nvar initializedState = function initializedState(spec) {\n // spec also contains listRef, trackRef\n var slideCount = _react[\"default\"].Children.count(spec.children);\n\n var listNode = spec.listRef;\n var listWidth = Math.ceil(getWidth(listNode));\n var trackNode = spec.trackRef && spec.trackRef.node;\n var trackWidth = Math.ceil(getWidth(trackNode));\n var slideWidth;\n\n if (!spec.vertical) {\n var centerPaddingAdj = spec.centerMode && parseInt(spec.centerPadding) * 2;\n\n if (typeof spec.centerPadding === \"string\" && spec.centerPadding.slice(-1) === \"%\") {\n centerPaddingAdj *= listWidth / 100;\n }\n\n slideWidth = Math.ceil((listWidth - centerPaddingAdj) / spec.slidesToShow);\n } else {\n slideWidth = listWidth;\n }\n\n var slideHeight = listNode && getHeight(listNode.querySelector('[data-index=\"0\"]'));\n var listHeight = slideHeight * spec.slidesToShow;\n var currentSlide = spec.currentSlide === undefined ? spec.initialSlide : spec.currentSlide;\n\n if (spec.rtl && spec.currentSlide === undefined) {\n currentSlide = slideCount - 1 - spec.initialSlide;\n }\n\n var lazyLoadedList = spec.lazyLoadedList || [];\n var slidesToLoad = getOnDemandLazySlides(_objectSpread(_objectSpread({}, spec), {}, {\n currentSlide: currentSlide,\n lazyLoadedList: lazyLoadedList\n }));\n lazyLoadedList.concat(slidesToLoad);\n var state = {\n slideCount: slideCount,\n slideWidth: slideWidth,\n listWidth: listWidth,\n trackWidth: trackWidth,\n currentSlide: currentSlide,\n slideHeight: slideHeight,\n listHeight: listHeight,\n lazyLoadedList: lazyLoadedList\n };\n\n if (spec.autoplaying === null && spec.autoplay) {\n state[\"autoplaying\"] = \"playing\";\n }\n\n return state;\n};\n\nexports.initializedState = initializedState;\n\nvar slideHandler = function slideHandler(spec) {\n var waitForAnimate = spec.waitForAnimate,\n animating = spec.animating,\n fade = spec.fade,\n infinite = spec.infinite,\n index = spec.index,\n slideCount = spec.slideCount,\n lazyLoadedList = spec.lazyLoadedList,\n lazyLoad = spec.lazyLoad,\n currentSlide = spec.currentSlide,\n centerMode = spec.centerMode,\n slidesToScroll = spec.slidesToScroll,\n slidesToShow = spec.slidesToShow,\n useCSS = spec.useCSS;\n if (waitForAnimate && animating) return {};\n var animationSlide = index,\n finalSlide,\n animationLeft,\n finalLeft;\n var state = {},\n nextState = {};\n var targetSlide = infinite ? index : clamp(index, 0, slideCount - 1);\n\n if (fade) {\n if (!infinite && (index < 0 || index >= slideCount)) return {};\n\n if (index < 0) {\n animationSlide = index + slideCount;\n } else if (index >= slideCount) {\n animationSlide = index - slideCount;\n }\n\n if (lazyLoad && lazyLoadedList.indexOf(animationSlide) < 0) {\n lazyLoadedList.push(animationSlide);\n }\n\n state = {\n animating: true,\n currentSlide: animationSlide,\n lazyLoadedList: lazyLoadedList,\n targetSlide: animationSlide\n };\n nextState = {\n animating: false,\n targetSlide: animationSlide\n };\n } else {\n finalSlide = animationSlide;\n\n if (animationSlide < 0) {\n finalSlide = animationSlide + slideCount;\n if (!infinite) finalSlide = 0;else if (slideCount % slidesToScroll !== 0) finalSlide = slideCount - slideCount % slidesToScroll;\n } else if (!canGoNext(spec) && animationSlide > currentSlide) {\n animationSlide = finalSlide = currentSlide;\n } else if (centerMode && animationSlide >= slideCount) {\n animationSlide = infinite ? slideCount : slideCount - 1;\n finalSlide = infinite ? 0 : slideCount - 1;\n } else if (animationSlide >= slideCount) {\n finalSlide = animationSlide - slideCount;\n if (!infinite) finalSlide = slideCount - slidesToShow;else if (slideCount % slidesToScroll !== 0) finalSlide = 0;\n }\n\n if (!infinite && animationSlide + slidesToShow >= slideCount) {\n finalSlide = slideCount - slidesToShow;\n }\n\n animationLeft = getTrackLeft(_objectSpread(_objectSpread({}, spec), {}, {\n slideIndex: animationSlide\n }));\n finalLeft = getTrackLeft(_objectSpread(_objectSpread({}, spec), {}, {\n slideIndex: finalSlide\n }));\n\n if (!infinite) {\n if (animationLeft === finalLeft) animationSlide = finalSlide;\n animationLeft = finalLeft;\n }\n\n lazyLoad && lazyLoadedList.concat(getOnDemandLazySlides(_objectSpread(_objectSpread({}, spec), {}, {\n currentSlide: animationSlide\n })));\n\n if (!useCSS) {\n state = {\n currentSlide: finalSlide,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: finalLeft\n })),\n lazyLoadedList: lazyLoadedList,\n targetSlide: targetSlide\n };\n } else {\n state = {\n animating: true,\n currentSlide: finalSlide,\n trackStyle: getTrackAnimateCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: animationLeft\n })),\n lazyLoadedList: lazyLoadedList,\n targetSlide: targetSlide\n };\n nextState = {\n animating: false,\n currentSlide: finalSlide,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: finalLeft\n })),\n swipeLeft: null,\n targetSlide: targetSlide\n };\n }\n }\n\n return {\n state: state,\n nextState: nextState\n };\n};\n\nexports.slideHandler = slideHandler;\n\nvar changeSlide = function changeSlide(spec, options) {\n var indexOffset, previousInt, slideOffset, unevenOffset, targetSlide;\n var slidesToScroll = spec.slidesToScroll,\n slidesToShow = spec.slidesToShow,\n slideCount = spec.slideCount,\n currentSlide = spec.currentSlide,\n previousTargetSlide = spec.targetSlide,\n lazyLoad = spec.lazyLoad,\n infinite = spec.infinite;\n unevenOffset = slideCount % slidesToScroll !== 0;\n indexOffset = unevenOffset ? 0 : (slideCount - currentSlide) % slidesToScroll;\n\n if (options.message === \"previous\") {\n slideOffset = indexOffset === 0 ? slidesToScroll : slidesToShow - indexOffset;\n targetSlide = currentSlide - slideOffset;\n\n if (lazyLoad && !infinite) {\n previousInt = currentSlide - slideOffset;\n targetSlide = previousInt === -1 ? slideCount - 1 : previousInt;\n }\n\n if (!infinite) {\n targetSlide = previousTargetSlide - slidesToScroll;\n }\n } else if (options.message === \"next\") {\n slideOffset = indexOffset === 0 ? slidesToScroll : indexOffset;\n targetSlide = currentSlide + slideOffset;\n\n if (lazyLoad && !infinite) {\n targetSlide = (currentSlide + slidesToScroll) % slideCount + indexOffset;\n }\n\n if (!infinite) {\n targetSlide = previousTargetSlide + slidesToScroll;\n }\n } else if (options.message === \"dots\") {\n // Click on dots\n targetSlide = options.index * options.slidesToScroll;\n } else if (options.message === \"children\") {\n // Click on the slides\n targetSlide = options.index;\n\n if (infinite) {\n var direction = siblingDirection(_objectSpread(_objectSpread({}, spec), {}, {\n targetSlide: targetSlide\n }));\n\n if (targetSlide > options.currentSlide && direction === \"left\") {\n targetSlide = targetSlide - slideCount;\n } else if (targetSlide < options.currentSlide && direction === \"right\") {\n targetSlide = targetSlide + slideCount;\n }\n }\n } else if (options.message === \"index\") {\n targetSlide = Number(options.index);\n }\n\n return targetSlide;\n};\n\nexports.changeSlide = changeSlide;\n\nvar keyHandler = function keyHandler(e, accessibility, rtl) {\n if (e.target.tagName.match(\"TEXTAREA|INPUT|SELECT\") || !accessibility) return \"\";\n if (e.keyCode === 37) return rtl ? \"next\" : \"previous\";\n if (e.keyCode === 39) return rtl ? \"previous\" : \"next\";\n return \"\";\n};\n\nexports.keyHandler = keyHandler;\n\nvar swipeStart = function swipeStart(e, swipe, draggable) {\n e.target.tagName === \"IMG\" && e.preventDefault();\n if (!swipe || !draggable && e.type.indexOf(\"mouse\") !== -1) return \"\";\n return {\n dragging: true,\n touchObject: {\n startX: e.touches ? e.touches[0].pageX : e.clientX,\n startY: e.touches ? e.touches[0].pageY : e.clientY,\n curX: e.touches ? e.touches[0].pageX : e.clientX,\n curY: e.touches ? e.touches[0].pageY : e.clientY\n }\n };\n};\n\nexports.swipeStart = swipeStart;\n\nvar swipeMove = function swipeMove(e, spec) {\n // spec also contains, trackRef and slideIndex\n var scrolling = spec.scrolling,\n animating = spec.animating,\n vertical = spec.vertical,\n swipeToSlide = spec.swipeToSlide,\n verticalSwiping = spec.verticalSwiping,\n rtl = spec.rtl,\n currentSlide = spec.currentSlide,\n edgeFriction = spec.edgeFriction,\n edgeDragged = spec.edgeDragged,\n onEdge = spec.onEdge,\n swiped = spec.swiped,\n swiping = spec.swiping,\n slideCount = spec.slideCount,\n slidesToScroll = spec.slidesToScroll,\n infinite = spec.infinite,\n touchObject = spec.touchObject,\n swipeEvent = spec.swipeEvent,\n listHeight = spec.listHeight,\n listWidth = spec.listWidth;\n if (scrolling) return;\n if (animating) return e.preventDefault();\n if (vertical && swipeToSlide && verticalSwiping) e.preventDefault();\n var swipeLeft,\n state = {};\n var curLeft = getTrackLeft(spec);\n touchObject.curX = e.touches ? e.touches[0].pageX : e.clientX;\n touchObject.curY = e.touches ? e.touches[0].pageY : e.clientY;\n touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curX - touchObject.startX, 2)));\n var verticalSwipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curY - touchObject.startY, 2)));\n\n if (!verticalSwiping && !swiping && verticalSwipeLength > 10) {\n return {\n scrolling: true\n };\n }\n\n if (verticalSwiping) touchObject.swipeLength = verticalSwipeLength;\n var positionOffset = (!rtl ? 1 : -1) * (touchObject.curX > touchObject.startX ? 1 : -1);\n if (verticalSwiping) positionOffset = touchObject.curY > touchObject.startY ? 1 : -1;\n var dotCount = Math.ceil(slideCount / slidesToScroll);\n var swipeDirection = getSwipeDirection(spec.touchObject, verticalSwiping);\n var touchSwipeLength = touchObject.swipeLength;\n\n if (!infinite) {\n if (currentSlide === 0 && swipeDirection === \"right\" || currentSlide + 1 >= dotCount && swipeDirection === \"left\" || !canGoNext(spec) && swipeDirection === \"left\") {\n touchSwipeLength = touchObject.swipeLength * edgeFriction;\n\n if (edgeDragged === false && onEdge) {\n onEdge(swipeDirection);\n state[\"edgeDragged\"] = true;\n }\n }\n }\n\n if (!swiped && swipeEvent) {\n swipeEvent(swipeDirection);\n state[\"swiped\"] = true;\n }\n\n if (!vertical) {\n if (!rtl) {\n swipeLeft = curLeft + touchSwipeLength * positionOffset;\n } else {\n swipeLeft = curLeft - touchSwipeLength * positionOffset;\n }\n } else {\n swipeLeft = curLeft + touchSwipeLength * (listHeight / listWidth) * positionOffset;\n }\n\n if (verticalSwiping) {\n swipeLeft = curLeft + touchSwipeLength * positionOffset;\n }\n\n state = _objectSpread(_objectSpread({}, state), {}, {\n touchObject: touchObject,\n swipeLeft: swipeLeft,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: swipeLeft\n }))\n });\n\n if (Math.abs(touchObject.curX - touchObject.startX) < Math.abs(touchObject.curY - touchObject.startY) * 0.8) {\n return state;\n }\n\n if (touchObject.swipeLength > 10) {\n state[\"swiping\"] = true;\n e.preventDefault();\n }\n\n return state;\n};\n\nexports.swipeMove = swipeMove;\n\nvar swipeEnd = function swipeEnd(e, spec) {\n var dragging = spec.dragging,\n swipe = spec.swipe,\n touchObject = spec.touchObject,\n listWidth = spec.listWidth,\n touchThreshold = spec.touchThreshold,\n verticalSwiping = spec.verticalSwiping,\n listHeight = spec.listHeight,\n swipeToSlide = spec.swipeToSlide,\n scrolling = spec.scrolling,\n onSwipe = spec.onSwipe,\n targetSlide = spec.targetSlide,\n currentSlide = spec.currentSlide,\n infinite = spec.infinite;\n\n if (!dragging) {\n if (swipe) e.preventDefault();\n return {};\n }\n\n var minSwipe = verticalSwiping ? listHeight / touchThreshold : listWidth / touchThreshold;\n var swipeDirection = getSwipeDirection(touchObject, verticalSwiping); // reset the state of touch related state variables.\n\n var state = {\n dragging: false,\n edgeDragged: false,\n scrolling: false,\n swiping: false,\n swiped: false,\n swipeLeft: null,\n touchObject: {}\n };\n\n if (scrolling) {\n return state;\n }\n\n if (!touchObject.swipeLength) {\n return state;\n }\n\n if (touchObject.swipeLength > minSwipe) {\n e.preventDefault();\n\n if (onSwipe) {\n onSwipe(swipeDirection);\n }\n\n var slideCount, newSlide;\n var activeSlide = infinite ? currentSlide : targetSlide;\n\n switch (swipeDirection) {\n case \"left\":\n case \"up\":\n newSlide = activeSlide + getSlideCount(spec);\n slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n state[\"currentDirection\"] = 0;\n break;\n\n case \"right\":\n case \"down\":\n newSlide = activeSlide - getSlideCount(spec);\n slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n state[\"currentDirection\"] = 1;\n break;\n\n default:\n slideCount = activeSlide;\n }\n\n state[\"triggerSlideHandler\"] = slideCount;\n } else {\n // Adjust the track back to it's original position.\n var currentLeft = getTrackLeft(spec);\n state[\"trackStyle\"] = getTrackAnimateCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: currentLeft\n }));\n }\n\n return state;\n};\n\nexports.swipeEnd = swipeEnd;\n\nvar getNavigableIndexes = function getNavigableIndexes(spec) {\n var max = spec.infinite ? spec.slideCount * 2 : spec.slideCount;\n var breakpoint = spec.infinite ? spec.slidesToShow * -1 : 0;\n var counter = spec.infinite ? spec.slidesToShow * -1 : 0;\n var indexes = [];\n\n while (breakpoint < max) {\n indexes.push(breakpoint);\n breakpoint = counter + spec.slidesToScroll;\n counter += Math.min(spec.slidesToScroll, spec.slidesToShow);\n }\n\n return indexes;\n};\n\nexports.getNavigableIndexes = getNavigableIndexes;\n\nvar checkNavigable = function checkNavigable(spec, index) {\n var navigables = getNavigableIndexes(spec);\n var prevNavigable = 0;\n\n if (index > navigables[navigables.length - 1]) {\n index = navigables[navigables.length - 1];\n } else {\n for (var n in navigables) {\n if (index < navigables[n]) {\n index = prevNavigable;\n break;\n }\n\n prevNavigable = navigables[n];\n }\n }\n\n return index;\n};\n\nexports.checkNavigable = checkNavigable;\n\nvar getSlideCount = function getSlideCount(spec) {\n var centerOffset = spec.centerMode ? spec.slideWidth * Math.floor(spec.slidesToShow / 2) : 0;\n\n if (spec.swipeToSlide) {\n var swipedSlide;\n var slickList = spec.listRef;\n var slides = slickList.querySelectorAll(\".slick-slide\");\n Array.from(slides).every(function (slide) {\n if (!spec.vertical) {\n if (slide.offsetLeft - centerOffset + getWidth(slide) / 2 > spec.swipeLeft * -1) {\n swipedSlide = slide;\n return false;\n }\n } else {\n if (slide.offsetTop + getHeight(slide) / 2 > spec.swipeLeft * -1) {\n swipedSlide = slide;\n return false;\n }\n }\n\n return true;\n });\n\n if (!swipedSlide) {\n return 0;\n }\n\n var currentIndex = spec.rtl === true ? spec.slideCount - spec.currentSlide : spec.currentSlide;\n var slidesTraversed = Math.abs(swipedSlide.dataset.index - currentIndex) || 1;\n return slidesTraversed;\n } else {\n return spec.slidesToScroll;\n }\n};\n\nexports.getSlideCount = getSlideCount;\n\nvar checkSpecKeys = function checkSpecKeys(spec, keysArray) {\n return keysArray.reduce(function (value, key) {\n return value && spec.hasOwnProperty(key);\n }, true) ? null : console.error(\"Keys Missing:\", spec);\n};\n\nexports.checkSpecKeys = checkSpecKeys;\n\nvar getTrackCSS = function getTrackCSS(spec) {\n checkSpecKeys(spec, [\"left\", \"variableWidth\", \"slideCount\", \"slidesToShow\", \"slideWidth\"]);\n var trackWidth, trackHeight;\n var trackChildren = spec.slideCount + 2 * spec.slidesToShow;\n\n if (!spec.vertical) {\n trackWidth = getTotalSlides(spec) * spec.slideWidth;\n } else {\n trackHeight = trackChildren * spec.slideHeight;\n }\n\n var style = {\n opacity: 1,\n transition: \"\",\n WebkitTransition: \"\"\n };\n\n if (spec.useTransform) {\n var WebkitTransform = !spec.vertical ? \"translate3d(\" + spec.left + \"px, 0px, 0px)\" : \"translate3d(0px, \" + spec.left + \"px, 0px)\";\n var transform = !spec.vertical ? \"translate3d(\" + spec.left + \"px, 0px, 0px)\" : \"translate3d(0px, \" + spec.left + \"px, 0px)\";\n var msTransform = !spec.vertical ? \"translateX(\" + spec.left + \"px)\" : \"translateY(\" + spec.left + \"px)\";\n style = _objectSpread(_objectSpread({}, style), {}, {\n WebkitTransform: WebkitTransform,\n transform: transform,\n msTransform: msTransform\n });\n } else {\n if (spec.vertical) {\n style[\"top\"] = spec.left;\n } else {\n style[\"left\"] = spec.left;\n }\n }\n\n if (spec.fade) style = {\n opacity: 1\n };\n if (trackWidth) style.width = trackWidth;\n if (trackHeight) style.height = trackHeight; // Fallback for IE8\n\n if (window && !window.addEventListener && window.attachEvent) {\n if (!spec.vertical) {\n style.marginLeft = spec.left + \"px\";\n } else {\n style.marginTop = spec.left + \"px\";\n }\n }\n\n return style;\n};\n\nexports.getTrackCSS = getTrackCSS;\n\nvar getTrackAnimateCSS = function getTrackAnimateCSS(spec) {\n checkSpecKeys(spec, [\"left\", \"variableWidth\", \"slideCount\", \"slidesToShow\", \"slideWidth\", \"speed\", \"cssEase\"]);\n var style = getTrackCSS(spec); // useCSS is true by default so it can be undefined\n\n if (spec.useTransform) {\n style.WebkitTransition = \"-webkit-transform \" + spec.speed + \"ms \" + spec.cssEase;\n style.transition = \"transform \" + spec.speed + \"ms \" + spec.cssEase;\n } else {\n if (spec.vertical) {\n style.transition = \"top \" + spec.speed + \"ms \" + spec.cssEase;\n } else {\n style.transition = \"left \" + spec.speed + \"ms \" + spec.cssEase;\n }\n }\n\n return style;\n};\n\nexports.getTrackAnimateCSS = getTrackAnimateCSS;\n\nvar getTrackLeft = function getTrackLeft(spec) {\n if (spec.unslick) {\n return 0;\n }\n\n checkSpecKeys(spec, [\"slideIndex\", \"trackRef\", \"infinite\", \"centerMode\", \"slideCount\", \"slidesToShow\", \"slidesToScroll\", \"slideWidth\", \"listWidth\", \"variableWidth\", \"slideHeight\"]);\n var slideIndex = spec.slideIndex,\n trackRef = spec.trackRef,\n infinite = spec.infinite,\n centerMode = spec.centerMode,\n slideCount = spec.slideCount,\n slidesToShow = spec.slidesToShow,\n slidesToScroll = spec.slidesToScroll,\n slideWidth = spec.slideWidth,\n listWidth = spec.listWidth,\n variableWidth = spec.variableWidth,\n slideHeight = spec.slideHeight,\n fade = spec.fade,\n vertical = spec.vertical;\n var slideOffset = 0;\n var targetLeft;\n var targetSlide;\n var verticalOffset = 0;\n\n if (fade || spec.slideCount === 1) {\n return 0;\n }\n\n var slidesToOffset = 0;\n\n if (infinite) {\n slidesToOffset = -getPreClones(spec); // bring active slide to the beginning of visual area\n // if next scroll doesn't have enough children, just reach till the end of original slides instead of shifting slidesToScroll children\n\n if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n slidesToOffset = -(slideIndex > slideCount ? slidesToShow - (slideIndex - slideCount) : slideCount % slidesToScroll);\n } // shift current slide to center of the frame\n\n\n if (centerMode) {\n slidesToOffset += parseInt(slidesToShow / 2);\n }\n } else {\n if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n slidesToOffset = slidesToShow - slideCount % slidesToScroll;\n }\n\n if (centerMode) {\n slidesToOffset = parseInt(slidesToShow / 2);\n }\n }\n\n slideOffset = slidesToOffset * slideWidth;\n verticalOffset = slidesToOffset * slideHeight;\n\n if (!vertical) {\n targetLeft = slideIndex * slideWidth * -1 + slideOffset;\n } else {\n targetLeft = slideIndex * slideHeight * -1 + verticalOffset;\n }\n\n if (variableWidth === true) {\n var targetSlideIndex;\n var trackElem = trackRef && trackRef.node;\n targetSlideIndex = slideIndex + getPreClones(spec);\n targetSlide = trackElem && trackElem.childNodes[targetSlideIndex];\n targetLeft = targetSlide ? targetSlide.offsetLeft * -1 : 0;\n\n if (centerMode === true) {\n targetSlideIndex = infinite ? slideIndex + getPreClones(spec) : slideIndex;\n targetSlide = trackElem && trackElem.children[targetSlideIndex];\n targetLeft = 0;\n\n for (var slide = 0; slide < targetSlideIndex; slide++) {\n targetLeft -= trackElem && trackElem.children[slide] && trackElem.children[slide].offsetWidth;\n }\n\n targetLeft -= parseInt(spec.centerPadding);\n targetLeft += targetSlide && (listWidth - targetSlide.offsetWidth) / 2;\n }\n }\n\n return targetLeft;\n};\n\nexports.getTrackLeft = getTrackLeft;\n\nvar getPreClones = function getPreClones(spec) {\n if (spec.unslick || !spec.infinite) {\n return 0;\n }\n\n if (spec.variableWidth) {\n return spec.slideCount;\n }\n\n return spec.slidesToShow + (spec.centerMode ? 1 : 0);\n};\n\nexports.getPreClones = getPreClones;\n\nvar getPostClones = function getPostClones(spec) {\n if (spec.unslick || !spec.infinite) {\n return 0;\n }\n\n return spec.slideCount;\n};\n\nexports.getPostClones = getPostClones;\n\nvar getTotalSlides = function getTotalSlides(spec) {\n return spec.slideCount === 1 ? 1 : getPreClones(spec) + spec.slideCount + getPostClones(spec);\n};\n\nexports.getTotalSlides = getTotalSlides;\n\nvar siblingDirection = function siblingDirection(spec) {\n if (spec.targetSlide > spec.currentSlide) {\n if (spec.targetSlide > spec.currentSlide + slidesOnRight(spec)) {\n return \"left\";\n }\n\n return \"right\";\n } else {\n if (spec.targetSlide < spec.currentSlide - slidesOnLeft(spec)) {\n return \"right\";\n }\n\n return \"left\";\n }\n};\n\nexports.siblingDirection = siblingDirection;\n\nvar slidesOnRight = function slidesOnRight(_ref) {\n var slidesToShow = _ref.slidesToShow,\n centerMode = _ref.centerMode,\n rtl = _ref.rtl,\n centerPadding = _ref.centerPadding;\n\n // returns no of slides on the right of active slide\n if (centerMode) {\n var right = (slidesToShow - 1) / 2 + 1;\n if (parseInt(centerPadding) > 0) right += 1;\n if (rtl && slidesToShow % 2 === 0) right += 1;\n return right;\n }\n\n if (rtl) {\n return 0;\n }\n\n return slidesToShow - 1;\n};\n\nexports.slidesOnRight = slidesOnRight;\n\nvar slidesOnLeft = function slidesOnLeft(_ref2) {\n var slidesToShow = _ref2.slidesToShow,\n centerMode = _ref2.centerMode,\n rtl = _ref2.rtl,\n centerPadding = _ref2.centerPadding;\n\n // returns no of slides on the left of active slide\n if (centerMode) {\n var left = (slidesToShow - 1) / 2 + 1;\n if (parseInt(centerPadding) > 0) left += 1;\n if (!rtl && slidesToShow % 2 === 0) left += 1;\n return left;\n }\n\n if (rtl) {\n return slidesToShow - 1;\n }\n\n return 0;\n};\n\nexports.slidesOnLeft = slidesOnLeft;\n\nvar canUseDOM = function canUseDOM() {\n return !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n};\n\nexports.canUseDOM = canUseDOM;","// tslint:disable-next-line: no-submodule-imports\nimport merge from 'lodash/merge';\nimport { BadGatewayError, NotFoundError, ResponseParsingError, ServiceError } from './error-handling';\nimport { fetch } from './fetch';\nimport { createLogger, recordOutgoingMetrics } from './setup';\nimport { getProxyAgent } from './utils/get-proxy-agent';\nconst logger = createLogger(__filename);\nlet txId = 0;\nfunction nextTxId() {\n txId++;\n if (txId >= Number.MAX_VALUE) {\n txId = 0;\n }\n return txId;\n}\n// DEPRECATED\nexport async function handleJsonResponse(response, service) {\n const status = response.status;\n if (status < 200 || status > 300) {\n switch (status) {\n case 404:\n throw new NotFoundError(status, service, `status ${status} for url ${response.url}`, response);\n case 502:\n throw new BadGatewayError(status, service, `status ${status} for url ${response.url}`, response);\n default:\n throw new ServiceError(status, service, `status ${status} for url ${response.url}`, response);\n }\n }\n else {\n try {\n return await response.json();\n }\n catch (error) {\n throw new ResponseParsingError(status, service, `Parse error <${error.message}> for url ${response.url}`, response);\n }\n }\n}\nexport async function handleJsonResponseWithEmpty(response, service) {\n if (response.status === 204) {\n return null;\n }\n return handleJsonResponse(response, service);\n}\nexport async function callApi(url, serviceName, options = {}, handleResponse = handleJsonResponse) {\n const stopRecordingMetrics = recordOutgoingMetrics(serviceName);\n let response;\n const logFields = { txId: nextTxId() };\n const start = Date.now();\n try {\n logger.info(logFields, 'Start calling %s', url);\n // Setup corporate proxy on server-side\n // tslint:disable-next-line strict-type-predicates\n if (typeof document === 'undefined') {\n options.agent = getProxyAgent(url);\n }\n response = await fetch(url, serviceName, options);\n }\n catch (e) {\n logger.error(`Unexpected error for call to service ${serviceName} with url ${url}`, e);\n throw e;\n }\n finally {\n const totalTime = Date.now() - start;\n logger.info(logFields, 'Finished calling %s after %sms', url, totalTime);\n stopRecordingMetrics();\n }\n return handleResponse(response, serviceName);\n}\nconst getMethodDefaults = {\n method: 'GET',\n headers: {\n Accept: 'application/json'\n }\n};\nexport async function getApi(url, serviceName, options = {}, handler) {\n const configuration = merge({}, getMethodDefaults, options);\n return callApi(url, serviceName, configuration, handler);\n}\nconst postMethodDefaults = {\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json'\n }\n};\nexport async function postApi(url, serviceName, body = {}, // tslint:disable-line no-any\noptions = {}) {\n const configuration = merge({}, postMethodDefaults, { body: JSON.stringify(body) }, options);\n return callApi(url, serviceName, configuration);\n}\nexport async function postFormApi(url, service, body, options = {}) {\n const configuration = merge({}, {\n method: 'POST',\n headers: {\n Accept: 'plain/text',\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n }, { body }, options);\n return callApi(url, service, configuration);\n}\nconst postXmlMethodDefaults = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/xml'\n }\n};\nexport async function handleXmlResponse(response, service) {\n const status = response.status;\n try {\n const payload = await response.text();\n return {\n status,\n payload\n };\n }\n catch (error) {\n throw new ResponseParsingError(status, service, error.message);\n }\n}\nexport async function postXmlApi(url, serviceName, body, options = {}) {\n const configuration = merge({}, postXmlMethodDefaults, { body }, options);\n return callApi(url, serviceName, configuration, handleXmlResponse);\n}\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar React = require(\"react\");\nexports.Checkmark = React.forwardRef(Object.assign(function (props, forwardRef) {\n var variant = props.variant || \"default\";\n if (variant === \"default\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { viewBox: \"0 0 24 24\", width: \"24\", height: \"24\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M9.037 22.392a.667.667 0 0 1-.422-.151l-7.49-6.142.844-1.028 6.933 5.685 13.1-18.861 1.092.759L9.583 22.106a.669.669 0 0 1-.546.286z\" }));\n }\n if (variant === \"small\") {\n return React.createElement(\"svg\", __assign({ className: props.className, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex, \"aria-label\": props.ariaLabel, ref: forwardRef }, (props.ariaHidden ? {} : { role: \"img\" }), { viewBox: \"0 0 12 12\", width: \"12\", height: \"12\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"currentColor\" }),\n props.title && React.createElement(\"title\", null, props.title),\n React.createElement(\"path\", { d: \"M4.39 11.39a.81.81 0 0 1-.51-.18L0 8.11l.88-1 3.39 2.67L10.86.39l1.14.76L4.88 11.3l-.37.08z\" }));\n }\n return null;\n}, { displayName: 'Checkmark' }));\n","import { getReverseGeocode } from 'src/feature-app';\nimport { Geometry } from 'src/types';\n\nfunction getCurrentPosition(options = { timeout: 10000 }): Promise {\n return new Promise((resolve, reject) => {\n navigator.geolocation.getCurrentPosition(resolve, reject, options);\n });\n}\n\nexport const handleLocation = async (): Promise<{ geometry: Geometry; name: string }> => {\n try {\n const { coords } = await getCurrentPosition();\n const { latitude, longitude } = coords;\n const { geometry, name } = await getReverseGeocode({ lat: latitude, lng: longitude });\n\n return { geometry, name };\n // Handle coordinates\n } catch (error) {\n // Handle error\n console.error(error);\n return { geometry: null, name: '' };\n }\n};\n","import Metadata from '../metadata'\r\nimport { VALID_DIGITS } from '../constants'\r\n\r\nconst CAPTURING_DIGIT_PATTERN = new RegExp('([' + VALID_DIGITS + '])')\r\n\r\nexport default function stripIddPrefix(number, country, callingCode, metadata) {\r\n\tif (!country) {\r\n\t\treturn\r\n\t}\r\n\t// Check if the number is IDD-prefixed.\r\n\tconst countryMetadata = new Metadata(metadata)\r\n\tcountryMetadata.selectNumberingPlan(country, callingCode)\r\n\tconst IDDPrefixPattern = new RegExp(countryMetadata.IDDPrefix())\r\n\tif (number.search(IDDPrefixPattern) !== 0) {\r\n\t\treturn\r\n\t}\r\n\t// Strip IDD prefix.\r\n\tnumber = number.slice(number.match(IDDPrefixPattern)[0].length)\r\n\t// If there're any digits after an IDD prefix,\r\n\t// then those digits are a country calling code.\r\n\t// Since no country code starts with a `0`,\r\n\t// the code below validates that the next digit (if present) is not `0`.\r\n\tconst matchedGroups = number.match(CAPTURING_DIGIT_PATTERN)\r\n\tif (matchedGroups && matchedGroups[1] != null && matchedGroups[1].length > 0) {\r\n\t\tif (matchedGroups[1] === '0') {\r\n\t\t\treturn\r\n\t\t}\r\n\t}\r\n\treturn number\r\n}","import Metadata from '../metadata'\r\nimport matchesEntirely from './matchesEntirely'\r\nimport extractNationalNumber from './extractNationalNumber'\r\nimport checkNumberLength from './checkNumberLength'\r\nimport getCountryCallingCode from '../getCountryCallingCode'\r\n\r\n/**\r\n * Sometimes some people incorrectly input international phone numbers\r\n * without the leading `+`. This function corrects such input.\r\n * @param {string} number — Phone number digits.\r\n * @param {string?} country\r\n * @param {string?} callingCode\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCode: string?, number: string }`.\r\n */\r\nexport default function extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(\r\n\tnumber,\r\n\tcountry,\r\n\tcallingCode,\r\n\tmetadata\r\n) {\r\n\tconst countryCallingCode = country ? getCountryCallingCode(country, metadata) : callingCode\r\n\tif (number.indexOf(countryCallingCode) === 0) {\r\n\t\tmetadata = new Metadata(metadata)\r\n\t\tmetadata.selectNumberingPlan(country, callingCode)\r\n\t\tconst possibleShorterNumber = number.slice(countryCallingCode.length)\r\n\t\tconst {\r\n\t\t\tnationalNumber: possibleShorterNationalNumber,\r\n\t\t} = extractNationalNumber(\r\n\t\t\tpossibleShorterNumber,\r\n\t\t\tmetadata\r\n\t\t)\r\n\t\tconst {\r\n\t\t\tnationalNumber\r\n\t\t} = extractNationalNumber(\r\n\t\t\tnumber,\r\n\t\t\tmetadata\r\n\t\t)\r\n\t\t// If the number was not valid before but is valid now,\r\n\t\t// or if it was too long before, we consider the number\r\n\t\t// with the country calling code stripped to be a better result\r\n\t\t// and keep that instead.\r\n\t\t// For example, in Germany (+49), `49` is a valid area code,\r\n\t\t// so if a number starts with `49`, it could be both a valid\r\n\t\t// national German number or an international number without\r\n\t\t// a leading `+`.\r\n\t\tif (\r\n\t\t\t(\r\n\t\t\t\t!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())\r\n\t\t\t\t&&\r\n\t\t\t\tmatchesEntirely(possibleShorterNationalNumber, metadata.nationalNumberPattern())\r\n\t\t\t)\r\n\t\t\t||\r\n\t\t\tcheckNumberLength(nationalNumber, metadata) === 'TOO_LONG'\r\n\t\t) {\r\n\t\t\treturn {\r\n\t\t\t\tcountryCallingCode,\r\n\t\t\t\tnumber: possibleShorterNumber\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn { number }\r\n}","import React from 'react';\n\n//Navidad 2021\n\nexport const CTAsDisfrutarID4 = [\n {\n label: 'Será mi primera experiencia eléctrica',\n value: 'PrimeraExperiencia',\n },\n {\n label: 'Comprobar la duración de la batería',\n value: 'DuraciónBateria',\n },\n {\n label: 'Valorar el consumo y la facilidad de carga',\n value: 'ConsumoCarga',\n },\n {\n label: 'Conducir un coche sostenible',\n value: 'Sostenibilidad',\n },\n {\n label: 'Otros',\n value: 'Otros',\n },\n];\n\n//LANZAMIENTO TAIGO\n\nexport const CTAsTienesVolkswagen = [\n {\n label: 'Sí, lo tengo',\n value: 'Sí, lo tengo',\n },\n {\n label: 'Sí, lo tuve',\n value: 'Sí, lo tuve',\n },\n {\n label: 'No, nunca he tenido un Volkswagen.',\n value: 'No, nunca he tenido un Volkswagen.',\n },\n];\n\nexport const CTAsDesplazamientoTaigo = [\n {\n label: 'En mi coche',\n value: 'mi coche',\n },\n {\n label: 'En transporte público',\n value: 'transporte público',\n },\n {\n label: 'Con carsharing',\n value: 'carsharing',\n },\n {\n label: 'Otro',\n value: 'otro',\n },\n];\n\nexport const CTAsMotivacionCompraTaigo = [\n {\n label: 'Su diseño deportivo e innovador',\n value: 'diseño',\n },\n {\n label: 'El alto nivel de equipamiento',\n value: 'equipamiento',\n },\n {\n label: 'Que además de SUV es coupé',\n value: 'suv/coupe',\n },\n {\n label: '¡Tengo otros motivos!',\n value: 'otro',\n },\n];\n\nexport const CTAsOtroModeloTaigo = [\n {\n label: 'Sí, tengo otros.',\n value: 'true',\n },\n {\n label: 'No, con ninguno.',\n value: 'false',\n },\n];\n","import React, { useEffect } from 'react';\nimport { Text } from '@volkswagen-onehub/components-core';\nimport { OneElementTemplate } from 'src/feature-app/Screen';\nimport { Email, PantallaNombreApellido, DetalleMotivo, Telefono, MultipleCTASelection, ContactInfoWrapper } from 'src/components';\nimport { PantallaMotivoSAC, ConfirmacionSAC, ThankYouSAC } from '.';\nimport { useStore, useDispatch } from 'react-redux';\nimport { dpsSend } from 'src/bff';\nimport { getParamsForm } from 'src/feature-app/get-params-form';\nimport { FormDataGroup, FormInfo, OneFormState, Steps } from 'src/types';\nimport {\n FormController,\n removeWhiteSpace,\n useOneFormContext,\n formatPrefix,\n} from 'src/feature-app';\nimport { formDataBuilder } from '../format-fields';\nimport { contactoOptionsSAC } from 'src/feature-app/InputsValues/CTAsObjects';\n\nexport enum SACFormSteps {\n Motivo,\n MasInformacion,\n NombreApellido,\n EmailTelefono,\n Contacto,\n Confirmacion,\n}\n\nexport const SACForm = () => {\n const { initializeForm } = useOneFormContext();\n const store = useStore();\n const dispatch = useDispatch();\n\n const steps: Steps[] = [\n {\n title: (\n <>\n ¿Cómo podemos ayudarte?\n \n ),\n fields: (\n \n \n \n }\n />\n ),\n screenIndex: SACFormSteps.Motivo,\n name: 'requestType',\n outputs: ['requestType'],\n outputsText: ['requestType'],\n },\n {\n title: (\n <>\n ¿Podrías darnos más detalles sobre tu{' '}\n \n petición?*\n \n \n ),\n fields: } />,\n screenIndex: SACFormSteps.MasInformacion,\n name: 'MasInformacion',\n outputs: ['masInformacion'],\n outputsText: ['masInformacion'],\n },\n {\n title: (\n <>\n Para responderte, nos gustaría saber quién eres\n \n ),\n fields: (\n \n \n \n }\n />\n ),\n screenIndex: SACFormSteps.NombreApellido,\n name: 'NombreApellido',\n outputs: ['name', 'surname', 'secondSurname'],\n outputsText: ['name', 'surname', 'secondSurname'],\n },\n {\n title: (\n <>\n ¿En qué teléfono e email podemos localizarte?\n \n ),\n fields: (\n \n \n \n \n }\n />\n ),\n screenIndex: SACFormSteps.EmailTelefono,\n name: 'EmailTelefono',\n outputs: ['cellphone', 'email'],\n outputsText: ['cellphone', '/', 'email'],\n },\n {\n title: (\n <>\n ¿Cómo prefieres que te{' '}\n \n respondamos?\n *\n \n \n ),\n fields: (\n }\n />\n ),\n screenIndex: SACFormSteps.Contacto,\n name: 'contactoSAC',\n outputs: ['contactoSAC'],\n outputsText: ['contactoSAC'],\n },\n {\n fields: ,\n screenIndex: SACFormSteps.Confirmacion,\n name: 'Confirmacion',\n isLastStep: true,\n hidePreviousStep: true,\n },\n ];\n\n const SACFormData: Partial = {\n headers: {\n DESC_BRAND: 'VW',\n DESC_VN_VO: 'VN',\n DESC_GDPR_ADAPTED: 'true',\n },\n fields: { formName: 'sac', formType: 'otherform', pageCategory: 'Atención al cliente' }, // Analítica\n };\n\n const getFormInfo = (): {\n firstStep: Steps;\n lastStep: Steps;\n stepsHistory: number[];\n numberOfScreens: number;\n newSteps?: Steps[];\n } => {\n return {\n firstStep: steps[0],\n lastStep: steps[steps.length - 1],\n stepsHistory: [0],\n numberOfScreens: steps.length,\n newSteps: null,\n };\n };\n\n const sendForm = (): Promise => {\n const { formData }: OneFormState = store.getState();\n\n const { fields } = formData;\n\n return new Promise(async (resolve, reject) => {\n const { tc, today, url, device } = getParamsForm();\n\n const data = {\n 'headers[COD_FORM_ID]': 'vw-oneform-sac',\n 'headers[DESC_URLORIGIN]': url,\n 'headers[DESC_BRAND]': 'VW',\n 'headers[DESC_CAMPAIGNBLOCK]': '18 - VW Customer Care',\n 'headers[DESC_DEVICETYPE]': device,\n 'headers[DESC_FORMOBJECTIVE]': 'Atención al cliente',\n 'headers[DESC_FORM_DETAIL]': 'ID', //Este debería pasarse a variable, aunque actualmente siempre sea ID\n 'headers[DESC_ID_CAMPAIGN]': '7011n000000AglrAAC',\n 'headers[DESC_TOKEN]': 'VW_DDB_FRM_SAC',\n\n 'headers[FECHA_INSERTION_DATE]': today,\n 'headers[TC]': tc,\n 'headers[DESC_GDPR_ADAPTED]': true,\n\n 'fields[DESC_NAME]': fields.name,\n 'fields[DESC_SURNAME_1]': fields.surname,\n 'fields[DESC_SURNAME_2]': fields.secondSurname,\n 'fields[DESC_EMAIL_ADDRESS]': removeWhiteSpace(fields.email),\n 'fields[NUM_CELLPHONE]': `${formatPrefix(fields.prefix)}${fields.cellphone}`,\n 'fields[DESC_FORM_VERSION]': `vw-oneform-sac-${process.env.VERSION}`,\n 'fields[DESC_PREFERRED_CONTACT_CHANNEL]': fields.contactoSAC,\n 'fields[DESC_REQUEST_TYPE]': fields.requestType,\n 'fields[M_OBSERVATION]': fields.masInformacion,\n 'fields[DESC_LOPD]': 'PERMITE',\n 'fields[DESC_TRANF_DATA_THIRD]': 'NO INFORMADO',\n 'fields[DESC_LSSI]': fields.lssi,\n 'fields[DESC_LOPD_GDPR_PERFILADO]': fields.tmk,\n };\n const dataStringified = JSON.stringify(data);\n const dataParsed = JSON.parse(dataStringified);\n\n const formData = formDataBuilder(dataParsed);\n\n const response = await dpsSend(formData);\n\n if (response && response.data && response.data.content && response.data.content.code === '200') {\n dispatch({ type: 'SET_FORM_RESPONSE', payload: response.data });\n resolve(true);\n } else {\n resolve(false);\n }\n });\n };\n\n useEffect(() => {\n const { firstStep, lastStep, stepsHistory, numberOfScreens, newSteps } = getFormInfo();\n\n const SACFormInfo: Partial = {\n formStarted: true,\n sendFormCallback: sendForm,\n fullScreen: firstStep.fullScreen ? true : false,\n lastStep,\n numberOfScreens,\n screenIndex: firstStep.screenIndex,\n step: firstStep,\n steps: newSteps ? newSteps : steps,\n stepsHistory,\n formType: 'layer',\n formTheme: 'inverted',\n notALayer: false,\n thankYouComponent: ,\n };\n\n initializeForm(SACFormInfo, SACFormData);\n }, []);\n\n return ;\n};\n","import React, { useEffect, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { SelectExtended } from 'src/components';\nimport { useOneFormContext } from 'src/feature-app/OneForm';\nimport { useSelector } from 'react-redux';\nimport { OneFormState } from 'src/types';\nimport { styled } from '@volkswagen-onehub/components-core';\n\nconst InputsWrapper = styled.div`\n padding-top: 44px;\n width: 100%;\n @media all and (min-width: 560px) {\n width: 303px;\n }\n @media all and (min-width: 960px) {\n width: 320px;\n }\n`;\n\nconst motivoOptions = [\n { code: null, key: null, name: null },\n {\n code: 'VE',\n key: 'VE',\n name: 'Venta',\n },\n {\n code: 'PV',\n key: 'PV',\n name: 'Posventa',\n },\n {\n code: 'GDP',\n key: 'GDP',\n name: 'Gestión de datos personales y privacidad',\n },\n {\n code: 'OT',\n key: 'OT',\n name: 'Otras consultas',\n },\n];\n\nexport const PantallaMotivoSAC = () => {\n const { register, watch } = useFormContext();\n const [requestType, setRequestType] = useState('');\n const { fields } = useSelector((state: OneFormState) => state.formData);\n\n useEffect(() => {\n if (fields.requestType) {\n setRequestType(fields.requestType);\n }\n }, []);\n\n function handleChangeMotivo(event: any) {\n const newMotivo = event.currentTarget.value;\n setRequestType(newMotivo);\n }\n\n return (\n <>\n \n {}}\n setOption={setRequestType}\n handleChange={handleChangeMotivo}\n innerRef={register('requestTypeInput', {\n validate: () => {\n if (!requestType) {\n return false;\n }\n return true;\n },\n })}\n />\n \n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { InputError, TextInputExtended, SelectExtended } from 'src/components';\nimport { useOnlyLettersControl } from 'src/components/inputs/use-only-letters-control';\nimport {\n styled,\n} from '@volkswagen-onehub/components-core';\nimport { OneFormState } from 'src/types';\nimport { useSelector } from 'react-redux';\ninterface ContentProps {\n notALayer?: boolean;\n}\n\nconst ContentWrapper = styled.div`\n margin-top: 4px;\n @media screen and (min-width: 960px) {\n display: flex;\n justify-content: space-between;\n flex-wrap: wrap;\n margin-top: 0;\n }\n label {\n margin-top: 40px;\n @media all and (min-width: 560px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid013)' : '303px')};\n }\n @media all and (min-width: 960px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid008)' : '320px')};\n }\n @media all and (min-width: 1280px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid006)' : '320px')};\n }\n @media all and (min-width: 1920px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid005)' : '320px')};\n }\n @media all and (min-width: 2560px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid004)' : '320px')};\n }\n }\n`;\n\nconst roadOptions = [\n {\n code: 'AUTOP',\n name: 'Autopista',\n },\n {\n code: 'AUTOV',\n name: 'Autovía',\n },\n {\n code: 'AVENI',\n name: 'Avenida',\n },\n {\n code: 'BARIO',\n name: 'Barrio',\n },\n {\n code: 'CALLE',\n name: 'Calle',\n },\n {\n code: 'CAMIN',\n name: 'Camino',\n },\n {\n code: 'CARRT',\n name: 'Carretera',\n },\n {\n code: 'GRANV',\n name: 'Gran vía',\n },\n {\n code: 'PASAJ',\n name: 'Pasaje',\n },\n {\n code: 'PASEO',\n name: 'Paseo',\n },\n {\n code: 'PLAYA',\n name: 'Playa',\n },\n {\n code: 'RAMBL',\n name: 'Rambla',\n },\n {\n code: 'RONDA',\n name: 'Ronda',\n },\n {\n code: 'TRAVE',\n name: 'Travesía',\n },\n {\n code: 'URBAN',\n name: 'Urbanización',\n },\n {\n code: 'VIA',\n name: 'Vía',\n },\n];\n\nexport const PantallaDireccionPostal = () => {\n const { register } = useFormContext();\n const { fields } = useSelector((state: OneFormState) => state.formData);\n\n //tipo de vía\n\n const [tipoVia, setTipoVia] = useState('Autopista');\n\n useEffect(() => {\n if (fields.tipoVia) {\n setTipoVia(fields.tipoVia);\n }\n }, []);\n\n function handleChangeTipoVia(event: any) {\n const newTipoVia = event.currentTarget.value;\n setTipoVia(newTipoVia);\n }\n\n //Nombre de la vía\n const [viaValue, setViaValue] = useState('');\n const [pristineVia, setPristineVia] = useState(true);\n const { error, regExp } = useOnlyLettersControl(pristineVia, viaValue);\n const numberRegExp = /\\d|[sS]\\/[nN]/gi;\n const handleChangeVia = (e: any) => {\n setViaValue(e.target.value);\n setPristineVia(false);\n };\n\n //Número\n\n const [numberValue, setNumberValue] = useState('');\n const [pristineNumber, setPristineNumber] = useState(true);\n const [numberError, setNumberError] = useState(false);\n const regExpNonDigit = /\\D/;\n\n const handleChangeNumber = (e: any) => {\n setNumberValue(e.target.value);\n if (regExpNonDigit.test(e.target.value) || (numberValue.length > 1 && numberValue.length < 8)) {\n setNumberError(true);\n } else if (numberValue === 's/n') {\n setNumberError(true);\n }\n\n setNumberError(false);\n\n setPristineNumber(false);\n };\n\n //Piso y puerta\n const [pisoPuertaValue, setPisoPuertaValue] = useState('');\n\n const handleChangePisoPuerta = (e: any) => {\n setPisoPuertaValue(e.target.value);\n };\n\n return (\n \n {}}\n setOption={setTipoVia}\n handleChange={handleChangeTipoVia}\n updateFields\n />\n handleChangeVia(e)}\n required\n />\n {error && Solo se aceptan letras}\n handleChangeNumber(e)}\n required\n />\n {numberError && Se aceptan números o la expresión s/n}\n handleChangePisoPuerta(e)}\n />\n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { InputError, Provincia, TextInputExtended } from 'src/components';\nimport { useOnlyLettersControl } from 'src/components/inputs/use-only-letters-control';\nimport {\n styled,\n} from '@volkswagen-onehub/components-core';\n\ninterface ContentProps {\n notALayer?: boolean;\n}\n\nconst ContentWrapper = styled.div`\n margin-top: 4px;\n @media screen and (min-width: 960px) {\n display: flex;\n justify-content: space-between;\n flex-wrap: wrap;\n margin-top: 0;\n }\n label {\n margin-top: 40px;\n @media all and (min-width: 560px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid013)' : '303px')};\n }\n @media all and (min-width: 960px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid008)' : '320px')};\n }\n @media all and (min-width: 1280px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid006)' : '320px')};\n }\n @media all and (min-width: 1920px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid005)' : '320px')};\n }\n @media all and (min-width: 2560px) {\n width: ${(props) => (props.notALayer ? 'var(--size-grid004)' : '320px')};\n }\n }\n`;\n\nexport const PantallaMunicipio = () => {\n const { register } = useFormContext();\n\n //Localidad\n const [localidadValue, setLocalidadValue] = useState('');\n const [pristineLocalidad, setPristineLocalidad] = useState(true);\n const { error, regExp } = useOnlyLettersControl(pristineLocalidad, localidadValue);\n\n const handleChangeLocalidad = (e: any) => {\n setLocalidadValue(e.target.value);\n setPristineLocalidad(false);\n };\n\n // PostalCode\n const [inputValuePostalCode, setInputValuePostalCode] = useState('');\n const [pristinePostalCode, setPristinePostalCode] = useState(true);\n const [errorPostalCode, setErrorPostalCode] = useState(false);\n const regExpPostalCode = /\\d{5}/gi;\n\n const handleChangePostalCode = (e: any) => {\n setInputValuePostalCode(e.target.value);\n setPristinePostalCode(false);\n };\n\n useEffect(() => {\n if (!pristinePostalCode && inputValuePostalCode.match(regExpPostalCode) === null) {\n setErrorPostalCode(true);\n } else {\n setErrorPostalCode(false);\n }\n }, [inputValuePostalCode, pristinePostalCode]);\n\n //Provincia\n\n const [provinceValue, setProvinceValue] = useState('');\n const [pristineProvince, setPristineProvince] = useState(true);\n const { error: errorProvincia, regExp: regExpProvincia } = useOnlyLettersControl(pristineProvince, provinceValue);\n\n const handleChangeProvince = (e: any) => {\n setProvinceValue(e.target.value);\n setPristineProvince(false);\n };\n\n return (\n \n handleChangeLocalidad(e)}\n required\n />\n {error && Solo se aceptan letras}\n\n handleChangePostalCode(e)}\n required\n />\n {errorPostalCode && Solo se aceptan números}\n\n \n\n \n );\n};\n","import { Breakpoints, Layout } from '@volkswagen-onehub/components-core';\nimport React from 'react';\nimport { \n LegalesFormatoLayer, \n LssiTkmQuestions, \n PoliticaPrivacidad, \n LastNavigation, \n GeneralConfirmacionLayerWrapper \n} from 'src/components';\n\nexport const ConfirmacionSAC = () => {\n\n return (\n \n \n \n \n\n \n\n \n \n \n );\n};\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useTrackingManager, getTrackingForm } from 'src/feature-app';\nimport { RenderController } from 'src/feature-app/Screen';\nimport { OneFormState, Steps } from 'src/types';\nimport { ThankYouTitle, ThankYouFields } from 'src/components';\n\nexport const ThankYouSAC = () => {\n const { formInfo } = useSelector((state: OneFormState) => state);\n const { formResponse } = formInfo;\n\n const trackingManager = useTrackingManager();\n const dispatch = useDispatch();\n \n useEffect(() => {\n dispatch({ type: 'SET_FORM_SUBMITTED', payload: true });\n\n trackingManager.trackFormSubmissionSuccessMessageLoad(\n {\n contentId: undefined,\n },\n getTrackingForm(formResponse)\n );\n }, []);\n\n const screen: Steps = {\n title: ,\n fields: ,\n };\n return (\n \n );\n};\n","import { styled, Text } from '@volkswagen-onehub/components-core';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector, useStore } from 'react-redux';\nimport { useOneFormContext } from 'src/feature-app';\nimport { RenderController } from 'src/feature-app/Screen';\nimport LoadScriptInstance from 'src/feature-app/NewMap/Loadscript';\nimport { LocateUser } from 'src/forms/CitaPosventa/NuevaCitaPosventa';\nimport { TIME_FOR_TRANSFORM } from 'src/globals';\nimport { DealersData, OneFormState, Steps } from 'src/types';\nimport { updateMapVariables } from 'src/feature-app/';\nimport { JourneyCitaPosventaWrapper } from 'src/forms/CitaPosventa/MapaCita/JourneyCitaPosventaWrapper';\n\nexport enum MapaCitaSteps {\n Dealer,\n SeleccionCita,\n Horario,\n}\n\ninterface MapaCitaProps {\n showHorario?: boolean;\n formName?: string;\n}\n\nconst SaltoDeLinea = styled.div`\n display: none;\n @media all and (min-width: 736px) {\n display: inline;\n }\n`;\n\nconst isLastScreen = (steps: Steps[], multiStepScreenIndex: number) => steps.length - 1 === multiStepScreenIndex;\nconst isFirstScreen = (multiStepScreenIndex: number) => multiStepScreenIndex === 0;\n\nexport function NewMapaCita(props: MapaCitaProps) {\n const { formName, showHorario } = props;\n const dispatch = useDispatch();\n const store = useStore();\n const { formData, formInfo, dealersInfo } = useSelector((state: OneFormState) => state);\n const { dealer }: { dealer?: DealersData } = formData.fields;\n const { selectedDealer } = dealersInfo;\n const { firstMapLoad, multiStepScreenIndex, navigationMovingForward } = formInfo;\n\n const {\n handleScreenChange,\n setNextMultiStep,\n setNextMultiStepScreenIndex,\n setPreviousMultiStep,\n setWaitForPreviousStep,\n waitForPreviousStep,\n setIsFullScreen,\n setShowPreviousStep,\n } = useOneFormContext();\n\n const steps: Steps[] = [\n {\n title: (\n \n Bien, empecemos con los detalles de tu visita.{' '}\n \n
    \n
    \n \n ¿A dónde quieres llevar tu{' '}\n \n coche?*\n \n \n
    \n ),\n fields: ,\n screenIndex: MapaCitaSteps.Dealer,\n name: 'MapSearch',\n outputs: ['location'],\n outputsText: ['location'],\n showOverflow: true,\n },\n {\n screenIndex: MapaCitaSteps.SeleccionCita,\n name: 'MapSelect',\n alternateTitle: (\n \n Esta es la cita que has elegido\n \n ),\n title: <>,\n fields: ,\n outputs: ['slot.from', 'dealer.name'],\n outputsText: ['slot.from', 'en el taller', 'dealer.name'],\n fullScreen: true,\n multiStepLastScreen: true,\n hidePreviousStep: true,\n },\n ];\n\n const [selectedStep, setSelectedStep] = useState(steps[0]);\n\n /**\n * Hay que esperar a que se cree el mapa de google para tener acceso a window.google\n */\n const onMapLoad = () => {\n handleFirstLoad();\n };\n\n //\n //\n //\n // Falta añadir la parte del dealer precargado\n //\n //\n //\n const handleFirstLoad = async () => {\n if (firstMapLoad) {\n // Inicialización\n if (dealer) {\n initializeMultiStep(dealer);\n return;\n } else if (selectedDealer) {\n initializeMultiStep(selectedDealer);\n return;\n } else {\n initializeMultiStep();\n }\n } else {\n if (navigationMovingForward || navigationMovingForward === null || navigationMovingForward === undefined) {\n // Inicialización cuando se va hacia adelante una vez inicializado el mapa o después de cerrar el layer y abrir en el mapa.\n initializeMultiStep();\n } else {\n // En caso de que estemos en la última pantalla, desactivamos el wait for next step.\n const newWaitForNextStep = !isLastScreen(steps, multiStepScreenIndex);\n // Lo mismo para previous, solo le desactivamos si estamos en la primera.\n const newWaitForPreviousStep = !isFirstScreen(multiStepScreenIndex);\n\n updateWaitForNextAndPreviousStep(newWaitForNextStep, newWaitForPreviousStep);\n updateScreenChangeVariables(multiStepScreenIndex);\n\n timeoutPreviousStep();\n // En caso de volver al mapa con el cta de editar en confirmación se muestra el previous step, por lo que añadimos este timeout para asegurarnos de que no se muestra.\n timeoutPreviousStep(1000);\n }\n }\n dispatch({ type: 'UPDATE_FIELDS', payload: { horario: 'before' } }); // Al eliminar la pantalla de horario seleccionamos por defecto \"before\" para preseleccionar el primer slot disponible.\n\n setNextMultiStep(() => nextMapaCita);\n setPreviousMultiStep(() => previousMapaCita);\n };\n\n const initializeMultiStep = async (dealer?: DealersData) => {\n if (dealer) {\n await updateMapVariables(dispatch, dealer);\n updateWaitForNextAndPreviousStep(false, true);\n updateScreenChangeVariables(steps.length - 1);\n timeoutPreviousStep();\n } else {\n updateWaitForNextAndPreviousStep(true, false);\n updateScreenChangeVariables(0);\n }\n };\n\n const updateWaitForNextAndPreviousStep = (waitForNextStep: boolean, waitForPreviousStep: boolean) => {\n if (waitForNextStep !== null) {\n dispatch({ type: 'UPDATE_WAIT_FOR_NEXT_STEP', payload: waitForNextStep });\n }\n if (waitForPreviousStep !== null) {\n setWaitForPreviousStep(waitForPreviousStep);\n }\n };\n\n const nextMapaCita = () => {\n const { multiStepScreenIndex } = store.getState().formInfo;\n\n handleScreenChange();\n\n // Una vez avanzamos dentro de los multisteps se activa el wait\n // previous step para volver hacia atrás dentro del propio multistep.\n if (!waitForPreviousStep || multiStepScreenIndex === 0) {\n updateWaitForNextAndPreviousStep(null, true);\n }\n\n setTimeout(() => {\n updateScreenChangeVariables(multiStepScreenIndex + 1);\n // Si estamos en el último paso del multistep se desactiva el\n // wait next step para poder salir del multistep y avanzar hacia la siguiente pantalla.\n if (steps[multiStepScreenIndex + 1].multiStepLastScreen) {\n updateWaitForNextAndPreviousStep(false, null);\n if(multiStepScreenIndex === 0) {\n setShowPreviousStep(false);\n } else {\n setShowPreviousStep(true);\n } \n }\n }, TIME_FOR_TRANSFORM);\n };\n\n const previousMapaCita = () => {\n const { multiStepScreenIndex, waitForNextStep } = store.getState().formInfo;\n\n handleScreenChange();\n\n // Se desactiva el wait previous step en la segunda pantalla para que\n // en el caso de volver hacia atrás en la primera salte de step y no busque dentro de los multisteps.\n if (multiStepScreenIndex === 1) {\n updateWaitForNextAndPreviousStep(null, false);\n }\n\n if (!waitForNextStep) {\n updateWaitForNextAndPreviousStep(true, null);\n }\n\n // Se fija en la pantalla previa a la primera para que cuando se cambie\n // a la primera pantalla el CTA de anterior pase del multistep al step anterior.\n setTimeout(() => {\n updateScreenChangeVariables(multiStepScreenIndex - 1);\n }, TIME_FOR_TRANSFORM);\n };\n\n /**\n * En algunas ocasiones no funciona correctamente el setShowPreviousStep(false) por lo que conviene aplicar un timeout.\n */\n const timeoutPreviousStep = (ms?: number) => {\n setTimeout(\n () => {\n setShowPreviousStep(false);\n },\n ms ? ms : TIME_FOR_TRANSFORM\n );\n };\n\n const updateScreenChangeVariables = (newMultiStepScreenIndex: number) => {\n setNextMultiStepScreenIndex(newMultiStepScreenIndex);\n dispatch({ type: 'UPDATE_MULTISTEP_SCREENINDEX', payload: newMultiStepScreenIndex });\n setSelectedStep(steps[newMultiStepScreenIndex]);\n setIsFullScreen(steps[newMultiStepScreenIndex].fullScreen);\n setShowPreviousStep(!steps[newMultiStepScreenIndex].hidePreviousStep);\n };\n\n useEffect(() => {\n dispatch({ type: 'UPDATE_MULTISTEPS', payload: steps });\n\n handleFirstLoad();\n\n return () => {\n dispatch({ type: 'UPDATE_FIRST_MAP_LOAD', payload: false });\n setShowPreviousStep(true);\n updateWaitForNextAndPreviousStep(false, false);\n };\n }, []);\n\n return (\n \n \n \n );\n}\n","import { Breakpoints, BreakpointWrapper } from '@volkswagen-onehub/components-core';\nimport { CloseHandleV2, FocusLayerSizeV2, LayerManagerV2 } from '@volkswagen-onehub/layer-manager';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { useDispatch, useSelector, useStore } from 'react-redux';\nimport { AvailabilityErrorLayer } from 'src/components';\nimport {\n getSlots,\n isNull,\n LayerManagerWrapper,\n NewDealerCard,\n useFeatureAppConfig,\n useFeatureAppEnvironment,\n useMapGeneralController,\n weekDay_Day_Hour,\n} from 'src/feature-app';\nimport { LoadingLayer, ReservaCitaLayer } from 'src/forms/CitaPosventa/NuevaCitaPosventa';\nimport {\n Assessors,\n Availability,\n CalendarSlot,\n DealersData,\n DmsInfo,\n Horario,\n OneFormState,\n SelectedTab,\n Points,\n Steps,\n} from 'src/types';\nimport { CalendarioCita, getFirstAndLastDayOfMonth } from 'src/feature-app/CalendarioCita/';\nimport { useOneFormContext } from 'src/feature-app/OneForm';\nimport { useFeatureServices } from 'src/feature-app/hooks/use-feature-services';\nimport { \n getDistanceFromLatLngCenter, \n createNoDmsSlotAndAssessor, \n LayerDesktopView, \n LayerMobileView \n} from 'src/feature-app/NewMap';\nimport { getEarliestSlot, sortPointsByDistance } from 'src/feature-app/NewMap/sort-points';\nimport { useIsComerciales } from 'src/feature-app/hooks';\n\ninterface AvailabilityHistory {\n dealerkvps: string;\n availabilityHistory: AvailabilityHistoryDealer[];\n}\n\ninterface AvailabilityHistoryDealer {\n dealer: DmsInfo;\n from: number;\n to: number;\n availability: Availability;\n}\n\nexport const JourneyCitaPosventaController = () => {\n const { formData, formInfo, dealersInfo } = useSelector((state: OneFormState) => state);\n const { horario, dealer }: { horario?: Horario; dealer?: DealersData } = formData.fields;\n const { formEnded, showCalendarOnLoad } = formInfo;\n const { points, selectedDealer } = dealersInfo;\n const { handleNextStep, handleScreenChange, setIsFullScreen } = useOneFormContext();\n const layerManager = useFeatureServices()['layer-manager'] as LayerManagerV2;\n const store = useStore();\n const dispatch = useDispatch();\n const env = useFeatureAppEnvironment();\n const config = useFeatureAppConfig();\n const [showCalendar, setShowCalendar] = useState(false);\n // const [selectedPoint, handleSelectedPoint] = useState(null);\n const [loading, setLoading] = useState(false);\n const [preSelectedOrderValue, setPreSelectedOrderValue] = useState('ubicacion');\n const pointsByTimeRef = useRef(null);\n const pointsByDistanceRef = useRef(null);\n const isComerciales = useIsComerciales();\n\n const availabilityHistory = useRef([]);\n const loadingLayer = useRef(null);\n const {\n clusters,\n centerToCalculateDistance,\n superClusterRef,\n cardsDistanceRef,\n cardsTimeRef,\n selectedPoint,\n handleSelectedPoint,\n } = useMapGeneralController();\n\n const [pointsToList, setPointsToList] = useState(null);\n const [selectedSlot, setSelectedSlot] = useState(null);\n\n useEffect(() => {\n if ((formEnded && dealer && showCalendarOnLoad) || selectedDealer || showCalendarOnLoad) {\n const point = points.find((point: Points) => {\n if (point.properties.dealer.kvps === dealer?.kvps || point.properties.dealer.kvps === selectedDealer?.kvps) {\n return point;\n }\n });\n handleShowCalendarOnClick(point);\n }\n }, []);\n\n //\n // Este useEffect sustituye a los anteriores.\n //\n useEffect(() => {\n if (clusters && superClusterRef.current) {\n const pointsByDistance = sortPointsByDistance(\n clusters,\n centerToCalculateDistance.current,\n superClusterRef.current\n );\n pointsByDistanceRef.current = pointsByDistance;\n setPointsToList(pointsByDistance);\n }\n }, [clusters, superClusterRef.current]);\n\n const getAvailability = async (\n dealer: DealersData,\n start: number,\n end: number,\n skipHandleAvailability?: boolean\n ): Promise => {\n // if (!dealer.dmsInfo || !dealer.dmsInfo.dmsAvailable) {\n // return null;\n // }\n\n const cachedAvailability = checkIfAvailabilityIsInCache(dealer, start);\n\n if (cachedAvailability) {\n return cachedAvailability;\n } else {\n setLoading(true);\n const response = await getSlots(config, dealer, start, end);\n const availability = response.data;\n\n setLoading(false);\n if (!availability.content.calendar) {\n // Error desde VGED\n // handleAvailabilityErrorLayer();\n // Nuevo layer sin conexión DMS\n saveAvailabilityInCache(dealer, start, end, availability);\n return null;\n } else {\n saveAvailabilityInCache(dealer, start, end, availability);\n return availability;\n }\n }\n };\n\n const checkIfAvailabilityIsInCache = (dealer: DealersData, start: number): Availability | null => {\n const dealerHistory = availabilityHistory.current.find((a) => a.dealerkvps === dealer.kvps);\n\n if (dealerHistory) {\n const availabiliyDealer = dealerHistory.availabilityHistory.find(\n (dealerAv) => dealerAv.from === start || start < dealerAv.to\n );\n return availabiliyDealer ? availabiliyDealer.availability : null;\n }\n return null;\n };\n\n const getAvailabilityFromDealer = (kvps: string): AvailabilityHistory | null => {\n const dealerHistory = availabilityHistory.current.find((a) => a.dealerkvps === kvps);\n\n return dealerHistory ? dealerHistory : null;\n };\n\n const saveAvailabilityInCache = (dealer: DealersData, start: number, end: number, availability: Availability) => {\n const dealerInAvailability = availability.content.dealer;\n const availabilityHistoryDealer: AvailabilityHistoryDealer = {\n dealer: dealerInAvailability ? dealerInAvailability : dealer.dmsInfo,\n from: start,\n to: end,\n availability,\n };\n\n const dealerHistoryIndex = availabilityHistory.current.findIndex((a) => a.dealerkvps === dealer.kvps);\n // Si ya existe el dealer se añade a la array de availability.\n if (dealerHistoryIndex !== -1) {\n availabilityHistory.current[dealerHistoryIndex].availabilityHistory.push(availabilityHistoryDealer); // Testear\n } else {\n // Si no existe el dealer se crea una entrada en el histórico.\n availabilityHistory.current = [\n ...availabilityHistory.current,\n {\n dealerkvps: dealer.kvps,\n availabilityHistory: [availabilityHistoryDealer],\n },\n ];\n }\n };\n\n const getRandomInt = (max: number): number => {\n const min = 1;\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n };\n\n const handleDmsMapExit = (slot: CalendarSlot | CalendarSlot[], point: Points) => {\n const { dealer } = point.properties;\n const dealerAvailability = getAvailabilityFromDealer(dealer.kvps);\n if (dealerAvailability && dealerAvailability.availabilityHistory[0].dealer) {\n const dealerFromDms = dealerAvailability.availabilityHistory[0].dealer;\n dealer.dmsInfo = dealerFromDms;\n }\n const { assessors } = dealer.dmsInfo;\n\n let assessor: Assessors;\n // En ocasiones un mismo slot puede tener distintos asesores\n // por lo que hay que seleccionar uno de manera aleatoria.\n if (Array.isArray(slot)) {\n const max = slot.length;\n const index = getRandomInt(max) - 1;\n // slot = slot[selectedIndex];\n assessor = findAssessor(slot[index], assessors);\n } else {\n assessor = findAssessor(slot, assessors);\n }\n\n if (!assessor) {\n assessor = {\n code: 'Undefined',\n name: 'Todos',\n };\n }\n\n const appointmentDealer = createAppointmentDealer(dealer);\n\n handleDealerFlags(dealer);\n\n dispatch({\n type: 'UPDATE_FIELDS',\n payload: { assessor, slot, dealer, appointmentDealer },\n });\n // setWaitForNextStep(false);\n if (!formEnded) {\n handleNextStep();\n }\n };\n\n const findAssessor = (slot: CalendarSlot, assessors: Assessors[]): Assessors => {\n return assessors.find((assessor) => {\n return assessor.name === slot.assessor || assessor.code === slot.assessorCode;\n });\n };\n\n const createAppointmentDealer = (dealer: DealersData) => {\n const { markerInfo, dmsInfo } = dealer;\n\n return {\n assessors: dmsInfo.assessors ? [...dmsInfo.assessors] : undefined,\n dealerId: dmsInfo.dealerId\n ? { ...dmsInfo.dealerId, kvps: dmsInfo.dealerId.kvps ? dmsInfo.dealerId.kvps : dealer.kvps }\n : { ...markerInfo.dealerInfo.dealerId },\n dmsAvailable: dmsInfo.dmsAvailable ? dmsInfo.dmsAvailable : false,\n email: dmsInfo.email ? dmsInfo.email : markerInfo.dealerInfo.mail,\n name: dmsInfo.name ? dmsInfo.name : markerInfo.dealerInfo.name,\n phone: dmsInfo.phone ? dmsInfo.phone : markerInfo.dealerInfo.phone,\n overhaulingServiceAvialable: dmsInfo.overhaulingServiceAvialable ? dmsInfo.overhaulingServiceAvialable : false,\n pickupCarServiceAvailabe: dmsInfo.pickupCarServiceAvailabe ? dmsInfo.pickupCarServiceAvailabe : false,\n replacementCarServiceAvailable: dmsInfo.replacementCarServiceAvailable\n ? dmsInfo.replacementCarServiceAvailable\n : false,\n reference: dmsInfo.reference,\n };\n };\n\n const handleNoDmsMapExit = (franjaHoraria: string, day: string, point: Points) => {\n let { dealer } = point.properties;\n\n const { slot, assessor } = createNoDmsSlotAndAssessor(franjaHoraria, day);\n\n // En caso de que no llegue el dealerId desde dmsInfo, utilizar el de markers\n dealer = {\n ...dealer,\n dmsInfo: {\n ...dealer.dmsInfo,\n dmsAvailable: false,\n pickupCarServiceAvailabe: false,\n replacementCarServiceAvailable: false,\n overhaulingServiceAvialable: false,\n },\n };\n\n const appointmentDealer = createAppointmentDealer(dealer);\n\n handleDealerFlags(dealer);\n\n dispatch({\n type: 'UPDATE_FIELDS',\n payload: { slot, assessor, dealer, appointmentDealer },\n });\n\n if (!formEnded) {\n handleNextStep();\n }\n };\n\n const handleShowSlots = useCallback((point: Points): string | null => {\n const { slots } = point.properties?.dealer;\n let finalSlot;\n\n if (!isNull(slots)) {\n finalSlot = getFinalSlot(getEarliestSlot(slots));\n\n return finalSlot ? finalSlot : null;\n }\n\n return null;\n }, []);\n\n const getFinalSlot = (from: number) => {\n if (!from) {\n return null;\n }\n const momentSlot = weekDay_Day_Hour(from);\n const capitalizedSlot = momentSlot.charAt(0).toUpperCase() + momentSlot.slice(1);\n return capitalizedSlot.replace('-', ' a las ').concat('h');\n };\n\n const handleShowCalendarOnClick = useCallback(async (point: Points) => {\n const { firstDayOfMonth, lastDayOfMonth } = getFirstAndLastDayOfMonth();\n // if (point.properties.dealer.dmsInfo && point.properties.dealer.dmsInfo.dmsAvailable) {\n const availability = await getAvailability(point.properties.dealer, firstDayOfMonth, lastDayOfMonth);\n // if (availability && availability.content.calendar) {\n // handleSelectedPoint(point);\n // setShowCalendar(true);\n // }\n // } else {\n handleSelectedPoint(point);\n setShowCalendar(true);\n // }\n }, []);\n\n const handleHideCalendarOnClick = () => {\n handleSelectedPoint(null);\n setShowCalendar(false);\n };\n\n const handleDealerFlags = (dealer: DealersData) => {\n const { formInfo, formData } = store.getState();\n const { initialSteps, formEnded }: { initialSteps: Steps[]; formEnded: boolean } = formInfo;\n const {\n cocheSustitucion,\n cocheAlTaller,\n dealer: pastDealer,\n }: {\n cocheSustitucion: 'true' | 'false';\n cocheAlTaller: 'true' | 'false';\n dealer: DealersData;\n } = formData.fields;\n let newSteps = [...initialSteps];\n\n if(isComerciales) {\n return;\n }\n\n if (!dealer || !dealer.dmsInfo || !dealer.dmsInfo.pickupCarServiceAvailabe) {\n const tallerIndex = newSteps.findIndex((step) => step.name === 'CocheAlTaller');\n newSteps.splice(tallerIndex, 1);\n }\n\n if (!dealer || !dealer.dmsInfo || !dealer.dmsInfo.replacementCarServiceAvailable) {\n const sustitucionIndex = newSteps.findIndex((step) => step.name === 'CocheSustitucion');\n newSteps.splice(sustitucionIndex, 1);\n }\n\n const newStepsWithIndex = newSteps.map((step, index) => {\n step.screenIndex = index;\n return step;\n });\n\n // Pasamos de dealer sin dms a uno con dms después de llegar a la pantalla de confirmación y volvemos a atrás con editar.\n let newIndex: number;\n let newCocheAlTaller = cocheAlTaller;\n let newCocheSustitucion = cocheSustitucion;\n if (formEnded) {\n // dispatch({ type: 'UPDATE_FIELDS', payload: { cocheSustitucion: null, cocheAlTaller: null } });\n dispatch({ type: 'UPDATE_FORM_ENDED', payload: false });\n\n if (pastDealer.kvps !== dealer.kvps) {\n if (dealer.dmsInfo.pickupCarServiceAvailabe) {\n if (\n cocheAlTaller === 'false' &&\n pastDealer &&\n pastDealer.dmsInfo &&\n !pastDealer.dmsInfo.pickupCarServiceAvailabe\n ) {\n newIndex = newStepsWithIndex.findIndex((step) => step.name === 'CocheAlTaller');\n newCocheAlTaller = null;\n }\n }\n if (dealer.dmsInfo.replacementCarServiceAvailable) {\n if (\n cocheAlTaller === 'false' &&\n pastDealer &&\n pastDealer.dmsInfo &&\n !pastDealer.dmsInfo.replacementCarServiceAvailable\n ) {\n newIndex = newStepsWithIndex.findIndex((step) => step.name === 'CocheSustitucion');\n newCocheSustitucion = null;\n }\n }\n }\n }\n\n dispatch({ type: 'UPDATE_STEPS', payload: newStepsWithIndex });\n dispatch({\n type: 'UPDATE_LAST_STEP',\n payload: newStepsWithIndex[newStepsWithIndex.length - 1],\n });\n dispatch({\n type: 'SET_NUMBER_OF_SCREENS',\n payload: newStepsWithIndex.length,\n });\n // Solo se llega a esta parte después de finalizar el journey y volver al mapa para editar la concesión.\n if (formEnded) {\n newIndex = newIndex ? newIndex : newStepsWithIndex.length - 1;\n dispatch({\n type: 'UPDATE_FIELDS',\n payload: {\n cocheSustitucion: newCocheSustitucion,\n cocheAlTaller: newCocheAlTaller,\n },\n });\n\n dispatch({\n type: 'UPDATE_STEP',\n payload: newStepsWithIndex[newIndex],\n });\n handleScreenChange(newIndex);\n if (newStepsWithIndex[newIndex].name !== 'Confirmacion') {\n dispatch({ type: 'UPDATE_FULLSCREEN', payload: false });\n setIsFullScreen(false);\n }\n }\n };\n\n const renderCalendar = (): JSX.Element => {\n const { centerToCalculateDistance, userIsGeoLocated } = useMapGeneralController();\n\n return (\n \n );\n };\n\n const renderPoints = (\n points: Points[],\n carPickupSelected?: boolean,\n replacementCarSelected?: boolean\n ): JSX.Element[] => {\n return pointsByDistanceRef.current\n ? pointsByDistanceRef.current.map((point: Points, index: number) => {\n if (!point.properties.cluster) {\n const { dealer } = point.properties;\n const distanceFromCenter = getDistanceFromLatLngCenter(centerToCalculateDistance.current, point);\n\n return (\n {\n cardsDistanceRef.current[index] = el;\n }}\n >\n \n \n );\n }\n return null;\n })\n : null;\n };\n\n // Gestión del point seleccionado y del boton de seleccionar (dms)\n const handleSeleccionarOnClick = useCallback((point: any) => {\n handleSelectedPoint(point);\n handleReservaCitaLayer(point);\n }, []);\n\n //render layers reservar cita\n const renderReservaCita = (state: any, close: CloseHandleV2) => {\n return (\n \n \n \n );\n };\n\n const renderAvailabilityErrorLayer = (state: any, close: CloseHandleV2) => {\n return (\n \n \n \n );\n };\n const renderLoadingLayer = () => {\n return (\n \n \n \n );\n };\n\n //manejadores layers\n const handleReservaCitaLayer = (point: Points) => {\n layerManager.openFocusLayer(renderReservaCita, { selectedPoint: point }, { size: FocusLayerSizeV2.A });\n };\n const handleAvailabilityErrorLayer = () => {\n layerManager.openFocusLayer(renderAvailabilityErrorLayer, {}, { size: FocusLayerSizeV2.A });\n };\n\n const handleLoadingLayer = () => {\n if (loading) {\n const layer = layerManager.openFocusLayer(renderLoadingLayer, {}, { size: FocusLayerSizeV2.A });\n loadingLayer.current = layer;\n } else {\n if (loadingLayer.current) {\n loadingLayer.current.close();\n loadingLayer.current = null;\n }\n }\n };\n\n useEffect(() => {\n handleLoadingLayer();\n }, [loading]);\n\n // availability functions\n\n return (\n
    \n <>\n \n \n \n\n \n \n \n \n
    \n );\n};\n","import { CloseHandleV2, FocusLayerSizeV2, LayerManagerV2 } from '@volkswagen-onehub/layer-manager';\nimport { AxiosResponse } from 'axios';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { useDispatch, useSelector, useStore } from 'react-redux';\nimport { AvailabilityErrorLayer } from 'src/components';\nimport {\n getSlots,\n LayerManagerWrapper,\n useFeatureAppConfig,\n useFeatureAppEnvironment,\n useMapGeneralController,\n} from 'src/feature-app';\nimport { useFeatureServices } from 'src/feature-app/hooks/use-feature-services';\nimport { LoadingLayer } from 'src/forms/CitaPosventa/NuevaCitaPosventa';\nimport {\n Assessors,\n Availability,\n CalendarSlot,\n DealersData,\n DmsInfo,\n Horario,\n OneFormState,\n Points,\n} from 'src/types';\nimport { createNoDmsSlotAndAssessor } from 'src/feature-app/NewMap';\nimport { CalendarioCita } from 'src/feature-app/CalendarioCita';\nimport { useOneFormContext } from 'src/feature-app/OneForm';\n\ninterface AvailabilityHistory {\n dealerkvps: string;\n availabilityHistory: AvailabilityHistoryDealer[];\n}\n\ninterface AvailabilityHistoryDealer {\n dealer: DmsInfo;\n from: number;\n to: number;\n availability: Availability;\n}\n\n\n\n\n\nexport const JourneyCitaPosventaDealerController = () => {\n const { formData, formInfo, dealersInfo } = useSelector((state: OneFormState) => state);\n const { horario, dealer, dealerKvps }: { horario?: Horario; dealer?: DealersData; dealerKvps?: string } =\n formData.fields;\n const { points } = dealersInfo;\n const { handleNextStep } = useOneFormContext();\n const layerManager = useFeatureServices()['layer-manager'] as LayerManagerV2;\n const store = useStore();\n const dispatch = useDispatch();\n const env = useFeatureAppEnvironment();\n const config = useFeatureAppConfig();\n const [showCalendar, setShowCalendar] = useState(false);\n // const [selectedPoint, handleSelectedPoint] = useState(null);\n const [loading, setLoading] = useState(false);\n const [loadingPoint, setLoadingPoint] = useState(true);\n\n const availabilityHistory = useRef([]);\n const loadingLayer = useRef(null);\n const { selectedPoint, handleSelectedPoint } =\n useMapGeneralController();\n\n const [pointsToList, setPointsToList] = useState(null);\n const [selectedSlot, setSelectedSlot] = useState(null);\n\n useEffect(() => {\n setLoadingPoint(true);\n // setTimeout(() => {\n const point = points.find((point: Points) => {\n if (point.properties.dealer.kvps === dealer?.kvps || point.properties.dealer.kvps === dealerKvps) {\n return point;\n }\n });\n // handleShowCalendarOnClick(point);\n setLoadingPoint(false);\n // }, 0);\n }, []);\n\n\n const getAvailability = async (\n dealer: DealersData,\n start: number,\n end: number,\n skipHandleAvailability?: boolean\n ): Promise => {\n \n const cachedAvailability = checkIfAvailabilityIsInCache(dealer, start);\n\n if (cachedAvailability) {\n return cachedAvailability;\n } else {\n setLoading(true);\n let response: AxiosResponse;\n if (availabilityHistory.current.length === 0) {\n \n response = await getSlots(config, dealer);\n } else {\n response = await getSlots(config, dealer, start, end);\n }\n const availability = response.data;\n setLoading(false);\n if (!availability.content.calendar) {\n // Error desde VGED\n // handleAvailabilityErrorLayer();\n // Nuevo layer sin conexión DMS\n saveAvailabilityInCache(dealer, start, end, availability);\n return null;\n } else {\n saveAvailabilityInCache(dealer, start, end, availability);\n return availability;\n }\n }\n };\n\n const checkIfAvailabilityIsInCache = (dealer: DealersData, start: number): Availability | null => {\n const dealerHistory = availabilityHistory.current.find((a) => a.dealerkvps === dealer.kvps);\n\n if (dealerHistory) {\n const availabiliyDealer = dealerHistory.availabilityHistory.find(\n (dealerAv) => dealerAv.from === start || start <= dealerAv.to || Math.abs(start - dealerAv.to) < 1000 // Cuando compara dos valores practicamente identicos no hace bien la resta y devuelve error.\n );\n return availabiliyDealer ? availabiliyDealer.availability : null;\n }\n return null;\n };\n\n const getAvailabilityFromDealer = (kvps: string): AvailabilityHistory | null => {\n const dealerHistory = availabilityHistory.current.find((a) => a.dealerkvps === kvps);\n\n return dealerHistory ? dealerHistory : null;\n };\n\n const saveAvailabilityInCache = (dealer: DealersData, start: number, end: number, availability: Availability) => {\n const dealerInAvailability = availability.content.dealer;\n const availabilityHistoryDealer: AvailabilityHistoryDealer = {\n dealer: dealerInAvailability ? dealerInAvailability : dealer.dmsInfo,\n from: start,\n to: end,\n availability,\n };\n\n const dealerHistoryIndex = availabilityHistory.current.findIndex((a) => a.dealerkvps === dealer.kvps);\n // Si ya existe el dealer se añade a la array de availability.\n if (dealerHistoryIndex !== -1) {\n availabilityHistory.current[dealerHistoryIndex].availabilityHistory.push(availabilityHistoryDealer); // Testear\n } else {\n // Si no existe el dealer se crea una entrada en el histórico.\n availabilityHistory.current = [\n ...availabilityHistory.current,\n { dealerkvps: dealer.kvps, availabilityHistory: [availabilityHistoryDealer] },\n ];\n }\n };\n\n const getRandomInt = (max: number): number => {\n const min = 1;\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n };\n\n const handleDmsMapExit = (slot: CalendarSlot | CalendarSlot[], point: Points) => {\n const { dealer } = point.properties;\n const dealerAvailability = getAvailabilityFromDealer(dealer.kvps);\n if (dealerAvailability && dealerAvailability.availabilityHistory[0].dealer) {\n const dealerFromDms = dealerAvailability.availabilityHistory[0].dealer;\n dealer.dmsInfo = dealerFromDms;\n }\n const { assessors } = dealer.dmsInfo;\n let assessor: Assessors;\n // En ocasiones un mismo slot puede tener distintos asesores\n // por lo que hay que seleccionar uno de manera aleatoria.\n if (Array.isArray(slot)) {\n const max = slot.length;\n const index = getRandomInt(max) - 1;\n // slot = slot[selectedIndex];\n assessor = findAssessor(slot[index], assessors);\n } else {\n assessor = findAssessor(slot, assessors);\n }\n\n if (!assessor) {\n assessor = {\n code: 'Undefined',\n name: 'Todos',\n };\n }\n\n const appointmentDealer = createAppointmentDealer(dealer);\n\n dispatch({\n type: 'UPDATE_FIELDS',\n payload: { assessor, slot, dealer, appointmentDealer },\n });\n // setWaitForNextStep(false);\n handleNextStep();\n };\n\n const findAssessor = (slot: CalendarSlot, assessors: Assessors[]): Assessors => {\n return assessors.find((assessor) => {\n return assessor.name === slot.assessor || assessor.code === slot.assessorCode;\n });\n };\n\n const createAppointmentDealer = (dealer: DealersData) => {\n const { markerInfo, dmsInfo } = dealer;\n\n return {\n assessors: dmsInfo.assessors ? [...dmsInfo.assessors] : undefined,\n dealerId: dmsInfo.dealerId ? { ...dmsInfo.dealerId } : { ...markerInfo.dealerInfo.dealerId },\n dmsAvailable: dmsInfo.dmsAvailable ? dmsInfo.dmsAvailable : false,\n email: dmsInfo.email ? dmsInfo.email : markerInfo.dealerInfo.mail,\n name: dmsInfo.name ? dmsInfo.name : markerInfo.dealerInfo.name,\n phone: dmsInfo.phone ? dmsInfo.phone : markerInfo.dealerInfo.phone,\n overhaulingServiceAvialable: dmsInfo.overhaulingServiceAvialable ? dmsInfo.overhaulingServiceAvialable : false,\n pickupCarServiceAvailabe: dmsInfo.pickupCarServiceAvailabe ? dmsInfo.pickupCarServiceAvailabe : false,\n replacementCarServiceAvailable: dmsInfo.replacementCarServiceAvailable\n ? dmsInfo.replacementCarServiceAvailable\n : false,\n reference: dmsInfo.reference,\n };\n };\n\n const handleNoDmsMapExit = (franjaHoraria: string, day: string, point: Points) => {\n let { dealer } = point.properties;\n const { slot, assessor } = createNoDmsSlotAndAssessor(franjaHoraria, day);\n\n dealer = {\n ...dealer,\n dmsInfo: {\n ...dealer.dmsInfo,\n dmsAvailable: false,\n pickupCarServiceAvailabe: false,\n replacementCarServiceAvailable: false,\n overhaulingServiceAvialable: false,\n },\n };\n\n const appointmentDealer = createAppointmentDealer(dealer);\n\n dispatch({\n type: 'UPDATE_FIELDS',\n payload: { slot, assessor, dealer, appointmentDealer },\n });\n\n handleNextStep();\n };\n\n const handleHideCalendarOnClick = () => {\n handleSelectedPoint(null);\n setShowCalendar(false);\n };\n\n const renderCalendar = (): JSX.Element => {\n const { centerToCalculateDistance, userIsGeoLocated } = useMapGeneralController();\n\n return (\n \n );\n };\n\n const renderAvailabilityErrorLayer = (state: any, close: CloseHandleV2) => {\n return (\n \n \n \n );\n };\n const renderLoadingLayer = () => {\n return (\n \n \n \n );\n };\n\n //manejadores layers\n\n const handleLoadingLayer = () => {\n if (loading) {\n const layer = layerManager.openFocusLayer(renderLoadingLayer, {}, { size: FocusLayerSizeV2.A });\n loadingLayer.current = layer;\n } else {\n if (loadingLayer.current) {\n loadingLayer.current.close();\n loadingLayer.current = null;\n }\n }\n };\n\n useEffect(() => {\n handleLoadingLayer();\n }, [loading]);\n\n return !loadingPoint ? renderCalendar() : null;\n};\n","import React from 'react';\nimport { JourneyCitaPosventaDealerController } from './JourneyCitaPosventaDealerController';\nimport { MapGeneralController } from 'src/feature-app/NewMap/MapGeneralController';\n\n/**\n * Este componente está creado únicamente para que JourneyCitaPosventaController tenga acceso a las variables de MapGeneralController.\n */\nexport const JourneyCitaPosventaDealerWrapper = () => {\n return (\n \n \n \n );\n};\n","import React from 'react';\nimport { JourneyCitaPosventaController } from 'src/forms/CitaPosventa';\nimport { MapGeneralController } from 'src/feature-app/NewMap/MapGeneralController';\n\n/**\n * Este componente está creado únicamente para que JourneyCitaPosventaController tenga acceso a las variables de MapGeneralController.\n */\nexport const JourneyCitaPosventaWrapper = () => {\n return (\n \n \n \n );\n};\n","import { Text } from '@volkswagen-onehub/components-core';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useOneFormContext } from 'src/feature-app';\nimport { RenderController } from 'src/feature-app/Screen';\nimport { TIME_FOR_TRANSFORM } from 'src/globals';\nimport { DealersData, OneFormState, Steps } from 'src/types';\nimport { updateMapVariables } from 'src/feature-app/';\nimport { MapaCitaSteps } from 'src/forms/CitaPosventa/MapaCita/MapaCita';\nimport { JourneyCitaPosventaDealerWrapper } from 'src/forms/CitaPosventa/MapaCita/JourneyCitaPosventaDealerWrapper';\n\ninterface MapaCitaProps {\n showHorario?: boolean;\n formName?: string;\n}\n\nexport function MapaCitaDealer(props: MapaCitaProps) {\n const dispatch = useDispatch();\n const { formData, dealersInfo } = useSelector((state: OneFormState) => state);\n const { selectedDealer, urlDealer } = dealersInfo;\n\n const { dealer }: { dealer?: DealersData } = formData.fields;\n\n const {\n handleScreenChange,\n setNextMultiStep,\n setNextMultiStepScreenIndex,\n setPreviousMultiStep,\n setWaitForPreviousStep,\n setIsFullScreen,\n setShowPreviousStep,\n } = useOneFormContext();\n\n const steps: Steps[] = [\n {\n screenIndex: 0,\n name: 'MapSelect',\n alternateTitle: (\n \n Esta es la cita que has elegido\n \n ),\n title: <>,\n fields: ,\n outputs: ['slot.from', 'dealer.name'],\n outputsText: ['slot.from', 'en el taller', 'dealer.name'],\n fullScreen: true,\n multiStepLastScreen: true,\n hidePreviousStep: true,\n },\n ];\n\n const [selectedStep, setSelectedStep] = useState(steps[0]);\n\n const handleFirstLoad = async () => {\n if (urlDealer) {\n initializeMultiStep(urlDealer);\n return;\n } else if (selectedDealer) {\n initializeMultiStep(selectedDealer);\n return;\n } else {\n initializeMultiStep();\n }\n\n setNextMultiStep(() => navigateMultiStep);\n setPreviousMultiStep(() => navigateMultiStep);\n };\n\n const initializeMultiStep = async (dealer?: DealersData) => {\n if (dealer) {\n dispatch({ type: 'UPDATE_MULTISTEP_SCREENINDEX', payload: 0 });\n await updateMapVariables(dispatch, dealer);\n updateScreenChangeVariables(0);\n updateWaitForNextAndPreviousStep(false, false);\n timeoutPreviousStep();\n }\n };\n\n const updateWaitForNextAndPreviousStep = (waitForNextStep: boolean, waitForPreviousStep: boolean) => {\n if (waitForNextStep !== null) {\n dispatch({ type: 'UPDATE_WAIT_FOR_NEXT_STEP', payload: waitForNextStep });\n }\n if (waitForPreviousStep !== null) {\n setWaitForPreviousStep(waitForPreviousStep);\n }\n };\n\n const navigateMultiStep = () => {\n handleScreenChange();\n };\n\n /**\n * En algunas ocasiones no funciona correctamente el setShowPreviousStep(false) por lo que conviene aplicar un timeout.\n */\n const timeoutPreviousStep = (ms?: number) => {\n setTimeout(\n () => {\n setShowPreviousStep(false);\n },\n ms ? ms : TIME_FOR_TRANSFORM\n );\n };\n\n const updateScreenChangeVariables = (newMultiStepScreenIndex: number) => {\n setIsFullScreen(true);\n dispatch({ type: 'UPDATE_FULLSCREEN', payload: true });\n setNextMultiStepScreenIndex(newMultiStepScreenIndex);\n dispatch({ type: 'UPDATE_MULTISTEP_SCREENINDEX', payload: newMultiStepScreenIndex });\n setSelectedStep(steps[newMultiStepScreenIndex]);\n setShowPreviousStep(false);\n };\n\n useEffect(() => {\n dispatch({ type: 'UPDATE_MULTISTEPS', payload: steps });\n handleFirstLoad();\n\n return () => {\n dispatch({ type: 'UPDATE_FIRST_MAP_LOAD', payload: false });\n setShowPreviousStep(true);\n updateWaitForNextAndPreviousStep(false, false);\n };\n }, []);\n\n return (\n \n );\n}\n","\nexport default function sortKD(ids, coords, nodeSize, left, right, depth) {\n if (right - left <= nodeSize) return;\n\n const m = (left + right) >> 1;\n\n select(ids, coords, m, left, right, depth % 2);\n\n sortKD(ids, coords, nodeSize, left, m - 1, depth + 1);\n sortKD(ids, coords, nodeSize, m + 1, right, depth + 1);\n}\n\nfunction select(ids, coords, k, left, right, inc) {\n\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n select(ids, coords, k, newLeft, newRight, inc);\n }\n\n const t = coords[2 * k + inc];\n let i = left;\n let j = right;\n\n swapItem(ids, coords, left, k);\n if (coords[2 * right + inc] > t) swapItem(ids, coords, left, right);\n\n while (i < j) {\n swapItem(ids, coords, i, j);\n i++;\n j--;\n while (coords[2 * i + inc] < t) i++;\n while (coords[2 * j + inc] > t) j--;\n }\n\n if (coords[2 * left + inc] === t) swapItem(ids, coords, left, j);\n else {\n j++;\n swapItem(ids, coords, j, right);\n }\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n}\n\nfunction swapItem(ids, coords, i, j) {\n swap(ids, i, j);\n swap(coords, 2 * i, 2 * j);\n swap(coords, 2 * i + 1, 2 * j + 1);\n}\n\nfunction swap(arr, i, j) {\n const tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\n","\nexport default function within(ids, coords, qx, qy, r, nodeSize) {\n const stack = [0, ids.length - 1, 0];\n const result = [];\n const r2 = r * r;\n\n while (stack.length) {\n const axis = stack.pop();\n const right = stack.pop();\n const left = stack.pop();\n\n if (right - left <= nodeSize) {\n for (let i = left; i <= right; i++) {\n if (sqDist(coords[2 * i], coords[2 * i + 1], qx, qy) <= r2) result.push(ids[i]);\n }\n continue;\n }\n\n const m = Math.floor((left + right) / 2);\n\n const x = coords[2 * m];\n const y = coords[2 * m + 1];\n\n if (sqDist(x, y, qx, qy) <= r2) result.push(ids[m]);\n\n const nextAxis = (axis + 1) % 2;\n\n if (axis === 0 ? qx - r <= x : qy - r <= y) {\n stack.push(left);\n stack.push(m - 1);\n stack.push(nextAxis);\n }\n if (axis === 0 ? qx + r >= x : qy + r >= y) {\n stack.push(m + 1);\n stack.push(right);\n stack.push(nextAxis);\n }\n }\n\n return result;\n}\n\nfunction sqDist(ax, ay, bx, by) {\n const dx = ax - bx;\n const dy = ay - by;\n return dx * dx + dy * dy;\n}\n","\nimport sort from './sort';\nimport range from './range';\nimport within from './within';\n\nconst defaultGetX = p => p[0];\nconst defaultGetY = p => p[1];\n\nexport default class KDBush {\n constructor(points, getX = defaultGetX, getY = defaultGetY, nodeSize = 64, ArrayType = Float64Array) {\n this.nodeSize = nodeSize;\n this.points = points;\n\n const IndexArrayType = points.length < 65536 ? Uint16Array : Uint32Array;\n\n const ids = this.ids = new IndexArrayType(points.length);\n const coords = this.coords = new ArrayType(points.length * 2);\n\n for (let i = 0; i < points.length; i++) {\n ids[i] = i;\n coords[2 * i] = getX(points[i]);\n coords[2 * i + 1] = getY(points[i]);\n }\n\n sort(ids, coords, nodeSize, 0, ids.length - 1, 0);\n }\n\n range(minX, minY, maxX, maxY) {\n return range(this.ids, this.coords, minX, minY, maxX, maxY, this.nodeSize);\n }\n\n within(x, y, r) {\n return within(this.ids, this.coords, x, y, r, this.nodeSize);\n }\n}\n","\nexport default function range(ids, coords, minX, minY, maxX, maxY, nodeSize) {\n const stack = [0, ids.length - 1, 0];\n const result = [];\n let x, y;\n\n while (stack.length) {\n const axis = stack.pop();\n const right = stack.pop();\n const left = stack.pop();\n\n if (right - left <= nodeSize) {\n for (let i = left; i <= right; i++) {\n x = coords[2 * i];\n y = coords[2 * i + 1];\n if (x >= minX && x <= maxX && y >= minY && y <= maxY) result.push(ids[i]);\n }\n continue;\n }\n\n const m = Math.floor((left + right) / 2);\n\n x = coords[2 * m];\n y = coords[2 * m + 1];\n\n if (x >= minX && x <= maxX && y >= minY && y <= maxY) result.push(ids[m]);\n\n const nextAxis = (axis + 1) % 2;\n\n if (axis === 0 ? minX <= x : minY <= y) {\n stack.push(left);\n stack.push(m - 1);\n stack.push(nextAxis);\n }\n if (axis === 0 ? maxX >= x : maxY >= y) {\n stack.push(m + 1);\n stack.push(right);\n stack.push(nextAxis);\n }\n }\n\n return result;\n}\n","\nimport KDBush from 'kdbush';\n\nconst defaultOptions = {\n minZoom: 0, // min zoom to generate clusters on\n maxZoom: 16, // max zoom level to cluster the points on\n minPoints: 2, // minimum points to form a cluster\n radius: 40, // cluster radius in pixels\n extent: 512, // tile extent (radius is calculated relative to it)\n nodeSize: 64, // size of the KD-tree leaf node, affects performance\n log: false, // whether to log timing info\n\n // whether to generate numeric ids for input features (in vector tiles)\n generateId: false,\n\n // a reduce function for calculating custom cluster properties\n reduce: null, // (accumulated, props) => { accumulated.sum += props.sum; }\n\n // properties to use for individual points when running the reducer\n map: props => props // props => ({sum: props.my_value})\n};\n\nexport default class Supercluster {\n constructor(options) {\n this.options = extend(Object.create(defaultOptions), options);\n this.trees = new Array(this.options.maxZoom + 1);\n }\n\n load(points) {\n const {log, minZoom, maxZoom, nodeSize} = this.options;\n\n if (log) console.time('total time');\n\n const timerId = `prepare ${ points.length } points`;\n if (log) console.time(timerId);\n\n this.points = points;\n\n // generate a cluster object for each point and index input points into a KD-tree\n let clusters = [];\n for (let i = 0; i < points.length; i++) {\n if (!points[i].geometry) continue;\n clusters.push(createPointCluster(points[i], i));\n }\n this.trees[maxZoom + 1] = new KDBush(clusters, getX, getY, nodeSize, Float32Array);\n\n if (log) console.timeEnd(timerId);\n\n // cluster points on max zoom, then cluster the results on previous zoom, etc.;\n // results in a cluster hierarchy across zoom levels\n for (let z = maxZoom; z >= minZoom; z--) {\n const now = +Date.now();\n\n // create a new set of clusters for the zoom and index them with a KD-tree\n clusters = this._cluster(clusters, z);\n this.trees[z] = new KDBush(clusters, getX, getY, nodeSize, Float32Array);\n\n if (log) console.log('z%d: %d clusters in %dms', z, clusters.length, +Date.now() - now);\n }\n\n if (log) console.timeEnd('total time');\n\n return this;\n }\n\n getClusters(bbox, zoom) {\n let minLng = ((bbox[0] + 180) % 360 + 360) % 360 - 180;\n const minLat = Math.max(-90, Math.min(90, bbox[1]));\n let maxLng = bbox[2] === 180 ? 180 : ((bbox[2] + 180) % 360 + 360) % 360 - 180;\n const maxLat = Math.max(-90, Math.min(90, bbox[3]));\n\n if (bbox[2] - bbox[0] >= 360) {\n minLng = -180;\n maxLng = 180;\n } else if (minLng > maxLng) {\n const easternHem = this.getClusters([minLng, minLat, 180, maxLat], zoom);\n const westernHem = this.getClusters([-180, minLat, maxLng, maxLat], zoom);\n return easternHem.concat(westernHem);\n }\n\n const tree = this.trees[this._limitZoom(zoom)];\n const ids = tree.range(lngX(minLng), latY(maxLat), lngX(maxLng), latY(minLat));\n const clusters = [];\n for (const id of ids) {\n const c = tree.points[id];\n clusters.push(c.numPoints ? getClusterJSON(c) : this.points[c.index]);\n }\n return clusters;\n }\n\n getChildren(clusterId) {\n const originId = this._getOriginId(clusterId);\n const originZoom = this._getOriginZoom(clusterId);\n const errorMsg = 'No cluster with the specified id.';\n\n const index = this.trees[originZoom];\n if (!index) throw new Error(errorMsg);\n\n const origin = index.points[originId];\n if (!origin) throw new Error(errorMsg);\n\n const r = this.options.radius / (this.options.extent * Math.pow(2, originZoom - 1));\n const ids = index.within(origin.x, origin.y, r);\n const children = [];\n for (const id of ids) {\n const c = index.points[id];\n if (c.parentId === clusterId) {\n children.push(c.numPoints ? getClusterJSON(c) : this.points[c.index]);\n }\n }\n\n if (children.length === 0) throw new Error(errorMsg);\n\n return children;\n }\n\n getLeaves(clusterId, limit, offset) {\n limit = limit || 10;\n offset = offset || 0;\n\n const leaves = [];\n this._appendLeaves(leaves, clusterId, limit, offset, 0);\n\n return leaves;\n }\n\n getTile(z, x, y) {\n const tree = this.trees[this._limitZoom(z)];\n const z2 = Math.pow(2, z);\n const {extent, radius} = this.options;\n const p = radius / extent;\n const top = (y - p) / z2;\n const bottom = (y + 1 + p) / z2;\n\n const tile = {\n features: []\n };\n\n this._addTileFeatures(\n tree.range((x - p) / z2, top, (x + 1 + p) / z2, bottom),\n tree.points, x, y, z2, tile);\n\n if (x === 0) {\n this._addTileFeatures(\n tree.range(1 - p / z2, top, 1, bottom),\n tree.points, z2, y, z2, tile);\n }\n if (x === z2 - 1) {\n this._addTileFeatures(\n tree.range(0, top, p / z2, bottom),\n tree.points, -1, y, z2, tile);\n }\n\n return tile.features.length ? tile : null;\n }\n\n getClusterExpansionZoom(clusterId) {\n let expansionZoom = this._getOriginZoom(clusterId) - 1;\n while (expansionZoom <= this.options.maxZoom) {\n const children = this.getChildren(clusterId);\n expansionZoom++;\n if (children.length !== 1) break;\n clusterId = children[0].properties.cluster_id;\n }\n return expansionZoom;\n }\n\n _appendLeaves(result, clusterId, limit, offset, skipped) {\n const children = this.getChildren(clusterId);\n\n for (const child of children) {\n const props = child.properties;\n\n if (props && props.cluster) {\n if (skipped + props.point_count <= offset) {\n // skip the whole cluster\n skipped += props.point_count;\n } else {\n // enter the cluster\n skipped = this._appendLeaves(result, props.cluster_id, limit, offset, skipped);\n // exit the cluster\n }\n } else if (skipped < offset) {\n // skip a single point\n skipped++;\n } else {\n // add a single point\n result.push(child);\n }\n if (result.length === limit) break;\n }\n\n return skipped;\n }\n\n _addTileFeatures(ids, points, x, y, z2, tile) {\n for (const i of ids) {\n const c = points[i];\n const isCluster = c.numPoints;\n const f = {\n type: 1,\n geometry: [[\n Math.round(this.options.extent * (c.x * z2 - x)),\n Math.round(this.options.extent * (c.y * z2 - y))\n ]],\n tags: isCluster ? getClusterProperties(c) : this.points[c.index].properties\n };\n\n // assign id\n let id;\n if (isCluster) {\n id = c.id;\n } else if (this.options.generateId) {\n // optionally generate id\n id = c.index;\n } else if (this.points[c.index].id) {\n // keep id if already assigned\n id = this.points[c.index].id;\n }\n\n if (id !== undefined) f.id = id;\n\n tile.features.push(f);\n }\n }\n\n _limitZoom(z) {\n return Math.max(this.options.minZoom, Math.min(+z, this.options.maxZoom + 1));\n }\n\n _cluster(points, zoom) {\n const clusters = [];\n const {radius, extent, reduce, minPoints} = this.options;\n const r = radius / (extent * Math.pow(2, zoom));\n\n // loop through each point\n for (let i = 0; i < points.length; i++) {\n const p = points[i];\n // if we've already visited the point at this zoom level, skip it\n if (p.zoom <= zoom) continue;\n p.zoom = zoom;\n\n // find all nearby points\n const tree = this.trees[zoom + 1];\n const neighborIds = tree.within(p.x, p.y, r);\n\n const numPointsOrigin = p.numPoints || 1;\n let numPoints = numPointsOrigin;\n\n // count the number of points in a potential cluster\n for (const neighborId of neighborIds) {\n const b = tree.points[neighborId];\n // filter out neighbors that are already processed\n if (b.zoom > zoom) numPoints += b.numPoints || 1;\n }\n\n if (numPoints >= minPoints) { // enough points to form a cluster\n let wx = p.x * numPointsOrigin;\n let wy = p.y * numPointsOrigin;\n\n let clusterProperties = reduce && numPointsOrigin > 1 ? this._map(p, true) : null;\n\n // encode both zoom and point index on which the cluster originated -- offset by total length of features\n const id = (i << 5) + (zoom + 1) + this.points.length;\n\n for (const neighborId of neighborIds) {\n const b = tree.points[neighborId];\n\n if (b.zoom <= zoom) continue;\n b.zoom = zoom; // save the zoom (so it doesn't get processed twice)\n\n const numPoints2 = b.numPoints || 1;\n wx += b.x * numPoints2; // accumulate coordinates for calculating weighted center\n wy += b.y * numPoints2;\n\n b.parentId = id;\n\n if (reduce) {\n if (!clusterProperties) clusterProperties = this._map(p, true);\n reduce(clusterProperties, this._map(b));\n }\n }\n\n p.parentId = id;\n clusters.push(createCluster(wx / numPoints, wy / numPoints, id, numPoints, clusterProperties));\n\n } else { // left points as unclustered\n clusters.push(p);\n\n if (numPoints > 1) {\n for (const neighborId of neighborIds) {\n const b = tree.points[neighborId];\n if (b.zoom <= zoom) continue;\n b.zoom = zoom;\n clusters.push(b);\n }\n }\n }\n }\n\n return clusters;\n }\n\n // get index of the point from which the cluster originated\n _getOriginId(clusterId) {\n return (clusterId - this.points.length) >> 5;\n }\n\n // get zoom of the point from which the cluster originated\n _getOriginZoom(clusterId) {\n return (clusterId - this.points.length) % 32;\n }\n\n _map(point, clone) {\n if (point.numPoints) {\n return clone ? extend({}, point.properties) : point.properties;\n }\n const original = this.points[point.index].properties;\n const result = this.options.map(original);\n return clone && result === original ? extend({}, result) : result;\n }\n}\n\nfunction createCluster(x, y, id, numPoints, properties) {\n return {\n x, // weighted cluster center\n y,\n zoom: Infinity, // the last zoom the cluster was processed at\n id, // encodes index of the first child of the cluster and its zoom level\n parentId: -1, // parent cluster id\n numPoints,\n properties\n };\n}\n\nfunction createPointCluster(p, id) {\n const [x, y] = p.geometry.coordinates;\n return {\n x: lngX(x), // projected point coordinates\n y: latY(y),\n zoom: Infinity, // the last zoom the point was processed at\n index: id, // index of the source feature in the original input array,\n parentId: -1 // parent cluster id\n };\n}\n\nfunction getClusterJSON(cluster) {\n return {\n type: 'Feature',\n id: cluster.id,\n properties: getClusterProperties(cluster),\n geometry: {\n type: 'Point',\n coordinates: [xLng(cluster.x), yLat(cluster.y)]\n }\n };\n}\n\nfunction getClusterProperties(cluster) {\n const count = cluster.numPoints;\n const abbrev =\n count >= 10000 ? `${Math.round(count / 1000) }k` :\n count >= 1000 ? `${Math.round(count / 100) / 10 }k` : count;\n return extend(extend({}, cluster.properties), {\n cluster: true,\n cluster_id: cluster.id,\n point_count: count,\n point_count_abbreviated: abbrev\n });\n}\n\n// longitude/latitude to spherical mercator in [0..1] range\nfunction lngX(lng) {\n return lng / 360 + 0.5;\n}\nfunction latY(lat) {\n const sin = Math.sin(lat * Math.PI / 180);\n const y = (0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI);\n return y < 0 ? 0 : y > 1 ? 1 : y;\n}\n\n// spherical mercator to longitude/latitude\nfunction xLng(x) {\n return (x - 0.5) * 360;\n}\nfunction yLat(y) {\n const y2 = (180 - y * 360) * Math.PI / 180;\n return 360 * Math.atan(Math.exp(y2)) / Math.PI - 90;\n}\n\nfunction extend(dest, src) {\n for (const id in src) dest[id] = src[id];\n return dest;\n}\n\nfunction getX(p) {\n return p.x;\n}\nfunction getY(p) {\n return p.y;\n}\n","import { BBox } from 'geojson';\nimport Supercluster from 'supercluster';\n\nexport const generateClusters = (points: any[], zoom: number, bounds: BBox): { clusters: any; supercluster: any } => {\n const options = { radius: 40, maxZoom: 20 };\n\n // const superclusterRef = useRef>();\n let supercluster;\n\n // const pointsRef = useRef>>();\n const zoomInt = Math.round(zoom);\n\n if (!supercluster) {\n supercluster = new Supercluster(options);\n supercluster.load(points);\n }\n\n if (bounds) {\n const clusters = supercluster.getClusters(bounds, zoomInt);\n return { clusters, supercluster };\n }\n return { clusters: null, supercluster: null };\n};\n","import React, { useEffect } from 'react';\nimport { getDealerKvps } from 'src/bff';\nimport { TriggerProps, useFaContent, useGetDealers, VehicleCalculadora } from 'src/feature-app';\nimport { FormDataFields } from 'src/types';\nimport { AppointmentVehicle, transformMillage } from 'src/forms';\nimport { NuevaCitaPosventaFormController } from 'src/forms/CitaPosventa/NuevaCitaPosventa';\n\nconst getAppointmentVehicle = (vehicle: VehicleCalculadora): AppointmentVehicle => {\n return {\n brand: 'V',\n frame: vehicle.vin,\n millage: transformMillage(vehicle.mileage),\n modelVersion: vehicle.modelDescr,\n modelYear: 0,\n plate: vehicle.plate.toUpperCase(),\n plateDate: `${vehicle.plateDate} 00:00:00`,\n tmaimg: vehicle.modelKey,\n model: {\n code: vehicle.familyCode,\n key: vehicle.familyCode,\n name: vehicle.familyDesc,\n },\n };\n};\n\nexport function CitaPosventaCalculadoraForm({ setSelectedJourney }: TriggerProps) {\n const faContent = useFaContent();\n const { loading } = useGetDealers(faContent?.dealer);\n\n const renderForm = (fields: FormDataFields) => {\n setSelectedJourney(\n ,\n true\n );\n };\n useEffect(() => {\n if (loading) return;\n \n const fields = {\n motivo: 'MANTENIMIENTO',\n formName: 'cita-posventa-calculadora',\n matricula: faContent?.vehicle[0]?.plate,\n vehicleForCalculadora: getAppointmentVehicle(faContent?.vehicle[0]),\n kilometros: transformMillage(faContent?.vehicle[0]?.mileage),\n anoMatriculacion: faContent?.vehicle[0]?.plateDate,\n modelo: faContent?.vehicle[0]?.modelDescr,\n budget: { pvp: faContent?.quotePvp, operations: [...faContent?.quoteOperations] },\n deepLink: faContent?.deepLink,\n };\n const kvps = faContent?.dealer;\n\n getDealerKvps(kvps)\n .then((dealer) => {\n renderForm({ ...fields, dealer });\n })\n .catch((err) => {\n renderForm({ ...fields, dealer: {} }); // Hay que ver que hacer en estos casos.\n });\n }, [loading]);\n\n return <>;\n}\n","import React, { useEffect } from 'react';\nimport { getDealers } from 'src/bff';\nimport { TriggerProps, useFaContent, useGetDealers } from 'src/feature-app';\nimport { FormDataFields } from 'src/types';\nimport { NuevaCitaPosventaFormController } from 'src/forms/CitaPosventa/NuevaCitaPosventa';\n\nexport function CitaPosventaBonosForm({ setSelectedJourney }: TriggerProps) {\n const faContent = useFaContent();\n const { loading } = useGetDealers(faContent?.dealer);\n\n const renderForm = (fields: FormDataFields) => {\n setSelectedJourney(\n ,\n true\n );\n };\n useEffect(() => {\n if (loading) return;\n \n const fields = {\n motivo: 'OTROS',\n formName: 'cita-posventa-bono',\n masInformacion: faContent?.bono[0].desc,\n deepLink: faContent?.deepLink,\n };\n const kvps = faContent?.dealer;\n\n getDealers()\n .then(() => {\n renderForm({ ...fields });\n })\n .catch((err) => {\n renderForm({ ...fields }); // Hay que ver que hacer en estos casos.\n });\n }, [loading]);\n\n return <>;\n}\n","import Axios, { AxiosResponse } from 'axios';\nimport React, { useEffect } from 'react';\nimport { Text } from '@volkswagen-onehub/components-core';\nimport { OneElementTemplate } from 'src/feature-app/Screen';\nimport { ConfirmacionNewsletter } from './ConfirmacionNewsletter';\nimport { Email, PantallaNombreApellido } from 'src/components';\nimport { useDispatch, useStore } from 'react-redux';\nimport { dpsSend } from 'src/bff';\nimport { getParamsForm } from 'src/feature-app/get-params-form';\nimport { FormDataGroup, FormInfo, OneFormState, Steps, MolecularResponse } from 'src/types';\nimport { FormController, removeWhiteSpace, useFeatureAppConfig, useOneFormContext } from 'src/feature-app';\nimport { ThankYouNewsletter } from './';\nimport { formatHeaders, formDataBuilder } from '../format-fields';\n\nexport enum NewsletterSteps {\n NombreApellido,\n Email,\n Confirmacion,\n}\n\nexport function NewsletterForm() {\n const { initializeForm } = useOneFormContext();\n const store = useStore();\n const config = useFeatureAppConfig();\n const dispatch = useDispatch();\n const steps: Steps[] = [\n {\n title: (\n <>\n Queremos contártelo todo sobre la familia ID. Pero antes, nos gustaría saber quién eres\n \n ),\n fields: (\n \n \n \n }\n />\n ),\n screenIndex: NewsletterSteps.NombreApellido,\n name: 'NombreApellido',\n outputs: ['name', 'surname', 'secondSurname'],\n outputsText: ['name', 'surname', 'secondSurname'],\n },\n {\n title: (\n <>\n ¿A qué email te enviamos nuestras novedades?\n \n ),\n fields: (\n \n \n \n }\n />\n ),\n screenIndex: NewsletterSteps.Email,\n name: 'Email',\n outputs: ['email'],\n outputsText: ['email'],\n },\n {\n fields: ,\n screenIndex: NewsletterSteps.Confirmacion,\n name: 'Confirmacion',\n isLastStep: true,\n hidePreviousStep: true,\n },\n ];\n\n const NuevoFormData: Partial = {\n headers: {\n DESC_BRAND: 'VW',\n DESC_VN_VO: 'VN',\n DESC_GDPR_ADAPTED: 'true',\n },\n fields: { formName: 'newsletter', formType: 'newsletter', pageCategory: 'Suscripción Newsletter' }, // Analítica\n };\n\n const getFormInfo = (): {\n firstStep: Steps;\n lastStep: Steps;\n stepsHistory: number[];\n numberOfScreens: number;\n newSteps?: Steps[];\n } => {\n return {\n firstStep: steps[0],\n lastStep: steps[steps.length - 1],\n stepsHistory: [0],\n numberOfScreens: steps.length,\n newSteps: null,\n };\n };\n\n const sendForm = (): Promise => {\n const { formData, dealersInfo }: OneFormState = store.getState();\n\n const { fields, headers } = formData;\n\n return new Promise(async (resolve, reject) => {\n const { tc, today, referalUrl, url, device } = getParamsForm();\n\n const data = {\n ...formatHeaders(headers), // Headers comunes a todos los formularios de leads\n 'headers[COD_FORM_ID]': 'vw-oneform-newsletter',\n 'headers[DESC_URLORIGIN]': url,\n 'headers[DESC_BRAND]': 'VW',\n 'headers[DESC_CAMPAIGNBLOCK]': '4. VW Newsletter',\n 'headers[DESC_DEVICETYPE]': device,\n 'headers[DESC_FORMOBJECTIVE]': 'Suscripción Newsletter',\n 'headers[DESC_FORM_DETAIL]': 'ID', //Este debería pasarse a variable, aunque actualmente siempre sea ID\n 'headers[DESC_ID_CAMPAIGN]': '7011n000000APfGAAW',\n 'headers[DESC_TOKEN]': 'VW_DDB_FRM_ID_NEWSLETTER', //CONSULTAR\n\n 'headers[FECHA_INSERTION_DATE]': today,\n 'headers[TC]': tc,\n\n 'fields[DESC_NAME]': fields.name,\n 'fields[DESC_SURNAME_1]': fields.surname,\n 'fields[DESC_SURNAME_2]': fields.secondSurname,\n 'fields[DESC_EMAIL_ADDRESS]': removeWhiteSpace(fields.email),\n 'fields[DESC_FORM_VERSION]': `vw-oneform-newsletter-${process.env.VERSION}`,\n 'fields[DESC_LOPD]': 'PERMITE',\n 'fields[DESC_TRANF_DATA_THIRD]': 'NO INFORMADO',\n 'fields[DESC_LSSI]': fields.lssi,\n 'fields[DESC_LOPD_GDPR_PERFILADO]': fields.tmk,\n };\n const dataStringified = JSON.stringify(data);\n const dataParsed = JSON.parse(dataStringified);\n\n const formData = formDataBuilder(dataParsed);\n\n const response = await dpsSend(formData);\n\n if (response && response.data && response.data.content && response.data.content.code === '200') {\n dispatch({ type: 'SET_FORM_RESPONSE', payload: response.data });\n resolve(true);\n } else {\n resolve(false);\n }\n });\n };\n\n useEffect(() => {\n const { firstStep, lastStep, stepsHistory, numberOfScreens, newSteps } = getFormInfo();\n\n const NuevoFormInfo: Partial = {\n formStarted: true,\n sendFormCallback: sendForm,\n fullScreen: firstStep.fullScreen ? true : false,\n lastStep,\n numberOfScreens,\n formTheme: 'inverted',\n screenIndex: firstStep.screenIndex,\n step: firstStep,\n steps: newSteps ? newSteps : steps,\n stepsHistory,\n notALayer: false,\n formType: 'layer',\n thankYouComponent: ,\n };\n\n initializeForm(NuevoFormInfo, NuevoFormData);\n }, []);\n\n return ;\n}\n","import { Breakpoints, Layout } from '@volkswagen-onehub/components-core';\nimport { \n LegalesFormatoLayer, \n LssiTkmQuestions, \n LastNavigation, \n PoliticaPrivacidad,\n GeneralConfirmacionLayerWrapper\n} from 'src/components';\nimport React from 'react';\n\nexport const ConfirmacionNewsletter = () => {\n\n return (\n \n \n \n \n \n \n \n \n );\n};\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\nimport { isBrowserBundle } from './env';\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv(): boolean {\n // explicitly check for browser bundles as those can be optimized statically\n // by terser/rollup.\n return (\n !isBrowserBundle() &&\n Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n );\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\nexport function dynamicRequire(mod: any, request: string): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return mod.require(request);\n}\n\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @returns possibly required module\n */\nexport function loadModule(moduleName: string): T | undefined {\n let mod: T | undefined;\n\n try {\n mod = dynamicRequire(module, moduleName);\n } catch (e) {\n // no-empty\n }\n\n try {\n const { cwd } = dynamicRequire(module, 'process');\n mod = dynamicRequire(module, `${cwd()}/node_modules/${moduleName}`) as T;\n } catch (e) {\n // no-empty\n }\n\n return mod;\n}\n","import unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nexport default function _createForOfIteratorHelper(o) {\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (o = unsupportedIterableToArray(o))) {\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var it,\n normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = o[Symbol.iterator]();\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","import * as React from 'react';\nimport { useEffect, useState, createContext, useContext, useMemo } from 'react';\nimport { styled } from '../theme-provider';\nimport { Breakpoints } from '../helpers/breakpoint';\nimport { deprecated } from '../deprecated';\nconst BreakpointWrapperRenderingContext = createContext({});\nexport const BreakpointWrapperRenderingConfig = ({ notHydrating, ssrViewportWidth, children, }) => {\n const outerContextValue = useContext(BreakpointWrapperRenderingContext);\n const value = useMemo(() => ({\n notHydrating: notHydrating !== null && notHydrating !== void 0 ? notHydrating : outerContextValue.notHydrating,\n ssrViewportWidth: ssrViewportWidth !== null && ssrViewportWidth !== void 0 ? ssrViewportWidth : outerContextValue.ssrViewportWidth,\n }), [notHydrating, ssrViewportWidth, outerContextValue]);\n return (React.createElement(BreakpointWrapperRenderingContext.Provider, { value: value }, children));\n};\nconst combinedMediaQuery = (props) => {\n const minQuery = `(min-width: ${Math.max(0, props.minSize)}px)`;\n const maxQuery = Number.isFinite(props.maxSize) && `(max-width: ${props.maxSize - 1}px)`;\n return [minQuery, maxQuery].filter(Boolean).join(' and ');\n};\nconst StyledBreakpointWrapper = styled.div.withConfig({ displayName: \"StyledBreakpointWrapper\", componentId: \"sc-1jaqtkh\" }) `display:none;@media ${combinedMediaQuery}{display:contents;}`;\nfunction BreakpointWrapperInternal({ min = Breakpoints.default, max = Breakpoints.never, children, ssrBreakpoint: ownSsrViewportWidth, }) {\n const { ssrViewportWidth: contextSsrViewportWidth } = useContext(BreakpointWrapperRenderingContext);\n const ssrViewportWidth = ownSsrViewportWidth !== null && ownSsrViewportWidth !== void 0 ? ownSsrViewportWidth : contextSsrViewportWidth;\n const isClientButNotHydrating = useIsClientButNotHydrating();\n const breakpointMatches = useBreakpointRangeReachedListener(min, max);\n const breakpointMatchesForSsr = isBreakpointRangeReached(min, max, ssrViewportWidth);\n if (isClientButNotHydrating && !breakpointMatches) {\n return null;\n }\n if (!isClientButNotHydrating && !breakpointMatchesForSsr) {\n return null;\n }\n return (React.createElement(StyledBreakpointWrapper, { minSize: min, maxSize: max }, children));\n}\nfunction useMediaQueryListener(query) {\n const mql = useMemo(() => typeof window !== 'undefined' && query && window.matchMedia(query), [query]);\n const [matches, setMatches] = useState(mql ? mql.matches : false);\n useEffect(() => {\n if (!mql) {\n return;\n }\n setMatches(mql.matches);\n const handleMediaQueryListener = (event) => {\n setMatches(event.matches);\n };\n if (mql.addEventListener) {\n mql.addEventListener('change', handleMediaQueryListener);\n }\n else {\n mql.addListener(handleMediaQueryListener);\n }\n return () => {\n if (mql.removeEventListener) {\n mql.removeEventListener('change', handleMediaQueryListener);\n }\n else {\n mql.removeListener(handleMediaQueryListener);\n }\n };\n }, [mql]);\n return matches;\n}\nfunction isBreakpointRangeReached(minSize, maxSize, viewportWidth) {\n return viewportWidth !== undefined\n ? viewportWidth >= minSize && viewportWidth < maxSize\n : true;\n}\nfunction useBreakpointRangeReachedListener(minSize, maxSize) {\n const query = useMemo(() => combinedMediaQuery({ minSize, maxSize }), [minSize, maxSize]);\n return useMediaQueryListener(query);\n}\nfunction useIsClientButNotHydrating() {\n const { notHydrating } = useContext(BreakpointWrapperRenderingContext);\n const [isClientButNotHydrating, setIsClientButNotHydrating] = useState(notHydrating ? typeof window !== undefined : false);\n useEffect(() => {\n if (!isClientButNotHydrating) {\n setIsClientButNotHydrating(true);\n }\n }, [isClientButNotHydrating]);\n return isClientButNotHydrating;\n}\nexport const BreakpointWrapper = deprecated(BreakpointWrapperInternal, [\n [\n 'ssrBreakpoint',\n \"The BreakpointWrapper's ssrBreakpoint property is deprecated. Please make use of the BreakpointWrapperRenderingConfig instead.\",\n ],\n]);\n","import {\r\n\tMIN_LENGTH_FOR_NSN,\r\n\tVALID_DIGITS,\r\n\tVALID_PUNCTUATION,\r\n\tPLUS_CHARS\r\n} from '../constants'\r\n\r\nimport createExtensionPattern from './extension/createExtensionPattern'\r\n\r\n// Regular expression of viable phone numbers. This is location independent.\r\n// Checks we have at least three leading digits, and only valid punctuation,\r\n// alpha characters and digits in the phone number. Does not include extension\r\n// data. The symbol 'x' is allowed here as valid punctuation since it is often\r\n// used as a placeholder for carrier codes, for example in Brazilian phone\r\n// numbers. We also allow multiple '+' characters at the start.\r\n//\r\n// Corresponds to the following:\r\n// [digits]{minLengthNsn}|\r\n// plus_sign*\r\n// (([punctuation]|[star])*[digits]){3,}([punctuation]|[star]|[digits]|[alpha])*\r\n//\r\n// The first reg-ex is to allow short numbers (two digits long) to be parsed if\r\n// they are entered as \"15\" etc, but only if there is no punctuation in them.\r\n// The second expression restricts the number of digits to three or more, but\r\n// then allows them to be in international form, and to have alpha-characters\r\n// and punctuation. We split up the two reg-exes here and combine them when\r\n// creating the reg-ex VALID_PHONE_NUMBER_PATTERN itself so we can prefix it\r\n// with ^ and append $ to each branch.\r\n//\r\n// \"Note VALID_PUNCTUATION starts with a -,\r\n// so must be the first in the range\" (c) Google devs.\r\n// (wtf did they mean by saying that; probably nothing)\r\n//\r\nconst MIN_LENGTH_PHONE_NUMBER_PATTERN = '[' + VALID_DIGITS + ']{' + MIN_LENGTH_FOR_NSN + '}'\r\n//\r\n// And this is the second reg-exp:\r\n// (see MIN_LENGTH_PHONE_NUMBER_PATTERN for a full description of this reg-exp)\r\n//\r\nexport const VALID_PHONE_NUMBER =\r\n\t'[' + PLUS_CHARS + ']{0,1}' +\r\n\t'(?:' +\r\n\t\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t\t'[' + VALID_DIGITS + ']' +\r\n\t'){3,}' +\r\n\t'[' +\r\n\t\tVALID_PUNCTUATION +\r\n\t\tVALID_DIGITS +\r\n\t']*'\r\n\r\n// This regular expression isn't present in Google's `libphonenumber`\r\n// and is only used to determine whether the phone number being input\r\n// is too short for it to even consider it a \"valid\" number.\r\n// This is just a way to differentiate between a really invalid phone\r\n// number like \"abcde\" and a valid phone number that a user has just\r\n// started inputting, like \"+1\" or \"1\": both these cases would be\r\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\r\n// library can provide a more detailed error message — whether it's\r\n// really \"not a number\", or is it just a start of a valid phone number.\r\nconst VALID_PHONE_NUMBER_START_REG_EXP = new RegExp(\r\n\t'^' +\r\n\t'[' + PLUS_CHARS + ']{0,1}' +\r\n\t'(?:' +\r\n\t\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t\t'[' + VALID_DIGITS + ']' +\r\n\t'){1,2}' +\r\n\t'$'\r\n, 'i')\r\n\r\nexport const VALID_PHONE_NUMBER_WITH_EXTENSION =\r\n\tVALID_PHONE_NUMBER +\r\n\t// Phone number extensions\r\n\t'(?:' + createExtensionPattern() + ')?'\r\n\r\n// The combined regular expression for valid phone numbers:\r\n//\r\nconst VALID_PHONE_NUMBER_PATTERN = new RegExp(\r\n\t// Either a short two-digit-only phone number\r\n\t'^' +\r\n\t\tMIN_LENGTH_PHONE_NUMBER_PATTERN +\r\n\t'$' +\r\n\t'|' +\r\n\t// Or a longer fully parsed phone number (min 3 characters)\r\n\t'^' +\r\n\t\tVALID_PHONE_NUMBER_WITH_EXTENSION +\r\n\t'$'\r\n, 'i')\r\n\r\n// Checks to see if the string of characters could possibly be a phone number at\r\n// all. At the moment, checks to see that the string begins with at least 2\r\n// digits, ignoring any punctuation commonly found in phone numbers. This method\r\n// does not require the number to be normalized in advance - but does assume\r\n// that leading non-number symbols have been removed, such as by the method\r\n// `extract_possible_number`.\r\n//\r\nexport default function isViablePhoneNumber(number) {\r\n\treturn number.length >= MIN_LENGTH_FOR_NSN &&\r\n\t\tVALID_PHONE_NUMBER_PATTERN.test(number)\r\n}\r\n\r\n// This is just a way to differentiate between a really invalid phone\r\n// number like \"abcde\" and a valid phone number that a user has just\r\n// started inputting, like \"+1\" or \"1\": both these cases would be\r\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\r\n// library can provide a more detailed error message — whether it's\r\n// really \"not a number\", or is it just a start of a valid phone number.\r\nexport function isViablePhoneNumberStart(number) {\r\n\treturn VALID_PHONE_NUMBER_START_REG_EXP.test(number)\r\n}","import extractNationalNumberFromPossiblyIncompleteNumber from './extractNationalNumberFromPossiblyIncompleteNumber'\r\nimport matchesEntirely from './matchesEntirely'\r\nimport checkNumberLength from './checkNumberLength'\r\n\r\n/**\r\n * Strips national prefix and carrier code from a complete phone number.\r\n * The difference from the non-\"FromCompleteNumber\" function is that\r\n * it won't extract national prefix if the resultant number is too short\r\n * to be a complete number for the selected phone numbering plan.\r\n * @param {string} number — Complete phone number digits.\r\n * @param {Metadata} metadata — Metadata with a phone numbering plan selected.\r\n * @return {object} `{ nationalNumber: string, carrierCode: string? }`.\r\n */\r\nexport default function extractNationalNumber(number, metadata) {\r\n\t// Parsing national prefixes and carrier codes\r\n\t// is only required for local phone numbers\r\n\t// but some people don't understand that\r\n\t// and sometimes write international phone numbers\r\n\t// with national prefixes (or maybe even carrier codes).\r\n\t// http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html\r\n\t// Google's original library forgives such mistakes\r\n\t// and so does this library, because it has been requested:\r\n\t// https://github.com/catamphetamine/libphonenumber-js/issues/127\r\n\tconst {\r\n\t\tnationalNumber,\r\n\t\tcarrierCode\r\n\t} = extractNationalNumberFromPossiblyIncompleteNumber(\r\n\t\tnumber,\r\n\t\tmetadata\r\n\t)\r\n\tif (!shouldExtractNationalPrefix(number, nationalNumber, metadata)) {\r\n\t\t// Don't strip the national prefix.\r\n\t\treturn { nationalNumber: number }\r\n\t}\r\n\t// If a national prefix has been extracted, check to see\r\n\t// if the resultant number isn't too short.\r\n\t// Same code in Google's `libphonenumber`:\r\n\t// https://github.com/google/libphonenumber/blob/e326fa1fc4283bb05eb35cb3c15c18f98a31af33/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L3291-L3302\r\n\t// For some reason, they do this check right after the `national_number_pattern` check\r\n\t// this library does in `shouldExtractNationalPrefix()` function.\r\n\t// Why is there a second \"resultant\" number validity check?\r\n\t// They don't provide an explanation.\r\n\t// This library just copies the behavior.\r\n\tif (number.length !== nationalNumber.length + (carrierCode ? carrierCode.length : 0)) {\r\n\t\t// If not using legacy generated metadata (before version `1.0.18`)\r\n\t\t// then it has \"possible lengths\", so use those to validate the number length.\r\n\t\tif (metadata.possibleLengths()) {\r\n\t\t\t// \"We require that the NSN remaining after stripping the national prefix and\r\n\t\t\t// carrier code be long enough to be a possible length for the region.\r\n\t\t\t// Otherwise, we don't do the stripping, since the original number could be\r\n\t\t\t// a valid short number.\"\r\n\t\t\t// https://github.com/google/libphonenumber/blob/876268eb1ad6cdc1b7b5bef17fc5e43052702d57/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L3236-L3250\r\n\t\t\tswitch (checkNumberLength(nationalNumber, metadata)) {\r\n\t\t\t\tcase 'TOO_SHORT':\r\n\t\t\t\tcase 'INVALID_LENGTH':\r\n\t\t\t\t// case 'IS_POSSIBLE_LOCAL_ONLY':\r\n\t\t\t\t\t// Don't strip the national prefix.\r\n\t\t\t\t\treturn { nationalNumber: number }\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn { nationalNumber, carrierCode }\r\n}\r\n\r\n// In some countries, the same digit could be a national prefix\r\n// or a leading digit of a valid phone number.\r\n// For example, in Russia, national prefix is `8`,\r\n// and also `800 555 35 35` is a valid number\r\n// in which `8` is not a national prefix, but the first digit\r\n// of a national (significant) number.\r\n// Same's with Belarus:\r\n// `82004910060` is a valid national (significant) number,\r\n// but `2004910060` is not.\r\n// To support such cases (to prevent the code from always stripping\r\n// national prefix), a condition is imposed: a national prefix\r\n// is not extracted when the original number is \"viable\" and the\r\n// resultant number is not, a \"viable\" national number being the one\r\n// that matches `national_number_pattern`.\r\nfunction shouldExtractNationalPrefix(number, nationalSignificantNumber, metadata) {\r\n\t// The equivalent in Google's code is:\r\n\t// https://github.com/google/libphonenumber/blob/e326fa1fc4283bb05eb35cb3c15c18f98a31af33/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L2969-L3004\r\n\tif (matchesEntirely(number, metadata.nationalNumberPattern()) &&\r\n\t\t!matchesEntirely(nationalSignificantNumber, metadata.nationalNumberPattern())) {\r\n\t\treturn false\r\n\t}\r\n\t// Just \"possible\" number check would be more relaxed, so it's not used.\r\n\t// if (isPossibleNumber(number, metadata) &&\r\n\t// \t!isPossibleNumber(numberWithNationalPrefixExtracted, metadata)) {\r\n\t// \treturn false\r\n\t// }\r\n\treturn true\r\n}","/**\r\n * Strips any national prefix (such as 0, 1) present in a\r\n * (possibly incomplete) number provided.\r\n * \"Carrier codes\" are only used in Colombia and Brazil,\r\n * and only when dialing within those countries from a mobile phone to a fixed line number.\r\n * Sometimes it won't actually strip national prefix\r\n * and will instead prepend some digits to the `number`:\r\n * for example, when number `2345678` is passed with `VI` country selected,\r\n * it will return `{ number: \"3402345678\" }`, because `340` area code is prepended.\r\n * @param {string} number — National number digits.\r\n * @param {object} metadata — Metadata with country selected.\r\n * @return {object} `{ nationalNumber: string, nationalPrefix: string? carrierCode: string? }`.\r\n */\r\nexport default function extractNationalNumberFromPossiblyIncompleteNumber(number, metadata) {\r\n\tif (number && metadata.numberingPlan.nationalPrefixForParsing()) {\r\n\t\t// See METADATA.md for the description of\r\n\t\t// `national_prefix_for_parsing` and `national_prefix_transform_rule`.\r\n\t\t// Attempt to parse the first digits as a national prefix.\r\n\t\tconst prefixPattern = new RegExp('^(?:' + metadata.numberingPlan.nationalPrefixForParsing() + ')')\r\n\t\tconst prefixMatch = prefixPattern.exec(number)\r\n\t\tif (prefixMatch) {\r\n\t\t\tlet nationalNumber\r\n\t\t\tlet carrierCode\r\n\t\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\r\n\t\t\t// If a `national_prefix_for_parsing` has any \"capturing groups\"\r\n\t\t\t// then it means that the national (significant) number is equal to\r\n\t\t\t// those \"capturing groups\" transformed via `national_prefix_transform_rule`,\r\n\t\t\t// and nothing could be said about the actual national prefix:\r\n\t\t\t// what is it and was it even there.\r\n\t\t\t// If a `national_prefix_for_parsing` doesn't have any \"capturing groups\",\r\n\t\t\t// then everything it matches is a national prefix.\r\n\t\t\t// To determine whether `national_prefix_for_parsing` matched any\r\n\t\t\t// \"capturing groups\", the value of the result of calling `.exec()`\r\n\t\t\t// is looked at, and if it has non-undefined values where there're\r\n\t\t\t// \"capturing groups\" in the regular expression, then it means\r\n\t\t\t// that \"capturing groups\" have been matched.\r\n\t\t\t// It's not possible to tell whether there'll be any \"capturing gropus\"\r\n\t\t\t// before the matching process, because a `national_prefix_for_parsing`\r\n\t\t\t// could exhibit both behaviors.\r\n\t\t\tconst capturedGroupsCount = prefixMatch.length - 1\r\n\t\t\tconst hasCapturedGroups = capturedGroupsCount > 0 && prefixMatch[capturedGroupsCount]\r\n\t\t\tif (metadata.nationalPrefixTransformRule() && hasCapturedGroups) {\r\n\t\t\t\tnationalNumber = number.replace(\r\n\t\t\t\t\tprefixPattern,\r\n\t\t\t\t\tmetadata.nationalPrefixTransformRule()\r\n\t\t\t\t)\r\n\t\t\t\t// If there's more than one captured group,\r\n\t\t\t\t// then carrier code is the second one.\r\n\t\t\t\tif (capturedGroupsCount > 1) {\r\n\t\t\t\t\tcarrierCode = prefixMatch[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// If there're no \"capturing groups\",\r\n\t\t\t// or if there're \"capturing groups\" but no\r\n\t\t\t// `national_prefix_transform_rule`,\r\n\t\t\t// then just strip the national prefix from the number,\r\n\t\t\t// and possibly a carrier code.\r\n\t\t\t// Seems like there could be more.\r\n\t\t\telse {\r\n\t\t\t\t// `prefixBeforeNationalNumber` is the whole substring matched by\r\n\t\t\t\t// the `national_prefix_for_parsing` regular expression.\r\n\t\t\t\t// There seem to be no guarantees that it's just a national prefix.\r\n\t\t\t\t// For example, if there's a carrier code, it's gonna be a\r\n\t\t\t\t// part of `prefixBeforeNationalNumber` too.\r\n\t\t\t\tconst prefixBeforeNationalNumber = prefixMatch[0]\r\n\t\t\t\tnationalNumber = number.slice(prefixBeforeNationalNumber.length)\r\n\t\t\t\t// If there's at least one captured group,\r\n\t\t\t\t// then carrier code is the first one.\r\n\t\t\t\tif (hasCapturedGroups) {\r\n\t\t\t\t\tcarrierCode = prefixMatch[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Tries to guess whether a national prefix was present in the input.\r\n\t\t\t// This is not something copy-pasted from Google's library:\r\n\t\t\t// they don't seem to have an equivalent for that.\r\n\t\t\t// So this isn't an \"officially approved\" way of doing something like that.\r\n\t\t\t// But since there seems no other existing method, this library uses it.\r\n\t\t\tlet nationalPrefix\r\n\t\t\tif (hasCapturedGroups) {\r\n\t\t\t\tconst possiblePositionOfTheFirstCapturedGroup = number.indexOf(prefixMatch[1])\r\n\t\t\t\tconst possibleNationalPrefix = number.slice(0, possiblePositionOfTheFirstCapturedGroup)\r\n\t\t\t\t// Example: an Argentinian (AR) phone number `0111523456789`.\r\n\t\t\t\t// `prefixMatch[0]` is `01115`, and `$1` is `11`,\r\n\t\t\t\t// and the rest of the phone number is `23456789`.\r\n\t\t\t\t// The national number is transformed via `9$1` to `91123456789`.\r\n\t\t\t\t// National prefix `0` is detected being present at the start.\r\n\t\t\t\t// if (possibleNationalPrefix.indexOf(metadata.numberingPlan.nationalPrefix()) === 0) {\r\n\t\t\t\tif (possibleNationalPrefix === metadata.numberingPlan.nationalPrefix()) {\r\n\t\t\t\t\tnationalPrefix = metadata.numberingPlan.nationalPrefix()\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tnationalPrefix = prefixMatch[0]\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\tnationalNumber,\r\n\t\t\t\tnationalPrefix,\r\n\t\t\t\tcarrierCode\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n return {\r\n \tnationalNumber: number\r\n }\r\n}","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","/*!\n * jQuery JavaScript Library v3.6.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-03-02T17:08Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.6.0\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.6\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2021-02-16\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
    \" ],\n\tcol: [ 2, \"\", \"
    \" ],\n\ttr: [ 2, \"\", \"
    \" ],\n\ttd: [ 3, \"\", \"
    \" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\t// Suppress native focus or blur as it's already being fired\n\t\t// in leverageNative.\n\t\t_default: function() {\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"