{ "version": 3, "sources": [ "node_modules/browser-pack/_prelude.js", "Scripts/BrowserSession.js", "Scripts/Description/Description.js", "Scripts/Donate/Donate.js", "Scripts/DonationLevels.js", "Scripts/Dropdown/Dropdown.js", "Scripts/EventsCalendar/EventsCalendar.js", "Scripts/EventsList/EventsList.js", "Scripts/ExpandableList.js", "Scripts/FeaturedSponsors/FeaturedSponsors.js", "Scripts/FullDonationForm/BillingInformation.js", "Scripts/FullDonationForm/DonationDetailsRepository.js", "Scripts/FullDonationForm/FillLoginData.js", "Scripts/FullDonationForm/FullDonationForm.js", "Scripts/FullDonationForm/PaymentInfo.js", "Scripts/FullDonationForm/PaymentMethods.js", "Scripts/FullDonationForm/ReplaceImgWithSvg.js", "Scripts/FullDonationForm/ThankYouMessage.js", "Scripts/GeneralSearch/GeneralSearch.js", "Scripts/HorizontalGallery.js", "Scripts/Iframe/Iframe.js", "Scripts/LoginScript.js", "Scripts/LuminateSession.js", "Scripts/LuminateSessionSync/LuminateSessionSync.js", "Scripts/Menu/menu.js", "Scripts/NewsSearch/SearchBox.js", "Scripts/RegionSearchBox/RegionSearchBox.js", "Scripts/RegionsFilter/RegionsFilter.js", "Scripts/RegisterScript.js", "Scripts/Separator/Separator.js", "Scripts/Sizer.js", "Scripts/SizerBreakpoint.js", "Scripts/SlickSlider.js", "Scripts/Slideshow.js", "Scripts/SmugmugEventGallery/SmugmugEventGallery.js", "Scripts/SpeakersRequest/SpeakersRequest.js", "Scripts/StickyHeader.js", "Scripts/StickyLogotype.js", "Scripts/Templates/FollowUserInsideColumnSpace/main.js", "Scripts/Templates/FullWidthAndFloatRightOnTop/main.js", "Scripts/Templates/Menu1/main.js", "Scripts/Templates/Menu2/main.js", "Scripts/Templates/MobileMenu/main.js", "Scripts/Tracking/ClicksTracking.js", "Scripts/Tracking/Tracker.js", "Scripts/UserSession.js", "Scripts/VideosList/videoList.js", "Scripts/eventRepository.js", "Scripts/fullcalendar.min.js", "Scripts/jssocials.min.js", "Scripts/layouts.js", "Scripts/resource-main.source.js", "Scripts/widgets.js", "node_modules/lodash/lodash.js", "node_modules/moment/moment.js", "node_modules/process/browser.js", "node_modules/q/q.js", "node_modules/timers-browserify/main.js", "node_modules/urijs/src/IPv6.js", "node_modules/urijs/src/SecondLevelDomains.js", "node_modules/urijs/src/URI.js", "node_modules/urijs/src/punycode.js", "node_modules/uuid/index.js", "node_modules/uuid/lib/bytesToUuid.js", "node_modules/uuid/lib/rng-browser.js", "node_modules/uuid/v1.js", "node_modules/uuid/v4.js" ], "names": [], "mappings": "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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACxthBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACxLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC5hEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACtlEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;ACRA;AACA;AACA;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;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7GA;AACA;AACA;AACA;AACA;AACA;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": "generated.js", "sourceRoot": "", "sourcesContent": [ "(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i 3600000) {\r\n activateSession();\r\n }\r\n else {\r\n ifSessionActive = true;\r\n }\r\n }\r\n else {\r\n instances = 1;\r\n activateSession();\r\n }\r\n return ifSessionActive;\r\n}\r\n\r\nvar activateSession = function () {\r\n var activeSession = {\r\n active: true,\r\n lastTimeLogoDisplay: currentDate,\r\n instances: instances\r\n };\r\n localStorage['activeSession'] = JSON.stringify(activeSession);\r\n};\r\n", "let $ = require('jquery');\r\nlet SizerBreakpoint = require('../SizerBreakpoint');\r\nlet Tracker = require('../Tracking/Tracker');\r\n\r\nlet Description = function (customOptions) {\r\n let defaults = {\r\n element: null,\r\n readMoreSelector: '.jnf-widget-description-read-more',\r\n readLessSelector: '.jnf-widget-description-read-less',\r\n contentSelector: '.jnf-widget-description-content',\r\n readMoreClass: 'jnf-widget-description',\r\n contentCut: 'jnf-widget-description-cut',\r\n buttonsWrap: '.buttons-wrapper',\r\n button: '.jnf-widget-description-donate-button'\r\n };\r\n\r\n let options = $.extend({}, defaults, customOptions);\r\n\r\n if (options.element === null) {\r\n throw new Error('element option required');\r\n }\r\n\r\n let $element = $(options.element);\r\n let $readMore = $element.find(options.readMoreSelector);\r\n let $readLess = $element.find(options.readLessSelector);\r\n let $content = $element.find(options.contentSelector);\r\n let $buttonWrapper = $element.find(options.buttonsWrap);\r\n let $display = 'block';\r\n\r\n if ($element[0].className.indexOf('jnf-widget-description-template-7') !== -1) {\r\n $display = 'inline-block';\r\n }\r\n if ($element[0].className.indexOf('sizer-mobile-small') !== -1) {\r\n $display = 'block';\r\n }\r\n\r\n let dataLimitAttribute = $element.find(options.contentSelector).attr('data-limit');\r\n\r\n if (typeof dataLimitAttribute !== 'undefined') {\r\n let wordsFound = 0;\r\n let wordLimit = parseInt(dataLimitAttribute);\r\n\r\n function limitLength(element) {\r\n $(element).not('iframe').contents().each((index, child) => {\r\n if (wordsFound >= wordLimit) {\r\n child.remove();\r\n } else if (child.nodeType !== Node.TEXT_NODE) {\r\n limitLength(child);\r\n } else {\r\n let words = child.nodeValue.split(\" \");\r\n if (wordsFound + words.length >= wordLimit) {\r\n child.nodeValue = words.slice(0, wordLimit - wordsFound).join(\" \");\r\n }\r\n wordsFound += words.length;\r\n }\r\n });\r\n }\r\n\r\n let $fullContent = $content.clone();\r\n let $cutContent = $content.clone();\r\n limitLength($cutContent);\r\n\r\n\r\n let onReadMoreClick = function () {\r\n $readMore.css('display', 'none');\r\n $readLess.css('display', $display);\r\n $content.removeClass('jnf-widget-description-content-visible');\r\n $content.html($fullContent.html());\r\n $content.width();\r\n $content.addClass('jnf-widget-description-content-visible full');\r\n };\r\n\r\n let onReadLessClick = function () {\r\n\r\n $readLess.css('display', 'none');\r\n $readMore.css('display', $display);\r\n $content.removeClass('jnf-widget-description-content-visible full');\r\n $content.html($cutContent.html());\r\n $content.width();\r\n $content.addClass('jnf-widget-description-content-visible');\r\n };\r\n\r\n if (wordLimit <= wordsFound) {\r\n //content long enough to show read more button\r\n $readMore.css('display', 'inline-block');\r\n $content.html($cutContent.html());\r\n $readMore.on('click', onReadMoreClick);\r\n $readLess.on('click', onReadLessClick);\r\n $element.addClass(options.readMoreClass);\r\n }\r\n }\r\n\r\n $content.css('display', 'block');\r\n $content.addClass('jnf-widget-description-content-visible');\r\n\r\n $(\".jnf-widget-description-view-link\").click(function (event) {\r\n event.stopImmediatePropagation();\r\n var viewLinkElement = $(this).find('a').attr('href');\r\n if (viewLinkElement) {\r\n window.location.href = viewLinkElement;\r\n }\r\n });\r\n\r\n $('.travelButtonHolder').click(function () {\r\n window.location = $(this).find('.travelLinkHolder a').attr('href');\r\n });\r\n\r\n $('.missionButtonHolder').parent().addClass('jnf-widget-description-center');\r\n\r\n new SizerBreakpoint({\r\n element: $element\r\n });\r\n\r\n if ($element.hasClass(options.contentCut) && $(options.element).hasClass('sizer-mobile') == false) {\r\n if ($content[0].offsetHeight < $content[0].scrollHeight ||\r\n $content[0].offsetWidth < $content[0].scrollWidth) {\r\n $buttonWrapper.addClass('jnf-widget-description-fade');\r\n if ($buttonWrapper.find(options.button).length > 0) {\r\n $buttonWrapper.addClass('jnf-widget-description-fade-button');\r\n }\r\n else {\r\n $buttonWrapper.addClass('jnf-widget-description-fade-link');\r\n }\r\n }\r\n\r\n if ($element.find('.jnf-widget-description-link-container').length) {\r\n $content.css('padding-bottom', '0px');\r\n }\r\n }\r\n\r\n\r\n const trackingEventName = $element.data('trackingEvent');\r\n if (trackingEventName) {\r\n $element.find('.jnf-widget-description-link-container a').each((index, link) => {\r\n $(link).on('click', () => {\r\n Tracker.trackGenericEvent(trackingEventName, { page: window.location.pathname })\r\n });\r\n });\r\n }\r\n};\r\n\r\nmodule.exports = Description;", "let $ = require('jquery');\r\nlet _ = require('lodash');\r\nlet URI = require('urijs');\r\nlet Tracker = require('../Tracking/Tracker');\r\n\r\nlet DonationLevels = require('../DonationLevels');\r\n\r\nlet Donate = function (customOptions) {\r\n\tlet defaults = {\r\n\t\telement: null,\r\n\r\n\t\tlevelsContainerSelector: '.jnf-widget-donate-levels',\r\n\t\tloadingOverlaySelector: '.loading-overlay',\r\n\r\n\t};\r\n\r\n\tlet options = $.extend({}, defaults, customOptions);\r\n\r\n\tif(options.element === null){\r\n\t\tthrow new Error('element option required');\r\n\t}\r\n\r\n\tlet $element = $(options.element);\r\n\r\n\tlet formId = $element.data('form-id');\r\n\tlet levelsContainer = $element.find(options.levelsContainerSelector);\r\n\tlet luminateConfig = {\r\n\t api_key: $element.data('api-key'),\r\n\t v: $element.data('api-version')\r\n\t};\r\n\t\r\n let donationLevels = new DonationLevels({\r\n\t formId: formId,\r\n\t levelsContainer: levelsContainer,\r\n\t luminateConfig: luminateConfig,\r\n\t selectFirstOption: false,\r\n customAmountPlaceholder: 'My Preferred Amount',\r\n });\r\n\r\n donationLevels.onAmountChange = amount => {\r\n Tracker.donateTodayLevelSelected({\r\n page: window.location.pathname,\r\n formId: formId,\r\n donationAmount: amount,\r\n preselectedAmoutChosen: donationLevels.isSelectedLevelPredefined()\r\n });\r\n }\r\n \r\n donationLevels.initialize()\r\n .finally(() => {\r\n let overlay = $element.find(options.loadingOverlaySelector);\r\n overlay.css('opacity', 0);\r\n overlay.css('visibility', 'hidden');\r\n }).done();\r\n\r\n $('.jnf-widget-donate-submit').click(e => {\r\n e.preventDefault();\r\n\r\n Tracker.donateTodayNextClicked({\r\n page: window.location.pathname,\r\n formId: formId,\r\n donationAmount: donationLevels.selectedAmount,\r\n preselectedAmoutChosen: donationLevels.isSelectedLevelPredefined()\r\n });\r\n\r\n let url = $($element.data('submit-url')).attr('href');\r\n\r\n if (url) {\r\n window.location.href = URI(url).query({\r\n formId: formId,\r\n levelId: donationLevels.selectedLevelId,\r\n amount: donationLevels.selectedAmount\r\n });\r\n }\r\n });\r\n};\r\n\r\nmodule.exports = Donate;", "let _ = require('lodash');\r\nlet Q = require('q');\r\n\r\nmodule.exports = DonationLevels;\r\n\r\nfunction DonationLevels(customOptions) {\r\n\r\n let defaultOptions = {\r\n formId: null,\r\n v: '1.0',\r\n levelsContainer: null,\r\n designationsList: null,\r\n designationsContainer: null,\r\n luminateConfig: null,\r\n customAmountPlaceholder: 'My Preferred Amount',\r\n selectFirstOption: true,\r\n selectedLevelId: null,\r\n selectedAmount: null,\r\n chosenDesignationId: null,\r\n designationName: null,\r\n onAmountChange: () => { },\r\n onDesignationChange: () => { }\r\n }\r\n\r\n let options = $.extend({}, defaultOptions, customOptions);\r\n if (options.selectedAmount) {\r\n options.selectedAmount = this.parseAmount(options.selectedAmount);\r\n }\r\n\r\n _.assign(this, options);\r\n this.onAmountChange(this.selectedAmount); \r\n}\r\n\r\nDonationLevels.prototype = {\r\n getFormDonationLevels() {\r\n return Q($.ajax({\r\n url: `${luminateClientApiConfig.BaseUrl}CRDonationAPI`,\r\n type: 'POST',\r\n data: _.assign({\r\n method: 'getDonationFormInfo',\r\n form_id: this.formId,\r\n v: luminateClientApiConfig.Version,\r\n response_format: 'json'\r\n }, this.luminateConfig),\r\n xhrFields: { withCredentials: true },\r\n }))\r\n .then(JSON.parse)\r\n .then(response => response.getDonationFormInfoResponse);\r\n },\r\n\r\n initialize() {\r\n return this.getFormDonationLevels()\r\n .then(donationFormInfo => this.setDesignations(donationFormInfo))\r\n .then(levels => this.setDonationLevels(levels))\r\n .then(levels => this.renderDonationLevels(levels))\r\n },\r\n\r\n setDesignations(donationFormInfo){\r\n var thisObject = this;\r\n if (donationFormInfo.supportsDesignation){\r\n $.ajax({\r\n url: jnfroutesconfg.Designations + \"?id=\" + this.formId,\r\n type: 'GET',\r\n success: function(result, args){\r\n thisObject.renderDesignations(result);\r\n },\r\n error: function(error){\r\n console.log(error);\r\n }\r\n });\r\n }\r\n return donationFormInfo.donationLevels.donationLevel;\r\n },\r\n\r\n setDonationLevels(levels) {\r\n let levelsList = _.isArray(levels) ? levels : [levels];\r\n\r\n this.donationLevels = _.keyBy(levelsList, 'level_id');\r\n \r\n let predefined = _.filter(levelsList, level => level.userSpecified == 'false');\r\n let sortedPredefined = _.orderBy(predefined, level => parseFloat(level.amount.decimal), 'desc');\r\n let userSpecified = _.filter(levelsList, level => level.userSpecified == 'true');\r\n\r\n if (!this.selectedLevelId && this.selectFirstOption) {\r\n let firstLevel = _.head(sortedPredefined);\r\n this.selectedLevelId = firstLevel ? firstLevel.level_id : null;\r\n this.selectedAmount = firstLevel ? firstLevel.amount.decimal : null;\r\n }\r\n\r\n return [sortedPredefined, userSpecified];\r\n },\r\n\r\n renderDesignations(designations) {\r\n var thisObject = this;\r\n var listOfDesignations = _.map(designations, designation =>\r\n `
  • ${designation.name}
  • `\r\n );\r\n if(this.designationsContainer !== null){\r\n this.designationsContainer.css('display', 'block');\r\n this.designationsList.append(listOfDesignations);\r\n }\r\n let designationsElement = $('.designations-list .designations li.list-element');\r\n designationsElement.on('click', function(){\r\n let clickedDesignation = $(this).attr('data-id'); \r\n designationsElement.removeClass('selected');\r\n \r\n if(clickedDesignation === thisObject.chosenDesignationId) { \r\n thisObject.chosenDesignationId = undefined;\r\n thisObject.designationName = undefined;\r\n thisObject.onDesignationChange(undefined);\r\n } else {\r\n $(this).addClass('selected');\r\n thisObject.chosenDesignationId = clickedDesignation;\r\n thisObject.designationName = $(this).html();\r\n thisObject.onDesignationChange(thisObject.designationName);\r\n }\r\n });\r\n },\r\n\r\n renderDonationLevels([predefined, userSpecified]) {\r\n\r\n _.each(predefined, level => this.renderPredefinedLevel(level));\r\n _.each(userSpecified, level => this.renderUserSpecifiedLevel(level));\r\n },\r\n\r\n\r\n renderPredefinedLevel(level) {\r\n let amount = _.toNumber(level.amount.decimal);\r\n let formattedAmount = _.isInteger(amount) ? amount.toFixed(0) : amount.toFixed(2);\r\n\r\n let button = $(``);\r\n button.click(event => {\r\n event.preventDefault();\r\n this.onElementSelected(button);\r\n });\r\n\r\n if(level.level_id == this.selectedLevelId) {\r\n this.onElementSelected(button);\r\n }\r\n\r\n let levelWrapper = $(`
  • `);\r\n levelWrapper.append(button);\r\n this.levelsContainer.append(levelWrapper);\r\n },\r\n\r\n renderUserSpecifiedLevel(level) {\r\n let input = $(``);\r\n input.keyup(event => this.onElementSelected(input));\r\n\r\n if(level.level_id == this.selectedLevelId && this.selectedAmount) {\r\n input.val(this.selectedAmount);\r\n input.addClass('active');\r\n }\r\n\r\n let levelWrapper = $(`
  • `);\r\n levelWrapper.append(input);\r\n this.levelsContainer.append(levelWrapper);\r\n },\r\n\r\n onElementSelected(element) { \r\n let levelId = element.data('level-id');\r\n let amount = element.data('amount').toString() || element.val();\r\n\r\n if(levelId && amount) {\r\n\r\n this.selectedLevelId = levelId;\r\n this.selectedAmount = this.parseAmount(amount);\r\n this.selectElement(element);\r\n this.onAmountChange(this.selectedAmount);\r\n } else {\r\n this.selectedLevelId = null;\r\n this.selectedAmount = null;\r\n this.selectElement();\r\n }\r\n },\r\n\r\n selectElement(element) {\r\n this.levelsContainer.find('.level-element')\r\n .not(element)\r\n .removeClass('active')\r\n .val('');\r\n \r\n if(element) {\r\n element.addClass('active');\r\n }\r\n },\r\n\r\n parseAmount(amount) {\r\n return amount.replace(/[,\\s\\$]/g, '');\r\n },\r\n\r\n isAmountValid(amount) {\r\n return amount && !isNaN(amount);\r\n },\r\n\r\n isSelectedLevelPredefined() {\r\n if (!this.selectedLevelId) return;\r\n\r\n let selectedLevel = this.donationLevels[this.selectedLevelId];\r\n return selectedLevel.userSpecified !== 'true'; \r\n },\r\n\r\n validate() {\r\n let result = this.getValidationResult(true);\r\n\r\n if (!this.selectedLevelId) {\r\n result = this.getValidationResult(false, 'Please select donation level.');\r\n\r\n } else if (!this.selectedAmount || !this.isAmountValid(this.selectedAmount)) {\r\n result = this.getValidationResult(false, 'Please enter valid donation amount.');\r\n\r\n }\r\n\r\n return result;\r\n },\r\n\r\n getValidationResult(success, message) {\r\n return {\r\n valid: success,\r\n message: message\r\n };\r\n },\r\n\r\n getDonateRequestData() {\r\n //HACK sending all donation as custom donation amount so that \r\n // when user selects donation level and logs in, the amount doesn't change\r\n let selectedLevel = this.donationLevels[this.selectedLevelId];\r\n \r\n let userSpecifiedLevel = selectedLevel.userSpecified == 'false' ? \r\n _.find(this.donationLevels, level => level.userSpecified == 'true') : selectedLevel;\r\n \r\n return {\r\n 'level_id': userSpecifiedLevel.level_id || this.selectedLevelId,\r\n 'other_amount': this.selectedAmount,\r\n 'designated.1.id': this.chosenDesignationId,\r\n 'designated.1.amount': this.chosenDesignationId ? this.selectedAmount : null,\r\n 'designation.name': this.designationName\r\n }\r\n }\r\n}", "module.exports = Dropdown;\r\n\r\nfunction Dropdown(options) {\r\n let element = options.element;\r\n let menuElement = options.menuElement\r\n let windowElement = options.windowElement\r\n\r\n element.on('click', function (e) {\r\n if (menuElement.css('display') != 'none') {\r\n menuElement.css('display', 'none');\r\n } else {\r\n menuElement.css('display', 'block');\r\n }\r\n });\r\n\r\n menuElement.on('click', function (e) {\r\n e.stopPropagation();\r\n });\r\n\r\n windowElement.on('click', function (e) {\r\n if ($(e.target).closest(element).length) { return; }\r\n\r\n if (menuElement.css('display') !== 'none') {\r\n menuElement.css('display', 'none');\r\n }\r\n });\r\n}", "let $ = require('jQuery');\r\nlet eventRepository = require('../eventRepository');\r\nlet moment = require('moment');\r\nlet _ = require('lodash');\r\nrequire('../fullcalendar.min.js');\r\n\r\nmodule.exports = EventsCalendar;\r\n\r\nconst NationalRegion = 'National';\r\n\r\nfunction EventsCalendar(element) {\r\n let region = null;\r\n\r\n element.fullCalendar({\r\n header: {\r\n left: 'prev',\r\n center: 'title',\r\n right: 'next'\r\n },\r\n buttonIcons: {\r\n prev: 'prev',\r\n next: 'next'\r\n },\r\n eventLimit: 1,\r\n eventLimitClick : () => {},\r\n\r\n events: function (start, end, timezone, callback) {\r\n let date = this.getDate();\r\n\r\n let month = date.month() + 1;\r\n let year = date.year();\r\n\r\n eventRepository.getEventsForMonth(year, month)\r\n .then(events => filterEventsByRegion(events, region))\r\n .then(events => events.map(mapEventToCalendarEvent))\r\n .then(events => callback(events))\r\n .then(eventRepository.getEventsForMonth(year, month + 1)) //preload next month events\r\n .done();\r\n },\r\n\r\n dayClick: function (date) {\r\n let observers = window.dateSelectedObservers || [];\r\n observers.forEach(observer => observer.notify(date));\r\n }\r\n });\r\n\r\n $(document).on('regionsFilterChange', (event, params) => {\r\n region = params.regionName;\r\n element.fullCalendar('refetchEvents');\r\n });\r\n\r\n}\r\n\r\nfunction mapEventToCalendarEvent(event) {\r\n return {\r\n title: event.Name,\r\n start: moment(event.StartDate),\r\n end: moment(event.EndDate)\r\n };\r\n}\r\n\r\nfunction filterEventsByRegion(events, region) {\r\n return region ? _.filter(events, event => event.Region === NationalRegion || event.Region === region) : events;\r\n}", "let eventRepository = require('../eventRepository');\r\nlet moment = require('moment');\r\nlet _ = require('lodash');\r\nlet URI = require('urijs');\r\n\r\nmodule.exports = EventsList;\r\n\r\nconst NationalRegion = 'National';\r\n\r\nfunction EventsList(customOptions) {\r\n let defaultOptions = {\r\n region: null,\r\n date: moment(),\r\n listElement: null,\r\n listType: null,\r\n upcomingEventsRegion: null,\r\n upcomingEventsCount: null\r\n }\r\n\r\n let options = $.extend({}, defaultOptions, customOptions);\r\n _.assign(this, options);\r\n\r\n this.registerDateSelectedObserver();\r\n $(document).on('regionsFilterChange', (event, params) => {\r\n this.region = params.regionName;\r\n this.renderEventsListContent();\r\n });\r\n\r\n \r\n this.initializeList();\r\n}\r\n\r\nEventsList.prototype = {\r\n initializeList() {\r\n if (this.listType == 'upcoming') {\r\n eventRepository.getUpcomingEvents(this.upcomingEventsCount, this.upcomingEventsRegion)\r\n .then(events => _.orderBy(events, 'StartDate'))\r\n .then(events => this.setEvents(events))\r\n .done();\r\n\r\n } else {\r\n $.ajax({\r\n url: jnfroutesconfg.EventsApi,\r\n data: {\r\n year: this.date.year(),\r\n month: this.date.month() + 1,\r\n day: this.date.date()\r\n },\r\n success: events => this.setEvents(events),\r\n error: console.log\r\n });\r\n\r\n }\r\n },\r\n\r\n setEvents(events) {\r\n this.events = events;\r\n this.renderEventsListContent();\r\n },\r\n\r\n registerDateSelectedObserver() {\r\n var observer = { notify: date => this.onDateSelected(date) };\r\n\r\n if (!window.eventsListChangedObservers) {\r\n window.dateSelectedObservers = [observer];\r\n } else {\r\n window.dateSelectedObservers.append(observer);\r\n }\r\n },\r\n\r\n onDateSelected(date) {\r\n let year = date.year();\r\n let month = date.month() + 1;\r\n \r\n eventRepository.getEventsForMonth(year, month)\r\n .then(events => events.filter(event =>\r\n date.isSameOrAfter(event.StartDate, 'day') && date.isSameOrBefore(event.EndDate, 'day')\r\n ))\r\n .then(events => this.setEvents(events))\r\n .done();\r\n },\r\n\r\n renderEventsListContent() {\r\n let events = _.filter(this.events, event => this.shouldDisplayEvent(event));\r\n\r\n this.listElement.empty();\r\n if (events.length) {\r\n var listElements = events.map(event => this.renderEventListElement(event));\r\n this.listElement.append(listElements);\r\n\r\n } else {\r\n var emptyListMessage = this.renderEmptyListMessage();\r\n this.listElement.append(emptyListMessage);\r\n }\r\n },\r\n\r\n shouldDisplayEvent(event) {\r\n return !this.region || event.Region === NationalRegion || event.Region === this.region;\r\n },\r\n\r\n renderEventListElement(event) {\r\n var element = $('
  • ');\r\n element.append(this.renderEventDate(event));\r\n element.append(this.renderEventDetails(event));\r\n\r\n return element;\r\n },\r\n\r\n renderEmptyListMessage() {\r\n return $('
  • There are no upcoming events.
  • ')\r\n },\r\n\r\n renderEventDate(event) {\r\n var date = moment.utc(event.StartDate);\r\n\r\n var dayOfWeek = date.format('dddd');\r\n\r\n var container = $('
    ');\r\n container.append('
    ' + date.format('dddd') + '
    ');\r\n container.append('
    ' + date.format('MMM') + '
    ');\r\n container.append('
    ' + date.format('DD') + '
    ');\r\n container.append('
    ' + date.format('h:mma') + '
    ');\r\n\r\n return container;\r\n },\r\n\r\n renderEventDetails(event) { \r\n\r\n let registrationLink = this.getEventRegistrationUrl(event);\r\n\r\n var container = $('
    ');\r\n\r\n container.append(this.renderEventName(event));\r\n container.append(this.renderEventLocation(event));\r\n container.append(this.renderEventDescription(event));\r\n container.append('');\r\n\r\n return container;\r\n },\r\n\r\n renderEventName(event) {\r\n let nameSection = $('
    ' + (event.Name || '') + '
    ');\r\n\r\n if (event.EventPageUrl) {\r\n let link = $(``);\r\n link.append(nameSection);\r\n nameSection = link;\r\n }\r\n\r\n return nameSection;\r\n },\r\n\r\n renderEventLocation(event) {\r\n var location = event.City;\r\n if (event.Street && location) {\r\n location = event.Street + ', ' + location;\r\n }\r\n if (event.LocationName && location) {\r\n location = event.LocationName + ', ' + location\r\n }\r\n\r\n return $(`
    ${location || ''}
    `);\r\n },\r\n\r\n renderEventDescription(event) {\r\n return event.Description ? `
    ${event.Description}
    ` : ''; \r\n },\r\n\r\n getEventRegistrationUrl(event) {\r\n let isPastEvent = moment().isSameOrAfter(event.StartDate, 'day');\r\n\r\n return new URI(eventRegistrationPageUrl).addQuery({\r\n id: event.Id\r\n });\r\n }\r\n}", "let $ = require('jQuery');\r\n\r\nmodule.exports = ExpandableList;\r\n\r\nfunction ExpandableList(options) {\r\n let defaultOptions = {\r\n loadMoreElement: $(''),\r\n elements: [],\r\n hiddenClass: 'hidden',\r\n onListExpanded: () => { }\r\n };\r\n\r\n options = $.extend({}, defaultOptions, options);\r\n\r\n options.loadMoreElement.click(function () {\r\n options.elements.each(function () {\r\n $(this).removeClass(options.hiddenClass);\r\n });\r\n\r\n options.loadMoreElement.hide();\r\n options.onListExpanded();\r\n });\r\n}", "let $ = require('jquery');\r\nlet BreakpointSizer = require('../SizerBreakpoint.js');\r\nlet HorizontalGallery = require('../HorizontalGallery');\r\n\r\nlet FeaturedSponsors = function (customOptions) {\r\n\tlet defaults = {\r\n\t\telement: null,\r\n\t};\r\n\r\n\tlet options = $.extend({}, defaults, customOptions);\r\n\r\n\tif (options.element === null) {\r\n\t\tthrow new Error('element option required');\r\n\t}\r\n\t\r\n\tnew BreakpointSizer({ element: options.element });\r\n\r\n\tnew HorizontalGallery({\r\n\t\telement: options.element\r\n\t});\r\n};\r\n\r\nmodule.exports = FeaturedSponsors;", "let $ = require('jquery');\r\nlet Q = require('q');\r\nlet _ = require('lodash');\r\n\r\nconst SuccessCode = 0;\r\nconst UnauthorizedCode = 8;\r\nconst UserNotFoundCode = 7;\r\n\r\nmodule.exports = BillingInformation;\r\n\r\nfunction BillingInformation(options) {\r\n this.luminateConfig = options.luminateConfig;\r\n\r\n this.container = options.container;\r\n this.inputs = {\r\n firstName: options.container.find('.donation-form-first-name'),\r\n lastName: options.container.find('.donation-form-last-name'),\r\n email: options.container.find('.donation-form-email'),\r\n zipCode: options.container.find('.donation-form-zip-code'),\r\n street1: options.container.find('.donation-form-street-address-1'),\r\n street2: options.container.find('.donation-form-street-address-2'),\r\n city: options.container.find('.donation-form-city'),\r\n state: options.container.find('.donation-form-state'),\r\n country: options.container.find('.donation-form-country'),\r\n title: options.container.find('.donation-form-title')\r\n };\r\n}\r\n\r\nBillingInformation.prototype = {\r\n getUserInformation() {\r\n return Q($.ajax({\r\n url: jnfroutesconfg.GetUserInfoUrl,\r\n type: 'POST',\r\n xhrFields: { withCredentials: true }\r\n }))\r\n },\r\n\r\n fillBillingInformation() {\r\n return this.getUserInformation()\r\n .then(this.parseResponse)\r\n .then(info => this.setInputValues(info));\r\n },\r\n\r\n setInputValues(info) {\r\n if (!info) { return; }\r\n\r\n this.inputs.firstName.val(info.name.first);\r\n this.inputs.lastName.val(info.name.last);\r\n this.inputs.email.val(info.email.primary_address);\r\n this.inputs.zipCode.val(info.primary_address.zip);\r\n this.inputs.street1.val(info.primary_address.street1);\r\n this.inputs.street2.val(info.primary_address.street2);\r\n this.inputs.city.val(info.primary_address.city);\r\n\r\n this.setSelectValue(this.inputs.state, info.primary_address.state);\r\n this.setSelectValue(this.inputs.country, info.primary_address.country);\r\n this.setSelectValue(this.inputs.title, info.name.title);\r\n },\r\n\r\n setSelectValue(element, value) {\r\n let availableOptions = _.map(element.children(), option => option.value);\r\n if (value && _.includes(availableOptions, value)) {\r\n element.val(value);\r\n element.addClass('selected');\r\n }\r\n },\r\n\r\n getDonateRequestData() {\r\n return {\r\n 'billing.address.city': this.inputs.city.val(),\r\n 'billing.address.state': this.inputs.state.val(),\r\n 'billing.address.street1': this.inputs.street1.val(),\r\n 'billing.address.street2': this.inputs.street2.val(),\r\n 'billing.address.zip': this.inputs.zipCode.val(),\r\n 'billing.address.country': this.inputs.country.val(),\r\n 'billing.name.first': this.inputs.firstName.val(),\r\n 'billing.name.last': this.inputs.lastName.val(),\r\n 'billing.name.title': this.inputs.title.val(),\r\n 'donor.email': this.inputs.email.val()\r\n };\r\n },\r\n\r\n validate() {\r\n let isValid = true;\r\n let requiredInput = this.container.find('.required-input');\r\n requiredInput.css('border', '1px solid #939598');\r\n $('p.required-warning').remove();\r\n for (let i = 0; i < requiredInput.length; i++) {\r\n if (!$(requiredInput[i]).val() || $(requiredInput[i]).val().length < 1) {\r\n $(requiredInput[i]).after('

    required field

    ').css('border', '1px solid red');\r\n isValid = false;\r\n }\r\n }\r\n\r\n return isValid;\r\n },\r\n\r\n parseResponse(response) {\r\n switch (response.Result) {\r\n case SuccessCode: return response.Content;\r\n case UnauthorizedCode: return null;\r\n case UserNotFoundCode: throw new Error('User profile not found in luminate');\r\n default: throw new Error('Unknown Error occured while fetching User info');\r\n }\r\n }\r\n}", "module.exports = DonationDetailsRepository;\r\n\r\nfunction DonationDetailsRepository(storage) {\r\n if (!storage) {\r\n throw new Error(\"DontaionDetailsRepository storage must be specified\");\r\n }\r\n this.storage = storage;\r\n}\r\n\r\nDonationDetailsRepository.prototype = {\r\n set(id, data) {\r\n const serializedData = JSON.stringify(data);\r\n const key = this.getItemKey(id);\r\n \r\n this.storage.setItem(key, serializedData);\r\n },\r\n\r\n get(id) {\r\n const key = this.getItemKey(id);\r\n const serializedData = this.storage.getItem(key);\r\n\r\n return JSON.parse(serializedData);\r\n },\r\n\r\n getItemKey(id) {\r\n return `jnf-donation-${id}`;\r\n }\r\n}", "let $ = require('jquery');\r\n\r\nmodule.exports = FillLoginData;\r\n\r\n\r\nfunction FillLoginData(data) {\r\n \r\n $.ajax({\r\n type: 'POST',\r\n url: jnfroutesconfg.GetUserInfoUrl,\r\n contentType: 'application/json; charset=utf-8',\r\n success: function (response) {\r\n if (response.Result == 0) {\r\n $('.jnf-widget-full-donation-preset-values-value.required-input.donation-form-last-name').val(response.Content.name.last);\r\n $('.jnf-widget-full-donation-preset-values-value.required-input.donation-form-email').val(response.Content.email.primary_address);\r\n }\r\n },\r\n error: function (error) {\r\n console.log(error);\r\n }\r\n });\r\n\r\n\r\n\r\n};", "let _ = require('lodash');\r\nlet URI = require('urijs');\r\nlet Q = require('q');\r\nlet uuid = require('uuid');\r\nrequire('../jssocials.min.js');\r\n\r\nlet DonationLevels = require('../DonationLevels');\r\nlet BillingInformation = require('./BillingInformation');\r\nlet PaymentInfo = require('./PaymentInfo');\r\nlet ThankYouMessage = require('./ThankYouMessage');\r\nlet LuminateSession = require('../LuminateSession');\r\nlet DonationDetailsRepository = require('./DonationDetailsRepository');\r\nlet Tracker = require('../Tracking/Tracker');\r\nlet PaymentMethods = require('./PaymentMethods');\r\n//let trackVirtualPageView = require('../Tracking/Tracker').trackVirtualPageView;\r\n\r\nconst SCREENS = {\r\n DONATION_LEVEL: 'amount',\r\n PAYMENT_INFO: 'payment',\r\n BILLING_INFO: 'donorinfo',\r\n SUMMARY: 'thankyou',\r\n};\r\n\r\nmodule.exports = FullDonationForm;\r\n\r\nfunction FullDonationForm({form}) {\r\n let params = URI.parseQuery(window.location.search);\r\n\r\n let giftInMemoryOf = $('.in-memory-of');\r\n let formID = params.formId || $('.donate-form-wrapper').attr('data-formID');\r\n let selectGiftDuration = $('.select-gift-duration');\r\n let makeSelectionWindow = $('.make-selection');\r\n let errorField = $('.error-field .error-text');\r\n let nextButton = $('#next-button');\r\n let goBackButton = $('#back-button');\r\n let successMessage = $('#thank-you-message');\r\n let selectDonateForm = $('#select-amount-form');\r\n let honoreeData = $('#honoree-data-form .honoree-data');\r\n let honoreeInputField = $('#honoree-data-form #honoree');\r\n let inHonorOf = $('#in-honor-of');\r\n let inMemoryOf = $('#in-memory-of');\r\n let once = $('.once-monthly #once');\r\n let monthly = $('.once-monthly #monthly');\r\n let tributeType = 'memory';\r\n let chooseDesignations = $('#click-for-designations');\r\n let donationFormPicture = $('.fill-donate-form-picture');\r\n let printThankYouPage = $('.print-thank-you');\r\n let designasionItem = $(\"#designations-select-item\");\r\n let designationItemArrow = $(\"#select-designation-item\");\r\n let designationSelectedItem = $(\".designations-selected-item\");\r\n let billingForm1 = $('#billing-information');\r\n let billingNextButton1 = $('#billing-1-next-button');\r\n let previous1 = $('#billing-1-previous-button');\r\n let billingForm2 = $('#billing-personal-information');\r\n let donateButton = $('#billing-2-next-button');\r\n let previous2 = $('#billing-2-previous-button');\r\n let honoreeNext = $('#honoree-next-button');\r\n let cancelButton1 = $('#billing-1-cancel-button');\r\n let cancelButton2 = $('#billing-2-cancel-button');\r\n let inputLevel = $(\"li.donation-level > input.level-element\");\r\n let buttonLevel = $(\"li.donation-level > button.level-element\");\r\n let honoreForm = $(\".honoree-data\");\r\n\r\n if (params.donationId) {\r\n const repository = new DonationDetailsRepository(window.sessionStorage);\r\n const donationData = repository.get(params.donationId);\r\n finishDonation(params.donationId, donationData);\r\n hideLoadingOverlay();\r\n return;\r\n } else if (params.error) {\r\n errorField[0].innerHTML = 'There was a problem encountered while processing your donation. Please try again later.'\r\n }\r\n\r\n let donationFrequency = null;\r\n let sendingRequest = false;\r\n let currentScreen = null;\r\n switchScreen(SCREENS.DONATION_LEVEL); \r\n \r\n let luminateConfig = {\r\n api_key: luminateClientApiConfig.ApiKey,\r\n v: luminateClientApiConfig.Version\r\n };\r\n\r\n let donationId = uuid.v4();\r\n let levelsContainer = form.find('.levels-container');\r\n let designationsContainer = form.find('.designations-list');\r\n let designationsList = form.find('.designations-list .designations');\r\n let designationsListItem = form.find('.designations-list .designations .list-element');\r\n let designations = designationsList.find('li'); \r\n\r\n let donationLevels = new DonationLevels({\r\n formId: formID,\r\n levelsContainer: levelsContainer,\r\n designationsList: designationsList,\r\n designationsContainer: designationsContainer,\r\n luminateConfig: luminateConfig,\r\n selectedLevelId: params.levelId,\r\n selectedAmount: params.amount,\r\n selectFirstOption: false,\r\n });\r\n\r\n donationLevels.onAmountChange = amount => {\r\n Tracker.donationFormAmountClicked({\r\n formId: formID, \r\n donationAmount: amount,\r\n preselectedAmoutChosen: donationLevels.isSelectedLevelPredefined()\r\n });\r\n form.find('.donation-amount').text(`Gift Amount $${amount}`);\r\n }\r\n\r\n donationLevels.onDesignationChange = designation => {\r\n Tracker.donationFormDesignationChange({\r\n formId: formID,\r\n designate: designation,\r\n });\r\n }\r\n\r\n let billingInfo = new BillingInformation({\r\n container: form.find('#billing-personal-information'),\r\n luminateConfig: luminateConfig,\r\n });\r\n\r\n let paymentInfo = new PaymentInfo({ $container: billingForm1, transactionId: donationId });\r\n\r\n Q.allSettled([\r\n donationLevels.initialize(), \r\n billingInfo.fillBillingInformation()\r\n ]).finally(() => hideLoadingOverlay())\r\n .done();\r\n\r\n selectGiftDuration.on('click', function () {\r\n makeSelectionWindow.css('display', 'block');\r\n });\r\n\r\n once.on('click', function () {\r\n monthly.removeClass('selected');\r\n $(this).addClass('selected');\r\n donationFrequency = null;\r\n });\r\n\r\n monthly.on('click', function () {\r\n $(this).addClass('selected');\r\n donationFrequency = 'monthly';\r\n once.removeClass('selected');\r\n });\r\n\r\n $(\".select-designation-item, .select-item-design\").on('click', function(e){\r\n e.stopPropagation();\r\n Tracker.donationFormDesignateGiftOpened({ formId: formID });\r\n designationsList.toggle();\r\n }); \r\n\r\n $(document).ready(function() {\r\n designationSelectedItem.css(\"display\",\"none\");\r\n $(document).on(\"click\",\"li.list-element\",function(){ \r\n if($(\"li.list-element\").hasClass('selected'))\r\n {\r\n $(\"div.designations-list > p\").css('display', 'none');\r\n\r\n designasionItem.text($(this).text()); \r\n designationSelectedItem.css(\"display\",\"\");\r\n }\r\n else{\r\n designationSelectedItem.css(\"display\",\"none\");\r\n designasionItem.text(''); \r\n $(\"div.designations-list > p\").css('display', \"\");\r\n }\r\n });\r\n \r\n $(document).on(\"click\", \".select-designation-item, .select-item-design\", function(e){\r\n e.stopPropagation();\r\n Tracker.donationFormDesignateGiftOpened({ formId: formID });\r\n designationsList.toggle();\r\n });\r\n\r\n $(document).on(\"click\", \"button.level-element\", function() { \r\n $(\"li.donation-level > input.level-element\").addClass('notActive'); \r\n\r\n $(\"li.donation-level > button.level-element\").removeClass('notActive');\r\n $(\"li.donation-level > button.level-element\").not('.active').addClass('notActive');\r\n });\r\n\r\n $(document).on(\"click\", \"input.level-element\", function() { \r\n $(\"li.donation-level > input.level-element\").removeClass('notActive'); \r\n $(\"li.donation-level > input.level-element\").addClass('active'); \r\n\r\n $(\"li.donation-level > button.level-element\").addClass('notActive');\r\n $(\"li.donation-level > button.level-element\").removeClass('active');\r\n });\r\n });\r\n\r\n $(window).bind(\"load\", function () { \r\n SetOffsetFormHonoreeData();\r\n });\r\n\r\n $('.donate-form-wrapper').on(\"click\", function () {\r\n SetOffsetFormHonoreeData();\r\n });\r\n\r\n function SetOffsetFormHonoreeData() {\r\n var offsetTopSteps = $(\".designations-steps\").offset().top;\r\n var offsetTopForm = $(\".in-memory-of\").offset().top;\r\n var heightForm = $(\".in-memory-of\").height();\r\n var marginTopForm = parseInt($(\".in-memory-of\").css('margin-top'));\r\n var paddingTopForm = parseInt($(\".in-memory-of\").css('padding-top'));\r\n\r\n var correctOffsetForm = offsetTopForm + marginTopForm + paddingTopForm + heightForm; \r\n honoreForm.css(\"margin-top\",offsetTopSteps - correctOffsetForm);\r\n }\r\n\r\n giftInMemoryOf.on('click', function () {\r\n Tracker.donationFormHonorMemoryOfOpened({ formId: formID });\r\n honoreeData.toggle();\r\n });\r\n inHonorOf.on('change', function () {\r\n $(this).addClass('checked');\r\n inMemoryOf.removeClass('checked');\r\n tributeType = $(this).val();\r\n });\r\n inMemoryOf.on('change', function () {\r\n $(this).addClass('checked');\r\n inHonorOf.removeClass('checked');\r\n tributeType = $(this).val();\r\n });\r\n honoreeNext.on('click', function () {\r\n if (!validateHonoree()) { return; }\r\n Tracker.donationFormHonorMemoryOfSubmit({\r\n formId: formID,\r\n inHonorSelected: $('#honoree').val() && tributeType === 'tribute',\r\n inMemorySelected: $('#honoree').val() && tributeType === 'memorial',\r\n })\r\n switchScreen(SCREENS.PAYMENT_INFO);\r\n }); \r\n\r\n previous1.on('click', function () {\r\n Tracker.donationFormBackButtonClick({ formId: formID, step: currentScreen });\r\n switchScreen(SCREENS.DONATION_LEVEL);\r\n });\r\n previous2.on('click', function () {\r\n Tracker.donationFormBackButtonClick({ formId: formID, step: currentScreen });\r\n switchScreen(SCREENS.PAYMENT_INFO);\r\n });\r\n\r\n cancelButton1.add(cancelButton2).on('click', function () {\r\n Tracker.donationFormCancelButtonClick({ formId: formID, step: currentScreen });\r\n switchScreen(SCREENS.DONATION_LEVEL);\r\n });\r\n\r\n $(document).on('click', function (event) {\r\n if (!$(event.target).closest(honoreeData).length && !$(event.target).closest(giftInMemoryOf).length) {\r\n honoreeData.css('display', 'none');\r\n }\r\n if(designationsList.css('display') !== 'none') {\r\n designationsList.css('display', 'none');\r\n }\r\n });\r\n\r\n nextButton.on('click', function (evt) {\r\n evt.stopPropagation();\r\n errorField[0].innerHTML = '';\r\n let validationResult = donationLevels.validate();\r\n if (!validationResult.valid) {\r\n errorField[0].innerHTML = validationResult.message;\r\n scrollToFormTop();\r\n return;\r\n }\r\n\r\n switchScreen(SCREENS.PAYMENT_INFO);\r\n // Live ticket 422919, second step\r\n window['optimizely'] = window['optimizely'] || [];\r\n window['optimizely'].push({\r\n type: \"event\",\r\n eventName: \"jnf_2_donations_step_2\",\r\n tags: {\r\n revenue: 0, // Optional in cents as integer (500 == $5.00)\r\n value: 0.00 // Optional as float\r\n }\r\n });\r\n });\r\n billingNextButton1.on('click', function () {\r\n if (!paymentInfo.validateCardData()) { return; }\r\n switchScreen(SCREENS.BILLING_INFO);\r\n\r\n // Live ticket 422919, third step\r\n window['optimizely'] = window['optimizely'] || [];\r\n window['optimizely'].push({\r\n type: \"event\",\r\n eventName: \"jnf_2_donations_step_3\",\r\n tags: {\r\n revenue: 0, // Optional in cents as integer (500 == $5.00)\r\n value: 0.00 // Optional as float\r\n }\r\n });\r\n });\r\n goBackButton.on('click', function () {\r\n switchScreen(SCREENS.DONATION_LEVEL);\r\n });\r\n\r\n $('select').change(function () {\r\n $(this).addClass('selected');\r\n });\r\n\r\n form.find('[data-preview]').click(function (e) {\r\n e.preventDefault();\r\n switchScreen(this.dataset.preview);\r\n });\r\n\r\n donateButton.on('click', function () {\r\n if (sendingRequest || !billingInfo.validate()) {\r\n return;\r\n }\r\n \r\n let donateBtn = $(this);\r\n sendingRequest = true;\r\n $(this).html('').addClass('sending-request');\r\n\r\n let selectedPaymentMethod = paymentInfo.getSelectedPaymentMethod();\r\n \r\n let donationDuration = 0;\r\n let honoreeName = $('#honoree').val();\r\n let notifyTitle = $('#honoree-title').val();\r\n let notifyFirstName = $('#honoree-first-name').val();\r\n let notifyLastName = $('#honoree-last-name').val();\r\n let notifyStreetAddress1 = $('#honoree-street-address-1').val();\r\n let notifyStreetAddress2 = $('#honoree-street-address-2').val();\r\n let notifyCity = $('#honoree-city').val();\r\n let notifyState = $('#honoree-state').val();\r\n let notifyZipCode = $('#honoree-zip-code').val();\r\n let notifyCountry = $('#honoree-country').val();\r\n \r\n $(this).html('').addClass('sending-request');\r\n\r\n let billingData = billingInfo.getDonateRequestData();\r\n let donationData = _.assign({\r\n 'sustaining.frequency': donationFrequency,\r\n 'sustaining.duration': donationDuration,\r\n 'method': selectedPaymentMethod == PaymentMethods.CARD ? 'donate' : 'startDonation',\r\n 'api_key': luminateClientApiConfig.ApiKey,\r\n 'form_id': formID,\r\n 'v': luminateClientApiConfig.Version,\r\n 'response_format': 'json',\r\n 'tribute.honoree.name.full': honoreeName,\r\n 'shipping.name.first': notifyFirstName,\r\n 'shipping.name.last': notifyLastName,\r\n 'shipping.address.title': notifyTitle,\r\n 'shipping.address.street1': notifyStreetAddress1,\r\n 'shipping.address.street2': notifyStreetAddress2,\r\n 'shipping.address.city': notifyCity,\r\n 'shipping.address.zip': notifyZipCode,\r\n 'shipping.address.state': notifyState,\r\n 'shipping.address.country': notifyCountry,\r\n 'tribute.type': tributeType,\r\n 'source': params.s_src,\r\n 'sub_source': params.sub_src,\r\n 'is_amount_predefined': donationLevels.isSelectedLevelPredefined(),\r\n }, donationLevels.getDonateRequestData(), billingData, paymentInfo.getDonationRequestData());\r\n \r\n //for testing purposes only\r\n if (window.location.hostname === 'localhost') { donationData['df_preview'] = true; }\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: `${luminateClientApiConfig.BaseUrl}CRDonationAPI`,\r\n data: donationData,\r\n xhrFields: { withCredentials: true },\r\n success: function (response) {\r\n let responseObject = JSON.parse(response);\r\n\r\n if (selectedPaymentMethod == PaymentMethods.CARD) {\r\n sendingRequest = false;\r\n donateBtn.html('DONATE').removeClass('sending-request');\r\n\r\n const id = responseObject.donationResponse.donation.transaction_id;\r\n finishDonation(id, donationData, responseObject)\r\n \r\n } else {\r\n\r\n const repository = new DonationDetailsRepository(window.sessionStorage);\r\n\r\n repository.set(donationId, donationData);\r\n window.location.href = responseObject.donationResponse.redirect.url;\r\n }\r\n },\r\n error: function (error) {\r\n let errorWithoutNewLines = error.responseText.replace(/(\\r\\n|\\n|\\r)/gm, \"\");\r\n let errorObject = JSON.parse(errorWithoutNewLines);\r\n let errorMessage = errorObject.donationResponse.errors.pageError;\r\n errorField.html(errorMessage);\r\n sendingRequest = false;\r\n \r\n donateBtn.html('DONATE').removeClass('sending-request');\r\n if (errorObject.donationResponse.errors.code == 135) {\r\n billingForm2.css('display', 'none');\r\n billingForm1.css('display', 'block');\r\n $('#expiration-month').after('

    required field

    ').css('border', '1px solid red');\r\n }\r\n else if (errorObject.donationResponse.errors.code == 136) {\r\n billingForm2.css('display', 'none');\r\n billingForm1.css('display', 'block');\r\n $('#expiration-year').after('

    required field

    ').css('border', '1px solid red');\r\n }\r\n else if (errorObject.donationResponse.errors.code == 134) {\r\n billingForm2.css('display', 'none');\r\n billingForm1.css('display', 'block');\r\n }\r\n }\r\n });\r\n });\r\n\r\n printThankYouPage.on('click', function () {\r\n Tracker.donationFormPrintClick();\r\n window.print();\r\n });\r\n\r\n function hideLoadingOverlay() {\r\n let overlay = form.find('.loading-overlay');\r\n overlay.css('opacity', 0);\r\n overlay.css('visibility', 'hidden');\r\n }\r\n\r\n let scrollOffset = 160;\r\n function validateHonoree() {\r\n $('p.required-warning').remove();\r\n if (honoreeInputField.val().length < 1) {\r\n\r\n $('html, body').animate({\r\n scrollTop: giftInMemoryOf.offset().top - scrollOffset\r\n }, 500);\r\n honoreeInputField.after('

    required field

    ').css('border', '1px solid red');\r\n return false;\r\n }\r\n makeSelectionWindow.removeClass('required-warning');\r\n return true;\r\n }\r\n\r\n \r\n\r\n function scrollToFormTop() {\r\n $('html, body').animate({\r\n scrollTop: form.offset().top - scrollOffset\r\n }, 500);\r\n }\r\n\r\n function switchScreen(screenType) {\r\n selectDonateForm.css('display', screenType === SCREENS.DONATION_LEVEL ? 'block' : 'none');\r\n billingForm1.css('display', screenType === SCREENS.PAYMENT_INFO ? 'block' : 'none');\r\n billingForm2.css('display', screenType === SCREENS.BILLING_INFO ? 'block' : 'none');\r\n successMessage.css('display', screenType === SCREENS.SUMMARY ? 'block' : 'none');\r\n donationFormPicture.css('display', screenType !== SCREENS.SUMMARY ? 'block' : 'none');\r\n $(window).scrollTop($('.fill-donate-form-wrapper:visible').offset().top);\r\n\r\n currentScreen = screenType;\r\n if (currentScreen === SCREENS.PAYMENT_INFO) { onPaymentScreenOpen(); }\r\n\r\n const virtualPath = `${window.location.pathname}/${screenType}`;\r\n Tracker.trackVirtualPageView({ virtualPath });\r\n }\r\n\r\n function onPaymentScreenOpen() {\r\n Tracker.donationFormPaymentScreenOpen({\r\n formId: formID,\r\n designate: donationLevels.designationName,\r\n donationAmount: donationLevels.selectedAmount,\r\n preselectedAmoutChosen: donationLevels.isSelectedLevelPredefined(),\r\n donationType: donationFrequency || 'once',\r\n inHonorSelected: Boolean($('#honoree').val()) && tributeType === 'tribute',\r\n inMemorySelected: Boolean($('#honoree').val()) && tributeType === 'memorial',\r\n })\r\n }\r\n\r\n function finishDonation(id, donationData, responseObject) {\r\n new ThankYouMessage({\r\n $element: $('.jnf-widget.jnf-widget-full-donation.thank-you-message'),\r\n donationData: donationData,\r\n responseObject\r\n });\r\n\r\n switchScreen(SCREENS.SUMMARY);\r\n const donationFrequency = donationData[\"sustaining.frequency\"] || \"once\";\r\n const tributeHonoreeName = donationData[\"tribute.honoree.name.full\"];\r\n const tributeType = donationData[\"tribute.type\"];\r\n\r\n Tracker.donationFormPaymentSuccess({\r\n formId: donationData[\"form_id\"],\r\n designate: donationData[\"designation.name\"],\r\n donationAmount: donationData[\"other_amount\"],\r\n donationType: donationFrequency || 'once',\r\n inHonorSelected: tributeHonoreeName && tributeType === 'tribute',\r\n inMemorySelected: tributeHonoreeName && tributeType === 'memorial',\r\n preselectedAmoutChosen: donationData[\"is_amount_predefined\"],\r\n ecommerce: {\r\n purchase: {\r\n products: [{\r\n name: `$${donationData[\"other_amount\"]}`,\r\n price: parseFloat(donationData[\"other_amount\"]),\r\n quantity: 1,\r\n }],\r\n actionField: {\r\n revenue: parseFloat(donationData[\"other_amount\"]),\r\n id: `${id}`\r\n }\r\n }\r\n }\r\n });\r\n\r\n $('.start-campaign').on('click', () => Tracker.donationFormStartCampaignClick());\r\n $('.share-start-campaign-buttons').find('.jssocials-share-link, .facebook-share-button')\r\n .on('click', () => Tracker.donationFormSocialButtonClick());\r\n }\r\n}", "const PaymentMethods = require('./PaymentMethods');\r\nconst URI = require('urijs');\r\n\r\nmodule.exports = PaymentInfo;\r\n\r\nfunction PaymentInfo({ $container, transactionId }) {\r\n let paypalPayment = $container.find('#paypal-payment');\r\n let cardInfo = $container.find('.card-info');\r\n let creditCardPayment = $container.find('#credit-card-payment');\r\n let selectedPaymentMethod = PaymentMethods.CARD;\r\n \r\n creditCardPayment.on('change', function () {\r\n $(this).addClass('checked');\r\n selectedPaymentMethod = PaymentMethods.CARD;\r\n paypalPayment.removeClass('checked');\r\n clearValidationErrors();\r\n cardInfo.removeClass('inactive');\r\n });\r\n\r\n paypalPayment.on('change', function () {\r\n $(this).addClass('checked');\r\n selectedPaymentMethod = PaymentMethods.PAYPAL;\r\n creditCardPayment.removeClass('checked');\r\n clearValidationErrors();\r\n cardInfo.addClass('inactive');\r\n });\r\n\r\n function clearValidationErrors() {\r\n $container.find('.required-input').css('border', '1px solid #939598');\r\n $container.find('p.required-warning').remove();\r\n }\r\n\r\n this.validateCardData = function () {\r\n clearValidationErrors();\r\n let requiredInputCard = $container.find('.required-input.card');\r\n\r\n if (selectedPaymentMethod !== PaymentMethods.CARD) {\r\n return true;\r\n }\r\n\r\n let validCreditCardData = true;\r\n for (let i = 0; i < requiredInputCard.length; i++) {\r\n\r\n if (!$(requiredInputCard[i]).val() || $(requiredInputCard[i]).val().length < 1) {\r\n $(requiredInputCard[i]).after('

    required field

    ').css('border', '1px solid red');\r\n validCreditCardData = false;\r\n }\r\n }\r\n\r\n if ($('#security-code').val().length > 0 && $('#security-code').val().length !== 3 && $('#security-code').val().length !== 4) {\r\n $('#security-code').after('

    CVV code should be 3 or 4 characters long

    ').css('border', '1px solid red');\r\n validCreditCardData = false;\r\n }\r\n\r\n if (!validCreditCardData || $('#credit-card-number').val().length < 1 || $('#expiration-month').val().length < 1 || $('#expiration-year').val().length < 1 || ($('#security-code').val().length !== 3 && $('#security-code').val().length !== 4)) {\r\n\r\n $('html, body').animate({\r\n scrollTop: form.offset().top - scrollOffset\r\n }, 500);\r\n }\r\n\r\n return validCreditCardData;\r\n }\r\n\r\n this.getDonationRequestData = function () {\r\n switch (selectedPaymentMethod) {\r\n case PaymentMethods.CARD: return {\r\n 'card_cvv': $container.find('#security-code').val(),\r\n 'card_exp_date_month': $container.find('#expiration-month').val(),\r\n 'card_exp_date_year': $container.find('#expiration-year').val(),\r\n 'card_number': $container.find('#credit-card-number').val(),\r\n }\r\n case PaymentMethods.PAYPAL: return {\r\n 'extproc': 'paypal',\r\n 'finish_success_redirect': `${window.location.href}?donationId=${transactionId}`,\r\n 'finish_error_redirect': `${window.location.href}?error=true`\r\n };\r\n default: return {};\r\n }\r\n }\r\n\r\n this.getSelectedPaymentMethod = function () {\r\n return selectedPaymentMethod;\r\n }\r\n}", "module.exports = {\r\n CARD: 'card',\r\n PAYPAL: 'paypal'\r\n};", "let $ = require('jquery');\r\n\r\nmodule.exports = ReplaceImgWithSvg;\r\n\r\n\r\nfunction ReplaceImgWithSvg(elements) {\r\n\r\n elements.each(function () {\r\n var $img = $(this);\r\n var imgID = $img.attr('id');\r\n var imgClass = $img.attr('class');\r\n var imgURL = $img.attr('src');\r\n\r\n $.get(imgURL, function (data) {\r\n // Get the SVG tag, ignore the rest\r\n var $svg = $(data).find('svg');\r\n\r\n // Add replaced image's ID to the new SVG\r\n if (typeof imgID !== 'undefined') {\r\n $svg = $svg.attr('id', imgID);\r\n }\r\n // Add replaced image's classes to the new SVG\r\n if (typeof imgClass !== 'undefined') {\r\n $svg = $svg.attr('class', imgClass + ' replaced-svg');\r\n }\r\n\r\n // Remove any invalid XML tags as per http://validator.w3.org\r\n $svg = $svg.removeAttr('xmlns:a');\r\n\r\n // Replace image with new SVG\r\n $img.replaceWith($svg);\r\n\r\n }, 'xml');\r\n\r\n });\r\n}\r\n\r\n", "let _ = require('lodash');\r\n\r\nlet ReplaceImgWithSvg = require('./ReplaceImgWithSvg');\r\n\r\nmodule.exports = ThankYouMessage;\r\n\r\nfunction ThankYouMessage({\r\n $element,\r\n donationData,\r\n responseObject \r\n}) {\r\n let designationName = donationData[\"designation.name\"] ? ` for ${donationData[\"designation.name\"]}` : '';\r\n let shareLink = getShareLink(designationName);\r\n\r\n let subTable = {\r\n \"amount\": donationData['other_amount'],\r\n \"frequency\": donationData['sustaining.frequency'],\r\n \"designation\": designationName,\r\n \"billingFirstName\": donationData[\"billing.name.first\"],\r\n \"billingLastName\": donationData[\"billing.name.last\"],\r\n \"billingStreet1\": donationData[\"billing.address.street1\"],\r\n \"billingStreet2\": donationData[\"billing.address.street2\"],\r\n \"billingCity\": donationData[\"billing.address.city\"],\r\n \"billingState\": donationData[\"billing.address.state\"],\r\n \"billingZipcode\": donationData[\"billing.address.zip\"],\r\n \"billingCountry\": donationData[\"billing.address.country\"],\r\n \"billingEmail\": donationData[\"donor.email\"],\r\n \"tributeHonoreeName\": donationData['tribute.honoree.name.full'],\r\n \"shippingNameFirst\": donationData['shipping.name.first'],\r\n \"shippingNameLast\": donationData['shipping.name.last'],\r\n \"shippingTitle\": donationData['shipping.address.title'],\r\n \"shippingStreet1\": donationData['shipping.address.street1'],\r\n \"shippingStreet2\": donationData['shipping.address.street2'],\r\n \"shippingCity\": donationData['shipping.address.city'],\r\n \"shippingZipcode\": donationData['shipping.address.zip'],\r\n \"shippingState\": donationData['shipping.address.state'],\r\n \"shippingCountry\": donationData['shipping.address.country'],\r\n };\r\n\r\n subTable = _.transform(subTable, (result, value, key) => {\r\n result[key] = _.escape(value);\r\n });\r\n\r\n subTable.facebookShareLink = 'Facebook';\r\n \r\n const $content = $element.find('.thank-you-message-content');\r\n let messageTemplate = $content.html();\r\n\r\n _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\r\n const compiled = _.template(messageTemplate);\r\n const message = compiled(subTable);\r\n $content.html(message);\r\n\r\n $('#name-of-donor').html(donationData[\"billing.name.first\"] + \" \" + donationData[\"billing.name.last\"]);\r\n $('#thank-you-message-amount').html(donationData[\"other_amount\"]);\r\n $('#thank-you-message-designation').html(designationName);\r\n\r\n $('#thank-you-name').html(donationData[\"billing.name.first\"] + \" \" + donationData[\"billing.name.last\"]);\r\n $('#thank-you-address-1').html(donationData[\"billing.address.street1\"]);\r\n $('#thank-you-address-2').html(donationData[\"billing.address.street2\"]);\r\n $('#thank-you-city').html(donationData[\"billing.address.city\"]);\r\n $('#thank-you-state').html(donationData[\"billing.address.state\"]);\r\n $('#thank-you-zip-code').html(donationData[\"billing.address.zip\"]);\r\n $('#thank-you-country').html(donationData[\"billing.address.country\"]);\r\n $('#thank-you-email').html(donationData[\"donor.email\"]);\r\n $('#thank-you-amount').html(`$${donationData['other_amount']}`);\r\n\r\n if (responseObject) {\r\n $('.thank-you-transaction-details').show();\r\n $('#thank-you-tax-deductible-amount').html(responseObject.donationResponse.donation.tax_deductible_amount.formatted);\r\n $('#thank-you-confirmation-code').html(responseObject.donationResponse.donation.confirmation_code);\r\n }\r\n\r\n\r\n socialShare(shareLink);\r\n}\r\n\r\nfunction socialShare(shareLink) {\r\n var facebookShare = $('.facebook-share-button');\r\n var socialMediaShare = $('#social-media-share');\r\n\r\n $.ajaxSetup({ cache: true });\r\n $.getScript('//connect.facebook.net/en_US/sdk.js', function () {\r\n FB.init({\r\n appId: '493177397699054',\r\n version: 'v2.9' // or v2.1, v2.2, v2.3, ...\r\n });\r\n\r\n facebookShare.on('click', function () {\r\n\r\n FB.ui({\r\n method: 'share',\r\n href: shareLink\r\n }, function (response) {\r\n console.log(arguments);\r\n });\r\n });\r\n });\r\n\r\n socialMediaShare.jsSocials({\r\n shares: [{\r\n share: \"twitter\",\r\n logo: \"ResourcePackages/JNF/Mvc/Pictures/twitter-orange.svg\",\r\n css: \"svg\",\r\n text: \"\",\r\n url: shareLink\r\n }, {\r\n share: \"email\",\r\n logo: \"ResourcePackages/JNF/Mvc/Pictures/email-orange.svg\",\r\n css: \"svg\",\r\n text: \"I have just donated to JNF. You can do the same here:\",\r\n shareIn: \"blank\"\r\n }],\r\n showLabel: false,\r\n showCount: false,\r\n shareIn: \"popup\",\r\n });\r\n let svgImages = $('img.svg, img.jssocials-share-logo');\r\n ReplaceImgWithSvg(svgImages);\r\n}\r\n\r\nfunction getShareLink(designationName) {\r\n const chosenShareImage = $('.fill-donate-form-picture').css('background-image').slice(4, -1).replace(/\\\"/gi, \"\");\r\n const description = encodeURIComponent(`I have just donated to JNF${designationName}. Join me in building a bright future for the land and people of Israel.`);\r\n const imageUrl = encodeURIComponent(chosenShareImage);\r\n const redirectUrl = encodeURIComponent(window.location.href)\r\n\r\n return `${jnfroutesconfg.FacebookMetaTags}/?description=${description}&imageurl=${imageUrl}&redirectUrl=${redirectUrl}`;\r\n}\r\n", "let _ = require('lodash');\r\nlet SizerBreakpoint = require('../SizerBreakpoint');\r\n\r\nmodule.exports = GeneralSearch;\r\n\r\nvar hsiPage = false\r\nif($(\"#hsi-body\").length !== 0){\r\n hsiPage= true;\r\n}\r\n\r\n\r\n\r\nfunction GeneralSearch(options) {\r\n _.assign(this, options);\r\n\r\n new SizerBreakpoint({\r\n element: this.element\r\n });\r\n\r\n $(this.button).click(() => {\r\n this.open();\r\n this.container.parent().addClass(\"search-open\");\r\n });\r\n $(this.closeButton).click(() => {\r\n this.close()\r\n this.container.parent().removeClass(\"search-open\");\r\n });\r\n $(this.closeButton).click(() => this.close());\r\n\r\n $(window).click(e => {\r\n if ($(e.target).closest(this.container).length) { return; }\r\n this.close();\r\n });\r\n\r\n $(window).on('resize', () => {\r\n if (this.isOpen) {\r\n this.resize();\r\n }\r\n })\r\n}\r\n\r\nGeneralSearch.prototype = {\r\n open() {\r\n this.setFocus();\r\n this.resize();\r\n this.isOpen = true;\r\n },\r\n\r\n resize() {\r\n if(hsiPage && $(window).width() < 769){\r\n var screenWidth = window.outerWidth;\r\n screenWidth = screenWidth - 200;\r\n var screenResult = \"width:\"+ screenWidth + \"px\"\r\n $(\".jnf-widget.general-search-box .query-input\").attr(\"style\",screenResult);\r\n }\r\n\r\n let width = 0;\r\n this.container.children().each(function () {\r\n width += $(this).is(\":visible\") ? $(this).outerWidth(true) : 0;\r\n });\r\n\r\n this.container.width(width); \r\n },\r\n\r\n setFocus() {\r\n let query = this.input.val() || '';\r\n let queryLength = query.length;\r\n\r\n this.input.focus();\r\n this.input[0].setSelectionRange(queryLength, queryLength);\r\n },\r\n\r\n close() {\r\n this.container.width('');\r\n this.isOpen = false;\r\n }\r\n}", "let $ = require('jquery');\r\n\r\nfunction HorizontalGallery(customOptions) {\r\n\tvar defaultOptions = {\r\n\t\telement: null,\r\n\t\tarrowLeftSelector: '.horizontal-scroll-arrow.horizontal-scroll-arrow-left',\r\n\t\tarrowRightSelector: '.horizontal-scroll-arrow.horizontal-scroll-arrow-right',\r\n\t\tlistSelector: '.horizontal-scroll-list',\r\n\t\tlistElementSelector: 'li',\r\n\t\tarrowAnimationTime: 200,\r\n\t\tarrowVisibleClass: 'horizontal-scroll-arrow-visible'\r\n\t};\r\n\r\n\tvar options = $.extend({}, defaultOptions, customOptions);\r\n\r\n\tif (options.element === null) {\r\n\t\tthrow new Error('element must be specified');\r\n\t}\r\n\r\n\tvar $element = $(options.element);\r\n\tvar $arrowLeft = $element.find(options.arrowLeftSelector);\r\n\tvar $arrowRight = $element.find(options.arrowRightSelector);\r\n\tvar $list = $element.find(options.listSelector);\r\n\r\n\tvar getElementPositionLeft = function ($element) {\r\n\t\treturn $element.position().left + parseFloat($element.css('margin-left'));\r\n\t};\r\n\r\n\tvar getListElements = function () {\r\n\t\treturn $list.find(options.listElementSelector);\r\n\t};\r\n\r\n\tvar getElementByIndex = function (index) {\r\n\t\treturn getListElements().eq(index);\r\n\t};\r\n\r\n\tvar getFurthestVisibleIndexRight = function () {\r\n\t\tvar candidateIndex = 0;\r\n\t\tvar $candidateElement = getElementByIndex(candidateIndex);\r\n\t\tvar foundIndex = false;\r\n\r\n\t\twhile (candidateIndex < getListElements().length && !foundIndex) {\r\n\r\n\t\t\tif (getElementPositionLeft($candidateElement) + $candidateElement.outerWidth() > $list.outerWidth()) {\r\n\t\t\t\tfoundIndex = true;\r\n\t\t\t}\r\n\r\n\t\t\tcandidateIndex++;\r\n\t\t\t$candidateElement = getElementByIndex(candidateIndex);\r\n\t\t}\r\n\r\n\t\treturn candidateIndex - 1;\r\n\t};\r\n\r\n\tvar getFurthestVisibleIndexLeft = function () {\r\n\t\tvar candidateIndex = getListElements().length - 1;\r\n\t\tvar $candidateElement = getElementByIndex(candidateIndex);\r\n\t\tvar foundIndex = false;\r\n\r\n\t\twhile (candidateIndex >= 0 && !foundIndex) {\r\n\r\n\t\t\tif (getElementPositionLeft($candidateElement) < 0) {\r\n\t\t\t\tfoundIndex = true;\r\n\t\t\t}\r\n\r\n\t\t\tcandidateIndex--;\r\n\t\t\t$candidateElement = getElementByIndex(candidateIndex);\r\n\t\t}\r\n\r\n\t\treturn candidateIndex + 1;\r\n\t};\r\n\r\n\tvar scrollTo = function (scrollLeft) {\r\n\t\t$list.animate({\r\n\t\t\tscrollLeft: scrollLeft\r\n\t\t}, options.arrowAnimationTime);\r\n\t};\r\n\r\n\tvar onArrowLeftClick = function () {\r\n\t\tvar index = getFurthestVisibleIndexLeft();\r\n\t\tvar wantedScrollLeft = $list.scrollLeft()\r\n\t\t\t+ getElementPositionLeft(getElementByIndex(index))\r\n\t\t\t- $list.outerWidth()\r\n\t\t\t+ getElementByIndex(index).outerWidth()\r\n\t\t\t+ parseFloat($list.css('padding-right'));\r\n\t\tvar usedScrollLeft;\r\n\r\n\t\tif (wantedScrollLeft < 0) {\r\n\t\t\tusedScrollLeft = 0;\r\n\t\t} else {\r\n\t\t\tusedScrollLeft = wantedScrollLeft;\r\n\t\t}\r\n\r\n\t\tscrollTo(usedScrollLeft);\r\n\t};\r\n\r\n\tvar onArrowRightClick = function () {\r\n\t\tvar index = getFurthestVisibleIndexRight();\r\n\t\tvar wantedScrollLeft = $list.scrollLeft()\r\n\t\t\t+ getElementPositionLeft(getElementByIndex(index))\r\n\t\t\t- parseFloat($list.css('padding-left'));\r\n\t\tvar maxScrollLeft = getMaxScrollLeft();\r\n\t\tvar usedScrollLeft;\r\n\r\n\t\tif (wantedScrollLeft > maxScrollLeft) {\r\n\t\t\tusedScrollLeft = maxScrollLeft;\r\n\t\t} else {\r\n\t\t\tusedScrollLeft = wantedScrollLeft;\r\n\t\t}\r\n\r\n\t\tscrollTo(usedScrollLeft);\r\n\t};\r\n\r\n\tvar getMaxScrollLeft = function () {\r\n\t\tvar $firstElement = getElementByIndex(0);\r\n\t\tvar $lastElement = getElementByIndex(getListElements().length - 1);//assuming there's at least one element\r\n\r\n\t\tif ($lastElement.length == 0) {\r\n\t\t\treturn 0;\r\n\t\t} else {\r\n\t\t\t//$element.position().left takes padding and margin into account\r\n\r\n\t\t\t//assuming the direct parent is the list container\r\n\t\t\treturn $lastElement.position().left\r\n\t\t\t\t- $firstElement.position().left\r\n\t\t\t\t+ $lastElement.outerWidth(true)\r\n\t\t\t\t+ parseFloat($list.css('padding-left'))\r\n\t\t\t\t+ parseFloat($list.css('padding-right'))\r\n\t\t\t\t- $list.outerWidth();\r\n\t\t}\r\n\t};\r\n\r\n\tvar toggleArrows = function (customScrollTarget) {\r\n\t\tvar scrollTarget = arguments.length >= 1 ? customScrollTarget : $list.scrollLeft();\r\n\r\n\t\tif ($list.scrollLeft() <= 0) {\r\n\t\t\t$arrowLeft.removeClass(options.arrowVisibleClass);\r\n\t\t} else {\r\n\t\t\t$arrowLeft.addClass(options.arrowVisibleClass);\r\n\t\t}\r\n\r\n\t\tif ($list.scrollLeft() >= Math.floor(getMaxScrollLeft())) {\r\n\t\t\t$arrowRight.removeClass(options.arrowVisibleClass);\r\n\t\t} else {\r\n\t\t\t$arrowRight.addClass(options.arrowVisibleClass);\r\n\t\t}\r\n\t};\r\n\r\n\tvar onListScroll = function () {\r\n\t\ttoggleArrows();\r\n\t};\r\n\r\n\tvar onWindowResize = function () {\r\n\t\ttoggleArrows();\r\n\t};\r\n\r\n\tvar destroy = function () {\r\n\t\t// don't destroy HTML because it was created externally but remove anything that this library did\r\n\t\t$arrowLeft.off('click', onArrowLeftClick);\r\n\t\t$arrowRight.off('click', onArrowRightClick);\r\n\t\t$list.off('scroll', onListScroll);\r\n\t\t$(window).off('resize', onWindowResize);\r\n\t};\r\n\r\n\tvar recalculate = function () {\r\n\t\ttoggleArrows();\r\n\t};\r\n\r\n\t$arrowLeft.on('click', onArrowLeftClick);\r\n\t$arrowRight.on('click', onArrowRightClick);\r\n\t$list.on('scroll', onListScroll);\r\n\t$(window).on('resize', onWindowResize);\r\n\r\n\ttoggleArrows();\r\n\r\n\treturn {\r\n\t\tdestroy: destroy,\r\n\t\trecalculate: recalculate\r\n\t};\r\n}\r\n\r\nmodule.exports = HorizontalGallery;", "let $ = require('jquery');\r\n\r\n\r\nmodule.exports = Iframe;\r\n\r\nfunction Iframe(customOptions) {\r\n\r\n $(window).on(\"message onmessage\", function (e) {\r\n let height = e.originalEvent.data;\r\n customOptions.element.height(height + 'px');\r\n });\r\n}", "let UserSession = require('./UserSession');\r\nlet FillLoginData = require('./FullDonationForm/FillLoginData');\r\n\r\n//check if Create ActionResult is called\r\n$(function () {\r\n\r\n var waitingForResponse = false;\r\n var errorField = $('.login-error-field .error-text');\r\n var cancelButton = $('#cancel-login');\r\n let userSession = new UserSession();\r\n var ifLoginInDonationForm = $('.full-donation-form .login-widget-wrapper').length;\r\n var emailNameMatchingError = $('.error-name-not-matching');\r\n\r\n\r\n cancelButton.on('click', function (e) {\r\n e.preventDefault();\r\n window.location.replace(jnfroutesconfg.ServerUrl);\r\n });\r\n\r\n $(\"#login\").on('click submit', function (e) {\r\n e.preventDefault();\r\n var loginButton = $(this);\r\n if ($(\"#emailValue\").valid() && $(\"#passwordValue\").valid()) {\r\n waitingForResponse = true;\r\n loginButton.html('').addClass('sending-request');\r\n\r\n var password = $(\"#passwordValue\").val();\r\n var email = $(\"#emailValue\").val();\r\n var loginData = {\r\n Email: email,\r\n Password: password\r\n }\r\n\r\n userSession.signIn(loginData)\r\n .then(() => {\r\n if (!ifLoginInDonationForm) {\r\n window.location.href = REDIRECTURL;\r\n }\r\n else {\r\n FillLoginData(email);\r\n emailNameMatchingError.css('display', 'none');\r\n }\r\n\r\n }).catch(error => {\r\n if (error.Result === 3) {\r\n errorField.html(\"Wrong username or password.\");\r\n } else {\r\n errorField.html(\"An error has occured. Try again later.\");\r\n }\r\n }).finally(() => {\r\n loginButton.html('SUBMIT').removeClass('sending-request');\r\n\r\n }).done();\r\n }\r\n });\r\n});\r\n", "let _ = require('lodash');\r\nlet Q = require('q');\r\nlet URI = require('urijs');\r\n\r\nconst LuminateConsApiEndpoint = \"CRConsAPI\";\r\n\r\nmodule.exports = LuminateSession;\r\n\r\nfunction LuminateSession() {\r\n let baseUri = luminateClientApiConfig.BaseUrl;\r\n this.apiUrl = URI(baseUri).segment(LuminateConsApiEndpoint);\r\n\r\n this.luminateConfig = {\r\n api_key: luminateClientApiConfig.ApiKey,\r\n v: luminateClientApiConfig.Version\r\n };\r\n}\r\n\r\nLuminateSession.prototype = {\r\n assertOpen() {\r\n return this.getSSOToken()\r\n .then(token => this.openLuminateSession(token))\r\n .then(() => true)\r\n .catch(error => {\r\n if (error.status === 404) { return false; }\r\n else { throw error; }\r\n });\r\n },\r\n\r\n getSSOToken() {\r\n return Q($.ajax({\r\n url: jnfroutesconfg.SSOTokenUrl,\r\n type: 'POST'\r\n }))\r\n .then(response => response.Token);\r\n },\r\n\r\n isSessionOpen() {\r\n return Q($.ajax({\r\n url: this.apiUrl,\r\n type: 'POST',\r\n data: _.assign({\r\n method: 'loginTest',\r\n }, this.luminateConfig),\r\n xhrFields: { withCredentials: true },\r\n }))\r\n .then(() => true)\r\n .catch(error => {\r\n if (error.status === 403) {\r\n return false;\r\n } else {\r\n console.log(error);\r\n }\r\n });\r\n },\r\n\r\n openLuminateSession(ssoToken) {\r\n return Q($.ajax({\r\n url: this.apiUrl,\r\n type: 'POST',\r\n data: _.assign({\r\n method: 'singleSignOn',\r\n sso_auth_token: ssoToken,\r\n }, this.luminateConfig),\r\n xhrFields: { withCredentials: true },\r\n }));\r\n },\r\n\r\n closeLuminateSession() {\r\n return Q($.ajax({\r\n url: this.apiUrl,\r\n type: 'POST',\r\n data: _.assign({\r\n method: 'logout',\r\n }, this.luminateConfig),\r\n xhrFields: { withCredentials: true },\r\n }));\r\n }\r\n}\r\n", "let UserSession = require('../UserSession')\r\n\r\nmodule.exports = LuminateSessionSync;\r\n\r\nfunction LuminateSessionSync(options) {\r\n if (options.isUserSignedIn) {\r\n new UserSession().syncSession().done();\r\n }\r\n}", "var clicks = 0;\r\n\r\n$('.dropdown-content').on('mouseover', function () {\r\n $($(this).closest('li').find('a')[0]).addClass('is-hover');\r\n}).on('mouseout', function () {\r\n $($(this).closest('li').find('a')[0]).removeClass('is-hover');\r\n});\r\n\r\n$(\".jnf-widget-menu-child\").click(function () {\r\n if ($(this).parent().find('ul').first().is(':visible')) {\r\n if ($(this).parent().find('ul').length > 0) {\r\n $(this).parent().find('ul').first().hide();\r\n }\r\n $(this).removeClass(\"fa-minus\").addClass(\"fa-plus\");\r\n }\r\n else {\r\n if ($(this).parent().find('ul').length > 0) {\r\n $(this).parent().find('ul').first().show();\r\n }\r\n $(this).removeClass(\"fa-plus\").addClass(\"fa-minus\");\r\n }\r\n});\r\n\r\n$(\".page\").click(function () {\r\n var href = $(this).attr('href');\r\n if (typeof href !== typeof undefined && href !== false) {\r\n window.location.href = href;\r\n }\r\n});\r\n\r\nif ($(window).width() < 1025 && $(window).width() > 769) { //tablet\r\n $(\"a.menuHeader\").addClass('jnf-menu-tablet');\r\n\r\n $(\"a.jnf-menu-tablet\").bind(\"click\", function () {\r\n clicks++;\r\n var element = $(this);\r\n if (clicks == 1) {\r\n setTimeout(function () {\r\n if (clicks > 1) {\r\n window.location.href = element.attr('url');\r\n }\r\n clicks = 0;\r\n }, 300);\r\n }\r\n });\r\n}\r\nelse if ($(window).width() > 1025) { //desktop\r\n $(\"a.menuHeader\").addClass('jnf-menu-desktop');\r\n $(\"a.jnf-menu-desktop\").bind(\"click\", function () {\r\n window.location.href = $(this).attr('url');\r\n });\r\n}\r\n\r\n\r\n\r\n/*! CLICK NAVIGATION FUNCTIONALITY\r\n* Version: 0.9.8.4\r\n* Author: Nick Goodrum\r\n* Licensed under MIT:\r\n* http://www.opensource.org/licenses/mit-license.php\r\n* Followed WAI-ARIA spec except for typing a letter key keyboard functionality (optional) and left/right moving to next previous main tiers\r\n* TO DO - CONFIRM DATA-ATTRIBUTE APPROACH, EXTEND MEGA / SLIDING TO REDUCE CODE BASE, DETERMINE IF MORE OR LESS OF THE WAI-ARIA SPEC IS NEEDED */\r\n\r\n(function(window, factory) {\r\n 'use strict';\r\n if (typeof define === 'function' && define.amd) {\r\n define(['jquery'], function($) {\r\n return factory(window, $);\r\n });\r\n } else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') {\r\n module.exports = factory(window, require('jquery'));\r\n } else {\r\n factory(window, jQuery);\r\n }\r\n}(typeof window !== \"undefined\" ? window : this, function(window, $) {\r\n 'use strict';\r\n var ClickMenu = window.ClickMenu || {};\r\n\r\n /*----------- ADD DEBOUNCER -----------*/\r\n\r\n // Code from Underscore.js\r\n\r\n var debounce = function (func, wait, immediate) {\r\n var timeout;\r\n return function () {\r\n var context = this, args = arguments;\r\n var later = function () {\r\n timeout = null;\r\n if (!immediate) func.apply(context, args);\r\n };\r\n var callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow) func.apply(context, args);\r\n };\r\n };\r\n\r\n /*----------- ADD PROTOTYPE FOR OLDER BROWSERS -----------*/\r\n if (!Function.prototype.bind) {\r\n Function.prototype.bind = function(){\r\n var fn = this, args = Array.prototype.slice.call(arguments),\r\n object = args.shift();\r\n return function(){\r\n return fn.apply(object, args.concat(Array.prototype.slice.call(arguments)));\r\n };\r\n };\r\n }\r\n\r\n ClickMenu = (function() {\r\n\r\n function ClickMenu(element, settings) {\r\n var _ = this,\r\n dataSettings;\r\n\r\n _.defaults = {\r\n menutype : \"dropdown\",\r\n animationSpeed : 400,\r\n toggle : \"toggle-menu\",\r\n menu: \"cm-menu\",\r\n htmlClass: \"cm-js-menu-active\",\r\n expanderText: \"expand / collapse\",\r\n //TODO: Eventually add parentLi Selector option so they aren't only lis\r\n landings : false,\r\n expanders: false,\r\n singleClick : true,\r\n isAutoClose: true,\r\n isRTL : false\r\n };\r\n\r\n dataSettings = $(element).data() || {};\r\n\r\n _.options = $.extend({}, _.defaults, dataSettings, settings);\r\n\r\n _.menu = element;\r\n _.$menu = $(element);\r\n _.$menuBar = _.$menu.find(\".\" + _.options.menu);\r\n _.$menuToggle = _.$menu.find(\".\" + _.options.toggle);\r\n _.$html = $(\"html\");\r\n _.touchStart = false;\r\n _.isActive = false;\r\n _.isToggled = false;\r\n _.leavingMenu = false;\r\n _.currentFocus = 0;\r\n _.initialLinks = [];\r\n _.currentLinks = [];\r\n\r\n // Add in proxies so _ scope ties to this function even when called via outside event bindings, etc.\r\n _.keyHandler = $.proxy(_.keyHandler, _);\r\n _.findCurrentLinks = $.proxy(_.findCurrentLinks, _);\r\n _.resetMenus = $.proxy(_.resetMenus, _);\r\n _.cleanUpEvents = $.proxy(_.cleanUpEvents, _);\r\n _.destroy = $.proxy(_.destroy, _);\r\n _.showMenu = $.proxy(_.showMenu, _);\r\n _.hideMenu = $.proxy(_.hideMenu, _);\r\n _.menuToggle = $.proxy(_.menuToggle, _);\r\n _.subMenuToggle = $.proxy(_.subMenuToggle, _);\r\n _.menuHandler = $.proxy(_.menuHandler, _);\r\n _.menuToggleHandler = $.proxy(_.menuToggleHandler, _);\r\n\r\n if ( _.$menuBar.length > 0 ) {\r\n _.init();\r\n }\r\n }\r\n\r\n return ClickMenu;\r\n }());\r\n\r\n ClickMenu.prototype.init = function() {\r\n var _ = this;\r\n\r\n //Bind Toggle Function to expand/collapse menu in small screens\r\n _.$menuToggle.on(\"touchstart click\", _.menuToggle);\r\n\r\n // Add Aria Aspects and initial classes to menu wrap and menu\r\n _.$menu.addClass(\"cm-js-enabled\");\r\n if(!_.$menu.is(\"nav\")) { _.$menu.attr(\"role\", \"navigation\") }\r\n _.$menuBar.attr(\"role\", \"menubar\");\r\n\r\n //If there are prior dropdowns you want to get the highest one and add to the numbers\r\n var idNum = 1;\r\n\r\n if ( $(\"[id^='cm-dropdown']\").last().length > 0 ) {\r\n var highestNum = 0;\r\n\r\n $(\"[id^='cm-dropdown']\").each(function(){\r\n var currentNum = $(this).attr(\"id\").split(\"dropdown\")[1];\r\n\r\n highestNum = currentNum && highestNum < parseInt(currentNum, 10) ? parseInt(currentNum, 10) : highestNum;\r\n });\r\n\r\n idNum = highestNum + 1;\r\n }\r\n\r\n _.$menu.on('keydown', _.keyHandler);\r\n //With Firefox 52 support coming in - this is a clean solution for tab users to toggle open/close menus - but will need to possibly consider if focusin is worth the fighting\r\n _.$menuBar.on('focusin', _.showMenu);\r\n\r\n _.$menu.find(\".\" + _.options.menu + \" a\").each(function () {\r\n var $anchor = $(this),\r\n $parentLi = $anchor.closest('li'),\r\n $sibling;\r\n\r\n $anchor.attr({\"role\" : \"menuitem\", \"tabindex\" : \"-1\" });\r\n $parentLi.attr(\"role\", \"presentation\");\r\n\r\n if ( ! $parentLi.data(\"type\") && $parentLi.parent().hasClass(_.options.menu)) {\r\n $parentLi.attr('data-type', _.options.menutype);\r\n }\r\n\r\n // Have anchor do what it normally would do unless it has subs\r\n\r\n if ( $anchor.siblings().not(\"a\").length > 0 && $parentLi.attr(\"data-option\") !== \"openSubs\" ) {\r\n //Style it up via class\r\n var $expandable = $anchor.siblings(),\r\n newID = \"cm-dropdown\" + idNum;\r\n\r\n if (_.options.expanders) {\r\n $sibling = $(\"\" + _.options.expanderText + \"\");\r\n $anchor.wrap(\"
    \").after($sibling);\r\n\r\n $sibling.on(\"click\", _.subMenuToggle);\r\n } else {\r\n //if there is an ID use it and make sure the expandable item gets it otherwise add the new id created\r\n if ( $anchor.attr(\"id\") ) {\r\n newID = $anchor.attr(\"id\");\r\n } else {\r\n $anchor.attr(\"id\", \"cm-dropdown\" + idNum);\r\n }\r\n // bind click functionality for anchors as well as aria / class\r\n $anchor.attr({ \"aria-haspopup\" : \"true\" }).addClass(\"has-sub\").on(\"click\", _.subMenuToggle);\r\n }\r\n\r\n var visibleAlready = $expandable.height() > 0 ? true : false;\r\n $expandable.attr({\"role\": \"menu\", \"aria-expanded\" : visibleAlready, \"aria-hidden\" : !visibleAlready, \"aria-labelledby\" : newID });\r\n\r\n if (_.options.landings && !_.options.expanders) {\r\n var $duplicate = $expandable.is(\"ul\") ? $(\"\") : $(\"\");\r\n $duplicate.children().removeAttr(\"aria-haspopup class id\");\r\n $duplicate.find(\"a\").removeClass(\"has-sub\");\r\n $expandable.prepend($duplicate);\r\n }\r\n\r\n if ( $parentLi.data(\"type\") && $parentLi.data(\"type\") === \"sliding\") {\r\n var $subMenu = $(\"\");\r\n\r\n $expandable.wrap($subMenu);\r\n\r\n var adjustMenu = function(){\r\n var maxWidth = _.$menu.innerWidth(),\r\n leftPosition = $parentLi.position().left,\r\n $adjustable;\r\n\r\n $adjustable = $parentLi.children(\".sub-menu\");\r\n $adjustable.find(\"> ul > li > ul\").innerWidth(maxWidth);\r\n\r\n $adjustable.innerWidth(maxWidth).css(\"left\", \"-\" + leftPosition + \"px\");\r\n };\r\n\r\n var debounceAdjustments = debounce(adjustMenu, 300);\r\n\r\n $(window).load(function(){\r\n adjustMenu();\r\n\r\n $(window).resize(debounceAdjustments);\r\n });\r\n\r\n }\r\n\r\n if (newID === \"cm-dropdown\" + idNum) {\r\n idNum++;\r\n }\r\n }\r\n\r\n // ADD In Initial Links for main tier\r\n if ( $anchor.closest(\"[role]:not(a)\").is(\"[data-type]\") && $anchor.is(\":visible\") ) {\r\n _.initialLinks.push($anchor);\r\n\r\n if (_.options.expanders && $sibling) {\r\n _.initialLinks.push($sibling);\r\n }\r\n }\r\n\r\n });\r\n\r\n _.currentLinks = _.initialLinks;\r\n\r\n if ( _.currentLinks[_.currentFocus] ) {\r\n _.currentLinks[_.currentFocus].attr(\"tabindex\", \"0\");\r\n }\r\n\r\n _.$menu.trigger(\"init\", [_]);\r\n\r\n };\r\n\r\n ClickMenu.prototype.keyHandler = function(e) {\r\n var _ = this,\r\n keyPress = e.keyCode;\r\n\r\n if ( ! _.$menu.hasClass(\"cm-js-inFocus\") && keyPress !== 9 ) {\r\n _.$menu.addClass(\"cm-js-inFocus\").attr(\"tabindex\", \"-1\");\r\n }\r\n switch (keyPress) {\r\n //TAB\r\n case 9:\r\n _.$menu.removeClass(\"cm-js-inFocus\");\r\n break;\r\n //LEFT UP RIGHT DOWN\r\n case 37:\r\n case 38:\r\n case 39:\r\n case 40:\r\n //Prevent Scrolling aspects from browser\r\n e.preventDefault();\r\n\r\n //Maintain currentLink since it will potentially be overwritten with the next focus\r\n var oldLink = _.currentLinks[_.currentFocus];\r\n\r\n //Don't do anything if in mid transition\r\n if (oldLink) {\r\n var inMainTier = oldLink.closest(\"[role]:not(a)\").is(\"[data-type]\"),\r\n next, direction, close, open;\r\n \r\n //IF LEFT / UP (Depending on TIER) change next item to rotate to\r\n\r\n if (inMainTier) {\r\n // IF LEFT / RIGHT rotate to new item\r\n if (keyPress === 37) {\r\n direction = _.options.isRTL ? \"next\" : \"prev\";\r\n } else if (keyPress === 39) {\r\n direction = _.options.isRTL ? \"prev\" : \"next\";\r\n } else if (keyPress === 40 || keyPress === 38) {\r\n open = true;\r\n }\r\n } else {\r\n // IF UP / DOWN rotate to new item - IF LEFT on sub subs close menu\r\n if (keyPress === 38) {\r\n direction = \"prev\";\r\n } else if (keyPress === 40) {\r\n direction = \"next\";\r\n } else if ( keyPress === 39) {\r\n if (_.options.isRTL) {\r\n close = true;\r\n } else {\r\n open = true;\r\n }\r\n //} else if ( ! inSecondTier && keyPress === 37 ) {\r\n } else if ( keyPress === 37 ) {\r\n if (_.options.isRTL) {\r\n open = true;\r\n } else {\r\n close = true;\r\n }\r\n }\r\n }\r\n\r\n if (direction) {\r\n\r\n if (direction === \"prev\") {\r\n //If there aren't any prior items move to last item in the list\r\n _.currentFocus = _.currentFocus - 1 >= 0 ? _.currentFocus - 1 : _.currentLinks.length - 1;\r\n } else {\r\n //If there aren't any more items move to first item in the list\r\n _.currentFocus = _.currentFocus + 1 < _.currentLinks.length ? _.currentFocus + 1 : 0;\r\n }\r\n next = _.currentLinks[_.currentFocus];\r\n\r\n }\r\n\r\n //If there isn't anything next click the anchor\r\n if (next) {\r\n oldLink.attr(\"tabindex\", \"-1\");\r\n _.currentLinks[_.currentFocus].attr(\"tabindex\", \"0\").focus();\r\n } else if (close) {\r\n //Same as ESCAPE - TBD should we actually close the whole menu and go to a previous item (ARIA Spec)?\r\n _.$menu.find(\".opened\").last().find(\"[aria-haspopup]\").first().trigger(\"click\");\r\n } else if (open) {\r\n //Only open if it isn't opened - escape is how to close a menu\r\n //Also don't trigger click on a normal link - TBD should we really close the whole menu and go to the next item (ARIA Spec)?\r\n if ( ! oldLink.closest(\"li\").hasClass(\"opened\") && _.currentLinks[_.currentFocus].hasClass(\"has-sub\") ) {\r\n _.currentLinks[_.currentFocus].trigger(\"click\");\r\n }\r\n }\r\n }\r\n break;\r\n //ESCAPE\r\n case 27:\r\n e.preventDefault();\r\n _.$menu.find(\".opened\").last().find(\"[aria-haspopup]\").first().trigger(\"click\");\r\n break;\r\n //SPACE BAR (ENTER ALREADY BY DEFAULT DOES THIS)\r\n case 32:\r\n e.preventDefault();\r\n _.currentLinks[_.currentFocus].trigger(\"click\");\r\n break;\r\n }\r\n };\r\n\r\n ClickMenu.prototype.findCurrentLinks = function($parentLi, $currAnchor, skipFocus) {\r\n var _ = this;\r\n\r\n $.each(_.currentLinks, function() {\r\n var $anchor = this;\r\n $anchor.attr(\"tabindex\", \"-1\");\r\n });\r\n\r\n _.currentLinks = [];\r\n _.currentFocus = 0;\r\n\r\n if ( $parentLi && ! $parentLi.data(\"type\") ) {\r\n var actualKey = 0;\r\n\r\n $parentLi.closest(\"[role=menu]\").find(\"a, input, select, textarea, button\").filter(\":visible\").each(function(key, val){\r\n //How do you find :hidden items that aren't actually hidden? Check the height of the parent - be careful of floating clearout issues\r\n var $item = $(val);\r\n //Looks like even with animation speed done correctly there can be a minor amount of pixels still transitioning in css\r\n if ($item.closest(\"[role=menu]\").height() > 10 && $item.closest(\"[role=menu]\").width() > 10) {\r\n _.currentLinks.push($item);\r\n\r\n if ($currAnchor && $currAnchor.attr(\"id\") && $currAnchor.attr(\"id\") === $item.attr(\"id\")) {\r\n _.currentFocus = actualKey;\r\n }\r\n actualKey++;\r\n }\r\n });\r\n\r\n } else {\r\n var $tabbables = _.$menuBar.find(\"a, input, select, textarea, button\").filter(\":visible\");\r\n \r\n $tabbables.each(function(key, val){\r\n var $item = $(val);\r\n if ( $item.closest(\"[role]:not(a)\").is(\"[data-type]\") ) {\r\n _.currentLinks.push($item);\r\n }\r\n });\r\n //If a ParentLi is supplied e.g. from submenutoggle then get the eq otherwise get the first visible eq\r\n _.currentFocus = $parentLi ? $parentLi.index() : 0;\r\n }\r\n\r\n if ( _.currentLinks[_.currentFocus] ) {\r\n _.currentLinks[_.currentFocus].attr(\"tabindex\", \"0\");\r\n\r\n if ( ! _.leavingMenu && ! skipFocus ) {\r\n _.currentLinks[_.currentFocus].focus();\r\n }\r\n }\r\n };\r\n\r\n ClickMenu.prototype.resetMenus = function ($links) {\r\n $links.each(function(){\r\n var $toggle = $(this),\r\n $opened = $toggle.closest(\".opened\"),\r\n labelId = $toggle.attr(\"id\"),\r\n $relatedSub = $(\"[aria-labelledby='\" + labelId + \"']\"); \r\n \r\n $toggle.attr(\"tabindex\", \"-1\");\r\n $relatedSub.attr({\"aria-hidden\": true, \"aria-expanded\": false });\r\n $opened.removeClass(\"opened animating animated\");\r\n });\r\n };\r\n\r\n ClickMenu.prototype.cleanUpEvents = function () {\r\n var _ = this;\r\n _.$menu.find(\"li a\").off(\"click\", _.subMenuToggle);\r\n\r\n // Change into FOCUS with corresponding namespace function\r\n _.$menu.off('keydown', _.keyHandler);\r\n _.$menuBar.off(\"focusin\", _.showMenu);\r\n\r\n _.$html.off(\"touchstart click focusin\", _.menuHandler);\r\n _.$html.off(\"touchstart click focusin\", _.menuToggleHandler);\r\n };\r\n\r\n ClickMenu.prototype.destroy = function() {\r\n var _ = this;\r\n\r\n _.$menu.removeClass(\"cm-js-enabled cm-js-inFocus cm-js-active\").removeAttr(\"tabindex\");\r\n _.$menuBar.removeAttr(\"role\");\r\n _.$menu.find(\"[role=presentation]\").removeAttr(\"role\").filter(\".opened\").removeClass(\"opened animating animated\");\r\n _.$menu.find(\"[role=menuitem]\").removeAttr(\"tabindex aria-haspopup role\").removeClass(\"has-sub\");\r\n _.$menu.find(\"[role=menu]\").removeAttr(\"aria-expanded aria-hidden aria-labelledby role\");\r\n _.cleanUpEvents();\r\n };\r\n\r\n ClickMenu.prototype.getClickMenu = function () {\r\n return this;\r\n };\r\n\r\n ClickMenu.prototype.showMenu = function(e) {\r\n var _ = this;\r\n\r\n //Need to make it check for hasClass on the current item rather than html and all items\r\n if ( _.$menuBar.height() <= 10 && ! _.$menu.hasClass(\"cm-js-active\") && ! _.$menu.hasClass(\"cm-animate-out\") ) {\r\n _.$menu.trigger(\"beforeMenuShow\", [_]);\r\n\r\n _.isActive = true;\r\n _.isToggled = true;\r\n _.$menu.addClass(\"cm-js-active\");\r\n\r\n _.$menuToggle.addClass(\"active\");\r\n _.$html.addClass(_.options.htmlClass); // ADD FOR INITIAL STYLING\r\n\r\n _.findCurrentLinks();\r\n\r\n _.$html.off(\"touchstart click focusin\", _.menuToggleHandler);\r\n\r\n // ADD TOGGLE HANDLER AFTER ANIMATION TO PREVENT CLOSING MENUS FROM REMOVING THE HANDLER\r\n setTimeout(function(){\r\n _.$menu.trigger(\"afterMenuShow\", [_]);\r\n _.$html.addClass(_.options.htmlClass).on(\"touchstart click focusin\", _.menuToggleHandler);\r\n }, _.options.animationSpeed);\r\n }\r\n\r\n };\r\n\r\n ClickMenu.prototype.hideMenu = function(e) {\r\n var _ = this;\r\n\r\n if ( _.$menu.hasClass(\"cm-js-active\") && _.$html.hasClass(_.options.htmlClass) ) {\r\n _.$menu.trigger(\"beforeMenuHide\", [_]);\r\n\r\n _.isActive = false;\r\n _.isToggled = false;\r\n _.$menu.removeClass(\"cm-js-active cm-js-inFocus\");\r\n _.$menuToggle.removeClass(\"active\");\r\n\r\n _.$html.removeClass(_.options.htmlClass).off(\"touchstart click focusin\", _.menuToggleHandler);\r\n _.$menu.addClass(\"cm-animate-out\");\r\n\r\n setTimeout(function(){\r\n _.$html.removeClass(_.options.htmlClass);\r\n _.$menu.removeClass(\"cm-animate-out\").trigger(\"afterMenuHide\", [_]);\r\n }, _.options.animationSpeed);\r\n }\r\n };\r\n\r\n ClickMenu.prototype.menuToggle = function(e) {\r\n var _ = this;\r\n e.preventDefault();\r\n\r\n if ( e.type === \"touchstart\" || ! _.touchStart ) {\r\n if (_.isActive) {\r\n _.hideMenu();\r\n } else {\r\n _.showMenu();\r\n }\r\n }\r\n\r\n _.touchStart = e.type === \"touchstart\" ? true : false;\r\n\r\n };\r\n\r\n ClickMenu.prototype.subMenuToggle = function(e, params) {\r\n var _ = this;\r\n\r\n var $currAnchor = $(e.currentTarget),\r\n $parentLi = $currAnchor.closest(\"li\"),\r\n $menuCol = $currAnchor.closest(\"[data-type]\"),\r\n menuType = $menuCol.data(\"type\"),\r\n $relatedMenu = $(\"[aria-labelledby=\" + $currAnchor.attr(\"id\") + \"]\");\r\n\r\n var subDefaults = { skipFocus : false },\r\n subOptions = $.extend({}, subDefaults, params);\r\n \r\n\r\n _.$html.off(\"touchstart click focusin\", _.menuHandler);\r\n\r\n if ($parentLi.hasClass(\"opened\")) {\r\n\r\n _.$menu.trigger(\"beforeSubClose\", [_, $currAnchor, $relatedMenu]);\r\n\r\n if (_.options.singleClick) {\r\n e.preventDefault();\r\n\r\n if (menuType === \"sliding\" && $parentLi.parents(\".sub-menu\").hasClass(\"sub-menu\")) {\r\n $parentLi.parents(\".sub-menu\").addClass(\"cm-js-inactive\");\r\n }\r\n\r\n $parentLi.removeClass(\"opened animating animated\");\r\n\r\n if (_.$menu.find(\".opened\").length > 0 && _.options.isAutoClose){\r\n _.$html.on(\"touchstart click focusin\", _.menuHandler);\r\n }\r\n\r\n $relatedMenu.attr({ \"aria-expanded\" : \"false\", \"aria-hidden\" : \"true\" });\r\n\r\n $relatedMenu.find(\"[aria-expanded=true]\").each(function(){\r\n var $childMenu = $(this);\r\n\r\n $childMenu.attr({ \"aria-expanded\" : \"false\", \"aria-hidden\" : \"true\" }).closest(\"[role=presentation]\").removeClass(\"opened animating animated\");\r\n });\r\n\r\n setTimeout(function(){\r\n\r\n //Update Current Links for keyboard\r\n _.findCurrentLinks($parentLi, $currAnchor, subOptions.skipFocus);\r\n\r\n _.$menu.trigger(\"afterSubClose\", [_, $currAnchor, $relatedMenu]);\r\n\r\n }, _.options.animationSpeed);\r\n\r\n }\r\n } else {\r\n // Otherwise Open submenu and attach site click handler\r\n // Also - close any other open menus and their children\r\n e.preventDefault();\r\n\r\n _.$menu.trigger(\"beforeSubOpen\", [_, $currAnchor, $relatedMenu]);\r\n\r\n $parentLi.addClass(\"opened animating\").siblings().removeClass(\"opened animating animated\")\r\n .find(\".opened\").removeClass(\"opened animating animated\");\r\n\r\n //FOR SLIDING MENUS\r\n $parentLi.siblings().find(\".sub-menu\").addClass(\"cm-js-inactive\");\r\n\r\n if ( menuType === \"sliding\" && $parentLi.parents(\".sub-menu\").length > 0 ) {\r\n $parentLi.parents(\".sub-menu\").removeClass(\"cm-js-inactive\");\r\n }\r\n //END FOR SLIDING MENU\r\n\r\n $relatedMenu.attr({ \"aria-expanded\" : \"true\", \"aria-hidden\" : \"false\" });\r\n\r\n //Wait until timer is complete so the bindings and currentLink groupings don't overlap\r\n setTimeout(function(){\r\n if ($parentLi.hasClass(\"animating\")) {\r\n $parentLi.removeClass(\"animating\").addClass(\"animated\");\r\n }\r\n\r\n //Update Current Links for keyboard\r\n _.findCurrentLinks($relatedMenu, $relatedMenu.find(\"a\").first(), subOptions.skipFocus);\r\n\r\n // ADD TOGGLE HANDLER AFTER ANIMATION TO PREVENT CLOSING MENUS FROM REMOVING THE HANDLER\r\n if ( _.options.isAutoClose ) { // Only add if (default) menus set to auto close\r\n _.$html.on(\"touchstart click focusin\", _.menuHandler);\r\n }\r\n\r\n _.$menu.trigger(\"afterSubOpen\", [_, $currAnchor, $relatedMenu]);\r\n\r\n }, _.options.animationSpeed);\r\n }\r\n };\r\n\r\n ClickMenu.prototype.menuToggleHandler = function(e) {\r\n var _ = this;\r\n\r\n if ( ! $.contains(_.menu, e.target) && ! _.$menu.is( $(e.target) ) && _.isToggled ) {\r\n _.isToggled = false;\r\n _.touchStart = false;\r\n\r\n if ( _.$menuToggle.length > 0 ) {\r\n _.$menuToggle.trigger(\"click\");\r\n } else {\r\n _.hideMenu();\r\n }\r\n\r\n _.$html.removeClass(_.options.htmlClass).off(\"touchstart click focusin\", _.menuToggleHandler);\r\n }\r\n };\r\n\r\n ClickMenu.prototype.menuHandler = function(e) {\r\n var _ = this;\r\n\r\n if ( ! $.contains(_.menu, e.target) && ! _.$menu.is($(e.target)) ) {\r\n //Make sure not to leave any tabindex=0 on submenu links by making sure the toggle knows we are leaving the menu\r\n _.leavingMenu = true;\r\n\r\n _.resetMenus( _.$menu.find(\".opened > .has-sub, .opened > .expander-wrap > .has-sub\") );\r\n _.findCurrentLinks();\r\n\r\n _.$html.off(\"touchstart click focusin\", _.menuHandler);\r\n\r\n setTimeout(function(){\r\n //We now know we have left the menu and are done triggering sub menus\r\n _.leavingMenu = false;\r\n }, _.options.animationSpeed);\r\n }\r\n };\r\n\r\n $.fn.clickMenu = function() {\r\n var _ = this,\r\n opt = arguments[0],\r\n args = Array.prototype.slice.call(arguments, 1),\r\n l = _.length,\r\n i,\r\n ret;\r\n\r\n for (i = 0; i < l; i++) {\r\n if (typeof opt == 'object' || typeof opt == 'undefined') {\r\n _[i].clickMenu = new ClickMenu(_[i], opt);\r\n } else {\r\n ret = _[i].clickMenu[opt].apply(_[i].clickMenu, args);\r\n }\r\n\r\n if (typeof ret != 'undefined') return ret;\r\n }\r\n\r\n return _;\r\n };\r\n\r\n}));\r\n\r\nif ($(window).width() < 960) {\r\n $('.jnf-widget.general-search-box').prependTo(\".main-nav\");\r\n}\r\n\r\n /** Click Navigation **/\r\n //$(\".main-nav\").find(\"ul ul\").wrap('
    ');\r\n $(\".main-nav\").clickMenu();\r\n $(\".section-nav\").clickMenu({menutype:\"accordion\"});\r\n $(\".footer-section-nav\").clickMenu({menutype:\"accordion\"});\r\n\r\n $(\".main-nav\").on(\"afterMenuShow \", function(e){ \r\n console.log(\"after menu show\");\r\n $(\".closeIcon\").on(\"click\", function(e){\r\n e.preventDefault();\r\n e.stopPropagation();\r\n $(\"#hsi-body\").trigger(\"click\");\r\n console.log(\"clicked\")\r\n });\r\n \r\n });\r\n\r\n \r\n//---------------------//", "let URI = require('urijs');\r\nlet _ = require('lodash');\r\n\r\n\r\nconst enterKeyCode = 13;\r\n\r\nlet SearchBox = function (customOptions) {\r\n let element = customOptions.element;\r\n let input = customOptions.input;\r\n let searchButton = customOptions.searchButton;\r\n\r\n let url = element.data(\"results-url\") || (window.location.origin + window.location.pathname);\r\n\r\n let onSearch = (event) => {\r\n event.preventDefault();\r\n let query = buildQuery(element, input);\r\n\r\n let destination = URI(url).query(query);\r\n window.location.href = destination;\r\n };\r\n\r\n searchButton.click(onSearch);\r\n input.keypress(e => {\r\n if (e.keyCode === enterKeyCode) {\r\n onSearch(e);\r\n }\r\n });\r\n};\r\n\r\nfunction buildQuery(element, input) {\r\n let data = element.data();\r\n let params = _.reduce(data, (result, value, key) => {\r\n if(key.startsWith(\"param\")) {\r\n let paramName = key.replace(\"param\", \"\").toLowerCase();\r\n result[paramName] = value;\r\n }\r\n return result;\r\n }, {});\r\n\r\n let inputValue = input.val();\r\n let query = _.assign(params, {\r\n searchQuery: inputValue\r\n });\r\n\r\n return query;\r\n}\r\n\r\nmodule.exports = SearchBox;", "let Q = require('q');\r\nconst enterKeyCode = 13;\r\n\r\nmodule.exports = RegionSearchBox;\r\n\r\nfunction RegionSearchBox({searchButton, queryInput, serverRoot, defaultUrl}) {\r\n searchButton.click(e => this.search(queryInput, serverRoot, defaultUrl));\r\n queryInput.keypress(e => {\r\n if (e.keyCode === enterKeyCode) {\r\n this.search(queryInput, serverRoot, defaultUrl);\r\n }\r\n });\r\n}\r\n\r\nRegionSearchBox.prototype = {\r\n search(queryInput, serverRoot, defaultUrl) {\r\n let searchPhrase = queryInput.val();\r\n this.findRegionByZipcode(searchPhrase, serverRoot)\r\n .then(region => region.PageUrl || defaultUrl, e => defaultUrl)\r\n .then(this.openRegionPage)\r\n .done();\r\n },\r\n\r\n findRegionByZipcode(zipcode, serverRoot) {\r\n return Q(\r\n jQuery.ajax({\r\n url: serverRoot + '/api/regions',\r\n data: {\r\n zipcode: zipcode\r\n }\r\n })\r\n );\r\n },\r\n\r\n openRegionPage(url) {\r\n if(url) {\r\n window.location.href = url;\r\n } else {\r\n //TODO consider some kind of error handling\r\n console.log('Region could not be found');\r\n }\r\n }\r\n}", "let _ = require('lodash');\r\n\r\nmodule.exports = RegionsFilter;\r\n\r\nfunction RegionsFilter(customOptions) {\r\n let options = $.extend({}, customOptions); \r\n if(!options.listElement) {\r\n throw new Error('listElement option is required')\r\n }\r\n this.filterListItems = $(options.listElement).children();\r\n this.filterListItems.click((event) => this.onFilterItemClicked($(event.target)));\r\n\r\n $(document).on('regionsFilterChange', (event, params) => this.onRegionsFilterChange(params.regionName));\r\n\r\n if (options.userRegionCode) {\r\n let userRegion = this.filterListItems.filter(`[data-region-code='${options.userRegionCode}']`)\r\n if (userRegion.length) {\r\n this.onFilterItemClicked(userRegion);\r\n }\r\n }\r\n}\r\n\r\nRegionsFilter.prototype = {\r\n onFilterItemClicked(element) {\r\n let regionName = element.data('region-name');\r\n $(document).trigger('regionsFilterChange', { regionName: regionName });\r\n },\r\n\r\n onRegionsFilterChange(regionName) {\r\n this.filterListItems.removeClass('active');\r\n this.filterListItems.filter(`[data-region-name='${regionName}']`).addClass('active');\r\n\r\n },\r\n}", "let UserSession = require('./UserSession');\r\nlet Q = require('q');\r\nlet Tracker = require('./Tracking/Tracker');\r\n\r\n\r\nmodule.exports = Subscribe;\r\n\r\n//check if Create ActionResult is called\r\nfunction Subscribe() {\r\n var clickable = true;\r\n\r\n const signoutRedirectDestination = jnfroutesconfg.ServerUrl;\r\n\r\n var subscribeField = $('.sign-up-popup');\r\n var registerForm = subscribeField.find('.register-form');\r\n var menuBar = $('.jnf-widget.jnf-widget-menu-1')[0];\r\n var menuHeight = $(menuBar).outerHeight();\r\n\r\n var darkField = $('.dark-field');\r\n var mobileMenuButton = $('.menu-button');\r\n var dropDownMenu = $('.jnf-widget-mobile-menu');\r\n var close = $('.dropdown-on-mobile > .close');\r\n var signUp = $('.sign-up');\r\n var signUpPopup = $('.sign-up-popup');\r\n var signUpClose = $('.sign-up.close');\r\n\r\n subscribeField.appendTo(\"body\");\r\n darkField.appendTo(\"body\");\r\n\r\n while ($('.sign-up-popup').length > 1) {\r\n $(subscribeField[0]).remove();\r\n $(darkField[0]).remove();\r\n }\r\n\r\n var darkField = $('.dark-field');\r\n var subscribeMenuButton = $('.jnf-widget-menu-1-account.subscribe');\r\n var logoutMenuButton = $('.jnf-widget-menu-1-account.logout');\r\n var loadingIndicator = $('.jnf-widget-menu-1-account.loading-indicator');\r\n\r\n var subscribeButton = $('#create');\r\n\r\n let userSession = new UserSession();\r\n logoutMenuButton.click(e => {\r\n logoutMenuButton.hide();\r\n loadingIndicator.addClass('visible');\r\n userSession.signOut().then(() => {\r\n window.location.href = signoutRedirectDestination;\r\n })\r\n .catch(error => {\r\n console.log(error);\r\n logoutMenuButton.show();\r\n loadingIndicator.removeClass('visible');\r\n })\r\n .done();\r\n });\r\n\r\n subscribeMenuButton.on('click', function (e) {\r\n e.stopPropagation();\r\n darkField.css('display', 'block');\r\n registerForm.css('top', menuHeight);\r\n subscribeField.css('display', 'block');\r\n dropDownMenu.removeClass('jnf-widget-mobile-menu-visible');\r\n });\r\n\r\n signUpClose.on('click', function () {\r\n darkField.add(subscribeField).css('display', 'none');\r\n });\r\n\r\n $(document).on('click', function (event) {\r\n if (!$(event.target).closest(subscribeField).length && !$(event.target).closest(subscribeMenuButton).length) {\r\n darkField.add(subscribeField).css('display', 'none');\r\n }\r\n });\r\n\r\n $(\"#emailRegister\").on('keydown', function () {\r\n if ($('#emailRegister + .field-validation-valid').length > 0) {\r\n if ($('#emailRegister + .field-validation-valid').html().length > 1) {\r\n $(\".server-response-container\").html(\"\");\r\n }\r\n }\r\n if ($('#emailRegister + .field-validation-error').length > 0) {\r\n if ($('#emailRegister + .field-validation-error').html().length > 1) {\r\n $(\".server-response-container\").html(\"\");\r\n }\r\n }\r\n });\r\n\r\n subscribeButton.on('click submit', function (e) {\r\n e.preventDefault();\r\n if (clickable) {\r\n clickable = false;\r\n var registerButton = $(this);\r\n if ($(\"#emailRegister\").valid()) {\r\n registerButton.html('').addClass('sending-request');\r\n var givenEmail = $(\"#emailRegister\").val();\r\n var emailAddress = {\r\n email: givenEmail\r\n }\r\n $.ajax({\r\n type: 'POST',\r\n url: REGISTERPAGE + \"/Register\",\r\n contentType: 'application/json; charset=utf-8',\r\n data: JSON.stringify(emailAddress),\r\n success: function (result, args) {\r\n if (result.Result === 1) {\r\n $(\"#emailRegister-error\").html(\"\");\r\n $(\".server-response-container\").html(\"Error\");\r\n clickable = true;\r\n registerButton.removeClass('sending-request').html('SUBSCRIBE');\r\n }\r\n else if (result.Result === 0) {\r\n $(\".server-response-container\").html(\"\");\r\n $(\"#registerFrom\").html(\"Confirmation email has been sent. Check your mailbox\");\r\n clickable = true;\r\n registerButton.removeClass('sending-request').html('SUBSCRIBE'); \r\n }\r\n else if (result.Result === 2) {\r\n $(\".server-response-container\").html(\"\");\r\n $(\"#registerFrom\").html(\"Thank you for subscribing\");\r\n clickable = true;\r\n registerButton.removeClass('sending-request').html('SUBSCRIBE');\r\n }\r\n console.log(result);\r\n console.log(args);\r\n },\r\n error: function (error) {\r\n console.log(error);\r\n registerButton.removeClass('sending-request').html('SUBSCRIBE');\r\n\r\n }\r\n });\r\n Tracker.subscribeFormSent();\r\n }\r\n }\r\n\r\n });\r\n}\r\n", "let SizerBreakpoint = require('../SizerBreakpoint.js');\r\nlet $ = require('jquery');\r\nlet Separator = function (customOptions) {\r\n\tlet defaults = {\r\n\t\telement: null\r\n\t};\r\n\r\n\tlet options = $.extend({}, defaults, customOptions);\r\n\r\n\tif (options.element === null) {\r\n\t\tthrow new Error('element option required');\r\n\t}\r\n\r\n\tnew SizerBreakpoint({element: options.element});\r\n};\r\n\r\nmodule.exports = Separator;", "let $ = require('jquery');\r\n\r\nlet Sizer = function (customOptions) {\r\n\tlet defaults = {\r\n\t\telement: null,\r\n\t\tsizes: [\r\n\t\t\t//{\r\n\t\t\t//\tmaxWidth: 900,\r\n\t\t\t//\tcssClass: 'jnf-widget-menu-2-narrow'\r\n\t\t\t//}\r\n\t\t],\r\n\t\tsubelement: null\r\n\t};\r\n\tlet options = $.extend({}, defaults, customOptions);\r\n\tlet $element = $(options.element);\r\n\r\n\tlet orderedSizes = options.sizes.sort(function (sizeDefinition1, sizeDefinition2) {\r\n\t\treturn sizeDefinition1.maxWidth - sizeDefinition2.maxWidth;\r\n\t});\r\n\r\n\tlet selectSize = function () {\r\n\t\t\r\n\t\tlet candidateSizeIndex = 0;\r\n\t\tlet found = false;\r\n\t\tlet width;\r\n\t\t\r\n\t\tif (options.subelement !== null) {\r\n\t\t\twidth = $element.find(options.subelement).width();\r\n\t\t} else {\r\n\t\t\twidth = $element.width();\r\n\t\t}\r\n\r\n\t\tfor (let sizeIndex = 0; sizeIndex < orderedSizes.length; sizeIndex++) {\r\n\t\t\t$element.removeClass(orderedSizes[sizeIndex].cssClass);\r\n\t\t}\r\n\r\n\t\twhile (candidateSizeIndex < orderedSizes.length && !found) {\r\n\t\t\tlet candidateSize = orderedSizes[candidateSizeIndex];\r\n\r\n\t\t\tif (width < candidateSize.maxWidth) {\r\n\t\t\t\tfound = true;\r\n\t\t\t\t$element.addClass(candidateSize.cssClass);\r\n\t\t\t} else {\r\n\t\t\t\tcandidateSizeIndex++;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tlet onWindowResize = function () {\r\n\t\tselectSize();\r\n\t};\r\n\r\n\t$(window).on('resize', onWindowResize);\r\n\r\n\tselectSize();\r\n};\r\n\r\nmodule.exports = Sizer;", "let Sizer = require('./Sizer.js');\r\nlet $ = require('jquery');\r\n\r\nlet SizerBreakpoint = function (customOptions) {\r\n let defaultSizes = [\r\n {\r\n maxWidth: 768 - 1,\r\n cssClass: 'sizer-mobile'\r\n },\r\n {\r\n maxWidth: 950 - 1,\r\n cssClass: 'sizer-tablet'\r\n }\r\n ];\r\n\r\n new Sizer({\r\n element: customOptions.element,\r\n sizes: defaultSizes\r\n });\r\n\r\n if ('extraSizes' in customOptions) {\r\n new Sizer({\r\n element: customOptions.element,\r\n sizes: customOptions.extraSizes\r\n });\r\n }\r\n};\r\n\r\nmodule.exports = SizerBreakpoint;", "let $ = require('jquery');\r\n/*\r\n _ _ _ _\r\n ___| (_) ___| | __ (_)___\r\n/ __| | |/ __| |/ / | / __|\r\n\\__ \\ | | (__| < _ | \\__ \\\r\n|___/_|_|\\___|_|\\_(_)/ |___/\r\n |__/\r\n\r\n Version: 1.9.0\r\n Author: Ken Wheeler\r\n Website: http://kenwheeler.github.io\r\n Docs: http://kenwheeler.github.io/slick\r\n Repo: http://github.com/kenwheeler/slick\r\n Issues: http://github.com/kenwheeler/slick/issues\r\n\r\n */\r\n/* global window, document, define, jQuery, setInterval, clearInterval */\r\nlet SlickSlider = (function(factory) {\r\n 'use strict';\r\n if (typeof define === 'function' && define.amd) {\r\n define(['jquery'], factory);\r\n } else if (typeof exports !== 'undefined') {\r\n module.exports = factory(require('jquery'));\r\n } else {\r\n factory(jQuery);\r\n }\r\n\r\n}(function($) {\r\n 'use strict';\r\n var Slick = window.Slick || {};\r\n\r\n Slick = (function() {\r\n\r\n var instanceUid = 0;\r\n\r\n function Slick(element, settings) {\r\n\r\n var _ = this, dataSettings;\r\n\r\n _.defaults = {\r\n accessibility: true,\r\n adaptiveHeight: false,\r\n appendArrows: $(element),\r\n appendDots: $(element),\r\n arrows: true,\r\n asNavFor: null,\r\n prevArrow: '',\r\n nextArrow: '',\r\n autoplay: false,\r\n autoplaySpeed: 3000,\r\n centerMode: false,\r\n centerPadding: '50px',\r\n cssEase: 'ease',\r\n customPaging: function(slider, i) {\r\n return $('',\r\n \r\n tClose: 'Close (Esc)',\r\n \r\n tLoading: 'Loading...',\r\n \r\n autoFocusLast: true\r\n \r\n }\r\n };\r\n \r\n \r\n \r\n $.fn.magnificPopup = function(options) {\r\n _checkInstance();\r\n \r\n var jqEl = $(this);\r\n \r\n // We call some API method of first param is a string\r\n if (typeof options === \"string\" ) {\r\n \r\n if(options === 'open') {\r\n var items,\r\n itemOpts = _isJQ ? jqEl.data('magnificPopup') : jqEl[0].magnificPopup,\r\n index = parseInt(arguments[1], 10) || 0;\r\n \r\n if(itemOpts.items) {\r\n items = itemOpts.items[index];\r\n } else {\r\n items = jqEl;\r\n if(itemOpts.delegate) {\r\n items = items.find(itemOpts.delegate);\r\n }\r\n items = items.eq( index );\r\n }\r\n mfp._openClick({mfpEl:items}, jqEl, itemOpts);\r\n } else {\r\n if(mfp.isOpen)\r\n mfp[options].apply(mfp, Array.prototype.slice.call(arguments, 1));\r\n }\r\n \r\n } else {\r\n // clone options obj\r\n options = $.extend(true, {}, options);\r\n \r\n /*\r\n * As Zepto doesn't support .data() method for objects\r\n * and it works only in normal browsers\r\n * we assign \"options\" object directly to the DOM element. FTW!\r\n */\r\n if(_isJQ) {\r\n jqEl.data('magnificPopup', options);\r\n } else {\r\n jqEl[0].magnificPopup = options;\r\n }\r\n \r\n mfp.addGroup(jqEl, options);\r\n \r\n }\r\n return jqEl;\r\n };\r\n \r\n /*>>core*/\r\n \r\n /*>>inline*/\r\n \r\n var INLINE_NS = 'inline',\r\n _hiddenClass,\r\n _inlinePlaceholder,\r\n _lastInlineElement,\r\n _putInlineElementsBack = function() {\r\n if(_lastInlineElement) {\r\n _inlinePlaceholder.after( _lastInlineElement.addClass(_hiddenClass) ).detach();\r\n _lastInlineElement = null;\r\n }\r\n };\r\n \r\n $.magnificPopup.registerModule(INLINE_NS, {\r\n options: {\r\n hiddenClass: 'hide', // will be appended with `mfp-` prefix\r\n markup: '',\r\n tNotFound: 'Content not found'\r\n },\r\n proto: {\r\n \r\n initInline: function() {\r\n mfp.types.push(INLINE_NS);\r\n \r\n _mfpOn(CLOSE_EVENT+'.'+INLINE_NS, function() {\r\n _putInlineElementsBack();\r\n });\r\n },\r\n \r\n getInline: function(item, template) {\r\n \r\n _putInlineElementsBack();\r\n \r\n if(item.src) {\r\n var inlineSt = mfp.st.inline,\r\n el = $(item.src);\r\n \r\n if(el.length) {\r\n \r\n // If target element has parent - we replace it with placeholder and put it back after popup is closed\r\n var parent = el[0].parentNode;\r\n if(parent && parent.tagName) {\r\n if(!_inlinePlaceholder) {\r\n _hiddenClass = inlineSt.hiddenClass;\r\n _inlinePlaceholder = _getEl(_hiddenClass);\r\n _hiddenClass = 'mfp-'+_hiddenClass;\r\n }\r\n // replace target inline element with placeholder\r\n _lastInlineElement = el.after(_inlinePlaceholder).detach().removeClass(_hiddenClass);\r\n }\r\n \r\n mfp.updateStatus('ready');\r\n } else {\r\n mfp.updateStatus('error', inlineSt.tNotFound);\r\n el = $('
    ');\r\n }\r\n \r\n item.inlineElement = el;\r\n return el;\r\n }\r\n \r\n mfp.updateStatus('ready');\r\n mfp._parseMarkup(template, {}, item);\r\n return template;\r\n }\r\n }\r\n });\r\n \r\n /*>>inline*/\r\n \r\n /*>>ajax*/\r\n var AJAX_NS = 'ajax',\r\n _ajaxCur,\r\n _removeAjaxCursor = function() {\r\n if(_ajaxCur) {\r\n $(document.body).removeClass(_ajaxCur);\r\n }\r\n },\r\n _destroyAjaxRequest = function() {\r\n _removeAjaxCursor();\r\n if(mfp.req) {\r\n mfp.req.abort();\r\n }\r\n };\r\n \r\n $.magnificPopup.registerModule(AJAX_NS, {\r\n \r\n options: {\r\n settings: null,\r\n cursor: 'mfp-ajax-cur',\r\n tError: 'The content could not be loaded.'\r\n },\r\n \r\n proto: {\r\n initAjax: function() {\r\n mfp.types.push(AJAX_NS);\r\n _ajaxCur = mfp.st.ajax.cursor;\r\n \r\n _mfpOn(CLOSE_EVENT+'.'+AJAX_NS, _destroyAjaxRequest);\r\n _mfpOn('BeforeChange.' + AJAX_NS, _destroyAjaxRequest);\r\n },\r\n getAjax: function(item) {\r\n \r\n if(_ajaxCur) {\r\n $(document.body).addClass(_ajaxCur);\r\n }\r\n \r\n mfp.updateStatus('loading');\r\n \r\n var opts = $.extend({\r\n url: item.src,\r\n success: function(data, textStatus, jqXHR) {\r\n var temp = {\r\n data:data,\r\n xhr:jqXHR\r\n };\r\n \r\n _mfpTrigger('ParseAjax', temp);\r\n \r\n mfp.appendContent( $(temp.data), AJAX_NS );\r\n \r\n item.finished = true;\r\n \r\n _removeAjaxCursor();\r\n \r\n mfp._setFocus();\r\n \r\n setTimeout(function() {\r\n mfp.wrap.addClass(READY_CLASS);\r\n }, 16);\r\n \r\n mfp.updateStatus('ready');\r\n \r\n _mfpTrigger('AjaxContentAdded');\r\n },\r\n error: function() {\r\n _removeAjaxCursor();\r\n item.finished = item.loadError = true;\r\n mfp.updateStatus('error', mfp.st.ajax.tError.replace('%url%', item.src));\r\n }\r\n }, mfp.st.ajax.settings);\r\n \r\n mfp.req = $.ajax(opts);\r\n \r\n return '';\r\n }\r\n }\r\n });\r\n \r\n /*>>ajax*/\r\n \r\n /*>>image*/\r\n var _imgInterval,\r\n _getTitle = function(item) {\r\n if(item.data && item.data.title !== undefined)\r\n return item.data.title;\r\n \r\n var src = mfp.st.image.titleSrc;\r\n \r\n if(src) {\r\n if($.isFunction(src)) {\r\n return src.call(mfp, item);\r\n } else if(item.el) {\r\n return item.el.attr(src) || '';\r\n }\r\n }\r\n return '';\r\n };\r\n \r\n $.magnificPopup.registerModule('image', {\r\n \r\n options: {\r\n markup: '
    '+\r\n '
    '+\r\n '
    '+\r\n '
    '+\r\n '
    '+\r\n '
    '+\r\n '
    '+\r\n '
    '+\r\n '
    '+\r\n '
    '+\r\n '
    '+\r\n '
    ',\r\n cursor: 'mfp-zoom-out-cur',\r\n titleSrc: 'title',\r\n verticalFit: true,\r\n tError: 'The image could not be loaded.'\r\n },\r\n \r\n proto: {\r\n initImage: function() {\r\n var imgSt = mfp.st.image,\r\n ns = '.image';\r\n \r\n mfp.types.push('image');\r\n \r\n _mfpOn(OPEN_EVENT+ns, function() {\r\n if(mfp.currItem.type === 'image' && imgSt.cursor) {\r\n $(document.body).addClass(imgSt.cursor);\r\n }\r\n });\r\n \r\n _mfpOn(CLOSE_EVENT+ns, function() {\r\n if(imgSt.cursor) {\r\n $(document.body).removeClass(imgSt.cursor);\r\n }\r\n _window.off('resize' + EVENT_NS);\r\n });\r\n \r\n _mfpOn('Resize'+ns, mfp.resizeImage);\r\n if(mfp.isLowIE) {\r\n _mfpOn('AfterChange', mfp.resizeImage);\r\n }\r\n },\r\n resizeImage: function() {\r\n var item = mfp.currItem;\r\n if(!item || !item.img) return;\r\n \r\n if(mfp.st.image.verticalFit) {\r\n var decr = 0;\r\n // fix box-sizing in ie7/8\r\n if(mfp.isLowIE) {\r\n decr = parseInt(item.img.css('padding-top'), 10) + parseInt(item.img.css('padding-bottom'),10);\r\n }\r\n item.img.css('max-height', mfp.wH-decr);\r\n }\r\n },\r\n _onImageHasSize: function(item) {\r\n if(item.img) {\r\n \r\n item.hasSize = true;\r\n \r\n if(_imgInterval) {\r\n clearInterval(_imgInterval);\r\n }\r\n \r\n item.isCheckingImgSize = false;\r\n \r\n _mfpTrigger('ImageHasSize', item);\r\n \r\n if(item.imgHidden) {\r\n if(mfp.content)\r\n mfp.content.removeClass('mfp-loading');\r\n \r\n item.imgHidden = false;\r\n }\r\n \r\n }\r\n },\r\n \r\n /**\r\n * Function that loops until the image has size to display elements that rely on it asap\r\n */\r\n findImageSize: function(item) {\r\n \r\n var counter = 0,\r\n img = item.img[0],\r\n mfpSetInterval = function(delay) {\r\n \r\n if(_imgInterval) {\r\n clearInterval(_imgInterval);\r\n }\r\n // decelerating interval that checks for size of an image\r\n _imgInterval = setInterval(function() {\r\n if(img.naturalWidth > 0) {\r\n mfp._onImageHasSize(item);\r\n return;\r\n }\r\n \r\n if(counter > 200) {\r\n clearInterval(_imgInterval);\r\n }\r\n \r\n counter++;\r\n if(counter === 3) {\r\n mfpSetInterval(10);\r\n } else if(counter === 40) {\r\n mfpSetInterval(50);\r\n } else if(counter === 100) {\r\n mfpSetInterval(500);\r\n }\r\n }, delay);\r\n };\r\n \r\n mfpSetInterval(1);\r\n },\r\n \r\n getImage: function(item, template) {\r\n \r\n var guard = 0,\r\n \r\n // image load complete handler\r\n onLoadComplete = function() {\r\n if(item) {\r\n if (item.img[0].complete) {\r\n item.img.off('.mfploader');\r\n \r\n if(item === mfp.currItem){\r\n mfp._onImageHasSize(item);\r\n \r\n mfp.updateStatus('ready');\r\n }\r\n \r\n item.hasSize = true;\r\n item.loaded = true;\r\n \r\n _mfpTrigger('ImageLoadComplete');\r\n \r\n }\r\n else {\r\n // if image complete check fails 200 times (20 sec), we assume that there was an error.\r\n guard++;\r\n if(guard < 200) {\r\n setTimeout(onLoadComplete,100);\r\n } else {\r\n onLoadError();\r\n }\r\n }\r\n }\r\n },\r\n \r\n // image error handler\r\n onLoadError = function() {\r\n if(item) {\r\n item.img.off('.mfploader');\r\n if(item === mfp.currItem){\r\n mfp._onImageHasSize(item);\r\n mfp.updateStatus('error', imgSt.tError.replace('%url%', item.src) );\r\n }\r\n \r\n item.hasSize = true;\r\n item.loaded = true;\r\n item.loadError = true;\r\n }\r\n },\r\n imgSt = mfp.st.image;\r\n \r\n \r\n var el = template.find('.mfp-img');\r\n if(el.length) {\r\n var img = document.createElement('img');\r\n img.className = 'mfp-img';\r\n if(item.el && item.el.find('img').length) {\r\n img.alt = item.el.find('img').attr('alt');\r\n }\r\n item.img = $(img).on('load.mfploader', onLoadComplete).on('error.mfploader', onLoadError);\r\n img.src = item.src;\r\n \r\n // without clone() \"error\" event is not firing when IMG is replaced by new IMG\r\n // TODO: find a way to avoid such cloning\r\n if(el.is('img')) {\r\n item.img = item.img.clone();\r\n }\r\n \r\n img = item.img[0];\r\n if(img.naturalWidth > 0) {\r\n item.hasSize = true;\r\n } else if(!img.width) {\r\n item.hasSize = false;\r\n }\r\n }\r\n \r\n mfp._parseMarkup(template, {\r\n title: _getTitle(item),\r\n img_replaceWith: item.img\r\n }, item);\r\n \r\n mfp.resizeImage();\r\n \r\n if(item.hasSize) {\r\n if(_imgInterval) clearInterval(_imgInterval);\r\n \r\n if(item.loadError) {\r\n template.addClass('mfp-loading');\r\n mfp.updateStatus('error', imgSt.tError.replace('%url%', item.src) );\r\n } else {\r\n template.removeClass('mfp-loading');\r\n mfp.updateStatus('ready');\r\n }\r\n return template;\r\n }\r\n \r\n mfp.updateStatus('loading');\r\n item.loading = true;\r\n \r\n if(!item.hasSize) {\r\n item.imgHidden = true;\r\n template.addClass('mfp-loading');\r\n mfp.findImageSize(item);\r\n }\r\n \r\n return template;\r\n }\r\n }\r\n });\r\n \r\n /*>>image*/\r\n \r\n /*>>zoom*/\r\n var hasMozTransform,\r\n getHasMozTransform = function() {\r\n if(hasMozTransform === undefined) {\r\n hasMozTransform = document.createElement('p').style.MozTransform !== undefined;\r\n }\r\n return hasMozTransform;\r\n };\r\n \r\n $.magnificPopup.registerModule('zoom', {\r\n \r\n options: {\r\n enabled: false,\r\n easing: 'ease-in-out',\r\n duration: 300,\r\n opener: function(element) {\r\n return element.is('img') ? element : element.find('img');\r\n }\r\n },\r\n \r\n proto: {\r\n \r\n initZoom: function() {\r\n var zoomSt = mfp.st.zoom,\r\n ns = '.zoom',\r\n image;\r\n \r\n if(!zoomSt.enabled || !mfp.supportsTransition) {\r\n return;\r\n }\r\n \r\n var duration = zoomSt.duration,\r\n getElToAnimate = function(image) {\r\n var newImg = image.clone().removeAttr('style').removeAttr('class').addClass('mfp-animated-image'),\r\n transition = 'all '+(zoomSt.duration/1000)+'s ' + zoomSt.easing,\r\n cssObj = {\r\n position: 'fixed',\r\n zIndex: 9999,\r\n left: 0,\r\n top: 0,\r\n '-webkit-backface-visibility': 'hidden'\r\n },\r\n t = 'transition';\r\n \r\n cssObj['-webkit-'+t] = cssObj['-moz-'+t] = cssObj['-o-'+t] = cssObj[t] = transition;\r\n \r\n newImg.css(cssObj);\r\n return newImg;\r\n },\r\n showMainContent = function() {\r\n mfp.content.css('visibility', 'visible');\r\n },\r\n openTimeout,\r\n animatedImg;\r\n \r\n _mfpOn('BuildControls'+ns, function() {\r\n if(mfp._allowZoom()) {\r\n \r\n clearTimeout(openTimeout);\r\n mfp.content.css('visibility', 'hidden');\r\n \r\n // Basically, all code below does is clones existing image, puts in on top of the current one and animated it\r\n \r\n image = mfp._getItemToZoom();\r\n \r\n if(!image) {\r\n showMainContent();\r\n return;\r\n }\r\n \r\n animatedImg = getElToAnimate(image);\r\n \r\n animatedImg.css( mfp._getOffset() );\r\n \r\n mfp.wrap.append(animatedImg);\r\n \r\n openTimeout = setTimeout(function() {\r\n animatedImg.css( mfp._getOffset( true ) );\r\n openTimeout = setTimeout(function() {\r\n \r\n showMainContent();\r\n \r\n setTimeout(function() {\r\n animatedImg.remove();\r\n image = animatedImg = null;\r\n _mfpTrigger('ZoomAnimationEnded');\r\n }, 16); // avoid blink when switching images\r\n \r\n }, duration); // this timeout equals animation duration\r\n \r\n }, 16); // by adding this timeout we avoid short glitch at the beginning of animation\r\n \r\n \r\n // Lots of timeouts...\r\n }\r\n });\r\n _mfpOn(BEFORE_CLOSE_EVENT+ns, function() {\r\n if(mfp._allowZoom()) {\r\n \r\n clearTimeout(openTimeout);\r\n \r\n mfp.st.removalDelay = duration;\r\n \r\n if(!image) {\r\n image = mfp._getItemToZoom();\r\n if(!image) {\r\n return;\r\n }\r\n animatedImg = getElToAnimate(image);\r\n }\r\n \r\n animatedImg.css( mfp._getOffset(true) );\r\n mfp.wrap.append(animatedImg);\r\n mfp.content.css('visibility', 'hidden');\r\n \r\n setTimeout(function() {\r\n animatedImg.css( mfp._getOffset() );\r\n }, 16);\r\n }\r\n \r\n });\r\n \r\n _mfpOn(CLOSE_EVENT+ns, function() {\r\n if(mfp._allowZoom()) {\r\n showMainContent();\r\n if(animatedImg) {\r\n animatedImg.remove();\r\n }\r\n image = null;\r\n }\r\n });\r\n },\r\n \r\n _allowZoom: function() {\r\n return mfp.currItem.type === 'image';\r\n },\r\n \r\n _getItemToZoom: function() {\r\n if(mfp.currItem.hasSize) {\r\n return mfp.currItem.img;\r\n } else {\r\n return false;\r\n }\r\n },\r\n \r\n // Get element postion relative to viewport\r\n _getOffset: function(isLarge) {\r\n var el;\r\n if(isLarge) {\r\n el = mfp.currItem.img;\r\n } else {\r\n el = mfp.st.zoom.opener(mfp.currItem.el || mfp.currItem);\r\n }\r\n \r\n var offset = el.offset();\r\n var paddingTop = parseInt(el.css('padding-top'),10);\r\n var paddingBottom = parseInt(el.css('padding-bottom'),10);\r\n offset.top -= ( $(window).scrollTop() - paddingTop );\r\n \r\n \r\n /*\r\n \r\n Animating left + top + width/height looks glitchy in Firefox, but perfect in Chrome. And vice-versa.\r\n \r\n */\r\n var obj = {\r\n width: el.width(),\r\n // fix Zepto height+padding issue\r\n height: (_isJQ ? el.innerHeight() : el[0].offsetHeight) - paddingBottom - paddingTop\r\n };\r\n \r\n // I hate to do this, but there is no another option\r\n if( getHasMozTransform() ) {\r\n obj['-moz-transform'] = obj['transform'] = 'translate(' + offset.left + 'px,' + offset.top + 'px)';\r\n } else {\r\n obj.left = offset.left;\r\n obj.top = offset.top;\r\n }\r\n return obj;\r\n }\r\n \r\n }\r\n });\r\n \r\n \r\n \r\n /*>>zoom*/\r\n \r\n /*>>iframe*/\r\n \r\n var IFRAME_NS = 'iframe',\r\n _emptyPage = '//about:blank',\r\n \r\n _fixIframeBugs = function(isShowing) {\r\n if(mfp.currTemplate[IFRAME_NS]) {\r\n var el = mfp.currTemplate[IFRAME_NS].find('iframe');\r\n if(el.length) {\r\n // reset src after the popup is closed to avoid \"video keeps playing after popup is closed\" bug\r\n if(!isShowing) {\r\n el[0].src = _emptyPage;\r\n }\r\n \r\n // IE8 black screen bug fix\r\n if(mfp.isIE8) {\r\n el.css('display', isShowing ? 'block' : 'none');\r\n }\r\n }\r\n }\r\n };\r\n \r\n $.magnificPopup.registerModule(IFRAME_NS, {\r\n \r\n options: {\r\n markup: '
    '+\r\n '
    '+\r\n ''+\r\n '
    ',\r\n \r\n srcAction: 'iframe_src',\r\n \r\n // we don't care and support only one default type of URL by default\r\n patterns: {\r\n youtube: {\r\n index: 'youtube.com',\r\n id: 'v=',\r\n src: '//www.youtube.com/embed/%id%?autoplay=1'\r\n },\r\n vimeo: {\r\n index: 'vimeo.com/',\r\n id: '/',\r\n src: '//player.vimeo.com/video/%id%?autoplay=1'\r\n },\r\n gmaps: {\r\n index: '//maps.google.',\r\n src: '%id%&output=embed'\r\n }\r\n }\r\n },\r\n \r\n proto: {\r\n initIframe: function() {\r\n mfp.types.push(IFRAME_NS);\r\n \r\n _mfpOn('BeforeChange', function(e, prevType, newType) {\r\n if(prevType !== newType) {\r\n if(prevType === IFRAME_NS) {\r\n _fixIframeBugs(); // iframe if removed\r\n } else if(newType === IFRAME_NS) {\r\n _fixIframeBugs(true); // iframe is showing\r\n }\r\n }// else {\r\n // iframe source is switched, don't do anything\r\n //}\r\n });\r\n \r\n _mfpOn(CLOSE_EVENT + '.' + IFRAME_NS, function() {\r\n _fixIframeBugs();\r\n });\r\n },\r\n \r\n getIframe: function(item, template) {\r\n var embedSrc = item.src;\r\n var iframeSt = mfp.st.iframe;\r\n \r\n $.each(iframeSt.patterns, function() {\r\n if(embedSrc.indexOf( this.index ) > -1) {\r\n if(this.id) {\r\n if(typeof this.id === 'string') {\r\n embedSrc = embedSrc.substr(embedSrc.lastIndexOf(this.id)+this.id.length, embedSrc.length);\r\n } else {\r\n embedSrc = this.id.call( this, embedSrc );\r\n }\r\n }\r\n embedSrc = this.src.replace('%id%', embedSrc );\r\n return false; // break;\r\n }\r\n });\r\n \r\n var dataObj = {};\r\n if(iframeSt.srcAction) {\r\n dataObj[iframeSt.srcAction] = embedSrc;\r\n }\r\n mfp._parseMarkup(template, dataObj, item);\r\n \r\n mfp.updateStatus('ready');\r\n \r\n return template;\r\n }\r\n }\r\n });\r\n \r\n \r\n \r\n /*>>iframe*/\r\n \r\n /*>>gallery*/\r\n /**\r\n * Get looped index depending on number of slides\r\n */\r\n var _getLoopedId = function(index) {\r\n var numSlides = mfp.items.length;\r\n if(index > numSlides - 1) {\r\n return index - numSlides;\r\n } else if(index < 0) {\r\n return numSlides + index;\r\n }\r\n return index;\r\n },\r\n _replaceCurrTotal = function(text, curr, total) {\r\n return text.replace(/%curr%/gi, curr + 1).replace(/%total%/gi, total);\r\n };\r\n \r\n $.magnificPopup.registerModule('gallery', {\r\n \r\n options: {\r\n enabled: false,\r\n arrowMarkup: '',\r\n preload: [0,2],\r\n navigateByImgClick: true,\r\n arrows: true,\r\n \r\n tPrev: 'Previous (Left arrow key)',\r\n tNext: 'Next (Right arrow key)',\r\n tCounter: '%curr% of %total%'\r\n },\r\n \r\n proto: {\r\n initGallery: function() {\r\n \r\n var gSt = mfp.st.gallery,\r\n ns = '.mfp-gallery';\r\n \r\n mfp.direction = true; // true - next, false - prev\r\n \r\n if(!gSt || !gSt.enabled ) return false;\r\n \r\n _wrapClasses += ' mfp-gallery';\r\n \r\n _mfpOn(OPEN_EVENT+ns, function() {\r\n \r\n if(gSt.navigateByImgClick) {\r\n mfp.wrap.on('click'+ns, '.mfp-img', function() {\r\n if(mfp.items.length > 1) {\r\n mfp.next();\r\n return false;\r\n }\r\n });\r\n }\r\n \r\n _document.on('keydown'+ns, function(e) {\r\n if (e.keyCode === 37) {\r\n mfp.prev();\r\n } else if (e.keyCode === 39) {\r\n mfp.next();\r\n }\r\n });\r\n });\r\n \r\n _mfpOn('UpdateStatus'+ns, function(e, data) {\r\n if(data.text) {\r\n data.text = _replaceCurrTotal(data.text, mfp.currItem.index, mfp.items.length);\r\n }\r\n });\r\n \r\n _mfpOn(MARKUP_PARSE_EVENT+ns, function(e, element, values, item) {\r\n var l = mfp.items.length;\r\n values.counter = l > 1 ? _replaceCurrTotal(gSt.tCounter, item.index, l) : '';\r\n });\r\n \r\n _mfpOn('BuildControls' + ns, function() {\r\n if(mfp.items.length > 1 && gSt.arrows && !mfp.arrowLeft) {\r\n var markup = gSt.arrowMarkup,\r\n arrowLeft = mfp.arrowLeft = $( markup.replace(/%title%/gi, gSt.tPrev).replace(/%dir%/gi, 'left') ).addClass(PREVENT_CLOSE_CLASS),\r\n arrowRight = mfp.arrowRight = $( markup.replace(/%title%/gi, gSt.tNext).replace(/%dir%/gi, 'right') ).addClass(PREVENT_CLOSE_CLASS);\r\n \r\n arrowLeft.click(function() {\r\n mfp.prev();\r\n });\r\n arrowRight.click(function() {\r\n mfp.next();\r\n });\r\n \r\n mfp.container.append(arrowLeft.add(arrowRight));\r\n }\r\n });\r\n \r\n _mfpOn(CHANGE_EVENT+ns, function() {\r\n if(mfp._preloadTimeout) clearTimeout(mfp._preloadTimeout);\r\n \r\n mfp._preloadTimeout = setTimeout(function() {\r\n mfp.preloadNearbyImages();\r\n mfp._preloadTimeout = null;\r\n }, 16);\r\n });\r\n \r\n \r\n _mfpOn(CLOSE_EVENT+ns, function() {\r\n _document.off(ns);\r\n mfp.wrap.off('click'+ns);\r\n mfp.arrowRight = mfp.arrowLeft = null;\r\n });\r\n \r\n },\r\n next: function() {\r\n mfp.direction = true;\r\n mfp.index = _getLoopedId(mfp.index + 1);\r\n mfp.updateItemHTML();\r\n },\r\n prev: function() {\r\n mfp.direction = false;\r\n mfp.index = _getLoopedId(mfp.index - 1);\r\n mfp.updateItemHTML();\r\n },\r\n goTo: function(newIndex) {\r\n mfp.direction = (newIndex >= mfp.index);\r\n mfp.index = newIndex;\r\n mfp.updateItemHTML();\r\n },\r\n preloadNearbyImages: function() {\r\n var p = mfp.st.gallery.preload,\r\n preloadBefore = Math.min(p[0], mfp.items.length),\r\n preloadAfter = Math.min(p[1], mfp.items.length),\r\n i;\r\n \r\n for(i = 1; i <= (mfp.direction ? preloadAfter : preloadBefore); i++) {\r\n mfp._preloadItem(mfp.index+i);\r\n }\r\n for(i = 1; i <= (mfp.direction ? preloadBefore : preloadAfter); i++) {\r\n mfp._preloadItem(mfp.index-i);\r\n }\r\n },\r\n _preloadItem: function(index) {\r\n index = _getLoopedId(index);\r\n \r\n if(mfp.items[index].preloaded) {\r\n return;\r\n }\r\n \r\n var item = mfp.items[index];\r\n if(!item.parsed) {\r\n item = mfp.parseEl( index );\r\n }\r\n \r\n _mfpTrigger('LazyLoad', item);\r\n \r\n if(item.type === 'image') {\r\n item.img = $('').on('load.mfploader', function() {\r\n item.hasSize = true;\r\n }).on('error.mfploader', function() {\r\n item.hasSize = true;\r\n item.loadError = true;\r\n _mfpTrigger('LazyLoadError', item);\r\n }).attr('src', item.src);\r\n }\r\n \r\n \r\n item.preloaded = true;\r\n }\r\n }\r\n });\r\n \r\n /*>>gallery*/\r\n \r\n /*>>retina*/\r\n \r\n var RETINA_NS = 'retina';\r\n \r\n $.magnificPopup.registerModule(RETINA_NS, {\r\n options: {\r\n replaceSrc: function(item) {\r\n return item.src.replace(/\\.\\w+$/, function(m) { return '@2x' + m; });\r\n },\r\n ratio: 1 // Function or number. Set to 1 to disable.\r\n },\r\n proto: {\r\n initRetina: function() {\r\n if(window.devicePixelRatio > 1) {\r\n \r\n var st = mfp.st.retina,\r\n ratio = st.ratio;\r\n \r\n ratio = !isNaN(ratio) ? ratio : ratio();\r\n \r\n if(ratio > 1) {\r\n _mfpOn('ImageHasSize' + '.' + RETINA_NS, function(e, item) {\r\n item.img.css({\r\n 'max-width': item.img[0].naturalWidth / ratio,\r\n 'width': '100%'\r\n });\r\n });\r\n _mfpOn('ElementParse' + '.' + RETINA_NS, function(e, item) {\r\n item.src = st.replaceSrc(item, ratio);\r\n });\r\n }\r\n }\r\n \r\n }\r\n }\r\n });\r\n \r\n /*>>retina*/\r\n _checkInstance(); }));\r\n\r\n\r\n //Video Module\r\n (function() {\r\n \r\n return {\r\n currentlyActiveChild: null,\r\n listChildren: $('#videoSlider .videoSlider-itemList > li') || null,\r\n // eleViewPort: $('#video-module .view-port > iframe').first() || null,\r\n \r\n compareToActiveChild: function(compareObj) {\r\n var __ = this;\r\n \r\n if (__.currentlyActiveChild === null) {\r\n return false;\r\n }\r\n \r\n return compareObj[0].id === __.currentlyActiveChild[0].id;\r\n },\r\n \r\n // Compare all children to currently active child and remove active classes.\r\n deactivateOthers: function() {\r\n var __ = this;\r\n \r\n __.listChildren.each(function() {\r\n var li = $(this);\r\n var obj_compr = __.compareToActiveChild(li);\r\n\r\n if (obj_compr && li.hasClass('active')) {\r\n li.removeClass('active');\r\n } \r\n }); \r\n },\r\n \r\n init: function() {\r\n var __ = this;\r\n \r\n if (__.listChildren !== null) {\r\n __.listChildren.each(function() {\r\n var li = $(this);\r\n var anchor = $(this).find('a').first();\r\n var url = anchor.attr('href');\r\n var video_id = url.split('/').pop();\r\n var video_title = anchor.find('.title-container').text();\r\n\r\n \r\n if (url.indexOf('enablejsapi') === -1) {\r\n url += '&enablejsapi=1';\r\n }\r\n\r\n\r\n $.ajax({\r\n type:'GET',\r\n url: 'https://vimeo.com/api/v2/video/'+ video_id +'.json',\r\n jsonp: 'callback',\r\n dataType: 'jsonp',\r\n success: function(data){\r\n var thumbnail_src = data[0].thumbnail_large;\r\n var thumb_url = thumbnail_src;\r\n \r\n li.find('.thumbnail-container > img').attr('src', thumb_url);\r\n }\r\n });\r\n \r\n // If YouTube ever changes where they store thumbnail images, update here.\r\n \r\n \r\n // anchor.on('click', function(event) {\r\n // event.preventDefault();\r\n \r\n // if (!__.compareToActiveChild(li)) {\r\n // __.deactivateOthers(); \r\n // __.eleViewPort.attr('src', url);\r\n // __.eleViewPort.attr('alt', video_title);\r\n // __.currentlyActiveChild = li;\r\n // li.addClass('active');\r\n // }\r\n // });\r\n \r\n });\r\n \r\n // Auto-select first video.\r\n __.listChildren.first().find(\"a\").trigger(\"click\");\r\n }\r\n }\r\n }\r\n })().init();\r\n\r\n /************** */\r\n\r\n$(document).ready(function() {\r\n\r\n $('.popup-link').on('click', function(){\r\n $(this).addClass(\"active\");\r\n });\r\n\r\n $('.popup-link').magnificPopup({\r\n type:'iframe',\r\n showCloseBtn:false,\r\n callbacks: {\r\n beforeOpen: function() {\r\n console.log('Start of popup initialization');\r\n console.log(this);\r\n },\r\n open: function() {\r\n // Will fire when this exact popup is opened\r\n // this - is Magnific Popup object\r\n console.log(\"----------opened------------------\");\r\n console.log(this);\r\n if($('.popup-link.active').attr(\"href\").indexOf(\"vimeo\") < 0 ){\r\n\r\n $('.mfp-iframe-holder .mfp-content').addClass(\"application-link\");\r\n \r\n if( $('.popup-link.active.application-link').length > 0 ){\r\n console.log(\"application\");\r\n }\r\n }\r\n\r\n },\r\n close: function() {\r\n // Will fire when this exact popup is opened\r\n // this - is Magnific Popup object\r\n console.log(\"closed\");\r\n $( \".popup-link.active\").removeClass( \"active\" );\r\n },\r\n change: function() {\r\n console.log('Content changed');\r\n console.log(this.content); // Direct reference to your popup element\r\n }\r\n }\r\n });\r\n\r\n\r\n});\r\n/************* */\r\n\r\n\r\n\r\n", "let Q = require('q');\r\n\r\nmodule.exports = {\r\n cache: {\r\n set: function (year, month, events) {\r\n if (!this[year]) {\r\n this[year] = {};\r\n }\r\n this[year][month] = events;\r\n return events\r\n },\r\n },\r\n\r\n getEventsForMonth: function (year, month) {\r\n if (this.cache[year] && this.cache[year][month]) {\r\n return Q.fcall(() =>this.cache[year][month]);\r\n } else {\r\n return this.fetchApiEventsForMonth(year, month)\r\n .then(events => this.cache.set(year, month, events))\r\n }\r\n },\r\n\r\n getUpcomingEvents: function (count, region) {\r\n return this.fetchApiUpcomingEvents(count, region);\r\n },\r\n\r\n fetchApiEventsForMonth: function (year, month) {\r\n return Q(\r\n jQuery.ajax({\r\n url: jnfroutesconfg.EventsApi,\r\n data: {\r\n month: month,\r\n year: year\r\n }\r\n })\r\n );\r\n },\r\n\r\n fetchApiUpcomingEvents: function(count, region) {\r\n return Q(\r\n jQuery.ajax({\r\n url: jnfroutesconfg.UpcomingEventsApi,\r\n data: {\r\n count: count,\r\n region: region\r\n }\r\n })\r\n );\r\n }\r\n}", "/*!\r\n * FullCalendar v3.4.0\r\n * Docs & License: https://fullcalendar.io/\r\n * (c) 2017 Adam Shaw\r\n */\r\n!function(t){\"function\"==typeof define&&define.amd?define([\"jquery\",\"moment\"],t):\"object\"==typeof exports?module.exports=t($,require(\"moment\")):t(jQuery,moment)}(function(t,e){function n(t){return it(t,Qt)}function i(t,e){e.left&&t.css({\"border-left-width\":1,\"margin-left\":e.left-1}),e.right&&t.css({\"border-right-width\":1,\"margin-right\":e.right-1})}function r(t){t.css({\"margin-left\":\"\",\"margin-right\":\"\",\"border-left-width\":\"\",\"border-right-width\":\"\"})}function s(){t(\"body\").addClass(\"fc-not-allowed\")}function o(){t(\"body\").removeClass(\"fc-not-allowed\")}function a(e,n,i){var r=Math.floor(n/e.length),s=Math.floor(n-r*(e.length-1)),o=[],a=[],u=[],h=0;l(e),e.each(function(n,i){var l=n===e.length-1?s:r,c=t(i).outerHeight(!0);c *\").each(function(e,i){var r=t(i).outerWidth();r>n&&(n=r)}),n++,e.width(n),n}function h(t,e){var n,i=t.add(e);return i.css({position:\"relative\",left:-1}),n=t.outerHeight()-e.outerHeight(),i.css({position:\"\",left:\"\"}),n}function c(e){var n=e.css(\"position\"),i=e.parents().filter(function(){var e=t(this);return/(auto|scroll)/.test(e.css(\"overflow\")+e.css(\"overflow-y\")+e.css(\"overflow-x\"))}).eq(0);return\"fixed\"!==n&&i.length?i:t(e[0].ownerDocument||document)}function d(t,e){var n=t.offset(),i=n.left-(e?e.left:0),r=n.top-(e?e.top:0);return{left:i,right:i+t.outerWidth(),top:r,bottom:r+t.outerHeight()}}function f(t,e){var n=t.offset(),i=p(t),r=n.left+w(t,\"border-left-width\")+i.left-(e?e.left:0),s=n.top+w(t,\"border-top-width\")+i.top-(e?e.top:0);return{left:r,right:r+t[0].clientWidth,top:s,bottom:s+t[0].clientHeight}}function g(t,e){var n=t.offset(),i=n.left+w(t,\"border-left-width\")+w(t,\"padding-left\")-(e?e.left:0),r=n.top+w(t,\"border-top-width\")+w(t,\"padding-top\")-(e?e.top:0);return{left:i,right:i+t.width(),top:r,bottom:r+t.height()}}function p(t){var e,n=t[0].offsetWidth-t[0].clientWidth,i=t[0].offsetHeight-t[0].clientHeight;return n=v(n),i=v(i),e={left:0,right:0,top:0,bottom:i},m()&&\"rtl\"==t.css(\"direction\")?e.left=n:e.right=n,e}function v(t){return t=Math.max(0,t),t=Math.round(t)}function m(){return null===Xt&&(Xt=y()),Xt}function y(){var e=t(\"
    \").css({position:\"absolute\",top:-1e3,left:0,border:0,padding:0,overflow:\"scroll\",direction:\"rtl\"}).appendTo(\"body\"),n=e.children(),i=n.offset().left>e.offset().left;return e.remove(),i}function w(t,e){return parseFloat(t.css(e))||0}function S(t){return 1==t.which&&!t.ctrlKey}function b(t){var e=t.originalEvent.touches;return e&&e.length?e[0].pageX:t.pageX}function E(t){var e=t.originalEvent.touches;return e&&e.length?e[0].pageY:t.pageY}function D(t){return/^touch/.test(t.type)}function T(t){t.addClass(\"fc-unselectable\").on(\"selectstart\",H)}function C(t){t.removeClass(\"fc-unselectable\").off(\"selectstart\",H)}function H(t){t.preventDefault()}function R(t,e){var n={left:Math.max(t.left,e.left),right:Math.min(t.right,e.right),top:Math.max(t.top,e.top),bottom:Math.min(t.bottom,e.bottom)};return n.leftl&&o=l?(n=o.clone(),r=!0):(n=l.clone(),r=!1),a<=u?(i=a.clone(),s=!0):(i=u.clone(),s=!1),{start:n,end:i,isStart:r,isEnd:s}}function F(t,n){return e.duration({days:t.clone().stripTime().diff(n.clone().stripTime(),\"days\"),ms:t.time()-n.time()})}function A(t,n){return e.duration({days:t.clone().stripTime().diff(n.clone().stripTime(),\"days\")})}function G(t,n,i){return e.duration(Math.round(t.diff(n,i,!0)),i)}function V(t,e){var n,i,r;for(n=0;n=1&&vt(r)));n++);return i}function O(t,e){var n=V(t);return\"week\"===n&&\"object\"==typeof e&&e.days&&(n=\"day\"),n}function P(t,n,i){return null!=i?i.diff(n,t,!0):e.isDuration(n)?n.as(t):n.end.diff(n.start,t,!0)}function _(t,e,n){var i;return tt(n)?(e-t)/n:(i=n.asMonths(),Math.abs(i)>=1&&vt(i)?e.diff(t,\"months\",!0)/i:e.diff(t,\"days\",!0)/n.asDays())}function W(t,e){var n,i;return tt(t)||tt(e)?t/e:(n=t.asMonths(),i=e.asMonths(),Math.abs(n)>=1&&vt(n)&&Math.abs(i)>=1&&vt(i)?n/i:t.asDays()/e.asDays())}function Y(t,n){var i;return tt(t)?e.duration(t*n):(i=t.asMonths(),Math.abs(i)>=1&&vt(i)?e.duration({months:i*n}):e.duration({days:t.asDays()*n}))}function q(t){return{start:t.start.clone(),end:t.end.clone()}}function U(t,e){return t=q(t),e.start&&(t.start=j(t.start,e)),e.end&&(t.end=K(t.end,e.end)),t}function j(t,e){return t=t.clone(),e.start&&(t=J(t,e.start)),e.end&&t>=e.end&&(t=e.end.clone().subtract(1)),t}function Z(t,e){return(!e.start||t>=e.start)&&(!e.end||t=e.start)&&(!e.end||t.start=e.start)&&(!e.end||t.end<=e.end)}function X(t,e){return(t.start&&e.start&&t.start.isSame(e.start)||!t.start&&!e.start)&&(t.end&&e.end&&t.end.isSame(e.end)||!t.end&&!e.end)}function K(t,e){return(t.isBefore(e)?t:e).clone()}function J(t,e){return(t.isAfter(e)?t:e).clone()}function tt(t){return Boolean(t.hours()||t.minutes()||t.seconds()||t.milliseconds())}function et(t){return\"[object Date]\"===Object.prototype.toString.call(t)||t instanceof Date}function nt(t){return/^\\d+\\:\\d+(?:\\:\\d+\\.?(?:\\d{3})?)?$/.test(t)}function it(t,e){var n,i,r,s,o,a,l={};if(e)for(n=0;n=0;s--)if(\"object\"==typeof(o=t[s][i]))r.unshift(o);else if(void 0!==o){l[i]=o;break}r.length&&(l[i]=it(r))}for(n=t.length-1;n>=0;n--){a=t[n];for(i in a)i in l||(l[i]=a[i])}return l}function rt(t){var e=function(){};return e.prototype=t,new e}function st(t,e){for(var n in t)ot(t,n)&&(e[n]=t[n])}function ot(t,e){return te.call(t,e)}function at(e){return/undefined|null|boolean|number|string/.test(t.type(e))}function lt(e,n,i){if(t.isFunction(e)&&(e=[e]),e){var r,s;for(r=0;r/g,\">\").replace(/'/g,\"'\").replace(/\"/g,\""\").replace(/\\n/g,\"
    \")}function ct(t){return t.replace(/&.*?;/g,\"\")}function dt(e){var n=[];return t.each(e,function(t,e){null!=e&&n.push(t+\":\"+e)}),n.join(\";\")}function ft(e){var n=[];return t.each(e,function(t,e){null!=e&&n.push(t+'=\"'+ht(e)+'\"')}),n.join(\" \")}function gt(t){return t.charAt(0).toUpperCase()+t.slice(1)}function pt(t,e){return t-e}function vt(t){return t%1==0}function mt(t,e){var n=t[e];return function(){return n.apply(t,arguments)}}function yt(t,e,n){var i,r,s,o,a,l=function(){var u=+new Date-o;u=t.leftCol)return!0;return!1}function Ft(t,e){return t.leftCol-e.leftCol}function At(t){var e,n,i,r=[];for(e=0;ee.top&&t.top\"),g.append(o(\"left\")).append(o(\"right\")).append(o(\"center\")).append('
    ')):s()}function s(){g&&(g.remove(),g=f.el=null)}function o(i){var r=t('
    '),s=n.layout[i],o=e.opt(\"customButtons\")||{},a=e.opt(\"buttonText\")||{};return s&&t.each(s.split(\" \"),function(n){var i,s=t(),l=!0;t.each(this.split(\",\"),function(n,i){var r,u,h,c,d,f,g,m,y,w;\"title\"==i?(s=s.add(t(\"

     

    \")),l=!1):((r=o[i])?(h=function(t){r.click&&r.click.call(w[0],t)},c=\"\",d=r.text):(u=e.getViewSpec(i))?(h=function(){e.changeView(i)},v.push(i),c=u.buttonTextOverride,d=u.buttonTextDefault):e[i]&&(h=function(){e[i]()},c=(e.overrides.buttonText||{})[i],d=a[i]),h&&(f=r?r.themeIcon:e.opt(\"themeButtonIcons\")[i],g=r?r.icon:e.opt(\"buttonIcons\")[i],m=c?ht(c):f&&e.opt(\"theme\")?\"\":g&&!e.opt(\"theme\")?\"\":ht(d),y=[\"fc-\"+i+\"-button\",p+\"-button\",p+\"-state-default\"],w=t('\").click(function(t){w.hasClass(p+\"-state-disabled\")||(h(t),(w.hasClass(p+\"-state-active\")||w.hasClass(p+\"-state-disabled\"))&&w.removeClass(p+\"-state-hover\"))}).mousedown(function(){w.not(\".\"+p+\"-state-active\").not(\".\"+p+\"-state-disabled\").addClass(p+\"-state-down\")}).mouseup(function(){w.removeClass(p+\"-state-down\")}).hover(function(){w.not(\".\"+p+\"-state-active\").not(\".\"+p+\"-state-disabled\").addClass(p+\"-state-hover\")},function(){w.removeClass(p+\"-state-hover\").removeClass(p+\"-state-down\")}),s=s.add(w)))}),l&&s.first().addClass(p+\"-corner-left\").end().last().addClass(p+\"-corner-right\").end(),s.length>1?(i=t(\"
    \"),l&&i.addClass(\"fc-button-group\"),i.append(s),r.append(i)):r.append(s)}),r}function a(t){g&&g.find(\"h2\").text(t)}function l(t){g&&g.find(\".fc-\"+t+\"-button\").addClass(p+\"-state-active\")}function u(t){g&&g.find(\".fc-\"+t+\"-button\").removeClass(p+\"-state-active\")}function h(t){g&&g.find(\".fc-\"+t+\"-button\").prop(\"disabled\",!0).addClass(p+\"-state-disabled\")}function c(t){g&&g.find(\".fc-\"+t+\"-button\").prop(\"disabled\",!1).removeClass(p+\"-state-disabled\")}function d(){return v}var f=this;f.setToolbarOptions=i,f.render=r,f.removeElement=s,f.updateTitle=a,f.activateButton=l,f.deactivateButton=u,f.disableButton=h,f.enableButton=c,f.getViewsWithButtons=d,f.el=null;var g,p,v=[]}function Yt(e){t.each(Me,function(t,n){null==e[t]&&(e[t]=n(e))})}function qt(t){return e.localeData(t)||e.localeData(\"en\")}function Ut(){function n(t,e){return!q.opt(\"lazyFetching\")||s(t,e)?o(t,e):he.resolve(Z)}function i(){Z=r(K),q.trigger(\"eventsReset\",Z)}function r(t){var e,n,i=[];for(e=0;eU&&i.push(n);return i}function s(t,e){return!U||tj}function o(t,e){return U=t,j=e,a()}function a(){return u(Q,\"reset\")}function l(t){return u(b(t))}function u(t,e){var n,i;for(\"reset\"===e?K=[]:\"add\"!==e&&(K=C(K,t)),n=0;ns&&(!l[o]||u.isSame(h,l[o]))&&(o-1!==s||\".\"!==f[o]);o--)v=f[o]+v;for(a=s;a<=o;a++)m+=f[a],y+=g[a];return(m||y)&&(w=r?y+i+m:m+i+y),d(p+w+v)}function r(t){return S[t]||(S[t]=s(t))}function s(t){var e=o(t);return{fakeFormatString:l(e),sameUnits:u(e)}}function o(t){for(var e,n=[],i=/\\[([^\\]]*)\\]|\\(([^\\)]*)\\)|(LTS|LT|(\\w)\\4*o?)|([^\\w\\[\\(]+)/g;e=i.exec(t);)e[1]?n.push.apply(n,a(e[1])):e[2]?n.push({maybe:o(e[2])}):e[3]?n.push({token:e[3]}):e[5]&&n.push.apply(n,a(e[5]));return n}function a(t){return\". \"===t?[\".\",\" \"]:[t]}function l(t){var e,n,i=[];for(e=0;er.value)&&(r=i);return r?r.unit:null}Zt.formatDate=t,Zt.formatRange=n,Zt.oldMomentFormat=e,Zt.queryMostGranularFormatUnit=f;var g=\"\\v\",p=\"\u001f\",v=\"\u001e\",m=new RegExp(v+\"([^\"+v+\"]*)\"+v,\"g\"),y={t:function(t){return e(t,\"a\").charAt(0)},T:function(t){return e(t,\"A\").charAt(0)}},w={Y:{value:1,unit:\"year\"},M:{value:2,unit:\"month\"},W:{value:3,unit:\"week\"},w:{value:3,unit:\"week\"},D:{value:4,unit:\"day\"},d:{value:4,unit:\"day\"}},S={}}();var oe=Zt.formatDate,ae=Zt.formatRange,le=Zt.oldMomentFormat;Zt.Class=bt,bt.extend=function(){var t,e,n=arguments.length;for(t=0;t=0;e--)n=i[e],n.namespace!==t.namespace||\"add\"!==n.type&&\"remove\"!==n.type||i.splice(e,1);\"destroy\"===t.type?i.length&&(n=i[i.length-1],n.namespace===t.namespace&&(\"init\"===n.type?(r=!1,i.pop()):\"destroy\"===n.type&&(r=!1))):\"init\"===t.type&&i.length&&(n=i[i.length-1],n.namespace===t.namespace&&\"init\"===n.type&&i.pop())}return r&&i.push(t),r}});Zt.RenderQueue=de;var fe=Zt.EmitterMixin={on:function(e,n){return t(this).on(e,this._prepareIntercept(n)),this},one:function(e,n){return t(this).one(e,this._prepareIntercept(n)),this},_prepareIntercept:function(e){var n=function(t,n){return e.apply(n.context||this,n.args||[])};return e.guid||(e.guid=t.guid++),n.guid=e.guid,n},\r\noff:function(e,n){return t(this).off(e,n),this},trigger:function(e){var n=Array.prototype.slice.call(arguments,1);return t(this).triggerHandler(e,{args:n}),this},triggerWith:function(e,n,i){return t(this).triggerHandler(e,{context:n,args:i}),this}},ge=Zt.ListenerMixin=function(){var e=0;return{listenerId:null,listenTo:function(e,n,i){if(\"object\"==typeof n)for(var r in n)n.hasOwnProperty(r)&&this.listenTo(e,r,n[r]);else\"string\"==typeof n&&e.on(n+\".\"+this.getListenerNamespace(),t.proxy(i,this))},stopListeningTo:function(t,e){t.off((e||\"\")+\".\"+this.getListenerNamespace())},getListenerNamespace:function(){return null==this.listenerId&&(this.listenerId=e++),\"_listener\"+this.listenerId}}}(),pe=bt.extend(ge,{isHidden:!0,options:null,el:null,margin:10,constructor:function(t){this.options=t||{}},show:function(){this.isHidden&&(this.el||this.render(),this.el.show(),this.position(),this.isHidden=!1,this.trigger(\"show\"))},hide:function(){this.isHidden||(this.el.hide(),this.isHidden=!0,this.trigger(\"hide\"))},render:function(){var e=this,n=this.options;this.el=t('
    ').addClass(n.className||\"\").css({top:0,left:0}).append(n.content).appendTo(n.parentEl),this.el.on(\"click\",\".fc-close\",function(){e.hide()}),n.autoHide&&this.listenTo(t(document),\"mousedown\",this.documentMousedown)},documentMousedown:function(e){this.el&&!t(e.target).closest(this.el).length&&this.hide()},removeElement:function(){this.hide(),this.el&&(this.el.remove(),this.el=null),this.stopListeningTo(t(document),\"mousedown\")},position:function(){var e,n,i,r,s,o=this.options,a=this.el.offsetParent().offset(),l=this.el.outerWidth(),u=this.el.outerHeight(),h=t(window),d=c(this.el);r=o.top||0,s=void 0!==o.left?o.left:void 0!==o.right?o.right-l:0,d.is(window)||d.is(document)?(d=h,e=0,n=0):(i=d.offset(),e=i.top,n=i.left),e+=h.scrollTop(),n+=h.scrollLeft(),!1!==o.viewportConstrain&&(r=Math.min(r,e+d.outerHeight()-u-this.margin),r=Math.max(r,e+this.margin),s=Math.min(s,n+d.outerWidth()-l-this.margin),s=Math.max(s,n+this.margin)),this.el.css({top:r-a.top,left:s-a.left})},trigger:function(t){this.options[t]&&this.options[t].apply(this,Array.prototype.slice.call(arguments,1))}}),ve=Zt.CoordCache=bt.extend({els:null,forcedOffsetParentEl:null,origin:null,boundingRect:null,isHorizontal:!1,isVertical:!1,lefts:null,rights:null,tops:null,bottoms:null,constructor:function(e){this.els=t(e.els),this.isHorizontal=e.isHorizontal,this.isVertical=e.isVertical,this.forcedOffsetParentEl=e.offsetParent?t(e.offsetParent):null},build:function(){var t=this.forcedOffsetParentEl;!t&&this.els.length>0&&(t=this.els.eq(0).offsetParent()),this.origin=t?t.offset():null,this.boundingRect=this.queryBoundingRect(),this.isHorizontal&&this.buildElHorizontals(),this.isVertical&&this.buildElVerticals()},clear:function(){this.origin=null,this.boundingRect=null,this.lefts=null,this.rights=null,this.tops=null,this.bottoms=null},ensureBuilt:function(){this.origin||this.build()},buildElHorizontals:function(){var e=[],n=[];this.els.each(function(i,r){var s=t(r),o=s.offset().left,a=s.outerWidth();e.push(o),n.push(o+a)}),this.lefts=e,this.rights=n},buildElVerticals:function(){var e=[],n=[];this.els.each(function(i,r){var s=t(r),o=s.offset().top,a=s.outerHeight();e.push(o),n.push(o+a)}),this.tops=e,this.bottoms=n},getHorizontalIndex:function(t){this.ensureBuilt();var e,n=this.lefts,i=this.rights,r=n.length;for(e=0;e=n[e]&&t=n[e]&&t0&&(t=c(this.els.eq(0)),!t.is(document))?f(t):null},isPointInBounds:function(t,e){return this.isLeftInBounds(t)&&this.isTopInBounds(e)},isLeftInBounds:function(t){return!this.boundingRect||t>=this.boundingRect.left&&t=this.boundingRect.top&&t=i*i&&this.handleDistanceSurpassed(t),this.isDragging&&this.handleDrag(e,n,t)},handleDrag:function(t,e,n){this.trigger(\"drag\",t,e,n),this.updateAutoScroll(n)},endDrag:function(t){this.isDragging&&(this.isDragging=!1,this.handleDragEnd(t))},handleDragEnd:function(t){this.trigger(\"dragEnd\",t)},startDelay:function(t){var e=this;this.delay?this.delayTimeoutId=setTimeout(function(){e.handleDelayEnd(t)},this.delay):this.handleDelayEnd(t)},handleDelayEnd:function(t){this.isDelayEnded=!0,this.isDistanceSurpassed&&this.startDrag(t)},handleDistanceSurpassed:function(t){this.isDistanceSurpassed=!0,this.isDelayEnded&&this.startDrag(t)},handleTouchMove:function(t){this.isDragging&&this.shouldCancelTouchScroll&&t.preventDefault(),this.handleMove(t)},handleMouseMove:function(t){this.handleMove(t)},handleTouchScroll:function(t){this.isDragging&&!this.scrollAlwaysKills||this.endInteraction(t,!0)},trigger:function(t){this.options[t]&&this.options[t].apply(this,Array.prototype.slice.call(arguments,1)),this[\"_\"+t]&&this[\"_\"+t].apply(this,Array.prototype.slice.call(arguments,1))}});me.mixin({isAutoScroll:!1,scrollBounds:null,scrollTopVel:null,scrollLeftVel:null,scrollIntervalId:null,scrollSensitivity:30,scrollSpeed:200,scrollIntervalMs:50,initAutoScroll:function(){var t=this.scrollEl;this.isAutoScroll=this.options.scroll&&t&&!t.is(window)&&!t.is(document),this.isAutoScroll&&this.listenTo(t,\"scroll\",yt(this.handleDebouncedScroll,100))},destroyAutoScroll:function(){this.endAutoScroll(),this.isAutoScroll&&this.stopListeningTo(this.scrollEl,\"scroll\")},computeScrollBounds:function(){this.isAutoScroll&&(this.scrollBounds=d(this.scrollEl))},updateAutoScroll:function(t){var e,n,i,r,s=this.scrollSensitivity,o=this.scrollBounds,a=0,l=0;o&&(e=(s-(E(t)-o.top))/s,n=(s-(o.bottom-E(t)))/s,i=(s-(b(t)-o.left))/s,r=(s-(o.right-b(t)))/s,e>=0&&e<=1?a=e*this.scrollSpeed*-1:n>=0&&n<=1&&(a=n*this.scrollSpeed),i>=0&&i<=1?l=i*this.scrollSpeed*-1:r>=0&&r<=1&&(l=r*this.scrollSpeed)),this.setScrollVel(a,l)},setScrollVel:function(t,e){this.scrollTopVel=t,this.scrollLeftVel=e,this.constrainScrollVel(),!this.scrollTopVel&&!this.scrollLeftVel||this.scrollIntervalId||(this.scrollIntervalId=setInterval(mt(this,\"scrollIntervalFunc\"),this.scrollIntervalMs))},constrainScrollVel:function(){var t=this.scrollEl;this.scrollTopVel<0?t.scrollTop()<=0&&(this.scrollTopVel=0):this.scrollTopVel>0&&t.scrollTop()+t[0].clientHeight>=t[0].scrollHeight&&(this.scrollTopVel=0),this.scrollLeftVel<0?t.scrollLeft()<=0&&(this.scrollLeftVel=0):this.scrollLeftVel>0&&t.scrollLeft()+t[0].clientWidth>=t[0].scrollWidth&&(this.scrollLeftVel=0)},scrollIntervalFunc:function(){var t=this.scrollEl,e=this.scrollIntervalMs/1e3;this.scrollTopVel&&t.scrollTop(t.scrollTop()+this.scrollTopVel*e),this.scrollLeftVel&&t.scrollLeft(t.scrollLeft()+this.scrollLeftVel*e),this.constrainScrollVel(),this.scrollTopVel||this.scrollLeftVel||this.endAutoScroll()},endAutoScroll:function(){this.scrollIntervalId&&(clearInterval(this.scrollIntervalId),this.scrollIntervalId=null,this.handleScrollEnd())},handleDebouncedScroll:function(){this.scrollIntervalId||this.handleScrollEnd()},handleScrollEnd:function(){}});var ye=me.extend({component:null,origHit:null,hit:null,coordAdjust:null,constructor:function(t,e){me.call(this,e),this.component=t},handleInteractionStart:function(t){var e,n,i,r=this.subjectEl;this.component.hitsNeeded(),this.computeScrollBounds(),t?(n={left:b(t),top:E(t)},i=n,r&&(e=d(r),i=x(i,e)),this.origHit=this.queryHit(i.left,i.top),r&&this.options.subjectCenter&&(this.origHit&&(e=R(this.origHit,e)||e),i=I(e)),this.coordAdjust=k(i,n)):(this.origHit=null,this.coordAdjust=null),me.prototype.handleInteractionStart.apply(this,arguments)},handleDragStart:function(t){var e;me.prototype.handleDragStart.apply(this,arguments),(e=this.queryHit(b(t),E(t)))&&this.handleHitOver(e)},handleDrag:function(t,e,n){var i;me.prototype.handleDrag.apply(this,arguments),i=this.queryHit(b(n),E(n)),Ht(i,this.hit)||(this.hit&&this.handleHitOut(),i&&this.handleHitOver(i))},handleDragEnd:function(){this.handleHitDone(),me.prototype.handleDragEnd.apply(this,arguments)},handleHitOver:function(t){var e=Ht(t,this.origHit);this.hit=t,this.trigger(\"hitOver\",this.hit,e,this.origHit)},handleHitOut:function(){this.hit&&(this.trigger(\"hitOut\",this.hit),this.handleHitDone(),this.hit=null)},handleHitDone:function(){this.hit&&this.trigger(\"hitDone\",this.hit)},handleInteractionEnd:function(){me.prototype.handleInteractionEnd.apply(this,arguments),this.origHit=null,this.hit=null,this.component.hitsNotNeeded()},handleScrollEnd:function(){me.prototype.handleScrollEnd.apply(this,arguments),this.isDragging&&(this.component.releaseHits(),this.component.prepareHits())},queryHit:function(t,e){return this.coordAdjust&&(t+=this.coordAdjust.left,e+=this.coordAdjust.top),this.component.queryHit(t,e)}});Zt.touchMouseIgnoreWait=500;var we=bt.extend(ge,fe,{isTouching:!1,mouseIgnoreDepth:0,handleScrollProxy:null,bind:function(){var e=this;this.listenTo(t(document),{touchstart:this.handleTouchStart,touchcancel:this.handleTouchCancel,touchend:this.handleTouchEnd,mousedown:this.handleMouseDown,mousemove:this.handleMouseMove,mouseup:this.handleMouseUp,click:this.handleClick,selectstart:this.handleSelectStart,contextmenu:this.handleContextMenu}),window.addEventListener(\"touchmove\",this.handleTouchMoveProxy=function(n){e.handleTouchMove(t.Event(n))},{passive:!1}),window.addEventListener(\"scroll\",this.handleScrollProxy=function(n){e.handleScroll(t.Event(n))},!0)},unbind:function(){this.stopListeningTo(t(document)),window.removeEventListener(\"touchmove\",this.handleTouchMoveProxy),window.removeEventListener(\"scroll\",this.handleScrollProxy,!0)},handleTouchStart:function(t){this.stopTouch(t,!0),this.isTouching=!0,this.trigger(\"touchstart\",t)},handleTouchMove:function(t){this.isTouching&&this.trigger(\"touchmove\",t)},handleTouchCancel:function(t){this.isTouching&&(this.trigger(\"touchcancel\",t),this.stopTouch(t))},handleTouchEnd:function(t){this.stopTouch(t)},handleMouseDown:function(t){this.shouldIgnoreMouse()||this.trigger(\"mousedown\",t)},handleMouseMove:function(t){this.shouldIgnoreMouse()||this.trigger(\"mousemove\",t)},handleMouseUp:function(t){this.shouldIgnoreMouse()||this.trigger(\"mouseup\",t)},handleClick:function(t){this.shouldIgnoreMouse()||this.trigger(\"click\",t)},handleSelectStart:function(t){this.trigger(\"selectstart\",t)},handleContextMenu:function(t){this.trigger(\"contextmenu\",t)},handleScroll:function(t){this.trigger(\"scroll\",t)},stopTouch:function(t,e){this.isTouching&&(this.isTouching=!1,this.trigger(\"touchend\",t),e||this.startTouchMouseIgnore())},startTouchMouseIgnore:function(){var t=this,e=Zt.touchMouseIgnoreWait;e&&(this.mouseIgnoreDepth++,setTimeout(function(){t.mouseIgnoreDepth--},e))},shouldIgnoreMouse:function(){return this.isTouching||Boolean(this.mouseIgnoreDepth)}});!function(){var t=null,e=0;we.get=function(){return t||(t=new we,t.bind()),t},we.needed=function(){we.get(),e++},we.unneeded=function(){--e||(t.unbind(),t=null)}}();var Se=bt.extend(ge,{options:null,sourceEl:null,el:null,parentEl:null,top0:null,left0:null,y0:null,x0:null,topDelta:null,leftDelta:null,isFollowing:!1,isHidden:!1,isAnimating:!1,constructor:function(e,n){this.options=n=n||{},this.sourceEl=e,this.parentEl=n.parentEl?t(n.parentEl):e.parent()},start:function(e){this.isFollowing||(this.isFollowing=!0,this.y0=E(e),this.x0=b(e),this.topDelta=0,this.leftDelta=0,this.isHidden||this.updatePosition(),D(e)?this.listenTo(t(document),\"touchmove\",this.handleMove):this.listenTo(t(document),\"mousemove\",this.handleMove))},stop:function(e,n){function i(){r.isAnimating=!1,r.removeElement(),r.top0=r.left0=null,n&&n()}var r=this,s=this.options.revertDuration;this.isFollowing&&!this.isAnimating&&(this.isFollowing=!1,this.stopListeningTo(t(document)),e&&s&&!this.isHidden?(this.isAnimating=!0,this.el.animate({top:this.top0,left:this.left0},{duration:s,complete:i})):i())},getEl:function(){var t=this.el;return t||(t=this.el=this.sourceEl.clone().addClass(this.options.additionalClass||\"\").css({position:\"absolute\",visibility:\"\",display:this.isHidden?\"none\":\"\",margin:0,right:\"auto\",bottom:\"auto\",width:this.sourceEl.width(),height:this.sourceEl.height(),opacity:this.options.opacity||\"\",zIndex:this.options.zIndex}),t.addClass(\"fc-unselectable\"),t.appendTo(this.parentEl)),t},removeElement:function(){this.el&&(this.el.remove(),this.el=null)},updatePosition:function(){var t,e;this.getEl(),null===this.top0&&(t=this.sourceEl.offset(),e=this.el.offsetParent().offset(),this.top0=t.top-e.top,this.left0=t.left-e.left),this.el.css({top:this.top0+this.topDelta,left:this.left0+this.leftDelta})},handleMove:function(t){this.topDelta=E(t)-this.y0,this.leftDelta=b(t)-this.x0,this.isHidden||this.updatePosition()},hide:function(){this.isHidden||(this.isHidden=!0,this.el&&this.el.hide())},show:function(){this.isHidden&&(this.isHidden=!1,this.updatePosition(),this.getEl().show())}}),be=Zt.Grid=bt.extend(ge,{hasDayInteractions:!0,view:null,isRTL:null,start:null,end:null,el:null,elsByFill:null,eventTimeFormat:null,displayEventTime:null,displayEventEnd:null,minResizeDuration:null,largeUnit:null,dayClickListener:null,daySelectListener:null,segDragListener:null,segResizeListener:null,externalDragListener:null,constructor:function(t){this.view=t,this.isRTL=t.opt(\"isRTL\"),this.elsByFill={},this.dayClickListener=this.buildDayClickListener(),this.daySelectListener=this.buildDaySelectListener()},computeEventTimeFormat:function(){return this.view.opt(\"smallTimeFormat\")},computeDisplayEventTime:function(){return!0},computeDisplayEventEnd:function(){return!0},setRange:function(t){this.start=t.start.clone(),this.end=t.end.clone(),this.rangeUpdated(),this.processRangeOptions()},rangeUpdated:function(){},processRangeOptions:function(){var t,e,n=this.view;this.eventTimeFormat=n.opt(\"eventTimeFormat\")||n.opt(\"timeFormat\")||this.computeEventTimeFormat(),t=n.opt(\"displayEventTime\"),null==t&&(t=this.computeDisplayEventTime()),e=n.opt(\"displayEventEnd\"),null==e&&(e=this.computeDisplayEventEnd()),this.displayEventTime=t,this.displayEventEnd=e},spanToSegs:function(t){},diffDates:function(t,e){return this.largeUnit?G(t,e,this.largeUnit):F(t,e)},hitsNeededDepth:0,hitsNeeded:function(){this.hitsNeededDepth++||this.prepareHits()},hitsNotNeeded:function(){this.hitsNeededDepth&&!--this.hitsNeededDepth&&this.releaseHits()},prepareHits:function(){},releaseHits:function(){},queryHit:function(t,e){},getSafeHitSpan:function(t){var e=this.getHitSpan(t);return Q(e,this.view.activeRange)?e:null},getHitSpan:function(t){},getHitEl:function(t){},setElement:function(t){this.el=t,this.hasDayInteractions&&(T(t),this.bindDayHandler(\"touchstart\",this.dayTouchStart),this.bindDayHandler(\"mousedown\",this.dayMousedown)),this.bindSegHandlers(),this.bindGlobalHandlers()},bindDayHandler:function(e,n){var i=this;this.el.on(e,function(e){if(!t(e.target).is(i.segSelector+\",\"+i.segSelector+\" *,.fc-more,a[data-goto]\"))return n.call(i,e)})},removeElement:function(){this.unbindGlobalHandlers(),this.clearDragListeners(),this.el.remove()},renderSkeleton:function(){},renderDates:function(){},unrenderDates:function(){},bindGlobalHandlers:function(){this.listenTo(t(document),{dragstart:this.externalDragStart,sortstart:this.externalDragStart})},unbindGlobalHandlers:function(){this.stopListeningTo(t(document))},dayMousedown:function(t){var e=this.view;we.get().shouldIgnoreMouse()||(this.dayClickListener.startInteraction(t),e.opt(\"selectable\")&&this.daySelectListener.startInteraction(t,{distance:e.opt(\"selectMinDistance\")}))},dayTouchStart:function(t){var e,n=this.view;n.isSelected||n.selectedEvent||(e=n.opt(\"selectLongPressDelay\"),null==e&&(e=n.opt(\"longPressDelay\")),this.dayClickListener.startInteraction(t),n.opt(\"selectable\")&&this.daySelectListener.startInteraction(t,{delay:e}))},buildDayClickListener:function(){var t,e=this,n=this.view,i=new ye(this,{scroll:n.opt(\"dragScroll\"),interactionStart:function(){t=i.origHit},hitOver:function(e,n,i){n||(t=null)},hitOut:function(){t=null},interactionEnd:function(i,r){var s;!r&&t&&(s=e.getSafeHitSpan(t))&&n.triggerDayClick(s,e.getHitEl(t),i)}});return i.shouldCancelTouchScroll=!1,i.scrollAlwaysKills=!0,i},buildDaySelectListener:function(){var t,e=this,n=this.view;return new ye(this,{scroll:n.opt(\"dragScroll\"),interactionStart:function(){t=null},dragStart:function(){n.unselect()},hitOver:function(n,i,r){var o,a;r&&(o=e.getSafeHitSpan(r),a=e.getSafeHitSpan(n),t=o&&a?e.computeSelection(o,a):null,t?e.renderSelection(t):!1===t&&s())},hitOut:function(){t=null,e.unrenderSelection()},hitDone:function(){o()},interactionEnd:function(e,i){!i&&t&&n.reportSelection(t,e)}})},clearDragListeners:function(){this.dayClickListener.endInteraction(),this.daySelectListener.endInteraction(),this.segDragListener&&this.segDragListener.endInteraction(),this.segResizeListener&&this.segResizeListener.endInteraction(),this.externalDragListener&&this.externalDragListener.endInteraction()},renderEventLocationHelper:function(t,e){var n=this.fabricateHelperEvent(t,e);return this.renderHelper(n,e)},fabricateHelperEvent:function(t,e){var n=e?rt(e.event):{};return n.start=t.start.clone(),n.end=t.end?t.end.clone():null,n.allDay=null,this.view.calendar.normalizeEventDates(n),n.className=(n.className||[]).concat(\"fc-helper\"),e||(n.editable=!1),n},renderHelper:function(t,e){},unrenderHelper:function(){},renderSelection:function(t){this.renderHighlight(t)},unrenderSelection:function(){this.unrenderHighlight()},computeSelection:function(t,e){var n=this.computeSelectionSpan(t,e);return!(n&&!this.view.calendar.isSelectionSpanAllowed(n))&&n},computeSelectionSpan:function(t,e){var n=[t.start,t.end,e.start,e.end];return n.sort(pt),{start:n[0].clone(),end:n[3].clone()}},renderHighlight:function(t){this.renderFill(\"highlight\",this.spanToSegs(t))},unrenderHighlight:function(){this.unrenderFill(\"highlight\")},highlightSegClasses:function(){return[\"fc-highlight\"]},renderBusinessHours:function(){},unrenderBusinessHours:function(){},getNowIndicatorUnit:function(){},renderNowIndicator:function(t){},unrenderNowIndicator:function(){},renderFill:function(t,e){},unrenderFill:function(t){var e=this.elsByFill[t];e&&(e.remove(),delete this.elsByFill[t])},renderFillSegEls:function(e,n){var i,r=this,s=this[e+\"SegEl\"],o=\"\",a=[];if(n.length){for(i=0;i\"},getDayClasses:function(t,e){var n,i=this.view,r=[];return Z(t,i.activeRange)?(r.push(\"fc-\"+Kt[t.day()]),1==i.currentRangeAs(\"months\")&&t.month()!=i.currentRange.start.month()&&r.push(\"fc-other-month\"),n=i.calendar.getNow(),t.isSame(n,\"day\")?(r.push(\"fc-today\"),!0!==e&&r.push(i.highlightStateClass)):t *\",mousedOverSeg:null,isDraggingSeg:!1,isResizingSeg:!1,isDraggingExternal:!1,segs:null,renderEvents:function(t){var e,n=[],i=[];for(e=0;ea&&o.push({start:a,end:n.start}),n.end>a&&(a=n.end);return a=e.length?e[e.length-1]+1:e[n]},computeColHeadFormat:function(){return this.rowCnt>1||this.colCnt>10?\"ddd\":this.colCnt>1?this.view.opt(\"dayOfMonthFormat\"):\"dddd\"},sliceRangeByRow:function(t){var e,n,i,r,s,o=this.daysPerRow,a=this.view.computeDayRange(t),l=this.getDateDayIndex(a.start),u=this.getDateDayIndex(a.end.clone().subtract(1,\"days\")),h=[];for(e=0;e'+this.renderHeadTrHtml()+\"
    \"},renderHeadIntroHtml:function(){return this.renderIntroHtml()},renderHeadTrHtml:function(){return\"\"+(this.isRTL?\"\":this.renderHeadIntroHtml())+this.renderHeadDateCellsHtml()+(this.isRTL?this.renderHeadIntroHtml():\"\")+\"\"},renderHeadDateCellsHtml:function(){var t,e,n=[];for(t=0;t1?' colspan=\"'+e+'\"':\"\")+(n?\" \"+n:\"\")+\">\"+(r?i.buildGotoAnchorHtml({date:t,forceOff:this.rowCnt>1||1===this.colCnt},o):o)+\"\"},renderBgTrHtml:function(t){return\"\"+(this.isRTL?\"\":this.renderBgIntroHtml(t))+this.renderBgCellsHtml(t)+(this.isRTL?this.renderBgIntroHtml(t):\"\")+\"\"},renderBgIntroHtml:function(t){return this.renderIntroHtml()},renderBgCellsHtml:function(t){var e,n,i=[];for(e=0;e\"},renderIntroHtml:function(){},bookendCells:function(t){var e=this.renderIntroHtml();e&&(this.isRTL?t.append(e):t.prepend(e))}},De=Zt.DayGrid=be.extend(Ee,{numbersVisible:!1,bottomCoordPadding:0,rowEls:null,cellEls:null,helperEls:null,rowCoordCache:null,colCoordCache:null,renderDates:function(t){var e,n,i=this.view,r=this.rowCnt,s=this.colCnt,o=\"\";for(e=0;e
    '+this.renderBgTrHtml(t)+'
    '+(this.numbersVisible?\"\"+this.renderNumberTrHtml(t)+\"\":\"\")+\"
    \"},renderNumberTrHtml:function(t){return\"\"+(this.isRTL?\"\":this.renderNumberIntroHtml(t))+this.renderNumberCellsHtml(t)+(this.isRTL?this.renderNumberIntroHtml(t):\"\")+\"\"},renderNumberIntroHtml:function(t){return this.renderIntroHtml()},renderNumberCellsHtml:function(t){var e,n,i=[];for(e=0;e\",i.cellWeekNumbersVisible&&t.day()==n&&(r+=i.buildGotoAnchorHtml({date:t,type:\"week\"},{class:\"fc-week-number\"},t.format(\"w\"))),o&&(r+=i.buildGotoAnchorHtml(t,{class:\"fc-day-number\"},t.date())),r+=\"\"):\"\"},computeEventTimeFormat:function(){return this.view.opt(\"extraSmallTimeFormat\")},computeDisplayEventEnd:function(){return 1==this.colCnt},rangeUpdated:function(){this.updateDayTable()},spanToSegs:function(t){var e,n,i=this.sliceRangeByRow(t);for(e=0;e');o=n&&n.row===e?n.el.position().top:a.find(\".fc-content-skeleton tbody\").position().top,l.css(\"top\",o).find(\"table\").append(i[e].tbodyEl),a.append(l),r.push(l[0])}),this.helperEls=t(r)},unrenderHelper:function(){this.helperEls&&(this.helperEls.remove(),this.helperEls=null)},fillSegTag:\"td\",renderFill:function(e,n,i){var r,s,o,a=[];for(n=this.renderFillSegEls(e,n),r=0;r
    '),s=r.find(\"tr\"),a>0&&s.append(''),s.append(n.el.attr(\"colspan\",l-a)),l'),this.bookendCells(s),r}});De.mixin({rowStructs:null,unrenderEvents:function(){this.removeSegPopover(),be.prototype.unrenderEvents.apply(this,arguments)},getEventSegs:function(){return be.prototype.getEventSegs.call(this).concat(this.popoverSegs||[])},renderBgSegs:function(e){var n=t.grep(e,function(t){return t.event.allDay});return be.prototype.renderBgSegs.call(this,n)},renderFgSegs:function(e){var n;return e=this.renderFgSegEls(e),n=this.rowStructs=this.renderSegRows(e),this.rowEls.each(function(e,i){t(i).find(\".fc-content-skeleton > table\").append(n[e].tbodyEl)}),e},unrenderFgSegs:function(){for(var t,e=this.rowStructs||[];t=e.pop();)t.tbodyEl.remove();this.rowStructs=null},renderSegRows:function(t){var e,n,i=[];for(e=this.groupSegRows(t),n=0;n'+ht(n)+\"\"),i=''+(ht(s.title||\"\")||\" \")+\"\",'
    '+(this.isRTL?i+\" \"+c:c+\" \"+i)+\"
    \"+(a?'
    ':\"\")+(l?'
    ':\"\")+\"\"},renderSegRow:function(e,n){function i(e){for(;o\"),a.append(h)),v[r][o]=h,m[r][o]=h,o++}var r,s,o,a,l,u,h,c=this.colCnt,d=this.buildSegLevels(n),f=Math.max(1,d.length),g=t(\"\"),p=[],v=[],m=[];for(r=0;r\"),p.push([]),v.push([]),m.push([]),s)for(l=0;l').append(u.el),u.leftCol!=u.rightCol?h.attr(\"colspan\",u.rightCol-u.leftCol+1):m[r][o]=h;o<=u.rightCol;)v[r][o]=h,p[r][o]=u,o++;a.append(h)}i(c),this.bookendCells(a),g.append(a)}return{row:e,tbodyEl:g,cellMatrix:v,segMatrix:p,segLevels:d,segs:n}},buildSegLevels:function(t){var e,n,i,r=[];for(this.sortEventSegs(t),e=0;e td > :first-child\").each(n),r.position().top+s>a)return i;return!1},limitRow:function(e,n){function i(i){for(;E\").append(y),d.append(m),b.push(m[0])),E++}var r,s,o,a,l,u,h,c,d,f,g,p,v,m,y,w=this,S=this.rowStructs[e],b=[],E=0;if(n&&n').attr(\"rowspan\",f),u=c[p],y=this.renderMoreLink(e,l.leftCol+p,[l].concat(u)),m=t(\"
    \").append(y),v.append(m),g.push(v[0]),b.push(v[0]);d.addClass(\"fc-limited\").after(t(g)),o.push(d[0])}}i(this.colCnt),S.moreEls=t(b),S.limitedEls=t(o)}},unlimitRow:function(t){var e=this.rowStructs[t];e.moreEls&&(e.moreEls.remove(),e.moreEls=null),e.limitedEls&&(e.limitedEls.removeClass(\"fc-limited\"),e.limitedEls=null)},renderMoreLink:function(e,n,i){var r=this,s=this.view;return t('').text(this.getMoreLinkText(i.length)).on(\"click\",function(o){var a=s.opt(\"eventLimitClick\"),l=r.getCellDate(e,n),u=t(this),h=r.getCellEl(e,n),c=r.getCellSegs(e,n),d=r.resliceDaySegs(c,l),f=r.resliceDaySegs(i,l);\"function\"==typeof a&&(a=s.publiclyTrigger(\"eventLimitClick\",null,{date:l,dayEl:h,moreEl:u,segs:d,hiddenSegs:f},o)),\"popover\"===a?r.showSegPopover(e,n,u,d):\"string\"==typeof a&&s.calendar.zoomTo(l,a)})},showSegPopover:function(t,e,n,i){var r,s,o=this,a=this.view,l=n.parent();r=1==this.rowCnt?a.el:this.rowEls.eq(t),s={className:\"fc-more-popover\",content:this.renderSegPopoverContent(t,e,i),parentEl:this.view.el,top:r.offset().top,autoHide:!0,viewportConstrain:a.opt(\"popoverViewportConstrain\"),hide:function(){if(o.popoverSegs)for(var t,e=0;e'+ht(a)+'
    '),u=l.find(\".fc-event-container\");for(i=this.renderFgSegEls(i,!0),this.popoverSegs=i,r=0;r'+this.renderBgTrHtml(0)+'
    \"},renderSlatRowHtml:function(){for(var t,n,i,r=this.view,s=this.isRTL,o=\"\",a=e.duration(+this.view.minTime);a\"+(n?\"\"+ht(t.format(this.labelFormat))+\"\":\"\")+\"\",o+='\"+(s?\"\":i)+''+(s?i:\"\")+\"\",a.add(this.slotDuration);return o},processOptions:function(){var n,i=this.view,r=i.opt(\"slotDuration\"),s=i.opt(\"snapDuration\");r=e.duration(r),s=s?e.duration(s):r,this.slotDuration=r,this.snapDuration=s,this.snapsPerSlot=r/s,this.minResizeDuration=s,n=i.opt(\"slotLabelFormat\"),t.isArray(n)&&(n=n[n.length-1]),this.labelFormat=n||i.opt(\"smallTimeFormat\"),n=i.opt(\"slotLabelInterval\"),this.labelInterval=n?e.duration(n):this.computeLabelInterval(r)},computeLabelInterval:function(t){var n,i,r;for(n=_e.length-1;n>=0;n--)if(i=e.duration(_e[n]),r=W(i,t),vt(r)&&r>1)return i;return e.duration(t)},computeEventTimeFormat:function(){return this.view.opt(\"noMeridiemTimeFormat\")},computeDisplayEventEnd:function(){return!0},prepareHits:function(){this.colCoordCache.build(),this.slatCoordCache.build()},releaseHits:function(){this.colCoordCache.clear()},queryHit:function(t,e){var n=this.snapsPerSlot,i=this.colCoordCache,r=this.slatCoordCache;if(i.isLeftInBounds(t)&&r.isTopInBounds(e)){var s=i.getHorizontalIndex(t),o=r.getVerticalIndex(e);if(null!=s&&null!=o){var a=r.getTopOffset(o),l=r.getHeight(o),u=(e-a)/l,h=Math.floor(u*n),c=o*n+h,d=a+h/n*l,f=a+(h+1)/n*l;return{col:s,snap:c,component:this,left:i.getLeftOffset(s),right:i.getRightOffset(s),top:d,bottom:f}}}},getHitSpan:function(t){var e,n=this.getCellDate(0,t.col),i=this.computeSnapTime(t.snap);return n.time(i),e=n.clone().add(this.snapDuration),{start:n,end:e}},getHitEl:function(t){return this.colEls.eq(t.col)},rangeUpdated:function(){this.updateDayTable()},computeSnapTime:function(t){return e.duration(this.view.minTime+this.snapDuration*t)},spanToSegs:function(t){var e,n=this.sliceRangeByTimes(t);for(e=0;e
    ').css(\"top\",r).appendTo(this.colContainerEls.eq(i[n].col))[0]);i.length>0&&s.push(t('
    ').css(\"top\",r).appendTo(this.el.find(\".fc-content-skeleton\"))[0]),this.nowIndicatorEls=t(s)},unrenderNowIndicator:function(){this.nowIndicatorEls&&(this.nowIndicatorEls.remove(),this.nowIndicatorEls=null)},renderSelection:function(t){this.view.opt(\"selectHelper\")?this.renderEventLocationHelper(t):this.renderHighlight(t)},unrenderSelection:function(){this.unrenderHelper(),this.unrenderHighlight()},renderHighlight:function(t){this.renderHighlightSegs(this.spanToSegs(t))},unrenderHighlight:function(){this.unrenderHighlightSegs()}});Te.mixin({colContainerEls:null,fgContainerEls:null,bgContainerEls:null,helperContainerEls:null,highlightContainerEls:null,businessContainerEls:null,fgSegs:null,bgSegs:null,helperSegs:null,highlightSegs:null,businessSegs:null,renderContentSkeleton:function(){var e,n,i=\"\";for(e=0;e
    ';n=t('
    '+i+\"
    \"),this.colContainerEls=n.find(\".fc-content-col\"),this.helperContainerEls=n.find(\".fc-helper-container\"),this.fgContainerEls=n.find(\".fc-event-container:not(.fc-helper-container)\"),this.bgContainerEls=n.find(\".fc-bgevent-container\"),this.highlightContainerEls=n.find(\".fc-highlight-container\"),this.businessContainerEls=n.find(\".fc-business-container\"),this.bookendCells(n.find(\"tr\")),this.el.append(n)},renderFgSegs:function(t){return t=this.renderFgSegsIntoContainers(t,this.fgContainerEls),this.fgSegs=t,t},unrenderFgSegs:function(){this.unrenderNamedSegs(\"fgSegs\")},renderHelperSegs:function(e,n){var i,r,s,o=[];for(e=this.renderFgSegsIntoContainers(e,this.helperContainerEls),i=0;i
    '+(n?'
    '+ht(n)+\"
    \":\"\")+(o.title?'
    '+ht(o.title)+\"
    \":\"\")+'
    '+(u?'
    ':\"\")+\"\"},updateSegVerticals:function(t){this.computeSegVerticals(t),this.assignSegVerticals(t)},computeSegVerticals:function(t){var e,n,i;for(e=0;e1?\"ll\":\"LL\"},formatRange:function(t,e,n){var i=t.end;return i.hasTime()||(i=i.clone().subtract(1)),ae(t.start,i,e,n,this.opt(\"isRTL\"))},getAllDayHtml:function(){return this.opt(\"allDayHtml\")||ht(this.opt(\"allDayText\"))},buildGotoAnchorHtml:function(e,n,i){var r,s,o,a;return t.isPlainObject(e)?(r=e.date,s=e.type,o=e.forceOff):r=e,r=Zt.moment(r),a={date:r.format(\"YYYY-MM-DD\"),type:s||\"day\"},\"string\"==typeof n&&(i=n,n=null),n=n?\" \"+ft(n):\"\",i=i||\"\",!o&&this.opt(\"navLinks\")?\"'+i+\"\":\"\"+i+\"\"},setElement:function(t){this.el=t,this.bindGlobalHandlers(),this.bindBaseRenderHandlers(),this.renderSkeleton()},\r\nremoveElement:function(){this.unsetDate(),this.unrenderSkeleton(),this.unbindGlobalHandlers(),this.unbindBaseRenderHandlers(),this.el.remove()},renderSkeleton:function(){},unrenderSkeleton:function(){},setDate:function(t){var e=this.get(\"dateProfile\"),n=this.buildDateProfile(t,null,!0);return e&&X(e.activeRange,n.activeRange)||this.set(\"dateProfile\",n),n.date},unsetDate:function(){this.unset(\"dateProfile\")},requestDateRender:function(t){var e=this;this.renderQueue.queue(function(){e.executeDateRender(t)},\"date\",\"init\")},requestDateUnrender:function(){var t=this;this.renderQueue.queue(function(){t.executeDateUnrender()},\"date\",\"destroy\")},fetchInitialEvents:function(t){return this.calendar.requestEvents(t.activeRange.start,t.activeRange.end)},bindEventChanges:function(){this.listenTo(this.calendar,\"eventsReset\",this.resetEvents)},unbindEventChanges:function(){this.stopListeningTo(this.calendar,\"eventsReset\")},setEvents:function(t){this.set(\"currentEvents\",t),this.set(\"hasEvents\",!0)},unsetEvents:function(){this.unset(\"currentEvents\"),this.unset(\"hasEvents\")},resetEvents:function(t){this.startBatchRender(),this.unsetEvents(),this.setEvents(t),this.stopBatchRender()},requestEventsRender:function(t){var e=this;this.renderQueue.queue(function(){e.executeEventsRender(t)},\"event\",\"init\")},requestEventsUnrender:function(){var t=this;this.renderQueue.queue(function(){t.executeEventsUnrender()},\"event\",\"destroy\")},executeDateRender:function(t,e){this.setDateProfileForRendering(t),this.updateTitle(),this.calendar.updateToolbarButtons(),this.render&&this.render(),this.renderDates(),this.updateSize(),this.renderBusinessHours(),this.startNowIndicator(),e||this.addScroll(this.computeInitialDateScroll()),this.isDatesRendered=!0,this.trigger(\"datesRendered\")},executeDateUnrender:function(){this.unselect(),this.stopNowIndicator(),this.trigger(\"before:datesUnrendered\"),this.unrenderBusinessHours(),this.unrenderDates(),this.destroy&&this.destroy(),this.isDatesRendered=!1},renderDates:function(){},unrenderDates:function(){},bindBaseRenderHandlers:function(){var t=this;this.on(\"datesRendered.baseHandler\",function(){t.onBaseRender()}),this.on(\"before:datesUnrendered.baseHandler\",function(){t.onBeforeBaseUnrender()})},unbindBaseRenderHandlers:function(){this.off(\".baseHandler\")},onBaseRender:function(){this.applyScreenState(),this.publiclyTrigger(\"viewRender\",this,this,this.el)},onBeforeBaseUnrender:function(){this.applyScreenState(),this.publiclyTrigger(\"viewDestroy\",this,this,this.el)},bindGlobalHandlers:function(){this.listenTo(we.get(),{touchstart:this.processUnselect,mousedown:this.handleDocumentMousedown})},unbindGlobalHandlers:function(){this.stopListeningTo(we.get())},initThemingProps:function(){var t=this.opt(\"theme\")?\"ui\":\"fc\";this.widgetHeaderClass=t+\"-widget-header\",this.widgetContentClass=t+\"-widget-content\",this.highlightStateClass=t+\"-state-highlight\"},renderBusinessHours:function(){},unrenderBusinessHours:function(){},startNowIndicator:function(){var t,n,i,r=this;this.opt(\"nowIndicator\")&&(t=this.getNowIndicatorUnit())&&(n=mt(this,\"updateNowIndicator\"),this.initialNowDate=this.calendar.getNow(),this.initialNowQueriedMs=+new Date,this.renderNowIndicator(this.initialNowDate),this.isNowIndicatorRendered=!0,i=this.initialNowDate.clone().startOf(t).add(1,t)-this.initialNowDate,this.nowIndicatorTimeoutID=setTimeout(function(){r.nowIndicatorTimeoutID=null,n(),i=+e.duration(1,t),i=Math.max(100,i),r.nowIndicatorIntervalID=setInterval(n,i)},i))},updateNowIndicator:function(){this.isNowIndicatorRendered&&(this.unrenderNowIndicator(),this.renderNowIndicator(this.initialNowDate.clone().add(new Date-this.initialNowQueriedMs)))},stopNowIndicator:function(){this.isNowIndicatorRendered&&(this.nowIndicatorTimeoutID&&(clearTimeout(this.nowIndicatorTimeoutID),this.nowIndicatorTimeoutID=null),this.nowIndicatorIntervalID&&(clearTimeout(this.nowIndicatorIntervalID),this.nowIndicatorIntervalID=null),this.unrenderNowIndicator(),this.isNowIndicatorRendered=!1)},getNowIndicatorUnit:function(){},renderNowIndicator:function(t){},unrenderNowIndicator:function(){},updateSize:function(t){var e;t&&(e=this.queryScroll()),this.updateHeight(t),this.updateWidth(t),this.updateNowIndicator(),t&&this.applyScroll(e)},updateWidth:function(t){},updateHeight:function(t){var e=this.calendar;this.setHeight(e.getSuggestedViewHeight(),e.isHeightAuto())},setHeight:function(t,e){},addForcedScroll:function(e){this.addScroll(t.extend(e,{isForced:!0}))},addScroll:function(e){var n=this.queuedScroll||(this.queuedScroll={});n.isForced||t.extend(n,e)},popScroll:function(){this.applyQueuedScroll(),this.queuedScroll=null},applyQueuedScroll:function(){this.queuedScroll&&this.applyScroll(this.queuedScroll)},queryScroll:function(){var e={};return this.isDatesRendered&&t.extend(e,this.queryDateScroll()),e},applyScroll:function(t){this.isDatesRendered&&this.applyDateScroll(t)},computeInitialDateScroll:function(){return{}},queryDateScroll:function(){return{}},applyDateScroll:function(t){},freezeHeight:function(){this.calendar.freezeContentHeight()},thawHeight:function(){this.calendar.thawContentHeight()},executeEventsRender:function(t){this.renderEvents(t),this.isEventsRendered=!0,this.onEventsRender()},executeEventsUnrender:function(){this.onBeforeEventsUnrender(),this.destroyEvents&&this.destroyEvents(),this.unrenderEvents(),this.isEventsRendered=!1},onEventsRender:function(){this.applyScreenState(),this.renderedEventSegEach(function(t){this.publiclyTrigger(\"eventAfterRender\",t.event,t.event,t.el)}),this.publiclyTrigger(\"eventAfterAllRender\")},onBeforeEventsUnrender:function(){this.applyScreenState(),this.renderedEventSegEach(function(t){this.publiclyTrigger(\"eventDestroy\",t.event,t.event,t.el)})},applyScreenState:function(){this.thawHeight(),this.freezeHeight(),this.applyQueuedScroll()},renderEvents:function(t){},unrenderEvents:function(){},resolveEventEl:function(e,n){var i=this.publiclyTrigger(\"eventRender\",e,e,n);return!1===i?n=null:i&&!0!==i&&(n=t(i)),n},showEvent:function(t){this.renderedEventSegEach(function(t){t.el.css(\"visibility\",\"\")},t)},hideEvent:function(t){this.renderedEventSegEach(function(t){t.el.css(\"visibility\",\"hidden\")},t)},renderedEventSegEach:function(t,e){var n,i=this.getEventSegs();for(n=0;n=this.nextDayThreshold&&r.add(1,\"days\")),(!i||r<=n)&&(r=n.clone().add(1,\"days\")),{start:n,end:r}},isMultiDayEvent:function(t){var e=this.computeDayRange(t);return e.end.diff(e.start,\"days\")>1}});Ce.watch(\"displayingDates\",[\"dateProfile\"],function(t){this.requestDateRender(t.dateProfile)},function(){this.requestDateUnrender()}),Ce.watch(\"initialEvents\",[\"dateProfile\"],function(t){return this.fetchInitialEvents(t.dateProfile)}),Ce.watch(\"bindingEvents\",[\"initialEvents\"],function(t){this.setEvents(t.initialEvents),this.bindEventChanges()},function(){this.unbindEventChanges(),this.unsetEvents()}),Ce.watch(\"displayingEvents\",[\"displayingDates\",\"hasEvents\"],function(){this.requestEventsRender(this.get(\"currentEvents\"))},function(){this.requestEventsUnrender()}),Ce.mixin({currentRange:null,currentRangeUnit:null,renderRange:null,activeRange:null,validRange:null,dateIncrement:null,minTime:null,maxTime:null,usesMinMaxTime:!1,start:null,end:null,intervalStart:null,intervalEnd:null,setDateProfileForRendering:function(t){this.currentRange=t.currentRange,this.currentRangeUnit=t.currentRangeUnit,this.renderRange=t.renderRange,this.activeRange=t.activeRange,this.validRange=t.validRange,this.dateIncrement=t.dateIncrement,this.minTime=t.minTime,this.maxTime=t.maxTime,this.start=t.activeRange.start,this.end=t.activeRange.end,this.intervalStart=t.currentRange.start,this.intervalEnd=t.currentRange.end},buildPrevDateProfile:function(t){var e=t.clone().startOf(this.currentRangeUnit).subtract(this.dateIncrement);return this.buildDateProfile(e,-1)},buildNextDateProfile:function(t){var e=t.clone().startOf(this.currentRangeUnit).add(this.dateIncrement);return this.buildDateProfile(e,1)},buildDateProfile:function(t,n,i){var r,s,o,a,l=this.buildValidRange(),u=null,h=null;return i&&(t=j(t,l)),r=this.buildCurrentRangeInfo(t,n),s=this.buildRenderRange(r.range,r.unit),o=q(s),this.opt(\"showNonCurrentDates\")||(o=U(o,r.range)),u=e.duration(this.opt(\"minTime\")),h=e.duration(this.opt(\"maxTime\")),this.adjustActiveRange(o,u,h),o=U(o,l),t=j(t,o),a=$(r.range,l),{validRange:l,currentRange:r.range,currentRangeUnit:r.unit,activeRange:o,renderRange:s,minTime:u,maxTime:h,isValid:a,date:t,dateIncrement:this.buildDateIncrement(r.duration)}},buildValidRange:function(){return this.getRangeOption(\"validRange\",this.calendar.getNow())||{}},buildCurrentRangeInfo:function(t,e){var n,i=null,r=null,s=null;return this.viewSpec.duration?(i=this.viewSpec.duration,r=this.viewSpec.durationUnit,s=this.buildRangeFromDuration(t,e,i,r)):(n=this.opt(\"dayCount\"))?(r=\"day\",s=this.buildRangeFromDayCount(t,e,n)):(s=this.buildCustomVisibleRange(t))?r=V(s.start,s.end):(i=this.getFallbackDuration(),r=V(i),s=this.buildRangeFromDuration(t,e,i,r)),this.normalizeCurrentRange(s,r),{duration:i,unit:r,range:s}},getFallbackDuration:function(){return e.duration({days:1})},normalizeCurrentRange:function(t,e){/^(year|month|week|day)$/.test(e)?(t.start.stripTime(),t.end.stripTime()):(t.start.hasTime()||t.start.time(0),t.end.hasTime()||t.end.time(0))},adjustActiveRange:function(t,e,n){var i=!1;this.usesMinMaxTime&&(e<0&&(t.start.time(0).add(e),i=!0),n>864e5&&(t.end.time(n-864e5),i=!0),i&&(t.start.hasTime()||t.start.time(0),t.end.hasTime()||t.end.time(0)))},buildRangeFromDuration:function(t,n,i,r){var s,o,a,l=this.opt(\"dateAlignment\"),u=t.clone();return i.as(\"days\")<=1&&this.isHiddenDay(u)&&(u=this.skipHiddenDays(u,n),u.startOf(\"day\")),l||(o=this.opt(\"dateIncrement\"),o?(a=e.duration(o),l=a
    ')},clear:function(){this.setHeight(\"auto\"),this.applyOverflow()},destroy:function(){this.el.remove()},applyOverflow:function(){this.scrollEl.css({\"overflow-x\":this.overflowX,\"overflow-y\":this.overflowY})},lockOverflow:function(t){var e=this.overflowX,n=this.overflowY;t=t||this.getScrollbarWidths(),\"auto\"===e&&(e=t.top||t.bottom||this.scrollEl[0].scrollWidth-1>this.scrollEl[0].clientWidth?\"scroll\":\"hidden\"),\"auto\"===n&&(n=t.left||t.right||this.scrollEl[0].scrollHeight-1>this.scrollEl[0].clientHeight?\"scroll\":\"hidden\"),this.scrollEl.css({\"overflow-x\":e,\"overflow-y\":n})},setHeight:function(t){this.scrollEl.height(t)},getScrollTop:function(){return this.scrollEl.scrollTop()},setScrollTop:function(t){this.scrollEl.scrollTop(t)},getClientWidth:function(){return this.scrollEl[0].clientWidth},getClientHeight:function(){return this.scrollEl[0].clientHeight},getScrollbarWidths:function(){return p(this.scrollEl)}});_t.prototype.proxyCall=function(t){var e=Array.prototype.slice.call(arguments,1),n=[];return this.items.forEach(function(i){n.push(i[t].apply(i,e))}),n};var Re=Zt.Calendar=bt.extend(fe,{view:null,viewsByType:null,currentDate:null,loadingLevel:0,constructor:function(t,e){we.needed(),this.el=t,this.viewsByType={},this.viewSpecCache={},this.initOptionsInternals(e),this.initMomentInternals(),this.initCurrentDate(),Ut.call(this),this.initialize()},initialize:function(){},getCalendar:function(){return this},getView:function(){return this.view},publiclyTrigger:function(t,e){var n=Array.prototype.slice.call(arguments,2),i=this.opt(t);if(e=e||this.el[0],this.triggerWith(t,e,n),i)return i.apply(e,n)},instantiateView:function(t){var e=this.getViewSpec(t);return new e.class(this,e)},isValidViewType:function(t){return Boolean(this.getViewSpec(t))},changeView:function(t,e){e&&(e.start&&e.end?this.recordOptionOverrides({visibleRange:e}):this.currentDate=this.moment(e).stripZone()),this.renderView(t)},zoomTo:function(t,e){var n;e=e||\"day\",n=this.getViewSpec(e)||this.getUnitViewSpec(e),this.currentDate=t.clone(),this.renderView(n?n.type:null)},initCurrentDate:function(){var t=this.opt(\"defaultDate\");this.currentDate=null!=t?this.moment(t).stripZone():this.getNow()},prev:function(){var t=this.view.buildPrevDateProfile(this.currentDate);t.isValid&&(this.currentDate=t.date,this.renderView())},next:function(){var t=this.view.buildNextDateProfile(this.currentDate);t.isValid&&(this.currentDate=t.date,this.renderView())},prevYear:function(){this.currentDate.add(-1,\"years\"),this.renderView()},nextYear:function(){this.currentDate.add(1,\"years\"),this.renderView()},today:function(){this.currentDate=this.getNow(),this.renderView()},gotoDate:function(t){this.currentDate=this.moment(t).stripZone(),this.renderView()},incrementDate:function(t){this.currentDate.add(e.duration(t)),this.renderView()},getDate:function(){return this.applyTimezone(this.currentDate)},pushLoading:function(){this.loadingLevel++||this.publiclyTrigger(\"loading\",null,!0,this.view)},popLoading:function(){--this.loadingLevel||this.publiclyTrigger(\"loading\",null,!1,this.view)},select:function(t,e){this.view.select(this.buildSelectSpan.apply(this,arguments))},unselect:function(){this.view&&this.view.unselect()},buildSelectSpan:function(t,e){var n,i=this.moment(t).stripZone();return n=e?this.moment(e).stripZone():i.hasTime()?i.clone().add(this.defaultTimedEventDuration):i.clone().add(this.defaultAllDayEventDuration),{start:i,end:n}},parseRange:function(t){var e=null,n=null;return t.start&&(e=this.moment(t.start).stripZone()),t.end&&(n=this.moment(t.end).stripZone()),e||n?e&&n&&n.isBefore(e)?null:{start:e,end:n}:null},rerenderEvents:function(){this.elementVisible()&&this.reportEventChange()}});Re.mixin({dirDefaults:null,localeDefaults:null,overrides:null,dynamicOverrides:null,optionsModel:null,initOptionsInternals:function(e){this.overrides=t.extend({},e),this.dynamicOverrides={},this.optionsModel=new ue,this.populateOptionsHash()},option:function(t,e){var n;if(\"string\"==typeof t){if(void 0===e)return this.optionsModel.get(t);n={},n[t]=e,this.setOptions(n)}else\"object\"==typeof t&&this.setOptions(t)},opt:function(t){return this.optionsModel.get(t)},setOptions:function(t){var e,n=0;this.recordOptionOverrides(t);for(e in t)n++;if(1===n){if(\"height\"===e||\"contentHeight\"===e||\"aspectRatio\"===e)return void this.updateSize(!0);if(\"defaultDate\"===e)return;if(\"businessHours\"===e)return void(this.view&&(this.view.unrenderBusinessHours(),this.view.renderBusinessHours()));if(\"timezone\"===e)return this.rezoneArrayEventSources(),void this.refetchEvents()}this.renderHeader(),this.renderFooter(),this.viewsByType={},this.reinitView()},populateOptionsHash:function(){var t,e,i,r,s;t=ut(this.dynamicOverrides.locale,this.overrides.locale),e=xe[t],e||(t=Re.defaults.locale,e=xe[t]||{}),i=ut(this.dynamicOverrides.isRTL,this.overrides.isRTL,e.isRTL,Re.defaults.isRTL),r=i?Re.rtlDefaults:{},this.dirDefaults=r,this.localeDefaults=e,s=n([Re.defaults,r,e,this.overrides,this.dynamicOverrides]),Yt(s),this.optionsModel.reset(s)},recordOptionOverrides:function(t){var e;for(e in t)this.dynamicOverrides[e]=t[e];this.viewSpecCache={},this.populateOptionsHash()}}),Re.mixin({defaultAllDayEventDuration:null,defaultTimedEventDuration:null,localeData:null,initMomentInternals:function(){var t=this;this.defaultAllDayEventDuration=e.duration(this.opt(\"defaultAllDayEventDuration\")),this.defaultTimedEventDuration=e.duration(this.opt(\"defaultTimedEventDuration\")),this.optionsModel.watch(\"buildingMomentLocale\",[\"?locale\",\"?monthNames\",\"?monthNamesShort\",\"?dayNames\",\"?dayNamesShort\",\"?firstDay\",\"?weekNumberCalculation\"],function(e){var n,i=e.weekNumberCalculation,r=e.firstDay;\"iso\"===i&&(i=\"ISO\");var s=rt(qt(e.locale));e.monthNames&&(s._months=e.monthNames),e.monthNamesShort&&(s._monthsShort=e.monthNamesShort),e.dayNames&&(s._weekdays=e.dayNames),e.dayNamesShort&&(s._weekdaysShort=e.dayNamesShort),null==r&&\"ISO\"===i&&(r=1),null!=r&&(n=rt(s._week),n.dow=r,s._week=n),\"ISO\"!==i&&\"local\"!==i&&\"function\"!=typeof i||(s._fullCalendar_weekCalc=i),t.localeData=s,t.currentDate&&t.localizeMoment(t.currentDate)})},moment:function(){var t;return\"local\"===this.opt(\"timezone\")?(t=Zt.moment.apply(null,arguments),t.hasTime()&&t.local()):t=\"UTC\"===this.opt(\"timezone\")?Zt.moment.utc.apply(null,arguments):Zt.moment.parseZone.apply(null,arguments),this.localizeMoment(t),t},localizeMoment:function(t){t._locale=this.localeData},getIsAmbigTimezone:function(){return\"local\"!==this.opt(\"timezone\")&&\"UTC\"!==this.opt(\"timezone\")},applyTimezone:function(t){if(!t.hasTime())return t.clone();var e,n=this.moment(t.toArray()),i=t.time()-n.time();return i&&(e=n.clone().add(i),t.time()-e.time()==0&&(n=e)),n},getNow:function(){var t=this.opt(\"now\");return\"function\"==typeof t&&(t=t()),this.moment(t).stripZone()},humanizeDuration:function(t){return t.locale(this.opt(\"locale\")).humanize()},getEventEnd:function(t){return t.end?t.end.clone():this.getDefaultEventEnd(t.allDay,t.start)},getDefaultEventEnd:function(t,e){var n=e.clone();return t?n.stripTime().add(this.defaultAllDayEventDuration):n.add(this.defaultTimedEventDuration),this.getIsAmbigTimezone()&&n.stripZone(),n}}),Re.mixin({viewSpecCache:null,getViewSpec:function(t){var e=this.viewSpecCache;return e[t]||(e[t]=this.buildViewSpec(t))},getUnitViewSpec:function(e){var n,i,r;if(-1!=t.inArray(e,Jt))for(n=this.header.getViewsWithButtons(),t.each(Zt.views,function(t){n.push(t)}),i=0;i\").prependTo(n),this.initToolbars(),this.renderHeader(),this.renderFooter(),this.renderView(this.opt(\"defaultView\")),this.opt(\"handleWindowResize\")&&t(window).resize(this.windowResizeProxy=yt(this.windowResize.bind(this),this.opt(\"windowResizeDelay\")))},destroy:function(){this.view&&this.view.removeElement(),this.toolbarsManager.proxyCall(\"removeElement\"),this.contentEl.remove(),this.el.removeClass(\"fc fc-ltr fc-rtl fc-unthemed ui-widget\"),this.el.off(\".fc\"),this.windowResizeProxy&&(t(window).unbind(\"resize\",this.windowResizeProxy),this.windowResizeProxy=null),we.unneeded()},elementVisible:function(){return this.el.is(\":visible\")},renderView:function(e,n){this.ignoreWindowResize++;var i=this.view&&e&&this.view.type!==e;i&&(this.freezeContentHeight(),this.clearView()),!this.view&&e&&(this.view=this.viewsByType[e]||(this.viewsByType[e]=this.instantiateView(e)),this.view.setElement(t(\"
    \").appendTo(this.contentEl)),this.toolbarsManager.proxyCall(\"activateButton\",e)),this.view&&(n&&this.view.addForcedScroll(n),this.elementVisible()&&(this.currentDate=this.view.setDate(this.currentDate))),i&&this.thawContentHeight(),this.ignoreWindowResize--},clearView:function(){this.toolbarsManager.proxyCall(\"deactivateButton\",this.view.type),this.view.removeElement(),this.view=null},reinitView:function(){this.ignoreWindowResize++,this.freezeContentHeight();var t=this.view.type,e=this.view.queryScroll();this.clearView(),this.calcSize(),this.renderView(t,e),this.thawContentHeight(),this.ignoreWindowResize--},getSuggestedViewHeight:function(){return null===this.suggestedViewHeight&&this.calcSize(),this.suggestedViewHeight},isHeightAuto:function(){return\"auto\"===this.opt(\"contentHeight\")||\"auto\"===this.opt(\"height\")},updateSize:function(t){if(this.elementVisible())return t&&this._calcSize(),this.ignoreWindowResize++,this.view.updateSize(!0),this.ignoreWindowResize--,!0},calcSize:function(){this.elementVisible()&&this._calcSize()},_calcSize:function(){var t=this.opt(\"contentHeight\"),e=this.opt(\"height\");this.suggestedViewHeight=\"number\"==typeof t?t:\"function\"==typeof t?t():\"number\"==typeof e?e-this.queryToolbarsHeight():\"function\"==typeof e?e()-this.queryToolbarsHeight():\"parent\"===e?this.el.parent().height()-this.queryToolbarsHeight():Math.round(this.contentEl.width()/Math.max(this.opt(\"aspectRatio\"),.5))},windowResize:function(t){!this.ignoreWindowResize&&t.target===window&&this.view.renderRange&&this.updateSize(!0)&&this.view.publiclyTrigger(\"windowResize\",this.el[0])},freezeContentHeight:function(){this.contentEl.css({width:\"100%\",height:this.contentEl.height(),overflow:\"hidden\"})},thawContentHeight:function(){this.contentEl.css({width:\"\",height:\"\",overflow:\"\"})}}),Re.mixin({header:null,footer:null,toolbarsManager:null,initToolbars:function(){this.header=new Wt(this,this.computeHeaderOptions()),this.footer=new Wt(this,this.computeFooterOptions()),this.toolbarsManager=new _t([this.header,this.footer])},computeHeaderOptions:function(){return{extraClasses:\"fc-header-toolbar\",layout:this.opt(\"header\")}},computeFooterOptions:function(){return{extraClasses:\"fc-footer-toolbar\",layout:this.opt(\"footer\")}},renderHeader:function(){var t=this.header;t.setToolbarOptions(this.computeHeaderOptions()),t.render(),t.el&&this.el.prepend(t.el)},renderFooter:function(){var t=this.footer;t.setToolbarOptions(this.computeFooterOptions()),t.render(),t.el&&this.el.append(t.el)},setToolbarsTitle:function(t){this.toolbarsManager.proxyCall(\"updateTitle\",t)},updateToolbarButtons:function(){var t=this.getNow(),e=this.view,n=e.buildDateProfile(t),i=e.buildPrevDateProfile(this.currentDate),r=e.buildNextDateProfile(this.currentDate);this.toolbarsManager.proxyCall(n.isValid&&!Z(t,e.currentRange)?\"enableButton\":\"disableButton\",\"today\"),this.toolbarsManager.proxyCall(i.isValid?\"enableButton\":\"disableButton\",\"prev\"),this.toolbarsManager.proxyCall(r.isValid?\"enableButton\":\"disableButton\",\"next\")},queryToolbarsHeight:function(){return this.toolbarsManager.items.reduce(function(t,e){return t+(e.el?e.el.outerHeight(!0):0)},0)}}),Re.defaults={titleRangeSeparator:\" – \",monthYearFormat:\"MMMM YYYY\",defaultTimedEventDuration:\"02:00:00\",defaultAllDayEventDuration:{days:1},forceEventDuration:!1,nextDayThreshold:\"09:00:00\",defaultView:\"month\",aspectRatio:1.35,header:{left:\"title\",center:\"\",right:\"today prev,next\"},weekends:!0,weekNumbers:!1,weekNumberTitle:\"W\",weekNumberCalculation:\"local\",scrollTime:\"06:00:00\",minTime:\"00:00:00\",maxTime:\"24:00:00\",showNonCurrentDates:!0,lazyFetching:!0,startParam:\"start\",endParam:\"end\",timezoneParam:\"timezone\",timezone:!1,isRTL:!1,buttonText:{prev:\"prev\",next:\"next\",prevYear:\"prev year\",nextYear:\"next year\",year:\"year\",today:\"today\",month:\"month\",week:\"week\",day:\"day\"},buttonIcons:{prev:\"left-single-arrow\",next:\"right-single-arrow\",prevYear:\"left-double-arrow\",nextYear:\"right-double-arrow\"},allDayText:\"all-day\",theme:!1,themeButtonIcons:{prev:\"circle-triangle-w\",next:\"circle-triangle-e\",prevYear:\"seek-prev\",nextYear:\"seek-next\"},dragOpacity:.75,dragRevertDuration:500,dragScroll:!0,unselectAuto:!0,dropAccept:\"*\",eventOrder:\"title\",eventLimit:!1,eventLimitText:\"more\",eventLimitClick:\"popover\",dayPopoverFormat:\"LL\",handleWindowResize:!0,windowResizeDelay:100,longPressDelay:1e3},Re.englishDefaults={dayPopoverFormat:\"dddd, MMMM D\"},Re.rtlDefaults={header:{left:\"next,prev today\",center:\"\",right:\"title\"},buttonIcons:{prev:\"right-single-arrow\",next:\"left-single-arrow\",prevYear:\"right-double-arrow\",nextYear:\"left-double-arrow\"},themeButtonIcons:{prev:\"circle-triangle-e\",next:\"circle-triangle-w\",nextYear:\"seek-prev\",prevYear:\"seek-next\"}};var xe=Zt.locales={};Zt.datepickerLocale=function(e,n,i){var r=xe[e]||(xe[e]={});r.isRTL=i.isRTL,r.weekNumberTitle=i.weekHeader,t.each(Ie,function(t,e){r[t]=e(i)}),t.datepicker&&(t.datepicker.regional[n]=t.datepicker.regional[e]=i,t.datepicker.regional.en=t.datepicker.regional[\"\"],t.datepicker.setDefaults(i))},Zt.locale=function(e,i){var r,s;r=xe[e]||(xe[e]={}),i&&(r=xe[e]=n([r,i])),s=qt(e),t.each(ke,function(t,e){null==r[t]&&(r[t]=e(s,r))}),Re.defaults.locale=e};var Ie={buttonText:function(t){return{prev:ct(t.prevText),next:ct(t.nextText),today:ct(t.currentText)}},monthYearFormat:function(t){return t.showMonthAfterYear?\"YYYY[\"+t.yearSuffix+\"] MMMM\":\"MMMM YYYY[\"+t.yearSuffix+\"]\"}},ke={dayOfMonthFormat:function(t,e){var n=t.longDateFormat(\"l\");return n=n.replace(/^Y+[^\\w\\s]*|[^\\w\\s]*Y+$/g,\"\"),e.isRTL?n+=\" ddd\":n=\"ddd \"+n,n},mediumTimeFormat:function(t){return t.longDateFormat(\"LT\").replace(/\\s*a$/i,\"a\")},smallTimeFormat:function(t){return t.longDateFormat(\"LT\").replace(\":mm\",\"(:mm)\").replace(/(\\Wmm)$/,\"($1)\").replace(/\\s*a$/i,\"a\")},extraSmallTimeFormat:function(t){return t.longDateFormat(\"LT\").replace(\":mm\",\"(:mm)\").replace(/(\\Wmm)$/,\"($1)\").replace(/\\s*a$/i,\"t\")},hourFormat:function(t){return t.longDateFormat(\"LT\").replace(\":mm\",\"\").replace(/(\\Wmm)$/,\"\").replace(/\\s*a$/i,\"a\")},noMeridiemTimeFormat:function(t){return t.longDateFormat(\"LT\").replace(/\\s*a$/i,\"\")}},Me={smallDayDateFormat:function(t){return t.isRTL?\"D dd\":\"dd D\"},weekFormat:function(t){return t.isRTL?\"w[ \"+t.weekNumberTitle+\"]\":\"[\"+t.weekNumberTitle+\" ]w\"},smallWeekFormat:function(t){return t.isRTL?\"w[\"+t.weekNumberTitle+\"]\":\"[\"+t.weekNumberTitle+\"]w\"}};Zt.locale(\"en\",Re.englishDefaults),Zt.sourceNormalizers=[],Zt.sourceFetchers=[];var Be={dataType:\"json\",cache:!1},Le=1;Re.prototype.mutateSeg=function(t,e){return this.mutateEvent(t.event,e)},Re.prototype.normalizeEvent=function(t){},Re.prototype.spanContainsSpan=function(t,e){var n=t.start.clone().stripZone(),i=this.getEventEnd(t).stripZone()\r\n;return e.start>=n&&e.end<=i},Re.prototype.getPeerEvents=function(t,e){var n,i,r=this.getEventCache(),s=[];for(n=0;nn};var Ne={id:\"_fcBusinessHours\",start:\"09:00\",end:\"17:00\",dow:[1,2,3,4,5],rendering:\"inverse-background\"};Re.prototype.getCurrentBusinessHourEvents=function(t){return this.computeBusinessHourEvents(t,this.opt(\"businessHours\"))},Re.prototype.computeBusinessHourEvents=function(e,n){return!0===n?this.expandBusinessHourEvents(e,[{}]):t.isPlainObject(n)?this.expandBusinessHourEvents(e,[n]):t.isArray(n)?this.expandBusinessHourEvents(e,n,!0):[]},Re.prototype.expandBusinessHourEvents=function(e,n,i){var r,s,o=this.getView(),a=[];for(r=0;r1,this.opt(\"weekNumbers\")&&(this.opt(\"weekNumbersWithinDays\")?(this.cellWeekNumbersVisible=!0,this.colWeekNumbersVisible=!1):(this.cellWeekNumbersVisible=!1,this.colWeekNumbersVisible=!0)),this.dayGrid.numbersVisible=this.dayNumbersVisible||this.cellWeekNumbersVisible||this.colWeekNumbersVisible,this.el.addClass(\"fc-basic-view\").html(this.renderSkeletonHtml()),this.renderHead(),this.scroller.render();var e=this.scroller.el.addClass(\"fc-day-grid-container\"),n=t('
    ').appendTo(e);this.el.find(\".fc-body > tr > td\").append(e),this.dayGrid.setElement(n),this.dayGrid.renderDates(this.hasRigidRows())},renderHead:function(){this.headContainerEl=this.el.find(\".fc-head-container\").html(this.dayGrid.renderHeadHtml()),this.headRowEl=this.headContainerEl.find(\".fc-row\")},unrenderDates:function(){this.dayGrid.unrenderDates(),this.dayGrid.removeElement(),this.scroller.destroy()},renderBusinessHours:function(){this.dayGrid.renderBusinessHours()},unrenderBusinessHours:function(){this.dayGrid.unrenderBusinessHours()},renderSkeletonHtml:function(){return'
    '},weekNumberStyleAttr:function(){return null!==this.weekNumberWidth?'style=\"width:'+this.weekNumberWidth+'px\"':\"\"},hasRigidRows:function(){var t=this.opt(\"eventLimit\");return t&&\"number\"!=typeof t},updateWidth:function(){this.colWeekNumbersVisible&&(this.weekNumberWidth=u(this.el.find(\".fc-week-number\")))},setHeight:function(t,e){var n,s,o=this.opt(\"eventLimit\");this.scroller.clear(),r(this.headRowEl),this.dayGrid.removeSegPopover(),o&&\"number\"==typeof o&&this.dayGrid.limitRows(o),n=this.computeScrollerHeight(t),this.setGridHeight(n,e),o&&\"number\"!=typeof o&&this.dayGrid.limitRows(o),e||(this.scroller.setHeight(n),s=this.scroller.getScrollbarWidths(),(s.left||s.right)&&(i(this.headRowEl,s),n=this.computeScrollerHeight(t),this.scroller.setHeight(n)),this.scroller.lockOverflow(s))},computeScrollerHeight:function(t){return t-h(this.el,this.scroller.el)},setGridHeight:function(t,e){e?l(this.dayGrid.rowEls):a(this.dayGrid.rowEls,t,!0)},computeInitialDateScroll:function(){return{top:0}},queryDateScroll:function(){return{top:this.scroller.getScrollTop()}},applyDateScroll:function(t){void 0!==t.top&&this.scroller.setScrollTop(t.top)},hitsNeeded:function(){this.dayGrid.hitsNeeded()},hitsNotNeeded:function(){this.dayGrid.hitsNotNeeded()},prepareHits:function(){this.dayGrid.prepareHits()},releaseHits:function(){this.dayGrid.releaseHits()},queryHit:function(t,e){return this.dayGrid.queryHit(t,e)},getHitSpan:function(t){return this.dayGrid.getHitSpan(t)},getHitEl:function(t){return this.dayGrid.getHitEl(t)},renderEvents:function(t){this.dayGrid.renderEvents(t),this.updateHeight()},getEventSegs:function(){return this.dayGrid.getEventSegs()},unrenderEvents:function(){this.dayGrid.unrenderEvents()},renderDrag:function(t,e){return this.dayGrid.renderDrag(t,e)},unrenderDrag:function(){this.dayGrid.unrenderDrag()},renderSelection:function(t){this.dayGrid.renderSelection(t)},unrenderSelection:function(){this.dayGrid.unrenderSelection()}}),Fe={renderHeadIntroHtml:function(){var t=this.view;return t.colWeekNumbersVisible?'\"+ht(t.opt(\"weekNumberTitle\"))+\"\":\"\"},renderNumberIntroHtml:function(t){var e=this.view,n=this.getCellDate(t,0);return e.colWeekNumbersVisible?'\"+e.buildGotoAnchorHtml({date:n,type:\"week\",forceOff:1===this.colCnt},n.format(\"w\"))+\"\":\"\"},renderBgIntroHtml:function(){var t=this.view;return t.colWeekNumbersVisible?'\":\"\"},renderIntroHtml:function(){var t=this.view;return t.colWeekNumbersVisible?'\":\"\"}},Ae=Zt.MonthView=ze.extend({buildRenderRange:function(){var t,e=ze.prototype.buildRenderRange.apply(this,arguments);return this.isFixedWeeks()&&(t=Math.ceil(e.end.diff(e.start,\"weeks\",!0)),e.end.add(6-t,\"weeks\")),e},setGridHeight:function(t,e){e&&(t*=this.rowCnt/6),a(this.dayGrid.rowEls,t,!e)},isFixedWeeks:function(){return this.opt(\"fixedWeekCount\")}});$t.basic={class:ze},$t.basicDay={type:\"basic\",duration:{days:1}},$t.basicWeek={type:\"basic\",duration:{weeks:1}},$t.month={class:Ae,duration:{months:1},defaults:{fixedWeekCount:!0}};var Ge=Zt.AgendaView=Ce.extend({scroller:null,timeGridClass:Te,timeGrid:null,dayGridClass:De,dayGrid:null,axisWidth:null,headContainerEl:null,noScrollRowEls:null,bottomRuleEl:null,usesMinMaxTime:!0,initialize:function(){this.timeGrid=this.instantiateTimeGrid(),this.opt(\"allDaySlot\")&&(this.dayGrid=this.instantiateDayGrid()),this.scroller=new He({overflowX:\"hidden\",overflowY:\"auto\"})},instantiateTimeGrid:function(){return new(this.timeGridClass.extend(Ve))(this)},instantiateDayGrid:function(){return new(this.dayGridClass.extend(Oe))(this)},renderDates:function(){this.timeGrid.setRange(this.renderRange),this.dayGrid&&this.dayGrid.setRange(this.renderRange),this.el.addClass(\"fc-agenda-view\").html(this.renderSkeletonHtml()),this.renderHead(),this.scroller.render();var e=this.scroller.el.addClass(\"fc-time-grid-container\"),n=t('
    ').appendTo(e);this.el.find(\".fc-body > tr > td\").append(e),this.timeGrid.setElement(n),this.timeGrid.renderDates(),this.bottomRuleEl=t('
    ').appendTo(this.timeGrid.el),this.dayGrid&&(this.dayGrid.setElement(this.el.find(\".fc-day-grid\")),this.dayGrid.renderDates(),this.dayGrid.bottomCoordPadding=this.dayGrid.el.next(\"hr\").outerHeight()),this.noScrollRowEls=this.el.find(\".fc-row:not(.fc-scroller *)\")},renderHead:function(){this.headContainerEl=this.el.find(\".fc-head-container\").html(this.timeGrid.renderHeadHtml())},unrenderDates:function(){this.timeGrid.unrenderDates(),this.timeGrid.removeElement(),this.dayGrid&&(this.dayGrid.unrenderDates(),this.dayGrid.removeElement()),this.scroller.destroy()},renderSkeletonHtml:function(){return'
    '+(this.dayGrid?'

    ':\"\")+\"
    \"},axisStyleAttr:function(){return null!==this.axisWidth?'style=\"width:'+this.axisWidth+'px\"':\"\"},renderBusinessHours:function(){this.timeGrid.renderBusinessHours(),this.dayGrid&&this.dayGrid.renderBusinessHours()},unrenderBusinessHours:function(){this.timeGrid.unrenderBusinessHours(),this.dayGrid&&this.dayGrid.unrenderBusinessHours()},getNowIndicatorUnit:function(){return this.timeGrid.getNowIndicatorUnit()},renderNowIndicator:function(t){this.timeGrid.renderNowIndicator(t)},unrenderNowIndicator:function(){this.timeGrid.unrenderNowIndicator()},updateSize:function(t){this.timeGrid.updateSize(t),Ce.prototype.updateSize.call(this,t)},updateWidth:function(){this.axisWidth=u(this.el.find(\".fc-axis\"))},setHeight:function(t,e){var n,s,o;this.bottomRuleEl.hide(),this.scroller.clear(),r(this.noScrollRowEls),this.dayGrid&&(this.dayGrid.removeSegPopover(),n=this.opt(\"eventLimit\"),n&&\"number\"!=typeof n&&(n=Pe),n&&this.dayGrid.limitRows(n)),e||(s=this.computeScrollerHeight(t),this.scroller.setHeight(s),o=this.scroller.getScrollbarWidths(),(o.left||o.right)&&(i(this.noScrollRowEls,o),s=this.computeScrollerHeight(t),this.scroller.setHeight(s)),this.scroller.lockOverflow(o),this.timeGrid.getTotalSlatHeight()\"+e.buildGotoAnchorHtml({date:this.start,type:\"week\",forceOff:this.colCnt>1},ht(t))+\"\"):'\"},renderBgIntroHtml:function(){var t=this.view;return'\"},renderIntroHtml:function(){return'\"}},Oe={renderBgIntroHtml:function(){var t=this.view;return'\"+t.getAllDayHtml()+\"\"},renderIntroHtml:function(){return'\"}},Pe=5,_e=[{hours:1},{minutes:30},{minutes:15},{seconds:30},{seconds:15}];$t.agenda={class:Ge,defaults:{allDaySlot:!0,slotDuration:\"00:30:00\",slotEventOverlap:!0}},$t.agendaDay={type:\"agenda\",duration:{days:1}},$t.agendaWeek={type:\"agenda\",duration:{weeks:1}};var We=Ce.extend({grid:null,scroller:null,initialize:function(){this.grid=new Ye(this),this.scroller=new He({overflowX:\"hidden\",overflowY:\"auto\"})},renderSkeleton:function(){this.el.addClass(\"fc-list-view \"+this.widgetContentClass),this.scroller.render(),this.scroller.el.appendTo(this.el),this.grid.setElement(this.scroller.scrollEl)},unrenderSkeleton:function(){this.scroller.destroy()},setHeight:function(t,e){this.scroller.setHeight(this.computeScrollerHeight(t))},computeScrollerHeight:function(t){return t-h(this.el,this.scroller.el)},renderDates:function(){this.grid.setRange(this.renderRange)},renderEvents:function(t){this.grid.renderEvents(t)},unrenderEvents:function(){this.grid.unrenderEvents()},isEventResizable:function(t){return!1},isEventDraggable:function(t){return!1}}),Ye=be.extend({segSelector:\".fc-list-item\",hasDayInteractions:!1,spanToSegs:function(t){for(var e,n=this.view,i=n.renderRange.start.clone().time(0),r=0,s=[];i
    '+ht(this.view.opt(\"noEventsMessage\"))+\"
    \")},renderSegList:function(e){var n,i,r,s=this.groupSegsByDay(e),o=t('
    '),a=o.find(\"tbody\");for(n=0;n'+(n?e.buildGotoAnchorHtml(t,{class:\"fc-list-heading-main\"},ht(t.format(n))):\"\")+(i?e.buildGotoAnchorHtml(t,{class:\"fc-list-heading-alt\"},ht(t.format(i))):\"\")+\"\"},fgSegHtml:function(t){var e,n=this.view,i=[\"fc-list-item\"].concat(this.getSegCustomClasses(t)),r=this.getSegBackgroundColor(t),s=t.event,o=s.url;return e=s.allDay?n.getAllDayHtml():n.isMultiDayEvent(s)?t.isStart||t.isEnd?ht(this.getEventTimeText(t)):n.getAllDayHtml():ht(this.getEventTimeText(s)),o&&i.push(\"fc-has-url\"),''+(this.displayEventTime?''+(e||\"\")+\"\":\"\")+'\"+ht(t.event.title||\"\")+\"\"}});return $t.list={class:We,buttonTextKey:\"list\",defaults:{buttonText:\"list\",listDayFormat:\"LL\",noEventsMessage:\"No events to display\"}},$t.listDay={type:\"list\",duration:{days:1},defaults:{listDayFormat:\"dddd\"}},$t.listWeek={type:\"list\",duration:{weeks:1},defaults:{listDayFormat:\"dddd\",listDayAltFormat:\"LL\"}},$t.listMonth={type:\"list\",duration:{month:1},defaults:{listDayAltFormat:\"dddd\"}},$t.listYear={type:\"list\",duration:{year:1},defaults:{listDayAltFormat:\"dddd\"}},Zt});", "/*! jssocials - v1.4.0 - 2016-10-10\r\n* http://js-socials.com\r\n* Copyright (c) 2016 Artem Tabalin; Licensed MIT */\r\n!function(a,b,c){function d(a,c){var d=b(a);d.data(f,this),this._$element=d,this.shares=[],this._init(c),this._render()}var e=\"JSSocials\",f=e,g=function(a,c){return b.isFunction(a)?a.apply(c,b.makeArray(arguments).slice(2)):a},h=/(\\.(jpeg|png|gif|bmp|svg)$|^data:image\\/(jpeg|png|gif|bmp|svg\\+xml);base64)/i,i=/(&?[a-zA-Z0-9]+=)?\\{([a-zA-Z0-9]+)\\}/g,j={G:1e9,M:1e6,K:1e3},k={};d.prototype={url:\"\",text:\"\",shareIn:\"blank\",showLabel:function(a){return this.showCount===!1?a>this.smallScreenWidth:a>=this.largeScreenWidth},showCount:function(a){return a<=this.smallScreenWidth?\"inside\":!0},smallScreenWidth:640,largeScreenWidth:1024,resizeTimeout:200,elementClass:\"jssocials\",sharesClass:\"jssocials-shares\",shareClass:\"jssocials-share\",shareButtonClass:\"jssocials-share-button\",shareLinkClass:\"jssocials-share-link\",shareLogoClass:\"jssocials-share-logo\",shareLabelClass:\"jssocials-share-label\",shareLinkCountClass:\"jssocials-share-link-count\",shareCountBoxClass:\"jssocials-share-count-box\",shareCountClass:\"jssocials-share-count\",shareZeroCountClass:\"jssocials-share-no-count\",_init:function(a){this._initDefaults(),b.extend(this,a),this._initShares(),this._attachWindowResizeCallback()},_initDefaults:function(){this.url=a.location.href,this.text=b.trim(b(\"meta[name=description]\").attr(\"content\")||b(\"title\").text())},_initShares:function(){this.shares=b.map(this.shares,b.proxy(function(a){\"string\"==typeof a&&(a={share:a});var c=a.share&&k[a.share];if(!c&&!a.renderer)throw Error(\"Share '\"+a.share+\"' is not found\");return b.extend({url:this.url,text:this.text},c,a)},this))},_attachWindowResizeCallback:function(){b(a).on(\"resize\",b.proxy(this._windowResizeHandler,this))},_detachWindowResizeCallback:function(){b(a).off(\"resize\",this._windowResizeHandler)},_windowResizeHandler:function(){(b.isFunction(this.showLabel)||b.isFunction(this.showCount))&&(a.clearTimeout(this._resizeTimer),this._resizeTimer=setTimeout(b.proxy(this.refresh,this),this.resizeTimeout))},_render:function(){this._clear(),this._defineOptionsByScreen(),this._$element.addClass(this.elementClass),this._$shares=b(\"
    \").addClass(this.sharesClass).appendTo(this._$element),this._renderShares()},_defineOptionsByScreen:function(){this._screenWidth=b(a).width(),this._showLabel=g(this.showLabel,this,this._screenWidth),this._showCount=g(this.showCount,this,this._screenWidth)},_renderShares:function(){b.each(this.shares,b.proxy(function(a,b){this._renderShare(b)},this))},_renderShare:function(a){var c;c=b.isFunction(a.renderer)?b(a.renderer()):this._createShare(a),c.addClass(this.shareClass).addClass(a.share?\"jssocials-share-\"+a.share:\"\").addClass(a.css).appendTo(this._$shares)},_createShare:function(a){var c=b(\"
    \"),d=this._createShareLink(a).appendTo(c);if(this._showCount){var e=\"inside\"===this._showCount,f=e?d:b(\"
    \").addClass(this.shareCountBoxClass).appendTo(c);f.addClass(e?this.shareLinkCountClass:this.shareCountBoxClass),this._renderShareCount(a,f)}return c},_createShareLink:function(a){var c=this._getShareStrategy(a),d=c.call(a,{shareUrl:this._getShareUrl(a)});return d.addClass(this.shareLinkClass).append(this._createShareLogo(a)),this._showLabel&&d.append(this._createShareLabel(a)),b.each(this.on||{},function(c,e){b.isFunction(e)&&d.on(c,b.proxy(e,a))}),d},_getShareStrategy:function(a){var b=m[a.shareIn||this.shareIn];if(!b)throw Error(\"Share strategy '\"+this.shareIn+\"' not found\");return b},_getShareUrl:function(a){var b=g(a.shareUrl,a);return this._formatShareUrl(b,a)},_createShareLogo:function(a){var c=a.logo,d=h.test(c)?b(\"\").attr(\"src\",a.logo):b(\"\").addClass(c);return d.addClass(this.shareLogoClass),d},_createShareLabel:function(a){return b(\"\").addClass(this.shareLabelClass).text(a.label)},_renderShareCount:function(a,c){var d=b(\"\").addClass(this.shareCountClass);c.addClass(this.shareZeroCountClass).append(d),this._loadCount(a).done(b.proxy(function(a){a&&(c.removeClass(this.shareZeroCountClass),d.text(a))},this))},_loadCount:function(a){var c=b.Deferred(),d=this._getCountUrl(a);if(!d)return c.resolve(0).promise();var e=b.proxy(function(b){c.resolve(this._getCountValue(b,a))},this);return b.getJSON(d).done(e).fail(function(){b.get(d).done(e).fail(function(){c.resolve(0)})}),c.promise()},_getCountUrl:function(a){var b=g(a.countUrl,a);return this._formatShareUrl(b,a)},_getCountValue:function(a,c){var d=(b.isFunction(c.getCount)?c.getCount(a):a)||0;return\"string\"==typeof d?d:this._formatNumber(d)},_formatNumber:function(a){return b.each(j,function(b,c){return a>=c?(a=parseFloat((a/c).toFixed(2))+b,!1):void 0}),a},_formatShareUrl:function(b,c){return b.replace(i,function(b,d,e){var f=c[e]||\"\";return f?(d||\"\")+a.encodeURIComponent(f):\"\"})},_clear:function(){a.clearTimeout(this._resizeTimer),this._$element.empty()},_passOptionToShares:function(a,c){var d=this.shares;b.each([\"url\",\"text\"],function(e,f){f===a&&b.each(d,function(b,d){d[a]=c})})},_normalizeShare:function(a){return b.isNumeric(a)?this.shares[a]:\"string\"==typeof a?b.grep(this.shares,function(b){return b.share===a})[0]:a},refresh:function(){this._render()},destroy:function(){this._clear(),this._detachWindowResizeCallback(),this._$element.removeClass(this.elementClass).removeData(f)},option:function(a,b){return 1===arguments.length?this[a]:(this[a]=b,this._passOptionToShares(a,b),void this.refresh())},shareOption:function(a,b,c){return a=this._normalizeShare(a),2===arguments.length?a[b]:(a[b]=c,void this.refresh())}},b.fn.jsSocials=function(a){var e=b.makeArray(arguments),g=e.slice(1),h=this;return this.each(function(){var e,i=b(this),j=i.data(f);if(j)if(\"string\"==typeof a){if(e=j[a].apply(j,g),e!==c&&e!==j)return h=e,!1}else j._detachWindowResizeCallback(),j._init(a),j._render();else new d(i,a)}),h};var l=function(a){var c;b.isPlainObject(a)?c=d.prototype:(c=k[a],a=arguments[1]||{}),b.extend(c,a)},m={popup:function(c){return b(\"\").attr(\"href\",\"#\").on(\"click\",function(){return a.open(c.shareUrl,null,\"width=600, height=400, location=0, menubar=0, resizeable=0, scrollbars=0, status=0, titlebar=0, toolbar=0\"),!1})},blank:function(a){return b(\"\").attr({target:\"_blank\",href:a.shareUrl})},self:function(a){return b(\"\").attr({target:\"_self\",href:a.shareUrl})}};a.jsSocials={Socials:d,shares:k,shareStrategies:m,setDefaults:l}}(window,$),function(a,b,c){b.extend(c.shares,{email:{label:\"E-mail\",logo:\"fa fa-at\",shareUrl:\"mailto:{to}?subject={text}&body={url}\",countUrl:\"\",shareIn:\"self\"},twitter:{label:\"Tweet\",logo:\"fa fa-twitter\",shareUrl:\"https://twitter.com/share?url={url}&text={text}&via={via}&hashtags={hashtags}\",countUrl:\"\"},facebook:{label:\"Like\",logo:\"fa fa-facebook\",shareUrl:\"https://facebook.com/sharer/sharer.php?u={url}\",countUrl:\"https://graph.facebook.com/?id={url}\",getCount:function(a){return a.share&&a.share.share_count||0}},vkontakte:{label:\"Like\",logo:\"fa fa-vk\",shareUrl:\"https://vk.com/share.php?url={url}&title={title}&description={text}\",countUrl:\"https://vk.com/share.php?act=count&index=1&url={url}\",getCount:function(a){return parseInt(a.slice(15,-2).split(\", \")[1])}},googleplus:{label:\"+1\",logo:\"fa fa-google\",shareUrl:\"https://plus.google.com/share?url={url}\",countUrl:\"\"},linkedin:{label:\"Share\",logo:\"fa fa-linkedin\",shareUrl:\"https://www.linkedin.com/shareArticle?mini=true&url={url}\",countUrl:\"https://www.linkedin.com/countserv/count/share?format=jsonp&url={url}&callback=?\",getCount:function(a){return a.count}},pinterest:{label:\"Pin it\",logo:\"fa fa-pinterest\",shareUrl:\"https://pinterest.com/pin/create/bookmarklet/?media={media}&url={url}&description={text}\",countUrl:\"https://api.pinterest.com/v1/urls/count.json?&url={url}&callback=?\",getCount:function(a){return a.count}},stumbleupon:{label:\"Share\",logo:\"fa fa-stumbleupon\",shareUrl:\"http://www.stumbleupon.com/submit?url={url}&title={title}\",countUrl:\"https://cors-anywhere.herokuapp.com/https://www.stumbleupon.com/services/1.01/badge.getinfo?url={url}\",getCount:function(a){return a.result.views}},telegram:{label:\"Telegram\",logo:\"fa fa-paper-plane\",shareUrl:\"tg://msg?text={url} {text}\",countUrl:\"\",shareIn:\"self\"},whatsapp:{label:\"WhatsApp\",logo:\"fa fa-whatsapp\",shareUrl:\"whatsapp://send?text={url} {text}\",countUrl:\"\",shareIn:\"self\"},line:{label:\"LINE\",logo:\"fa fa-comment\",shareUrl:\"http://line.me/R/msg/text/?{text} {url}\",countUrl:\"\"},viber:{label:\"Viber\",logo:\"fa fa-volume-control-phone\",shareUrl:\"viber://forward?text={url} {text}\",countUrl:\"\",shareIn:\"self\"},pocket:{label:\"Pocket\",logo:\"fa fa-get-pocket\",shareUrl:\"https://getpocket.com/save?url={url}&title={title}\",countUrl:\"\"},messenger:{label:\"Share\",logo:\"fa fa-commenting\",shareUrl:\"fb-messenger://share?link={url}\",countUrl:\"\",shareIn:\"self\"}})}(window,$,window.jsSocials);", "let $ = require('jquery');\r\nlet StickyHeader = require('./StickyHeader.js');\r\n\r\nrequire('./Templates/Menu1/main.js');\r\nrequire('./Templates/Menu2/main.js');\r\nrequire('./Templates/MobileMenu/main.js');\r\nrequire('./Templates/FollowUserInsideColumnSpace/main.js');\r\nrequire('./Templates/FullWidthAndFloatRightOnTop/main.js');\r\n\r\nvar adjustHeaderTopPladeholderHeight = function () {\r\n\tlet heightSum = 0;\r\n\r\n\t$('.header-with-placeholder-top').each(function () {\r\n\t\theightSum += $(this).height();\r\n\t});\r\n\t$('.header-with-placeholder-top-placeholder').height(heightSum);\r\n\tvar menuBar = $('.jnf-widget.jnf-widget-menu-1')[0];\r\n\t$('.sign-up-popup').css('top', $(menuBar).outerHeight() - 40);\r\n\r\n};\r\n\r\nlet onWindowResize = function () {\r\n\t\tadjustHeaderTopPladeholderHeight();\r\n};\r\n\r\n//AE TOggle for MENU\r\n$('.stick-to-page-top-and-hide-on-scroll').each(function (elementIndex, element) {\r\n\tnew StickyHeader({\r\n\t element: element,\r\n\t secondLevelElement: $(element).find('.stick-to-page-top-on-further-scroll')\r\n\t});\r\n\r\n});\r\n\r\n\r\nif( !$(\"#hsi-body\").length || $(window).width() > 960){\r\n\t$(window).on('resize', onWindowResize);\r\n\tadjustHeaderTopPladeholderHeight();\r\n}\r\n\r\n", "let $ = require('jquery');\r\n\r\n$(function () {\r\n\trequire('./layouts.js');\r\n\trequire('./widgets.js');\r\n});", "let $ = require('jquery');\r\n\r\n\r\n//let eventsCalendar = require('./EventsCalendar/eventsCalendar.js');\r\nlet BrowserSession = require('./BrowserSession.js');\r\nlet EventsList = require('./EventsList/EventsList.js');\r\nlet videoList = require('./VideosList/videoList.js');\r\nlet FullDonationForm = require('./FullDonationForm/FullDonationForm.js');\r\nlet Menu = require('./Menu/menu.js');\r\nlet login = require('./LoginScript');\r\nlet Subscribe = require('./RegisterScript');\r\nlet ClicksTracking = require('./Tracking/ClicksTracking');\r\n\r\n//TODO modify to use contructor based initialization\r\nSubscribe();\r\n\r\nlet Donate = require('./Donate/Donate'); \r\nlet Slideshow = require('./Slideshow');\r\nlet Description = require('./Description/Description');\r\nlet Separator = require('./Separator/Separator');\r\nlet FeaturedSponsors = require('./FeaturedSponsors/FeaturedSponsors');\r\nlet SearchBox = require('./NewsSearch/SearchBox');\r\nlet ExpandableList = require('./ExpandableList');\r\nlet EventsCalendar = require('./EventsCalendar/EventsCalendar');\r\nlet Dropdown = require('./Dropdown/Dropdown');\r\nlet RegionSearchBox = require('./RegionSearchBox/RegionSearchBox');\r\nlet HorizontalGallery = require('./HorizontalGallery');\r\nlet SpeakersRequest = require('./SpeakersRequest/SpeakersRequest');\r\nlet Sizer = require('./Sizer');\r\nlet SizerBreakpoint = require('./SizerBreakpoint');\r\nlet RegionsFilter = require('./RegionsFilter/RegionsFilter');\r\nlet Iframe = require('./Iframe/Iframe');\r\nlet StickyLogotype = require('./StickyLogotype');\r\nlet LuminateSessionSync = require('./LuminateSessionSync/LuminateSessionSync');\r\nlet GeneralSearch = require('./GeneralSearch/GeneralSearch');\r\nlet SmugmugEventGallery = require('./SmugmugEventGallery/SmugmugEventGallery');\r\nlet Tracker = require('./Tracking/Tracker');\r\nlet SlickSlider = require('./SlickSlider');\r\n\r\nlet donationWidgetSelector = '.jnf-widget.jnf-widget-donate:not(.jnf-widget-is-designer)';\r\nlet slideshowWidgetSelector = '.jnf-widget.jnf-widget-slideshow';\r\nlet slideshowLeadersWidgetSelector = '.jnf-widget.jnf-widget-slideshow-leaders';\r\nlet descriptionWidgetSelector = '.jnf-widget.jnf-widget-description';\r\nlet separatorWidgetSelector = '.jnf-widget.jnf-widget-separator:not(.jnf-widget-separator-use-page-breakpoints)';\r\nlet featuredSponsorsSelector = '.jnf-widget.jnf-widget-featured-sponsors';\r\nlet searchBoxSelector = '.jnf-widget.search-box-widget';\r\nlet newsWidgetSelector = '.custom-news-wrapper';\r\nlet professionalStaffWidgetSelection = '.jnf-widget.professional-staff';\r\nlet speakersFilterWidgetSelector = '.jnf-widget.speakers-filter';\r\nlet menuDropdownWidgetSelector = '.jnf-widget-dropdown .topic-select.jnf-dropdown.jnf-menu-dropdown';\r\nlet regionSearchBoxWidgetSelector = '.jnf-widget.regions-search-widget';\r\nlet speakersRequestSelector = '.speakers-request-form-wrapper';\r\nlet featuredVideoWidgetSelector = '.jnf-widget.featured-video';\r\nlet fullDonationFormWidgetSelector = '.full-donation-form';\r\nlet regionsFilterWidgetSelector = '.jnf-widget.regions-filter';\r\nlet eventsListWidgetSelector = '.jnf-widget.events-list';\r\nlet eventRegistrationFormWidgetSelector = '.jnf-widget.event-registration-form';\r\nlet menu3WidgetSelector = \".jnf-widget.jnf-widget-menu-3-menu\";\r\nlet titleSelector = '.jnf-widget-title';\r\nlet stickyLogotypeSelector = '.mobile-logotype-banner';\r\nlet honoreeWidgetSelector = '.jnf-widget.honoree';\r\nlet luminateSessionSyncWidgetSelector = '.jnf-widget.luminate-session-sync';\r\nlet generalSearchWidgetSelector = '.jnf-widget.general-search-box';\r\nlet iframeWidgetSelector = '.jnf-widget.iframe-widget';\r\nlet gallerySelector = '.jnf-smugmug-event-gallery';\r\nlet smugmugEventGallery = '.jnf-smugmug-event-gallery';\r\nlet smugmugFullGallery = '.jnf-smugmug-gallery';\r\n\r\n$(donationWidgetSelector).each(function (widgetElementIndex, widgetElement) {\r\n\r\n new Donate({\r\n element: widgetElement,\r\n submitUrl: $(widgetElement).attr('data-submit-url'),\r\n valueKey: 'set.Value',\r\n levelKey: 'set.DonationLevel'\r\n });\r\n});\r\n$(slideshowWidgetSelector).each(function (widgetElementIndex, widgetElement) {\r\n\r\n let slideLinks = $(this).find('.jnf-widget-slideshow-details-list a');\r\n let slideLinksForImages = $(this).find('.jnf-widget-slideshow-photo-container-list a');\r\n \r\n slideLinks.each(function (index) {\r\n let slidesDescription = $(this).find('+ .jnf-widget-slideshow-details-list-item');\r\n $(this).html(slidesDescription);\r\n });\r\n slideLinksForImages.each(function (index) {\r\n let slidesImages = $(this).find('+ .jnf-widget-slideshow-photo-container-list-item');\r\n $(this).html(slidesImages);\r\n });\r\n\r\n});\r\n\r\n$(slideshowWidgetSelector).each(function (widgetElementIndex, widgetElement) {\r\n\r\n new Slideshow({\r\n element: widgetElement\r\n });\r\n});\r\n\r\n\r\n\r\n$(slideshowLeadersWidgetSelector).each(function (widgetElementIndex, widgetElement) {\r\n\r\n new Slideshow({\r\n element: widgetElement\r\n });\r\n});\r\n\r\njQuery.fn.swapWith = function (to) {\r\n return this.each(function () {\r\n let thisPrev = $(this).prev();\r\n let toPrev = $(to).prev();\r\n\r\n $(this).insertAfter(toPrev);\r\n $(to).insertAfter(thisPrev);\r\n });\r\n};\r\n\r\nlet els = $(descriptionWidgetSelector).filter('.jnf-widget-description-template-4');\r\nlet els2 = $(descriptionWidgetSelector).filter('.jnf-widget-description-template-featured-donors');\r\nlet swaps = Math.ceil(els.length/3);\r\n\r\nif ($(\"#hsi-body\").length === 0){ //ONLY run \"random sort\" on JNF, NOT AMHSI site\r\n for (; swaps > 0; swaps--) {\r\n let s1 = Math.floor(Math.random()*els.length);\r\n let s2 = Math.floor(Math.random() * els.length);\r\n\r\n if (s1 !== s2) {\r\n els.eq(s1).swapWith(els.eq(s2));\r\n }\r\n }\r\n}\r\n\r\n\r\nels = $(descriptionWidgetSelector).filter('.jnf-widget-description-template-4');\r\n\r\nels.each(function (index, el) {\r\n\r\n if (index % 2 !== 0) {\r\n $(el).addClass('jnf-widget-description-template-4-even');\r\n }\r\n});\r\n\r\nels2.each(function (index, el) {\r\n\r\n if (index % 2 !== 0) {\r\n $(el).addClass('jnf-widget-description-template-featured-donors-even');\r\n }\r\n});\r\n\r\n$(descriptionWidgetSelector).each(function (widgetElementIndex, widgetElement) {\r\n\r\n new Description({\r\n element: widgetElement\r\n });\r\n});\r\n\r\n$(separatorWidgetSelector).each(function (widgetElementIndex, widgetElement) {\r\n\r\n new Separator({\r\n element: widgetElement\r\n });\r\n});\r\n\r\n$(featuredSponsorsSelector).each(function (widgetElementIndex, widgetElement) {\r\n\r\n new FeaturedSponsors({\r\n element: widgetElement\r\n });\r\n});\r\n\r\n$(searchBoxSelector).each(function (widgetElementIndex, widgetElement) {\r\n\r\n new SearchBox({\r\n element: $(widgetElement),\r\n input: $(widgetElement).find('.query-input'),\r\n searchButton: $(widgetElement).find('.search-button')\r\n });\r\n});\r\n\r\n$(newsWidgetSelector).each(function (widgetElementIndex, widgetElement) {\r\n new ExpandableList({\r\n loadMoreElement: $(widgetElement).find('.load-more-link'),\r\n elements: $(widgetElement).find('.jnf-news-container').children(),\r\n onListExpanded: () => $(widgetElement).find('.news-archive-link').show()\r\n });\r\n});\r\n\r\n$(professionalStaffWidgetSelection).each(function (widgetElementIndex, widgetElement) {\r\n new ExpandableList({\r\n loadMoreElement: $(widgetElement).find('.load-more-link'),\r\n elements: $(widgetElement).find('.professional-staff-list').children()\r\n });\r\n});\r\n\r\n$('.region-select').each(function (widgetElementIndex, widgetElement) {\r\n new Dropdown({\r\n element: $(widgetElement),\r\n menuElement: $(widgetElement).find('.jnf-dropdown-menu'),\r\n windowElement: $(window)\r\n });\r\n});\r\n\r\n$('#calendar').each(function (widgetElementIndex, widgetElement) {\r\n new EventsCalendar($(widgetElement));\r\n});\r\n\r\n$(speakersFilterWidgetSelector).each(function (widgetElementIndex, widgetElement) {\r\n $(widgetElement).find('.jnf-dropdown').each(function (index, dropdownElement) {\r\n\r\n new Dropdown({\r\n element: $(dropdownElement),\r\n menuElement: $(dropdownElement).find('.jnf-dropdown-menu'),\r\n windowElement: $(window)\r\n });\r\n })\r\n});\r\n\r\n$(menuDropdownWidgetSelector).each(function (widgetElementIndex, widgetElement) {\r\n new Dropdown({\r\n element: $(widgetElement),\r\n menuElement: $(widgetElement).find('.jnf-dropdown-menu'),\r\n windowElement: $(window)\r\n });\r\n});\r\n\r\n$(regionSearchBoxWidgetSelector).each(function (widgetElementIndex, widgetElement) {\r\n new RegionSearchBox({\r\n searchButton: $(widgetElement).find('.search-button'),\r\n queryInput: $(widgetElement).find('.query-input'),\r\n serverRoot: $(widgetElement).data('server-root'),\r\n defaultUrl: $(widgetElement).data('default-url')\r\n });\r\n});\r\n\r\n$(speakersRequestSelector).each(function (widgetElementIndex, widgetElement) {\r\n new SpeakersRequest({\r\n element: $(widgetElement),\r\n submitButton: $(widgetElement).find('.orange-submit'),\r\n resetButton: $(widgetElement).find('.cancel')\r\n });\r\n});\r\n\r\n$(featuredVideoWidgetSelector).each(function (widgetElementIndex, widgetElement) {\r\n new SizerBreakpoint({\r\n element: $(widgetElement)\r\n });\r\n\r\n new HorizontalGallery({\r\n element: $(widgetElement),\r\n arrowLeftSelector: '.arrow-container.arrow-container-left',\r\n arrowRightSelector: '.arrow-container.arrow-container-right',\r\n listSelector: 'ul',\r\n listElementSelector: 'li',\r\n arrowVisibleClass: 'visible'\r\n });\r\n});\r\n\r\n$(fullDonationFormWidgetSelector).each(function (widgetElementIndex, widgetElement) {\r\n new FullDonationForm({\r\n form: $(widgetElement)\r\n });\r\n});\r\n\r\n$(eventsListWidgetSelector).each(function (widgetElementIndex, widgetElement) {\r\n new EventsList({\r\n listElement: $(widgetElement).find('ul'),\r\n listType: $(widgetElement).data('list-type'),\r\n upcomingEventsCount: $(widgetElement).data('upcoming-events-count'),\r\n upcomingEventsRegion: $(widgetElement).data('region-name')\r\n });\r\n});\r\n\r\n// Regions filter widget should be initialized after events list and calendar widgets\r\n$(regionsFilterWidgetSelector).each(function (widgetElementIndex, widgetElement) {\r\n new RegionsFilter({\r\n listElement: $(widgetElement).find('ul'),\r\n userRegionCode: $(widgetElement).data('user-region-code')\r\n });\r\n});\r\n\r\n$(eventRegistrationFormWidgetSelector).each(function (widgetElementIndex, widgetElement) {\r\n new Iframe({\r\n element: $(widgetElement)\r\n });\r\n});\r\n\r\n$(menu3WidgetSelector).each(function (widgetElementIndex, widgetElement) {\r\n new SizerBreakpoint({\r\n element: $(widgetElement)\r\n });\r\n});\r\n\r\n$(titleSelector).each(function (widgetElementIndex, widgetElement) {\r\n let titleLink = $(this).find('a');\r\n let titleText = $(this).find('h1');\r\n if (titleLink.length > 0) {\r\n titleLink.html(titleText);\r\n\r\n let eventName = widgetElement.dataset.trackingEvent;\r\n if (eventName) {\r\n titleLink.on('click', () => Tracker.trackGenericEvent(eventName, {\r\n page: window.location.pathname\r\n }));\r\n }\r\n }\r\n});\r\n\r\nif (!BrowserSession()) {\r\n $(stickyLogotypeSelector).each(function (widgetElementIndex, widgetElement) {\r\n\r\n new StickyLogotype({\r\n element: $(widgetElement),\r\n inactiveSession: true\r\n });\r\n });\r\n}\r\n$(honoreeWidgetSelector).each(function (widgetElementIndex, widgetElement) {\r\n new SizerBreakpoint({\r\n element: $(widgetElement)\r\n })\r\n});\r\n\r\n$(luminateSessionSyncWidgetSelector).each(function (widgetElementIndex, widgetElement) {\r\n new LuminateSessionSync({\r\n isUserSignedIn: $(widgetElement).data('isSignedIn') === 'True'\r\n });\r\n});\r\n\r\n$(generalSearchWidgetSelector).each(function (widgetElementIndex, widgetElement) {\r\n new GeneralSearch({\r\n element: $(widgetElement),\r\n container: $(widgetElement).find('.container'),\r\n input: $(widgetElement).find('.query-input'),\r\n button: $(widgetElement).find('.icon'),\r\n closeButton: $(widgetElement).find('.close-button')\r\n });\r\n});\r\n\r\n$(iframeWidgetSelector).each(function (widgetElementIndex, widgetElement) {\r\n new Iframe({\r\n element: $(widgetElement),\r\n });\r\n});\r\n\r\n$(gallerySelector).each(function (widgetElementIndex, widgetElement) {\r\n new SizerBreakpoint({\r\n element: $(widgetElement),\r\n extraSizes: [{ maxWidth: 360, cssClass: 'sizer-3-columns' }, { maxWidth: 620, cssClass: 'sizer-2-columns' }, { maxWidth: 1000, cssClass: 'sizer-1-columns' }]\r\n });\r\n});\r\n\r\n$(smugmugEventGallery).each(function (widgetElementIndex, widgetElement) {\r\n new SmugmugEventGallery({\r\n element: $(widgetElement),\r\n shareButton: $(widgetElement).find('.share-button'),\r\n sharePopup: $(widgetElement).find('.jnf-share-popup')\r\n });\r\n});\r\n\r\n$(smugmugFullGallery).each(function (widgetElementIndex, widgetElement) {\r\n new SmugmugEventGallery({\r\n element: $(widgetElement),\r\n shareButton: $(widgetElement).find('.share-button'),\r\n sharePopup: $(widgetElement).find('.jnf-share-popup')\r\n });\r\n});\r\n\r\n\r\nClicksTracking();", "/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.15';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading and trailing whitespace. */\n var reTrim = /^\\s+|\\s+$/g,\n reTrimStart = /^\\s+/,\n reTrimEnd = /\\s+$/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n value = iteratee(value);\n\n var low = 0,\n high = array == null ? 0 : array.length,\n valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

    ' + func(text) + '

    ';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

    fred, barney, & pebbles

    '\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '