{"version":3,"sources":["common.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 Body.js","PJAX/PJAX Update Head.js","PJAX/PJAX Update Nodes.js","PJAX/PJAX Update Trackers.js","PJAX/PJAX.js","buttonCircle/ButtonCircle.js","buttonCircles/ButtonCircles.js","figureAward/figureAward.js","counter/Counter.js","figurePortfolio/FigurePortfolioAnimation.js","figurePortfolio/FigurePortfolioHover.js","fontObserver/fontObserver.js","filter/Filter.js","gmap/gmap.js","form/Form.js","grid/grid.js","header/Header.js","lazy/lazyLoad.js","menuOverlay/MenuOverlay.js","menu/menu.js","preloader/preloader.js","scroll/createOSScene.js","scroll/getScrollTop.js","scroll/lockScroll.js","scroll/restoreScrollTop.js","scroll/scrollToVeryTop.js","scrollDown/ScrollDown.js","sectionAbout/sectionAbout.js","sectionAwards/sectionAwards.js","sectionContent/SectionContent.js","sectionFullscreenSlider/sectionFullscreenSlider.js","sectionMasthead/sectionMasthead.js","sectionNavProjects/sectionNavProjects.js","sectionPortfolio/SectionPortfolio.js","sectionServices/sectionServices.js","sectionTestimonials/sectionTestimonials.js","slider/renderSliderCounter.js","slider/renderSliderDots.js","slider/setSliderOverlapEffect.js","slider/setSliderTestimonialsTransitions.js","slider/setSliderTextTransitions.js","sliderFullscreen/sliderFullscreen.js","sliderImages/SliderImages.js","sliderHalfScreen/sliderHalfScreen.js","sliderProjects/SliderProjects.js","sliderLetters/SliderLetters.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/isAnchor.js","utilities/runOnHighPerformanceGPU.js","utilities/syncAttributes.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;AC5HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AChIA;AACA;AACA;AACA;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;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;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;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;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;ACxFA;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;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;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;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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;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;AC5FA;AACA;AACA;AACA;AACA;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;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACjWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;ACrIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;ACxEA;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;AACA;AACA;ACtCA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzDA;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;AACA;AACA;AACA;AACA;AACA;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;ACnOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;ACjOA;AACA;AACA;AACA;AACA;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;ACxCA;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;AACA;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":["window.$document = $(document);\nwindow.$window = $(window);\nwindow.$body = $('body');\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';\n\n/**\n * Try to use high performance GPU on dual-GPU systems\n */\nrunOnHighPerformanceGPU();\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\tflyingHeadingsStagger: 0.25,\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}\n\t}\n}\n\n/**\n * ScrollMagic Setup\n */\nwindow.SMController = new ScrollMagic.Controller();\nwindow.SMController.enabled(false);\nwindow.SMSceneTriggerHook = 0.85;\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});\n\n\tnew PJAX();\n\n});\n\n/**\n * Init Template Components\n */\nfunction initComponents($scope = window.$document) {\n\n\twindow.PageHeader = new Header();\n\n\tif (typeof window.PageMenu === 'undefined') {\n\t\twindow.PageMenu = new MenuOverlay();\n\t}\n\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 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\tnew Grid();\n\n\tfixMobileBarHeight();\n\tlazyLoad($scope);\n\t$('[data-art-parallax]').artParallax({\n\t\tScrollMagicController: window.SMController,\n\t\tSmoothScrollController: window.SB\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.25,\n\t\t\t$mastheadHeadingChars,\n\t\t\t$mastheadHeadingWords,\n\t\t\t$mastheadHeadingLines,\n\t\t\tcoordinates = [],\n\t\t\tsetMastheadHeadingChars,\n\t\t\tCSSProperties,\n\t\t\tfrom;\n\n\t\tif (!$mastheadHeading.length) {\n\n\t\t\ttl.set($nextContent, {\n\t\t\t\t\ty: '10vh',\n\t\t\t\t\tforce3D: true\n\t\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\tforce3D: true,\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\t\t\tstaggerAmount = window.theme.animations.flyingHeadingsStagger || 0.25;\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\tsetMastheadHeadingChars = new Promise(function (resolve, reject) {\n\n\t\t\tTweenMax.set([$nextContent, $mastheadHeadingChars, $mastheadHeadingWords, $mastheadHeadingLines], {\n\t\t\t\tclearProps: 'transform',\n\t\t\t\tonComplete: function () {\n\n\t\t\t\t\t$mastheadHeadingChars.each(function (index) {\n\n\t\t\t\t\t\tvar current = $(this).get(0).getBoundingClientRect();\n\n\t\t\t\t\t\tcoordinates[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});\n\n\t\t\t\t\tresolve(true);\n\n\t\t\t\t}\n\t\t\t});\n\n\t\t});\n\n\n\t\tsetMastheadHeadingChars.then(function () {\n\n\t\t\ttl\n\t\t\t\t.set($nextContent, {\n\t\t\t\t\ty: '10vh',\n\t\t\t\t\tforce3D: true\n\t\t\t\t})\n\t\t\t\t.staggerTo($clonnedHeadingChars, 1.2, {\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\tfontSize: CSSProperties['font-size'],\n\t\t\t\t\tlineHeight: CSSProperties['line-height'],\n\t\t\t\t\ttransform: 'none',\n\t\t\t\t\tautoAlpha: 1,\n\t\t\t\t\tcycle: {\n\t\t\t\t\t\tleft: function (index) {\n\n\t\t\t\t\t\t\tif (coordinates[index]) {\n\t\t\t\t\t\t\t\treturn coordinates[index].left + 'px';\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t$clonnedHeadingChars[index].remove();\n\t\t\t\t\t\t\t\treturn '0px';\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t},\n\t\t\t\t\t\ttop: function (index) {\n\n\t\t\t\t\t\t\tif (coordinates[index]) {\n\t\t\t\t\t\t\t\treturn coordinates[index].top + 'px';\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t$clonnedHeadingChars[index].remove();\n\t\t\t\t\t\t\t\treturn '0px';\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\tstagger: distributeByPosition({\n\t\t\t\t\t\tamount: staggerAmount,\n\t\t\t\t\t\tfrom: from\n\t\t\t\t\t}),\n\t\t\t\t\tease: Power3.easeInOut,\n\t\t\t\t\tforce3D: true\n\t\t\t\t})\n\t\t\t\t.set([$mastheadHeadingChars, $mastheadHeadingWords, $mastheadHeadingLines], {\n\t\t\t\t\tautoAlpha: 1,\n\t\t\t\t\tclearProps: 'transform'\n\t\t\t\t}, '+=0.6')\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\tif ($mastheadHeading.hasClass('section-masthead__heading-big')) {\n\t\t\t\t\t\ttl.to($clonnedHeadingChars, 1.2, {\n\t\t\t\t\t\t\topacity: .3\n\t\t\t\t\t\t}, '0.6');\n\t\t\t\t\t}\n\t\t\t\t}, '0.6')\n\t\t\t\t.to($clonnedHeadingChars, 1.2, {\n\t\t\t\t\tcolor: CSSProperties['color'],\n\t\t\t\t}, '0.6')\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\tforce3D: true,\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\tresolve(true);\n\t\t\t\t}, '0.9');\n\n\t\t});\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\tforce3D: true,\n\t\t\t\t\tease: Expo.easeInOut,\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.set($pageContent, {\n\t\t\t\t\ty: '10vh',\n\t\t\t\t\tforce3D: true\n\t\t\t\t}, '0')\n\t\t\t\t.to($pageContent, 2.4, {\n\t\t\t\t\ty: '0vh',\n\t\t\t\t\tforce3D: true,\n\t\t\t\t\tease: Expo.easeInOut,\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.0');\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\tif ($trigger.find('img').length) {\n\n\t\t\ttl.set($heading, {\n\t\t\t\tautoAlpha: 0\n\t\t\t});\n\n\t\t} else {\n\n\t\t\ttl.set($trigger, {\n\t\t\t\tautoAlpha: 0\n\t\t\t});\n\n\t\t}\n\n\t\ttl\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\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, 2.4, {\n\t\t\t\t\ty: '-5vh',\n\t\t\t\t\tforce3D: true,\n\t\t\t\t\tease: Expo.easeInOut,\n\t\t\t\t})\n\t\t\t])\n\t\t\t.add(function () {\n\t\t\t\tresolve(true);\n\t\t\t}, '-=1.2');\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\ttl\n\t\t\t.add(function () {\n\t\t\t\twindow.SMController.enabled(true);\n\t\t\t\twindow.SMController.update(true);\n\t\t\t\twindow.$pageHeader.removeClass('header_lock-submenus lockhover');\n\t\t\t\twindow.$pageHeader.attr('data-header-animation', '');\n\t\t\t})\n\t\t\t.add(function () {\n\t\t\t\tlockScroll(false);\n\t\t\t}, '1.2')\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 $nextContainer = $(data.next.container);\n\n\t\tPromise.all([\n\t\t\t\t// PJAXUpdateBody(data),\n\t\t\t\tPJAXUpdateNodes(data),\n\t\t\t\tPJAXUpdateHead(data),\n\t\t\t])\n\t\t\t.then(function () {\n\t\t\t\treturn doSplitText();\n\t\t\t})\n\t\t\t.then(function () {\n\t\t\t\treturn setLines($nextContainer);\n\t\t\t})\n\t\t\t.then(function () {\n\t\t\t\treturn setChars($nextContainer);\n\t\t\t})\n\t\t\t.then(function () {\n\n\t\t\t\treturn new Promise(function (resolve, reject) {\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// ensure that scroll is still locked\n\t\t\t\t\tlockScroll(true);\n\n\t\t\t\t\t// update ad trackers\n\t\t\t\t\tPJAXUpdateTrackers();\n\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t}, 100);\n\n\t\t\t\t});\n\n\t\t\t}).then(function () {\n\n\t\t\t\t// scroll at the page beginning\n\t\t\t\tscrollToVeryTop();\n\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tresolve(true);\n\t\t\t\t}, 100);\n\n\t\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\n\t\ttl\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.add(function () {\n\t\t\t\twindow.triggerTextAlign = $trigger.css('text-align');\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})\n\t\t\t.add(function () {\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\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/* 11. 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/* 12. 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[id*=\"elementor\"]',\n\t\t\t'style[id*=\"elementor\"]'\n\t\t].join(',');\n\n\t\tvar\n\t\t\toldHeadTags = head.querySelectorAll(headTags),\n\t\t\tnewHeadTags = newPageHead.querySelectorAll(headTags);\n\n\t\tfor (var i = 0; i < oldHeadTags.length; i++) {\n\t\t\thead.removeChild(oldHeadTags[i]);\n\t\t}\n\n\t\tfor (var i = 0; i < newHeadTags.length; i++) {\n\t\t\thead.insertBefore(newHeadTags[i], head.querySelector('link[rel=\"stylesheet\"]'));\n\t\t}\n\n\t\tresolve(true);\n\n\t});\n\n}\n","/* ======================================================================== */\n/* 13. 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'.header',\n\t\t\t\t'.header__wrapper-overlay-menu',\n\t\t\t\t'.header .menu li',\n\t\t\t\t'.header .menu-overlay li',\n\t\t\t\t'.transition-curtain'\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// different type of menu (overlay) found on the next page\n\t\t\tif (this === '.header .menu li' && !$nextItem.length) {\n\t\t\t\t$nextItem = $nextContainer.find('.header .menu-overlay li');\n\t\t\t}\n\n\t\t\t// different type of menu (classic) found on the next page\n\t\t\tif (this === '.header .menu-overlay li' && !$nextItem.length) {\n\t\t\t\t$nextItem = $nextContainer.find('.header .menu li');\n\t\t\t}\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\t\tf\n\t});\n\n}\n","/* ======================================================================== */\n/* 14. PJAX Update Trackers */\n/* ======================================================================== */\nfunction PJAXUpdateTrackers() {\n\n\tupdateGA();\n\tupdateFBPixel();\n\tupdateYaMetrika();\n\n\t/**\n\t * Google Analytics\n\t */\n\t function updateGA() {\n\t\tif (typeof gtag === 'function' && typeof window.gaData === 'object' && Object.keys(window.gaData)[0] !== 'undefined') {\n\t\t\tconst\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\t\t}\n\t}\n\n\t/**\n\t * Facebook Pixel\n\t */\n\t function updateFBPixel() {\n\t\tif (typeof fbq === 'function') {\n\t\t\tfbq('track', 'PageView');\n\t\t}\n\t}\n\n\t/**\n\t * Yandex Metrika\n\t */\n\t function updateYaMetrika() {\n\t\tif (typeof ym === 'function') {\n\t\t\tconst trackingID = getYmTrackingNumber();\n\n\t\t\tym(trackingID, 'hit', window.location.href, {\n\t\t\t\ttitle: document.title\n\t\t\t});\n\t\t}\n\t}\n\n\tfunction getYmTrackingNumber() {\n\t\tif (typeof window.Ya !== 'undefined' && typeof window.Ya.Metrika2) {\n\t\t\treturn window.Ya.Metrika2.counters()[0].id || null;\n\t\t}\n\n\t\tif (typeof window.Ya !== 'undefined' && typeof window.Ya.Metrika) {\n\t\t\treturn window.Ya.Metrika.counters()[0].id || null;\n\t\t}\n\n\t\treturn null;\n\t}\n\n}\n","/* ======================================================================== */\n/* 15. 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: 6000,\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'.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/* 16. 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/* 17. 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/* 18. 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/* 19. 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/* 20. 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');\n\ttl = new TimelineMax();\n\n\tprepare();\n\tanimate();\n\n\tfunction prepare() {\n\n\t\tsetChars($target, 0, -20);\n\n\t\tTweenMax.set($imgWrapper, {\n\t\t\tscaleY: 1.25,\n\t\t\ty: '25%',\n\t\t\ttransformOrigin: 'top center',\n\t\t\tautoAlpha: 0\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\tforce3D: true\n\t\t\t})\n\t\t\t.to($imgWrapper, 1.2, {\n\t\t\t\tautoAlpha: 1,\n\t\t\t\tscaleY: 1,\n\t\t\t\ty: '0%',\n\t\t\t\tease: Power3.easeOut,\n\t\t\t\tforce3D: true,\n\t\t\t\tz: 0.01\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/* 21. 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$img;\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$img = $target.find('img');\n\t$icon = $target.find('.figure-portfolio__icon');\n\n\tsetChars($target, 50);\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($img, 0.6, {\n\t\t\t\t\ty: '-40px',\n\t\t\t\t\tease: Power3.easeInOut\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($img, 0.6, {\n\t\t\t\t\ty: '0px',\n\t\t\t\t\tease: Power3.easeOut\n\t\t\t\t}, '0.3');\n\n\n\t\t});\n\n}\n","/* ======================================================================== */\n/* 22. 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/* 23. 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\t}\n\n\tthis.setActiveItem = function (index) {\n\t\tsetActiveItem(index);\n\t}\n\n}\n","/* ======================================================================== */\n/* 24. 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/* 25. Form */\n/* ======================================================================== */\nvar Form = function () {\n\n\tfloatLabels();\n\tajaxForm();\n\n\tfunction floatLabels() {\n\n\t\tvar\n\t\t\tINPUT_CLASS = '.input-float__input',\n\t\t\tINPUT_NOT_EMPTY = 'input-float__input_not-empty',\n\t\t\tINPUT_FOCUSED = 'input-float__input_focused';\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\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} 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});\n\n\t\t$(document).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}).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\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$currentField.removeClass(INPUT_FOCUSED);\n\t\t\t\t$currentControlWrap.removeClass(INPUT_FOCUSED);\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}\n","/* ======================================================================== */\n/* 26. 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');\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');\n\t\t});\n\n\t});\n\n\treturn $target;\n\n}\n","/* ======================================================================== */\n/* 27. 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\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$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$widgetListElements = $('.header__wrapper-overlay-widgets ul li'),\n\t\tOPEN_CLASS = 'header__burger_opened',\n\t\tSTICKY_CLASS = 'header_sticky',\n\t\tSTICKY_THEME = $stickyHeader.attr('data-header-sticky-theme');\n\n\tclickBurger();\n\tsetOverlayMenu();\n\tstickHeader();\n\n\tfunction stickHeader() {\n\n\t\tif (!$stickyHeader.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (window.SB === undefined) {\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)\n\t\t\t\t.addTo(SMController);\n\n\t\t} else {\n\n\t\t\twindow.SB.addListener(changeHeaderClass);\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 (window.SB === undefined) {\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} else {\n\n\t\t\twindow.SB.removeListener(changeHeaderClass);\n\t\t\t$stickyHeader.removeClass(STICKY_CLASS);\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 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: '-110%',\n\t\t});\n\n\t\tTweenMax.set($circleLetters, {\n\t\t\tautoAlpha: 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, {\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};\n\n\tfunction openOverlayMenu() {\n\n\t\tvar\n\t\t\ttl = 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.set($overlay, {\n\t\t\t\tautoAlpha: 1,\n\t\t\t\tzIndex: 500\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\t\t\t})\n\t\t\t.set($overlay, {\n\t\t\t\tclassName: '+=opened'\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.2, {\n\t\t\t\ty: '10vh',\n\t\t\t\tforce3D: true,\n\t\t\t\tease: Expo.easeInOut\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, 0.6, {\n\t\t\t\tautoAlpha: 1,\n\t\t\t\ty: '0%'\n\t\t\t}, '-=1.2')\n\t\t\t.to($circleLetters, 1.2, {\n\t\t\t\tautoAlpha: 1,\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\tdisplay: 'none'\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\tlockScroll(true);\n\t\t\t}, '1.2')\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\tfunction closeOverlayMenu(speed, setMenu = true) {\n\n\t\tvar\n\t\t\ttl = 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.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})\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\tforce3D: true\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, 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.to($circleLetters, 1.2, {\n\t\t\t\tautoAlpha: 0,\n\t\t\t}, '0')\n\t\t\t.to($curtain, 1.2, {\n\t\t\t\ty: '-110%',\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\tforce3D: true,\n\t\t\t\tautoAlpha: 1,\n\t\t\t\tease: Expo.easeInOut,\n\t\t\t\tdisplay: 'block'\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/* 28. 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.length) {\n\n\t\tlazyInstance = $images.Lazy({\n\t\t\tthreshold: 1000,\n\t\t\tchainable: false,\n\t\t\t// beforeLoad: 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// \tTweenMax.set($elParent, {\n\t\t\t// \t\tclassName: '+=lazy_loaded'\n\t\t\t// \t});\n\n\t\t\t// },\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.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\t// update lazy load instance when smooth scroll is enabled\n\tif (window.SB !== undefined && lazyInstance && lazyInstance.config('delay') !== 0) {\n\n\t\twindow.SB.addListener(function () {\n\t\t\tlazyInstance.update(true);\n\t\t});\n\n\t}\n\n\t// update lazy load instance when smooth scroll is enabled\n\tif (window.SB !== undefined && lazyInstanceBackgrounds && lazyInstanceBackgrounds.config('delay') !== 0) {\n\n\t\twindow.SB.addListener(function () {\n\t\t\tlazyInstanceBackgrounds.update(true);\n\t\t});\n\n\t}\n\n};\n","/* ======================================================================== */\n/* 29. 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/* 30. menu */\n/* ======================================================================== */\n/* ======================================================================== */\n/* 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/* 31. 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$logo = $preloader.find('.preloader__wrapper-logo'),\n\t\t$pageContent = $('.page-wrapper__content');\n\n\ttl.timeScale(2);\n\n\tthis.start = function () {\n\n\t\tif (!$preloader.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tTweenMax.set($pageContent, {\n\t\t\ty: '10vh',\n\t\t\tforce3D: true\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.set($curtainInner, {\n\t\t\t\t\tanimationPlayState: 'paused',\n\t\t\t\t})\n\t\t\t\t.to($curtainInner, 1.2, {\n\t\t\t\t\tanimation: 'none',\n\t\t\t\t\tscaleX: 1,\n\t\t\t\t\ttransformOrigin: 'left center',\n\t\t\t\t\tease: Expo.easeInOut\n\t\t\t\t})\n\t\t\t\t.to($curtainInner, 1.2, {\n\t\t\t\t\ttop: '0px',\n\t\t\t\t\ty: '0%',\n\t\t\t\t\tease: Expo.easeInOut,\n\t\t\t\t})\n\t\t\t\t.to($logo, 1.2, {\n\t\t\t\t\ty: '-50px',\n\t\t\t\t\tease: Expo.easeInOut,\n\t\t\t\t}, '-=1.1')\n\t\t\t\t.set($logo, {\n\t\t\t\t\tautoAlpha: 0\n\t\t\t\t})\n\t\t\t\t.to($curtainInner, 1.2, {\n\t\t\t\t\ty: '-102%',\n\t\t\t\t\tease: Expo.easeInOut,\n\t\t\t\t})\n\t\t\t\t.to($curtainOuter, 1.2, {\n\t\t\t\t\ty: '-100%',\n\t\t\t\t\tease: Expo.easeInOut,\n\t\t\t\t}, '-=0.9')\n\t\t\t\t.to($pageContent, 2.4, {\n\t\t\t\t\ty: '0vh',\n\t\t\t\t\tforce3D: true,\n\t\t\t\t\tease: Expo.easeInOut,\n\t\t\t\t}, '-=1.9')\n\t\t\t\t.add(function () {\n\t\t\t\t\tresolve(true);\n\t\t\t\t}, '-=1.5')\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/* 32. createOSScene */\n/* ======================================================================== */\nfunction createOSScene($el, tl, $customTrigger, noReveal = false, animDelay = 0) {\n\n\tvar\n\t\t$trigger = $el,\n\t\tscene,\n\t\tscale,\n\t\tdelayAttr = parseFloat($trigger.attr('data-os-animation-delay')) || 0,\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\tmasterTL.add(TweenMax.set($el, {\n\t\t\tautoAlpha: 1\n\t\t}), '0');\n\t}\n\n\n\tif (!animDelay && delayAttr) {\n\t\tmasterTL.delay(delayAttr);\n\t\t// masterTL.shiftChildren(delayAttr, true);\n\t}\n\n\tif (animDelay && delayAttr) {\n\t\tmasterTL.delay(animDelay);\n\t\t// masterTL.shiftChildren(animDelay, true);\n\t}\n\n\tmasterTL\n\t\t.add(tl, '0')\n\t\t.add(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\tscene = new $.ScrollMagic.Scene({\n\t\t\ttriggerElement: $trigger,\n\t\t\ttriggerHook: window.SMSceneTriggerHook,\n\t\t\treverse: window.SMSceneReverse\n\t\t})\n\t\t.setTween(masterTL)\n\t\t.addTo(window.SMController);\n\n\n\t// update scene when smooth scroll is enabled\n\tif (window.SB !== undefined) {\n\n\t\twindow.SB.addListener(function () {\n\t\t\tscene.refresh();\n\t\t});\n\n\t}\n\n}\n","/* ======================================================================== */\n/* 33. getScrollTop */\n/* ======================================================================== */\nfunction getScrollTop() {\n\n\tif (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/* 34. lockScroll */\n/* ======================================================================== */\nfunction lockScroll(lock) {\n\n\tvar LOCK_CLASS = 'body_lock-scroll';\n\n\tif (lock === true) {\n\n\t\tif (!window.$body.hasClass(LOCK_CLASS)) {\n\n\t\t\twindow.$body.addClass(LOCK_CLASS);\n\n\t\t\tif (window.SB !== undefined) {\n\n\t\t\t\twindow.SB.updatePluginOptions('lockscroll', {\n\t\t\t\t\tlock: true\n\t\t\t\t});\n\n\t\t\t}\n\n\t\t}\n\n\t} else {\n\n\t\twindow.$body.removeClass(LOCK_CLASS);\n\n\t\tif (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/* 35. 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/* 36. 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/* 37. 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/* 38. 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// $heading = $current.find('.section-about__heading'),\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/* 39. 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/* 40. 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(animateChars($current, 1.2, 0.3, Power3.easeOut), '0')\n\t\t\t\t.add(animateLines($current, 1.2, 0.05), '0')\n\t\t\t\t.add(animateHeadline($headline), '0')\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/* 41. 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$slider = $current.find('.js-slider-fullscreen'),\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.add(function () {\n\t\t\t\t\t\tnew SliderFullScreen($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$activeHeading = $activeSlide.find('.slider__heading'),\n\t\t\t\t$activeSubheading = $activeSlide.find('.slider__subheading'),\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\t\t\t\ttl\n\t\t\t\t\t.delay(0.6)\n\t\t\t\t\t.add(animateChars($activeHeading, 1.2, 0.3, Power3.easeOut), '0')\n\t\t\t\t\t.add(animateChars($activeSubheading, 1.2, 0.3, Power3.easeOut), '0')\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/* 42. 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'),\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.set($current, {\n\t\t\t\t\tautoAlpha: 1\n\t\t\t\t}, '0')\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.1')\n\t\t\t\t.to($currentBig, 0.3, {\n\t\t\t\t\tdisplay: 'none',\n\t\t\t\t\tonComplete: function () {\n\t\t\t\t\t\tnew Grid();\n\t\t\t\t\t}\n\t\t\t\t}, '-=0.6');\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.to($background, 2.4, {\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}, '0.9');\n\t\t\t}\n\n\t\t\tcreateOSScene($current, tl);\n\n\t\t}\n\n\t});\n\n}\n","/* ======================================================================== */\n/* 43. 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($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.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($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.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/* 44. 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\tanimDelay,\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\tanimDelay = $animTarget.data('os-animation-delay');\n\t$filter = $target.find('.js-filter');\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\tanimate();\n\n\tfunction bindGridFilter() {\n\n\t\tif (!$filter.length || !$grid.length) {\n\t\t\treturn;\n\t\t}\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\tGridPortfolio.isotope({\n\t\t\t\t\tfilter: filterBy\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 animate() {\n\n\t\tvar\n\t\t\ttl = new TimelineMax();\n\n\t\t$figurePortfolio.each(function (index) {\n\n\t\t\tvar\n\t\t\t\t$current = $(this),\n\t\t\t\tcurrentDelay = 0;\n\n\t\t\tif (index < cols) {\n\t\t\t\tcurrentDelay = animDelay;\n\t\t\t}\n\n\t\t\tnew FigurePortfolioAnimation($current, currentDelay)\n\n\t\t});\n\n\t\tcreateOSScene($animTarget, tl);\n\n\t}\n\n}\n","/* ======================================================================== */\n/* 45. 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/* 46. 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/* 47. renderSliderCounter */\n/* ======================================================================== */\nfunction renderSliderCounter(sliderMain, sliderCounter, slideClass, elTotal, sliderSecondary) {\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\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\tcounter.removeAllSlides();\n\n\tfor (var index = startSlides; index <= numOfSlides; index++) {\n\n\t\tif (index >= 10) {\n\n\t\t\tprefixCurrent = '0';\n\n\t\t}\n\n\t\tcounter.appendSlide('
' + prefixCurrent + index + '
');\n\n\t}\n\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/* 48. renderSliderDots */\n/* ======================================================================== */\nfunction renderSliderDots(slider, $dotsContainer) {\n\n\tvar\n\t\t$dots = $dotsContainer.find('.slider__dot'),\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('transitionStart', function () {\n\t\t\tunsetDots();\n\t\t})\n\t\t.on('transitionEnd', function () {\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\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\tTweenMax.fromTo($currentCircle, autoPlaydelay, {\n\t\t\tdrawSVG: '100% 100%',\n\t\t\tease: Power4.easeInOut\n\t\t}, {\n\t\t\tdrawSVG: '0% 100%'\n\t\t});\n\n\t}\n\n\tfunction unsetDots() {\n\n\t\tvar\n\t\t\ttransitionSpeed = parseFloat(slider.params.speed / 1000) / 2;\n\n\t\tif (slider.params.autoplay.enabled) {\n\t\t\ttransitionSpeed = parseFloat(slider.params.speed / 1000);\n\t\t}\n\n\t\tTweenMax.to($circles, transitionSpeed, {\n\t\t\tdrawSVG: '0% 0%',\n\t\t\tease: Power4.easeInOut\n\t\t});\n\n\t}\n\n}\n","/* ======================================================================== */\n/* 49. 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\t/**\n\t * Resize handling (with debounce)\n\t */\n\t$(window).on('resize', debounce(function () {\n\t\tslider.update();\n\t\tinitialSet();\n\t}, 250));\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\tclearProps: 'transform'\n\t\t});\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\tz: 0.01,\n\t\t\tforce3D: true\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\t\t\t\tbackground = slider.slides[i].querySelector('.slider__bg');\n\n\t\t\t\ttry {\n\t\t\t\t\tTweenMax.set(background, {\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\ttransition: slider.params.speed + 'ms',\n\t\t\t\t\t\tz: 0.01,\n\t\t\t\t\t\tforce3D: true\n\t\t\t\t\t});\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('touchStart', function () {\n\n\t\t\tfor (i = 0; i < slider.slides.length; i++) {\n\n\t\t\t\tbackground = slider.slides[i].querySelector('.slider__bg');\n\n\t\t\t\ttry {\n\t\t\t\t\tTweenMax.set(background, {\n\t\t\t\t\t\ttransition: '',\n\t\t\t\t\t\tz: 0.01,\n\t\t\t\t\t\tforce3D: true\n\t\t\t\t\t});\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/* 50. 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/* 51. setSliderTextTransitions */\n/* ======================================================================== */\nfunction setSliderTextTransitions(slider, direction, offset = 40, $heading, $subheading, $description, $link) {\n\n\tvar\n\t\ttl = new TimelineMax(),\n\t\ttextAlign = $heading.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$activeHeading = $activeSlide.find($heading),\n\t\t\t\t$activeSubheading = $activeSlide.find($subheading),\n\t\t\t\t$activeDescription = $activeSlide.find($description),\n\t\t\t\t$activeLink = $activeSlide.find($link);\n\n\t\t\ttl.clear();\n\n\t\t\t$heading.each(function () {\n\n\t\t\t\ttl\n\t\t\t\t\t.add(hideChars($(this), 0.6, 0.3, Power3.easeInOut, offsetXNextOut, offsetYNextOut, fromNextOut), '0')\n\t\t\t\t\t.add(hideChars($subheading, 0.6, 0.3, Power3.easeInOut, offsetXNextOut, offsetYNextOut, fromNextOut), '0')\n\t\t\t\t\t.add(hideLines($description, 0.6, 0.05, offsetYNextOut, Power3.easeOut, true), '0')\n\t\t\t\t\t.add(hideButton(), '-=0.6')\n\t\t\t\t\t.add(hideChars($(this), 0, 0, Power3.easeInOut, offsetXNextIn, offsetYNextIn))\n\t\t\t\t\t.add(hideChars($subheading, 0, 0, Power3.easeInOut, offsetXNextIn, offsetYNextIn))\n\t\t\t\t\t.add(hideLines($activeDescription, 0, 0, offsetYNextIn))\n\t\t\t\t\t.add(setButton());\n\n\t\t\t});\n\n\t\t\ttl\n\t\t\t\t.add(animateChars($activeHeading, 1.2, 0.3, Power3.easeOut, fromNextIn))\n\t\t\t\t.add(animateLines($activeDescription, 1.2, 0.1, Power3.easeOut, fromNextIn), '-=1.2')\n\t\t\t\t.add(animateChars($activeSubheading, 1.2, 0.3, Power3.easeOut, fromNextIn), '-=1.2')\n\t\t\t\t.add(showButton($activeLink), '-=0.9');\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$activeHeading = $activeSlide.find($heading),\n\t\t\t\t$activeSubheading = $activeSlide.find($subheading),\n\t\t\t\t$activeDescription = $activeSlide.find($description),\n\t\t\t\t$activeLink = $activeSlide.find($link);\n\n\t\t\ttl.clear();\n\n\t\t\t$heading.each(function () {\n\n\t\t\t\ttl\n\t\t\t\t\t.add(hideChars($(this), 0.6, 0.3, Power3.easeInOut, offsetXPrevOut, offsetYPrevOut, fromPrevOut), '0')\n\t\t\t\t\t.add(hideChars($subheading, 0.6, 0.3, Power3.easeInOut, offsetXPrevOut, offsetYPrevOut, fromPrevOut), '0')\n\t\t\t\t\t.add(hideLines($description, 0.6, 0.05, offsetYPrevOut, Power3.easeOut), '0')\n\t\t\t\t\t.add(hideButton(), '-=0.6')\n\t\t\t\t\t.add(hideChars($(this), 0, 0, Power3.easeInOut, offsetXPrevIn, offsetYPrevIn))\n\t\t\t\t\t.add(hideChars($subheading, 0, 0, Power3.easeInOut, offsetXPrevIn, offsetYPrevIn))\n\t\t\t\t\t.add(hideLines($activeDescription, 0, 0, offsetYPrevIn))\n\t\t\t\t\t.add(setButton($link));\n\n\t\t\t});\n\n\t\t\ttl\n\t\t\t\t.add(animateChars($activeHeading, 1.2, 0.3, Power3.easeOut, fromPrevIn))\n\t\t\t\t.add(animateLines($activeDescription, 1.2, 0.1, Power3.easeOut, fromNextIn), '-=1.2')\n\t\t\t\t.add(animateChars($activeSubheading, 1.2, 0.3, Power3.easeOut, fromPrevIn), '-=1.2')\n\t\t\t\t.add(showButton($activeLink), '-=0.9');\n\n\t\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, 0.6, {\n\t\t\t\ty: (offsetYNextOut || offsetXNextOut) * (-1) / 2 + 'px',\n\t\t\t\tautoAlpha: 0,\n\t\t\t\t// ease: Power3.easeOut\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, 0.6, {\n\t\t\t\ty: '0px',\n\t\t\t\tautoAlpha: 1,\n\t\t\t\t// ease: Power3.easeOut\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/* 52. 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('p'),\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\toverlapFactor = $sliderImg.data('overlap-factor') || 0;\n\n\tcreateSliders();\n\n\tfunction createSliders() {\n\n\t\tvar sliderImg = new Swiper($sliderImg, {\n\t\t\tdirection: $sliderImg.data('direction') || 'vertical',\n\t\t\tpreloadImages: true,\n\t\t\tupdateOnImagesReady: true,\n\t\t\tkeyboardControl: true,\n\t\t\tlazy: {\n\t\t\t\tloadPrevNextAmount: 6,\n\t\t\t\tloadPrevNext: true,\n\t\t\t\tloadOnTransitionStart: true\n\t\t\t},\n\t\t\tspeed: sliderSpeed,\n\t\t\tallowTouchMove: false,\n\t\t\twatchSlidesProgress: true\n\t\t});\n\n\t\tvar sliderContent = new Swiper($sliderContent, {\n\t\t\tautoHeight: true,\n\t\t\teffect: 'fade',\n\t\t\tfadeEffect: {\n\t\t\t\tcrossFade: false\n\t\t\t},\n\t\t\tautoplay: {\n\t\t\t\tdisableOnInteraction: false,\n\t\t\t\tenabled: $sliderImg.data('autoplay-enabled') || true,\n\t\t\t\tdelay: $sliderImg.data('autoplay-delay') || 6000,\n\t\t\t},\n\t\t\tmousewheel: {\n\t\t\t\teventsTarged: '.page-wrapper__content',\n\t\t\t\treleaseOnEdges: true,\n\t\t\t},\n\t\t\tnavigation: {\n\t\t\t\tnextEl: '.js-slider-fullscreen__next',\n\t\t\t\tprevEl: '.js-slider-fullscreen__prev',\n\t\t\t},\n\t\t\tspeed: $sliderImg.data('speed') || 1200,\n\t\t\tallowTouchMove: false,\n\t\t\tpagination: {\n\t\t\t\tel: '.js-slider-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});\n\n\t\tTweenMax.set($inner, {\n\t\t\ttransitionDelay: sliderSpeed + 'ms' || '1200ms'\n\t\t});\n\n\t\trenderSliderDots(sliderContent, $slider.find('.js-slider-dots'));\n\t\trenderSliderCounter(\n\t\t\tsliderContent,\n\t\t\t$slider.find('.js-slider-fullscreen__counter-current'),\n\t\t\t'',\n\t\t\t$slider.find('.js-slider-fullscreen__counter-total'),\n\t\t\tsliderImg\n\t\t);\n\n\t\tsetSliderTextTransitions(sliderContent, sliderImg.params.direction, 25, $heading, $subheading, $description, $link);\n\t\tsetSliderOverlapEffect(sliderImg, overlapFactor);\n\n\t}\n\n}\n","/* ======================================================================== */\n/* 53. 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 = $current.find('.js-slider-images__captions'),\n\t\t\tsliderCaptions,\n\t\t\tbreakpoints = {},\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\tbreakpoints[lg] = {\n\t\t\tslidesPerView: $current.data('slides-per-view-tablet') || 1.33,\n\t\t\tspaceBetween: $current.data('space-between-tablet') || 20,\n\t\t\tcenteredSlides: $current.data('centered-slides-tablet') || true,\n\t\t};\n\t\tbreakpoints[md] = {\n\t\t\tslidesPerView: $current.data('slides-per-view-mobile') || 1.16,\n\t\t\tspaceBetween: $current.data('space-between-mobile') || 10,\n\t\t\tcenteredSlides: $current.data('centered-slides-mobile') || true,\n\t\t};\n\n\t\tvar slider = new Swiper($current, {\n\t\t\tautoHeight: $current.data('auto-height') || false,\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\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\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\tbreakpoints: breakpoints\n\t\t});\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\t// effect: 'fade',\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\t// slidesPerView: 1,\n\t\t\t\t// centeredSlides: true,\n\t\t\t\tallowTouchMove: false,\n\t\t\t\twatchSlidesProgress: true\n\t\t\t});\n\n\t\t}\n\n\t\t// update height after images are loaded\n\t\tslider.on('lazyImageReady', function () {\n\n\t\t\tsetTimeout(function () {\n\t\t\t\tslider.update();\n\t\t\t}, 300);\n\n\t\t});\n\n\t\trenderSliderDots(slider, $current.find('.js-slider-images__dots'));\n\t\trenderSliderCounter(\n\t\t\tslider,\n\t\t\t$current.find('.js-slider-images__counter-current'),\n\t\t\t'',\n\t\t\t$current.find('.js-slider-images__counter-total'),\n\t\t\tsliderCaptions\n\t\t);\n\n\t});\n\n}\n","/* ======================================================================== */\n/* 54. sliderHalfScreen */\n/* ======================================================================== */\nvar SliderHalfScreen = 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('p'),\n\t\t$link = $slider.find('.slider-halfscreen__wrapper-button'),\n\t\t$sliderImg = $slider.find('.js-slider-halfscreen__images'),\n\t\t$sliderContent = $slider.find('.js-slider-halfscreen__content'),\n\t\t$inner = $slider.find('.slider__images-slide-inner'),\n\t\tsliderSpeed = $sliderImg.data('speed') || 1200,\n\t\toverlapFactor = $sliderImg.data('overlap-factor') || 0;\n\n\tcreateSliders();\n\n\tfunction createSliders() {\n\n\t\tvar sliderImg = new Swiper($sliderImg, {\n\t\t\tdirection: $sliderImg.data('direction') || 'vertical',\n\t\t\tpreloadImages: true,\n\t\t\tupdateOnImagesReady: true,\n\t\t\tkeyboardControl: true,\n\t\t\tlazy: {\n\t\t\t\tloadPrevNextAmount: 6,\n\t\t\t\tloadPrevNext: true,\n\t\t\t\tloadOnTransitionStart: true\n\t\t\t},\n\t\t\tspeed: $sliderImg.data('speed') || 1200,\n\t\t\tallowTouchMove: false,\n\t\t\twatchSlidesProgress: true\n\t\t});\n\n\t\tvar sliderContent = new Swiper($sliderContent, {\n\t\t\t// simulateTouch: false,\n\t\t\tautoHeight: true,\n\t\t\teffect: 'fade',\n\t\t\tfadeEffect: {\n\t\t\t\tcrossFade: true\n\t\t\t},\n\t\t\tautoplay: {\n\t\t\t\tenabled: $sliderImg.data('autoplay-enabled') || false,\n\t\t\t\tdelay: $sliderImg.data('autoplay-delay') || 6000,\n\t\t\t},\n\t\t\tmousewheel: {\n\t\t\t\teventsTarged: '.page-wrapper__content',\n\t\t\t\treleaseOnEdges: true,\n\t\t\t},\n\t\t\tnavigation: {\n\t\t\t\tnextEl: '.js-slider-halfscreen__next',\n\t\t\t\tprevEl: '.js-slider-halfscreen__prev',\n\t\t\t},\n\t\t\tpagination: {\n\t\t\t\tel: '.js-slider-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\tspeed: $sliderImg.data('speed') || 1200,\n\t\t\tallowTouchMove: false,\n\t\t\tbreakpoints: {\n\t\t\t\t992: {\n\t\t\t\t\tautoHeight: true\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tTweenMax.set($inner, {\n\t\t\ttransitionDelay: sliderSpeed + 'ms' || '1200ms'\n\t\t});\n\n\t\trenderSliderCounter(\n\t\t\tsliderContent,\n\t\t\t$slider.find('.js-slider-halfscreen__counter-current'),\n\t\t\t'',\n\t\t\t$slider.find('.js-slider-halfscreen__counter-total'),\n\t\t\tsliderImg\n\t\t);\n\n\t\tsetSliderTextTransitions(sliderContent, sliderImg.params.direction, 25, $heading, $subheading, $description, $link);\n\t\tsetSliderOverlapEffect(sliderImg, overlapFactor);\n\n\t}\n\n}\n","/* ======================================================================== */\n/* 55. 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\tbreakpoints = {},\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\tbreakpoints[lg] = {\n\t\t\tslidesPerView: $current.data('slides-per-view-tablet') || 1.33,\n\t\t\tspaceBetween: $current.data('space-between-tablet') || 20,\n\t\t\tcenteredSlides: $current.data('centered-slides-tablet') || true,\n\t\t};\n\t\tbreakpoints[md] = {\n\t\t\tslidesPerView: $current.data('slides-per-view-mobile') || 1.33,\n\t\t\tspaceBetween: $current.data('space-between-mobile') || 20,\n\t\t\tcenteredSlides: $current.data('centered-slides-mobile') || true,\n\t\t};\n\n\t\tvar slider = new Swiper($current, {\n\t\t\tautoHeight: $current.data('auto-height') || false,\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\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\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\tbreakpoints: breakpoints\n\t\t});\n\n\t\t// update height after images are loaded\n\t\tslider.on('lazyImageReady', function () {\n\n\t\t\tsetTimeout(function () {\n\t\t\t\tslider.update();\n\t\t\t}, 300);\n\n\t\t});\n\n\t\trenderSliderDots(slider, $current.find('.js-slider-projects__dots'));\n\t\trenderSliderCounter(\n\t\t\tslider,\n\t\t\t$current.find('.js-slider-projects__counter-current'),\n\t\t\t'',\n\t\t\t$current.find('.js-slider-projects__counter-total')\n\t\t);\n\n\t});\n\n}\n","/* ======================================================================== */\n/* 56. 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('#vector-' + 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/* 57. 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\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);\n\tsetSliderTestimonialsTransitions(slider, 'vertical', 20, $text, $author, $line);\n\n}\n","/* ======================================================================== */\n/* 58. 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/* 59. 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/* 60. 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/* 61. 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/* 62. 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});\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/* 63. 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/* 64. 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/* 65. 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/* 66. 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/* 67. 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('[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\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\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\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\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\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\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\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\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\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\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\n\t\t\t});\n\n\t\t\tresolve(true);\n\n\t\t}\n\n\t});\n\n}\n","/* ======================================================================== */\n/* 68. 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('[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/* 69. 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/* 70. fixMobileBarHeight */\n/* ======================================================================== */\nfunction fixMobileBarHeight() {\n\n\tvar vh;\n\n\t/**\n\t * Initial set\n\t */\n\tcreateStyleElement();\n\tsetVh();\n\n\t/**\n\t * Resize handling (with debounce)\n\t */\n\t$(window).on('resize', debounce(function () {\n\t\tsetVh();\n\t}, 250));\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\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/* 71. 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/* 72. runOnHighPerformanceGPU */\n/* ======================================================================== */\nfunction runOnHighPerformanceGPU() {\n\n\tvar webGLCanvas = document.getElementById('js-webgl');\n\n\tif (typeof webGLCanvas !== 'undefined' && webGLCanvas !== null) {\n\t\twebGLCanvas.getContext('webgl', {\n\t\t\tpowerPreference: 'high-performance'\n\t\t});\n\t}\n\n}\n","/* ======================================================================== */\n/* 73. syncAttributes */\n/* ======================================================================== */\nfunction syncAttributes($sourceElement, $targetElement) {\n\n\t// single element\n\tif ($sourceElement.length === 1 && $targetElement.length === 1) {\n\t\tconst\n\t\t\ttargetEl = $targetElement.get(0),\n\t\t\ttargetAttributes = $targetElement.getAllAttributes(),\n\t\t\tsourceAttributes = $sourceElement.getAllAttributes();\n\n\t\t// source element doesn't have any attributes present\n\t\tif ($.isEmptyObject(sourceAttributes)) {\n\t\t\t// ... so remove all attributes from the target element\n\t\t\t[...targetEl.attributes].forEach(attr => targetEl.removeAttribute(attr.name));\n\t\t} else {\n\t\t\tObject.keys(targetAttributes).forEach((key) => {\n\t\t\t\t// delete key on target that doesn't exist in source element\n\t\t\t\tif (key !== 'style' && !(key in sourceAttributes)) {\n\t\t\t\t\t$targetElement.removeAttr(key);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// sync attributes\n\t\t\t$targetElement.attr(sourceAttributes);\n\t\t}\n\n\t// multiple elements\n\t} else if ($sourceElement.length > 1 && $targetElement.length > 1 && $sourceElement.length === $targetElement.length) {\n\n\t\t$.each($targetElement, function (index) {\n\t\t\tconst\n\t\t\t\t$current = $(this),\n\t\t\t\tsourceAttributes = $sourceElement.eq(index).getAllAttributes();\n\n\t\t\t// source element doesn't have any attributes present\n\t\t\tif ($.isEmptyObject(sourceAttributes)) {\n\t\t\t\t// ... so remove all attributes from the target element\n\t\t\t\t[...this.attributes].forEach(attr => this.removeAttribute(attr.name));\n\t\t\t} else {\n\n\t\t\t\t// sync attributes\n\t\t\t\t$current.attr(sourceAttributes);\n\t\t\t}\n\t\t});\n\n\t}\n\n}\n"]}