{"version":3,"sources":["common-theme.js","PJAX/PJAX Animate Clonned Heading.js","PJAX/PJAX Animate Curtain.js","PJAX/PJAX Clone Heading.js","PJAX/PJAX Finish Loading.js","PJAX/PJAX Get Flying Direction.js","PJAX/PJAX Init New Page.js","PJAX/PJAX Prepare Transition.js","PJAX/PJAX Transition Flying Heading.js","PJAX/PJAX Transition General.js","PJAX/PJAX Transition Overlay Menu.js","PJAX/PJAX Update Admin Bar.js","PJAX/PJAX Update Audio Background.js","PJAX/PJAX Update Body.js","PJAX/PJAX Update Head.js","PJAX/PJAX Update Language Switcher.js","PJAX/PJAX Update Nodes.js","PJAX/PJAX Update Trackers.js","PJAX/PJAX Wait Container Images.js","PJAX/PJAX.js","audioControl/audioControl.js","audio/AudioBackground.js","buttonCircles/ButtonCircles.js","buttonCircle/ButtonCircle.js","cursor/Cursor.js","effectDistortion/EffectDistortion.js","counter/Counter.js","figurePortfolio/FigurePortfolioAnimation.js","figurePortfolio/FigurePortfolioHover.js","figureAward/figureAward.js","filter/Filter.js","fontObserver/fontObserver.js","form/Form.js","gmap/gmap.js","grid/grid.js","lazy/lazyLoad.js","header/Header.js","menuOverlay/MenuOverlay.js","menu/menu.js","preloader/preloader.js","scroll/SmoothScroll.js","scroll/createOSScene.js","scroll/getScrollTop.js","scroll/lockScroll.js","scroll/restoreScrollTop.js","scroll/scrollToVeryTop.js","scrollDown/ScrollDown.js","sectionAwards/sectionAwards.js","sectionAbout/sectionAbout.js","sectionContent/SectionContent.js","sectionGrid/SectionGrid.js","sectionFullscreenSlider/sectionFullscreenSlider.js","sectionMasthead/sectionMasthead.js","sectionNavProjects/sectionNavProjects.js","sectionPortfolio/SectionPortfolio.js","sectionProperties/SectionProperties.js","sectionServices/sectionServices.js","sectionTestimonials/sectionTestimonials.js","slider/renderSliderCounter.js","slider/renderSliderDots.js","slider/setSliderDistortionEffect.js","slider/setSliderOverlapEffect.js","slider/setSliderTestimonialsTransitions.js","slider/setSliderTextTransitions.js","sliderFullscreen/sliderFullscreen.js","sliderLetters/SliderLetters.js","sliderImages/SliderImages.js","sliderProjects/SliderProjects.js","sliderTestimonials/sliderTestimonials.js","splitText/animateChars.js","splitText/animateHeadline.js","splitText/animateLines.js","splitText/distributeByPosition.js","splitText/doSplitText.js","splitText/hideChars.js","splitText/hideLines.js","splitText/hideWords.js","splitText/hideWordsVertical.js","splitText/setChars.js","splitText/setLines.js","utilities/debounce.js","utilities/fixMobileBarHeight.js","utilities/fixScrollBar.js","utilities/isAnchor.js","utilities/syncAttributes.js","elementor.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACtLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACvLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC7HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC1aA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACrLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC1FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACtKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AChPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC1HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AChOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"components.js","sourcesContent":["/**\n * Try to use high performance GPU on dual-GPU systems\n */\ndocument.getElementById('js-webgl').getContext('webgl', {\n\tpowerPreference: 'high-performance'\n});\n\nwindow.$document = $(document);\nwindow.$window = $(window);\nwindow.$body = $('body');\nwindow.$html = $('html');\nwindow.$pageContent = $('.page-wrapper__content');\nwindow.$pageHeader = $('.header');\nwindow.$overlay = $('.header__wrapper-overlay-menu');\nwindow.$barbaWrapper = $('[data-barba=\"wrapper\"]');\nwindow.PagePreloader = new Preloader();\nwindow.$curtain = $('.transition-curtain');\nwindow.triggerTextAlign = 'left';\nwindow.$spinner = $('.js-spinner');\n\n/**\n * Begin Page Load\n */\nwindow.PagePreloader.start();\n\n/**\n * Default Theme Options\n * Used to prevent errors if there is\n * no data provided from backend\n */\nif (typeof window.theme === 'undefined') {\n\twindow.theme = {\n\t\tfonts: ['Roboto', 'Playfair Display'],\n\t\tcustomPreventRules: '',\n\t\tanimations: {\n\t\t\ttriggerHook: 0.85,\n\t\t\ttimeScale: {\n\t\t\t\tonScrollReveal: 1,\n\t\t\t\toverlayMenuOpen: 1,\n\t\t\t\toverlayMenuClose: 1.5,\n\t\t\t},\n\t\t\tflyingHeadingsStagger: 0.15,\n\t\t\tcursorAttractionDelay: 0.04\n\t\t},\n\t\tsmoothScroll: {\n\t\t\tdamping: 0.06,\n\t\t\trenderByPixels: true,\n\t\t\tcontinuousScrolling: false,\n\t\t\tplugins: {\n\t\t\t\tedgeEasing: true\n\t\t\t}\n\t\t},\n\t\taudio: {\n\t\t\tplaying: {\n\t\t\t\tlabel: 'Sound on',\n\t\t\t\ticon: 'pause'\n\t\t\t},\n\t\t\tpaused: {\n\t\t\t\tlabel: 'Sound off',\n\t\t\t\ticon: 'play'\n\t\t\t}\n\t\t},\n\t\tmobileBarFix: {\n\t\t\tenabled: true,\n\t\t\tupdate: true\n\t\t}\n\t}\n}\n\n/**\n * ScrollMagic Setup\n */\nwindow.SMController = new ScrollMagic.Controller();\nwindow.SMController.enabled(false);\nwindow.SMSceneTriggerHook = window.theme.animations.triggerHook;\nwindow.SMSceneReverse = false;\n\n/**\n * Don't save scroll position\n * after AJAX transition\n */\nif ('scrollRestoration' in history) {\n\thistory.scrollRestoration = 'manual';\n}\n\n/**\n * Page Load Strategy\n */\n$window.on('load', function () {\n\n\tfontObserver()\n\t\t.then(function () {\n\t\t\treturn doSplitText();\n\t\t})\n\t\t.then(function () {\n\t\t\treturn setLines();\n\t\t})\n\t\t.then(function () {\n\t\t\treturn setChars();\n\t\t})\n\t\t.then(function () {\n\t\t\tlazyLoad(window.$document);\n\t\t\tinitComponents(window.$document);\n\t\t\treturn window.PagePreloader.finish();\n\t\t})\n\t\t.then(function () {\n\t\t\twindow.SMController.enabled(true);\n\t\t\twindow.SMController.update(true);\n\t\t\twindow.$body.removeClass('cursor-progress');\n\t\t});\n\n\tnew PJAX();\n\n\tif ($('#js-audio-background').length) {\n\t\twindow.AudioBackground = new AudioBackground(window.$document);\n\t\twindow.AudioBackground.run();\n\t}\n\n\twindow.InteractiveCursor = new Cursor();\n\n});\n\n/**\n * Init Template Components\n */\nfunction initComponents($scope = window.$document) {\n\n\tnew SmoothScroll();\n\n\twindow.PageHeader = new Header();\n\n\tif (typeof window.PageMenu === 'undefined') {\n\t\twindow.PageMenu = new MenuOverlay();\n\t}\n\n\tnew Grid();\n\tnew SectionGrid($scope);\n\tnew SectionMasthead($scope);\n\tnew SectionPortfolio($scope);\n\tnew SectionNavProjects($scope);\n\tnew SectionFullscreenSlider($scope);\n\tnew SectionContent($scope);\n\tnew SectionAbout($scope);\n\tnew SectionServices($scope);\n\tnew SectionTestimonials($scope);\n\tnew SectionAwards($scope);\n\tnew SectionProperties($scope);\n\tnew SliderImages($scope);\n\tnew SliderProjects($scope);\n\tnew SliderLetters($scope);\n\t$('.js-video').magnificPopup();\n\tnew ScrollDown();\n\tnew Form();\n\tnew GMap($scope);\n\tnew ButtonCircle($scope);\n\tif (window.theme.mobileBarFix.enabled) {\n\t\tfixMobileBarHeight();\n\t}\n\tlazyLoad($scope);\n\tobjectFitVideos(document.querySelectorAll('video.of-cover'));\n\n\t$('[data-art-parallax]').artParallax({\n\t\tScrollMagicController: window.SMController,\n\t\tSmoothScrollController: window.SB\n\t});\n\n\t// refresh animation triggers\n\t// for Waypoints library\n\tif (typeof Waypoint !== 'undefined') {\n\t\tWaypoint.refreshAll();\n\t}\n\n\t// custom JS code\n\tif (window.theme.customJSInit) {\n\t\ttry {\n\t\t\twindow.eval(window.theme.customJSInit);\n\t\t} catch (error) {\n\t\t\tconsole.warn(error);\n\t\t}\n\t}\n\n}\n","/* ======================================================================== */\n/* 1. PJAX Animate Clonned Heading */\n/* ======================================================================== */\nfunction PJAXAnimateClonnedHeading(data, $customPositionElement) {\n\n\treturn new Promise(function (resolve, reject) {\n\n\t\tvar\n\t\t\ttl = new TimelineMax(),\n\t\t\t$nextContainer = $(data.next.container),\n\t\t\t$trigger = $(data.trigger),\n\t\t\t$nextContent = $nextContainer.find('.page-wrapper__content'),\n\t\t\t$clonnedHeading = $('.js-text-to-fly.clone'),\n\t\t\t$clonnedHeadingChars = $clonnedHeading.find('.split-text__char.clone'),\n\t\t\t$mastheadHeading = $nextContainer.find('.section-masthead .js-text-to-fly'),\n\t\t\tstaggerAmount = 0.15,\n\t\t\t$mastheadHeadingChars,\n\t\t\t$mastheadHeadingWords,\n\t\t\t$mastheadHeadingLines,\n\t\t\tcoordinates = [],\n\t\t\tCSSProperties,\n\t\t\tfrom,\n\t\t\tresolveTiming = $('.section-masthead_big-heading[data-os-animation]').length ? 0.6 : 0.9;\n\n\t\tif (!$mastheadHeading.length) {\n\n\t\t\ttl.set($nextContent, {\n\t\t\t\ty: '10vh',\n\t\t\t})\n\t\t\t\t.to($clonnedHeading, 0.6, {\n\t\t\t\t\tautoAlpha: 0,\n\t\t\t\t\tdisplay: 'none',\n\t\t\t\t\ty: '-100%'\n\t\t\t\t})\n\t\t\t\t.to(window.$curtain, 1.2, {\n\t\t\t\t\ty: '-100%',\n\t\t\t\t\tease: Expo.easeInOut\n\t\t\t\t}, '0.6')\n\t\t\t\t.to($nextContent, 2.4, {\n\t\t\t\t\ty: '0vh',\n\t\t\t\t\tease: Expo.easeInOut,\n\t\t\t\t}, '0')\n\t\t\t\t.set(window.$curtain, {\n\t\t\t\t\ty: '100%',\n\t\t\t\t\tdisplay: 'none'\n\t\t\t\t})\n\t\t\t\t.set($trigger, {\n\t\t\t\t\tautoAlpha: 1\n\t\t\t\t})\n\t\t\t\t.add(function () {\n\t\t\t\t\t$clonnedHeading.remove();\n\t\t\t\t})\n\t\t\t\t.add(function () {\n\t\t\t\t\tresolve(true);\n\t\t\t\t}, '0.8');\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif (window.theme !== 'undefined') {\n\n\t\t\tstaggerAmount = window.theme.animations.flyingHeadingsStagger || 0.15;\n\n\t\t}\n\n\t\t$mastheadHeadingChars = $mastheadHeading.find('.split-text__char');\n\t\t$mastheadHeadingWords = $mastheadHeading.find('.split-text__word');\n\t\t$mastheadHeadingLines = $mastheadHeading.find('.split-text__line');\n\t\tCSSProperties = $mastheadHeadingChars.css(['text-align', 'font-size', 'line-height', 'color', 'opacity']);\n\t\tfrom = PJAXGetFlyingDirection($clonnedHeading, $mastheadHeading);\n\n\t\t// clear any transforms for the correct\n\t\t// position calculation\n\t\tTweenMax.set([$mastheadHeadingChars, $mastheadHeadingWords, $mastheadHeadingLines], {\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\tclearProps: 'transform'\n\t\t});\n\n\t\t// clear transforms on page content wrapper\n\t\t// in case it may be shifted\n\t\tTweenMax.set($nextContent, {\n\t\t\tclearProps: 'all'\n\t\t});\n\n\t\t$mastheadHeadingChars.each(function (index) {\n\n\t\t\tvar current = $(this).get(0).getBoundingClientRect();\n\n\t\t\tcoordinates[index] = {\n\t\t\t\ttop: current.top,\n\t\t\t\tleft: current.left\n\t\t\t};\n\n\t\t});\n\n\t\ttl\n\t\t\t.add(function () {\n\t\t\t\tscrollToVeryTop();\n\t\t\t})\n\t\t\t.set($nextContent, {\n\t\t\t\ty: '10vh',\n\t\t\t})\n\t\t\t.delay(0.2)\n\t\t\t.staggerTo($clonnedHeadingChars, 1.2, {\n\t\t\t\tposition: 'absolute',\n\t\t\t\tfontSize: CSSProperties['font-size'],\n\t\t\t\tlineHeight: CSSProperties['line-height'],\n\t\t\t\ttransform: 'none',\n\t\t\t\tautoAlpha: 1,\n\t\t\t\tcycle: {\n\t\t\t\t\tleft: function (index) {\n\n\t\t\t\t\t\tif (coordinates[index]) {\n\t\t\t\t\t\t\treturn coordinates[index].left + 'px';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$clonnedHeadingChars[index].remove();\n\t\t\t\t\t\t\treturn '0px';\n\t\t\t\t\t\t}\n\n\t\t\t\t\t},\n\t\t\t\t\ttop: function (index) {\n\n\t\t\t\t\t\tif (coordinates[index]) {\n\t\t\t\t\t\t\treturn coordinates[index].top + 'px';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$clonnedHeadingChars[index].remove();\n\t\t\t\t\t\t\treturn '0px';\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tstagger: distributeByPosition({\n\t\t\t\t\tamount: staggerAmount,\n\t\t\t\t\tfrom: from\n\t\t\t\t}),\n\t\t\t\tease: Power3.easeInOut,\n\t\t\t})\n\t\t\t.set([$mastheadHeadingChars, $mastheadHeadingWords, $mastheadHeadingLines], {\n\t\t\t\tautoAlpha: 1,\n\t\t\t\tclearProps: 'transform'\n\t\t\t}, '+=0.6')\n\t\t\t.add(function () {\n\t\t\t\t$clonnedHeading.remove();\n\t\t\t})\n\t\t\t.add(function () {\n\t\t\t\tif ($mastheadHeading.hasClass('section-masthead__heading-big')) {\n\t\t\t\t\ttl.to($clonnedHeadingChars, 1.2, {\n\t\t\t\t\t\topacity: .3\n\t\t\t\t\t}, '0.6');\n\t\t\t\t}\n\t\t\t}, '0.6')\n\t\t\t.to($clonnedHeadingChars, 1.2, {\n\t\t\t\tcolor: CSSProperties['color'],\n\t\t\t}, '0.6')\n\t\t\t.to(window.$curtain, 1.2, {\n\t\t\t\ty: '-100%',\n\t\t\t\tease: Expo.easeInOut\n\t\t\t}, '0.6')\n\t\t\t.to($nextContent, 2.4, {\n\t\t\t\ty: '0vh',\n\t\t\t\tonComplete: function () {\n\t\t\t\t\tTweenMax.set($nextContent, {\n\t\t\t\t\t\tclearProps: 'all'\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tease: Expo.easeInOut,\n\t\t\t}, '0')\n\t\t\t.set(window.$curtain, {\n\t\t\t\ty: '100%',\n\t\t\t\tdisplay: 'none'\n\t\t\t})\n\t\t\t.set($trigger, {\n\t\t\t\tautoAlpha: 1\n\t\t\t})\n\t\t\t.add(function () {\n\t\t\t\tresolve(true);\n\t\t\t}, resolveTiming);\n\n\t});\n\n}\n","/* ======================================================================== */\n/* 2. PJAX Animate Curtain */\n/* ======================================================================== */\nfunction PJAXAnimateCurtain(direction = 'in') {\n\n\treturn new Promise(function (resolve, reject) {\n\n\t\tvar\n\t\t\ttl = new TimelineMax(),\n\t\t\t$pageContent = $('.page-wrapper__content');\n\n\t\tif (!window.$curtain.length) {\n\t\t\tresolve(true);\n\t\t\treturn;\n\t\t}\n\n\t\ttl.timeScale(1.5);\n\n\t\tif (direction == 'in') {\n\n\t\t\ttl\n\t\t\t\t.to(window.$curtain, 1.2, {\n\t\t\t\t\ty: '0%',\n\t\t\t\t\tease: Expo.easeInOut\n\t\t\t\t}, '0')\n\t\t\t\t.to($pageContent, 1.2, {\n\t\t\t\t\ty: '-5vh',\n\t\t\t\t\tease: Expo.easeInOut,\n\t\t\t\t\tonComplete: function () {\n\t\t\t\t\t\tTweenMax.set($pageContent, {\n\t\t\t\t\t\t\tclearProps: 'all'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}, '-=1.0')\n\t\t\t\t.add(function () {\n\t\t\t\t\tresolve(true);\n\t\t\t\t});\n\n\t\t} else if (direction == 'out') {\n\n\t\t\ttl\n\t\t\t\t.fromTo($pageContent, 2.4, {\n\t\t\t\t\ty: '10vh',\n\t\t\t\t}, {\n\t\t\t\t\ty: '0vh',\n\t\t\t\t\tease: Expo.easeInOut,\n\t\t\t\t\tonComplete: function () {\n\t\t\t\t\t\tTweenMax.set($pageContent, {\n\t\t\t\t\t\t\tclearProps: 'all'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}, '0')\n\t\t\t\t.to(window.$curtain, 1.2, {\n\t\t\t\t\ty: '-100%',\n\t\t\t\t\tease: Expo.easeInOut\n\t\t\t\t}, '0.6')\n\t\t\t\t.add(function () {\n\t\t\t\t\tresolve(true);\n\t\t\t\t}, '-=1.2');\n\n\t\t}\n\n\t});\n\n}\n","/* ======================================================================== */\n/* 3. PJAX Clone Heading */\n/* ======================================================================== */\nfunction PJAXCloneHeading(data, $customPositionElement) {\n\n\treturn new Promise(function (resolve, reject) {\n\t\tvar\n\t\t\ttl = new TimelineMax(),\n\t\t\t$trigger = $(data.trigger),\n\t\t\t$pageContent = $('.page-wrapper__content'),\n\t\t\t$heading = $trigger.find('.js-text-to-fly'),\n\t\t\t$headingChars,\n\t\t\tCSSProperties = [],\n\t\t\tcoordinates,\n\t\t\t$clone;\n\n\t\twindow.cloneCoordinates = [];\n\n\t\tif (!$heading.length) {\n\t\t\t$heading = $trigger.parent().parent().find('.js-text-to-fly');\n\t\t}\n\n\t\tif (!$heading.length) {\n\t\t\tresolve(true);\n\t\t}\n\n\t\tCSSProperties = $heading.css([\n\t\t\t'font-size',\n\t\t\t'font-style',\n\t\t\t'font-weight',\n\t\t\t'line-height',\n\t\t\t'letter-spacing',\n\t\t\t'color',\n\t\t\t'text-align'\n\t\t]);\n\n\t\t$headingChars = $heading.find('.split-text__char');\n\t\t$clone = $heading.clone();\n\t\t$clone.css(CSSProperties);\n\t\tcoordinates = $heading.get(0).getBoundingClientRect();\n\n\t\ttl\n\t\t\t.set($heading, {\n\t\t\t\tautoAlpha: 0\n\t\t\t})\n\t\t\t.add(function () {\n\n\t\t\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\t\t\t$clone.attr({\n\t\t\t\t\t\t'data-origin-top': coordinates['top'],\n\t\t\t\t\t\t'data-origin-left': coordinates['left'],\n\t\t\t\t\t\t'data-origin-right': coordinates['right'],\n\t\t\t\t\t\t'data-origin-bottom': coordinates['bottom'],\n\t\t\t\t\t});\n\n\t\t\t\t\t$headingChars.each(function (index) {\n\n\t\t\t\t\t\tvar\n\t\t\t\t\t\t\t$current = $(this),\n\t\t\t\t\t\t\tcurrent = $current.get(0).getBoundingClientRect(),\n\t\t\t\t\t\t\t$cloneChar = $clone.find('.split-text__char')[index];\n\n\t\t\t\t\t\twindow.cloneCoordinates[index] = {\n\t\t\t\t\t\t\ttop: current.top,\n\t\t\t\t\t\t\tleft: current.left\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tTweenMax.set($cloneChar, {\n\t\t\t\t\t\t\tposition: 'fixed',\n\t\t\t\t\t\t\ttop: window.cloneCoordinates[index].top,\n\t\t\t\t\t\t\tleft: window.cloneCoordinates[index].left,\n\t\t\t\t\t\t\tclassName: '+=clone',\n\t\t\t\t\t\t\tclearProps: 'transform',\n\t\t\t\t\t\t\tzIndex: 600\n\t\t\t\t\t\t});\n\n\t\t\t\t\t});\n\n\t\t\t\t\tresolve(true);\n\n\t\t\t\t});\n\n\t\t\t})\n\t\t\t.set($clone, {\n\t\t\t\tdisplay: 'flex',\n\t\t\t\tclassName: '+=clone',\n\t\t\t\tposition: 'fixed',\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0,\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0,\n\t\t\t\tmargin: 0,\n\t\t\t\tpadding: 0,\n\t\t\t\tzIndex: 600\n\t\t\t})\n\t\t\t.add(function () {\n\t\t\t\t$clone.appendTo(window.$barbaWrapper);\n\t\t\t})\n\t\t\t.add([\n\t\t\t\twindow.PageHeader.hideOverlayMenu(1.5, false),\n\t\t\t\tTweenMax.to(window.$curtain, 1.2, {\n\t\t\t\t\ty: '0%',\n\t\t\t\t\tease: Expo.easeInOut\n\t\t\t\t}),\n\t\t\t\tTweenMax.to($pageContent, 1.6, {\n\t\t\t\t\ty: '-10vh',\n\t\t\t\t\tease: Expo.easeInOut,\n\t\t\t\t\tonComplete: function () {\n\t\t\t\t\t\tTweenMax.set($pageContent, {\n\t\t\t\t\t\t\tclearProps: 'all'\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\t.set($heading, {\n\t\t\t\tclearProps: 'opacity,visibility'\n\t\t\t})\n\t\t\t.add(function () {\n\t\t\t\tresolve(true);\n\t\t\t}, '-=0.6');\n\n\t});\n\n}\n","/* ======================================================================== */\n/* 4. PJAX Finish Loading */\n/* ======================================================================== */\nfunction PJAXFinishLoading(data) {\n\n\treturn new Promise(function (resolve, reject) {\n\n\t\tvar\n\t\t\ttl = new TimelineMax();\n\n\t\tTweenMax.to(window.$spinner, 1.2, {\n\t\t\tautoAlpha: 0\n\t\t});\n\n\t\ttl\n\t\t\t.add(function () {\n\n\t\t\t\t// audio backgrounds\n\t\t\t\tif (typeof window.AudioBackground !== 'undefined') {\n\n\t\t\t\t\tif (window.AudioBackground.isAudioSrc()) {\n\t\t\t\t\t\twindow.AudioBackground.controller.reveal(true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\twindow.AudioBackground.controller.reveal(false);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\twindow.SMController.enabled(true);\n\t\t\t\twindow.SMController.update(true);\n\t\t\t\twindow.$pageHeader.attr('data-header-animation', '');\n\t\t\t})\n\t\t\t.add(function () {\n\t\t\t\tif (!$('.section-masthead_big-heading[data-os-animation]').length) {\n\t\t\t\t\tlockScroll(false);\n\t\t\t\t}\n\t\t\t}, '1.2')\n\t\t\t.add(function () {\n\t\t\t\twindow.$body.removeClass('cursor-progress');\n\t\t\t\twindow.InteractiveCursor.finishLoading();\n\t\t\t})\n\t\t\t.add(function () {\n\t\t\t\tresolve(true);\n\t\t\t});\n\n\t});\n\n}\n","/* ======================================================================== */\n/* 5. PJAX Get Flying Direction */\n/* ======================================================================== */\nfunction PJAXGetFlyingDirection($clone, $target) {\n\n\tif (!$clone.length || !$target.length) {\n\t\treturn 'start';\n\t}\n\n\tvar coordinatesTarget = $target.get(0).getBoundingClientRect();\n\n\tif (\n\t\t$clone.attr('data-origin-left') > coordinatesTarget['left'] &&\n\t\t$clone.attr('data-origin-right') < coordinatesTarget['right'] &&\n\t\t$clone.css('text-align') == 'center' &&\n\t\t$target.css('text-align') == 'center'\n\t) {\n\t\treturn 'center';\n\t}\n\n\tif ($clone.attr('data-origin-left') > coordinatesTarget['left']) {\n\t\treturn 'start';\n\t} else {\n\t\treturn 'end';\n\t}\n\n}\n","/* ======================================================================== */\n/* 6. PJAX Init New Page */\n/* ======================================================================== */\nfunction PJAXInitNewPage(data) {\n\n\treturn new Promise(function (resolve, reject) {\n\n\t\tvar\n\t\t\t$nextContainer = $(data.next.container),\n\t\t\t$elementorSections = $nextContainer.find('.elementor-section'),\n\t\t\t$cf7Forms = $nextContainer.find('.wpcf7-form');\n\n\t\tPJAXUpdateAudioBackground(data).then(function () {\n\n\t\t\tPromise\n\t\t\t\t.all([\n\t\t\t\t\tPJAXUpdateBody(data),\n\t\t\t\t\tPJAXUpdateNodes(data),\n\t\t\t\t\tPJAXUpdateHead(data),\n\t\t\t\t\tPJAXUpdateAdminBar(data),\n\t\t\t\t\tPJAXUpdateLanguageSwitcher(data),\n\t\t\t\t\tfontObserver(),\n\t\t\t\t])\n\t\t\t\t.then(function () {\n\t\t\t\t\treturn doSplitText($nextContainer);\n\t\t\t\t})\n\t\t\t\t.then(function () {\n\t\t\t\t\treturn setLines($nextContainer);\n\t\t\t\t})\n\t\t\t\t.then(function () {\n\t\t\t\t\treturn setChars($nextContainer);\n\t\t\t\t})\n\t\t\t\t.then(function () {\n\n\t\t\t\t\t// Elementor Pro sticky effects handling\n\t\t\t\t\tTweenMax.set($elementorSections, {\n\t\t\t\t\t\tclearProps: 'all',\n\t\t\t\t\t\tclassName: '-=elementor-sticky--active'\n\t\t\t\t\t});\n\t\t\t\t\t$nextContainer.find('.elementor-sticky__spacer').remove();\n\n\t\t\t\t\t// re-init Contact Form 7\n\t\t\t\t\tif (typeof wpcf7 !== 'undefined') {\n\t\t\t\t\t\twpcf7.initForm($cf7Forms);\n\t\t\t\t\t}\n\n\t\t\t\t\t// re-init Contact Form 7 Conditional Fields Plugin\n\t\t\t\t\tif (typeof wpcf7cf !== 'undefined') {\n\t\t\t\t\t\twpcf7cf.initForm($cf7Forms);\n\t\t\t\t\t}\n\n\t\t\t\t\t// clear & re-init ScrollMagic\n\t\t\t\t\twindow.SMController.destroy(true);\n\t\t\t\t\twindow.SMController = new ScrollMagic.Controller();\n\n\t\t\t\t\t// re-init components\n\t\t\t\t\tinitComponents($nextContainer);\n\n\t\t\t\t\t// don't start animations immediately\n\t\t\t\t\twindow.SMController.enabled(false);\n\n\t\t\t\t\t// scroll at the page beginning\n\t\t\t\t\tscrollToVeryTop();\n\t\t\t\t\t// ensure that scroll is still locked\n\t\t\t\t\tlockScroll(true);\n\n\t\t\t\t\t// init Elementor frontend\n\t\t\t\t\tif (typeof window.elementorFrontend !== 'undefined') {\n\t\t\t\t\t\telementorFrontend.init();\n\t\t\t\t\t}\n\n\t\t\t\t\t// update ad trackers\n\t\t\t\t\tPJAXUpdateTrackers();\n\n\t\t\t\t\tresolve(true);\n\n\t\t\t\t});\n\n\t\t});\n\n\t});\n\n}\n","/* ======================================================================== */\n/* 7. PJAX Prepare Transition */\n/* ======================================================================== */\nfunction PJAXPrepareTransition(data) {\n\n\treturn new Promise(function (resolve, reject) {\n\n\t\tvar\n\t\t\ttl = new TimelineMax(),\n\t\t\t$trigger = $(data.trigger),\n\t\t\t$heading = $trigger.find('.js-text-to-fly');\n\n\t\tif (!$heading.length) {\n\t\t\t$heading = $trigger.parent().parent().find('.js-text-to-fly');\n\t\t}\n\n\t\tif (!$heading.length) {\n\t\t\t$heading = $trigger;\n\t\t}\n\n\t\tTweenMax.to(window.$spinner, 0.6, {\n\t\t\tautoAlpha: 1\n\t\t});\n\n\t\ttl\n\t\t\t.add(function () {\n\t\t\t\twindow.InteractiveCursor.startLoading();\n\t\t\t\twindow.$body.addClass('cursor-progress');\n\t\t\t\tif (typeof window.distortionEffect !== 'undefined') {\n\t\t\t\t\twindow.distortionEffect.destroy();\n\t\t\t\t}\n\t\t\t})\n\t\t\t.set(window.$curtain, {\n\t\t\t\tdisplay: 'block',\n\t\t\t\ty: '100%',\n\t\t\t\tzIndex: 550\n\t\t\t})\n\t\t\t.set($trigger, {\n\t\t\t\tclassName: '+=selected'\n\t\t\t})\n\t\t\t.add(function () {\n\t\t\t\tlockScroll(true);\n\t\t\t\twindow.triggerTextAlign = $heading.css('text-align');\n\t\t\t\twindow.$document.off('click');\n\t\t\t\tresolve(true);\n\t\t\t});\n\n\t});\n\n}\n","/* ======================================================================== */\n/* 8. PJAX Transition Flying Heading */\n/* ======================================================================== */\nvar PJAXTransitionFlyingHeading = {\n\tname: 'flyingHeading',\n\tcustom: ({\n\t\tcurrent,\n\t\tnext,\n\t\ttrigger\n\t}) => {\n\t\treturn $(trigger).data('pjax-link') == 'flyingHeading';\n\t},\n\n\tbefore: (data) => {\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tPJAXPrepareTransition(data).then(function () {\n\t\t\t\tresolve(true);\n\t\t\t});\n\n\t\t});\n\n\t},\n\n\tbeforeLeave: (data) => {\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tPJAXCloneHeading(data).then(function () {\n\t\t\t\tresolve(true);\n\t\t\t});\n\n\t\t});\n\n\t},\n\n\tbeforeEnter: (data) => {\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tvar\n\t\t\t\t$nextContainer = $(data.next.container),\n\t\t\t\t$mastheadHeading = $nextContainer.find('.section-masthead .js-text-to-fly');\n\n\t\t\t// don't trigger reveal animation on heading\n\t\t\t$mastheadHeading.addClass('js-split-text_cancel-animation');\n\t\t\tresolve(true);\n\n\t\t});\n\t},\n\n\tenter: (data) => {\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tPJAXInitNewPage(data).then(function () {\n\t\t\t\tresolve(true);\n\t\t\t});\n\n\t\t});\n\t},\n\n\tafterEnter: (data) => {\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tPJAXAnimateClonnedHeading(data).then(function () {\n\t\t\t\tresolve(true);\n\t\t\t});\n\n\t\t});\n\n\t},\n\n\tafter: (data) => {\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tPJAXFinishLoading(data).then(function () {\n\t\t\t\tresolve(true);\n\t\t\t});\n\n\t\t});\n\n\t}\n\n}\n","/* ======================================================================== */\n/* 9. PJAX Transition General */\n/* ======================================================================== */\nvar PJAXTransitionGeneral = {\n\n\tbefore: (data) => {\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tPJAXPrepareTransition(data).then(function () {\n\t\t\t\tresolve(true);\n\t\t\t});\n\n\t\t});\n\n\t},\n\n\tbeforeLeave: (data) => {\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tPJAXAnimateCurtain('in').then(function () {\n\t\t\t\tresolve(true);\n\t\t\t});\n\n\t\t});\n\n\t},\n\n\tenter: (data) => {\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tPJAXInitNewPage(data).then(function () {\n\t\t\t\tresolve(true);\n\t\t\t});\n\n\t\t});\n\t},\n\n\tafterEnter: (data) => {\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tPJAXAnimateCurtain('out').then(function () {\n\t\t\t\tresolve(true);\n\t\t\t});\n\n\t\t});\n\n\t},\n\n\n\tafter: (data) => {\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tPJAXFinishLoading(data).then(function () {\n\t\t\t\tresolve(true);\n\t\t\t});\n\n\t\t});\n\n\t}\n\n}\n","/* ======================================================================== */\n/* 10. PJAX Transition Overlay Menu */\n/* ======================================================================== */\nvar PJAXTransitionOverlayMenu = {\n\tname: 'overlayMenu',\n\tcustom: ({\n\t\tcurrent,\n\t\tnext,\n\t\ttrigger\n\t}) => {\n\t\treturn $(trigger).data('pjax-link') == 'overlayMenu';\n\t},\n\n\tbefore: (data) => {\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tPJAXPrepareTransition(data).then(function () {\n\t\t\t\tresolve(true);\n\t\t\t});\n\n\t\t});\n\n\t},\n\n\tbeforeLeave: (data) => {\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tPJAXCloneHeading(data).then(function () {\n\t\t\t\tresolve(true);\n\t\t\t});\n\n\t\t});\n\n\t},\n\n\tbeforeEnter: (data) => {\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tvar\n\t\t\t\t$nextContainer = $(data.next.container),\n\t\t\t\t$mastheadHeading = $nextContainer.find('.section-masthead .js-text-to-fly');\n\n\t\t\t// don't trigger reveal animation on heading\n\t\t\tif ($mastheadHeading.length) {\n\t\t\t\t$mastheadHeading.addClass('js-split-text_cancel-animation');\n\t\t\t}\n\n\t\t\tresolve(true);\n\n\t\t});\n\t},\n\n\tenter: (data) => {\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tPJAXInitNewPage(data).then(function () {\n\t\t\t\tresolve(true);\n\t\t\t});\n\n\t\t});\n\t},\n\n\tafterEnter: (data) => {\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tPJAXAnimateClonnedHeading(data).then(function () {\n\t\t\t\tresolve(true);\n\t\t\t});\n\n\t\t});\n\n\t},\n\n\tafter: (data) => {\n\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tPJAXFinishLoading(data).then(function () {\n\t\t\t\tresolve(true);\n\t\t\t});\n\n\t\t});\n\n\t}\n\n}\n","/* ======================================================================== */\n/* 11. PJAX Update Admin Bar */\n/* ======================================================================== */\nfunction PJAXUpdateAdminBar(data) {\n\n\treturn new Promise(function (resolve, reject) {\n\n\t\tvar $currentBar = $('#wpadminbar');\n\n\t\tif (!$currentBar.length) {\n\t\t\tresolve(true);\n\t\t\treturn;\n\t\t}\n\n\t\tvar\n\t\t\trawHTML = $.parseHTML(data.next.html),\n\t\t\t$newBar = $(rawHTML).filter('#wpadminbar');\n\n\t\t$newBar.find('.hide-if-no-customize').removeClass('hide-if-no-customize');\n\t\t$currentBar.replaceWith($newBar);\n\n\t\tresolve(true);\n\n\t});\n\n}\n","/* ======================================================================== */\n/* 12. PJAX Update Audio Background */\n/* ======================================================================== */\nfunction PJAXUpdateAudioBackground(data) {\n\n return new Promise(function (resolve, reject) {\n\n var\n $nextContainer = $($.parseHTML(data.next.html)),\n $audioBackground = $('#js-audio-background'),\n $audioBackgroundOptions = $nextContainer.find('#js-audio-background__options');\n\n if (typeof window.AudioBackground !== 'undefined') {\n\n switch ($audioBackgroundOptions.data('options')) {\n case 'music_off':\n window.AudioBackground.fadeOut().then(function () {\n // the next page audio source is different\n // just update audio src but don't start playback\n if ($nextContainer.find('#js-audio-background').attr('src') !== $audioBackground.attr('src')) {\n syncAttributes($nextContainer.find('#js-audio-background'), $audioBackground);\n }\n\n window.AudioBackground.el.currentTime = 0;\n window.AudioBackground.el.pause();\n window.AudioBackground.controller.pause();\n });\n break;\n case 'play':\n // audio autoplay is enabled\n if (window.AudioBackground.el.autoplay === true) {\n\n // the next page audio source is different\n // fade out current volume, update src, start playback\n if ($nextContainer.find('#js-audio-background').attr('src') !== $audioBackground.attr('src')) {\n window.AudioBackground.fadeOut().then(function () {\n syncAttributes($nextContainer.find('#js-audio-background'), $audioBackground);\n window.AudioBackground.fadeIn();\n });\n }\n\n // the next page audio source is the same as current\n // reset position and start playback if it's paused\n if (window.AudioBackground.el.paused) {\n window.AudioBackground.el.currentTime = 0;\n window.AudioBackground.fadeIn();\n }\n\n } else { // audio autoplay is disabled\n\n if (window.AudioBackground.el.paused) { // playback is paused\n\n // the next page audio source is different\n // just update audio src but don't start playback\n if ($nextContainer.find('#js-audio-background').attr('src') !== $audioBackground.attr('src')) {\n syncAttributes($nextContainer.find('#js-audio-background'), $audioBackground);\n }\n\n } else { // playback is running\n\n // the next page audio source is different\n // fade out current volume, update src, start playback\n if ($nextContainer.find('#js-audio-background').attr('src') !== $audioBackground.attr('src')) {\n window.AudioBackground.fadeOut().then(function () {\n syncAttributes($nextContainer.find('#js-audio-background'), $audioBackground);\n window.AudioBackground.fadeIn();\n });\n }\n\n }\n\n }\n break;\n default:\n window.AudioBackground.el.currentTime = 0;\n window.AudioBackground.fadeIn();\n break;\n }\n }\n\n resolve(true);\n\n });\n}\n","/* ======================================================================== */\n/* 13. PJAX Update Body */\n/* ======================================================================== */\nfunction PJAXUpdateBody(data) {\n\n\treturn new Promise(function (resolve, reject) {\n\n\t\tvar\n\t\t\tregexp = /\\/gi,\n\t\t\tmatch = regexp.exec(data.next.html);\n\n\t\tif (!match || !match[1]) {\n\t\t\tresolve(true);\n\t\t}\n\n\t\tdocument.body.setAttribute('class', match[1]);\n\n\t\tresolve(true);\n\n\t});\n\n}\n","/* ======================================================================== */\n/* 14. PJAX Update Head */\n/* ======================================================================== */\nfunction PJAXUpdateHead(data) {\n\n\treturn new Promise(function (resolve, reject) {\n\n\t\tvar\n\t\t\thead = document.head,\n\t\t\tnewPageRawHead = data.next.html.match(/]*>([\\s\\S.]*)<\\/head>/i)[0],\n\t\t\tnewPageHead = document.createElement('head');\n\n\t\tnewPageHead.innerHTML = newPageRawHead;\n\n\t\tvar headTags = [\n\t\t\t'meta[name=\"keywords\"]',\n\t\t\t'meta[name=\"description\"]',\n\t\t\t'meta[property^=\"og\"]',\n\t\t\t'meta[name^=\"twitter\"]',\n\t\t\t'meta[itemprop]',\n\t\t\t'link[itemprop]',\n\t\t\t'link[rel=\"prev\"]',\n\t\t\t'link[rel=\"next\"]',\n\t\t\t'link[rel=\"canonical\"]',\n\t\t\t'link[rel=\"alternate\"]',\n\t\t\t'link[rel=\"shortlink\"]',\n\t\t\t'link[id*=\"elementor\"]',\n\t\t\t'link[id*=\"eael\"]', // Essential Addons plugin post CSS\n\t\t\t'style[id*=\"elementor\"]',\n\t\t\t'style[id*=\"eael\"]', // Essential Addons plugin inline CSS\n\t\t].join(',');\n\n\t\tvar\n\t\t\toldHeadTags = head.querySelectorAll(headTags),\n\t\t\tnewHeadTags = newPageHead.querySelectorAll(headTags),\n\t\t\tpageStyles = document.querySelectorAll('link[rel=\"stylesheet\"]'),\n\t\t\tnewStylesLoaded = [];\n\n\t\t// flag all current page styles as loaded\n\t\tfor (var i = 0; i < pageStyles.length; i++) {\n\t\t\tpageStyles[i].isLoaded = true;\n\t\t}\n\n\t\t// append new and remove old tags\n\t\tfor (var i = 0; i < newHeadTags.length; i++) {\n\n\t\t\tif (typeof oldHeadTags[i] !== 'undefined') {\n\t\t\t\thead.insertBefore(newHeadTags[i], oldHeadTags[i].nextElementSibling);\n\t\t\t\thead.removeChild(oldHeadTags[i]);\n\t\t\t} else {\n\t\t\t\thead.insertBefore(newHeadTags[i], newHeadTags[i - 1]);\n\t\t\t}\n\n\t\t}\n\n\t\t// page now has new styles\n\t\tpageStyles = document.querySelectorAll('link[rel=\"stylesheet\"]');\n\n\t\t// listen for 'load' only on elements which are not loaded yet\n\t\tfor (var i = 0; i < pageStyles.length; i++) {\n\n\t\t\tif (!pageStyles[i].isLoaded) {\n\n\t\t\t\tvar promise = new Promise(function (resolve) {\n\n\t\t\t\t\tpageStyles[i].addEventListener('load', function (e) {\n\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t});\n\n\t\t\t\t});\n\n\t\t\t\tnewStylesLoaded.push(promise);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// load all new page styles\n\t\tPromise.all(newStylesLoaded).then(function () {\n\t\t\tresolve(true);\n\t\t});\n\n\t});\n\n}\n","/* ======================================================================== */\n/* 15. PJAX Update Language Switcher */\n/* ======================================================================== */\nfunction PJAXUpdateLanguageSwitcher(data) {\n\n\treturn new Promise(function (resolve, reject) {\n\n\t\tvar $currentSwitcher = $('.lang-switcher');\n\n\t\tif (!$currentSwitcher.length) {\n\t\t\tresolve(true);\n\t\t\treturn;\n\t\t}\n\n\t\tvar\n\t\t\trawHTML = $.parseHTML(data.next.html),\n\t\t\t$newSwitcher = $(rawHTML).find('.lang-switcher');\n\n\t\t$currentSwitcher.replaceWith($newSwitcher);\n\n\t\tresolve(true);\n\n\t});\n\n}\n","/* ======================================================================== */\n/* 16. PJAX Update Nodes */\n/* ======================================================================== */\nfunction PJAXUpdateNodes(data) {\n\n\treturn new Promise(function (resolve, reject) {\n\n\t\tvar\n\t\t\t$nextContainer = $($.parseHTML(data.next.html)),\n\t\t\tnodesToUpdate = [\n\t\t\t\t'#page-header',\n\t\t\t\t'#page-footer',\n\t\t\t\t'.header__wrapper-overlay-menu',\n\t\t\t\t'.transition-curtain',\n\t\t\t\t'#js-audio-background__options'\n\t\t\t]; // selectors of elements that needed to update\n\n\t\t$.each(nodesToUpdate, function () {\n\n\t\t\tvar\n\t\t\t\t$item = $(this),\n\t\t\t\t$nextItem = $nextContainer.find(this);\n\n\t\t\t// sync attributes if element exist in the new container\n\t\t\tif ($nextItem.length) {\n\t\t\t\tsyncAttributes($nextItem, $item);\n\t\t\t}\n\n\t\t});\n\n\t\tresolve(true);\n\n\t});\n\n}\n","/* ======================================================================== */\n/* 17. PJAX Update Trackers */\n/* ======================================================================== */\nfunction PJAXUpdateTrackers() {\n\n\tupdateGA();\n\tupdateFBPixel();\n\tupdateYaMetrika();\n\n\t/**\n\t * Google Analytics\n\t */\n\tfunction updateGA() {\n\n\t\tif (typeof gtag === 'function' && typeof window.gaData !== 'undefined' && Object.keys(window.gaData)[0] !== 'undefined') {\n\n\t\t\tvar\n\t\t\t\ttrackingID = Object.keys(window.gaData)[0],\n\t\t\t\tpageRelativePath = (window.location.href).replace(window.location.origin, '');\n\n\t\t\tgtag('js', new Date());\n\t\t\tgtag('config', trackingID, {\n\t\t\t\t'page_title': document.title,\n\t\t\t\t'page_path': pageRelativePath\n\t\t\t});\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Facebook Pixel\n\t */\n\tfunction updateFBPixel() {\n\n\t\tif (typeof fbq === 'function') {\n\t\t\tfbq('track', 'PageView');\n\t\t}\n\n\t}\n\n\t/**\n\t * Yandex Metrika\n\t */\n\tfunction updateYaMetrika() {\n\n\t\tif (typeof ym === 'function') {\n\n\t\t\tvar trackingID = getYmTrackingNumber();\n\n\t\t\tym(trackingID, 'hit', window.location.href, {\n\t\t\t\ttitle: document.title\n\t\t\t});\n\n\t\t}\n\n\t\tfunction getYmTrackingNumber() {\n\n\t\t\tif (typeof window.Ya !== 'undefined' && typeof window.Ya.Metrika2) {\n\t\t\t\treturn window.Ya.Metrika2.counters()[0].id || null;\n\t\t\t}\n\n\t\t\tif (typeof window.Ya !== 'undefined' && typeof window.Ya.Metrika) {\n\t\t\t\treturn window.Ya.Metrika.counters()[0].id || null;\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t}\n\n\t}\n\n}\n","/* ======================================================================== */\n/* 18. PJAX Wait Container Images */\n/* ======================================================================== */\nfunction PJAXWaitContainerImages(data) {\n\n\treturn new Promise(function (resolve, reject) {\n\n\t\tvar\n\t\t\t$nextContainer = $(data.next.container),\n\t\t\t$nextMasthead = $nextContainer.find('.section-masthead');\n\n\t\t/**\n\t\t * We can't wait infinitely for the images\n\t\t * so let's proceed further anyway\n\t\t */\n\t\tsetTimeout(function () {\n\t\t\tresolve(true);\n\t\t}, 3000);\n\n\t\t$nextMasthead.imagesLoaded().always({\n\t\t\tbackground: true\n\t\t}, function () {\n\n\t\t\t/**\n\t\t\t * small delay to avoid any problems\n\t\t\t * with masthead image size calculation\n\t\t\t */\n\t\t\tsetTimeout(function () {\n\t\t\t\tresolve(true);\n\t\t\t}, 150);\n\n\t\t});\n\n\t});\n\n}\n","/* ======================================================================== */\n/* 19. PJAX */\n/* ======================================================================== */\nvar PJAX = function () {\n\n\tvar $barbaWrapper = $('[data-barba=\"wrapper\"]');\n\n\tif (!$barbaWrapper.length) {\n\t\treturn;\n\t}\n\n\tbarba.init({\n\n\t\ttimeout: 10000,\n\n\t\t// don't trigger barba for links outside wrapper \n\t\tprevent: ({\n\t\t\tel\n\t\t}) => {\n\n\t\t\tvar\n\t\t\t\t$el = $(el),\n\t\t\t\texludeRules = [\n\t\t\t\t\t'[data-elementor-open-lightbox]', // Elementor lightbox gallery\n\t\t\t\t\t'[data-elementor-lightbox-slideshow]', // Elementor Pro Gallery\n\t\t\t\t\t'.lang-switcher a' // Polylang & WPML language switcher\n\t\t\t\t];\n\n\t\t\t// elementor preview\n\t\t\tif (typeof elementor === 'object') {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// clicked on elementor ouside barba wrapper\n\t\t\tif ($el.closest($barbaWrapper).length < 1) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// custom rules from WordPress Customizer\n\t\t\tif (window.theme.customPreventRules) {\n\t\t\t\texludeRules.push(window.theme.customPreventRules);\n\t\t\t}\n\n\t\t\t// check against array of rules to prevent\n\t\t\treturn $el.is(exludeRules.join(','));\n\n\t\t},\n\t\t// custom transitions\n\t\ttransitions: [\n\t\t\tPJAXTransitionGeneral,\n\t\t\tPJAXTransitionFlyingHeading,\n\t\t\tPJAXTransitionOverlayMenu,\n\t\t]\n\n\t});\n\n\n}\n","/* ======================================================================== */\n/* 20. audioControl */\n/* ======================================================================== */\nclass AudioControl {\n\n constructor() {\n\n this.$control = $('.js-audio-background__control')\n this.$icon = this.$control.find('.js-audio-background__icon');\n this.$label = this.$control.find('.js-audio-background__label');\n\n this.hiddenClass = 'hidden';\n }\n\n reveal(yes) {\n if (yes === true) {\n this.$control.removeClass(this.hiddenClass)\n } else {\n this.$control.addClass(this.hiddenClass);\n }\n }\n\n play() {\n this.$icon.html(window.theme.audio.playing.icon.toString());\n this.$label.html(window.theme.audio.playing.label.toString());\n }\n\n pause() {\n this.$icon.html(window.theme.audio.paused.icon.toString());\n this.$label.html(window.theme.audio.paused.label.toString());\n }\n\n}\n","/* ======================================================================== */\n/* 21. AudioBackground */\n/* ======================================================================== */\nclass AudioBackground {\n\n constructor($scope) {\n this.$target = $scope.find('#js-audio-background');\n this.$options = $scope.find('#js-audio-background__options');\n this.controller = new AudioControl();\n this.el = this.$target.get(0);\n this.targetVolume = this.$target.data('volume') || 100;\n this.tl = new TimelineMax();\n this.el.volume = 0;\n this.el.muted = false;\n this.bindEvents();\n }\n\n run() {\n\n if (this.isAudioSrc() && !this.isAudioOff()) {\n\n this.controller.reveal(true);\n\n if (this.el.autoplay === true) {\n this.controller.play();\n this.fadeIn();\n } else {\n this.controller.pause();\n }\n\n }\n\n }\n\n isAudioOff() {\n return this.$options.attr('data-options') === 'music_off';\n }\n\n isAudioSrc() {\n return this.$target.attr('src').length > 0;\n }\n\n bindEvents() {\n this.controller.$control.on('click', () => {\n if (!this.isAudioSrc()) {\n return false;\n }\n\n if (this.el.paused === true) {\n this.el.volume = 0;\n this.el.play();\n this.fadeIn();\n this.controller.play();\n } else {\n this.fadeOut().then(() => {\n this.el.pause();\n });\n this.controller.pause();\n }\n });\n\n this.el.addEventListener('play', () => {\n this.controller.play();\n });\n this.el.addEventListener('pause', () => {\n this.controller.pause();\n });\n }\n\n fadeIn() {\n\n return new Promise((resolve) => {\n\n const volume = {\n val: 0\n };\n\n if (this.el.play !== 'undefined') {\n this.el.play().then(() => {\n this.tl\n .clear()\n .to(volume, 3, {\n val: this.targetVolume,\n ease: Power3.easeInOut,\n onUpdate: () => {\n let value = parseFloat((volume.val) / 100);\n if (value >= 0 && value <= this.targetVolume / 100) {\n this.el.volume = value;\n }\n },\n onComplete: () => {\n resolve(true);\n }\n });\n }).catch(() => {\n resolve(true);\n });\n }\n\n });\n }\n\n fadeOut() {\n\n return new Promise((resolve) => {\n\n const volume = {\n val: 0\n };\n\n this.tl\n .clear()\n .to(volume, 1, {\n val: this.targetVolume,\n ease: Power3.easeInOut,\n onUpdate: () => {\n let value = parseFloat((this.targetVolume - volume.val) / 100);\n if (value >= 0 && value <= this.targetVolume / 100) {\n this.el.volume = value;\n }\n },\n onComplete: () => {\n this.el.pause();\n resolve(true);\n }\n });\n\n });\n\n }\n\n}\n","/* ======================================================================== */\n/* 22. ButtonCircles */\n/* ======================================================================== */\nvar ButtonCircles = function ($target) {\n\n\tif (!$target.length) {\n\t\treturn;\n\t}\n\n\tvar\n\t\t$circles = $target.find('.circle'),\n\t\ttl = new TimelineMax();\n\n\ttl.set($circles, {\n\t\tdrawSVG: '0% 0%',\n\t});\n\n\t$target\n\t\t.on('mouseenter touchstart', function () {\n\n\t\t\ttl\n\t\t\t\t.clear()\n\t\t\t\t.staggerTo($circles, 0.6, {\n\t\t\t\t\tdrawSVG: '0% 100%',\n\t\t\t\t\tease: Power4.easeOut,\n\t\t\t\t}, 0.05);\n\n\t\t})\n\t\t.on('mouseleave touchend', function () {\n\n\t\t\ttl\n\t\t\t\t.clear()\n\t\t\t\t.staggerTo($circles, 0.6, {\n\t\t\t\t\tdrawSVG: '0% 0%',\n\t\t\t\t\tease: Power4.easeOut\n\t\t\t\t}, 0.05);\n\n\t\t});\n\n}\n","/* ======================================================================== */\n/* 23. ButtonCircle */\n/* ======================================================================== */\nvar ButtonCircle = function ($scope) {\n\n\tvar $target = $scope.find('.js-button-circle');\n\n\tif (!$target.length) {\n\t\treturn;\n\t}\n\n\t$target.each(function () {\n\n\t\tvar\n\t\t\t$current = $(this),\n\t\t\t$currentCircle = $current.find('.circle'),\n\t\t\ttl = new TimelineMax();\n\n\t\ttl.set($currentCircle, {\n\t\t\tdrawSVG: '100% 100%'\n\t\t});\n\n\t\t$current.on('mouseenter touchstart', function () {\n\n\t\t\ttl\n\t\t\t\t.clear()\n\t\t\t\t.fromTo($currentCircle, 0.6, {\n\t\t\t\t\tdrawSVG: '100% 100%'\n\t\t\t\t}, {\n\t\t\t\t\tdrawSVG: '0% 100%',\n\t\t\t\t\tease: Power3.easeInOut,\n\t\t\t\t});\n\n\t\t}).on('mouseleave touchend', function () {\n\n\t\t\ttl\n\t\t\t\t.clear()\n\t\t\t\t.to($currentCircle, 0.6, {\n\t\t\t\t\tdrawSVG: '0% 0%',\n\t\t\t\t\tease: Power3.easeInOut\n\t\t\t\t});\n\n\t\t});\n\n\t});\n\n}\n","/* ======================================================================== */\n/* 24. Cursor */\n/* ======================================================================== */\nvar Cursor = function () {\n\n\tvar\n\t\t$cursor = $('#js-cursor'),\n\t\tself = this,\n\t\ttl = new TimelineMax();\n\n\tthis.startLoading = function () {\n\t\twindow.$document.off('mouseenter mouseleave');\n\t\tif ($cursor.length) {\n\t\t\trevealCursor();\n\t\t}\n\t};\n\n\tthis.finishLoading = function () {\n\t\tfinishLoading();\n\t\tif ($cursor.length) {\n\t\t\tregisterEventListeners();\n\t\t\tclearCursor();\n\t\t}\n\t};\n\n\tthis.mouseX = 0;\n\tthis.mouseY = 0;\n\n\tthis.update = function () {\n\t\tself.mouseX = self.mouseX + pageXOffset;\n\t\tself.mouseY = self.mouseY + pageYOffset;\n\t}\n\n\t// don't launch on mobiles\n\tif (!$cursor.length || Modernizr.touchevents) {\n\t\treturn;\n\t}\n\n\tvar\n\t\ttl = new TimelineMax(),\n\t\t$follower = $('.cursor__follower'),\n\t\t$labelText = $('.cursor__label-text'),\n\t\toffset = parseInt(window.$html.css('marginTop'), 10),\n\t\tposX = 0,\n\t\tposY = 0,\n\t\tcursorNoneClass = 'cursor-none',\n\t\ttrailingDelay = parseFloat(window.theme.animations.cursorAttractionDelay) || 0;\n\n\tstart();\n\n\tfunction start() {\n\n\t\tvar moveEvt = new MouseEvent('mousemove');\n\n\t\tif (!$cursor.length || Modernizr.touchevents) {\n\t\t\treturn;\n\t\t}\n\n\t\tTweenMax.to($cursor, 1.2, {\n\t\t\tdisplay: 'block',\n\t\t\tautoAlpha: 1,\n\t\t\ty: '-50%',\n\t\t\tx: '-50%',\n\t\t\tease: Elastic.easeOut.config(1, 0.6),\n\t\t});\n\n\t\tTweenMax.to({}, 0.01, {\n\t\t\trepeat: -1,\n\t\t\tonRepeat: function () {\n\n\t\t\t\tposX += (self.mouseX - posX);\n\t\t\t\tposY += (self.mouseY - posY - offset);\n\n\t\t\t\tTweenMax.to($cursor, trailingDelay, {\n\t\t\t\t\tx: posX,\n\t\t\t\t\ty: posY + offset,\n\t\t\t\t});\n\n\t\t\t}\n\t\t});\n\n\t\tregisterEventListeners();\n\t\tdocument.dispatchEvent(moveEvt);\n\n\t}\n\n\tfunction startLoading() {\n\n\t\tif (!$cursor.length || Modernizr.touchevents) {\n\t\t\treturn;\n\t\t}\n\n\t\ttl\n\t\t\t.stop()\n\t\t\t.clear()\n\t\t\t.play()\n\t\t\t.add(function () {\n\t\t\t\trevealHelper(window.theme.cursorFollower.labels.loading);\n\t\t\t});\n\n\t}\n\n\tfunction finishLoading() {\n\n\t\tif (!$cursor.length || Modernizr.touchevents) {\n\t\t\treturn;\n\t\t}\n\n\t\ttl\n\t\t\t.stop()\n\t\t\t.clear()\n\t\t\t.play()\n\t\t\t.add(function () {\n\t\t\t\thideHelper();\n\t\t\t});\n\n\t}\n\n\tfunction registerEventListeners() {\n\n\t\twindow.$document\n\t\t\t.on('mousemove', function (e) {\n\t\t\t\tself.mouseX = e.clientX;\n\t\t\t\tself.mouseY = e.clientY;\n\t\t\t});\n\n\t\tregisterEventListener('a, .slider__dot, .slider__arrow, #js-burger, .js-scroll-down, .button, .audio-control', function () {\n\t\t\trevealCursor();\n\t\t}, function () {\n\t\t\tclearCursor();\n\t\t});\n\n\t\tif (window.theme.cursorFollower.labels.slider !== '') {\n\t\t\tregisterEventListener('.slider_draggable, .dialog-lightbox-widget .swiper-container .elementor-lightbox-prevent-close', function () {\n\t\t\t\trevealHelper(window.theme.cursorFollower.labels.slider);\n\t\t\t}, function () {\n\t\t\t\thideHelper();\n\t\t\t});\n\t\t}\n\n\t}\n\n\tfunction registerEventListener(elements, fEnter, fLeave) {\n\n\t\twindow.$document\n\t\t\t.on('mouseenter', elements, function () {\n\t\t\t\tfEnter();\n\t\t\t})\n\t\t\t.on('mouseleave', elements, function () {\n\t\t\t\tfLeave();\n\t\t\t});\n\n\t}\n\n\tfunction revealHelper(label) {\n\n\t\ttl\n\t\t\t.clear()\n\t\t\t.add(function () {\n\t\t\t\t$labelText.html(label);\n\t\t\t\twindow.$body.addClass(cursorNoneClass);\n\t\t\t})\n\t\t\t.set($cursor, {\n\t\t\t\tmixBlendMode: 'normal'\n\t\t\t})\n\t\t\t.to($follower, 0.6, {\n\t\t\t\tautoAlpha: 1,\n\t\t\t\tscale: 1,\n\t\t\t\tease: Elastic.easeOut.config(1, 0.6),\n\t\t\t})\n\t\t\t.to($labelText, 0.3, {\n\t\t\t\ty: '0%',\n\t\t\t\tautoAlpha: 1,\n\t\t\t\tease: Power3.easeInOut,\n\t\t\t}, '-=0.6');\n\n\t}\n\n\tfunction hideHelper() {\n\n\t\ttl\n\t\t\t.clear()\n\t\t\t.add(function () {\n\t\t\t\twindow.$body.removeClass(cursorNoneClass);\n\t\t\t})\n\t\t\t.to($labelText, 0.3, {\n\t\t\t\ty: '100%',\n\t\t\t\tautoAlpha: 0,\n\t\t\t\tease: Power3.easeInOut,\n\t\t\t})\n\t\t\t.set($cursor, {\n\t\t\t\tclearProps: 'mixBlendMode'\n\t\t\t})\n\t\t\t.to($follower, 0.6, {\n\t\t\t\tautoAlpha: 0.5,\n\t\t\t\tscale: 0.2,\n\t\t\t\tease: Elastic.easeOut.config(1, 0.6),\n\t\t\t}, '-=0.1')\n\t\t\t.add(function () {\n\t\t\t\t$labelText.html('');\n\t\t\t});\n\t}\n\n\tfunction revealCursor() {\n\t\ttl\n\t\t\t.clear()\n\t\t\t.set($cursor, {\n\t\t\t\tclearProps: 'mixBlendMode'\n\t\t\t})\n\t\t\t.add([\n\t\t\t\tTweenMax.to($labelText, 0.3, {\n\t\t\t\t\ty: '100%',\n\t\t\t\t\tautoAlpha: 0,\n\t\t\t\t\tease: Power3.easeInOut,\n\t\t\t\t}),\n\t\t\t\tTweenMax.to($follower, 0.6, {\n\t\t\t\t\tautoAlpha: 0.5,\n\t\t\t\t\tscale: 0.8,\n\t\t\t\t\tease: Elastic.easeOut.config(1, 0.6),\n\t\t\t\t})\n\t\t\t]);\n\t}\n\n\tfunction clearCursor() {\n\t\ttl\n\t\t\t.clear()\n\t\t\t.set($cursor, {\n\t\t\t\tclearProps: 'mixBlendMode'\n\t\t\t})\n\t\t\t.add([\n\t\t\t\tTweenMax.to($labelText, 0.3, {\n\t\t\t\t\ty: '100%',\n\t\t\t\t\tautoAlpha: 0,\n\t\t\t\t\tease: Power3.easeInOut,\n\t\t\t\t}),\n\t\t\t\tTweenMax.to($follower, 0.6, {\n\t\t\t\t\tautoAlpha: 0.5,\n\t\t\t\t\tscale: 0.2,\n\t\t\t\t\tease: Elastic.easeOut.config(1, 0.6),\n\t\t\t\t})\n\t\t\t]);\n\t}\n\n}\n","/* ======================================================================== */\n/* 25. EffectDistortion */\n/* ======================================================================== */\nvar EffectDistortion = function (opts) {\n\n\tvar vertex = `\n\t\t\tvarying vec2 vUv;\n\t\t\tvoid main() {\n\t\t\t\tvUv = uv;\n\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t}\n\t`;\n\tvar fragmentHorizontal = `\n\t\t\tvarying vec2 vUv;\n\n\t\t\tuniform sampler2D texture;\n\t\t\tuniform sampler2D texture2;\n\t\t\tuniform sampler2D disp;\n\n\t\t\tuniform float dispFactor;\n\t\t\tuniform float effectFactor;\n\n\t\t\tvoid main() {\n\n\t\t\t\t\tvec2 uv = vUv;\n\n\t\t\t\t\tvec4 disp = texture2D(disp, uv);\n\n\t\t\t\t\tvec2 distortedPosition = vec2(uv.x + dispFactor * (disp.r*effectFactor), uv.y);\n\t\t\t\t\tvec2 distortedPosition2 = vec2(uv.x - (1.0 - dispFactor) * (disp.r*effectFactor), uv.y);\n\n\t\t\t\t\tvec4 _texture = texture2D(texture, distortedPosition);\n\t\t\t\t\tvec4 _texture2 = texture2D(texture2, distortedPosition2);\n\n\t\t\t\t\tvec4 finalTexture = mix(_texture, _texture2, dispFactor);\n\n\t\t\t\t\tgl_FragColor = finalTexture;\n\n\t\t\t}\n\t`;\n\tvar fragmentVertical = `\n\t\t\tvarying vec2 vUv;\n\n\t\t\tuniform sampler2D texture;\n\t\t\tuniform sampler2D texture2;\n\t\t\tuniform sampler2D disp;\n\n\t\t\tuniform float dispFactor;\n\t\t\tuniform float effectFactor;\n\n\t\t\tvoid main() {\n\n\t\t\t\t\tvec2 uv = vUv;\n\n\t\t\t\t\tvec4 disp = texture2D(disp, uv);\n\n\t\t\t\t\tvec2 distortedPosition = vec2(uv.x, uv.y - dispFactor * (disp.r*effectFactor));\n\t\t\t\t\tvec2 distortedPosition2 = vec2(uv.x, uv.y + (1.0 - dispFactor) * (disp.r*effectFactor));\n\n\t\t\t\t\tvec4 _texture = texture2D(texture, distortedPosition);\n\t\t\t\t\tvec4 _texture2 = texture2D(texture2, distortedPosition2);\n\n\t\t\t\t\tvec4 finalTexture = mix(_texture, _texture2, dispFactor);\n\n\t\t\t\t\tgl_FragColor = finalTexture;\n\n\t\t\t}\n\t`;\n\tvar aspect = opts.aspectRatio || 1.6;\n\tvar canvas = opts.canvas;\n\tvar dispImage = opts.displacementImage;\n\tvar images = opts.images;\n\tvar scene = new THREE.Scene();\n\tvar camera;\n\tvar animFrame;\n\tvar textures = [];\n\tvar renderer = new THREE.WebGLRenderer({\n\t\tcanvas: canvas,\n\t\tpowerPreference: 'high-performance'\n\t});\n\tvar loader = new THREE.TextureLoader();\n\tvar disp = loader.load(dispImage);\n\tvar mat = new THREE.ShaderMaterial({\n\t\tuniforms: {\n\t\t\teffectFactor: {\n\t\t\t\ttype: \"f\",\n\t\t\t},\n\t\t\tdispFactor: {\n\t\t\t\ttype: \"f\",\n\t\t\t\tvalue: 0.0\n\t\t\t},\n\t\t\ttexture: {\n\t\t\t\ttype: \"t\",\n\t\t\t\tvalue: textures[0]\n\t\t\t},\n\t\t\ttexture2: {\n\t\t\t\ttype: \"t\",\n\t\t\t\tvalue: textures[1]\n\t\t\t},\n\t\t\tdisp: {\n\t\t\t\ttype: \"t\",\n\t\t\t\tvalue: disp\n\t\t\t}\n\t\t},\n\t\tvertexShader: vertex,\n\t\tfragmentShader: opts.slider.params.direction == 'horizontal' ? fragmentHorizontal : fragmentVertical,\n\t\topacity: 1\n\t});\n\tvar position = calculatePosition();\n\tvar render;\n\n\tcamera = new THREE.OrthographicCamera(\n\t\tposition[0] / -2,\n\t\tposition[0] / 2,\n\t\tposition[1] / 2,\n\t\tposition[1] / -2,\n\t\t1,\n\t\t1000\n\t);\n\n\tcreateScene();\n\n\trender = function () {\n\t\tif (renderer) {\n\t\t\trenderer.render(scene, camera);\n\t\t\tanimFrame = requestAnimationFrame(render);\n\t\t}\n\t};\n\n\tfunction createScene() {\n\n\t\tif (!scene || !renderer || !camera) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar geometry = new THREE.PlaneBufferGeometry(\n\t\t\tposition[0],\n\t\t\tposition[1],\n\t\t);\n\n\t\tvar object = new THREE.Mesh(geometry, mat);\n\n\t\trenderer.setPixelRatio(1); // window.devicePixelRatio\n\t\trenderer.setClearColor(0xffffff, 0.0);\n\t\trenderer.setSize(position[0], position[1]);\n\n\t\tscene.add(object);\n\n\t\tcamera.aspect = aspect;\n\t\tcamera.position.z = 1;\n\t\tcamera.updateProjectionMatrix();\n\n\t\t$window.on('resize', debounce(function () {\n\t\t\tposition = calculatePosition();\n\t\t\trenderer.setSize(position[0], position[1]);\n\t\t\tcamera.updateProjectionMatrix();\n\t\t}, 250));\n\n\t\tdisp.wrapS = disp.wrapT = THREE.RepeatWrapping;\n\n\t\tfor (var i = 0; i < images.length; i++) {\n\n\t\t\tvar texture = loader.load(images[i]);\n\n\t\t\ttexture.magFilter = THREE.LinearFilter;\n\t\t\ttexture.minFilter = THREE.LinearFilter;\n\t\t\ttexture.anisotropy = renderer.capabilities.getMaxAnisotropy();\n\n\t\t\ttextures[i] = texture;\n\n\t\t};\n\n\t}\n\n\tfunction calculatePosition() {\n\n\t\tvar\n\t\t\theight = parseFloat(window.outerHeight),\n\t\t\twidth = parseFloat(height * aspect),\n\t\t\tmultiplier = 1,\n\t\t\tresult = [];\n\n\t\tif (aspect > 1) {\n\t\t\tmultiplier = window.innerWidth > width ? window.innerWidth / width : 1;\n\t\t} else {\n\t\t\tmultiplier = canvas.clientWidth / width;\n\t\t}\n\n\t\tif (multiplier < 1) {\n\t\t\tmultiplier = 1;\n\t\t}\n\n\t\tresult[0] = width * multiplier;\n\t\tresult[1] = height * multiplier;\n\n\t\treturn result;\n\n\t}\n\n\tthis.change = function (opts) {\n\n\t\tif (!mat) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar\n\t\t\tindexFrom = opts.indexFrom || '0',\n\t\t\tindexTo = opts.indexTo || '0',\n\t\t\tspeedIn = opts.speedIn || 1.2,\n\t\t\tintensity = opts.intensity || 0.25,\n\t\t\teasing = opts.easing || Power3.easeOut;\n\n\t\tmat.uniforms.texture.value = textures[indexFrom];\n\t\tmat.uniforms.texture2.value = textures[indexTo];\n\t\tmat.uniforms.effectFactor.value = intensity;\n\n\t\tTweenMax.fromTo(mat.uniforms.dispFactor, speedIn, {\n\t\t\tvalue: 0\n\t\t}, {\n\t\t\tvalue: 1,\n\t\t\tease: easing\n\t\t});\n\t};\n\n\tthis.animate = function () {\n\t\trender();\n\t};\n\n\tthis.destroy = function () {\n\t\tcancelAnimationFrame(animFrame);\n\t\trenderer = undefined;\n\t\tcamera = undefined;\n\t\tscene = undefined;\n\t\tloader = undefined;\n\t\tmat = undefined;\n\t\t$window.off('resize');\n\t\topts.slider.off('slideChange');\n\t\twindow.distortionEffect = undefined;\n\t};\n\n};\n","/* ======================================================================== */\n/* 26. Counter */\n/* ======================================================================== */\nvar Counter = function ($target) {\n\n\tvar $num = $target.find('.js-counter__number');\n\n\tif (!$target.length || !$num.length) {\n\t\treturn;\n\t}\n\n\tvar\n\t\tnumberStart = $target.data('counter-start') || 0,\n\t\tnumberTarget = $target.data('counter-target') || 100,\n\t\tanimDuration = $target.data('counter-duration') || 4,\n\t\tcounter = {\n\t\t\tval: numberStart\n\t\t};\n\n\tsetCounterUp();\n\tanimateCounterUp();\n\n\tfunction setCounterUp() {\n\n\t\t$num.text(numberStart.toFixed(0));\n\n\t}\n\n\tfunction animateCounterUp() {\n\n\t\tvar tl = new TimelineMax();\n\n\t\ttl.to(counter, animDuration, {\n\t\t\tval: numberTarget.toFixed(0),\n\t\t\tease: Power4.easeOut,\n\t\t\tonUpdate: function () {\n\t\t\t\t$num.text(counter.val.toFixed(0));\n\t\t\t}\n\t\t});\n\n\t\tcreateOSScene($target, tl);\n\n\t}\n\n}\n","/* ======================================================================== */\n/* 27. FigurePortfolioAnimation */\n/* ======================================================================== */\nvar FigurePortfolioAnimation = function ($target, animDelay = 0) {\n\n\tvar\n\t\t$heading,\n\t\t$category,\n\t\t$letter,\n\t\t$imgWrapper,\n\t\ttl;\n\n\t$heading = $target.find('.figure-portfolio-big__heading');\n\t$category = $target.find('.figure-portfolio-big__category');\n\t$letter = $target.find('.figure-portfolio-big__wrapper-letter');\n\t$imgWrapper = $target.find('.figure-portfolio-big__wrapper-img, .figure-portfolio__wrapper-img');\n\ttl = new TimelineMax();\n\n\tprepare();\n\tanimate();\n\n\tfunction prepare() {\n\n\t\tsetChars($heading, 0, -20);\n\t\tsetChars($category, 0, -20);\n\n\t\tTweenMax.set($imgWrapper, {\n\t\t\ty: '25%',\n\t\t\tautoAlpha: 0,\n\t\t\tforce3D: true,\n\t\t});\n\n\t\tTweenMax.set($letter, {\n\t\t\tautoAlpha: 0,\n\t\t\ty: '200px'\n\t\t});\n\n\t}\n\n\tfunction animate() {\n\n\t\ttl\n\t\t\t.to($letter, 1.2, {\n\t\t\t\ty: 0,\n\t\t\t\tyPercent: 0,\n\t\t\t\tautoAlpha: 1,\n\t\t\t\tease: Power3.easeOut,\n\t\t\t})\n\t\t\t.add([\n\t\t\t\tTweenMax.to($imgWrapper, 0.9, {\n\t\t\t\t\tautoAlpha: 1,\n\t\t\t\t\tyPercent: 0,\n\t\t\t\t\tforce3D: true,\n\t\t\t\t\ty: 0,\n\t\t\t\t\tease: Power3.easeOut,\n\t\t\t\t}),\n\t\t\t], '-=0.8')\n\t\t\t.add(animateChars($heading, 1.2, 0.3, Power3.easeOut), '-=0.8')\n\t\t\t.add(animateChars($category, 1.2, 0.3, Power3.easeOut), '-=1.2');\n\n\t\tcreateOSScene($target, tl, null, false, animDelay);\n\n\t}\n\n}\n","/* ======================================================================== */\n/* 28. FigurePortfolioHover */\n/* ======================================================================== */\nvar FigurePortfolioHover = function ($target) {\n\n\tvar\n\t\ttl,\n\t\t$curtain,\n\t\t$category,\n\t\t$heading,\n\t\t$icon,\n\t\t$imgWrapper;\n\n\tif (!$target.length) {\n\t\treturn;\n\t}\n\n\ttl = new TimelineMax();\n\t$curtain = $target.find('.figure-portfolio__curtain');\n\t$category = $target.find('.figure-portfolio__category');\n\t$heading = $target.find('.figure-portfolio__heading');\n\t$imgWrapper = $target.find('.figure-portfolio__wrapper-img-zoom');\n\t$icon = $target.find('.figure-portfolio__icon');\n\n\thideChars($heading, 0, 0, Power3.easeOut, 50, 0, 'end');\n\n\tTweenMax.set($category, {\n\t\tautoAlpha: 0,\n\t\ty: '-40px'\n\t});\n\n\tTweenMax.set($icon, {\n\t\tautoAlpha: 0,\n\t\tx: '40px'\n\t});\n\n\t$target\n\t\t.on('mouseenter touchstart', function () {\n\n\t\t\ttl\n\t\t\t\t.clear()\n\t\t\t\t.to($curtain, 0.6, {\n\t\t\t\t\ty: '0%',\n\t\t\t\t\tskewY: '-5deg',\n\t\t\t\t\tease: Power3.easeInOut\n\t\t\t\t})\n\t\t\t\t.to($imgWrapper, 0.6, {\n\t\t\t\t\ty: '-40px',\n\t\t\t\t\tease: Power3.easeInOut,\n\t\t\t\t\ttransition: 'none'\n\t\t\t\t}, '0')\n\t\t\t\t.add(animateChars($heading, 0.6, 0.2, Power3.easeOut), '0.2')\n\t\t\t\t.to($category, 0.6, {\n\t\t\t\t\tautoAlpha: 1,\n\t\t\t\t\ty: '0px',\n\t\t\t\t\tease: Power3.easeOut\n\t\t\t\t}, '0.2')\n\t\t\t\t.to($icon, 0.6, {\n\t\t\t\t\tautoAlpha: 1,\n\t\t\t\t\tx: '0px',\n\t\t\t\t\tease: Power3.easeOut\n\t\t\t\t}, '0.4');\n\n\t\t})\n\t\t.on('mouseleave touchend', function () {\n\n\t\t\ttl\n\t\t\t\t.clear()\n\t\t\t\t.add(hideChars($heading, 0.6, 0.2, Power3.easeOut, 50, 0, 'end'), '0')\n\t\t\t\t.to($category, 0.6, {\n\t\t\t\t\tautoAlpha: 0,\n\t\t\t\t\ty: '-40px',\n\t\t\t\t\tease: Power3.easeOut\n\t\t\t\t}, '0')\n\t\t\t\t.to($icon, 0.6, {\n\t\t\t\t\tautoAlpha: 0,\n\t\t\t\t\tx: '40px',\n\t\t\t\t\tease: Power3.easeOut\n\t\t\t\t}, '0.2')\n\t\t\t\t.to($curtain, 0.6, {\n\t\t\t\t\ty: '100%',\n\t\t\t\t\tskewY: '0deg',\n\t\t\t\t\tease: Power3.easeOut,\n\t\t\t\t}, '0.3')\n\t\t\t\t.to($imgWrapper, 0.6, {\n\t\t\t\t\ty: '0px',\n\t\t\t\t\tease: Power3.easeOut,\n\t\t\t\t\ttransition: 'none'\n\t\t\t\t}, '0.3');\n\n\n\t\t});\n\n}\n","/* ======================================================================== */\n/* 29. figureAward */\n/* ======================================================================== */\nvar FigureAward = function ($target) {\n\n\tif (!$target.length) {\n\t\treturn;\n\t}\n\n\tvar\n\t\ttl = new TimelineMax();\n\n\ttl\n\t\t.add(animateLines($target, 1.2, 0.1), '0')\n\t\t.add(animateChars($target, 1.2, 0.3, Power3.easeOut), '0');\n\n\tcreateOSScene($target, tl);\n\n}\n","/* ======================================================================== */\n/* 30. Filter */\n/* ======================================================================== */\nvar Filter = function ($scope, $filter) {\n\n\tif (!$filter.length) {\n\t\treturn;\n\t}\n\n\tvar\n\t\tself = this,\n\t\titemClass = '.js-filter__item',\n\t\t$items = $scope.find(itemClass),\n\t\tactiveItemClass = 'filter__item_active';\n\n\tthis.$filter = $scope.find($filter);\n\tthis.$items = $scope.find($items);\n\n\tbindEvents();\n\tupdateLinePosition();\n\n\tfunction bindEvents() {\n\n\t\t$($scope)\n\t\t\t.on('mouseenter', itemClass, function () {\n\n\t\t\t\tupdateLinePosition($(this));\n\n\t\t\t})\n\t\t\t.on('mouseleave', itemClass, function () {\n\n\t\t\t\tupdateLinePosition($items.filter('.' + activeItemClass));\n\n\t\t\t})\n\t\t\t.on('click', itemClass, function () {\n\n\t\t\t\tvar $el = $(this);\n\n\t\t\t\t$items.removeClass(activeItemClass);\n\t\t\t\t$el.addClass(activeItemClass);\n\t\t\t\tupdateLinePosition($el);\n\n\t\t\t});\n\n\t}\n\n\tfunction updateLinePosition($target) {\n\n\t\tvar\n\t\t\t$line = self.$filter.find('.js-filter__underline');\n\n\t\tif (!$line.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!$target || !$target.length) {\n\n\t\t\tTweenMax.to($line, 0.6, {\n\t\t\t\twidth: 0,\n\t\t\t\tease: Expo.easeOut,\n\t\t\t});\n\n\t\t} else {\n\n\t\t\tvar\n\t\t\t\t$heading = $target.find('div'),\n\t\t\t\theadingWidth = $heading.innerWidth(),\n\t\t\t\theadingPos = $heading.position(),\n\t\t\t\tcolPos = $target.position();\n\n\t\t\tTweenMax.to($line, 0.6, {\n\t\t\t\tease: Expo.easeInOut,\n\t\t\t\twidth: headingWidth,\n\t\t\t\tx: headingPos.left + colPos.left,\n\t\t\t});\n\n\t\t}\n\n\t}\n\n\tfunction setActiveItem(index) {\n\n\t\tvar $target = $items.eq(index);\n\t\tif (!$target) {\n\t\t\treturn;\n\t\t}\n\n\t\t$items.removeClass(activeItemClass);\n\t\t$target.addClass(activeItemClass);\n\t\tupdateLinePosition($target, self.$filter);\n\n\n\t}\n\n\tthis.setActiveItem = function (index) {\n\t\tsetActiveItem(index);\n\t}\n\n}\n","/* ======================================================================== */\n/* 31. fontObserver */\n/* ======================================================================== */\nfunction fontObserver() {\n\n\treturn new Promise(function (resolve, reject) {\n\n\t\tvar observers = [];\n\n\t\tif (!window.theme.fonts) {\n\t\t\tresolve(true);\n\t\t}\n\n\t\t$.each(window.theme.fonts, function () {\n\n\t\t\tvar currentObserver = new FontFaceObserver(this);\n\n\t\t\tobservers.push(currentObserver.load());\n\n\t\t});\n\n\t\tPromise.all(observers).then(function () {\n\t\t\tresolve(true);\n\t\t});\n\n\t});\n\n}\n","/* ======================================================================== */\n/* 32. Form */\n/* ======================================================================== */\nvar Form = function () {\n\n\tvar\n\t\tINPUT_CLASS = '.input-float__input',\n\t\tINPUT_NOT_EMPTY = 'input-float__input_not-empty',\n\t\tINPUT_FOCUSED = 'input-float__input_focused';\n\n\tfloatLabels();\n\tajaxForm();\n\n\tif (typeof window.theme !== 'undefined' && window.theme.contactForm7.customModals) {\n\t\tattachModalsEvents();\n\t}\n\n\tfunction floatLabels() {\n\n\t\tif (!$(INPUT_CLASS).length) {\n\t\t\treturn;\n\t\t}\n\n\t\t$(INPUT_CLASS).each(function () {\n\n\t\t\tvar\n\t\t\t\t$currentField = $(this),\n\t\t\t\t$currentControlWrap = $currentField.parent('.wpcf7-form-control-wrap');\n\n\t\t\t// not empty value\n\t\t\tif ($currentField.val()) {\n\t\t\t\t$currentField.addClass(INPUT_NOT_EMPTY);\n\t\t\t\t$currentControlWrap.addClass(INPUT_NOT_EMPTY);\n\t\t\t\t// empty value\n\t\t\t} else {\n\t\t\t\t$currentField.removeClass([INPUT_FOCUSED, INPUT_NOT_EMPTY]);\n\t\t\t\t$currentControlWrap.removeClass([INPUT_FOCUSED, INPUT_NOT_EMPTY]);\n\t\t\t}\n\n\t\t\t// has placeholder & empty value\n\t\t\tif ($currentField.attr('placeholder') && !$currentField.val()) {\n\t\t\t\t$currentField.addClass(INPUT_NOT_EMPTY);\n\t\t\t\t$currentControlWrap.addClass(INPUT_NOT_EMPTY);\n\t\t\t}\n\n\t\t});\n\n\t\twindow.$document.off('focusin').on('focusin', INPUT_CLASS, function () {\n\n\t\t\tvar\n\t\t\t\t$currentField = $(this),\n\t\t\t\t$currentControlWrap = $currentField.parent('.wpcf7-form-control-wrap');\n\n\t\t\t$currentField.addClass(INPUT_FOCUSED).removeClass(INPUT_NOT_EMPTY);\n\t\t\t$currentControlWrap.addClass(INPUT_FOCUSED).removeClass(INPUT_NOT_EMPTY);\n\n\t\t}).off('focusout').on('focusout', INPUT_CLASS, function () {\n\n\t\t\tvar\n\t\t\t\t$currentField = $(this),\n\t\t\t\t$currentControlWrap = $currentField.parent('.wpcf7-form-control-wrap');\n\n\t\t\t// not empty value\n\t\t\tif ($currentField.val()) {\n\t\t\t\t$currentField.removeClass(INPUT_FOCUSED).addClass(INPUT_NOT_EMPTY);\n\t\t\t\t$currentControlWrap.removeClass(INPUT_FOCUSED).addClass(INPUT_NOT_EMPTY);\n\t\t\t} else {\n\t\t\t\t// has placeholder & empty value\n\t\t\t\tif ($currentField.attr('placeholder')) {\n\t\t\t\t\t$currentField.addClass(INPUT_NOT_EMPTY);\n\t\t\t\t\t$currentControlWrap.addClass(INPUT_NOT_EMPTY);\n\t\t\t\t}\n\t\t\t\t$currentField.removeClass(INPUT_FOCUSED);\n\t\t\t\t$currentControlWrap.removeClass(INPUT_FOCUSED);\n\n\t\t\t}\n\n\t\t});\n\n\t}\n\n\tfunction ajaxForm() {\n\n\t\tvar $form = $('.js-ajax-form');\n\n\t\tif (!$form.length) {\n\t\t\treturn;\n\t\t}\n\n\t\t$form.validate({\n\t\t\terrorElement: 'span',\n\t\t\terrorPlacement: function (error, element) {\n\t\t\t\terror.appendTo(element.parent()).addClass('form__error');\n\t\t\t},\n\t\t\tsubmitHandler: function (form) {\n\t\t\t\tajaxSubmit(form);\n\t\t\t}\n\t\t});\n\n\t\tfunction ajaxSubmit(form) {\n\n\t\t\t$.ajax({\n\t\t\t\ttype: $form.attr('method'),\n\t\t\t\turl: $form.attr('action'),\n\t\t\t\tdata: $form.serialize()\n\t\t\t}).done(function () {\n\t\t\t\talert($form.attr('data-message-success'));\n\t\t\t\t$form.trigger('reset');\n\t\t\t\tfloatLabels();\n\t\t\t}).fail(function () {\n\t\t\t\talert($form.attr('data-message-error'));\n\t\t\t});\n\t\t}\n\n\t}\n\n\tfunction attachModalsEvents() {\n\t\twindow.$document.off('wpcf7submit').on('wpcf7submit', function (e) {\n\n\t\t\tvar $modal = $('#modalContactForm7');\n\n\t\t\t$modal.modal('dispose').remove();\n\n\t\t\tif (e.detail.apiResponse.status === 'mail_sent') {\n\n\t\t\t\tcreateModalTemplate({\n\t\t\t\t\ticon: 'icon-success.svg',\n\t\t\t\t\tmessage: e.detail.apiResponse.message,\n\t\t\t\t\tonHide: function () {\n\t\t\t\t\t\t$(e.srcElement).find(INPUT_CLASS).parent().val('').removeClass(INPUT_FOCUSED).removeClass(INPUT_NOT_EMPTY);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (e.detail.apiResponse.status === 'mail_failed') {\n\t\t\t\tcreateModalTemplate({\n\t\t\t\t\ticon: 'icon-error.svg',\n\t\t\t\t\tmessage: e.detail.apiResponse.message\n\t\t\t\t});\n\t\t\t}\n\n\t\t});\n\t}\n\n\tfunction createModalTemplate({\n\t\ticon,\n\t\tmessage,\n\t\tonHide\n\t}) {\n\n\t\twindow.$body.append(`\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\"\"/\n\t\t\t\t\t\t\t\t

${message}

\n\t\t\t\t\t\t\t
\n\t\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\tvar $modal = $('#modalContactForm7');\n\n\t\t$modal.modal('show');\n\t\t$modal.on('hidden.bs.modal', function () {\n\t\t\t$modal.modal('dispose').remove();\n\t\t\tif (typeof onHide === 'function') {\n\t\t\t\tonHide();\n\t\t\t}\n\t\t});\n\n\t}\n\n}\n","/* ======================================================================== */\n/* 33. gmap */\n/* ======================================================================== */\nvar GMap = function ($scope) {\n\n\tvar\n\t\t$wrapper = $scope.find('.gmap'),\n\t\tprevInfoWindow = false;\n\n\tif (typeof google === 'undefined' || typeof google.maps === 'undefined') {\n\t\treturn;\n\t}\n\n\tcreateMap($wrapper);\n\n\t/**\n\t * \n\t * @param {Map jQuery Object} $wrapper \n\t */\n\tfunction createMap($wrapper) {\n\n\t\tvar $mapContainer = $wrapper.find('.gmap__container');\n\n\t\tif (!$mapContainer.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar\n\t\t\t$markers = $wrapper.find('.gmap__marker'),\n\t\t\tZOOM = parseInt($wrapper.attr('data-gmap-zoom')),\n\t\t\tSNAZZY_STYLES = $wrapper.attr('data-gmap-snazzy-styles');\n\n\t\tvar argsMap = {\n\t\t\tcenter: new google.maps.LatLng(0, 0),\n\t\t\tzoom: ZOOM,\n\t\t\tscrollwheel: false\n\t\t};\n\n\t\tif (SNAZZY_STYLES) {\n\n\t\t\ttry {\n\t\t\t\tSNAZZY_STYLES = JSON.parse(SNAZZY_STYLES);\n\t\t\t\t$.extend(argsMap, {\n\t\t\t\t\tstyles: SNAZZY_STYLES\n\t\t\t\t});\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error('Google Map: Invalid Snazzy Styles');\n\t\t\t}\n\n\t\t};\n\n\t\tvar map = new google.maps.Map($mapContainer[0], argsMap);\n\n\t\tmap.markers = [];\n\n\t\t$markers.each(function () {\n\t\t\tcreateMarker($(this), map);\n\t\t});\n\n\t\tcenterMap(ZOOM, map);\n\n\t}\n\n\t/**\n\t * \n\t * @param {Marker jQuery object} $marker \n\t * @param {Google Map Instance} map\n\t */\n\tfunction createMarker($marker, map) {\n\n\t\tif (!$marker.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar\n\t\t\tMARKER_LAT = parseFloat($marker.attr('data-marker-lat')),\n\t\t\tMARKER_LON = parseFloat($marker.attr('data-marker-lon')),\n\t\t\tMARKER_IMG = $marker.attr('data-marker-img'),\n\t\t\tMARKER_WIDTH = $marker.attr('data-marker-width'),\n\t\t\tMARKER_HEIGHT = $marker.attr('data-marker-height'),\n\t\t\tMARKER_CONTENT = $marker.attr('data-marker-content');\n\n\t\t/**\n\t\t * Marker\n\t\t */\n\t\tvar argsMarker = {\n\t\t\tposition: new google.maps.LatLng(MARKER_LAT, MARKER_LON),\n\t\t\tmap: map\n\t\t};\n\n\t\tif (MARKER_IMG) {\n\n\t\t\t$.extend(argsMarker, {\n\t\t\t\ticon: {\n\t\t\t\t\turl: MARKER_IMG\n\t\t\t\t}\n\t\t\t});\n\n\t\t}\n\n\t\tif (MARKER_IMG && MARKER_WIDTH && MARKER_HEIGHT) {\n\n\t\t\t$.extend(argsMarker.icon, {\n\t\t\t\tscaledSize: new google.maps.Size(MARKER_WIDTH, MARKER_HEIGHT)\n\t\t\t});\n\n\t\t}\n\n\t\tvar marker = new google.maps.Marker(argsMarker)\n\n\t\tmap.markers.push(marker);\n\n\t\t/**\n\t\t * Info Window (Content)\n\t\t */\n\t\tif (MARKER_CONTENT) {\n\n\t\t\tvar infoWindow = new google.maps.InfoWindow({\n\t\t\t\tcontent: MARKER_CONTENT\n\t\t\t});\n\n\t\t\tmarker.addListener('click', function () {\n\n\t\t\t\tif (prevInfoWindow) {\n\t\t\t\t\tprevInfoWindow.close();\n\t\t\t\t}\n\n\t\t\t\tprevInfoWindow = infoWindow;\n\n\t\t\t\tinfoWindow.open(map, marker);\n\n\t\t\t});\n\n\t\t}\n\n\t}\n\n\t/**\n\t * \n\t * @param {Map Zoom} zoom \n\t * @param {Google Map Instance} map\n\t */\n\tfunction centerMap(zoom, map) {\n\n\t\tvar\n\t\t\tbounds = new google.maps.LatLngBounds(),\n\t\t\tnewZoom;\n\n\t\t$.each(map.markers, function () {\n\n\t\t\tvar item = this;\n\n\t\t\tif (typeof item.position === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tnewZoom = new google.maps.LatLng(item.position.lat(), item.position.lng());\n\t\t\tbounds.extend(newZoom);\n\n\t\t});\n\n\t\tif (map.markers.length == 1) {\n\n\t\t\tmap.setCenter(bounds.getCenter());\n\t\t\tmap.setZoom(zoom);\n\n\t\t} else {\n\n\t\t\tmap.fitBounds(bounds);\n\n\t\t}\n\t}\n\n}\n","/* ======================================================================== */\n/* 34. grid */\n/* ======================================================================== */\nvar Grid = function ($target = $('.js-grid')) {\n\n\tif (!$target.length) {\n\t\treturn;\n\t}\n\n\t$target.each(function () {\n\n\t\tvar\n\t\t\t$current = $(this),\n\t\t\t$currentLazyImages = $current.find('img[data-src]'),\n\t\t\tcurrentInstance;\n\n\t\tcurrentInstance = $current.isotope({\n\t\t\titemSelector: '.js-grid__item',\n\t\t\tcolumnWidth: '.js-grid__sizer',\n\t\t\tpercentPosition: true\n\t\t});\n\n\t\tloadLazyImages($currentLazyImages, false, function () {\n\t\t\t$current.imagesLoaded().always(function () {\n\t\t\t\tcurrentInstance.isotope('layout').one('arrangeComplete', function () {\n\t\t\t\t\tif (typeof Waypoint === 'function') {\n\t\t\t\t\t\tWaypoint.refreshAll();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\t// update non-lazy images\n\t\t$current.imagesLoaded().always(function () {\n\t\t\tcurrentInstance.isotope('layout').one('arrangeComplete', function () {\n\t\t\t\tif (typeof Waypoint === 'function') {\n\t\t\t\t\tWaypoint.refreshAll();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t});\n\n\treturn $target;\n\n}\n","/* ======================================================================== */\n/* 35. lazyLoad */\n/* ======================================================================== */\nfunction lazyLoad($scope = $window.document) {\n\n\tvar\n\t\t$elements = $scope.find('.lazy'),\n\t\t$images = $elements.find('img[data-src]'),\n\t\t$backgrounds = $scope.find('.lazy-bg[data-src]');\n\n\tprepareLazyImages($images, $backgrounds);\n\tloadLazyImages($images, $backgrounds);\n\n}\n\nfunction prepareLazyImages($images, $backgrounds) {\n\n\t$images.each(function () {\n\n\t\tvar\n\t\t\t$el = $(this),\n\t\t\t$elParent = $el.parent(),\n\t\t\telPB,\n\t\t\telWidth = $el.attr('width') || false,\n\t\t\telHeight = $el.attr('height') || false;\n\n\t\t// we need both width and height of element\n\t\t// to calculate proper value for \"padding-bottom\" hack\n\t\tif (!elWidth || !elHeight) {\n\t\t\treturn;\n\t\t}\n\n\t\telPB = (elHeight / elWidth) * 100 + '%';\n\n\t\tTweenMax.set($el, {\n\t\t\tposition: 'absolute',\n\t\t\ttop: 0,\n\t\t\tleft: 0,\n\t\t\twidth: '100%',\n\t\t\theight: '100%'\n\t\t});\n\n\t\tTweenMax.set($elParent, {\n\t\t\twidth: '100%',\n\t\t\tposition: 'relative',\n\t\t\toverflow: 'hidden',\n\t\t\tpaddingBottom: elPB\n\t\t});\n\n\t});\n\n};\n\nfunction loadLazyImages($images, $backgrounds, lazyCallback) {\n\n\tvar\n\t\tlazyInstance,\n\t\tlazyInstanceBackgrounds;\n\n\tif ($images && $images.length) {\n\n\t\tlazyInstance = $images.Lazy({\n\t\t\tthreshold: 1000,\n\t\t\tchainable: false,\n\t\t\tafterLoad: function (el) {\n\n\t\t\t\tvar\n\t\t\t\t\t$el = $(el),\n\t\t\t\t\t$elParent = $el.parent();\n\n\t\t\t\t$el.imagesLoaded({\n\t\t\t\t\tbackground: true\n\t\t\t\t}).always(function () {\n\n\t\t\t\t\tTweenMax.set($elParent, {\n\t\t\t\t\t\tclassName: '+=lazy_loaded'\n\t\t\t\t\t});\n\n\t\t\t\t});\n\n\t\t\t\t// update scrollbar geometry\n\t\t\t\tif (window.SB !== undefined) {\n\t\t\t\t\twindow.SB.update();\n\t\t\t\t}\n\n\t\t\t\tif (lazyCallback !== undefined) {\n\t\t\t\t\tlazyCallback();\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t});\n\n\t}\n\n\tif ($backgrounds && $backgrounds.length) {\n\n\t\tlazyInstanceBackgrounds = $backgrounds.Lazy({\n\t\t\tthreshold: 1000,\n\t\t\tchainable: false,\n\t\t\tafterLoad: function (el) {\n\t\t\t\t$(el).addClass('lazy-bg_loaded');\n\t\t\t}\n\t\t});\n\n\t}\n\n};\n","/* ======================================================================== */\n/* 36. Header */\n/* ======================================================================== */\nvar Header = function () {\n\n\tvar $overlay = $('.header__wrapper-overlay-menu');\n\n\tthis.hideOverlayMenu = function (speed, setMenu) {\n\n\t\treturn closeOverlayMenu(speed, setMenu);\n\n\t};\n\n\tif (!$overlay.length) {\n\t\treturn;\n\t}\n\n\tvar\n\t\ttl = new TimelineMax(),\n\t\t$stickyHeader = $('.js-sticky-header'),\n\t\t$burger = $('#js-burger'),\n\t\t$menuLinks = $overlay.find('.menu-overlay > li > a'),\n\t\t$allLinks = $overlay.find('a'),\n\t\t$submenu = $overlay.find('.menu-overlay .sub-menu'),\n\t\t$submenuButton = $('#js-submenu-back'),\n\t\t$submenuLinks = $submenu.find('> li > a'),\n\t\t$overlayWidgets = $overlay.find('.header__wrapper-overlay-widgets'),\n\t\t$social = $overlayWidgets.find('.social'),\n\t\t$audio = $overlayWidgets.find('.audio-control-wrapper'),\n\t\t$headerLeft = $('.header__col-left'),\n\t\t$headerRight = $('.header__col-right'),\n\t\t$langSwitcher = $('.lang-switcher'),\n\t\t$curtain = $('.header__curtain'),\n\t\t$circleLetters = $('.header__circle-letters'),\n\t\t$letters = $circleLetters.find('.vector-letter'),\n\t\t$circle = $circleLetters.find('.circle'),\n\t\t$widgetListElements = $('.header__wrapper-overlay-widgets ul li, .audio-control-wrapper'),\n\t\tOPEN_CLASS = 'header__burger_opened',\n\t\tSTICKY_CLASS = 'header_sticky',\n\t\tSTICKY_THEME = $stickyHeader.attr('data-header-sticky-theme'),\n\t\t$adminBar = $('#wpadminbar');\n\n\tclickBurger();\n\tsetOverlayMenu();\n\tstickHeader();\n\toffsetHeaderPosition();\n\tcorrectAbsoluteHeader();\n\n\tfunction offsetHeaderPosition() {\n\n\t\tif ($adminBar.length) {\n\t\t\tcorrectHeaderTop();\n\t\t\t$(window).on('resize', debounce(correctHeaderTop, 250));\n\t\t}\n\n\t}\n\n\tfunction correctHeaderTop() {\n\n\t\tvar barHeight = $adminBar.height() || 0;\n\n\t\tTweenMax.to(window.$pageHeader, 0.3, {\n\t\t\ttop: barHeight\n\t\t});\n\n\t}\n\n\tfunction stickHeader() {\n\n\t\tif (!$stickyHeader.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (typeof window.SB !== 'undefined') {\n\n\t\t\twindow.SB.addListener(changeHeaderClass);\n\n\t\t} else {\n\n\t\t\twindow.stickyScene = new $.ScrollMagic.Scene({\n\t\t\t\t\toffset: '1px',\n\t\t\t\t})\n\t\t\t\t.setClassToggle($stickyHeader, [STICKY_CLASS, STICKY_THEME].join(' '))\n\t\t\t\t.addTo(SMController);\n\n\t\t}\n\n\t}\n\n\tfunction unstickHeader() {\n\n\t\tif (!$stickyHeader.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (typeof window.SB !== 'undefined') {\n\n\t\t\twindow.SB.removeListener(changeHeaderClass);\n\t\t\t$stickyHeader.removeClass(STICKY_CLASS);\n\n\t\t} else {\n\n\t\t\tif (window.stickyScene) {\n\n\t\t\t\twindow.stickyScene.destroy(true);\n\t\t\t\t$stickyHeader.removeClass(STICKY_CLASS);\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction changeHeaderClass() {\n\n\t\tif (window.SB.offset.y >= 1) {\n\t\t\t$stickyHeader.addClass(STICKY_CLASS).addClass(STICKY_THEME);\n\t\t} else {\n\t\t\t$stickyHeader.removeClass(STICKY_CLASS).removeClass(STICKY_THEME);\n\t\t}\n\n\t}\n\n\tfunction correctAbsoluteHeader() {\n\n\t\tvar barHeight = $adminBar.height() || 0;\n\n\t\tif (typeof window.SB !== 'undefined' && window.$pageHeader.hasClass('header_absolute')) {\n\t\t\twindow.SB.addListener(function (scrollbar) {\n\t\t\t\tTweenMax.set(window.$pageHeader, {\n\t\t\t\t\ttop: -scrollbar.offset.y + barHeight + 'px'\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t}\n\n\tfunction setOverlayMenu() {\n\n\t\tgetScrollTop();\n\n\t\tTweenMax.set($overlay, {\n\t\t\tautoAlpha: 0,\n\t\t\tclassName: '-=opened',\n\t\t});\n\n\t\tTweenMax.set([$submenu, $submenuButton], {\n\t\t\tautoAlpha: 0\n\t\t});\n\n\t\tTweenMax.set($submenu, {\n\t\t\tclassName: '-=opened'\n\t\t});\n\n\t\tTweenMax.set($curtain, {\n\t\t\ty: '-100%',\n\t\t});\n\n\t\tTweenMax.set($circleLetters, {\n\t\t\tautoAlpha: 0,\n\t\t\trotation: 0\n\t\t});\n\n\t\tTweenMax.set($menuLinks.find('.split-text__line'), {\n\t\t\ty: '100%',\n\t\t\tautoAlpha: 0\n\t\t});\n\n\t\tTweenMax.set($menuLinks.find('.split-text__char'), {\n\t\t\tclearProps: 'transform',\n\t\t\tautoAlpha: 1\n\t\t});\n\n\t\tsetLines($overlayWidgets);\n\n\t\tTweenMax.set([$social, $audio], {\n\t\t\tautoAlpha: 0,\n\t\t\ty: '100%'\n\t\t});\n\n\t\tTweenMax.set($submenuLinks.find('.split-text__line'), {\n\t\t\tclearProps: 'transform',\n\t\t\tautoAlpha: 1\n\t\t});\n\n\t\tTweenMax.set($submenuLinks.find('.split-text__char'), {\n\t\t\tx: '50px',\n\t\t\tautoAlpha: 0\n\t\t});\n\n\t\tTweenMax.set($widgetListElements, {\n\t\t\tautoAlpha: 0,\n\t\t\ty: '50px'\n\t\t});\n\n\t\t$allLinks.removeClass('selected');\n\n\t\tTweenMax.set($circle, {\n\t\t\tdrawSVG: '100% 100%'\n\t\t});\n\n\t};\n\n\tfunction openOverlayMenu() {\n\n\t\tvar\n\t\t\t// tl = new TimelineMax(),\n\t\t\t$pageContent = $('.page-wrapper__content');\n\n\t\t// adjust animation menu master speed\n\t\tif (window.theme !== 'undefined') {\n\n\t\t\tvar scale = window.theme.animations.timeScale.overlayMenuOpen || 1;\n\t\t\ttl.timeScale(scale);\n\n\t\t}\n\n\t\ttl\n\t\t\t.clear()\n\t\t\t.set($overlay, {\n\t\t\t\tautoAlpha: 1,\n\t\t\t\tzIndex: 500,\n\t\t\t\tclassName: '+=opened'\n\t\t\t}, '0')\n\t\t\t.add([function () {\n\t\t\t\twindow.$pageHeader.attr('data-header-animation', 'intransition');\n\t\t\t\tgetScrollTop();\n\n\t\t\t}, TweenMax.set($adminBar, {\n\t\t\t\tposition: 'fixed',\n\t\t\t})])\n\t\t\t.to($curtain, 1.2, {\n\t\t\t\ty: '0%',\n\t\t\t\tease: Expo.easeInOut,\n\t\t\t})\n\t\t\t.to($pageContent, 1.3, {\n\t\t\t\ty: '10vh',\n\t\t\t\tease: Expo.easeInOut,\n\t\t\t\tonComplete: function () {\n\t\t\t\t\tTweenMax.set($pageContent, {\n\t\t\t\t\t\tclearProps: 'all'\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, '-=1.2')\n\t\t\t.add(animateLines($menuLinks, 1.2, 0.05), '-=0.6')\n\t\t\t.staggerTo($widgetListElements, 0.6, {\n\t\t\t\tautoAlpha: 1,\n\t\t\t\ty: '0px'\n\t\t\t}, 0.03, '-=1.2')\n\t\t\t.add(animateLines($overlayWidgets, 1.2, 0.05), '-=1.2')\n\t\t\t.to([$social, $audio], 0.6, {\n\t\t\t\tautoAlpha: 1,\n\t\t\t\ty: '0%'\n\t\t\t}, '-=1.2')\n\t\t\t.add([\n\t\t\t\tTweenMax.to($circleLetters, 1.2, {\n\t\t\t\t\tautoAlpha: 1,\n\t\t\t\t}),\n\t\t\t\tTweenMax.fromTo($circle, 1.2, {\n\t\t\t\t\tdrawSVG: '100% 100%',\n\t\t\t\t\trotation: 0,\n\t\t\t\t}, {\n\t\t\t\t\tdrawSVG: '0% 100%',\n\t\t\t\t\trotation: 90,\n\t\t\t\t\ttransformOrigin: 'center center',\n\t\t\t\t\tease: Power3.easeInOut,\n\t\t\t\t})\n\t\t\t], '-=1.2')\n\t\t\t.to([$headerLeft, $langSwitcher, $headerRight], 1.2, {\n\t\t\t\tx: '30px',\n\t\t\t\tautoAlpha: 0,\n\t\t\t\tease: Expo.easeInOut\n\t\t\t}, '0')\n\t\t\t.to($pageContent, 0.3, {\n\t\t\t\tautoAlpha: 0\n\t\t\t})\n\t\t\t.add(function () {\n\t\t\t\tunstickHeader();\n\t\t\t}, '0.6')\n\t\t\t.add(function () {\n\t\t\t\twindow.$pageHeader.attr('data-header-animation', '');\n\t\t\t}, '0.9');\n\n\t};\n\n\tfunction closeOverlayMenu(speed, setMenu = true) {\n\n\t\tvar\n\t\t\t// tl = new TimelineMax(),\n\t\t\t$pageContent,\n\t\t\t$submenuLinksCurrent;\n\n\t\tif (!$overlay.hasClass('opened')) {\n\t\t\treturn tl;\n\t\t}\n\n\t\t$pageContent = $('.page-wrapper__content');\n\t\t$submenuLinksCurrent = $submenu.filter('.opened').find($submenuLinks);\n\n\t\t// adjust animation menu master speed\n\t\tif (window.theme !== 'undefined' && !speed) {\n\n\t\t\tvar scale = window.theme.animations.timeScale.overlayMenuClose || 1;\n\t\t\ttl.timeScale(scale);\n\n\t\t} else {\n\n\t\t\ttl.timeScale(speed);\n\n\t\t}\n\n\t\ttl\n\t\t\t.clear()\n\t\t\t.set($overlay, {\n\t\t\t\tzIndex: 500\n\t\t\t})\n\t\t\t.add([function () {\n\t\t\t\twindow.$pageHeader.attr('data-header-animation', 'intransition');\n\t\t\t}, TweenMax.set($adminBar, {\n\t\t\t\tclearProps: 'position'\n\t\t\t})])\n\t\t\t.add(function () {\n\n\t\t\t\trestoreScrollTop();\n\t\t\t\tstickHeader();\n\n\t\t\t\tif (typeof window.SB !== 'undefined' && window.SB.offset.y >= 1) {\n\t\t\t\t\t$stickyHeader.addClass(STICKY_CLASS);\n\t\t\t\t}\n\n\t\t\t\tif (setMenu === true) {\n\t\t\t\t\tlockScroll(false);\n\t\t\t\t}\n\n\t\t\t}, '0.6')\n\t\t\t.set($burger, {\n\t\t\t\tclassName: '-=header__burger_opened'\n\t\t\t}, '0')\n\t\t\t.set($pageContent, {\n\t\t\t\ty: '5vh',\n\t\t\t}, '0')\n\t\t\t.add(hideLines($menuLinks, 1.2, 0.05, '-100%', true), '0')\n\t\t\t.add(hideLines($submenuLinksCurrent, 1.2, 0.05, '-100%', Power3.easeInOut, true), '0')\n\t\t\t.add(hideLines($overlayWidgets, 0.6), '0')\n\t\t\t.to([$social, $audio], 0.6, {\n\t\t\t\tautoAlpha: 0,\n\t\t\t\ty: '-100%'\n\t\t\t}, '0')\n\t\t\t.staggerTo($widgetListElements, 0.6, {\n\t\t\t\tautoAlpha: 0,\n\t\t\t\ty: '-30px'\n\t\t\t}, 0.03, '0')\n\t\t\t.add([\n\t\t\t\tTweenMax.to($circleLetters, 1.2, {\n\t\t\t\t\tautoAlpha: 0,\n\t\t\t\t}),\n\t\t\t\tTweenMax.to($circle, 0.6, {\n\t\t\t\t\tdrawSVG: '0% 0%',\n\t\t\t\t\tease: Power3.easeInOut,\n\t\t\t\t\trotation: 180,\n\t\t\t\t\ttransformOrigin: 'center center',\n\t\t\t\t})\n\t\t\t], '0')\n\t\t\t.to($curtain, 1.3, {\n\t\t\t\ty: '-100%',\n\t\t\t\tease: Expo.easeInOut\n\t\t\t}, '0.6')\n\t\t\t.to($pageContent, 2.4, {\n\t\t\t\ty: '0vh',\n\t\t\t\tautoAlpha: 1,\n\t\t\t\tease: Expo.easeInOut,\n\t\t\t\tdisplay: 'block',\n\t\t\t\tonComplete: function () {\n\t\t\t\t\tTweenMax.set($pageContent, {\n\t\t\t\t\t\tclearProps: 'all'\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, '0')\n\t\t\t.to($submenuButton, 0.6, {\n\t\t\t\tx: '-10px',\n\t\t\t\tautoAlpha: 0\n\t\t\t}, '0')\n\t\t\t.staggerFromTo([$headerLeft, $langSwitcher, $headerRight], 2.4, {\n\t\t\t\tx: '-50px',\n\t\t\t}, {\n\t\t\t\tx: '0px',\n\t\t\t\tautoAlpha: 1,\n\t\t\t\tease: Expo.easeInOut\n\t\t\t}, 0.05, '0.4')\n\t\t\t.set($overlay, {\n\t\t\t\tclassName: '-=opened'\n\t\t\t}, '1')\n\t\t\t.add(function () {\n\t\t\t\twindow.$pageHeader.attr('data-header-animation', '');\n\t\t\t\tif (setMenu === true) {\n\t\t\t\t\tsetOverlayMenu();\n\t\t\t\t}\n\t\t\t});\n\n\t\treturn tl;\n\n\t};\n\n\tfunction clickBurger() {\n\n\t\t$burger.off().on('click', function (e) {\n\n\t\t\te.preventDefault();\n\n\t\t\tif (window.$pageHeader.attr('data-header-animation') !== 'intransition') {\n\n\t\t\t\tif ($burger.hasClass(OPEN_CLASS)) {\n\t\t\t\t\tcloseOverlayMenu();\n\t\t\t\t\t$burger.removeClass(OPEN_CLASS);\n\t\t\t\t} else {\n\t\t\t\t\topenOverlayMenu();\n\t\t\t\t\t$burger.addClass(OPEN_CLASS);\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t});\n\n\t};\n\n}\n","/* ======================================================================== */\n/* 37. MenuOverlay */\n/* ======================================================================== */\nvar MenuOverlay = function () {\n\n\tvar $menu = $('.js-menu-overlay');\n\n\tif (!$menu.length) {\n\t\treturn;\n\t}\n\n\tvar\n\t\t$overlay = $('.header__wrapper-overlay-menu'),\n\t\t$overlayWidgets = $overlay.find('.header__wrapper-overlay-widgets'),\n\t\t$social = $overlayWidgets.find('.social'),\n\t\t$links = $menu.find('.menu-item-has-children > a'),\n\t\t$allLinks = $menu.find('a'),\n\t\t$submenus = $menu.find('.sub-menu'),\n\t\t$submenuButton = $('#js-submenu-back'),\n\t\tOPEN_CLASS = 'opened',\n\t\tSELECTED_CLASS = 'selected',\n\t\ttl = new TimelineMax();\n\n\tfunction openSubmenu($submenu, $currentMenu) {\n\n\t\tvar\n\t\t\t$currentLinks = $currentMenu.find('> li > a .menu-overlay__item-wrapper'),\n\t\t\t$submenuLinks = $submenu.find('> li > a .menu-overlay__item-wrapper');\n\n\t\ttl\n\t\t\t.clear()\n\t\t\t.add(function () {\n\n\t\t\t\twindow.$pageHeader.attr('data-header-animation', 'intransition');\n\n\t\t\t\t$submenus.removeClass(OPEN_CLASS);\n\t\t\t\t$submenu.not($menu).addClass(OPEN_CLASS);\n\n\t\t\t\tif ($submenus.hasClass(OPEN_CLASS)) {\n\n\t\t\t\t\ttl\n\t\t\t\t\t\t.to($submenuButton, 0.3, {\n\t\t\t\t\t\t\tautoAlpha: 1,\n\t\t\t\t\t\t\tx: '0px'\n\t\t\t\t\t\t}, '-=1.2');\n\n\t\t\t\t\tif (isMediumScreen()) {\n\t\t\t\t\t\ttl\n\t\t\t\t\t\t\t.to($social, 0.6, {\n\t\t\t\t\t\t\t\tautoAlpha: 0,\n\t\t\t\t\t\t\t\ty: '100%'\n\t\t\t\t\t\t\t}, '0.2')\n\t\t\t\t\t\t\t.add(hideLines($overlayWidgets, 0.6, 0.07, '100%', Power3.easeOut, true), '0');\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttl\n\t\t\t\t\t\t.to($submenuButton, 0.3, {\n\t\t\t\t\t\t\tautoAlpha: 0,\n\t\t\t\t\t\t\tx: '-10px'\n\t\t\t\t\t\t}, '-=1.2');\n\n\t\t\t\t\ttl\n\t\t\t\t\t\t.to($social, 0.6, {\n\t\t\t\t\t\t\tautoAlpha: 1,\n\t\t\t\t\t\t\ty: '0%'\n\t\t\t\t\t\t}, '0.2')\n\t\t\t\t\t\t.add(animateLines($overlayWidgets, 0.6, 0.07), '-=1.2');\n\n\t\t\t\t}\n\n\t\t\t})\n\t\t\t.set($submenu, {\n\t\t\t\tautoAlpha: 1,\n\t\t\t\tzIndex: 100,\n\t\t\t}, '0')\n\t\t\t.add(hideChars($currentLinks, 0.6, 0.4, Power3.easeOut, -50, 0, 'start'))\n\t\t\t.add(animateChars($submenuLinks, 0.6, 0.4, Power3.easeOut, 'start'), '-=0.6')\n\t\t\t.add(function () {\n\t\t\t\t$allLinks.removeClass(SELECTED_CLASS);\n\t\t\t\twindow.$pageHeader.attr('data-header-animation', '');\n\t\t\t});\n\n\t}\n\n\tfunction closeSubmenu($submenu, $currentMenu) {\n\n\t\tvar\n\t\t\t$currentLinks = $currentMenu.find('> li > a .menu-overlay__item-wrapper'),\n\t\t\t$submenuLinks = $submenu.find('> li > a .menu-overlay__item-wrapper');\n\n\t\ttl\n\t\t\t.clear()\n\t\t\t.add(function () {\n\n\t\t\t\twindow.$pageHeader.attr('data-header-animation', 'intransition');\n\n\t\t\t\t$submenus.removeClass(OPEN_CLASS);\n\t\t\t\t$currentMenu.not($menu).addClass(OPEN_CLASS);\n\n\t\t\t\tif ($submenus.hasClass(OPEN_CLASS)) {\n\n\t\t\t\t\tTweenMax.to($submenuButton, 0.3, {\n\t\t\t\t\t\tautoAlpha: 1,\n\t\t\t\t\t\tx: '0px'\n\t\t\t\t\t});\n\n\t\t\t\t\tif (isMediumScreen()) {\n\t\t\t\t\t\ttl\n\t\t\t\t\t\t\t.to($social, 0.6, {\n\t\t\t\t\t\t\t\tautoAlpha: 0,\n\t\t\t\t\t\t\t\ty: '-100%'\n\t\t\t\t\t\t\t}, '0.2')\n\t\t\t\t\t\t\t.add(hideLines($overlayWidgets, 0.6, 0.07, '100%', Power3.easeOut, true), '0');\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tTweenMax.to($submenuButton, 0.3, {\n\t\t\t\t\t\tautoAlpha: 0,\n\t\t\t\t\t\tx: '-10px'\n\t\t\t\t\t});\n\n\t\t\t\t\ttl.to($social, 0.6, {\n\t\t\t\t\t\t\tautoAlpha: 1,\n\t\t\t\t\t\t\ty: '0%'\n\t\t\t\t\t\t}, '0.2')\n\t\t\t\t\t\t.add(animateLines($overlayWidgets, 0.6, 0.07), '0');\n\n\t\t\t\t}\n\n\t\t\t})\n\t\t\t.add(hideChars($submenuLinks, 0.6, 0.4, Power3.easeOut, 50, 0, 'end'))\n\t\t\t.add(animateChars($currentLinks, 0.6, 0.4, Power3.easeOut, 'end'), '-=0.6')\n\t\t\t.set($submenu, {\n\t\t\t\tautoAlpha: 0,\n\t\t\t\tzIndex: -1,\n\t\t\t})\n\t\t\t.add(function () {\n\t\t\t\twindow.$pageHeader.attr('data-header-animation', '');\n\t\t\t});\n\n\t}\n\n\t$links.on('click', function (e) {\n\n\t\te.preventDefault();\n\n\t\tif (window.$pageHeader.attr('data-header-animation') !== 'intransition') {\n\t\t\tvar\n\t\t\t\t$el = $(this),\n\t\t\t\t$currentMenu = $el.parents('ul'),\n\t\t\t\t$submenu = $el.next('.sub-menu');\n\n\t\t\t$el.addClass(SELECTED_CLASS);\n\n\t\t\topenSubmenu($submenu, $currentMenu);\n\t\t}\n\n\t});\n\n\t$submenuButton.on('click', function (e) {\n\n\t\te.preventDefault();\n\n\t\tif (window.$pageHeader.attr('data-header-animation') !== 'intransition') {\n\t\t\tvar\n\t\t\t\t$openedMenu = $submenus.filter('.' + OPEN_CLASS),\n\t\t\t\t$prevMenu = $openedMenu.parent('li').parent('ul');\n\n\t\t\tcloseSubmenu($openedMenu, $prevMenu);\n\t\t}\n\n\t});\n\n\tfunction isMediumScreen() {\n\t\treturn Modernizr.mq('(max-width: 991px)');\n\t}\n\n}\n","/* ======================================================================== */\n/* 38. menu */\n/* ======================================================================== */\nvar Menu = function () {\n\n\tvar $menu = $('.js-overlay-menu');\n\n\tif (!$menu.length) {\n\t\treturn;\n\t}\n\n\tvar\n\t\t$overlay = $('.header__wrapper-overlay-menu'),\n\t\t$links = $menu.find('.menu-item-has-children > a'),\n\t\t$submenus = $menu.find('.overlay-sub-menu'),\n\t\t$submenuButton = $('.js-submenu-back'),\n\t\tOPEN_CLASS = 'opened',\n\t\ttl = new TimelineMax();\n\n\tfunction openSubmenu($submenu, $currentMenu) {\n\n\t\tvar\n\t\t\t$currentLinks = $currentMenu.find('> li > a .overlay-menu__item-wrapper'),\n\t\t\t$submenuLinks = $submenu.find('> li > a .overlay-menu__item-wrapper');\n\n\t\ttl\n\t\t\t.clear()\n\t\t\t.set($submenu, {\n\t\t\t\tautoAlpha: 1,\n\t\t\t\tzIndex: 100,\n\t\t\t\ty: '0px'\n\t\t\t})\n\t\t\t.to($currentLinks, 0.6, {\n\t\t\t\ty: '-100%',\n\t\t\t\tease: Power4.easeIn\n\t\t\t}, '-=0.3')\n\t\t\t.staggerTo($submenuLinks, 0.6, {\n\t\t\t\ty: '0%',\n\t\t\t\tease: Power4.easeOut\n\t\t\t}, 0.05);\n\n\t\t$submenus.removeClass(OPEN_CLASS);\n\t\t$submenu.not($menu).addClass(OPEN_CLASS);\n\n\t\tif ($submenus.hasClass(OPEN_CLASS)) {\n\t\t\ttl.to($submenuButton, 0.3, {\n\t\t\t\tautoAlpha: 1,\n\t\t\t\ty: '0px'\n\t\t\t}, '-=0.6');\n\t\t} else {\n\t\t\ttl.to($submenuButton, 0.3, {\n\t\t\t\tautoAlpha: 0,\n\t\t\t\ty: '10px'\n\t\t\t}, '-=0.6');\n\t\t}\n\n\t}\n\n\tfunction closeSubmenu($submenu, $currentMenu) {\n\n\t\tvar\n\t\t\t$currentLinks = $currentMenu.find('> li > a .overlay-menu__item-wrapper'),\n\t\t\t$submenuLinks = $submenu.find('> li > a .overlay-menu__item-wrapper');\n\n\t\ttl\n\t\t\t.clear()\n\t\t\t.set($submenu, {\n\t\t\t\tzIndex: -1\n\t\t\t})\n\t\t\t.to($submenuLinks, 0.6, {\n\t\t\t\ty: '100%',\n\t\t\t\tease: Power4.easeIn\n\t\t\t}, '-=0.3')\n\t\t\t.staggerTo($currentLinks, 0.6, {\n\t\t\t\ty: '0%',\n\t\t\t\tease: Power4.easeOut\n\t\t\t}, 0.05)\n\t\t\t.set($submenu, {\n\t\t\t\tautoAlpha: 0,\n\t\t\t\ty: '10px'\n\t\t\t});\n\n\t\t$submenus.removeClass(OPEN_CLASS);\n\t\t$currentMenu.not($menu).addClass(OPEN_CLASS);\n\n\t\tif ($submenus.hasClass(OPEN_CLASS)) {\n\t\t\tTweenMax.to($submenuButton, 0.3, {\n\t\t\t\tautoAlpha: 1,\n\t\t\t\ty: '0px'\n\t\t\t}, '-=0.6');\n\t\t} else {\n\t\t\tTweenMax.to($submenuButton, 0.3, {\n\t\t\t\tautoAlpha: 0,\n\t\t\t\ty: '10px'\n\t\t\t}, '-=0.6');\n\t\t}\n\n\t}\n\n\t$links.on('click', function (e) {\n\n\t\te.preventDefault();\n\n\t\tif (!$overlay.hasClass('in-transition')) {\n\t\t\tvar\n\t\t\t\t$el = $(this),\n\t\t\t\t$currentMenu = $el.parents('ul'),\n\t\t\t\t$submenu = $el.next('.overlay-sub-menu');\n\n\t\t\topenSubmenu($submenu, $currentMenu);\n\t\t}\n\n\t});\n\n\t$submenuButton.on('click', function (e) {\n\n\t\te.preventDefault();\n\n\t\tif (!$overlay.hasClass('in-transition')) {\n\t\t\tvar\n\t\t\t\t$el = $(this),\n\t\t\t\t$openedMenu = $submenus.filter('.' + OPEN_CLASS),\n\t\t\t\t$prevMenu = $openedMenu.parent('li').parent('ul');\n\n\t\t\tcloseSubmenu($openedMenu, $prevMenu);\n\t\t}\n\n\t});\n\n}\n","/* ======================================================================== */\n/* 39. preloader */\n/* ======================================================================== */\nfunction Preloader() {\n\n\tvar\n\t\ttl = new TimelineMax(),\n\t\t$preloader = $('.js-preloader'),\n\t\t$curtainInner = $preloader.find('.preloader__curtain_inner'),\n\t\t$curtainOuter = $preloader.find('.preloader__curtain_outer'),\n\t\t$circle = $preloader.find('.circle'),\n\t\t$logo = $preloader.find('.preloader__content'),\n\t\t$pageContent = $('.page-wrapper__content'),\n\t\t$counter = $preloader.find('.js-counter'),\n\t\t$num = $counter.find('.js-counter__number'),\n\t\tnumberStart = 1,\n\t\tnumberTarget = 100,\n\t\tanimDuration = 25,\n\t\tcounter = {\n\t\t\tval: numberStart\n\t\t};\n\n\n\tif (window.theme !== 'undefined') {\n\n\t\tvar scale = window.theme.animations.timeScale.preloader || 0.9;\n\t\ttl.timeScale(scale);\n\n\t}\n\n\tthis.start = function () {\n\n\t\tif (!$preloader.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tTweenMax.fromTo($circle, animDuration, {\n\t\t\trotation: 0,\n\t\t\tdrawSVG: '100% 100%'\n\t\t}, {\n\t\t\tdrawSVG: '0% 100%',\n\t\t\trotation: 90,\n\t\t\ttransformOrigin: 'center center',\n\t\t\tease: Power4.easeOut,\n\t\t});\n\n\t\tTweenMax.set($pageContent, {\n\t\t\ty: '20vh'\n\t\t});\n\n\t\tTweenMax.to(counter, animDuration, {\n\t\t\tval: numberTarget.toFixed(0),\n\t\t\tease: Power4.easeOut,\n\t\t\tonUpdate: function () {\n\t\t\t\tvar value = counter.val.toFixed(0);\n\t\t\t\tif (value < 10) {\n\t\t\t\t\tvalue = '0' + value;\n\t\t\t\t}\n\t\t\t\t$num.text(value);\n\t\t\t}\n\t\t})\n\n\t}\n\n\tthis.finish = function () {\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (!$preloader.length) {\n\t\t\t\tresolve(true);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttl\n\t\t\t\t.clear()\n\t\t\t\t.to($circle, 1.2, {\n\t\t\t\t\tdrawSVG: '0% 100%',\n\t\t\t\t\trotation: 90,\n\t\t\t\t\ttransformOrigin: 'center center',\n\t\t\t\t\tease: Expo.easeInOut,\n\t\t\t\t})\n\t\t\t\t.to(counter, 1.2, {\n\t\t\t\t\tval: numberTarget.toFixed(0),\n\t\t\t\t\tease: Expo.easeInOut,\n\t\t\t\t\tonUpdate: function () {\n\t\t\t\t\t\tvar value = counter.val.toFixed(0);\n\t\t\t\t\t\tif (value < 10) {\n\t\t\t\t\t\t\tvalue = '0' + value;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$num.text(value);\n\t\t\t\t\t}\n\t\t\t\t}, '-=1.2')\n\t\t\t\t.add([\n\t\t\t\t\tTweenMax.to($curtainInner, 1.2, {\n\t\t\t\t\t\ty: '-100%',\n\t\t\t\t\t\tease: Expo.easeInOut,\n\t\t\t\t\t}),\n\t\t\t\t\tTweenMax.to($curtainOuter, 1.2, {\n\t\t\t\t\t\ty: '-100%',\n\t\t\t\t\t\tease: Expo.easeInOut\n\t\t\t\t\t}),\n\t\t\t\t\tTweenMax.to($logo, 0.6, {\n\t\t\t\t\t\ty: '-25%',\n\t\t\t\t\t\tease: Power3.easeOut,\n\t\t\t\t\t\tautoAlpha: 0\n\t\t\t\t\t}),\n\t\t\t\t\tTweenMax.to($pageContent, 1.4, {\n\t\t\t\t\t\ty: '0vh',\n\t\t\t\t\t\tease: Expo.easeInOut\n\t\t\t\t\t})\n\t\t\t\t])\n\t\t\t\t.add(function () {\n\t\t\t\t\tresolve(true);\n\t\t\t\t}, '-=1.0')\n\t\t\t\t.set($preloader, {\n\t\t\t\t\tdisplay: 'none'\n\t\t\t\t});\n\n\t\t});\n\t}\n\n}\n","/* ======================================================================== */\n/* 40. SmoothScroll */\n/* ======================================================================== */\nvar SmoothScroll = function () {\n\n\tvar\n\t\t$smoothScroll = $('.js-smooth-scroll'),\n\t\t$WPadminBar = $('#wpadminbar');\n\n\tif (!$smoothScroll.length || !window.theme.smoothScroll.enabled) {\n\t\treturn;\n\t}\n\n\t// don't launch in Elementor edit mode\n\tif (typeof elementor != 'undefined') {\n\t\treturn;\n\t}\n\n\t// don't launch on mobiles\n\tif (Modernizr.touchevents && !$smoothScroll.hasClass('js-smooth-scroll_enable-mobile')) {\n\t\treturn;\n\t}\n\n\t$smoothScroll.addClass('smooth-scroll');\n\n\tif (window.theme.smoothScroll.plugins.edgeEasing) {\n\t\tScrollbar.use(window.EdgeEasingPlugin);\n\t}\n\n\tScrollbar.destroyAll();\n\n\twindow.SB = Scrollbar.init($smoothScroll[0], window.theme.smoothScroll);\n\n\t// Emit native scroll event to window\n\tif (typeof window.SB !== 'undefined') {\n\n\t\tvar scrollEvt = new CustomEvent('scroll');\n\n\t\twindow.SB.addListener(function (e) {\n\t\t\twindow.pageYOffset = e.offset.y;\n\t\t\twindow.pageXOffset = e.offset.x;\n\t\t\twindow.dispatchEvent(scrollEvt);\n\t\t});\n\n\t}\n\n\t// prevent double scroll because of the offset created\n\t// by WordPress admin bar\n\tif (typeof window.SB !== 'undefined' && $WPadminBar.length) {\n\n\t\twindow.$html.css({\n\t\t\toverflow: 'hidden'\n\t\t});\n\n\t}\n\n\t// handle smooth anchor scrolling\n\t$('a[href^=#]').each(function () {\n\n\t\tvar\n\t\t\t$current = $(this),\n\t\t\t$el = $($current.attr('href'));\n\n\t\tif ($el.length) {\n\t\t\t$current.on('click', function () {\n\t\t\t\twindow.SB.scrollIntoView($el.get(0));\n\t\t\t});\n\t\t}\n\n\t});\n\n}\n","/* ======================================================================== */\n/* 41. createOSScene */\n/* ======================================================================== */\nfunction createOSScene($el, tl, $customTrigger, noReveal = false, animDelay = 0) {\n\n\tvar\n\t\t$trigger = $el,\n\t\tscale,\n\t\tmasterTL = new TimelineMax();\n\n\tif ($customTrigger && $customTrigger.length) {\n\t\t$trigger = $customTrigger;\n\t}\n\n\tif (!noReveal) {\n\t\t// reveal hidden element first\n\t\t$el.attr('data-os-animation', 'animated');\n\t}\n\n\tif (animDelay) {\n\t\tmasterTL.delay(animDelay);\n\t}\n\n\tmasterTL\n\t\t.add([tl, function () {\n\n\t\t\t// update scrollbar geometry\n\t\t\tif (window.SB !== undefined) {\n\t\t\t\twindow.SB.update();\n\t\t\t}\n\n\t\t}], '0');\n\n\t// set animation reveal master speed\n\tif (window.theme !== undefined) {\n\n\t\tscale = window.theme.animations.timeScale.onScrollReveal || 1;\n\t\tmasterTL.timeScale(scale);\n\n\t}\n\n\tnew $.ScrollMagic.Scene({\n\t\ttriggerElement: $trigger,\n\t\ttriggerHook: window.SMSceneTriggerHook,\n\t\treverse: window.SMSceneReverse\n\t})\n\t\t.setTween(masterTL)\n\t\t.addTo(window.SMController);\n\n}\n","/* ======================================================================== */\n/* 42. getScrollTop */\n/* ======================================================================== */\nfunction getScrollTop() {\n\n\tif (typeof window.SB !== 'undefined') {\n\t\twindow.lastTop = window.SB.scrollTop;\n\t} else {\n\t\twindow.lastTop = Math.max(document.body.scrollTop, document.documentElement.scrollTop);\n\t}\n\n\treturn window.lastTop;\n}\n","/* ======================================================================== */\n/* 43. lockScroll */\n/* ======================================================================== */\nfunction lockScroll(lock) {\n\n\tvar LOCK_CLASS = 'body_lock-scroll';\n\n\tif (lock) {\n\n\t\tif (typeof window.SB !== 'undefined') {\n\n\t\t\twindow.SB.updatePluginOptions('lockscroll', {\n\t\t\t\tlock: true\n\t\t\t});\n\n\t\t}\n\n\t\twindow.$body.addClass(LOCK_CLASS);\n\n\t}\n\n\tif (!lock) {\n\n\t\twindow.$body.removeClass(LOCK_CLASS);\n\n\t\tif (typeof window.SB !== 'undefined') {\n\n\t\t\twindow.SB.updatePluginOptions('lockscroll', {\n\t\t\t\tlock: false\n\t\t\t});\n\n\t\t}\n\n\t}\n\n}\n","/* ======================================================================== */\n/* 44. restoreScrollTop */\n/* ======================================================================== */\nfunction restoreScrollTop() {\n\n\tif (window.SB !== undefined) {\n\n\t\tsetTimeout(function () {\n\t\t\twindow.SB.scrollTop = window.lastTop;\n\t\t}, 100);\n\n\t} else {\n\n\t\t$('html, body').animate({\n\t\t\tscrollTop: window.lastTop\n\t\t}, 100);\n\n\t}\n\n}\n","/* ======================================================================== */\n/* 45. scrollToVeryTop */\n/* ======================================================================== */\nfunction scrollToVeryTop() {\n\n\twindow.scrollTo(0, 0);\n\n\t// safari fix\n\ttry {\n\t\twindow.top.scrollTo(0, 0);\n\t} catch (error) {\n\n\t}\n\n\tif (window.SB !== undefined) {\n\t\twindow.SB.scrollTop = 0;\n\t}\n\n}\n","/* ======================================================================== */\n/* 46. ScrollDown */\n/* ======================================================================== */\nvar ScrollDown = function () {\n\n\tvar $el = $('.js-scroll-down');\n\n\tif (!$el.length) {\n\t\treturn;\n\t}\n\n\t$el.on('click', function (e) {\n\n\t\te.preventDefault();\n\n\t\t$('html, body').animate({\n\t\t\tscrollTop: window.innerHeight\n\t\t}, 600, 'swing');\n\n\t\tif (window.SB !== undefined) {\n\n\t\t\twindow.SB.scrollTo(0, window.innerHeight, 1200, {\n\t\t\t\teasing: function (pos) {\n\t\t\t\t\tif (pos === 0) return 0;\n\t\t\t\t\tif (pos === 1) return 1;\n\t\t\t\t\tif ((pos /= 0.5) < 1) return 0.5 * Math.pow(2, 10 * (pos - 1));\n\t\t\t\t\treturn 0.5 * (-Math.pow(2, -10 * --pos) + 2);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t});\n\n};\n","/* ======================================================================== */\n/* 47. sectionAwards */\n/* ======================================================================== */\nvar SectionAwards = function ($scope) {\n\n\tvar\n\t\t$target = $scope.find('.section-awards'),\n\t\t$figureAward = $target.find('.figure-award[data-os-animation]');\n\n\t$figureAward.each(function () {\n\t\tnew FigureAward($(this));\n\t});\n\n}\n","/* ======================================================================== */\n/* 48. sectionAbout */\n/* ======================================================================== */\nvar SectionAbout = function ($scope) {\n\n\tvar\n\t\t$target = $scope.find('.section-about'),\n\t\t$counters,\n\t\t$animTarget;\n\n\tif (!$target.length) {\n\t\treturn;\n\t}\n\n\t$animTarget = $scope.find('.section-about[data-os-animation]');\n\t$counters = $target.find('.js-counter');\n\n\t$counters.each(function () {\n\n\t\tnew Counter($(this));\n\n\t});\n\n\t$animTarget.each(function () {\n\n\t\tvar\n\t\t\t$current = $(this),\n\t\t\t$header = $current.find('.section-about__header'),\n\t\t\t$headline = $current.find('.section__headline'),\n\t\t\ttl = new TimelineMax();\n\n\t\tprepare();\n\t\tanimate();\n\n\t\tfunction prepare() {\n\n\t\t\tTweenMax.set($headline, {\n\t\t\t\tscaleX: 0\n\t\t\t});\n\n\t\t}\n\n\t\tfunction animate() {\n\n\t\t\ttl\n\t\t\t\t.add(animateHeadline($headline), '0')\n\t\t\t\t.add(animateChars($current, 1.2, 0.6, Power3.easeOut), '-=1.2')\n\t\t\t\t.add(animateLines($current, 1.2, 0.07, Power3.easeOut), '-=1.2')\n\n\t\t\tcreateOSScene($current, tl, $header);\n\n\t\t}\n\n\t});\n\n}\n","/* ======================================================================== */\n/* 49. SectionContent */\n/* ======================================================================== */\nvar SectionContent = function ($scope) {\n\n\tvar $target = $scope.find('.section-content[data-os-animation]');\n\n\tif (!$target.length) {\n\t\treturn;\n\t}\n\n\t$target.each(function () {\n\n\t\tvar\n\t\t\ttl = new TimelineMax(),\n\t\t\t$current = $(this),\n\t\t\t$header = $current.find('.section-content__header'),\n\t\t\t$wrapperButton = $current.find('.section-content__wrapper-button'),\n\t\t\t$headline = $current.find('.section__headline');\n\n\t\tprepare();\n\t\tanimate();\n\n\t\tfunction prepare() {\n\n\t\t\tTweenMax.set($headline, {\n\t\t\t\tscaleX: 0,\n\t\t\t\ttransformOrigin: 'left center'\n\t\t\t});\n\n\t\t\tTweenMax.set($wrapperButton, {\n\t\t\t\tautoAlpha: 0,\n\t\t\t\ty: '50%'\n\t\t\t});\n\n\t\t}\n\n\t\tfunction animate() {\n\n\t\t\tvar $trigger = $current;\n\n\t\t\tif ($header.length) {\n\t\t\t\t$trigger = $header\n\t\t\t}\n\n\t\t\ttl\n\t\t\t\t.add([\n\t\t\t\t\tanimateChars($current, 1.2, 0.3, Power3.easeOut),\n\t\t\t\t\tanimateLines($current, 1.2, 0.07),\n\t\t\t\t\tanimateHeadline($headline)\n\t\t\t\t])\n\t\t\t\t.to($wrapperButton, 1.2, {\n\t\t\t\t\tautoAlpha: 1,\n\t\t\t\t\ty: '0%'\n\t\t\t\t}, '-=0.9');\n\n\t\t\tcreateOSScene($current, tl, $trigger);\n\n\t\t}\n\n\t});\n\n}\n","/* ======================================================================== */\n/* 50. SectionGrid */\n/* ======================================================================== */\nvar SectionGrid = function ($scope) {\n\n\tvar\n\t\t$target = $scope.find('.section-grid[data-os-animation]'),\n\t\t$captions,\n\t\t$images,\n\t\t$items;\n\n\tif (!$target.length) {\n\t\treturn;\n\t}\n\n\t$captions = $target.find('.figure-image__wrapper-caption');\n\t$items = $target.find('.figure-image');\n\t$images = $target.find('.figure-image__wrapper-img');\n\n\tprepare();\n\tanimate();\n\n\tfunction prepare() {\n\n\t\tTweenMax.set($images, {\n\t\t\tscaleY: 1.5,\n\t\t\ty: '33%',\n\t\t\ttransformOrigin: 'top center',\n\t\t\tautoAlpha: 0.01,\n\t\t});\n\n\t\tTweenMax.set($captions, {\n\t\t\tautoAlpha: 0,\n\t\t});\n\n\t\tTweenMax.set($target, {\n\t\t\tautoAlpha: 1\n\t\t});\n\n\t}\n\n\tfunction animate() {\n\n\t\tvar\n\t\t\tcolsDesktop = parseInt($target.data('grid-columns'), 10),\n\t\t\tcolsTablet = parseInt($target.data('grid-columns-tablet'), 10),\n\t\t\tcolsMobile = parseInt($target.data('grid-columns-mobile'), 10),\n\t\t\tlg = window.elementorFrontend ? window.elementorFrontend.config.breakpoints.lg - 1 : 1024,\n\t\t\tmd = window.elementorFrontend ? window.elementorFrontend.config.breakpoints.md - 1 : 767,\n\t\t\tcols = colsDesktop;\n\n\t\tif (Modernizr.mq('(max-width: ' + lg + 'px)')) {\n\t\t\tcols = colsTablet;\n\t\t}\n\n\t\tif (Modernizr.mq('(max-width: ' + md + 'px)')) {\n\t\t\tcols = colsMobile;\n\t\t}\n\n\t\tfor (var index = 0; index < $items.length; index = index + cols) {\n\n\t\t\tvar\n\t\t\t\t$array = $items.slice(index, index + cols),\n\t\t\t\t$currentImages = $array.find($images),\n\t\t\t\t$currentCaptions = $array.find($captions),\n\t\t\t\ttl = new TimelineMax();\n\n\t\t\ttl\n\t\t\t\t.add([\n\t\t\t\t\tTweenMax.staggerTo($currentImages, 0.9, {\n\t\t\t\t\t\tautoAlpha: 1,\n\t\t\t\t\t\ty: '0%',\n\t\t\t\t\t\tforce3D: true,\n\t\t\t\t\t\tscaleY: 1,\n\t\t\t\t\t\tease: Power3.easeOut\n\t\t\t\t\t}, 0.15),\n\t\t\t\t\tTweenMax.staggerTo($currentCaptions, 0.9, {\n\t\t\t\t\t\tautoAlpha: 1,\n\t\t\t\t\t\tdelay: 0.4,\n\t\t\t\t\t\tease: Power3.easeOut\n\t\t\t\t\t}, 0.15),\n\t\t\t\t]);\n\n\t\t\tcreateOSScene($array[0], tl, false, true);\n\n\t\t}\n\n\t}\n\n}\n","/* ======================================================================== */\n/* 51. sectionFullscreenSlider */\n/* ======================================================================== */\nvar SectionFullscreenSlider = function ($scope) {\n\n\tvar $target = $scope.find('.section-fullscreen-slider[data-os-animation]');\n\n\tif (!$target.length) {\n\n\t\treturn;\n\n\t}\n\n\t$target.each(function () {\n\n\t\tvar\n\t\t\ttl = new TimelineMax(),\n\t\t\t$current = $(this),\n\t\t\t$canvasWrapper = $current.find('.slider__wrapper-canvas'),\n\t\t\tslider,\n\t\t\t$slider = $current.find('.js-slider-fullscreen'),\n\t\t\t$sliderImages = $current.find('.js-slider-fullscreen__images'),\n\t\t\teffectIntensity = $sliderImages.data('transition-effect-intensity') || 0.25,\n\t\t\tspeed = $sliderImages.data('speed') / 1000 || 1.2,\n\t\t\t$buttonWrapper = $slider.find('.slider__wrapper-button');\n\n\t\tprepare().then(function () {\n\t\t\tanimate();\n\t\t});\n\n\n\t\tfunction prepare() {\n\n\t\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\t\tvar tl = new TimelineMax();\n\n\t\t\t\ttl\n\t\t\t\t\t.set($buttonWrapper, {\n\t\t\t\t\t\tautoAlpha: 0,\n\t\t\t\t\t\ty: '20px'\n\t\t\t\t\t})\n\t\t\t\t\t.set($canvasWrapper, {\n\t\t\t\t\t\tscale: 1.1,\n\t\t\t\t\t\tautoAlpha: 0,\n\t\t\t\t\t\ttransformOrigin: 'center center'\n\t\t\t\t\t})\n\t\t\t\t\t.add(function () {\n\t\t\t\t\t\tslider = new SliderFullScreen($slider);\n\t\t\t\t\t\tif (slider.params.autoplay.enabled) {\n\t\t\t\t\t\t\tslider.autoplay.stop();\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.add(function () {\n\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t});\n\n\t\t\t});\n\n\t\t}\n\n\t\tfunction animate() {\n\n\t\t\tvar\n\t\t\t\t$activeSlide = $target.find('.swiper-slide-active'),\n\t\t\t\t$activeHeading = $activeSlide.find('.slider__heading'),\n\t\t\t\t$activeSubheading = $activeSlide.find('.slider__subheading'),\n\t\t\t\t$activeDescription = $activeSlide.find('.slider__text'),\n\t\t\t\t$activeButton = $activeSlide.find('.slider__wrapper-button');\n\n\t\t\t$activeSlide.imagesLoaded({\n\t\t\t\tbackground: true,\n\t\t\t}, function () {\n\n\n\t\t\t\ttl\n\t\t\t\t\t.add(\n\t\t\t\t\t\tfunction () {\n\n\t\t\t\t\t\t\tif (slider.params.autoplay.enabled) {\n\t\t\t\t\t\t\t\tslider.autoplay.start();\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (typeof window.distortionEffect !== 'undefined') {\n\n\t\t\t\t\t\t\t\tTweenMax.to($canvasWrapper, speed * 1.5, {\n\t\t\t\t\t\t\t\t\tscale: 1,\n\t\t\t\t\t\t\t\t\tautoAlpha: 1,\n\t\t\t\t\t\t\t\t\tease: Power3.easeOut\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\twindow.distortionEffect.animate();\n\t\t\t\t\t\t\t\twindow.distortionEffect.change({\n\t\t\t\t\t\t\t\t\tindexFrom: '0',\n\t\t\t\t\t\t\t\t\tindexTo: '0',\n\t\t\t\t\t\t\t\t\tspeedIn: speed * 1.5,\n\t\t\t\t\t\t\t\t\tintensity: effectIntensity,\n\t\t\t\t\t\t\t\t\teasing: Power3.easeOut,\n\t\t\t\t\t\t\t\t\tdirection: 'vertical'\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\t\t\t\t\t)\n\t\t\t\t\t.add(animateChars($activeHeading, 1.2, 0.3, Power3.easeOut), '+=0.6')\n\t\t\t\t\t.add(animateChars($activeSubheading, 1.2, 0.3, Power3.easeOut), '-=1.2')\n\t\t\t\t\t.add(animateLines($activeDescription, 1.2, 0.04), '-=1.2')\n\t\t\t\t\t.to($activeButton, 1.2, {\n\t\t\t\t\t\ty: '0px',\n\t\t\t\t\t\tautoAlpha: 1,\n\t\t\t\t\t\tease: Power3.easeOut\n\t\t\t\t\t}, '-=1.2');\n\n\t\t\t\tcreateOSScene($current, tl);\n\n\t\t\t});\n\n\t\t}\n\n\t})\n\n}\n","/* ======================================================================== */\n/* 52. sectionMasthead */\n/* ======================================================================== */\nvar SectionMasthead = function ($scope) {\n\n\tvar $target = $scope.find('.section-masthead[data-os-animation]');\n\n\tif (!$target.length) {\n\t\treturn;\n\t}\n\n\t$target.each(function () {\n\n\t\tvar\n\t\t\t$current = $(this),\n\t\t\t$currentBig = $current.filter('.section-masthead_big-heading'),\n\t\t\ttl = new TimelineMax(),\n\t\t\t$background = $current.find('.section-masthead__background .art-parallax__wrapper'),\n\t\t\t$curtain = $current.find('.section-masthead__curtain'),\n\t\t\t$heading = $current.find('.section-masthead__heading'),\n\t\t\t$headingBig = $current.find('.section-masthead__heading-big'),\n\t\t\t$text = $current.find('.section-masthead__text'),\n\t\t\t$subheading = $current.find('.section-masthead__subheading'),\n\t\t\t$button = $current.find('.section-masthead__wrapper-button'),\n\t\t\t$headline = $current.find('.section__headline');\n\n\t\tprepare();\n\t\tanimate();\n\n\t\tfunction prepare() {\n\n\t\t\tTweenMax.set($headline, {\n\t\t\t\tscaleX: 0,\n\t\t\t\ttransformOrigin: 'left center'\n\t\t\t});\n\n\t\t\tTweenMax.set($curtain, {\n\t\t\t\tscaleY: 0,\n\t\t\t\ttransformOrigin: 'bottom center'\n\t\t\t});\n\n\t\t\tTweenMax.set($background, {\n\t\t\t\tscale: 1.1,\n\t\t\t});\n\n\t\t\tTweenMax.set($button, {\n\t\t\t\ty: '100%',\n\t\t\t\tautoAlpha: 0\n\t\t\t});\n\n\t\t}\n\n\t\tfunction animate() {\n\n\t\t\ttl\n\t\t\t\t.add(function () {\n\t\t\t\t\tif ($currentBig.length) {\n\t\t\t\t\t\twindow.SMController.enabled(false);\n\t\t\t\t\t\tlockScroll(true);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.set($current, {\n\t\t\t\t\tautoAlpha: 1\n\t\t\t\t})\n\t\t\t\t.add(animateChars($subheading, 1.2, 0.4, Power3.easeInOut))\n\t\t\t\t.add(animateLines($text, 1.2, 0.08, Power3.easeOut), '0.9')\n\t\t\t\t.add(animateHeadline($headline), '-=1.2')\n\t\t\t\t.add(hideChars($headingBig, 0.6, 0.1, Power3.easeInOut, 0, '-200%'), '+=0.4')\n\t\t\t\t.to($currentBig, 0.6, {\n\t\t\t\t\theight: 0,\n\t\t\t\t\tease: Expo.easeOut,\n\t\t\t\t\tdisplay: 'none'\n\t\t\t\t}, '-=0.3')\n\t\t\t\t.add(function () {\n\t\t\t\t\tif ($currentBig.length) {\n\t\t\t\t\t\tlockScroll(false);\n\t\t\t\t\t\twindow.SMController.enabled(true);\n\t\t\t\t\t\twindow.SMController.update(true);\n\t\t\t\t\t\tnew Grid();\n\t\t\t\t\t}\n\t\t\t\t}, '-=0.3')\n\n\t\t\tif (!$heading.hasClass('js-split-text_cancel-animation')) {\n\t\t\t\ttl.add(animateChars($heading, 1.2, 0.4, Power3.easeInOut), '0');\n\t\t\t}\n\n\t\t\tif ($curtain.length) {\n\t\t\t\ttl.to($curtain, 1.2, {\n\t\t\t\t\tscaleY: 1,\n\t\t\t\t\tease: Expo.easeInOut\n\t\t\t\t}, '0');\n\t\t\t}\n\n\t\t\tif ($background.length) {\n\t\t\t\ttl.fromTo($background, 2.4, {\n\t\t\t\t\tscale: 1.1\n\t\t\t\t}, {\n\t\t\t\t\tscale: 1\n\t\t\t\t}, '0');\n\t\t\t}\n\n\t\t\tif ($button.length) {\n\t\t\t\ttl.to($button, 1.2, {\n\t\t\t\t\ty: '0%',\n\t\t\t\t\tautoAlpha: 1,\n\t\t\t\t\tease: Power3.easeOut\n\t\t\t\t}, '-=1.2');\n\t\t\t}\n\n\t\t\tcreateOSScene($current, tl);\n\n\t\t}\n\n\t});\n\n}\n","/* ======================================================================== */\n/* 53. sectionNavProjects */\n/* ======================================================================== */\nvar SectionNavProjects = function ($scope) {\n\n\tvar $target = $scope.find('.section-nav-projects');\n\n\tif (!$target.length) {\n\t\treturn;\n\t}\n\n\tvar\n\t\t$allButton = $target.find('.section-nav-projects__inner_all'),\n\t\t$prevHeading = $target.find('.section-nav-projects__heading_prev'),\n\t\t$nextHeading = $target.find('.section-nav-projects__heading_next'),\n\t\t$prevArrow = $target.find('.section-nav-projects__arrow_prev'),\n\t\t$nextArrow = $target.find('.section-nav-projects__arrow_next'),\n\t\t$prevButton = $target.find('.section-nav-projects__inner_prev'),\n\t\t$nextButton = $target.find('.section-nav-projects__inner_next'),\n\t\ttl = new TimelineMax(),\n\t\tduration = 0.6,\n\t\toffset = 75,\n\t\tstagger = 0.2;\n\n\tnew ButtonCircles($allButton);\n\n\tsetChars($prevButton, offset);\n\tsetChars($nextButton, offset);\n\n\n\tif (Modernizr.mq('(min-width: 767px)')) {\n\n\t\twindow.$document\n\t\t\t.on('mouseenter touchstart', '.section-nav-projects__inner_prev', function () {\n\t\t\t\ttl\n\t\t\t\t\t.clear()\n\t\t\t\t\t.to($nextArrow, duration / 2, {\n\t\t\t\t\t\tautoAlpha: 1,\n\t\t\t\t\t\tx: '0px'\n\t\t\t\t\t}, '0.4')\n\t\t\t\t\t.to($prevArrow, duration / 2, {\n\t\t\t\t\t\tautoAlpha: 0,\n\t\t\t\t\t\tx: (-1) * offset / 2 + 'px'\n\t\t\t\t\t}, '0')\n\t\t\t\t\t.add(animateChars($prevHeading, duration, stagger, Power4.easeOut), '0.2')\n\t\t\t\t\t.add(hideChars($nextHeading, duration, stagger, Power4.easeOut, (-1) * offset, 0, 'start'), '0.2');\n\t\t\t})\n\t\t\t.on('mouseleave touchend', '.section-nav-projects__inner_prev', function () {\n\t\t\t\ttl\n\t\t\t\t\t.clear()\n\t\t\t\t\t.to($prevArrow, duration / 2, {\n\t\t\t\t\t\tautoAlpha: 1,\n\t\t\t\t\t\tx: '0px'\n\t\t\t\t\t}, '0.2')\n\t\t\t\t\t.to($nextArrow, duration / 2, {\n\t\t\t\t\t\tautoAlpha: 1,\n\t\t\t\t\t\tx: '0px'\n\t\t\t\t\t}, '0.4')\n\t\t\t\t\t.add(hideChars($prevHeading, duration, stagger, Power4.easeOut, offset, 0, 'end'), '0')\n\t\t\t\t\t.add(hideChars($nextHeading, duration, stagger, Power4.easeOut, (-1) * offset, 0, 'start'), '0');\n\t\t\t})\n\t\t\t.on('mouseenter touchstart', '.section-nav-projects__inner_next', function () {\n\t\t\t\ttl\n\t\t\t\t\t.clear()\n\t\t\t\t\t.to($prevArrow, duration / 2, {\n\t\t\t\t\t\tautoAlpha: 1,\n\t\t\t\t\t\tx: '0px'\n\t\t\t\t\t}, '0.4')\n\t\t\t\t\t.to($nextArrow, duration / 2, {\n\t\t\t\t\t\tautoAlpha: 0,\n\t\t\t\t\t\tx: offset / 2 + 'px'\n\t\t\t\t\t}, '0')\n\t\t\t\t\t.add(animateChars($nextHeading, duration, stagger, Power4.easeOut), '0.2')\n\t\t\t\t\t.add(hideChars($prevHeading, duration, stagger, Power4.easeOut, offset, 0, 'end'), '0.2');\n\t\t\t})\n\t\t\t.on('mouseleave touchend', '.section-nav-projects__inner_next', function () {\n\t\t\t\ttl\n\t\t\t\t\t.clear()\n\t\t\t\t\t.to($nextArrow, duration / 2, {\n\t\t\t\t\t\tautoAlpha: 1,\n\t\t\t\t\t\tx: '0px'\n\t\t\t\t\t}, '0.2')\n\t\t\t\t\t.to($prevArrow, duration / 2, {\n\t\t\t\t\t\tautoAlpha: 1,\n\t\t\t\t\t\tx: '0px'\n\t\t\t\t\t}, '0.2')\n\t\t\t\t\t.add(hideChars($nextHeading, duration, stagger, Power4.easeOut, (-1) * offset, 0, 'start'), '0')\n\t\t\t\t\t.add(hideChars($prevHeading, duration, stagger, Power4.easeOut, offset, 0, 'end'), '0');\n\t\t\t})\n\t\t\t.on('click', '.section-nav-projects__inner_prev', function () {\n\t\t\t\ttl\n\t\t\t\t\t.clear()\n\t\t\t\t\t.stop();\n\n\t\t\t})\n\t\t\t.on('click', '.section-nav-projects__inner_next', function () {\n\t\t\t\ttl\n\t\t\t\t\t.clear()\n\t\t\t\t\t.stop();\n\n\t\t\t});\n\n\t} else {\n\n\t\tanimateChars($prevHeading, 0, 0, Power4.easeOut);\n\t\tanimateChars($nextHeading, 0, 0, Power4.easeOut);\n\n\t}\n\n}\n","/* ======================================================================== */\n/* 54. SectionPortfolio */\n/* ======================================================================== */\nvar SectionPortfolio = function ($scope) {\n\n\tvar\n\t\t$target = $scope.find('.section-portfolio'),\n\t\t$filter,\n\t\t$grid,\n\t\t$figurePortfolioHover,\n\t\t$figurePortfolio,\n\t\t$filterItems,\n\t\t$filterLine,\n\t\t$animTarget,\n\t\tcolsDesktop,\n\t\tcolsTablet,\n\t\tcolsMobile,\n\t\tlg,\n\t\tmd,\n\t\tcols,\n\t\tFilterPortfolio,\n\t\tGridPortfolio;\n\n\tif (!$target.length) {\n\t\treturn;\n\t}\n\n\t$animTarget = $scope.find('.section-portfolio[data-os-animation]');\n\t$figurePortfolioHover = $target.find('.figure-portfolio-item_hover');\n\t$figurePortfolio = $animTarget.find('.figure-portfolio[data-os-animation]');\n\t$filter = $target.find('.js-filter');\n\t$filterItems = $animTarget.find('.filter__item > *');\n\t$filterLine = $animTarget.find('.filter__underline');\n\t$grid = $target.find('.js-grid');\n\tcolsDesktop = parseInt($grid.data('grid-columns'), 10) || -1;\n\tcolsTablet = parseInt($grid.data('grid-columns-tablet'), 10) || -1;\n\tcolsMobile = parseInt($grid.data('grid-columns-mobile'), 10) || -1;\n\tlg = window.elementorFrontend ? window.elementorFrontend.config.breakpoints.lg - 1 : 1024;\n\tmd = window.elementorFrontend ? window.elementorFrontend.config.breakpoints.md - 1 : 767;\n\tcols = colsDesktop;\n\n\tif (Modernizr.mq('(max-width: ' + lg + 'px)')) {\n\t\tcols = colsTablet;\n\t}\n\n\tif (Modernizr.mq('(max-width: ' + md + 'px)')) {\n\t\tcols = colsMobile;\n\t}\n\n\tbindGridFilter();\n\tanimateHover();\n\tprepare();\n\tanimate();\n\n\tfunction bindGridFilter() {\n\n\t\tif (!$filter.length || !$grid.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar scrollEvent = new Event('scroll');\n\n\t\tFilterPortfolio = new Filter($scope, $filter);\n\t\tGridPortfolio = new Grid($grid);\n\n\t\tif ($filter.length) {\n\n\t\t\tFilterPortfolio.setActiveItem(0);\n\n\t\t\tFilterPortfolio.$items.on('click', function (e) {\n\n\t\t\t\te.preventDefault();\n\n\t\t\t\tvar filterBy = $(this).data('filter');\n\n\t\t\t\tif ($grid.hasClass('grid_fancy')) {\n\t\t\t\t\tif (filterBy !== '*') {\n\t\t\t\t\t\t$grid.addClass('grid_fancy-disable');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$grid.removeClass('grid_fancy-disable');\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tGridPortfolio.isotope({\n\t\t\t\t\tfilter: filterBy\n\t\t\t\t});\n\n\t\t\t\t// update scroll to trigger reveal animation & lazy load\n\t\t\t\tGridPortfolio.on('arrangeComplete', function () {\n\t\t\t\t\twindow.dispatchEvent(scrollEvent);\n\t\t\t\t});\n\n\t\t\t});\n\n\t\t}\n\n\t\tGridPortfolio.isotope({\n\t\t\tfilter: '*'\n\t\t});\n\n\t}\n\n\tfunction animateHover() {\n\n\t\t$figurePortfolioHover.each(function () {\n\n\t\t\tvar $current = $(this);\n\n\t\t\tnew FigurePortfolioHover($current);\n\n\t\t});\n\n\t}\n\n\tfunction prepare() {\n\t\tTweenMax.set($filterItems, {\n\t\t\tautoAlpha: 0,\n\t\t\ty: '30px'\n\t\t});\n\t\tTweenMax.set($filterLine, {\n\t\t\tautoAlpha: 0\n\t\t});\n\t}\n\n\tfunction animate() {\n\n\t\tvar tl = new TimelineMax();\n\n\t\ttl\n\t\t\t.delay(0.1)\n\t\t\t.add([\n\t\t\t\tTweenMax.staggerTo($filterItems, 0.9, {\n\t\t\t\t\tautoAlpha: 1,\n\t\t\t\t\ty: '0px',\n\t\t\t\t\tease: Power3.easeOut\n\t\t\t\t}, 0.1),\n\t\t\t\tTweenMax.to($filterLine, 0.9, {\n\t\t\t\t\tautoAlpha: 1\n\t\t\t\t})\n\t\t\t]);\n\n\t\tfor (var index = 0; index < $figurePortfolio.length; index = index + cols) {\n\n\t\t\tvar\n\t\t\t\t$array = $figurePortfolio.slice(index, index + cols),\n\t\t\t\tcurrentDelay = 0.1;\n\n\t\t\t$array.each(function (index) {\n\n\t\t\t\tvar $current = $(this);\n\n\t\t\t\tnew FigurePortfolioAnimation($current, currentDelay);\n\n\t\t\t\tcurrentDelay += 0.1;\n\n\n\t\t\t});\n\n\n\t\t}\n\n\t\tcreateOSScene($animTarget, tl);\n\n\t}\n\n}\n","/* ======================================================================== */\n/* 55. SectionProperties */\n/* ======================================================================== */\nvar SectionProperties = function ($scope) {\n\n\tvar\n\t\t$target = $scope.find('.section-properties[data-os-animation]');\n\n\tif (!$target.length) {\n\t\treturn;\n\t}\n\n\t$target.attr('data-os-animation', 'animated');\n\n\t$target.each(function () {\n\n\t\tvar\n\t\t\t$current = $(this),\n\t\t\t$figures = $current.find('.figure-info');\n\n\t\t$figures.each(function () {\n\n\t\t\tvar\n\t\t\t\ttl = new TimelineMax(),\n\t\t\t\t$currentFigure = $(this),\n\t\t\t\t$option = $currentFigure.find('.figure-info__option'),\n\t\t\t\t$value = $currentFigure.find('.figure-info__value');\n\n\t\t\ttl\n\t\t\t\t.add(animateLines($option, 0.6, 0.07))\n\t\t\t\t.add(animateLines($value, 0.6, 0.07), '-=0.5')\n\n\t\t\tcreateOSScene($currentFigure, tl);\n\n\t\t});\n\n\t});\n\n}\n","/* ======================================================================== */\n/* 56. sectionServices */\n/* ======================================================================== */\nvar SectionServices = function ($scope) {\n\n\tvar $target = $scope.find('.section-services[data-os-animation]');\n\n\tif (!$target.length) {\n\t\treturn;\n\t}\n\n\t$target.each(function () {\n\n\t\tvar\n\t\t\t$current = $(this),\n\t\t\t$serviceItem = $current.find('.section-services__wrapper-item'),\n\t\t\t$lines = $current.find('.section-services__border-line'),\n\t\t\t$bg = $current.find('.section-services__bg'),\n\t\t\ttl = new TimelineMax(),\n\t\t\ttlChild = new TimelineMax();\n\n\t\tprepare();\n\t\tanimate();\n\n\t\tfunction prepare() {\n\n\t\t\tTweenMax.set($bg, {\n\t\t\t\tx: '-100%',\n\t\t\t});\n\n\t\t\tTweenMax.set($lines, {\n\t\t\t\tx: '-200%',\n\t\t\t})\n\n\t\t}\n\n\t\tfunction animate() {\n\n\t\t\ttl\n\t\t\t\t.to([$bg, $lines], 1.2, {\n\t\t\t\t\tx: '0%',\n\t\t\t\t\tease: Expo.easeInOut\n\t\t\t\t});\n\n\t\t\t$serviceItem.each(function () {\n\n\t\t\t\tvar\n\t\t\t\t\t$currentServiceItem = $(this),\n\t\t\t\t\t$counter = $currentServiceItem.find('.section-services__counter'),\n\t\t\t\t\t$heading = $currentServiceItem.find('.section-services__heading'),\n\t\t\t\t\t$link = $currentServiceItem.find('.section-services__wrapper-button');\n\n\n\t\t\t\ttlChild\n\t\t\t\t\t.add([\n\t\t\t\t\t\tanimateChars($heading, 1.2, 0.4, Power3.easeOut),\n\t\t\t\t\t\tanimateChars($counter, 1.2, 0.1, Power3.easeOut)\n\t\t\t\t\t], 'start')\n\t\t\t\t\t.fromTo($link, 0.6, {\n\t\t\t\t\t\ty: '100%',\n\t\t\t\t\t\tautoAlpha: 0\n\t\t\t\t\t}, {\n\t\t\t\t\t\ty: '0%',\n\t\t\t\t\t\tautoAlpha: 1\n\t\t\t\t\t}, 'start')\n\n\t\t\t});\n\n\t\t\ttl.add(tlChild, '-=0.2');\n\n\t\t\tcreateOSScene($target, tl);\n\n\t\t}\n\n\t});\n\n}\n","/* ======================================================================== */\n/* 57. sectionTestimonials */\n/* ======================================================================== */\nvar SectionTestimonials = function ($scope) {\n\n\tvar $target = $scope.find('.section-testimonials');\n\n\tif (!$target.length) {\n\t\treturn;\n\t}\n\n\t$target.each(function () {\n\n\t\tvar\n\t\t\ttl = new TimelineMax(),\n\t\t\t$current = $(this),\n\t\t\t$slider = $target;\n\n\t\tprepare().then(function () {\n\t\t\tanimate();\n\t\t});\n\n\n\t\tfunction prepare() {\n\n\t\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\t\tvar tl = new TimelineMax();\n\n\t\t\t\ttl\n\t\t\t\t\t.add(function () {\n\t\t\t\t\t\tnew SliderTestimonials($slider);\n\t\t\t\t\t})\n\t\t\t\t\t.add(function () {\n\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t});\n\n\t\t\t});\n\n\t\t}\n\n\t\tfunction animate() {\n\n\t\t\tvar\n\t\t\t\t$activeSlide = $target.find('.swiper-slide-active'),\n\t\t\t\t$activeText = $activeSlide.find('.slider-testimonials__text'),\n\t\t\t\t$activeAuthor = $activeSlide.find('.slider-testimonials__author');\n\n\n\t\t\ttl\n\t\t\t\t.add(animateLines($activeText, 1.2, 0.1, Power3.easeOut))\n\t\t\t\t.add(animateChars($activeAuthor, 1.2, 0.3, Power3.easeOut), '-=0.6');\n\n\t\t}\n\n\t})\n\n}\n","/* ======================================================================== */\n/* 58. renderSliderCounter */\n/* ======================================================================== */\nfunction renderSliderCounter(sliderMain, sliderCounter, slideClass, elTotal, sliderSecondary, addZeros = 2) {\n\n\tif ($(sliderMain).length && $(sliderSecondary).length && !$(sliderCounter)) {\n\t\tsliderSecondary.controller.control = sliderMain;\n\t\tsliderMain.controller.control = sliderSecondary;\n\t}\n\n\tif (!$(sliderMain).length || !$(sliderCounter).length || !$(elTotal).length) {\n\t\treturn;\n\t}\n\n\tvar\n\t\tnumOfSlides = sliderMain.slides.length,\n\t\tstartSlides = parseInt(sliderMain.params.slidesPerView, 10),\n\t\tprefixTen = '0',\n\t\tprefixCurrent = '00',\n\t\tprefixTotal = numOfSlides >= 10 ? '0' : '00';\n\n\tvar counter = new Swiper(sliderCounter, {\n\t\tdirection: 'vertical',\n\t\tsimulateTouch: false,\n\t\tallowTouchMove: false\n\t});\n\n\tswitch (addZeros) {\n\t\tcase 0:\n\t\t\tprefixCurrent = '';\n\t\t\tprefixTen = '';\n\t\t\tprefixTotal = '';\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tprefixCurrent = '0';\n\t\t\tprefixTen = '';\n\t\t\tprefixTotal = numOfSlides >= 10 ? '' : '0';\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tprefixCurrent = '00';\n\t\t\tprefixTen = '0';\n\t\t\tprefixTotal = numOfSlides >= 10 ? '0' : '00';\n\t\t\tbreak;\n\t}\n\n\tcounter.removeAllSlides();\n\n\tfor (var index = startSlides; index <= numOfSlides; index++) {\n\n\t\tif (index >= 10) {\n\t\t\tprefixCurrent = prefixTen;\n\t\t}\n\n\t\tcounter.appendSlide('
' + prefixCurrent + index + '
');\n\n\t}\n\n\t$(elTotal).html(prefixTotal + numOfSlides);\n\n\tsliderMain.controller.control = counter;\n\tcounter.controller.control = sliderMain;\n\n\tif ($(sliderSecondary).length) {\n\t\tsliderSecondary.controller.control = counter;\n\t\tcounter.controller.control = sliderSecondary;\n\t}\n\n}\n","/* ======================================================================== */\n/* 59. renderSliderDots */\n/* ======================================================================== */\nfunction renderSliderDots(slider, $dotsContainer) {\n\n\tvar\n\t\t$dots = $dotsContainer.find('.slider__dot'),\n\t\ttl = new TimelineMax(),\n\t\t$circles;\n\n\tif (!$dots.length) {\n\t\treturn false;\n\t} else {\n\n\t\t// append SVG circle\n\t\t$dots.append('');\n\t\t$circles = $dots.find('.circle');\n\n\t}\n\n\tTweenMax.set($circles, {\n\t\tdrawSVG: false,\n\t});\n\n\tslider\n\t\t.on('autoplayStop', function () {\n\t\t\ttl.stop();\n\t\t})\n\t\t.on('autoplayStart', function () {\n\t\t\ttl.play();\n\t\t})\n\t\t.on('slideChange', function () {\n\t\t\t// unsetDots();\n\t\t\tsetCurrentDot();\n\t\t});\n\n\t// on init\n\tsetCurrentDot();\n\n\tfunction setCurrentDot() {\n\n\t\tvar\n\t\t\t$currentDot = $dots.eq(slider.realIndex),\n\t\t\t$currentCircle = $currentDot.find('.circle'),\n\t\t\t$otherCircles = $circles.not($currentCircle),\n\t\t\tautoPlaydelay = parseFloat(slider.params.speed / 1000) / 2;\n\n\t\tif (slider.params.autoplay.enabled) {\n\t\t\tautoPlaydelay = parseFloat(slider.params.autoplay.delay / 1000);\n\t\t}\n\n\t\ttl\n\t\t\t.clear()\n\t\t\t.to($otherCircles, autoPlaydelay / 10, {\n\t\t\t\tdrawSVG: '0% 0%',\n\t\t\t\tease: Power4.easeInOut,\n\t\t\t})\n\t\t\t.fromTo($currentCircle, autoPlaydelay, {\n\t\t\t\tdrawSVG: '100% 100%',\n\t\t\t\tease: Power4.easeInOut\n\t\t\t}, {\n\t\t\t\tdrawSVG: '0% 100%'\n\t\t\t});\n\n\t}\n\n}\n","/* ======================================================================== */\n/* 60. setSliderDistortionEffect */\n/* ======================================================================== */\nfunction setSliderDistortionEffect(slider, $slider, intensity, aspect = 1.6) {\n\n\tif (typeof THREE == 'undefined') {\n\t\treturn;\n\t}\n\n\tvar\n\t\tcanvas = $slider.find('.slider__canvas').get(0),\n\t\t$canvasWrapper = $slider.find('.slider__wrapper-canvas'),\n\t\t$wrapper = $slider.find('.swiper-wrapper'),\n\t\tdisplacementImg = $slider.data('transition-displacement-img'),\n\t\timages = getSliderImages(),\n\t\tspeed = slider.params.speed / 1000,\n\t\ttl = new TimelineMax();\n\n\tslider.params.effect = 'fade';\n\tslider.params.fadeEffect.crossFade = true;\n\twindow.distortionEffect = new EffectDistortion({\n\t\tdisplacementImage: displacementImg,\n\t\timages: images,\n\t\tslider: slider,\n\t\taspectRatio: aspect,\n\t\tcanvas: canvas\n\t});\n\n\twindow.distortionEffect.animate();\n\n\tslider.on('slideChange', function () {\n\n\t\ttl.clear().to($canvasWrapper, speed, {\n\t\t\t\tscale: 1.05,\n\t\t\t\ttransformOrigin: 'center center',\n\t\t\t\tease: Power3.easeOut\n\t\t\t})\n\t\t\t.to($canvasWrapper, speed * 2, {\n\t\t\t\tscale: 1,\n\t\t\t});\n\n\t\twindow.distortionEffect.change({\n\t\t\tindexFrom: this.previousIndex,\n\t\t\tindexTo: this.activeIndex,\n\t\t\tspeedIn: speed,\n\t\t\tintensity: this.activeIndex < this.previousIndex ? intensity * (-1) : intensity,\n\t\t\teasing: Power3.easeInOut\n\t\t});\n\n\t});\n\n\tif (typeof elementor !== 'undefined') {\n\t\tTweenMax.set($wrapper, {\n\t\t\tdisplay: 'none'\n\t\t});\n\t} else {\n\t\t$wrapper.remove();\n\t}\n\n\tfunction getSliderImages() {\n\n\t\tvar\n\t\t\tsrc = [],\n\t\t\tcurrent;\n\n\t\t$slider.find('.slider__bg').each(function () {\n\n\t\t\tcurrent = $(this).attr('data-background');\n\n\t\t\tif (!current) {\n\t\t\t\tcurrent = $(this).attr('poster');\n\t\t\t}\n\n\t\t\tsrc.push(current);\n\n\t\t});\n\n\t\treturn src;\n\n\t}\n\n}\n","/* ======================================================================== */\n/* 61. setSliderOverlapEffect */\n/* ======================================================================== */\nfunction setSliderOverlapEffect(slider, overlapFactor) {\n\n\tvar\n\t\ti,\n\t\tinnerOffset,\n\t\tinnerTranslate,\n\t\tbackground;\n\n\tinitialSet();\n\n\tfunction initialSet() {\n\n\t\tinnerOffset = slider.width * overlapFactor;\n\t\tinnerTranslate = innerOffset * (-1);\n\t\tbackground = slider.slides[1].querySelector('.slider__bg')\n\n\t\tTweenMax.set(background, {\n\t\t\ty: slider.params.direction == 'vertical' ? innerTranslate + 'px' : '',\n\t\t\tx: slider.params.direction == 'horizontal' ? innerTranslate + 'px' : '',\n\t\t\ttransition: slider.params.speed + 'ms',\n\t\t\tforce3D: true,\n\t\t\tbackfaceVisibility: 'hidden'\n\t\t});\n\n\t}\n\n\tslider\n\t\t.on('progress', function () {\n\n\t\t\tfor (i = 0; i < slider.slides.length; i++) {\n\n\t\t\t\tinnerTranslate = slider.slides[i].progress * innerOffset;\n\n\t\t\t\ttry {\n\n\t\t\t\t\tTweenMax.set(slider.slides[i].querySelector('.slider__bg'), {\n\t\t\t\t\t\ty: slider.params.direction == 'vertical' ? innerTranslate + 'px' : '',\n\t\t\t\t\t\tx: slider.params.direction == 'horizontal' ? innerTranslate + 'px' : '',\n\t\t\t\t\t\tforce3D: true,\n\t\t\t\t\t\tbackfaceVisibility: 'hidden'\n\t\t\t\t\t});\n\n\t\t\t\t} catch (error) {\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t})\n\t\t.on('setTransition', function (speed) {\n\n\t\t\tfor (i = 0; i < slider.slides.length; i++) {\n\n\t\t\t\ttry {\n\n\t\t\t\t\tTweenMax.set(slider.slides[i], {\n\t\t\t\t\t\ttransition: speed + 'ms',\n\t\t\t\t\t});\n\n\t\t\t\t\tTweenMax.set(slider.slides[i].querySelector('.slider__bg'), {\n\t\t\t\t\t\ttransition: speed + 'ms',\n\t\t\t\t\t});\n\n\t\t\t\t} catch (error) {\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t});\n\n}\n","/* ======================================================================== */\n/* 62. setSliderTestimonialsTransitions */\n/* ======================================================================== */\nfunction setSliderTestimonialsTransitions(slider, direction, offset = 40, $text, $author, $line) {\n\n\tvar\n\t\ttl = new TimelineMax(),\n\t\ttextAlign = $text.css('text-align'),\n\t\toffsetXNextIn = 0,\n\t\toffsetXNextOut = 0,\n\t\toffsetYNextIn = 0,\n\t\toffsetYNextOut = 0,\n\t\toffsetXPrevIn = 0,\n\t\toffsetXPrevOut = 0,\n\t\toffsetYPrevIn = 0,\n\t\toffsetYPrevOut = 0,\n\n\t\tfromNextIn = 'start',\n\t\tfromNextOut = 'start',\n\t\tfromPrevIn = 'end',\n\t\tfromPrevOut = 'end';\n\n\n\tswitch (textAlign) {\n\t\tcase 'left':\n\t\t\t// text align left & slider horizontal\n\t\t\tif (direction == 'horizontal') {\n\n\t\t\t\toffsetXNextIn = offset;\n\t\t\t\toffsetXNextOut = offset * (-1);\n\t\t\t\toffsetXPrevIn = offset * (-1);\n\t\t\t\toffsetXPrevOut = offset;\n\n\t\t\t\tfromNextOut = 'start';\n\t\t\t\tfromNextIn = 'start';\n\t\t\t\tfromPrevOut = 'end';\n\t\t\t\tfromPrevIn = 'end';\n\n\t\t\t}\n\t\t\t// text align left & slider vertical\n\t\t\tif (direction == 'vertical') {\n\n\t\t\t\toffsetYNextIn = offset;\n\t\t\t\toffsetYNextOut = offset * (-1);\n\t\t\t\toffsetYPrevIn = offset * (-1);\n\t\t\t\toffsetYPrevOut = offset;\n\n\t\t\t\tfromNextOut = 'start';\n\t\t\t\tfromNextIn = 'end';\n\t\t\t\tfromPrevOut = 'end';\n\t\t\t\tfromPrevIn = 'start';\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'center':\n\t\t\t// text align center & slider horizontal\n\t\t\tif (direction == 'horizontal') {\n\n\t\t\t\toffsetXNextIn = offset;\n\t\t\t\toffsetXNextOut = offset * (-1);\n\t\t\t\toffsetXPrevIn = offset * (-1);\n\t\t\t\toffsetXPrevOut = offset;\n\n\t\t\t\tfromNextOut = 'start';\n\t\t\t\tfromNextIn = 'start';\n\t\t\t\tfromPrevOut = 'end';\n\t\t\t\tfromPrevIn = 'end';\n\n\t\t\t}\n\t\t\t// text align left & slider vertical\n\t\t\tif (direction == 'vertical') {\n\n\t\t\t\toffsetYNextIn = offset / 2;\n\t\t\t\toffsetYNextOut = offset * (-1) / 2;\n\t\t\t\toffsetYPrevIn = offset * (-1) / 2;\n\t\t\t\toffsetYPrevOut = offset / 2;\n\n\t\t\t\tfromNextOut = 'center';\n\t\t\t\tfromNextIn = 'center';\n\t\t\t\tfromPrevOut = 'center';\n\t\t\t\tfromPrevIn = 'center';\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'right':\n\t\t\t// text align right & slider horizontal\n\t\t\tif (direction == 'horizontal') {\n\n\t\t\t\toffsetXNextIn = offset * (-1);\n\t\t\t\toffsetXNextOut = offset;\n\t\t\t\toffsetXPrevIn = offset;\n\t\t\t\toffsetXPrevOut = offset * (-1);\n\n\t\t\t\tfromNextOut = 'end';\n\t\t\t\tfromNextIn = 'end';\n\t\t\t\tfromPrevOut = 'start';\n\t\t\t\tfromPrevIn = 'start';\n\n\t\t\t}\n\t\t\t// text align right & slider vertical\n\t\t\tif (direction == 'vertical') {\n\n\t\t\t\toffsetYNextIn = offset * (-1);\n\t\t\t\toffsetYNextOut = offset;\n\t\t\t\toffsetYPrevIn = offset;\n\t\t\t\toffsetYPrevOut = offset * (-1);\n\n\t\t\t\tfromNextOut = 'end';\n\t\t\t\tfromNextIn = 'start';\n\t\t\t\tfromPrevOut = 'start';\n\t\t\t\tfromPrevIn = 'end';\n\t\t\t}\n\t\t\tbreak;\n\t}\n\n\tslider\n\t\t.on('slideNextTransitionStart', function () {\n\n\t\t\tvar\n\t\t\t\t$activeSlide = $(slider.slides[slider.activeIndex]),\n\t\t\t\t$activeText = $activeSlide.find($text),\n\t\t\t\t$activeAuthor = $activeSlide.find($author),\n\t\t\t\t$activeLine = $activeSlide.find($line);\n\n\t\t\ttl.clear();\n\n\t\t\t$text.each(function () {\n\n\t\t\t\ttl\n\t\t\t\t\t.to($line, 0.6, {\n\t\t\t\t\t\tease: Power3.easeInOut,\n\t\t\t\t\t\tscaleX: 0,\n\t\t\t\t\t\ttransformOrigin: 'right center'\n\t\t\t\t\t}, '0')\n\t\t\t\t\t.add(hideLines($(this), 0.6, 0.05, offsetYNextOut, Power3.easeOut), '0')\n\t\t\t\t\t.add(hideChars($author, 0.6, 0.3, Power3.easeInOut, offsetYNextIn, 0, fromNextIn), '0')\n\t\t\t\t\t.add(hideLines($(this), 0, 0, offsetYNextIn, Power3.easeInOut))\n\t\t\t\t\t.add(hideChars($author, 0, 0, Power3.easeInOut, offsetYNextOut, 0));\n\n\t\t\t});\n\n\t\t\ttl\n\t\t\t\t.add(animateLines($activeText, 1.2, 0.1, Power3.easeOut, fromNextIn))\n\t\t\t\t.add(animateChars($activeAuthor, 1.2, 0.3, Power3.easeOut, fromNextIn), '-=1.2')\n\t\t\t\t.add(animateHeadline($activeLine, 0.6, Power3.easeInOut, 'left center'), '-=1.2');\n\n\t\t})\n\t\t.on('slidePrevTransitionStart', function () {\n\n\t\t\tvar\n\t\t\t\t$activeSlide = $(slider.slides[slider.activeIndex]),\n\t\t\t\t$activeText = $activeSlide.find($text),\n\t\t\t\t$activeAuthor = $activeSlide.find($author),\n\t\t\t\t$activeLine = $activeSlide.find($line);\n\n\t\t\ttl.clear();\n\n\t\t\t$text.each(function () {\n\n\t\t\t\ttl\n\t\t\t\t\t.to($line, 0.6, {\n\t\t\t\t\t\tease: Power3.easeInOut,\n\t\t\t\t\t\tscaleX: 0,\n\t\t\t\t\t\ttransformOrigin: 'left center'\n\t\t\t\t\t}, '0')\n\t\t\t\t\t.add(hideLines($(this), 0.6, 0.05, offsetYPrevOut, Power3.easeOut, true), '0')\n\t\t\t\t\t.add(hideChars($author, 0.6, 0.3, Power3.easeInOut, offsetYNextOut, 0, fromPrevIn), '0')\n\t\t\t\t\t.add(hideLines($(this), 0, 0, offsetYPrevIn, Power3.easeInOut))\n\t\t\t\t\t.add(hideChars($author, 0, 0, Power3.easeInOut, offsetYPrevOut, 0));\n\n\t\t\t});\n\n\t\t\ttl\n\t\t\t\t.add(animateLines($activeText, 1.2, 0.1, Power3.easeOut, fromPrevIn))\n\t\t\t\t.add(animateChars($activeAuthor, 1.2, 0.3, Power3.easeOut, fromPrevIn), '-=1.2')\n\t\t\t\t.add(animateHeadline($activeLine, 0.6, Power3.easeInOut, 'right center'), '-=1.2');\n\n\t\t});\n\n\n}\n","/* ======================================================================== */\n/* 63. setSliderTextTransitions */\n/* ======================================================================== */\nfunction setSliderTextTransitions(sliderContent, direction, offset = 40, $heading, $subheading, $description, $link) {\n\n\tvar\n\t\ttl = new TimelineMax(),\n\t\ttextAlign = $heading.css('text-align'),\n\t\tsliderSpeed = sliderContent.params.speed / 1000,\n\t\toffsetXNextIn = 0,\n\t\toffsetXNextOut = 0,\n\t\toffsetYNextIn = 0,\n\t\toffsetYNextOut = 0,\n\t\toffsetXPrevIn = 0,\n\t\toffsetXPrevOut = 0,\n\t\toffsetYPrevIn = 0,\n\t\toffsetYPrevOut = 0,\n\n\t\tfromNextIn = 'start',\n\t\tfromNextOut = 'start',\n\t\tfromPrevIn = 'end',\n\t\tfromPrevOut = 'end';\n\n\n\tswitch (textAlign) {\n\t\tcase 'left':\n\t\t\t// text align left & slider horizontal\n\t\t\tif (direction == 'horizontal') {\n\n\t\t\t\toffsetXNextIn = offset;\n\t\t\t\toffsetXNextOut = offset * (-1);\n\t\t\t\toffsetXPrevIn = offset * (-1);\n\t\t\t\toffsetXPrevOut = offset;\n\n\t\t\t\tfromNextOut = 'start';\n\t\t\t\tfromNextIn = 'start';\n\t\t\t\tfromPrevOut = 'end';\n\t\t\t\tfromPrevIn = 'end';\n\n\t\t\t}\n\t\t\t// text align left & slider vertical\n\t\t\tif (direction == 'vertical') {\n\n\t\t\t\toffsetYNextIn = offset;\n\t\t\t\toffsetYNextOut = offset * (-1);\n\t\t\t\toffsetYPrevIn = offset * (-1);\n\t\t\t\toffsetYPrevOut = offset;\n\n\t\t\t\tfromNextOut = 'start';\n\t\t\t\tfromNextIn = 'end';\n\t\t\t\tfromPrevOut = 'end';\n\t\t\t\tfromPrevIn = 'start';\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'center':\n\t\t\t// text align center & slider horizontal\n\t\t\tif (direction == 'horizontal') {\n\n\t\t\t\toffsetXNextIn = offset;\n\t\t\t\toffsetXNextOut = offset * (-1);\n\t\t\t\toffsetXPrevIn = offset * (-1);\n\t\t\t\toffsetXPrevOut = offset;\n\n\t\t\t\tfromNextOut = 'start';\n\t\t\t\tfromNextIn = 'start';\n\t\t\t\tfromPrevOut = 'end';\n\t\t\t\tfromPrevIn = 'end';\n\n\t\t\t}\n\t\t\t// text align left & slider vertical\n\t\t\tif (direction == 'vertical') {\n\n\t\t\t\toffsetYNextIn = offset / 2;\n\t\t\t\toffsetYNextOut = offset * (-1) / 2;\n\t\t\t\toffsetYPrevIn = offset * (-1) / 2;\n\t\t\t\toffsetYPrevOut = offset / 2;\n\n\t\t\t\tfromNextOut = 'center';\n\t\t\t\tfromNextIn = 'center';\n\t\t\t\tfromPrevOut = 'center';\n\t\t\t\tfromPrevIn = 'center';\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'right':\n\t\t\t// text align right & slider horizontal\n\t\t\tif (direction == 'horizontal') {\n\n\t\t\t\toffsetXNextIn = offset * (-1);\n\t\t\t\toffsetXNextOut = offset;\n\t\t\t\toffsetXPrevIn = offset;\n\t\t\t\toffsetXPrevOut = offset * (-1);\n\n\t\t\t\tfromNextOut = 'end';\n\t\t\t\tfromNextIn = 'end';\n\t\t\t\tfromPrevOut = 'start';\n\t\t\t\tfromPrevIn = 'start';\n\n\t\t\t}\n\t\t\t// text align right & slider vertical\n\t\t\tif (direction == 'vertical') {\n\n\t\t\t\toffsetYNextIn = offset * (-1);\n\t\t\t\toffsetYNextOut = offset;\n\t\t\t\toffsetYPrevIn = offset;\n\t\t\t\toffsetYPrevOut = offset * (-1);\n\n\t\t\t\tfromNextOut = 'end';\n\t\t\t\tfromNextIn = 'start';\n\t\t\t\tfromPrevOut = 'start';\n\t\t\t\tfromPrevIn = 'end';\n\t\t\t}\n\t\t\tbreak;\n\t}\n\n\tsliderContent.on('slideChange', function () {\n\n\t\tif (sliderContent.realIndex > sliderContent.previousIndex) {\n\t\t\tslideChangeTransition('next');\n\t\t}\n\n\t\tif (sliderContent.realIndex < sliderContent.previousIndex) {\n\t\t\tslideChangeTransition('prev');\n\t\t}\n\n\t});\n\n\tfunction slideChangeTransition(direction = 'next') {\n\n\t\tvar\n\t\t\tdirectionOutX,\n\t\t\tdirectionOutY,\n\t\t\tdirectionOutFrom,\n\t\t\tdirectionInX,\n\t\t\tdirectionInY,\n\t\t\tdirectionInFrom,\n\t\t\t$activeSlide = $(sliderContent.slides[sliderContent.realIndex]),\n\t\t\t$activeHeading = $activeSlide.find($heading),\n\t\t\t$activeSubheading = $activeSlide.find($subheading),\n\t\t\t$activeDescription = $activeSlide.find($description),\n\t\t\t$activeLink = $activeSlide.find($link);\n\n\t\tif (direction === 'next') {\n\n\t\t\t// next out\n\t\t\tdirectionOutX = offsetXNextOut;\n\t\t\tdirectionOutY = offsetYNextOut;\n\t\t\tdirectionOutFrom = fromNextOut;\n\n\t\t\t// next in\n\t\t\tdirectionInX = offsetXNextIn;\n\t\t\tdirectionInY = offsetYNextIn;\n\t\t\tdirectionInFrom = fromNextIn;\n\n\t\t}\n\n\t\tif (direction === 'prev') {\n\n\t\t\t// prev out\n\t\t\tdirectionOutX = offsetXPrevOut;\n\t\t\tdirectionOutY = offsetYPrevOut;\n\t\t\tdirectionOutFrom = fromPrevOut;\n\n\t\t\t// prev in\n\t\t\tdirectionInX = offsetXPrevIn;\n\t\t\tdirectionInY = offsetYPrevIn;\n\t\t\tdirectionInFrom = fromPrevIn;\n\n\t\t}\n\n\t\ttl.clear();\n\n\t\t$heading.each(function () {\n\n\t\t\ttl\n\t\t\t\t.add(hideChars($(this), sliderSpeed / 2, 0.3, Power3.easeInOut, directionOutX, directionOutY, directionOutFrom), '0')\n\t\t\t\t.add(hideChars($subheading, sliderSpeed / 2, 0.3, Power3.easeInOut, directionOutX / 1.5, directionOutY / 1.5, directionOutFrom), '0')\n\t\t\t\t.add(hideLines($description, sliderSpeed / 2, 0.04, directionOutY || directionOutX, Power3.easeOut), '0')\n\t\t\t\t.add(hideButton(), '-=' + sliderSpeed / 2)\n\t\t\t\t.add(hideChars($(this), 0, 0, Power3.easeInOut, directionInX, directionInY))\n\t\t\t\t.add(hideChars($subheading, 0, 0, Power3.easeInOut, directionInX / 2, directionInY / 2))\n\t\t\t\t.add(hideLines($activeDescription, 0, 0, directionInY || directionInX))\n\t\t\t\t.add(setButton());\n\n\t\t});\n\n\t\ttl\n\t\t\t.add(animateChars($activeHeading, sliderSpeed, 0.3, Power3.easeOut, directionInFrom))\n\t\t\t.add(animateLines($activeDescription, sliderSpeed, 0.04, Power3.easeOut, directionInFrom), '-=' + sliderSpeed)\n\t\t\t.add(animateChars($activeSubheading, sliderSpeed, 0.3, Power3.easeOut, directionInFrom), '-=' + sliderSpeed)\n\t\t\t.add(showButton($activeLink), '-=' + sliderSpeed / 4 * 3);\n\n\n\t}\n\n\tfunction hideButton() {\n\n\t\tvar tl = new TimelineMax();\n\n\t\tif (typeof $link != 'undefined' && $link.length) {\n\t\t\ttl.to($link, sliderSpeed / 2, {\n\t\t\t\ty: (offsetYNextOut || offsetXNextOut) * (-1) / 2 + 'px',\n\t\t\t\tautoAlpha: 0\n\t\t\t});\n\t\t}\n\n\t\treturn tl;\n\n\t}\n\n\tfunction showButton($activeLink) {\n\n\t\tvar tl = new TimelineMax();\n\n\t\tif (typeof $activeLink != 'undefined' && $activeLink.length) {\n\t\t\ttl.to($activeLink, sliderSpeed / 2, {\n\t\t\t\ty: '0px',\n\t\t\t\tautoAlpha: 1\n\t\t\t});\n\t\t}\n\n\t\treturn tl;\n\n\t}\n\n\tfunction setButton() {\n\n\t\tvar tl = new TimelineMax();\n\n\t\tif (typeof $link != 'undefined' && $link.length) {\n\t\t\ttl.set($link, {\n\t\t\t\ty: (offsetYNextIn || offsetXNextIn) / 2 + 'px',\n\t\t\t\tautoAlpha: 0\n\t\t\t});\n\t\t}\n\n\t\treturn tl;\n\n\t}\n\n}\n","/* ======================================================================== */\n/* 64. sliderFullscreen */\n/* ======================================================================== */\nvar SliderFullScreen = function ($slider) {\n\n\tif (!$slider.length) {\n\t\treturn;\n\t}\n\n\tvar\n\t\t$heading = $slider.find('.slider__heading'),\n\t\t$subheading = $slider.find('.slider__subheading'),\n\t\t$description = $slider.find('.slider__text'),\n\t\t$link = $slider.find('.slider-fullscreen__wrapper-button'),\n\t\t$sliderImg = $slider.find('.js-slider-fullscreen__images'),\n\t\t$sliderContent = $slider.find('.js-slider-fullscreen__content'),\n\t\t$inner = $slider.find('.slider__images-slide-inner'),\n\t\tsliderSpeed = $sliderImg.data('speed') || 1200,\n\t\teffectIntensity = $sliderImg.data('transition-effect-intensity') || 0,\n\t\t$dots = $slider.find('.js-slider-dots'),\n\t\t$counterCurrent = $slider.find('.js-slider-fullscreen__counter-current'),\n\t\t$counterTotal = $slider.find('.js-slider-fullscreen__counter-total'),\n\t\tcounterZeros = $sliderImg.data('counter-zeros');\n\n\n\tvar sliderImg = new Swiper($sliderImg, {\n\t\tdirection: $sliderImg.data('direction') || 'vertical',\n\t\tpreloadImages: true,\n\t\tupdateOnImagesReady: true,\n\t\tslidesPerView: 1,\n\t\tslidesPerGroup: 1, // compatibility with Swiper 5.x\n\t\tlazy: {\n\t\t\tloadPrevNextAmount: 6,\n\t\t\tloadPrevNext: true,\n\t\t\tloadOnTransitionStart: true\n\t\t},\n\t\tspeed: sliderSpeed,\n\t\tallowTouchMove: $sliderImg.data('touch-enabled') || false,\n\t\tsimulateTouch: false,\n\t\ttouchRatio: $sliderImg.data('direction') == 'vertical' ? 2.5 : 1.1,\n\t\twatchSlidesProgress: true,\n\t\tkeyboard: {\n\t\t\tenabled: $sliderImg.data('keyboard-enabled') || false\n\t\t},\n\t});\n\n\tvar sliderContent = new Swiper($sliderContent, {\n\t\tdirection: $sliderImg.data('direction') || 'vertical',\n\t\tautoHeight: true,\n\t\teffect: 'fade',\n\t\tvirtualTranslate: true,\n\t\tslidesPerView: 1,\n\t\tslidesPerGroup: 1, // compatibility with Swiper 5.x\n\t\tfadeEffect: {\n\t\t\tcrossFade: false\n\t\t},\n\t\tautoplay: {\n\t\t\tdisableOnInteraction: false,\n\t\t\tenabled: $sliderImg.data('autoplay-enabled') || false,\n\t\t\tdelay: $sliderImg.data('autoplay-delay') || 6000,\n\t\t},\n\t\tmousewheel: $sliderImg.data('mousewheel-enabled') ? {\n\t\t\teventsTarged: $sliderImg.data('mousewheel-target') || '.page-wrapper',\n\t\t\treleaseOnEdges: true,\n\t\t} : false,\n\t\tnavigation: {\n\t\t\tnextEl: '.js-slider-fullscreen__next',\n\t\t\tprevEl: '.js-slider-fullscreen__prev',\n\t\t},\n\t\tspeed: $sliderImg.data('speed') || 1200,\n\t\tallowTouchMove: $sliderImg.data('touch-enabled') || false,\n\t\tsimulateTouch: false,\n\t\ttouchRatio: $sliderImg.data('direction') == 'vertical' ? 2.5 : 1.1,\n\t\tpagination: {\n\t\t\tel: '.js-slider-dots',\n\t\t\ttype: 'bullets',\n\t\t\tbulletElement: 'div',\n\t\t\tclickable: true,\n\t\t\tbulletClass: 'slider__dot',\n\t\t\tbulletActiveClass: 'slider__dot_active'\n\t\t},\n\t});\n\n\tTweenMax.set($inner, {\n\t\ttransitionDelay: sliderSpeed + 'ms' || '1200ms'\n\t});\n\n\trenderSliderDots(sliderContent, $dots);\n\trenderSliderCounter(\n\t\tsliderContent,\n\t\t$counterCurrent,\n\t\t'',\n\t\t$counterTotal,\n\t\tsliderImg,\n\t\tcounterZeros\n\t);\n\n\tsliderImg.on('slideChange', function () {\n\t\tsliderContent.slideTo(sliderImg.realIndex);\n\t});\n\n\tsetSliderTextTransitions(sliderContent, sliderImg.params.direction, 25, $heading, $subheading, $description, $link);\n\n\tif ($sliderImg.data('transition-effect') == 'enter_leave') {\n\n\t\tsetSliderOverlapEffect(sliderImg, effectIntensity);\n\n\t}\n\n\tif ($sliderImg.data('transition-effect') == 'distortion') {\n\n\t\tvar aspectRatio = parseFloat($slider.find('[data-aspect-ratio]').data('aspect-ratio')) || 1.7777;\n\n\t\tsliderImg.params.preloadImages = false;\n\t\tsliderImg.params.lazy = false;\n\t\tsetSliderDistortionEffect(sliderImg, $sliderImg, effectIntensity, aspectRatio);\n\n\t}\n\n\treturn sliderContent;\n\n}\n","/* ======================================================================== */\n/* 65. SliderLetters */\n/* ======================================================================== */\nvar SliderLetters = function ($scope) {\n\n\tvar\n\t\t$SVGLetters = $('.vector-letters'),\n\t\t$letters = $SVGLetters.find('.vector-letter'),\n\t\t$menuItems = $scope.find('.menu-overlay a'),\n\t\ttl = new TimelineMax();\n\n\tif (!$SVGLetters.length || !$letters.length) {\n\t\treturn;\n\t}\n\n\thoverMenuitems();\n\n\tfunction hoverMenuitems() {\n\n\t\t$menuItems.each(function () {\n\n\t\t\tvar\n\t\t\t\t$current = $(this),\n\t\t\t\tcurrentLetter = $current.data('letter'),\n\t\t\t\ttargetLetter = $letters.filter('[data-vector-id=\"' + currentLetter + '\"]');\n\n\t\t\t$current\n\t\t\t\t.on('mouseenter touchstart', function () {\n\t\t\t\t\ttl\n\t\t\t\t\t\t.clear()\n\t\t\t\t\t\t.to($letters[0], 0.6, {\n\t\t\t\t\t\t\tmorphSVG: targetLetter,\n\t\t\t\t\t\t\tease: Expo.easeInOut\n\t\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t});\n\n\t}\n\n}\n","/* ======================================================================== */\n/* 66. SliderImages */\n/* ======================================================================== */\nvar SliderImages = function ($scope) {\n\n\tvar $slider = $scope.find('.js-slider-images');\n\n\tif (!$slider.length) {\n\t\treturn;\n\t}\n\n\t$slider.each(function () {\n\n\t\tvar\n\t\t\t$current = $(this),\n\t\t\t$sliderCaptions = $scope.find('.js-slider-images__captions'),\n\t\t\tsliderCaptions,\n\t\t\tcounterZeros = $current.data('counter-zeros'),\n\t\t\tlg = window.elementorFrontend ? window.elementorFrontend.config.breakpoints.lg - 1 : 1024,\n\t\t\tmd = window.elementorFrontend ? window.elementorFrontend.config.breakpoints.md - 1 : 767;\n\n\t\tvar slider = new Swiper($current, {\n\t\t\tautoHeight: $current.data('auto-height') || true,\n\t\t\tspeed: $current.data('speed') || 1200,\n\t\t\tpreloadImages: false,\n\t\t\tlazy: {\n\t\t\t\tloadPrevNext: true,\n\t\t\t\tloadPrevNextAmount: 3,\n\t\t\t\tloadOnTransitionStart: true\n\t\t\t},\n\t\t\ttouchRatio: $current.data('touch-ratio') || 3,\n\t\t\tobserver: true,\n\t\t\twatchSlidesProgress: true,\n\t\t\twatchSlidesVisibility: true,\n\t\t\tcenteredSlides: $current.data('centered-slides') || false,\n\t\t\tslidesPerView: $current.data('slides-per-view') || 1.5,\n\t\t\tslidesPerGroup: 1, // compatibility with Swiper 5.x\n\t\t\tautoplay: {\n\t\t\t\tdisableOnInteraction: false,\n\t\t\t\tenabled: $current.data('autoplay-enabled') || false,\n\t\t\t\tdelay: $current.data('autoplay-delay') || 6000,\n\t\t\t},\n\t\t\tspaceBetween: $current.data('space-between') || 60,\n\t\t\tpagination: {\n\t\t\t\tel: '.js-slider-images__dots',\n\t\t\t\ttype: 'bullets',\n\t\t\t\tbulletElement: 'div',\n\t\t\t\tclickable: true,\n\t\t\t\tbulletClass: 'slider__dot',\n\t\t\t\tbulletActiveClass: 'slider__dot_active'\n\t\t\t},\n\t\t\tnavigation: {\n\t\t\t\tnextEl: '.js-slider-images__next',\n\t\t\t\tprevEl: '.js-slider-images__prev',\n\t\t\t},\n\t\t\tbreakpointsInverse: true // compatibility with both Swiper 4.x and 5.x\n\t\t});\n\n\t\tslider.params.breakpoints = {\n\t\t\t0: {\n\t\t\t\tslidesPerView: $current.data('slides-per-view-mobile') || 1.16,\n\t\t\t\tspaceBetween: $current.data('space-between-mobile') || 10,\n\t\t\t\tcenteredSlides: $current.data('centered-slides-mobile') || true,\n\t\t\t},\n\t\t\t[md]: {\n\t\t\t\tslidesPerView: $current.data('slides-per-view-tablet') || 1.33,\n\t\t\t\tspaceBetween: $current.data('space-between-tablet') || 20,\n\t\t\t\tcenteredSlides: $current.data('centered-slides-tablet') || true,\n\t\t\t},\n\t\t\t[lg]: {\n\t\t\t\tcenteredSlides: $current.data('centered-slides') || false,\n\t\t\t\tslidesPerView: $current.data('slides-per-view') || 1.5,\n\t\t\t\tspaceBetween: $current.data('space-between') || 60,\n\t\t\t}\n\t\t};\n\n\t\tslider.update();\n\n\t\tif ($sliderCaptions.length) {\n\n\t\t\tsliderCaptions = new Swiper($sliderCaptions, {\n\t\t\t\tautoHeight: true,\n\t\t\t\tdirection: 'vertical',\n\t\t\t\tfadeEffect: {\n\t\t\t\t\tcrossFade: true\n\t\t\t\t},\n\t\t\t\tspeed: $current.data('speed') || 1200,\n\t\t\t\tallowTouchMove: false,\n\t\t\t\twatchSlidesProgress: true\n\t\t\t});\n\n\t\t}\n\n\t\tslider\n\t\t\t// update height after images are loaded\n\t\t\t.on('lazyImageReady', function () {\n\t\t\t\tslider.update();\n\t\t\t})\n\t\t\t// zoom images effect\n\t\t\t.on('touchStart', function () {\n\t\t\t\t$slider.addClass('slider-images_touched');\n\t\t\t})\n\t\t\t.on('touchEnd', function () {\n\t\t\t\t$slider.removeClass('slider-images_touched');\n\t\t\t});\n\n\t\t// cursor follower position adjustment\n\t\tif (typeof window.InteractiveCursor !== 'undefined') {\n\t\t\tslider.on('touchMove', function (e) {\n\n\t\t\t\twindow.InteractiveCursor.mouseX = e.clientX;\n\t\t\t\twindow.InteractiveCursor.mouseY = e.clientY;\n\t\t\t});\n\t\t}\n\n\t\t$slider.imagesLoaded().progress({\n\t\t\tbackground: true\n\t\t}, function (e) {\n\t\t\tsetTimeout(function () {\n\t\t\t\tslider.update();\n\t\t\t}, 300);\n\t\t});\n\n\t\trenderSliderDots(slider, $scope.find('.js-slider-images__dots'));\n\t\trenderSliderCounter(\n\t\t\tslider,\n\t\t\t$scope.find('.js-slider-images__counter-current'),\n\t\t\t'',\n\t\t\t$scope.find('.js-slider-images__counter-total'),\n\t\t\tsliderCaptions,\n\t\t\tcounterZeros\n\t\t);\n\n\t});\n\n}\n","/* ======================================================================== */\n/* 67. SliderProjects */\n/* ======================================================================== */\nvar SliderProjects = function ($scope) {\n\n\tvar $slider = $scope.find('.js-slider-projects');\n\n\tif (!$slider.length) {\n\t\treturn;\n\t}\n\n\t$slider.each(function () {\n\n\t\tvar\n\t\t\t$current = $(this),\n\t\t\tcounterZeros = $current.data('counter-zeros'),\n\t\t\tlg = window.elementorFrontend ? window.elementorFrontend.config.breakpoints.lg - 1 : 1024,\n\t\t\tmd = window.elementorFrontend ? window.elementorFrontend.config.breakpoints.md - 1 : 767;\n\n\t\tvar slider = new Swiper($current, {\n\t\t\tautoHeight: $current.data('auto-height') || true,\n\t\t\tspeed: $current.data('speed') || 1200,\n\t\t\tpreloadImages: false,\n\t\t\tlazy: {\n\t\t\t\tloadPrevNext: true,\n\t\t\t\tloadOnTransitionStart: true\n\t\t\t},\n\t\t\ttouchRatio: $current.data('touch-ratio') || 3,\n\t\t\tobserver: true,\n\t\t\twatchSlidesProgress: true,\n\t\t\twatchSlidesVisibility: true,\n\t\t\tcenteredSlides: $current.data('centered-slides') || false,\n\t\t\tslidesPerView: $current.data('slides-per-view') || 4,\n\t\t\tslidesPerGroup: 1, // compatibility with Swiper 5.x\n\t\t\tautoplay: {\n\t\t\t\tdisableOnInteraction: false,\n\t\t\t\tenabled: $current.data('autoplay-enabled') || false,\n\t\t\t\tdelay: $current.data('autoplay-delay') || 6000,\n\t\t\t},\n\t\t\tspaceBetween: $current.data('space-between') || 0,\n\t\t\tpagination: {\n\t\t\t\tel: '.js-slider-projects__dots',\n\t\t\t\ttype: 'bullets',\n\t\t\t\tbulletElement: 'div',\n\t\t\t\tclickable: true,\n\t\t\t\tbulletClass: 'slider__dot',\n\t\t\t\tbulletActiveClass: 'slider__dot_active'\n\t\t\t},\n\t\t\tnavigation: {\n\t\t\t\tnextEl: '.js-slider-projects__next',\n\t\t\t\tprevEl: '.js-slider-projects__prev',\n\t\t\t},\n\t\t\tbreakpointsInverse: true // compatibility with both Swiper 4.x and 5.x\n\t\t});\n\n\t\tslider.params.breakpoints = {\n\t\t\t0: {\n\t\t\t\tslidesPerView: $current.data('slides-per-view-mobile'),\n\t\t\t\tspaceBetween: $current.data('space-between-mobile'),\n\t\t\t\tcenteredSlides: $current.data('centered-slides-mobile'),\n\t\t\t},\n\t\t\t[md]: {\n\t\t\t\tslidesPerView: $current.data('slides-per-view-tablet'),\n\t\t\t\tspaceBetween: $current.data('space-between-tablet'),\n\t\t\t\tcenteredSlides: $current.data('centered-slides-tablet'),\n\t\t\t},\n\t\t\t[lg]: {\n\t\t\t\tcenteredSlides: $current.data('centered-slides') || false,\n\t\t\t\tslidesPerView: $current.data('slides-per-view') || 4,\n\t\t\t\tspaceBetween: $current.data('space-between') || 0,\n\t\t\t}\n\t\t};\n\n\t\tslider.update();\n\n\t\t// update height after images are loaded\n\t\tslider.on('lazyImageReady', function () {\n\t\t\tslider.update();\n\t\t});\n\n\t\t// cursor follower position adjustment\n\t\tif (typeof window.InteractiveCursor !== 'undefined') {\n\t\t\tslider.on('touchMove', function (e) {\n\n\t\t\t\twindow.InteractiveCursor.mouseX = e.clientX;\n\t\t\t\twindow.InteractiveCursor.mouseY = e.clientY;\n\t\t\t});\n\t\t}\n\n\t\t$slider.imagesLoaded().progress({\n\t\t\tbackground: true\n\t\t}, function (e) {\n\t\t\tsetTimeout(function () {\n\t\t\t\tslider.update();\n\t\t\t}, 300);\n\t\t});\n\n\t\trenderSliderDots(slider, $scope.find('.js-slider-projects__dots'));\n\t\trenderSliderCounter(\n\t\t\tslider,\n\t\t\t$scope.find('.js-slider-projects__counter-current'),\n\t\t\t'',\n\t\t\t$scope.find('.js-slider-projects__counter-total'),\n\t\t\t'',\n\t\t\tcounterZeros\n\t\t);\n\n\t});\n\n}\n","/* ======================================================================== */\n/* 68. sliderTestimonials */\n/* ======================================================================== */\nvar SliderTestimonials = function ($target) {\n\n\tif (!$target.length) {\n\t\treturn;\n\t}\n\n\tvar\n\t\t$footer = $target.parent().find('.js-slider-testimonials__footer'),\n\t\t$text = $target.find('.slider-testimonials__text'),\n\t\t$author = $target.find('.slider-testimonials__author'),\n\t\t$line = $target.find('.slider-testimonials__author-line'),\n\t\tcounterZeros = $target.data('counter-zeros');\n\n\tvar slider = new Swiper($target, {\n\t\teffect: 'fade',\n\t\tfadeEffect: {\n\t\t\tcrossFade: true\n\t\t},\n\t\tallowTouchMove: false,\n\t\tdirection: 'horizontal',\n\t\tautoHeight: true,\n\t\tspeed: $target.data('speed') || 1200,\n\t\tautoplay: {\n\t\t\tdisableOnInteraction: false,\n\t\t\tenabled: $target.data('autoplay-enabled') || false,\n\t\t\tdelay: $target.data('autoplay-delay') || 6000,\n\t\t},\n\t\tpagination: {\n\t\t\tel: '.js-slider-testimonials__dots',\n\t\t\ttype: 'bullets',\n\t\t\tbulletElement: 'div',\n\t\t\tclickable: true,\n\t\t\tbulletClass: 'slider__dot',\n\t\t\tbulletActiveClass: 'slider__dot_active'\n\t\t},\n\t\tnavigation: {\n\t\t\tnextEl: '.js-slider-testimonials__next',\n\t\t\tprevEl: '.js-slider-testimonials__prev',\n\t\t},\n\t});\n\n\trenderSliderDots(slider, $footer.find('.js-slider-testimonials__dots'));\n\trenderSliderCounter(\n\t\tslider,\n\t\t$footer.find('.js-slider-testimonials__counter-current'),\n\t\t'',\n\t\t$footer.find('.js-slider-testimonials__counter-total'),\n\t\t'',\n\t\tcounterZeros\n\t);\n\tsetSliderTestimonialsTransitions(slider, 'vertical', 20, $text, $author, $line);\n\n}\n","/* ======================================================================== */\n/* 69. animateChars */\n/* ======================================================================== */\nfunction animateChars($target, duration = 1.2, stagger = 0.3, ease = Power3.easeInOut, from) {\n\n\tvar\n\t\t$chars = $target.find('.split-text__char'),\n\t\ttl = new TimelineMax();\n\n\tif (!$chars.length || $target.hasClass('js-split-text_cancel-animation')) {\n\t\treturn tl;\n\t}\n\n\tvar textAlign = $target.css('text-align');\n\n\tif (!from) {\n\n\t\tswitch (textAlign) {\n\t\t\tcase 'left':\n\t\t\t\tfrom = 'start';\n\t\t\t\tbreak;\n\t\t\tcase 'center':\n\t\t\t\tfrom = 'center';\n\t\t\t\tbreak;\n\t\t\tcase 'right':\n\t\t\t\tfrom = 'end';\n\t\t\t\tbreak;\n\t\t}\n\n\t}\n\n\ttl.staggerTo($chars, duration, {\n\t\tx: '0px',\n\t\ty: '0px',\n\t\txPercent: 0,\n\t\tyPercent: 0,\n\t\tautoAlpha: 1,\n\t\tease: ease,\n\t\tstagger: distributeByPosition({\n\t\t\tamount: stagger,\n\t\t\tfrom: from\n\t\t})\n\t});\n\n\treturn tl;\n\n}\n","/* ======================================================================== */\n/* 70. animateHeadline */\n/* ======================================================================== */\nfunction animateHeadline($target, duration = 1.2, ease = Power3.easeInOut, origin) {\n\n\tvar\n\t\ttl = new TimelineMax();\n\n\tif (!$target.length) {\n\t\treturn tl;\n\t}\n\n\tvar textAlign = $target.css('text-align');\n\n\tif (!origin) {\n\n\t\tswitch (textAlign) {\n\t\t\tcase 'left':\n\t\t\t\torigin = 'left center';\n\t\t\t\tbreak;\n\t\t\tcase 'center':\n\t\t\t\torigin = 'center center';\n\t\t\t\tbreak;\n\t\t\tcase 'right':\n\t\t\t\torigin = 'right center';\n\t\t\t\tbreak;\n\t\t}\n\n\t}\n\n\ttl.to($target, duration, {\n\t\tscaleX: 1,\n\t\tscaleY: 1,\n\t\ttransformOrigin: origin,\n\t\tease: ease\n\t});\n\n\treturn tl;\n\n}\n","/* ======================================================================== */\n/* 71. animateLines */\n/* ======================================================================== */\nfunction animateLines($target, duration = 1.2, stagger = 0.02, ease = Power3.easeOut) {\n\n\tvar\n\t\ttl = new TimelineMax(),\n\t\t$lines = $target.find('.split-text__line');\n\n\tif (!$lines.length || $target.hasClass('js-split-text_cancel-animation')) {\n\t\treturn tl;\n\t}\n\n\ttl\n\t\t.staggerTo($lines, duration, {\n\t\t\ty: '0px',\n\t\t\tyPercent: 0,\n\t\t\tease: ease,\n\t\t\tautoAlpha: 1,\n\t\t}, stagger);\n\n\treturn tl;\n\n}\n","/* ======================================================================== */\n/* 72. distributeByPosition */\n/* ======================================================================== */\n/*\npass in an object with any of the following optional properties (just like the stagger special object):\n{\n amount: amount (in seconds) that should be distributed\n from: \"center\" | \"end\" | \"start\" | index value (integer)\n ease: any ease, like Power1.easeOut\n axis: \"x\" | \"y\" (or omit, and it'll be based on both the x and y positions)\n}\n*/\nfunction distributeByPosition(vars) {\n\tvar ease = vars.ease,\n\t\tfrom = vars.from || 0,\n\t\tbase = vars.base || 0,\n\t\taxis = vars.axis,\n\t\tratio = {\n\t\t\tcenter: 0.5,\n\t\t\tend: 1\n\t\t} [from] || 0,\n\t\tdistances;\n\treturn function (i, target, a) {\n\t\tvar l = a.length,\n\t\t\toriginX, originY, x, y, d, j, minX, maxX, minY, maxY, positions;\n\t\tif (!distances) {\n\t\t\tdistances = [];\n\t\t\tminX = minY = Infinity;\n\t\t\tmaxX = maxY = -minX;\n\t\t\tpositions = [];\n\t\t\tfor (j = 0; j < l; j++) {\n\t\t\t\td = a[j].getBoundingClientRect();\n\t\t\t\tx = (d.left + d.right) / 2; //based on the center of each element\n\t\t\t\ty = (d.top + d.bottom) / 2;\n\t\t\t\tif (x < minX) {\n\t\t\t\t\tminX = x;\n\t\t\t\t}\n\t\t\t\tif (x > maxX) {\n\t\t\t\t\tmaxX = x;\n\t\t\t\t}\n\t\t\t\tif (y < minY) {\n\t\t\t\t\tminY = y;\n\t\t\t\t}\n\t\t\t\tif (y > maxY) {\n\t\t\t\t\tmaxY = y;\n\t\t\t\t}\n\t\t\t\tpositions[j] = {\n\t\t\t\t\tx: x,\n\t\t\t\t\ty: y\n\t\t\t\t};\n\t\t\t}\n\t\t\toriginX = isNaN(from) ? minX + (maxX - minX) * ratio : positions[from].x || 0;\n\t\t\toriginY = isNaN(from) ? minY + (maxY - minY) * ratio : positions[from].y || 0;\n\t\t\tmaxX = 0;\n\t\t\tminX = Infinity;\n\t\t\tfor (j = 0; j < l; j++) {\n\t\t\t\tx = positions[j].x - originX;\n\t\t\t\ty = originY - positions[j].y;\n\t\t\t\tdistances[j] = d = !axis ? Math.sqrt(x * x + y * y) : Math.abs((axis === \"y\") ? y : x);\n\t\t\t\tif (d > maxX) {\n\t\t\t\t\tmaxX = d;\n\t\t\t\t}\n\t\t\t\tif (d < minX) {\n\t\t\t\t\tminX = d;\n\t\t\t\t}\n\t\t\t}\n\t\t\tdistances.max = maxX - minX;\n\t\t\tdistances.min = minX;\n\t\t\tdistances.v = l = vars.amount || (vars.each * l) || 0;\n\t\t\tdistances.b = (l < 0) ? base - l : base;\n\t\t}\n\t\tl = (distances[i] - distances.min) / distances.max;\n\t\treturn distances.b + (ease ? ease.getRatio(l) : l) * distances.v;\n\t};\n}\n","/* ======================================================================== */\n/* 73. doSplitText */\n/* ======================================================================== */\nfunction doSplitText($target = window.$document) {\n\n\treturn new Promise(function (resolve, reject) {\n\n\t\tvar\n\t\t\t$texts = $target.find('.js-split-text'),\n\t\t\t$content,\n\t\t\ttype;\n\n\t\tif (!$texts.length) {\n\t\t\tresolve(true);\n\t\t\treturn;\n\t\t}\n\n\t\t$texts.each(function () {\n\n\t\t\tvar $current = $(this);\n\n\t\t\ttype = $current.data('split-text-type');\n\t\t\t$content = $current;\n\n\t\t\tif ($current.children(':not(br)').length > 0) {\n\t\t\t\t$content = $current.find(' > *');\n\t\t\t}\n\n\t\t\tnew SplitText($content, {\n\t\t\t\ttype: type,\n\t\t\t\tlinesClass: 'split-text__line',\n\t\t\t\twordsClass: 'split-text__word',\n\t\t\t\tcharsClass: 'split-text__char',\n\t\t\t\treduceWhiteSpace: false,\n\t\t\t});\n\n\t\t\t$current.removeClass('js-split-text');\n\n\t\t});\n\n\t\tresolve(true);\n\n\t});\n\n}\n","/* ======================================================================== */\n/* 74. hideChars */\n/* ======================================================================== */\nfunction hideChars($target, duration = 1.2, stagger = 0.3, ease = Power3.easeInOut, x = 0, y = 100, from) {\n\n\tvar tl = new TimelineMax();\n\n\tif (typeof $target == 'undefined' || !$target.length) {\n\t\treturn tl;\n\t}\n\n\tvar\n\t\t$chars = $target.find('.split-text__char'),\n\t\ttextAlign = $target.css('text-align');\n\n\tif (!from) {\n\n\t\tswitch (textAlign) {\n\t\t\tcase 'left':\n\t\t\t\tfrom = 'start';\n\t\t\t\tbreak;\n\t\t\tcase 'center':\n\t\t\t\tfrom = 'center';\n\t\t\t\tbreak;\n\t\t\tcase 'right':\n\t\t\t\tfrom = 'end';\n\t\t\t\tbreak;\n\t\t}\n\n\t}\n\n\ttl.staggerTo($chars, duration, {\n\t\tx: x,\n\t\ty: y,\n\t\tautoAlpha: 0,\n\t\tease: ease,\n\t\tstagger: distributeByPosition({\n\t\t\tamount: stagger,\n\t\t\tfrom: from\n\t\t})\n\t});\n\n\treturn tl;\n\n}\n","/* ======================================================================== */\n/* 75. hideLines */\n/* ======================================================================== */\nfunction hideLines($target, duration = 0.6, stagger = 0.02, offset = '-100%', ease = Power3.easeInOut, reverse) {\n\n\tvar\n\t\ttl = new TimelineMax(),\n\t\t$lines = $target.find('.split-text__line');\n\n\tif (reverse) {\n\t\t$lines = $lines.get().reverse();\n\t}\n\n\tif ($lines.length) {\n\n\t\ttl.staggerTo($lines, duration, {\n\t\t\ty: offset,\n\t\t\tautoAlpha: 0,\n\t\t\tease: ease\n\t\t}, stagger);\n\n\t};\n\n\treturn tl;\n\n}\n","/* ======================================================================== */\n/* 76. hideWords */\n/* ======================================================================== */\nfunction hideWords($target, duration = 0.6, stagger = 0.02, offset = -30, reverse, masterStagger, direction = 'x') {\n\n\tvar masterTL = new TimelineMax();\n\n\tif ($target.length) {\n\n\t\t$target.each(function () {\n\n\t\t\tvar\n\t\t\t\ttl = new TimelineMax(),\n\t\t\t\t$chars = $(this).find('.split-chars__char'),\n\t\t\t\toptions = {};\n\n\t\t\tif (reverse) {\n\t\t\t\t$chars = $chars.get().reverse();\n\t\t\t}\n\n\t\t\tif (!masterStagger) {\n\t\t\t\tmasterStagger = '-=' + duration;\n\t\t\t}\n\n\t\t\tif (direction == 'x') {\n\t\t\t\toptions = {\n\t\t\t\t\tx: offset,\n\t\t\t\t\tautoAlpha: 0\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\toptions = {\n\t\t\t\t\ty: offset,\n\t\t\t\t\tautoAlpha: 0\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttl.staggerTo($chars, duration, options, stagger);\n\n\t\t\tmasterTL.add(tl, masterStagger);\n\t\t});\n\n\t};\n\n\treturn masterTL;\n\n}\n","/* ======================================================================== */\n/* 77. hideWordsVertical */\n/* ======================================================================== */\nfunction hideWordsVertical($target, duration = 0.6, stagger = 0.02, offset = -30, reverse, masterStagger) {\n\n\tvar masterTL = new TimelineMax();\n\n\tif ($target.length) {\n\n\t\t$target.each(function () {\n\n\t\t\tvar\n\t\t\t\ttl = new TimelineMax(),\n\t\t\t\t$chars = $(this).find('.split-chars__char');\n\n\t\t\tif (reverse) {\n\t\t\t\t$chars = $chars.get().reverse();\n\t\t\t}\n\n\t\t\tif (!masterStagger) {\n\t\t\t\tmasterStagger = '-=' + duration;\n\t\t\t}\n\n\t\t\ttl.staggerTo($chars, duration, {\n\t\t\t\ty: offset,\n\t\t\t\tautoAlpha: 0\n\t\t\t}, stagger);\n\n\t\t\tmasterTL.add(tl, masterStagger);\n\t\t});\n\n\t};\n\n\treturn masterTL;\n\n}\n","/* ======================================================================== */\n/* 78. setChars */\n/* ======================================================================== */\nfunction setChars($scope = window.$document, x = '50', y = 0, from) {\n\n\treturn new Promise(function (resolve, reject) {\n\n\t\tvar $target = $scope.find('.split-text[data-split-text-set=\"chars\"]');\n\n\t\tif (!$target.length) {\n\t\t\tresolve(true);\n\t\t\treturn;\n\t\t}\n\n\t\tTweenMax.set($target, {\n\t\t\tclearProps: 'all'\n\t\t});\n\n\t\t$target.each(function () {\n\n\t\t\tvar\n\t\t\t\t$current = $(this),\n\t\t\t\t$lines = $current.find('.split-text__line'),\n\t\t\t\ttextAlign = $current.css('text-align');\n\n\t\t\tif (!from) {\n\n\t\t\t\tswitch (textAlign) {\n\t\t\t\t\tcase 'left':\n\t\t\t\t\t\tsetFromLeft($lines);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'center':\n\t\t\t\t\t\tsetFromCenter($lines);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'right':\n\t\t\t\t\t\tsetFromRight($lines);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t});\n\n\t\tfunction setFromLeft($lines) {\n\n\t\t\tif (!$lines || !$lines.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar $chars = $lines.find('.split-text__char');\n\n\t\t\tTweenMax.set($chars, {\n\t\t\t\tx: x + 'px',\n\t\t\t\ty: y + 'px',\n\t\t\t\tautoAlpha: 0.01\n\t\t\t});\n\n\t\t\tresolve(true);\n\n\t\t}\n\n\t\tfunction setFromCenter($lines) {\n\n\t\t\tif (!$lines || !$lines.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$lines.each(function () {\n\n\t\t\t\tvar\n\t\t\t\t\t$currentLine = $(this),\n\t\t\t\t\t$wordsInCurrentLine = $currentLine.find('.split-text__word');\n\n\t\t\t\t// only 1 word in the current line\n\t\t\t\tif ($wordsInCurrentLine.length === 1) {\n\n\t\t\t\t\tvar\n\t\t\t\t\t\t$charsInWord = $wordsInCurrentLine.find('.split-text__char'),\n\t\t\t\t\t\thalfWord = Math.ceil($charsInWord.length / 2),\n\t\t\t\t\t\t$fistHalfWord = $charsInWord.slice(0, halfWord),\n\t\t\t\t\t\t$secondHalfWord = $charsInWord.slice(halfWord, $charsInWord.length);\n\n\t\t\t\t\tTweenMax.set($fistHalfWord, {\n\t\t\t\t\t\tx: x * (-1) + 'px',\n\t\t\t\t\t\ty: y * (-1) + 'px',\n\t\t\t\t\t\tautoAlpha: 0.01\n\t\t\t\t\t});\n\n\t\t\t\t\tTweenMax.set($secondHalfWord, {\n\t\t\t\t\t\tx: x + 'px',\n\t\t\t\t\t\ty: y + 'px',\n\t\t\t\t\t\tautoAlpha: 0.01\n\t\t\t\t\t});\n\n\t\t\t\t}\n\n\t\t\t\t// odd number of words in line\n\t\t\t\tif ($wordsInCurrentLine.length !== 1 && $wordsInCurrentLine.length % 2 !== 0) {\n\n\t\t\t\t\tvar\n\t\t\t\t\t\thalfLine = Math.ceil($wordsInCurrentLine.length / 2),\n\t\t\t\t\t\t$fistHalf = $wordsInCurrentLine.slice(0, halfLine),\n\t\t\t\t\t\t$secondHalf = $wordsInCurrentLine.slice(halfLine, $wordsInCurrentLine.length),\n\t\t\t\t\t\t$middleWord = $wordsInCurrentLine.eq(halfLine - 1),\n\t\t\t\t\t\t$charsInMiddleWord = $middleWord.find('.split-text__char'),\n\t\t\t\t\t\thalfLineMiddleWord = Math.ceil($charsInMiddleWord.length / 2),\n\t\t\t\t\t\t$fistHalfMiddleWord = $charsInMiddleWord.slice(0, halfLineMiddleWord),\n\t\t\t\t\t\t$secondHalfMiddleWord = $charsInMiddleWord.slice(halfLineMiddleWord, $charsInMiddleWord.length);\n\n\t\t\t\t\t// first half\n\t\t\t\t\t$fistHalf.each(function () {\n\n\t\t\t\t\t\tvar $charsInWord = $(this).find('.split-text__char');\n\n\t\t\t\t\t\tTweenMax.set($charsInWord, {\n\t\t\t\t\t\t\tx: x * (-1) + 'px',\n\t\t\t\t\t\t\ty: y * (-1) + 'px',\n\t\t\t\t\t\t\tautoAlpha: 0.01\n\t\t\t\t\t\t});\n\n\t\t\t\t\t});\n\n\t\t\t\t\t// second half\n\t\t\t\t\t$secondHalf.each(function () {\n\n\t\t\t\t\t\tvar $charsInWord = $(this).find('.split-text__char');\n\n\t\t\t\t\t\tTweenMax.set($charsInWord, {\n\t\t\t\t\t\t\tx: x + 'px',\n\t\t\t\t\t\t\ty: y + 'px',\n\t\t\t\t\t\t\tautoAlpha: 0.01\n\t\t\t\t\t\t});\n\n\t\t\t\t\t});\n\n\t\t\t\t\t// middle word first half\n\t\t\t\t\t$fistHalfMiddleWord.each(function () {\n\n\t\t\t\t\t\tvar $charsInWord = $(this);\n\t\t\t\t\t\tTweenMax.set($charsInWord, {\n\t\t\t\t\t\t\tx: x * (-1) + 'px',\n\t\t\t\t\t\t\ty: y * (-1) + 'px',\n\t\t\t\t\t\t\tautoAlpha: 0.01\n\t\t\t\t\t\t});\n\n\t\t\t\t\t});\n\n\t\t\t\t\t// middle word second half\n\t\t\t\t\t$secondHalfMiddleWord.each(function () {\n\n\t\t\t\t\t\tvar $charsInWord = $(this);\n\t\t\t\t\t\tTweenMax.set($charsInWord, {\n\t\t\t\t\t\t\tx: x + 'px',\n\t\t\t\t\t\t\ty: y + 'px',\n\t\t\t\t\t\t\tautoAlpha: 0.01\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// even number of words in line\n\t\t\t\tif ($wordsInCurrentLine.length !== 1 && $wordsInCurrentLine.length % 2 === 0) {\n\n\t\t\t\t\tvar\n\t\t\t\t\t\thalfLine = Math.ceil($wordsInCurrentLine.length / 2),\n\t\t\t\t\t\t$fistHalf = $wordsInCurrentLine.slice(0, halfLine),\n\t\t\t\t\t\t$secondHalf = $wordsInCurrentLine.slice(halfLine, $wordsInCurrentLine.length);\n\n\t\t\t\t\t// first half\n\t\t\t\t\t$fistHalf.each(function () {\n\n\t\t\t\t\t\tvar $charsInWord = $(this).find('.split-text__char');\n\n\t\t\t\t\t\tTweenMax.set($charsInWord, {\n\t\t\t\t\t\t\tx: x * (-1) + 'px',\n\t\t\t\t\t\t\ty: y * (-1) + 'px',\n\t\t\t\t\t\t\tautoAlpha: 0.01\n\t\t\t\t\t\t});\n\n\t\t\t\t\t});\n\n\t\t\t\t\t// second half\n\t\t\t\t\t$secondHalf.each(function () {\n\n\t\t\t\t\t\tvar $charsInWord = $(this).find('.split-text__char');\n\n\t\t\t\t\t\tTweenMax.set($charsInWord, {\n\t\t\t\t\t\t\tx: x + 'px',\n\t\t\t\t\t\t\ty: y + 'px',\n\t\t\t\t\t\t\tautoAlpha: 0.01\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\tresolve(true);\n\n\t\t}\n\n\t\tfunction setFromRight($lines) {\n\n\t\t\tif (!$lines || !$lines.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar $chars = $lines.find('.split-text__char');\n\n\t\t\tTweenMax.set($chars, {\n\t\t\t\tx: x * (-1) + 'px',\n\t\t\t\ty: y * (-1) + 'px',\n\t\t\t\tautoAlpha: 0.01\n\t\t\t});\n\n\t\t\tresolve(true);\n\n\t\t}\n\n\t});\n\n}\n","/* ======================================================================== */\n/* 79. setLines */\n/* ======================================================================== */\nfunction setLines($target = window.$document, offset = '100%') {\n\n\treturn new Promise(function (resolve, reject) {\n\n\t\tvar\n\t\t\ttl = new TimelineMax(),\n\t\t\t$lines = $target.find('.split-text[data-split-text-set=\"lines\"] .split-text__line');\n\n\t\tif (!$lines.length) {\n\t\t\tresolve(true);\n\t\t\treturn;\n\t\t}\n\n\t\ttl\n\t\t\t.set($lines, {\n\t\t\t\ty: offset,\n\t\t\t\tautoAlpha: 0\n\t\t\t})\n\t\t\t.add(function () {\n\t\t\t\tresolve(true);\n\t\t\t});\n\n\t});\n\n}\n","/* ======================================================================== */\n/* 80. debounce */\n/* ======================================================================== */\nfunction debounce(func, wait, immediate) {\n\n\tvar timeout;\n\n\treturn function () {\n\n\t\tvar\n\t\t\tcontext = this,\n\t\t\targs = arguments;\n\n\t\tvar later = function () {\n\n\t\t\ttimeout = null;\n\n\t\t\tif (!immediate) {\n\t\t\t\tfunc.apply(context, args)\n\t\t\t};\n\n\t\t};\n\n\t\tvar callNow = immediate && !timeout;\n\n\t\tclearTimeout(timeout);\n\n\t\ttimeout = setTimeout(later, wait);\n\n\t\tif (callNow) {\n\t\t\tfunc.apply(context, args)\n\t\t};\n\n\t};\n\n};\n","/* ======================================================================== */\n/* 81. fixMobileBarHeight */\n/* ======================================================================== */\nfunction fixMobileBarHeight() {\n\n\tvar vh;\n\n\t/**\n\t * Initial set\n\t */\n\tcreateStyleElement();\n\tsetVh();\n\n\tif (window.theme.mobileBarFix.update) {\n\t\t/**\n\t\t * Resize handling (with debounce)\n\t\t */\n\t\t$(window).on('resize', debounce(function () {\n\t\t\tsetVh();\n\t\t}, 250));\n\t}\n\n\t/**\n\t * 100vh elements height correction\n\t */\n\tfunction setVh() {\n\n\t\tvh = window.innerHeight * 0.01;\n\n\t\t$('#cassio-fix-bar').html(':root { --fix-bar-vh: ' + vh + 'px; }\\n');\n\n\t}\n\n\tfunction createStyleElement() {\n\n\t\tif (!$('#cassio-fix-bar').length) {\n\t\t\t$('head').append('');\n\t\t}\n\n\t}\n\n}\n","/* ======================================================================== */\n/* 82. fixScrollBar */\n/* ======================================================================== */\nfunction fixScrollBar() {\n\n\tvar\n\t\tfixClass = 'body_has-scrollbar';\n\n\t/**\n\t * Initial set\n\t */\n\tcreateStyleElement();\n\tcalculateScrollbar();\n\n\t/**\n\t * Resize handling (with debounce)\n\t */\n\t$window.on('resize', debounce(function () {\n\t\tcalculateScrollbar();\n\t}, 250));\n\n\t/**\n\t * Prevent page from jumping during scroll lock/unlock\n\t */\n\tfunction calculateScrollbar() {\n\n\t\tif (window.innerWidth > window.$body[0].clientWidth + 5) {\n\t\t\twindow.$body.addClass(fixClass);\n\t\t\t$('#cassio-fix-scroll').html(':root { --fix-scroll-bar-px: ' + (window.innerWidth - window.$body[0].clientWidth) + 'px; }');\n\t\t} else {\n\t\t\twindow.$body.removeClass(fixClass);\n\t\t}\n\n\n\t}\n\n\tfunction createStyleElement() {\n\n\t\tif (!$('#cassio-fix-scroll').length) {\n\t\t\t$('head').append('');\n\t\t}\n\n\t}\n\n}\n","/* ======================================================================== */\n/* 83. isAnchor */\n/* ======================================================================== */\nfunction checkIsAnchor($el) {\n\n\tvar link = $el.attr('href');\n\n\tif ($el.length && link.length && link !== '#') {\n\n\t\treturn true;\n\n\t}\n\n\treturn false;\n\n}\n","/* ======================================================================== */\n/* 84. syncAttributes */\n/* ======================================================================== */\nfunction syncAttributes($sourceElement, $targetElement) {\n\n\tif (!$sourceElement.length || !$targetElement.length) {\n\t\treturn;\n\t}\n\n\tvar sourceAttrs = $sourceElement.getAllAttributes();\n\n\t$targetElement.attr(sourceAttrs);\n\n}\n","/* ======================================================================== */\n/* 85. elementor */\n/* ======================================================================== */\n/**\n * Elementor Preview\n */\nwindow.$window.on('elementor/frontend/init', function () {\n\n\tif (typeof elementor !== 'undefined') {\n\n\t\telementorFrontend.hooks.addAction('frontend/element_ready/global', function ($scope) {\n\t\t\tdoSplitText($scope);\n\t\t\tsetLines();\n\t\t\tsetChars();\n\t\t\twindow.PagePreloader.finish();\n\t\t\twindow.$body.removeClass('cursor-progress');\n\t\t\tnew SectionMasthead(window.$document);\n\t\t\tinitComponents($scope);\n\t\t\twindow.SMController.update(true);\n\t\t\twindow.SMController.enabled(true);\n\t\t});\n\n\t}\n\n});\n"]}