{"version":3,"sources":["custom.js"],"names":["r","e","n","t","o","i","f","c","require","u","a","Error","code","p","exports","call","length","1","module","getCurrentLocation","callback","navigator","geolocation","getCurrentPosition","position","currentLocation","lat","coords","latitude","lng","longitude","getDirections","origin","destination","url","format","window","open","geocode","address","geocoder","results","status","location","geometry","resolvedCoords","reverseGeocode","latLng","resolvedLocation","formatted_address","getNearestOffice","offices","closest","mindif","dif","this","PythagorasEquirectangular","lat1","lon1","lat2","lon2","Deg2Rad","x","Math","cos","y","sqrt","deg","PI","2","Vue","use","VueResource","document","getElementById","./custom/features/clock","./custom/features/contact-info","./custom/features/contact-us","./custom/features/diversity-carousel","./custom/features/featured-person-carousel","./custom/features/gold-tabs","./custom/features/locations","./custom/features/office-listing","./custom/features/related-articles","./custom/features/related-experience","./custom/features/sitesearch-results","./custom/sections/articles","./custom/sections/capabilities","./custom/sections/careers-gen-content","./custom/sections/experience","./custom/sections/people","3","ScreenRead","el","components","./screen-read","4","data","showModal","form","formLoaded","professionalId","name","email","message","formRecaptcha","showVCardModal","vCardForm","vCardFormLoaded","vCardRecaptcha","recaptchaPublicKey","honeypot","created","$http","get","then","response","body","error","console","log","vcard","getAttribute","methods","accept","emailAddress","mailTo","href","toggleModal","decline","clearEmailForm","NameError","EmailError","MessageError","CaptchaError","clearVCardForm","DisplayMessage","loadRecaptcha","id","self","setTimeout","grecaptcha","render","sitekey","recaptchaCallback","hideForm","getElementsByClassName","classList","contains","add","unhideForm","remove","getElementsByTagName","toggle","hideMessage","toggleVCardModal","print","showMessage","$forceUpdate","showVCardMessage","validateInput","isValid","NameText","match","EmailText","MessageText","validateVCard","downloadVCard","link","createElement","appendChild","click","submit","context","execute","action","token","emailCount","sessionStorage","getItem","setItem","parseInt","http","post","ID","Name","Email","Message","EmailCount","RecaptchaResponse","success","recaptchaFailed","submitVCard","vcardurl","email-form","template","props","v-card","5","model","undefined","typeSelectorInitiated","inquiryTypes","selectedInquiryType","submitting","validation","submitTriggered","showTermsConditionsError","showRecaptchaError","showRequiredFieldsError","showEmailAddressError","requiredFields","firstName","lastName","submission","posted","FirstName","LastName","Phone","JobTitle","Company","Captcha","TermsConditions","MarketingSignup","InquiryTypeId","ContactUsFormId","Hidden","serializedContactUsDropdown","validate","errorFields","focus","test","required","field","hasOwnProperty","computed","contactRecipient","emailOverride","firstNameErrorField","lastNameErrorField","emailErrorField","messageErrorField","termsErrorField","6","firstScriptTag","tag","diversityStore","Vuex","Store","state","showVideo","slidesPaused","mutations","closeVideo","loadVideo","videoId","pauseSlides","playSlides","store","carousel","json","activeSlide","slideMove","player","interval","featureRotationInterval","src","parentNode","insertBefore","mounted","setInterval","nextTick","nextSlide","slideLength","slides","isPaused","$store","watch","startVideo","activeClass","index","switchSlides","slideBackward","commit","previousSlide","openModal","group","activeGroup","closeModal","isInterval","playVideo","afterLeave","pauseVideo","skipToSlide","pauseAndCloseVideoPlayer","getVideoData","video_id","loadVideoById","YT","Player","host","frameborder","height","width","playerVars","autoplay","showinfo","events","onReady","onStateChange","7","featuredPeople","JSON","parse","initialData","showSlider","slideStyles","slide","transform","8","directions","37","39","activeTab","panelsLength","showMobileNav","$refs","tabframe","dataset","activeLabel","tabEl","innerText","selectTab","givenIndex","min","max","onTabKeydown","event","key","keyCode","dir","toIndex","toTabButton","toggleMobileNav","9","func","utilities","keyword","executed","locations","displayCount","displayedLocations","map","office","reset","search","app","nearestOffice","getLocationByOffice","clear","find","officeId","slice","val","../../app/location-utilities","10","regionFilters","selectedFilter","officesLoaded","dropdown","shown","selected","serializedRegionFilters","serializedOffices","changeSelectedRegion","regionId","filter","getRegionFilter","getOffices","toggleDropdown","currentFilter","toTwoPlaces","num","seconds","int","minutes","hours","clock","computedHours","currentHours","floor","11","panels","articles","articlesLoaded","moreArticles","selectedPanel","relatedArticlesDataModel","getPanels","getArticles","articlePanels","panelId","skip","take","reload","request","entityId","vueAppStates","perspectivesNewsEvents","receivedArticles","loadMoreArticles","viewMoreCount","addReceivedArticles","selectPanel","getPanelById","push","panel","getLinkTarget","isExternalLink","tabIndex","toPanel","tabButton","article-tile","12","experienceGroups","experiences","firstSet","moreExperiences","loadedMore","relatedExperienceDataModel","getExperienceGroups","getExperiences","viewLess","stringify","resetExperiences","selectedGroupId","requestUrl","buildRequestUrl","addedExperiences","relatedExperiences","exp","relatedExperience","changeExperienceGroup","experienceGroupId","getExperienceGroupById","showMoreExperiences","currentlyDisplayed","addExperiences","pushArray","groupId","13","screenReadTime","Date","setHours","setMinutes","setSeconds","start","updateTime","bind","output","getHours","getMinutes","ariaLiveMode","mode","getYear","getMonth","getDate","14","defaultElement","defaultScroll","offset","$","top","animate","scrollTop","attr","scrollTo","currentlyDisplayedCount","remainingResults","resultsStartIndex","searching","totalResults","suggestion","constants","baseRequest","limitFilterFormat","languageFilterFormat","queryKey","siteSearchResultsModel","serverResults","items","filters","setContext","indexOf","query","getQueryParams","updated","firstResultItem","resultListItems","firstResultLink","firstChild","executeSearch","buildRequest","innerHTML","titleTag","handleFilterClick","limitFilter","initialDisplayCount","mobileMenuExpanded","useSuggestion","searchQuery","handleRemoveFilterClick","type","handleLoadMoreResultsClick","viewModel","handleTypeAheadSearchQuery","typeAheadQuery","encodeURIComponent","languageFilter","validQuery","totalResultsNotice","resultCountFormat","noResultsLabel","resultsVisibility","currentLanguageCode","search-typeahead","extends","VueTypeahead","default","limit","typeAheadTake","minChars","queryParamName","lastQuery","lastCurrent","loading","hasItems","populatedstatus","replace","emptystatus","defaultstatus","currentTitle","currentItem","current","Title","onHit","item","Url","$emit","clearTypeahead","goToResult","selectFilter","filterClick","beforeNav","afterNav","updateCustom","update","upCustom","up","downCustom","down","resetCustom","15","recentArticlesUtility","apiUrl","page","searchUrl","defaultResults","landingSettingsDefaultValues","recentArticles","landingServerJson","RecentArticles","recentArticleCount","RecentArticleCount","recentArticlesPageSize","RecentArticlesPageSize","recentArticlesApiUrl","RecentArticlesApiUrl","searchApiUrl","SearchApiUrl","typeAheadApiUrl","TypeAheadApiUrl","headerText","RecentArticleHeaderText","loadMoreText","LoadMoreText","templateName","LandingPageTemplateName","recentArticlesPage","loadMoreElement","upcomingLoadMoreElement","perspectiveFilters","eventFilters","newsFilters","ResultsCount","Results","emptyValues","resultCount","searchServerJson","Page","upcomingPage","UpcomingPage","Take","upcomingTake","searchKeyword","scrollPosition","capabilityFilters","CapabilityFilters","locationFilters","LocationFilters","topicFilters","TopicFilters","typeFilters","TypeFilters","dateFilters","DateFilters","selectedProfessionalFilter","FilterId","selectedCapabilityFilter","selectedLocationFilter","selectedTopicFilter","selectedTypeFilter","selectedDateFilter","selectedEventDateFilter","defaultValues","ArticleSearchResults","ResultCount","upcomingResultCount","UpcomingResultCount","upcomingResults","UpcomingResults","Searching","UpcomingTake","SearchKeyword","Scroll","ProfessionalFilter","Selected","SelectedEventDate","clearDropdownSelection","formattedId","getLoadMoreLocation","getUpcomingLoadMoreLocation","getParams","searchParams","substr","split","equation","sides","value","getNewUrlParams","paramsList","newUrlParams","param","join","pathname","setUrlParameter","params","paramsWithKey","paramsWithoutKey","paramWithKey","newParams","eventDate","dateFilter","capability","topic","professional","Skip","UpcomingSkip","Keyword","EventDate","DateFilter","Location","Capability","Topic","Type","Professional","getters","updateSelectedEventDateFilter","date","resetState","defaults","updateSelectedCapabilityFilter","updateSelectedLocationFilter","updateSelectedTopicFilter","updateSelectedTypeFilter","updateSelectedDateFilter","updateSelectedProfessionalFilter","setState","newState","loadMoreUpcoming","loadMore","_loadMore","updateScroll","clearFilter","filterName","setSearching","updateResults","updateResultCount","count","updateUpcomingResultCount","updateUpcomingResults","updateSearchKeyword","text","actions","setSelectedEventDateFilter","setCapabilityFilter","dispatch","setLocationFilter","setTopicFilter","setTypeFilter","setDateFilter","setFilters","clearedFilterName","clearAllFilters","history","pushState","performKeywordSearch","term","performProfessionalSearch","lawyerFilter","updateSearchProfessional","updateSearchProfessionalId","payload","dateFilterId","searchResult","firstResultIndex","paginatedResults","concat","paginatedUpcomingResults","newUrl","currentSearchKeyword","currentSearchProfessional","showMobileFilters","eventPage","focusedDropdowns","onpopstate","onPopState","filterCount","searchProfessional","toggleFilters","shouldShowFilter","currentTemplateName","capabilityFilterChange","locationFilterChange","topicFilterChange","typeFilterChange","dateFilterChange","searchButtonClick","datePicker","eventStart","focusFilter","blurFilter","splice","placeholdertext","String","arialabel","Id","recent-articles","articleCount","pageSize","shownArticleCount","result","paginatedArticles","16","headerMenuElement","serverJson","InitialResults","ScrollPosition","parentServices","serverParents","toggledPractices","expanded","expandObj","allExpanded","viewAll","toggleCapabilityView","isExpandedPractice","toggleStatus","togglePractice","updatedToggledPractices","toggleAllServices","updatedToggledServices","scrollToSection","element","scrollToElement","scrollLocation","protocol","path","buttonlabel","selectedIndex","17","createGetter","propertyName","searchParamsOne","searchParamsList","schools","Schools","SearchResults","SelectedLocationFilter","filtersSet","updateSchools","isSearching","school","Office","enableSearch","decodeURIComponent","mapGetters","toBoolean","18","OfficeFilters","RegionFilters","selectedRegionFilter","region","Region","updateSelectedRegionFilter","setRegionFilter","regionFilterChange","19","letter","admission","diversity","globalSolution","Letter","Admission","Diversity","GlobalSolution","Position","selectedPositionFilter","selectedAdmissionFilter","selectedDiversityFilter","selectedGlobalSolutionFilter","searchName","professionals","SelectedLetter","PositionFilters","BarAdmissionStateFilters","DiverseAttorneyDirectoryOptInFilter","GlobalSolutionFilters","positionFilters","admissionFilters","globalSolutionFilters","SearchName","emailForm","emailFormLoaded","formEmailAddress","showForm","formProfessionalId","obj","selectedSearchName","selectedSearchKeyword","Object","defineProperty","enumerable","configurable","writable","updatePage","updateSearchName","updateLetter","updateSelectedPositionFilter","updateSelectedAdmissionFilter","updateSelectedDiversityFilter","updateSelectedGlobalSolutionFilter","updateProfessionals","clearLetter","updateEmailForm","updateEmailFormLoaded","updateFormProfessionalId","updateShowForm","pageNumber","setPositionFilter","setAdmissionFilter","setDiversityFilter","setGlobalSolutionFilter","paginatedProfessionals","performNameSearch","currentSearchNameTerm","currentSearchKeywordTerm","letterClick","positionFilterChange","admissionFilterChange","globalSolutionFilterChange","disclaimerEmailAddress"],"mappings":"CAAA,WAA+b,OAAnb,SAASA,EAAEC,EAAEC,EAAEC,GAAG,SAASC,EAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,IAAIE,EAAE,mBAAmBC,SAASA,QAAQ,IAAIF,GAAGC,EAAE,OAAOA,EAAEF,GAAE,GAAI,GAAGI,EAAE,OAAOA,EAAEJ,GAAE,GAAI,IAAIK,EAAE,IAAIC,MAAM,uBAAuBN,EAAE,KAAK,MAAMK,EAAEE,KAAK,mBAAmBF,EAAE,IAAIG,EAAEX,EAAEG,IAAIS,YAAYb,EAAEI,GAAG,GAAGU,KAAKF,EAAEC,QAAQ,SAASd,GAAoB,OAAOI,EAAlBH,EAAEI,GAAG,GAAGL,IAAeA,IAAIa,EAAEA,EAAEC,QAAQd,EAAEC,EAAEC,EAAEC,GAAG,OAAOD,EAAEG,GAAGS,QAAQ,IAAI,IAAIL,EAAE,mBAAmBD,SAASA,QAAQH,EAAE,EAAEA,EAAEF,EAAEa,OAAOX,IAAID,EAAED,EAAEE,IAAI,OAAOD,GAA7b,EAAA,EAA6ca,GAAG,SAAST,EAAQU,EAAOJ,GACxe,aAEAI,EAAOJ,SACHK,mBAAoB,SAA4BC,GACxCC,UAAUC,aACVD,UAAUC,YAAYC,mBAAmB,SAAUC,GAC/C,IAAIC,GAAoBC,IAAKF,EAASG,OAAOC,SAAUC,IAAKL,EAASG,OAAOG,WAC5EV,EAASK,MAKrBM,cAAe,SAAuBC,EAAQC,EAAab,GACvD,IAAIc,EAAM,2CAA2CC,OAAOH,EAAON,IAAM,IAAMM,EAAOH,IAAKI,EAAYP,IAAM,IAAMO,EAAYJ,KAC/HO,OAAOC,KAAKH,EAAK,oBAAqB,oEAClCd,GAAUA,EAASY,IAG3BM,QAAS,SAAiBC,EAASnB,GAC3BoB,UACAA,SAASF,SAAUC,QAAWA,GAAW,SAAUE,EAASC,GACxD,GAAc,MAAVA,GAAkBD,EAAQ,GAAI,CAC9B,IAAIE,EAAWF,EAAQ,GAAGG,SAASD,SAC/BE,GAAmBnB,IAAKiB,EAASjB,MAAOG,IAAKc,EAASd,OAC1DT,EAASyB,OAMzBC,eAAgB,SAAwBC,EAAQ3B,GACxCoB,UACAA,SAASF,SAAUK,SAAYI,GAAU,SAAUN,EAASC,GACxD,GAAc,MAAVA,GAAkBD,EAAQ,GAAI,CAC9B,IAAIO,EAAmBP,EAAQ,GAC/BrB,EAAS4B,EAAiBC,uBAM1CC,iBAAkB,SAA0BzB,EAAiB0B,EAAS/B,GAClE,IAEIgC,EADAC,EAAS,MAGb,GAAI5B,EAAiB,CACjB,IAAK,IAAIpB,EAAI,EAAGA,EAAI8C,EAAQnC,OAAQX,IAAK,CACrC,IAAIiD,EANAC,KAMYC,0BAA0B/B,EAAgBC,IAAKD,EAAgBI,IAAKsB,EAAQ9C,GAAG0C,OAAOrB,IAAKyB,EAAQ9C,GAAG0C,OAAOlB,KACzHyB,EAAMD,IACND,EAAU/C,EACVgD,EAASC,GAIjB,GAAIF,GAAuB,IAAZA,EAEXhC,EADoB+B,EAAQC,MAMxCI,0BAA2B,SAAmCC,EAAMC,EAAMC,EAAMC,GAG5EH,EAFYF,KAECM,QAAQJ,GACrBE,EAHYJ,KAGCM,QAAQF,GACrBD,EAJYH,KAICM,QAAQH,GAErB,IACII,IAFJF,EALYL,KAKCM,QAAQD,IAELF,GAAQK,KAAKC,KAAKP,EAAOE,GAAQ,GAC7CM,EAAIN,EAAOF,EAEf,OAJQ,KAGAM,KAAKG,KAAKJ,EAAIA,EAAIG,EAAIA,IAIlCJ,QAAS,SAAiBM,GACtB,OAAOA,EAAMJ,KAAKK,GAAK,WAIzBC,GAAG,SAAS7D,EAAQU,EAAOJ,GACjC,aAEAwD,IAAIC,IAAIC,aAIRhE,EAAQ,8BACRA,EAAQ,kCACRA,EAAQ,gCACRA,EAAQ,4BACRA,EAAQ,yCACRA,EAAQ,+BAEJiE,SAASC,eAAe,2BACJ,IAAIJ,IAAI9D,EAAQ,yCAGpCiE,SAASC,eAAe,yBACN,IAAIJ,IAAI9D,EAAQ,uCAGlCiE,SAASC,eAAe,qBACV,IAAIJ,IAAI9D,EAAQ,mCAG9BiE,SAASC,eAAe,uBACR,IAAIJ,IAAI9D,EAAQ,qCAEhCiE,SAASC,eAAe,UACX,IAAIJ,IAAI9D,EAAQ,4BAG7BiE,SAASC,eAAe,wBACJ,IAAIJ,IAAI9D,EAAQ,yCAGpCiE,SAASC,eAAe,mBACZ,IAAIJ,IAAI9D,EAAQ,iCAG5BiE,SAASC,eAAe,kBACb,IAAIJ,IAAI9D,EAAQ,gCAG3BiE,SAASC,eAAe,wBACC,IAAIJ,IAAI9D,EAAQ,+CAGzCiE,SAASC,eAAe,2BACC,IAAIJ,IAAI9D,EAAQ,2CAG1CmE,0BAA0B,EAAEC,iCAAiC,EAAEC,+BAA+B,EAAEC,uCAAuC,EAAEC,6CAA6C,EAAEC,8BAA8B,EAAEC,8BAA8B,EAAEC,mCAAmC,GAAGC,qCAAqC,GAAGC,uCAAuC,GAAGC,uCAAuC,GAAGC,6BAA6B,GAAGC,iCAAiC,GAAGC,wCAAwC,GAAGC,+BAA+B,GAAGC,2BAA2B,KAAKC,GAAG,SAASnF,EAAQU,EAAOJ,GACzmB,aAEA,IAAI8E,EAAapF,EAAQ,iBAEzBU,EAAOJ,SACL+E,GAAI,SACJC,YACEF,WAAcA,MAIfG,gBAAgB,KAAKC,GAAG,SAASxF,EAAQU,EAAOJ,GACnD,aAEAI,EAAOJ,SACH+E,GAAI,oBAEJI,MACIC,WAAW,EACXC,QACAC,YAAY,EACZC,eAAgB,GAChBC,KAAM,GACNC,MAAO,GACPC,QAAS,GACTC,cAAe,KACfC,gBAAgB,EAChBC,aACAC,iBAAiB,EACjBC,eAAgB,KAChBC,mBAAoB,GACpBC,SAAU,IAGdC,QAAS,WACLzD,KAAK0D,MAAMC,IAAI,yBAAyBC,KAAK,SAAUC,GAEnD7D,KAAK4C,KAAOiB,EAASC,KAAKlB,KAC1B5C,KAAK6C,YAAa,GAInB,SAAUkB,GACTC,QAAQC,IAAIF,KAEhB/D,KAAK0D,MAAMC,IAAI,qBAAqBC,KAAK,SAAUC,GAE/C7D,KAAKoD,UAAYS,EAASC,KAAKI,MAC/BlE,KAAKqD,iBAAkB,GAIxB,SAAUU,GACTC,QAAQC,IAAIF,KAGhB/D,KAAKuD,mBAAqBrC,SAASC,eAAe,mBAAmBgD,aAAa,uBAGtFC,SACIC,OAAQ,SAAgBC,GACpB,IAAIC,EAAS,UAAYD,EACzBzF,OAAOO,SAASoF,KAAOD,EACvBvE,KAAKyE,eAGTC,QAAS,WACL1E,KAAKyE,eAETE,eAAgB,WACZ3E,KAAK+C,KAAO,GACZ/C,KAAKgD,MAAQ,GACbhD,KAAKiD,QAAU,GACfjD,KAAK4C,KAAKgC,UAAY,GACtB5E,KAAK4C,KAAKiC,WAAa,GACvB7E,KAAK4C,KAAKkC,aAAe,GACzB9E,KAAK4C,KAAKmC,aAAe,IAE7BC,eAAgB,WACZhF,KAAKoD,UAAU6B,eAAiB,IAEpCC,cAAe,SAAuBC,GAClC,IAAIC,EAAOpF,KACXqF,WAAW,WACmB,oBAAfC,WACPF,EAAKF,cAAcC,GAET,kBAANA,EACAC,EAAK9B,eAAiBgC,WAAWC,OAAOJ,GACpCK,QAAS,2CACT3H,SAAUuH,EAAKK,oBAGnBL,EAAKlC,cAAgBoC,WAAWC,OAAOJ,GACnCK,QAAS,2CACT3H,SAAUuH,EAAKK,qBAI5B,MAGPA,kBAAmB,WACfzB,QAAQC,IAAI,aAGhByB,SAAU,WACN,IAAI9C,EAAO1B,SAASyE,uBAAuB,uBAAuB,GAC7D/C,EAAKgD,UAAUC,SAAS,SACzBjD,EAAKgD,UAAUE,IAAI,SAI3BC,WAAY,WACR,IAAInD,EAAO1B,SAASyE,uBAAuB,uBAAuB,GAC9D/C,EAAKgD,UAAUC,SAAS,SACxBjD,EAAKgD,UAAUI,OAAO,SAI9BvB,YAAa,SAAqB3B,GAC1BA,IACA9C,KAAK8C,eAAiBA,GAEf5B,SAAS+E,qBAAqB,QAAQ,GAC5CL,UAAUM,OAAO,cACtBlG,KAAK2C,WAAa3C,KAAK2C,UAElB3C,KAAK2C,UAIN3C,KAAKmG,eAHLnG,KAAK2E,iBACL3E,KAAK+F,eAMbK,iBAAkB,SAA0BtD,GACpCA,IACA9C,KAAK8C,eAAiBA,GAEf5B,SAAS+E,qBAAqB,QAAQ,GAC5CL,UAAUM,OAAO,cACtBlG,KAAKmD,gBAAkBnD,KAAKmD,eAEvBnD,KAAK2C,WACN3C,KAAKgF,kBAGbqB,MAAO,WACHxH,OAAOwH,SAEXC,YAAa,SAAqBrD,GAC9BjD,KAAK0F,WACL1F,KAAK4C,KAAKqC,eAAiBhC,EAC3BjD,KAAKuG,gBAETC,iBAAkB,SAA0BvD,GACxCjD,KAAKoD,UAAU6B,eAAiBhC,EAChCjD,KAAKuG,gBAETJ,YAAa,SAAqBlD,GAC9BjD,KAAK4C,KAAKqC,eAAiB,IAE/BwB,cAAe,WACX,IAAIC,GAAU,EA6Bd,MA5BiB,IAAb1G,KAAK+C,MACL/C,KAAK4C,KAAKgC,UAAY5E,KAAK4C,KAAK+D,SAAW,gBAC3CD,GAAU,GAEV1G,KAAK4C,KAAKgC,UAAY,GAER,IAAd5E,KAAKgD,OAAgBhD,KAAKgD,MAAM4D,MAAM,6JAItC5G,KAAK4C,KAAKiC,WAAa,IAHvB7E,KAAK4C,KAAKiC,WAAa,wBAA0B7E,KAAK4C,KAAKiE,UAAY,IACvEH,GAAU,GAIM,IAAhB1G,KAAKiD,SACLjD,KAAK4C,KAAKkC,aAAe9E,KAAK4C,KAAKkE,YAAc,gBACjDJ,GAAU,GAEV1G,KAAK4C,KAAKkC,aAAe,GAW7B9E,KAAKuG,eACEG,GAEXK,cAAe,WAEX/C,QAAQC,IAAI,UAEhB+C,cAAe,SAAuBrI,GAClC,GAAIA,EAAK,CACL,IAAIsI,EAAO/F,SAASgG,cAAc,KAClCD,EAAKzC,KAAO7F,EACZuC,SAAS4C,KAAKqD,YAAYF,GAC1BA,EAAKG,QACLpH,KAAKoG,qBAGbiB,OAAQ,SAAgBvE,GAIpB,GAHIA,IACA9C,KAAK8C,eAAiBA,GAEtB9C,KAAKyG,gBAAiB,CACtB,IAAIa,EAAUtH,KACdsF,WAAWiC,QAAQvH,KAAKuD,oBAAsBiE,OAAQ,qBAAsB5D,KAAK,SAAU6D,GACvF,IAAIC,EAAaC,eAAeC,QAAQ,cACpCF,EACAC,eAAeE,QAAQ,aAAcC,SAASJ,GAAc,GAE5DC,eAAeE,QAAQ,aAAc,GAEzC9G,IAAIgH,KAAKC,KAAK,+BACVC,GAAIX,EAAQxE,eACZoF,KAAMZ,EAAQvE,KACdoF,MAAOb,EAAQtE,MACfoF,QAASd,EAAQrE,QACjBoF,WAAYX,EACZY,kBAAmBb,IACpB7D,KAAK,SAAUC,GACS,KAAnBA,EAAS1E,OACL0E,EAASC,KAAKyE,QACdjB,EAAQhB,YAAYzC,EAASC,KAAKb,SAC3BY,EAASC,KAAK0E,iBACrBlB,EAAQ1E,KAAKmC,aAAe,wBAC5B2B,SAAU,GAEV1C,QAAQC,IAAIJ,EAASC,KAAKb,UAG9Be,QAAQC,IAAI,gCACZqD,EAAQhB,YAAYzC,EAASC,KAAKb,WAEvC,SAAUc,GACTuD,EAAQhB,YAAY,uEAEzB,SAAUzC,GACTG,QAAQC,IAAI,uCAIxBwE,YAAa,SAAqB3F,GAC1BA,IACA9C,KAAK8C,eAAiBA,GAE1B,IAAIwE,EAAUtH,KACdsF,WAAWiC,QAAQvH,KAAKuD,oBAAsBiE,OAAQ,qBAAsB5D,KAAK,SAAU6D,GACvF1G,IAAIgH,KAAKC,KAAK,+BACVnE,SAAU4D,IACX7D,KAAK,SAAUC,GACVA,GAAYA,EAASC,KAAKyE,SAE1BxH,IAAIgH,KAAKC,KAAK,2BACVC,GAAIX,EAAQxE,iBACbc,KAAK,SAAUC,GACS,KAAnBA,EAAS1E,QAA0C,GAAzB0E,EAASC,KAAKyE,QACxCjB,EAAQN,cAAcnD,EAASC,KAAK4E,WAEpC1E,QAAQC,IAAI,iCACZqD,EAAQd,iBAAiB3C,EAASC,KAAKb,WAE5C,SAAUc,GACTuD,EAAQd,iBAAiB,uEAG7B3C,GAAYA,EAASC,KAAK0E,kBAC1B9B,QAAU7C,EAASC,KAAKyE,QACxBvI,KAAKoD,UAAU2B,aAAe,0BAInC,SAAUhB,GACTC,QAAQC,IAAIF,MAEjB,SAAUA,GACTC,QAAQC,IAAIF,OAKxBxB,YACIoG,cACIC,SAAU,uBACVC,OAAQ,SAAU,YAEtBC,UACIF,SAAU,2BAKhBG,GAAG,SAAS9L,EAAQU,EAAOJ,GACjC,aAEAI,EAAOJ,SACH+E,GAAI,kBAEJI,KAAM,WACF,OACIsG,WAAOC,EAEPC,uBAAuB,EACvBC,kBAAcF,EACdG,yBAAqBH,EACrBI,YAAY,EACZ9F,mBAAoB,GAEpB+F,YACIC,iBAAiB,EACjBC,0BAA0B,EAC1BC,oBAAoB,EACpBC,yBAAyB,EACzBC,uBAAuB,EACvBC,gBACIC,WAAW,EACXC,UAAU,EACV9G,OAAO,EACPC,SAAS,IAIjB8G,YACIC,QAAQ,EACRzB,SAAS,GAGb3F,MACIqH,UAAW,GAAIC,SAAU,GAAI/B,MAAO,GACpCgC,MAAO,GAAIC,SAAU,GAAIC,QAAS,GAClCjC,QAAS,GAAIkC,SAAS,EAAOC,iBAAiB,EAAOC,iBAAiB,EACtEC,cAAe,GAAIC,gBAAiB,GACpCC,OAAQ,MAKpBlH,QAAS,WACLzD,KAAKgJ,MAAQnK,OAAO+L,4BACpB5K,KAAKmJ,aAAenJ,KAAKgJ,MAAMG,aAE/BnJ,KAAK4C,KAAK8H,gBAAkBxJ,SAASC,eAAe,mBAAmBgD,aAAa,gBACpFnE,KAAKuD,mBAAqBrC,SAASC,eAAe,mBAAmBgD,aAAa,uBAGtFC,SACIiD,OAAQ,WAEJ,GADArH,KAAKuJ,iBAAkB,EACnBvJ,KAAK6K,WAAY,CACjB7K,KAAKqJ,YAAa,EACdrJ,KAAKoJ,sBACLpJ,KAAK4C,KAAK6H,cAAgBzK,KAAKoJ,oBAAoBjE,IAEvD,IAAImC,EAAUtH,KACdsF,WAAWiC,QAAQvH,KAAKuD,oBAAsBiE,OAAQ,eAAgB5D,KAAK,SAAU6D,GACjFH,EAAQ1E,KAAK0F,kBAAoBb,EACjCH,EAAQ5D,MAAMsE,KAAK,wBAAyBV,EAAQ1E,MAAMgB,KAAK,SAAUC,GACjEA,GACAyD,EAAQyC,WAAWC,QAAS,EAC5B1C,EAAQyC,WAAWxB,QAAU1E,EAASC,KAAKyE,QAC3CjB,EAAQ+B,YAAa,EACrB/B,EAAQgC,WAAWG,mBAAqB5F,EAASC,KAAK0E,kBAEtDlB,EAAQ+B,YAAa,EACrB/B,EAAQyC,WAAWxB,QAAU1E,EAC7ByD,EAAQgC,WAAWG,mBAAqB5F,EAASC,KAAK0E,kBAE3D,SAAUzE,GACTC,QAAQC,IAAIF,GACZuD,EAAQ+B,YAAa,KAE1B,SAAUtF,GACTC,QAAQC,IAAIF,GACZuD,EAAQ+B,YAAa,SAGzBhE,WAAW,WACPyF,YAAc5J,SAASyE,uBAAuB,yBAC1CmF,YAAYrN,QACZqN,YAAY,GAAGC,SAEpB,MAIXF,SAAU,WACD7K,KAAKsJ,WAAWC,kBACjBvJ,KAAKsJ,WAAWC,iBAAkB,GAGtCvJ,KAAKsJ,WAAWM,eAAeC,YAAc7J,KAAK4C,KAAKqH,UACvDjK,KAAKsJ,WAAWM,eAAeE,WAAa9J,KAAK4C,KAAKsH,SACtDlK,KAAKsJ,WAAWM,eAAe5G,QAAUhD,KAAK4C,KAAKuF,MACnDnI,KAAKsJ,WAAWM,eAAe3G,UAAYjD,KAAK4C,KAAKwF,QAErDpI,KAAKsJ,WAAWE,0BAA4BxJ,KAAK4C,KAAK2H,gBAGtDvK,KAAKsJ,WAAWK,sBAAwB3J,KAAKsJ,WAAWM,eAAe5G,QAD9D,4JAC2EgI,KAAKhL,KAAK4C,KAAKuF,OAEnG,IAAI8C,EAAWjL,KAAKsJ,WAAWM,eAE/B,IAAK,IAAIsB,KADTlL,KAAKsJ,WAAWI,yBAA0B,EACxBuB,EACVA,EAASE,eAAeD,KAAWD,EAASC,KAC5ClH,QAAQC,IAAI,0BAA2BiH,GACvClL,KAAKsJ,WAAWI,yBAA0B,GASlD,QAAS1J,KAAKsJ,WAAWE,0BAA4BxJ,KAAKsJ,WAAWK,uBAAyB3J,KAAKsJ,WAAWI,2BAItH0B,UACI9G,aAAc,WACV,IAAKtE,KAAKoJ,oBAAoBiC,iBAC1B,OAAOrL,KAAKoJ,oBAAoBkC,eAGxCC,oBAAqB,WACjB,OAAOvL,KAAKsJ,WAAWC,kBAAoBvJ,KAAKsJ,WAAWM,eAAeC,UAAY,yBAA2B,IAErH2B,mBAAoB,WAChB,OAAOxL,KAAKsJ,WAAWC,kBAAoBvJ,KAAKsJ,WAAWM,eAAeE,SAAW,yBAA2B,IAEpH2B,gBAAiB,WACb,GAAIzL,KAAKsJ,WAAWC,gBAAiB,CACjC,GAAIvJ,KAAKsJ,WAAWK,sBAChB,MAAO,sBACJ,IAAK3J,KAAKsJ,WAAWM,eAAe5G,MACvC,MAAO,2BAInB0I,kBAAmB,WACf,OAAO1L,KAAKsJ,WAAWC,kBAAoBvJ,KAAKsJ,WAAWM,eAAe3G,QAAU,yBAA2B,IAEnH0I,gBAAiB,WACb,OAAO3L,KAAKsJ,WAAWC,iBAAmBvJ,KAAKsJ,WAAWE,yBAA2B,sBAAwB,WAKnHoC,GAAG,SAAS3O,EAAQU,EAAOJ,GACjC,aAEA,IA4IQsO,EACAC,EA7IJC,EAAiB,IAAIC,KAAKC,OAC1BC,OACIC,eAAWlD,EACXmD,kBAAcnD,GAElBoD,WACIC,WAAY,SAAoBJ,GAC5BA,EAAMC,eAAYlD,GAGtBsD,UAAW,SAAmBL,EAAOM,GACjCN,EAAMC,UAAYK,EAClBN,EAAME,cAAe,GAEzBK,YAAa,SAAqBP,GAC9BA,EAAME,cAAe,GAEzBM,WAAY,SAAoBR,GAC5BA,EAAME,kBAAenD,MAIjCtL,EAAOJ,SACH+E,GAAI,0BACJqK,MAAOZ,EACPrJ,KAAM,WACF,OACIkK,SAAU/N,OAAOgO,KAAKD,SACtBE,YAAa,EACbC,UAAW,UACXC,YAAQ/D,EACRgE,SAAUpO,OAAOgO,KAAKD,SAASM,0BAGvCzJ,SA2GIqI,EAAM5K,SAASgG,cAAc,UAEjC4E,EAAIqB,IAAM,0CACVtB,EAAiB3K,SAAS+E,qBAAqB,UAAU,IAC1CmH,WAAWC,aAAavB,EAAKD,IA7G5CyB,QAAS,WACL,IAAIlI,EAAOpF,KACPA,KAAKiN,UAAY,KACjBM,YAAY,WACRxM,IAAIyM,SAAS,WACTpI,EAAKqI,WAAU,MAEpBrI,EAAK6H,WAGhB7B,UACIsC,YAAa,WACT,OAAO1N,KAAK4M,SAASe,OAAOlQ,QAEhCmQ,SAAU,WACN,OAAO5N,KAAK6N,OAAO3B,MAAME,cAE7BD,UAAW,WAEP,OADAnM,KAAKoM,aAAepM,KAAK6N,OAAO3B,MAAME,aAC/BpM,KAAK6N,OAAO3B,MAAMC,YAGjC2B,OACI3B,UAAW,gBACgBlD,IAAnBjJ,KAAKmM,WACLnM,KAAK+N,WAAW/N,KAAKmM,aAIjC/H,SACI4J,YAAa,SAAqBC,GAC9B,QAAOjO,KAAK8M,aAEhBoB,aAAc,SAAsBC,GAEhCA,EAAgBA,IAAgC,EAChDnO,KAAK6N,OAAOO,OAAO,eACfD,EACAnO,KAAKqO,gBAELrO,KAAKyN,aAGba,UAAW,SAAmBC,GAC1BvO,KAAKwO,YAAcD,GAEvBE,WAAY,WACRzO,KAAKwO,iBAAcvF,GAEvBwE,UAAW,SAAmBiB,GACrB1O,KAAK4N,UAAac,IACnB1O,KAAK+M,UAAY,UACjB/M,KAAK8M,YAAc,GAAK9M,KAAK0N,YAAc1N,KAAK8M,YAAc,EAAI9M,KAAK8M,gBAG/EuB,cAAe,WACXrO,KAAK+M,UAAY,WAEG,GAApB/M,KAAK8M,YAAmB9M,KAAK8M,YAAc9M,KAAK0N,YAAc,EAAI1N,KAAK8M,eAE3E6B,UAAW,SAAmBnC,GAC1BxM,KAAK6N,OAAOO,OAAO,YAAa5B,IAEpCoC,WAAY,SAAoBtM,GAE5BA,EAAGsD,UAAUI,OAAO,mBAExB6I,WAAY,WACJ7O,KAAK4N,SACL5N,KAAK6N,OAAOO,OAAO,cAEnBpO,KAAK6N,OAAOO,OAAO,gBAG3BU,YAAa,SAAqBb,GAC9BjO,KAAK6N,OAAOO,OAAO,eACnBpO,KAAK8M,YAAcmB,GAEvBc,yBAA0B,WACtB/O,KAAK6N,OAAOO,OAAO,cACfpO,KAAKgN,OAAQhN,KAAKgN,OAAO6B,aAAkB7K,QAAQC,IAAI,uBAE/D8J,WAAY,SAAoBvB,GACxBxM,KAAKgN,QACDhN,KAAKgN,OAAOgC,eAAeC,WAAazC,GAASxM,KAAKgN,OAAOkC,cAAc1C,GAC/ExM,KAAKgN,OAAO2B,aAEZ3O,KAAKgN,OAAS,IAAImC,GAAGC,OAAO,gBACxB5C,QAASA,EACT6C,KAAM,0BACNC,YAAa,EACbC,OAAQ,MACRC,MAAO,MACPC,YAAcC,SAAU,EAAGC,SAAU,GACrCC,QACIC,QAAW,aACXC,cAAiB,wBAgBnCC,GAAG,SAAS9S,EAAQU,EAAOJ,GACjC,aAEAI,EAAOJ,SACL+E,GAAI,uBAEJI,MACEsN,eAAgBC,KAAKC,MAAMrR,OAAOsR,YAAYH,gBAC9C/B,MAAO,GAGT7C,UACEsC,YAAa,WACX,OAAO1N,KAAKgQ,eAAevS,QAG7B2S,WAAY,WACV,OAAOpQ,KAAK0N,YAAc,IAI9BtJ,SACEiM,YAAa,SAAqBC,GAChC,OAASC,UAAW,eAA8B,IAAdvQ,KAAKiO,MAAe,OAE1DR,UAAW,WACTzN,KAAKiO,OAASjO,KAAKiO,MAAQ,GAAKjO,KAAK0N,oBAKrC8C,GAAG,SAASvT,EAAQU,EAAOJ,GACjC,aAEA,IAAIkT,GACHC,IAAK,EACLC,GAAI,GAGLhT,EAAOJ,SACN+E,GAAI,iBAEJI,MACCkO,UAAW,EACXC,aAAc,EACdC,eAAe,GAGhBxD,QAAS,WACRtN,KAAK6Q,aAAe7Q,KAAK+Q,MAAMC,SAASC,QAAQJ,cAGjDzF,UACC8F,YAAa,WACZ,IAAIC,EAAQnR,KAAK+Q,MAAM,aAAe/Q,KAAK4Q,WAC3C,OAAOO,EAAQA,EAAMC,UAAY,KAInChN,SACCiN,UAAW,SAAmBC,GAE7BtR,KAAK4Q,UAAYpQ,KAAK+Q,IAAIvR,KAAK6Q,aAAe,EAAGrQ,KAAKgR,IAAI,EAAGF,IAC7DtR,KAAK8Q,eAAgB,GAGtBW,aAAc,SAAsBC,EAAOJ,GAC1C,IAAIK,EAAMD,EAAME,QACZC,EAAMpB,EAAWkB,GAErB,QAAY1I,IAAR4I,EAAmB,CACtB,IAAIC,EAAUR,EAAaO,EAC3B7R,KAAKqR,UAAUS,GAEf,IAAIC,EAAc/R,KAAK+Q,MAAM,aAAee,GACxCC,GACHA,EAAYhH,UAKfiH,gBAAiB,WAChBhS,KAAK8Q,eAAiB9Q,KAAK8Q,sBAKxBmB,GAAG,SAAShV,EAAQU,EAAOJ,GACjC,aAEA,GAAI2D,SAASC,eAAe,iBAC1B,CAAA,IAAI4C,EAAQ,SAAemO,EAAMjP,GAC/B,MAAM,IAAI7F,MAAM,WAAa8U,EAAKnP,KAAO,OAASE,IAGhDkP,EAAYlV,EAAQ,gCAEX,IAAI8D,KACfuB,GAAI,iBAEJI,KAAM,WACJ,OACE0P,QAAS,GACTC,UAAU,EACVC,aACAC,aAAc,EACdC,sBACA5S,aAIJ0N,QAAS,WACPtN,KAAKJ,QAAUqQ,KAAKC,MAAMrR,OAAOsR,YAAYvQ,SAAS6S,IAAI,SAAUC,GAClE,OACEvN,GAAIuN,EAAOvN,GACX3F,QAAUrB,IAAKuU,EAAOvU,IAAKG,IAAKoU,EAAOpU,QAI3C0B,KAAKsS,UAAYrC,KAAKC,MAAMrR,OAAOsR,YAAYmC,WAC/CtS,KAAKuS,aAAezK,SAASjJ,OAAOsR,YAAYoC,eAAiB,EACjEvS,KAAK2S,SAGPvO,SACEwO,OAAQ,WACN,GAAI5S,KAAKoS,QAAS,CAChBpS,KAAKqS,UAAW,EAChB,IAAIQ,EAAM7S,KACVmS,EAAUpT,QAAQiB,KAAKoS,QAAS,SAAUpT,GACpCA,EACFmT,EAAUxS,iBAAiBX,EAAS6T,EAAIjT,QAAS,SAAUkT,GACzD,GAAIA,EAAe,CACjB,IAAI1T,EAAWyT,EAAIE,oBAAoBD,GACvCD,EAAIL,oBAAsBpT,QAE1B2E,EAAMoO,EAAUxS,iBAAkB,gEAAkEX,EAAU,OAIlH+E,EAAMoO,EAAUpT,QAAS,6CAA+CC,EAAU,YAItFgB,KAAKgT,SAITD,oBAAqB,SAA6BL,GAChD,IAAItT,EAAWY,KAAKsS,UAAUW,KAAK,SAAU7T,GAC3C,OAAOA,EAAS8T,WAAaR,EAAOvN,KAGtC,GAAI/F,EAAU,OAAOA,EAAc2E,EAAM/D,KAAK+S,oBAAqB,oDAAsDL,EAAOvN,GAAK,MAGvIwN,MAAO,WACL3S,KAAKoS,QAAU,GACfpS,KAAKwS,mBAAqBxS,KAAKsS,UAAUa,MAAM,EAAGnT,KAAKuS,cACvDvS,KAAKqS,UAAW,IAGpBvE,OACEsE,QAAS,SAAiBgB,GACpBpT,KAAKqS,WAAae,GACpBpT,KAAK2S,eAOZU,+BAA+B,IAAIC,IAAI,SAASrW,EAAQU,EAAOJ,GAClE,aAEA,IAAI8E,EAAapF,EAAQ,iBAEzBU,EAAOJ,SACH+E,GAAI,sBAEJI,KAAM,WACF,OACI9C,QAAS,KACT2T,cAAe,KACfC,eAAgB,KAChBC,eAAe,EACfC,UAAYC,OAAO,EAAOC,SAAU,QAI5CnQ,QAAS,WACLzD,KAAKuT,cAAgB1U,OAAOgV,wBAC5B7T,KAAKwT,eAAiBxT,KAAKuT,cAAc,GACzCvT,KAAKJ,QAAUf,OAAOiV,kBACtB9T,KAAKyT,eAAgB,GAGzBrP,SACI2P,qBAAsB,SAA8BC,GAChD,IAAIC,EAASjU,KAAKkU,gBAAgBF,GAClChU,KAAKwT,eAAiBS,EACtBjU,KAAKmU,WAAWH,GAChBhU,KAAKoU,kBAGTD,WAAY,SAAoBH,EAAUnW,GACtCmC,KAAKyT,eAAgB,EACrBzT,KAAK0D,MAAMC,IAAI,2CAA6CqQ,GAAUpQ,KAAK,SAAUC,GACjF7D,KAAKJ,QAAUiE,EAASC,KAAKlE,QAC7BI,KAAKyT,eAAgB,EACjB5V,GAAUA,EAASmC,KAAKJ,UAC7B,SAAUmE,GACTC,QAAQC,IAAIF,MAIpBqQ,eAAgB,WACZpU,KAAK0T,SAASC,OAAS3T,KAAK0T,SAASC,OAGzCO,gBAAiB,SAAyBF,GACtC,IAAK,IAAIlX,EAAI,EAAGA,EAAIkD,KAAKuT,cAAc9V,OAAQX,IAAK,CAChD,IAAIuX,EAAgBrU,KAAKuT,cAAczW,GACvC,GAAIuX,EAAclP,IAAM6O,EAAU,OAAOK,IAGjDC,YAAa,SAAqBC,GAC9B,OAAOA,EAAM,GAAK,IAAMA,EAAMA,IAItCnJ,UACIoJ,QAAS,SAAiBC,GACtB,MAAO,MAAQA,GAGnBC,QAAS,SAAiBD,GACtB,MAAO,MAAQA,GAGnBE,MAAO,SAAeF,GAClB,MAAO,MAAQA,IAIvBlS,YACIqS,OACIhM,SAAU,kBACVC,OAAQ,UAAW,UAAW,SAC9BuC,UACIyJ,cAAe,WACX,IAAIC,EAAe9U,KAAK2U,MAIxB,OAHIG,GAAgB,KAChBA,GAA8B,IAE3BtU,KAAKuU,MAA2C,GAApCD,EAAe9U,KAAK0U,QAAU,QAI7DrS,WAAcA,MAInBG,gBAAgB,KAAKwS,IAAI,SAAS/X,EAAQU,EAAOJ,GACpD,aAEA,IAAIkT,GACAC,IAAK,EACLC,GAAI,GAGRhT,EAAOJ,SACH+E,GAAI,wBAEJI,KAAM,WACF,OACIsG,MAAO,KACPiM,OAAQ,KACRC,SAAU,KACV5N,SACI6N,gBAAgB,EAChBC,cAAc,EACdC,cAAe,MAEnB3B,UACIC,OAAO,EACPC,SAAU,QAKtBnQ,QAAS,WACLzD,KAAKgJ,MAAQnK,OAAOyW,yBACpBtV,KAAKuV,UAAUvV,KAAKwV,cAGxBpR,SACImR,UAAW,SAAmB1X,GAC1BmC,KAAKiV,OAASjV,KAAKgJ,MAAMyM,cACzBzV,KAAKsH,QAAQ+N,cAAgBrV,KAAKiV,OAAO,GACrCpX,GAAUA,EAASmC,KAAKsH,QAAQ+N,cAAclQ,GAAI,EAAGnF,KAAKgJ,MAAMuJ,eAGxEiD,YAAa,SAAqBE,EAASC,EAAMC,EAAMC,EAAQhY,GAC3D,IAAIiY,EAAU,uCAA8CJ,EAAU,aAAe1V,KAAKgJ,MAAM+M,SAE5FJ,IAAMG,EAAUA,EAAU,SAAgBH,GAC1CC,IAAME,EAAUA,EAAU,SAAgBF,GAE9C5V,KAAK0D,MAAMC,IAAImS,GAASlS,KAAK,SAAUC,GACnC,IAAK7D,KAAKkV,UAAYW,EAClB7V,KAAKkV,SAAWrR,EAASC,KAAKoR,SAC9BlV,KAAKsH,QAAQ8N,aAAevR,EAASC,KAAKsR,aAC1CpV,KAAKsH,QAAQ6N,gBAAiB,EAC9BtW,OAAOmX,aAAaC,wBAAyB,MAC1C,CACH,IAAIC,EAAmBrS,EAASC,KAAKoR,SACrClV,KAAKsH,QAAQ8N,aAAevR,EAASC,KAAKsR,aACtCvX,GAAUA,EAASqY,KAE5B,SAAUnS,GACTC,QAAQC,IAAIF,MAIpBoS,iBAAkB,SAA0BT,GACxC,IAAIC,EAAO3V,KAAKkV,SAASzX,OACzBuC,KAAKwV,YAAYE,EAASC,EAAM3V,KAAKgJ,MAAMoN,eAAe,EAAOpW,KAAKqW,sBAG1EC,YAAa,SAAqBZ,GAC1B1V,KAAKsH,QAAQ+N,cAAclQ,IAAMuQ,IACjC1V,KAAKsH,QAAQ+N,cAAgBrV,KAAKuW,aAAab,GAC/C1V,KAAKsH,QAAQ+N,cAAcnN,KAAOwN,EAClC1V,KAAKwV,YAAYxV,KAAKsH,QAAQ+N,cAAclQ,GAAI,EAAGnF,KAAKgJ,MAAMuJ,cAAc,KAIpF8D,oBAAqB,SAA6BH,GAC9C,IAAK,IAAIpZ,EAAI,EAAGA,EAAIoZ,EAAiBzY,OAAQX,IACzCkD,KAAKkV,SAASsB,KAAKN,EAAiBpZ,KAI5CsX,eAAgB,WACZpU,KAAK0T,SAASC,OAAS3T,KAAK0T,SAASC,OAGzC4C,aAAc,SAAsBb,GAChC,IAAK,IAAI5Y,EAAI,EAAGA,EAAIkD,KAAKiV,OAAOxX,OAAQX,IAAK,CACzC,IAAI2Z,EAAQzW,KAAKiV,OAAOnY,GACxB,GAAI2Z,EAAMtR,IAAMuQ,EAAS,OAAOe,IAIxCC,cAAe,SAAuBC,GAClC,OAAOA,EAAiB,SAAW,SAGvClF,aAAc,SAAsBC,EAAOkF,GACvC,IAAIjF,EAAMD,EAAME,QACZC,EAAMpB,EAAWkB,GAErB,QAAY1I,IAAR4I,EAAmB,CACnB,IAAIC,EAAU8E,EAAW/E,EACrBgF,EAAU7W,KAAKiV,OAAOnD,GACtBC,EAAc/R,KAAK+Q,MAAM+F,UAAUhF,GAEnC+E,GAAW9E,IACX/R,KAAKsW,YAAYO,EAAQ1R,IACzB4M,EAAYhH,YAM5BxI,YACIwU,gBACInO,SAAU,yBACVC,OAAQ,KAAM,WAAY,WAAY,MAAO,QAAS,OAAQ,aAAc,SAAU,oBAAqB,WAAY,OAAQ,QAAS,gBAAiB,yBAK/JmO,IAAI,SAAS/Z,EAAQU,EAAOJ,GAClC,aAEAI,EAAOJ,SACH+E,GAAI,0BAEJI,KAAM,WACF,OACIsG,MAAO,KACPiO,oBACAC,eACAC,YACAzD,UAAYC,OAAO,EAAOC,SAAU,MACpCwD,iBAAiB,EACjBC,YAAY,IAIpB5T,QAAS,WACLzD,KAAKgJ,MAAQnK,OAAOyY,2BACpBtX,KAAKuX,oBAAoBvX,KAAKwX,iBAGlCpT,SACIqT,SAAU,WACNzX,KAAKkX,YAAcjH,KAAKC,MAAMD,KAAKyH,UAAU1X,KAAKmX,WAClDnX,KAAKqX,YAAa,EAClBrX,KAAKoX,iBAAkB,GAG3BG,oBAAqB,SAA6B1Z,GAC9CmC,KAAKiX,iBAAmBjX,KAAKgJ,MAAMiO,iBACnCjX,KAAK0T,SAASE,SAAW5T,KAAKiX,iBAAiB,GAC3CpZ,GAAUA,EAASmC,KAAK0T,SAASE,SAASzO,GAAI,EAAGnF,KAAKgJ,MAAMuJ,aAAcvS,KAAK2X,kBAAkB,IAGzGH,eAAgB,SAAwBI,EAAiBjC,EAAMC,EAAM/X,EAAUuW,GAC3E,IAAIyD,EAAa7X,KAAK8X,gBAAgBF,EAAiBjC,EAAMC,GAE7D5V,KAAK0D,MAAMC,IAAIkU,GAAYjU,KAAK,SAAUC,GACtC7D,KAAKoX,gBAAkBvT,EAASC,KAAKsT,gBACrC,IAAIW,EAAmBlU,EAASC,KAAKkU,mBAAmB/D,OAAO,SAAUgE,GACrE,MAAiB,wCAAVA,EAAIhQ,KAEfpK,EAASka,GACL3D,GAAgBpU,KAAKoU,iBACzBvV,OAAOmX,aAAakC,mBAAoB,GACzC,SAAUnU,GACTC,QAAQC,IAAIF,MAIpBoU,sBAAuB,SAA+BC,GAClDpY,KAAKqX,YAAa,EACbrX,KAAK0T,SAASE,UAAY5T,KAAK0T,SAASE,SAASzO,IAAMiT,IACxDpY,KAAK0T,SAASE,SAAW5T,KAAKqY,uBAAuBD,GACrDpY,KAAKwX,eAAexX,KAAK0T,SAASE,SAASzO,GAAI,EAAGnF,KAAKgJ,MAAMuJ,aAAcvS,KAAK2X,kBAAkB,KAI1GG,gBAAiB,SAAyBF,EAAiBjC,EAAMC,GAC7D,IAAIiC,EAAa,mDAAqDD,EAKtE,OAJIjC,IAAMkC,GAAc,SAAWlC,GAC/BC,IAAMiC,GAAc,SAAWjC,GAC/B5V,KAAKgJ,MAAM+M,WAAU8B,GAAc,aAAe7X,KAAKgJ,MAAM+M,UAC7D/V,KAAKiX,mBAAkBY,GAAc,wBAA0B7X,KAAKiX,iBAAiBxZ,QAClFoa,GAGXS,oBAAqB,WACZtY,KAAKqX,aACNrX,KAAKmX,SAAWlH,KAAKC,MAAMD,KAAKyH,UAAU1X,KAAKkX,cAC/ClX,KAAKqX,YAAa,GAEtB,IAAIkB,EAAqBvY,KAAKkX,YAAYzZ,OAC1CuC,KAAKwX,eAAexX,KAAK0T,SAASE,SAASzO,GAAIoT,EAAoBvY,KAAKgJ,MAAMoN,cAAepW,KAAKwY,gBAAgB,IAGtHb,iBAAkB,SAA0BI,GACxC/X,KAAKkX,YAAca,GAGvBS,eAAgB,SAAwBT,GACpC/X,KAAKkX,YAAYuB,UAAUV,IAG/B3D,eAAgB,WACZpU,KAAK0T,SAASC,OAAS3T,KAAK0T,SAASC,OAGzC0E,uBAAwB,SAAgCK,GACpD,IAAK,IAAI5b,EAAI,EAAGA,EAAIkD,KAAKiX,iBAAiBxZ,OAAQX,IAAK,CACnD,IAAIyR,EAAQvO,KAAKiX,iBAAiBna,GAClC,GAAIyR,EAAMpJ,IAAMuT,EAAS,OAAOnK,WAM1CoK,IAAI,SAAS1b,EAAQU,EAAOJ,GAClC,aAEAI,EAAOJ,SACLqL,SAAU,oGACVlG,KAAM,WACJ,OACEkW,eAAgB,IAAIC,OAGxBhQ,OAAQ,UAAW,UAAW,QAAS,QACvCpF,QAAS,WACPzD,KAAK4Y,eAAiB,IAAIC,KAC1B7Y,KAAK4Y,eAAeE,SAAS9Y,KAAK2U,OAClC3U,KAAK4Y,eAAeG,WAAW/Y,KAAK0U,SACpC1U,KAAK4Y,eAAeI,WAAWhZ,KAAKwU,SAEpC,IAAIyE,EAAQ,WACVjZ,KAAKkZ,aAEL3L,YAAYvN,KAAKkZ,WAAY,MAC7BC,KAAKnZ,MAGPqF,WAAW4T,EAA6B,KAArB,GAAKjZ,KAAKwU,WAE/BpJ,UACEgO,OAAQ,WAGN,OAFYpZ,KAAKsU,YAAYtU,KAAK4Y,eAAeS,YAElC,IADDrZ,KAAKsU,YAAYtU,KAAK4Y,eAAeU,eAGrDC,aAAc,WACZ,MAAqB,SAAdvZ,KAAKwZ,KAAkB,SAAW,OAG7CpV,SACEkQ,YAAa,SAAqBC,GAChC,OAAOA,EAAM,GAAK,IAAMA,EAAMA,GAEhC2E,WAAY,WACVlZ,KAAK4Y,eAAeG,WAAW/Y,KAAK4Y,eAAeU,aAAe,GAClEtZ,KAAK4Y,eAAiB,IAAIC,KAAK7Y,KAAK4Y,eAAea,UAAWzZ,KAAK4Y,eAAec,WAAY1Z,KAAK4Y,eAAee,UAAW3Z,KAAK4Y,eAAeS,WAAYrZ,KAAK4Y,eAAeU,aAAc,WAK/LM,IAAI,SAAS3c,EAAQU,EAAOJ,GAClC,aAEA,IAAI4U,GACF0H,eAAgB,cAEhBC,cAAe,WACb,IAAIC,EAASjS,SAASkS,EAAEnb,QAAQ0Q,SAAW,GACvCnQ,EAAW0I,SAASkS,EAAEha,KAAK6Z,gBAAgBE,SAASE,KASxD,OAPAD,EAAE,cAAcE,SACdC,UAAW/a,EAAW2a,GACrB,OAAQ,WACUC,EAAE,8BACRjP,QAAQqP,KAAK,YAAa,KAGlChb,EAAW2a,GAGpBM,SAAU,SAAkBjb,GAC1B4a,EAAE,cAAcE,SACdC,UAAW/a,GACV,UAIPzB,EAAOJ,SACL+E,GAAI,uBAEJI,KAAM,WACJ,OACEsG,SACA9J,WACAoI,SACEgT,wBAAyB,EACzBC,kBAAkB,EAClBC,kBAAmB,EACnBC,WAAW,EACXjH,kBACAkH,aAAc,EACdC,WAAY,MAEdC,WACEC,YAAa,yBACbC,kBAAmB,wCACnBC,qBAAsB,2CACtBC,SAAU,WAKhBvX,QAAS,WACPzD,KAAKgJ,MAAQnK,OAAOoc,uBACpBjb,KAAKd,QAAUc,KAAKgJ,MAAMkS,eAAiBlb,KAAKgJ,MAAMkS,cAAcC,MAAQnb,KAAKgJ,MAAMkS,cAAcC,SACrGnb,KAAKsH,QAAQgT,wBAA0Bta,KAAKd,QAAUc,KAAKd,QAAQzB,OAAS,EAC5EuC,KAAKsH,QAAQkM,eAAiBxT,KAAKgJ,MAAMoS,QAAQ,GACjDpb,KAAKqb,WAAWrb,KAAKgJ,MAAMkS,eAE3B,IAAIrI,EAAM7S,KACVnB,OAAOwG,WAAW,WAGhB,GAAIxG,OAAOO,SAASwT,OAAO0I,QAAQzI,EAAI+H,UAAUI,WAAa,EAAG,CAC/D,IACIO,EADc1c,OAAO2c,iBACD3I,EAAI+H,UAAUI,UAClCO,GAAmB,KAAVA,GACXpJ,EAAU2H,kBAGb,MAGL2B,QAAS,WAEP,IAAIC,EAAkB1b,KAAK+Q,MAAM4K,gBAAkB3b,KAAK+Q,MAAM4K,gBAAgB3b,KAAKsH,QAAQkT,wBAAqBvR,EAC5G2S,OAAsC3S,IAApByS,EAAgCA,EAAgBG,gBAAa5S,OAC3DA,IAApB2S,GACFA,EAAgB7Q,SAIpB3G,SACE0X,cAAe,SAAuB7C,EAAOrD,EAAM/X,GACjD,IAAIiY,EAAU9V,KAAK+b,aAAa9C,EAAOrD,GACnC/C,EAAM7S,KACVA,KAAK0D,MAAMC,IAAImS,GAASlS,KAAK,SAAUC,GACrC,IAAI3E,EAAU2E,EAASC,KAAK5E,QAC5B2T,EAAIwI,WAAWnc,GACfrB,EAASqB,GAETgC,SAAS+E,qBAAqB,SAAS,GAAG+V,UAAYnY,EAASC,KAAKmY,UACnE,WACDjY,QAAQC,IAAIF,UAIhBmY,kBAAmB,SAA2BC,GAC5Cnc,KAAKsH,QAAQmT,WAAY,EACzBza,KAAKsH,QAAQkM,eAAiB2I,EAI9B,IAAItJ,EAAM7S,KACVA,KAAK8b,cAAc,EAAG9b,KAAKgJ,MAAMoT,oBAAqB,SAAUld,GAC1DA,GAAWA,EAAQic,OACrBtI,EAAI3T,QAAUA,EAAQic,MACtBtI,EAAIvL,QAAQgT,wBAA0BzH,EAAI3T,QAAQzB,SAElDoV,EAAI3T,WACJ2T,EAAIvL,QAAQgT,wBAA0B,GAGxCzH,EAAIvL,QAAQmT,WAAY,EACpB5H,EAAIvL,QAAQ+U,qBACdxJ,EAAIvL,QAAQ+U,oBAAqB,MAMvCC,cAAe,WACb,IAAIzJ,EAAM7S,KAEV6S,EAAI0I,MAAQvb,KAAKsH,QAAQqT,WACzB9H,EAAIvL,QAAQmT,WAAY,EACxB5H,EAAI7J,MAAMuT,YAAcvc,KAAKsH,QAAQqT,WAErC3a,KAAK8b,cAAc,EAAG9b,KAAKgJ,MAAMoT,oBAAqB,SAAUld,GAC1DA,GAAWA,EAAQic,OACrBtI,EAAI3T,QAAUA,EAAQic,MACtBtI,EAAIvL,QAAQgT,wBAA0BzH,EAAI3T,QAAQzB,SAElDoV,EAAI3T,WACJ2T,EAAIvL,QAAQgT,wBAA0B,MAO5CkC,wBAAyB,SAAiCC,GAC5C,SAARA,GACFzc,KAAKgJ,MAAMuT,YAAc,GACzBvc,KAAKkc,kBAAkBlc,KAAKsH,QAAQkM,eAAe2I,cAClC,UAARM,GACTzc,KAAKkc,mBAAoBC,YAAa,MAAOpZ,KAAM,SAIvD2Z,2BAA4B,WAC1B,IAAI7J,EAAM7S,KACVA,KAAK8b,cAAc9b,KAAKsH,QAAQgT,wBAA0B,EAAGta,KAAKgJ,MAAM2T,UAAUvG,cAAe,SAAUlX,GACrGA,GAAWA,EAAQic,QACrBtI,EAAIvL,QAAQkT,kBAAoB3H,EAAI3T,QAAQzB,OAC5CoV,EAAI3T,QAAQuZ,UAAUvZ,EAAQic,OAC9BtI,EAAIvL,QAAQgT,yBAA2Bpb,EAAQic,MAAM1d,WAK3Dmf,2BAA4B,SAAoCC,GAC9D,IAAIhK,EAAM7S,KACV6S,EAAI7J,MAAMuT,YAAcM,EACxB7c,KAAK8b,cAAc,EAAG9b,KAAKgJ,MAAMoT,oBAAqB,SAAUld,GAC1DA,GAAWA,EAAQic,OACrBtI,EAAI3T,QAAUA,EAAQic,MACtBtI,EAAIvL,QAAQgT,wBAA0BzH,EAAI3T,QAAQzB,SAElDoV,EAAI3T,WACJ2T,EAAIvL,QAAQgT,wBAA0B,MAO5CyB,aAAc,SAAsB9C,EAAOrD,GACzC,OAAO5V,KAAK4a,UAAUC,YAAc,UAAYiC,mBAAmB9c,KAAKub,OAAS,gBAAkBvb,KAAKmc,YAAc,mBAAqBnc,KAAK+c,eAAiB,UAAY9D,EAAQ,SAAWrD,GAGlMyF,WAAY,SAAoBnc,GAC9Bc,KAAKsH,QAAQoT,aAAexb,EAAQwb,aAAe,EAAIxb,EAAQwb,aAAe,EAExExb,EAAQyb,WACZ3a,KAAKsH,QAAQqT,WAAazb,EAAQyb,WAElC3a,KAAKsH,QAAQqT,WAAa,KAG5B3a,KAAKsH,QAAQiT,iBAAmBrb,EAAQqb,iBAAmB,EAAIrb,EAAQqb,iBAAmB,IAI9FnP,UACEmQ,MAAO,WACL,OAAOvb,KAAKgJ,MAAMuT,aAGpBS,WAAY,WACV,OAAOhd,KAAKgJ,MAAMuT,aAA0C,KAA3Bvc,KAAKgJ,MAAMuT,aAAsBvc,KAAKsH,QAAQkM,gBAA8D,QAA5CxT,KAAKsH,QAAQkM,eAAe2I,aAG/Hc,mBAAoB,WAClB,OAAIjd,KAAKd,QACAc,KAAKgJ,MAAM2T,UAAUO,kBAAkBte,OAAOoB,KAAKsH,QAAQoT,cAE3D1a,KAAKgJ,MAAM2T,UAAUQ,gBAIhCC,kBAAmB,WACjB,OAAOpd,KAAKsH,QAAQmT,UAAY,SAAW,WAG7C0B,YAAa,WACX,OAAInc,KAAKsH,QAAQkM,gBAA8D,QAA5CxT,KAAKsH,QAAQkM,eAAe2I,YACtDnc,KAAKsH,QAAQkM,eAAe2I,YAE9B,IAGTY,eAAgB,WACd,OAAI/c,KAAKgJ,MAAM2T,UAAUU,oBAChBrd,KAAKgJ,MAAM2T,UAAUU,oBAMvB,KAIX9a,YACE+a,oBACE1U,SAAU,+BACV2U,QAASC,aAAaC,QACtB5U,OAAQ,kBAAmB,YAAa,gBAAiB,kBAAmB,eAC5EpF,QAAS,WACPzD,KAAKgJ,MAAQnK,OAAOoc,wBAEtBvY,KAAM,WACJ,OACEsG,SACAmE,IAAK,4BACLuQ,MAAO7e,OAAOoc,uBAAuB0B,UAAUgB,eAAiB,EAChEC,SAAU,EACVC,eAAgB,OAChBvW,SACE+U,oBAAoB,EACpB7I,gBACEzQ,KAAM,QAGV+a,UAAW,GACXC,aAAc,IAGlB3S,UACEjM,OAAQ,WACN,OAAIa,KAAKub,MAAM9d,QAAUuC,KAAK4d,WAAa5d,KAAKge,QAC1Che,KAAKie,SACAje,KAAKke,gBAAgBC,QAAQ,SAAUne,KAAKmb,MAAM1d,QAElDuC,KAAKoe,YAGPpe,KAAKqe,cAAcF,QAAQ,SAAUne,KAAK4d,WAGrDU,aAAc,WACZ,IAAIC,EAAcve,KAAKmb,MAAMnb,KAAKwe,SAClC,OAAOD,EAAcA,EAAYE,MAAQ,KAG7Cra,SACEsa,MAAO,SAAeC,GACpB9f,OAAOO,SAASoF,KAAOma,EAAKC,KAE9BhM,OAAQ,WACa,KAAf5S,KAAKub,QACPvb,KAAK6e,MAAM,iBAAkB7e,KAAKub,OAClCvb,KAAK8e,mBAGTC,WAAY,WACN/e,KAAKwe,SAAW,GAAKxe,KAAKie,SAC5Bpf,OAAOO,SAASoF,KAAOxE,KAAKmb,MAAMnb,KAAKwe,SAASI,IACxB,KAAf5e,KAAKub,QACdvb,KAAK6e,MAAM,iBAAkB7e,KAAKub,OAClCvb,KAAK8e,mBAGTE,aAAc,SAAsB7C,GAClC,IAAK,IAAIrf,EAAI,EAAGA,EAAIkD,KAAKgJ,MAAMoS,QAAQ3d,OAAQX,IAAK,CACrCkD,KAAKgJ,MAAMoS,QAAQte,GACrBqf,cAAgBA,IACzBnc,KAAKsH,QAAQkM,eAAiBxT,KAAKgJ,MAAMoS,QAAQte,MAIvDmiB,YAAa,SAAqB9C,GAChCnc,KAAKgf,aAAa7C,GAClBnc,KAAKsH,QAAQ+U,oBAAqB,EAClCrc,KAAK6e,MAAM,kBAAmB7e,KAAKsH,QAAQkM,iBAE7C0L,UAAW,WACTlf,KAAK+d,YAAc/d,KAAKwe,SACF,IAAlBxe,KAAKwe,UACPxe,KAAK8d,UAAY9d,KAAKub,QAG1B4D,SAAU,YACc,IAAlBnf,KAAKwe,QACPxe,KAAKub,MAAQvb,KAAKse,aAElBte,KAAKub,MAAQvb,KAAK8d,WAGtBsB,aAAc,YACU,IAAlBpf,KAAKwe,SACPxe,KAAKqf,UAGTC,SAAU,WACRtf,KAAKkf,YACLlf,KAAKuf,KACLvf,KAAKmf,YAEPK,WAAY,WACVxf,KAAKkf,YACLlf,KAAKyf,OACLzf,KAAKmf,YAEPO,YAAa,WACX1f,KAAK2S,QACL3S,KAAKwe,SAAW,EAChBxe,KAAK+d,aAAe,EACpB/d,KAAK8d,UAAY,IAEnBgB,eAAgB,WACd9e,KAAKmb,SACLnb,KAAKwe,SAAW,EAChBxe,KAAK+d,aAAe,EACpB/d,KAAK8d,UAAY,aAOrB6B,IAAI,SAAS1iB,EAAQU,EAAOJ,GAClC,aAEA,GAAI2D,SAASC,eAAe,oBAAqB,CAEhD,IAAIye,GACHhN,OAAQ,SAAgBiN,EAAQjK,EAAMkK,GACrC,IAAIC,EAAYF,EAAU,UAAYC,EAAO,GAAKlK,EAAO,SAAWA,EACpE,OAAO7U,IAAIgH,KAAKC,KAAK+X,GAAWnc,KAAK,SAAUC,GAE9C,OAAuB,KAAnBA,EAAS1E,OACL0E,EAASC,MAEhBE,QAAQC,IAAI,yCACL+b,iBAEN,SAAUjc,GACZC,QAAQC,IAAIF,OAKXkc,GACHC,eAAgBC,kBAAkBC,mBAClCC,mBAAoBF,kBAAkBG,oBAAsB,EAC5DC,uBAAwBJ,kBAAkBK,uBAC1CC,qBAAsBN,kBAAkBO,qBACxCC,aAAcR,kBAAkBS,aAChCC,gBAAiBV,kBAAkBW,gBACnCC,WAAYZ,kBAAkBa,yBAA2B,GACzDC,aAAcd,kBAAkBe,cAAgB,YAChDC,aAAchB,kBAAkBiB,wBAChCC,mBAAoB,GAGflP,GACL0H,eAAgB,0BAChByH,gBAAiB,oBACjBC,wBAAyB,6BACzBC,oBAAqB,aAAc,QAAS,WAAY,OAAQ,QAChEC,cAAe,aAAc,WAAY,OAAQ,OAAQ,QAAS,QAClEC,aAAc,aAAc,QAAS,WAAY,OAAQ,QACzD1B,gBACC2B,aAAc,EACdC,YAEDC,aACC3iB,WACA4iB,YAAa,EACbrH,WAAW,EACXqF,KAAMiC,iBAAiBC,MAAQ,EAC/BC,aAAcF,iBAAiBG,cAAgB,EAC/CtM,KAAMmM,iBAAiBI,MAAQ,GAC/BC,aAAcL,iBAAiBK,cAAgB,GAC/CC,cAAe,GACfC,eAAgB,EAChBC,kBAAmBR,iBAAiBS,kBACpCC,gBAAiBV,iBAAiBW,gBAClCC,aAAcZ,iBAAiBa,aAC/BC,YAAad,iBAAiBe,YAC9BC,YAAahB,iBAAiBiB,YAC9BC,4BAA8BC,SAAU,GAAIhb,KAAM,IAClDib,0BAA4BD,SAAU,GAAIhb,KAAM,IAChDkb,wBAA0BF,SAAU,GAAIhb,KAAM,IAC9Cmb,qBAAuBH,SAAU,GAAIhb,KAAM,IAC3Cob,oBAAsBJ,SAAU,GAAIhb,KAAM,IAC1Cqb,oBAAsBL,SAAU,GAAIhb,KAAM,IAC1Csb,wBAAyB,IAE1BC,eACCvkB,QAAS6iB,iBAAiB2B,qBAAqB9B,YAC/CE,YAAaC,iBAAiB2B,qBAAqBC,aAAe,EAClEC,oBAAqB7B,iBAAiB2B,qBAAqBG,qBAAuB,EAClFC,gBAAiB/B,iBAAiB2B,qBAAqBK,oBACvDtJ,UAAWsH,iBAAiBiC,YAAa,EACzClE,KAAMiC,iBAAiBC,MAAQ,EAC/BpM,KAAMmM,iBAAiBI,MAAQ,GAC/BF,aAAcF,iBAAiBG,aAC/BE,aAAcL,iBAAiBkC,cAAgB,GAC/C5B,cAAeN,iBAAiBmC,eAAiB,GACjD5B,eAAgBP,iBAAiBoC,QAAU,EAC3C5B,kBAAmBR,iBAAiBS,kBACpCC,gBAAiBV,iBAAiBW,gBAClCC,aAAcZ,iBAAiBa,aAC/BC,YAAad,iBAAiBe,YAC9BC,YAAahB,iBAAiBiB,YAC9BC,2BAA8BlB,iBAAiBqC,mBAAqBrC,iBAAiBqC,oBACpFlc,KAAM,GACNgb,SAAU,IAEXC,yBAA0BpB,iBAAiBS,kBAAkBvP,KAAK,SAAU0L,GAC3E,OAAOA,EAAK0F,aAEZnc,KAAM,GACNgb,SAAU,IAEXE,uBAAwBrB,iBAAiBW,gBAAgBzP,KAAK,SAAU0L,GACvE,OAAOA,EAAK0F,aAEZnc,KAAM,GACNgb,SAAU,IAEXG,oBAAqBtB,iBAAiBa,aAAa3P,KAAK,SAAU0L,GACjE,OAAOA,EAAK0F,aAEZnc,KAAM,GACNgb,SAAU,IAEXI,mBAAoBvB,iBAAiBe,YAAY7P,KAAK,SAAU0L,GAC/D,OAAOA,EAAK0F,aAEZnc,KAAM,GACNgb,SAAU,IAEXK,mBAAoBxB,iBAAiBiB,YAAY/P,KAAK,SAAU0L,GAC/D,OAAOA,EAAK0F,aAEZnc,KAAM,GACNgb,SAAU,IAEXM,wBAAyBzB,iBAAiBuC,mBAAqB,IAEhEC,uBAAwB,SAAgCpf,GACvDqf,YAAc,IAAMrf,EACpB6U,EAAEwK,aAAapR,IAAI,KAEpBqR,oBAAqB,WACpB,OAAO3c,SAASkS,EAAEha,KAAKshB,iBAAiBvH,SAASE,MAElDyK,4BAA6B,WAC5B,OAAO5c,SAASkS,EAAEha,KAAKuhB,yBAAyBxH,SAASE,MAE1D0K,UAAW,SAAmBhmB,GAC7B,IAAIimB,EAAejmB,EAEnB,OAA2B,GAAvBimB,EAAannB,WAIjBmnB,EAAeA,EAAaC,OAAO,IAETC,MAAM,KAEXrS,IAAI,SAAUsS,GAClC,IAAIC,EAAQD,EAASD,MAAM,KAC3B,OACCnT,IAAKqT,EAAM,GACXC,MAAOD,EAAM,OAMhBE,gBAAiB,SAAyBC,GACzC,IAIIC,EAAe,IAJFD,EAAW1S,IAAI,SAAU4S,GACzC,OAAOA,EAAM1T,IAAM,IAAM0T,EAAMJ,QAGIK,KAAK,KAEzC,OAAOzmB,OAAOO,SAASmmB,SAAWH,GAEnCI,gBAAiB,SAAyB7T,EAAKsT,EAAOtmB,GACrD,IAAI8mB,EAASzlB,KAAK2kB,UAAUhmB,GAExB+mB,EAAgBD,EAAOxR,OAAO,SAAUoR,GAC3C,OAAOA,EAAM1T,MAAQA,IAGlBgU,EAAmBF,EAAOxR,OAAO,SAAUoR,GAC9C,OAAOA,EAAM1T,MAAQA,IAGlBiU,EAAeF,EAAc,QAEEzc,IAAjB2c,EAGjBA,EAAaX,MAAQA,EAErBW,GACCjU,IAAKA,EACLsT,MAAOA,GAIT,IAAIY,EAAYF,EAIhB,YAFa1c,GAATgc,GAAoBY,EAAUrP,KAAKoP,GAEhC5lB,KAAKklB,gBAAgBW,IAE7B/L,cAAe,WACd,IAAIC,EAASjS,SAASkS,EAAEnb,QAAQ0Q,SAAW,GAEvCnQ,EAAW0I,SAASkS,EAAEha,KAAK6Z,gBAAgBE,SAASE,KAQxD,OAPAD,EAAE,cAAcE,SACfC,UAAW/a,EAAW2a,GACpB,OAAQ,WACSC,EAAE,8BACRjP,QAAQqP,KAAK,YAAa,KAGjChb,EAAW2a,GAEnBM,SAAU,SAAkBjb,GAC3B4a,EAAE,cAAcE,SACfC,UAAW/a,GACT,SAEJwT,OAAQ,SAAgBiN,EAAQC,EAAMlK,EAAMqM,EAAcG,EAAchQ,EAAS0T,EAAWC,EAAY3mB,EAAU4mB,EAAYC,EAAOxJ,EAAMyJ,GAC1I,OAAOnlB,IAAIgH,KAAKC,KAAK6X,GACpBsG,MAAOrG,EAAO,GAAKlK,EACnBuM,KAAMvM,EACNwQ,cAAenE,EAAe,GAAKG,EACnC6B,aAAc7B,EACdiE,QAASjU,EACTkU,UAAWR,EACXS,WAAYR,EACZS,SAAUpnB,EACVqnB,WAAYT,EACZU,MAAOT,EACPU,KAAMlK,EACNmK,aAAcV,IACZtiB,KAAK,SAAUC,GAEjB,OAAuB,KAAnBA,EAAS1E,OACL0E,EAASC,MAEhBE,QAAQC,IAAI,yCACL+b,iBAEN,SAAUjc,GACZC,QAAQC,IAAIF,OAMfhD,IAAIC,IAAIC,aAER,IAAI0L,EAAQ,IAAIX,KAAKC,OAEpBC,OACChN,QAASiT,EAAUsR,cAAcvkB,QACjC4iB,YAAa3P,EAAUsR,cAAc3B,YACrCrH,UAAWtI,EAAUsR,cAAchJ,UACnCqF,KAAM3N,EAAUsR,cAAc3D,KAC9BlK,KAAMzD,EAAUsR,cAAc7N,KAC9BqM,aAAc9P,EAAUsR,cAAcxB,aACtCG,aAAcjQ,EAAUsR,cAAcrB,aACtCC,cAAelQ,EAAUsR,cAAcpB,cACvCC,eAAgBnQ,EAAUsR,cAAcnB,eACxCC,kBAAmBpQ,EAAUsR,cAAclB,kBAC3CE,gBAAiBtQ,EAAUsR,cAAchB,gBACzCE,aAAcxQ,EAAUsR,cAAcd,aACtCE,YAAa1Q,EAAUsR,cAAcZ,YACrCE,YAAa5Q,EAAUsR,cAAcV,YACrCE,2BAA4B9Q,EAAUsR,cAAcR,2BACpDE,yBAA0BhR,EAAUsR,cAAcN,yBAClDC,uBAAwBjR,EAAUsR,cAAcL,uBAChDC,oBAAqBlR,EAAUsR,cAAcJ,oBAC7CC,mBAAoBnR,EAAUsR,cAAcH,mBAC5CC,mBAAoBpR,EAAUsR,cAAcF,mBAC5CC,wBAAyBrR,EAAUsR,cAAcD,wBACjDI,oBAAqBzR,EAAUsR,cAAcG,oBAC7CE,gBAAiB3R,EAAUsR,cAAcK,iBAG1C+C,SACCrD,wBAAyB,SAAiCtX,GACzD,OAAOA,EAAMsX,yBAEdtkB,QAAS,SAAiBgN,GACzB,OAAOA,EAAMhN,SAEd4iB,YAAa,SAAqB5V,GACjC,OAAOA,EAAM4V,aAEd8B,oBAAqB,SAA6B1X,GACjD,OAAOA,EAAM0X,qBAEdE,gBAAiB,SAAyB5X,GACzC,OAAOA,EAAM4X,iBAEdrJ,UAAW,SAAmBvO,GAC7B,OAAOA,EAAMuO,WAEd2H,aAAc,SAAsBlW,GACnC,OAAOA,EAAMkW,cAEdH,aAAc,SAAsB/V,GACnC,OAAOA,EAAM+V,cAEdnC,KAAM,SAAc5T,GACnB,OAAOA,EAAM4T,MAEdlK,KAAM,SAAc1J,GACnB,OAAOA,EAAM0J,MAEdyM,cAAe,SAAuBnW,GACrC,OAAOA,EAAMmW,eAEdC,eAAgB,SAAwBpW,GACvC,OAAOA,EAAMoW,gBAEdC,kBAAmB,SAA2BrW,GAC7C,OAAOA,EAAMqW,mBAEdE,gBAAiB,SAAyBvW,GACzC,OAAOA,EAAMuW,iBAEdE,aAAc,SAAsBzW,GACnC,OAAOA,EAAMyW,cAEdE,YAAa,SAAqB3W,GACjC,OAAOA,EAAM2W,aAEdE,YAAa,SAAqB7W,GACjC,OAAOA,EAAM6W,aAEdE,2BAA4B,SAAoC/W,GAC/D,OAAOA,EAAM+W,4BAEdE,yBAA0B,SAAkCjX,GAC3D,OAAOA,EAAMiX,0BAEdC,uBAAwB,SAAgClX,GACvD,OAAOA,EAAMkX,wBAEdC,oBAAqB,SAA6BnX,GACjD,OAAOA,EAAMmX,qBAEdC,mBAAoB,SAA4BpX,GAC/C,OAAOA,EAAMoX,oBAEdC,mBAAoB,SAA4BrX,GAC/C,OAAOA,EAAMqX,qBAIflX,WACCya,8BAA+B,SAAuC5a,EAAO6a,GAC5E7a,EAAMsX,wBAA0BuD,GAEjCC,WAAY,SAAoB9a,GAC/B,IAAI+a,EAAW9U,EAAU0P,YACzB,IAAK,IAAIlQ,KAAOsV,EACf/a,EAAMyF,GAAOsV,EAAStV,GAEvBQ,EAAUoS,uBAAuB,oBACjCpS,EAAUoS,uBAAuB,kBACjCpS,EAAUoS,uBAAuB,cACjCpS,EAAUoS,uBAAuB,sBAElC2C,+BAAgC,SAAwChb,EAAO+H,GAC9E/H,EAAMiX,yBAA2BlP,GAElCkT,6BAA8B,SAAsCjb,EAAO+H,GAC1E/H,EAAMkX,uBAAyBnP,GAEhCmT,0BAA2B,SAAmClb,EAAO+H,GACpE/H,EAAMmX,oBAAsBpP,GAE7BoT,yBAA0B,SAAkCnb,EAAO+H,GAClE/H,EAAMoX,mBAAqBrP,GAE5BqT,yBAA0B,SAAkCpb,EAAO+H,GAClE/H,EAAMqX,mBAAqBtP,GAE5BsT,iCAAkC,SAA0Crb,EAAO+H,GAClF/H,EAAM+W,2BAA6BhP,GAEpCuT,SAAU,SAAkBtb,EAAOub,GAClC,IAAK,IAAI9V,KAAO8V,EACfvb,EAAMyF,GAAO8V,EAAS9V,IAGxB+V,iBAAkB,SAA0Bxb,GAC3CA,EAAM+V,gBAEP0F,SAAU,SAAkBzb,EAAO0b,GAClC1b,EAAM4T,QAEP+H,aAAc,SAAsB3b,EAAOoW,GAC1CpW,EAAMoW,eAAiBA,GAExBwF,YAAa,SAAqB5b,EAAO6b,GACrB,eAAfA,GACH7b,EAAMiX,yBAA2BhR,EAAUsR,cAAcN,yBACzDhR,EAAUoS,uBAAuB,qBACR,aAAfwD,GACV7b,EAAMkX,uBAAyBjR,EAAUsR,cAAcL,uBACvDjR,EAAUoS,uBAAuB,mBACR,SAAfwD,GACV7b,EAAMoX,mBAAqBnR,EAAUsR,cAAcH,mBACnDnR,EAAUoS,uBAAuB,eACR,YAAfwD,EACV7b,EAAMmW,cAAgBlQ,EAAUsR,cAAcpB,cACrB,iBAAf0F,EACV7b,EAAM+W,2BAA6B9Q,EAAUsR,cAAcR,2BAClC,SAAf8E,GACV7b,EAAMqX,mBAAqBpR,EAAUsR,cAAcF,mBACnDpR,EAAUoS,uBAAuB,sBACR,cAAfwD,IACV7b,EAAMsX,wBAA0BrR,EAAUsR,cAAcD,wBACxDrR,EAAUoS,uBAAuB,sBAElCvK,EAAE,2BAA2BjP,SAE9Bid,aAAc,SAAsB9b,EAAOuO,GAC1CvO,EAAMuO,UAAYA,GAEnBwN,cAAe,SAAuB/b,EAAOhN,GAC5CgN,EAAMhN,QAAUA,GAEjBgpB,kBAAmB,SAA2Bhc,EAAOic,GACpDjc,EAAM4V,YAAcqG,GAErBC,0BAA2B,SAAmClc,EAAOic,GACpEjc,EAAM0X,oBAAsBuE,GAE7BE,sBAAuB,SAA+Bnc,EAAOhN,GAC5DgN,EAAM4X,gBAAkB5kB,GAEzBopB,oBAAqB,SAA6Bpc,EAAOqc,GACxDrc,EAAMmW,cAAgBkG,IAIxBC,SACCC,2BAA4B,SAAoCnhB,EAASyf,GACxEzf,EAAQ8G,OAAO,gCAAiC2Y,IAEjD2B,oBAAqB,SAA6BphB,EAAS2M,GAE1D,OADA3M,EAAQ8G,OAAO,iCAAkC6F,GAC1C3M,EAAQqhB,SAAS,WAEzBC,kBAAmB,SAA2BthB,EAAS2M,GAEtD,OADA3M,EAAQ8G,OAAO,+BAAgC6F,GACxC3M,EAAQqhB,SAAS,WAEzBE,eAAgB,SAAwBvhB,EAAS2M,GAEhD,OADA3M,EAAQ8G,OAAO,4BAA6B6F,GACrC3M,EAAQqhB,SAAS,WAEzBG,cAAe,SAAuBxhB,EAAS2M,GAE9C,OADA3M,EAAQ8G,OAAO,2BAA4B6F,GACpC3M,EAAQqhB,SAAS,WAEzBI,cAAe,SAAuBzhB,EAAS2M,GAE9C,OADA3M,EAAQ8G,OAAO,2BAA4B6F,GACpC3M,EAAQqhB,SAAS,WAEzBnB,SAAU,SAAkBlgB,EAASmgB,GACpCngB,EAAQ8G,OAAO,WAAYqZ,IAE5BC,iBAAkB,SAA0BpgB,GAE3C,OADAA,EAAQ8G,OAAO,oBACR9G,EAAQqhB,SAAS,UAAYhB,UAAU,KAE/CA,SAAU,SAAkBrgB,GAE3B,OADAA,EAAQ8G,OAAO,YACR9G,EAAQqhB,SAAS,UAAYhB,UAAU,KAE/CE,aAAc,SAAsBvgB,EAASgb,GAC5Chb,EAAQ8G,OAAO,eAAgBkU,IAEhCwF,YAAa,SAAqBxgB,EAASygB,GAE1C,IAAIiB,KA2BJ,GA1BwD,KAApD1hB,EAAQ4E,MAAMiX,yBAAyBD,UAC1C8F,EAAWxS,KAAKlP,EAAQ4E,MAAMiX,0BAEuB,KAAlD7b,EAAQ4E,MAAMkX,uBAAuBF,UACxC8F,EAAWxS,KAAKlP,EAAQ4E,MAAMkX,wBAEK,KAAhC9b,EAAQ4E,MAAMmW,eACjB2G,EAAWxS,KAAKlP,EAAQ4E,MAAMmW,eAEoB,KAA/C/a,EAAQ4E,MAAMmX,oBAAoBH,UACrC8F,EAAWxS,KAAKlP,EAAQ4E,MAAMmX,qBAEmB,KAA9C/b,EAAQ4E,MAAMoX,mBAAmBJ,UACpC8F,EAAWxS,KAAKlP,EAAQ4E,MAAMoX,oBAE2B,KAAtDhc,EAAQ4E,MAAM+W,2BAA2BC,UAC5C8F,EAAWxS,KAAKlP,EAAQ4E,MAAM+W,4BAEmB,KAA9C3b,EAAQ4E,MAAMqX,mBAAmBL,UACpC8F,EAAWxS,KAAKlP,EAAQ4E,MAAMqX,oBAEe,KAA1Cjc,EAAQ4E,MAAMsX,yBACjBwF,EAAWxS,KAAKlP,EAAQ4E,MAAMsX,yBAE/BxJ,EAAE,2BAA2BjP,QAEzBie,EAAWvrB,OAAS,EAEvB,OADA6J,EAAQ8G,OAAO,cAAe2Z,GACvBzgB,EAAQqhB,SAAS,UAAYM,kBAAmBlB,IAGvDzgB,EAAQ8G,OAAO,eAGjB8a,gBAAiB,SAAyB5hB,GACzCA,EAAQ8G,OAAO,cACfvP,OAAOsqB,QAAQC,UAAUjX,EAAUsR,cAAe,GAAI5kB,OAAOO,SAASmmB,WAEvE8D,qBAAsB,SAA8B/hB,EAASgiB,GAE5D,OADAhiB,EAAQ8G,OAAO,sBAAuBkb,GAC/BhiB,EAAQqhB,SAAS,WAEzBY,0BAA2B,SAAmCjiB,EAAS4e,GACtE,IAAIsD,KAIJ,OAHAA,EAAathB,KAAOge,EAAanjB,KACjCymB,EAAatG,SAAWgD,EAAa/gB,GACrCmC,EAAQ8G,OAAO,mCAAoCob,GAC5CliB,EAAQqhB,SAAS,WAEzBL,oBAAqB,SAA6BhhB,EAAS2d,GAC1D3d,EAAQ8G,OAAO,sBAAuB6W,IAEvCwE,yBAA0B,SAAkCniB,EAAS2d,GACpE3d,EAAQ8G,OAAO,2BAA4B6W,IAE5CyE,2BAA4B,SAAoCpiB,EAAS2d,GACxE3d,EAAQ8G,OAAO,6BAA8B6W,IAE9CrS,OAAQ,SAAgBtL,EAASqiB,GAEhC,IAAIV,GADJU,EAAUA,OACsBV,kBAC5BtB,EAAWgC,EAAQhC,SAElBA,GACJrgB,EAAQ8G,OAAO,YAAc0R,KAAM,EAAGmC,aAAc,IAGrD,IAAI2H,EAAe,GAKnB,OAJItiB,EAAQ4E,MAAMqX,qBACjBqG,EAAetiB,EAAQ4E,MAAMqX,mBAAmBL,UAG1C/Q,EAAUS,OAAOqN,EAA6BU,aAAcrZ,EAAQ4E,MAAM4T,KAAMxY,EAAQ4E,MAAM0J,KAAMtO,EAAQ4E,MAAM+V,aAAc3a,EAAQ4E,MAAMkW,aAAc9a,EAAQ4E,MAAMmW,cAAe/a,EAAQ4E,MAAMsX,wBAAyBoG,EAActiB,EAAQ4E,MAAMkX,uBAAuBF,SAAU5b,EAAQ4E,MAAMiX,yBAAyBD,SAAU5b,EAAQ4E,MAAMmX,oBAAoBH,SAAU5b,EAAQ4E,MAAMoX,mBAAmBJ,SAAU5b,EAAQ4E,MAAM+W,2BAA2BC,UAAUtf,KAAK,SAAUimB,GAE7e,IAAIC,EAAmB,EAKvB,GAJ0B,GAAtBxiB,EAAQ4E,MAAM4T,OACjBgK,EAAmBxiB,EAAQ4E,MAAMhN,QAAQzB,QAGtCkqB,EAAU,CACb,IAAIoC,EAAmBziB,EAAQ4E,MAAMhN,QACrC6qB,EAAmBA,EAAiBC,OAAOH,EAAajI,SACxDta,EAAQ8G,OAAO,gBAAiB2b,QAEhCziB,EAAQ8G,OAAO,gBAAiByb,EAAajI,SAC7Cta,EAAQ8G,OAAO,oBAAqByb,EAAalG,aAGlD,GAAkD,WAA9C1D,EAA6BkB,aAKhC,GAJkC,GAA9B7Z,EAAQ4E,MAAM+V,eACjB6H,EAAmBxiB,EAAQ4E,MAAM4X,gBAAgBrmB,QAG9CkqB,EAAU,CACb,IAAIsC,EAA2B3iB,EAAQ4E,MAAM4X,gBAC7CmG,EAA2BA,EAAyBD,OAAOH,EAAa9F,iBACxEzc,EAAQ8G,OAAO,wBAAyB6b,QAExC3iB,EAAQ8G,OAAO,4BAA6Byb,EAAahG,qBACzDvc,EAAQ8G,OAAO,wBAAyByb,EAAa9F,iBAIvD,IAAImG,EAAS,GAmDb,OAjD0B,GAAtB5iB,EAAQ4E,MAAM4T,OACjBoK,EAAS/X,EAAUqT,gBAAgB,OAAQle,EAAQ4E,MAAM4T,KAAiB,KAAXoK,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAG3E,WAA9CqN,EAA6BkB,cAA2D,GAA9B7Z,EAAQ4E,MAAM+V,eAC3EiI,EAAS/X,EAAUqT,gBAAgB,eAAgBle,EAAQ4E,MAAM+V,aAAyB,KAAXiI,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAGzG,KAAhCtL,EAAQ4E,MAAMmW,gBACjB6H,EAAS/X,EAAUqT,gBAAgB,UAAWle,EAAQ4E,MAAMmW,cAA0B,KAAX6H,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAG3F,KAA1CtL,EAAQ4E,MAAMsX,0BACjB0G,EAAS/X,EAAUqT,gBAAgB,YAAale,EAAQ4E,MAAMsX,wBAAoC,KAAX0G,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAG5F,IAArDtL,EAAQ4E,MAAM+W,2BAA2BC,UAAwC,iBAAtB+F,IAC9DiB,EAAS/X,EAAUqT,gBAAgB,eAAgBle,EAAQ4E,MAAM+W,2BAA2BC,SAAqB,KAAXgH,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAG5G,KAApDtL,EAAQ4E,MAAMiX,yBAAyBD,UAAyC,eAAtB+F,IAC7DiB,EAAS/X,EAAUqT,gBAAgB,aAAcle,EAAQ4E,MAAMiX,yBAAyBD,SAAqB,KAAXgH,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAG1G,KAAlDtL,EAAQ4E,MAAMkX,uBAAuBF,UAAyC,aAAtB+F,IAC3DiB,EAAS/X,EAAUqT,gBAAgB,WAAYle,EAAQ4E,MAAMkX,uBAAuBF,SAAqB,KAAXgH,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAGzG,KAA/CtL,EAAQ4E,MAAMmX,oBAAoBH,UAAyC,UAAtB+F,IACxDiB,EAAS/X,EAAUqT,gBAAgB,QAASle,EAAQ4E,MAAMmX,oBAAoBH,SAAqB,KAAXgH,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAGpG,KAA9CtL,EAAQ4E,MAAMoX,mBAAmBJ,UAAyC,SAAtB+F,IACvDiB,EAAS/X,EAAUqT,gBAAgB,OAAQle,EAAQ4E,MAAMoX,mBAAmBJ,SAAqB,KAAXgH,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAGlG,KAA9CtL,EAAQ4E,MAAMqX,mBAAmBL,UAAyC,SAAtB+F,IACvDiB,EAAS/X,EAAUqT,gBAAgB,OAAQle,EAAQ4E,MAAMqX,mBAAmBL,SAAqB,KAAXgH,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAG/G,IAAjCtL,EAAQ4E,MAAMoW,iBACjB4H,EAAS/X,EAAUqT,gBAAgB,SAAUle,EAAQ4E,MAAMoW,eAA2B,KAAX4H,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAG1H,KAAXsX,IACH5iB,EAAQ8G,OAAO,gBAAgB,GAC/BvP,OAAOsqB,QAAQC,UAAU9hB,EAAQ4E,MAAO,GAAIge,IAGtCJ,QAQY,IAAI/oB,KAE1BuB,GAAI,oBAEJqK,MAAOA,EAEPjK,MACCynB,qBAAsB,GACtBC,0BAA2B,GAC3BC,mBAAmB,EACnBC,WAAW,EACXC,qBAGD9mB,QAAS,WACR5E,OAAO2rB,WAAaxqB,KAAKyqB,WAEkB,IAAvCzqB,KAAK6N,OAAOgZ,QAAQvE,gBACvBnQ,EAAUkI,SAASra,KAAK6N,OAAOgZ,QAAQvE,iBAIzClX,UACCwY,oBAAqB,WACpB,OAAO5jB,KAAK6N,OAAOgZ,QAAQjD,qBAE5BE,gBAAiB,WAChB,OAAO9jB,KAAK6N,OAAOgZ,QAAQ/C,iBAE5B5kB,QAAS,WACR,OAAOc,KAAK6N,OAAOgZ,QAAQ3nB,SAE5B4iB,YAAa,WACZ,OAAO9hB,KAAK6N,OAAOgZ,QAAQ/E,aAE5BrH,UAAW,WACV,OAAOza,KAAK6N,OAAOgZ,QAAQpM,WAE5B2H,aAAc,WACb,OAAOpiB,KAAK6N,OAAOgZ,QAAQzE,cAE5BH,aAAc,WACb,OAAOjiB,KAAK6N,OAAOgZ,QAAQ5E,cAE5BnC,KAAM,WACL,OAAO9f,KAAK6N,OAAOgZ,QAAQ/G,MAE5BlK,KAAM,WACL,OAAO5V,KAAK6N,OAAOgZ,QAAQjR,MAE5ByM,cAAe,WACd,OAAOriB,KAAK6N,OAAOgZ,QAAQxE,eAE5BC,eAAgB,WACf,OAAOtiB,KAAK6N,OAAOgZ,QAAQvE,gBAE5BC,kBAAmB,WAClB,OAAOviB,KAAK6N,OAAOgZ,QAAQtE,mBAE5BE,gBAAiB,WAChB,OAAOziB,KAAK6N,OAAOgZ,QAAQpE,iBAE5BE,aAAc,WACb,OAAO3iB,KAAK6N,OAAOgZ,QAAQlE,cAE5BE,YAAa,WACZ,OAAO7iB,KAAK6N,OAAOgZ,QAAQhE,aAE5BE,YAAa,WACZ,OAAO/iB,KAAK6N,OAAOgZ,QAAQ9D,aAE5BI,yBAA0B,WACzB,OAAOnjB,KAAK6N,OAAOgZ,QAAQ1D,0BAE5BC,uBAAwB,WACvB,OAAOpjB,KAAK6N,OAAOgZ,QAAQzD,wBAE5BC,oBAAqB,WACpB,OAAOrjB,KAAK6N,OAAOgZ,QAAQxD,qBAE5BC,mBAAoB,WACnB,OAAOtjB,KAAK6N,OAAOgZ,QAAQvD,oBAE5BC,mBAAoB,WACnB,OAAOvjB,KAAK6N,OAAOgZ,QAAQtD,oBAE5BN,2BAA4B,WAC3B,OAAOjjB,KAAK6N,OAAOgZ,QAAQ5D,4BAE5BO,wBAAyB,WACxB,OAAOxjB,KAAK6N,OAAOgZ,QAAQrD,yBAE5BkH,YAAa,WACZ,IAAI1B,KA2BJ,MAzB+C,KAA3ChpB,KAAKmjB,yBAAyBD,UACjC8F,EAAWxS,KAAKxW,KAAKmjB,0BAEuB,KAAzCnjB,KAAKojB,uBAAuBF,UAC/B8F,EAAWxS,KAAKxW,KAAKojB,wBAEoB,KAAtCpjB,KAAKqjB,oBAAoBH,UAC5B8F,EAAWxS,KAAKxW,KAAKqjB,qBAEmB,KAArCrjB,KAAKsjB,mBAAmBJ,UAC3B8F,EAAWxS,KAAKxW,KAAKsjB,oBAEmB,KAArCtjB,KAAKujB,mBAAmBL,UAC3B8F,EAAWxS,KAAKxW,KAAKujB,oBAE2B,KAA7CvjB,KAAKijB,2BAA2BC,UACnC8F,EAAWxS,KAAKxW,KAAK2qB,oBAEe,KAAjC3qB,KAAKwjB,yBACRwF,EAAWxS,KAAKxW,KAAKwjB,yBAEK,KAAvBxjB,KAAKqiB,eACR2G,EAAWxS,KAAKxW,KAAKqiB,eAGf2G,EAAWvrB,SAIpB2G,SACCwmB,cAAe,WACd5qB,KAAKqqB,mBAAqBrqB,KAAKqqB,mBAEhCQ,iBAAkB,SAA0B9C,GAC3C,IAAI+C,EAAsB7K,EAA6BkB,aACvD,MAA4B,iBAAxB2J,GAC0D,IAAtD3Y,EAAUqP,mBAAmBlG,QAAQyM,GACV,SAAxB+C,GAC4C,IAA/C3Y,EAAUuP,YAAYpG,QAAQyM,GACH,WAAxB+C,GAC6C,IAAhD3Y,EAAUsP,aAAanG,QAAQyM,QADhC,GAIRgD,uBAAwB,SAAgC9F,GACvD,GAAIA,EAAO,CACV,IAAIhR,EAAShE,KAAKC,MAAM+U,GAGxBjlB,KAAK6N,OAAO8a,SAAS,sBAAuB1U,QAE5CjU,KAAK6N,OAAO8a,SAAS,cAAe,eAGtCqC,qBAAsB,SAA8B/F,GACnD,GAAIA,EAAO,CACV,IAAIhR,EAAShE,KAAKC,MAAM+U,GAGxBjlB,KAAK6N,OAAO8a,SAAS,oBAAqB1U,QAE1CjU,KAAK6N,OAAO8a,SAAS,cAAe,aAGtCsC,kBAAmB,SAA2BhG,GAC7C,GAAIA,EAAO,CACV,IAAIhR,EAAShE,KAAKC,MAAM+U,GAGxBjlB,KAAK6N,OAAO8a,SAAS,iBAAkB1U,QAEvCjU,KAAK6N,OAAO8a,SAAS,cAAe,UAGtCuC,iBAAkB,SAA0BjG,GAC3C,GAAIA,EAAO,CACV,IAAIhR,EAAShE,KAAKC,MAAM+U,GAGxBjlB,KAAK6N,OAAO8a,SAAS,gBAAiB1U,QAEtCjU,KAAK6N,OAAO8a,SAAS,cAAe,SAGtCwC,iBAAkB,SAA0BlG,GAC3C,GAAIA,EAAO,CACV,IAAIhR,EAAShE,KAAKC,MAAM+U,GAGxBjlB,KAAK6N,OAAO8a,SAAS,gBAAiB1U,QAEtCjU,KAAK6N,OAAO8a,SAAS,cAAe,SAGtCjB,iBAAkB,WAEjB1nB,KAAK6N,OAAO8a,SAAS,oBAAoB/kB,KAAK,SAAUkmB,GACvD9P,EAAE,kCAAkC/G,KAAK,2BAA2BtP,IAAImmB,GAAkB/e,WAG5F4c,SAAU,WAET3nB,KAAK6N,OAAO8a,SAAS,YAAY/kB,KAAK,SAAUkmB,GAC/C9P,EAAE,kCAAkC/G,KAAK,2BAA2BtP,IAAImmB,GAAkB/e,WAG5FqgB,kBAAmB,WAClB,IAAIC,EAAanqB,SAASC,eAAe,cACrCmqB,EAAa,GAEjB,GAAID,EACCC,EAAaD,EAAWpG,MAGK,KAA9BjlB,KAAKmqB,sBAA8C,KAAfmB,IAEN,IAA7BtrB,KAAKmqB,sBACRnqB,KAAK6N,OAAO8a,SAAS,sBAAuB3oB,KAAKmqB,sBAI/B,KAAfmB,IACHD,EAAWpG,MAAQ,GACnBjlB,KAAK6N,OAAO8a,SAAS,6BAA8B2C,IAGpDtrB,KAAK6N,OAAO8a,SAAS,YAKvBb,YAAa,SAAqBC,GACf,WAAdA,IACH/nB,KAAKmqB,qBAAuB,IAE7BnqB,KAAK6N,OAAO8a,SAAS,cAAeZ,GACpClpB,OAAOsqB,QAAQC,UAAUjX,EAAUsR,cAAe,GAAI5kB,OAAOO,SAASmmB,WAEvE2D,gBAAiB,WAChBlpB,KAAK6N,OAAO8a,SAAS,mBACrB3O,EAAE,2BAA2BjP,QAC7BlM,OAAOsqB,QAAQC,UAAUjX,EAAUsR,cAAe,GAAI5kB,OAAOO,SAASmmB,WAEvEkF,WAAY,WACP5rB,OAAOsqB,QAAQjd,OAClBlM,KAAK6N,OAAO8a,SAAS,WAAY9pB,OAAOsqB,QAAQjd,OACpB,IAAxBlM,KAAKsiB,gBACRnQ,EAAUkI,SAASra,KAAKsiB,iBAGzBtiB,KAAK6N,OAAO8a,SAAS,gBAGvBjS,cAAe,SAAuBC,GACrC,OAAOA,EAAiB,SAAW,SAEpC4U,YAAa,SAAqBxD,IAC5B/nB,KAAKuqB,iBAAiBjP,QAAQyM,IAAe,GACjD/nB,KAAKuqB,iBAAiB/T,KAAKuR,IAG7ByD,WAAY,SAAoBzD,GAC/B,GAAI/nB,KAAKuqB,iBAAiBjP,QAAQyM,IAAe,EAAG,CACnD,IAAI9Z,EAAQjO,KAAKuqB,iBAAiBjP,QAAQyM,GACtC9Z,GAAS,GACZjO,KAAKuqB,iBAAiBkB,OAAOxd,EAAO,MAKxC1L,YACC+a,oBACC1U,SAAU,oBACV2U,QAASC,aAAaC,QACtB5U,OACC6iB,gBAAiBC,OACjBC,WACCnP,KAAMkP,OACNlO,QAAS,IAEVY,cAAesN,OACfzN,gBAAiByN,OACjBvN,YAAauN,QAEdjpB,KAAM,WACL,OACCyK,IAAK8S,EAA6BY,gBAClCnD,MAAO,EACPE,SAAU,EACVC,eAAgB,eAChBC,UAAW,GACXC,aAAc,IAGhB3S,UACCjM,OAAQ,WACP,OAAIa,KAAKub,MAAM9d,QAAUuC,KAAK4d,WAAa5d,KAAKge,QAC3Che,KAAKie,SACDje,KAAKke,gBAAgBC,QAAQ,SAAUne,KAAKmb,MAAM1d,QAElDuC,KAAKoe,YAGNpe,KAAKqe,cAAcF,QAAQ,SAAUne,KAAK4d,WAGnDU,aAAc,WACb,IAAIC,EAAcve,KAAKmb,MAAMnb,KAAKwe,SAClC,OAAOD,EAAcA,EAAYE,MAAQ,KAG3Cra,SACCsa,MAAO,SAAeC,GACrB3e,KAAKub,MAAQoD,EAAKF,MAClBze,KAAK0f,cACL1f,KAAK6N,OAAO8a,SAAS,6BAA+B5lB,KAAM4b,EAAKF,MAAOtZ,GAAIwZ,EAAKkN,KAC/E7rB,KAAKub,MAAQ,IAEd2D,UAAW,WACVlf,KAAK+d,YAAc/d,KAAKwe,SACF,IAAlBxe,KAAKwe,UACRxe,KAAK8d,UAAY9d,KAAKub,QAGxB4D,SAAU,YACa,IAAlBnf,KAAKwe,QACRxe,KAAKub,MAAQvb,KAAKse,aAElBte,KAAKub,MAAQvb,KAAK8d,WAGpBsB,aAAc,YACS,IAAlBpf,KAAKwe,SACRxe,KAAKqf,UAGPC,SAAU,WACTtf,KAAKkf,YACLlf,KAAKuf,KACLvf,KAAKmf,YAENK,WAAY,WACXxf,KAAKkf,YACLlf,KAAKyf,OACLzf,KAAKmf,YAENO,YAAa,WACZ1f,KAAK2S,QACL3S,KAAKwe,SAAW,EAChBxe,KAAK+d,aAAe,EACpB/d,KAAK8d,UAAY,IAElBgB,eAAgB,WACf9e,KAAKmb,SACLnb,KAAKwe,SAAW,EAChBxe,KAAK+d,aAAe,EACpB/d,KAAK8d,UAAY,MAIpBgO,mBACCljB,SAAU,mBACVC,SACAnG,KAAM,WACL,OACCwd,eAAgBD,EAA6BC,eAC7C6L,aAAc9L,EAA6BI,mBAC3C2L,SAAU/L,EAA6BM,uBACvCE,qBAAsBR,EAA6BQ,qBACnDX,KAAMG,EAA6BoB,mBACnCJ,aAAchB,EAA6BgB,aAC3CF,WAAYd,EAA6Bc,WACzC+I,iBAAkB,IAGpB1e,UACC6gB,kBAAmB,WAClB,OAAOjsB,KAAK8f,KAAO9f,KAAKgsB,WAG1B5nB,SACCwO,OAAQ,WACP,IAAIxN,EAAOpF,KACX4f,EAAsBhN,OAAO5S,KAAKygB,qBAAsBzgB,KAAKgsB,SAAUhsB,KAAK8f,MAAMlc,KAAK,SAAUsoB,GAChG,GAAiB,GAAb9mB,EAAK0a,KAAW,CACnB,IAAIgK,EAAmB1kB,EAAK8a,eAAeziB,OACvC0uB,EAAoB/mB,EAAK8a,eAC7BiM,EAAoBA,EAAkBnC,OAAOkC,EAAOtK,SACpDxc,EAAK8a,eAAiBiM,EACtB9mB,WAAW,WACVrB,QAAQC,IAAI,6BAA8BmB,EAAK8a,eAAeziB,QAC9Duc,EAAE,gCAAgC/G,KAAK,2BAA2BtP,IAAImmB,GAAkB/e,SACtF,UAEH3F,EAAK8a,eAAiBgM,EAAOtK,WAIhC+F,SAAU,WACT3nB,KAAK8f,OACL9f,KAAK4S,UAEN8D,cAAe,SAAuBC,GACrC,OAAOA,EAAiB,SAAW,oBAQnCyV,IAAI,SAASnvB,EAAQU,EAAOJ,GAClC,aAEA,GAAI2D,SAASC,eAAe,uBAAwB,CAClD,IAAIgR,GACF0H,eAAgB,0BAChByH,gBAAiB,oBACjB+K,kBAAmB,eACnBrM,gBACE2B,aAAc,EACdC,YAEFC,aACE3iB,WACA4iB,YAAa,EACbrH,WAAW,EACXqF,KAAM,EACNlK,KAAM,GACNyM,cAAe,GACfC,eAAgB,GAElBmB,eACEvkB,QAASotB,WAAWC,eAAe3K,YACnCE,YAAawK,WAAWC,eAAe5I,aAAe,EACtDlJ,UAAW6R,WAAWtI,YAAa,EACnClE,KAAMwM,WAAWtK,MAAQ,EACzBpM,KAAM0W,WAAWnK,MAAQ,GACzBE,cAAeiK,WAAWpI,eAAiB,GAC3C5B,eAAgBgK,WAAWE,gBAAkB,EAC7CC,eAAgBC,mBAElBjI,oBAAqB,WACnB,OAAO3c,SAASkS,EAAEha,KAAKshB,iBAAiBvH,SAASE,MAEnD0K,UAAW,SAAmBhmB,GAC5B,IAAIimB,EAAejmB,EAEnB,OAA2B,GAAvBimB,EAAannB,WAIjBmnB,EAAeA,EAAaC,OAAO,IAETC,MAAM,KAEXrS,IAAI,SAAUsS,GACjC,IAAIC,EAAQD,EAASD,MAAM,KAC3B,OACEnT,IAAKqT,EAAM,GACXC,MAAOD,EAAM,OAMnBE,gBAAiB,SAAyBC,GACxC,IAIIC,EAAe,IAJFD,EAAW1S,IAAI,SAAU4S,GACxC,OAAOA,EAAM1T,IAAM,IAAM0T,EAAMJ,QAGGK,KAAK,KAEzC,OAAOzmB,OAAOO,SAASmmB,SAAWH,GAEpCI,gBAAiB,SAAyB7T,EAAKsT,EAAOtmB,GACpD,IAAI8mB,EAASzlB,KAAK2kB,UAAUhmB,GAExB+mB,EAAgBD,EAAOxR,OAAO,SAAUoR,GAC1C,OAAOA,EAAM1T,MAAQA,IAGnBgU,EAAmBF,EAAOxR,OAAO,SAAUoR,GAC7C,OAAOA,EAAM1T,MAAQA,IAGnBiU,EAAeF,EAAc,QAEEzc,IAAjB2c,EAGhBA,EAAaX,MAAQA,EAErBW,GACEjU,IAAKA,EACLsT,MAAOA,GAIX,IAAIY,EAAYF,EAIhB,YAFa1c,GAATgc,GAAoBY,EAAUrP,KAAKoP,GAEhC5lB,KAAKklB,gBAAgBW,IAE9B/L,cAAe,WACb,IAAIC,EAASjS,SAASkS,EAAEnb,QAAQ0Q,SAAW,GAEvCnQ,EAAW0I,SAASkS,EAAEha,KAAK6Z,gBAAgBE,SAASE,KAUxD,OATAD,EAAE,cAAcE,SACdC,UAAW/a,EAAW2a,GACrB,OAAQ,cAOJ3a,EAAW2a,GAEpBM,SAAU,SAAkBjb,GAC1B4a,EAAE,cAAcE,SACdC,UAAW/a,GACV,OAAQ,eAMbwT,OAAQ,SAAgBR,EAASwD,EAAMkK,GACrC,OAAO/e,IAAIgH,KAAKC,KAAK,4BACnBqe,QAASjU,EACT+P,KAAMvM,EACNuQ,MAAOrG,EAAO,GAAKlK,IAClBhS,KAAK,SAAUC,GAEhB,OAAuB,KAAnBA,EAAS1E,OACJ0E,EAASC,MAEhBE,QAAQC,IAAI,yCACL+b,iBAER,SAAUjc,GACX,OAAOic,mBAKbjf,IAAIC,IAAIC,aAER,IAAI0L,EAAQ,IAAIX,KAAKC,OAEnBC,OACEhN,QAASiT,EAAUsR,cAAcvkB,QACjC4iB,YAAa3P,EAAUsR,cAAc3B,YACrCrH,UAAWtI,EAAUsR,cAAchJ,UACnCqF,KAAM3N,EAAUsR,cAAc3D,KAC9BlK,KAAMzD,EAAUsR,cAAc7N,KAC9ByM,cAAelQ,EAAUsR,cAAcpB,cACvCC,eAAgBnQ,EAAUsR,cAAcnB,gBAG1CuE,SAEE3nB,QAAS,SAAiBgN,GACxB,OAAOA,EAAMhN,SAEf4iB,YAAa,SAAqB5V,GAChC,OAAOA,EAAM4V,aAEfrH,UAAW,SAAmBvO,GAC5B,OAAOA,EAAMuO,WAEfqF,KAAM,SAAc5T,GAClB,OAAOA,EAAM4T,MAEflK,KAAM,SAAc1J,GAClB,OAAOA,EAAM0J,MAEfyM,cAAe,SAAuBnW,GACpC,OAAOA,EAAMmW,eAEfC,eAAgB,SAAwBpW,GACtC,OAAOA,EAAMoW,iBAKjBjW,WACEmb,SAAU,SAAkBtb,EAAOub,GACjC,IAAK,IAAI9V,KAAO8V,EACdvb,EAAMyF,GAAO8V,EAAS9V,IAG1BgW,SAAU,SAAkBzb,EAAO0b,GACjC1b,EAAM4T,QAER+H,aAAc,SAAsB3b,EAAOoW,GACzCpW,EAAMoW,eAAiBA,GAEzBwF,YAAa,SAAqB5b,GAChC,IAAI+a,EAAW9U,EAAU0P,YACzB,IAAK,IAAIlQ,KAAOsV,EACd/a,EAAMyF,GAAOsV,EAAStV,IAG1BqW,aAAc,SAAsB9b,EAAOuO,GACzCvO,EAAMuO,UAAYA,GAEpBwN,cAAe,SAAuB/b,EAAOhN,GAC3CgN,EAAMhN,QAAUA,GAElBgpB,kBAAmB,SAA2Bhc,EAAOic,GACnDjc,EAAM4V,YAAcqG,GAEtBG,oBAAqB,SAA6Bpc,EAAOqc,GACvDrc,EAAMmW,cAAgBkG,IAI1BC,SACEhB,SAAU,SAAkBlgB,EAASmgB,GACnCngB,EAAQ8G,OAAO,WAAYqZ,IAE7BE,SAAU,SAAkBrgB,GAE1B,OADAA,EAAQ8G,OAAO,YACR9G,EAAQqhB,SAAS,UAAYhB,UAAU,KAEhDE,aAAc,SAAsBvgB,EAASgb,GAC3Chb,EAAQ8G,OAAO,eAAgBkU,IAEjCwF,YAAa,SAAqBxgB,GAChCA,EAAQ8G,OAAO,eACf4L,EAAE,2BAA2BjP,SAE/Bse,qBAAsB,SAA8B/hB,EAASgiB,GAE3D,OADAhiB,EAAQ8G,OAAO,sBAAuBkb,GAC/BhiB,EAAQqhB,SAAS,WAE1B/V,OAAQ,SAAgBtL,EAASqiB,GAE/B,IAAIhC,GADJgC,EAAUA,OACahC,SAMvB,OAJKA,GACHrgB,EAAQ8G,OAAO,YAAc0R,KAAM,IAG9B3N,EAAUS,OAAOtL,EAAQ4E,MAAMmW,cAAe/a,EAAQ4E,MAAM0J,KAAMtO,EAAQ4E,MAAM4T,MAAMlc,KAAK,SAAUsoB,GAC1GloB,QAAQC,IAAI,QAASqD,EAAQ4E,MAAM4T,MACnC9b,QAAQC,IAAI,mBAAoBqD,EAAQ4E,MAAMhN,SAC9C8E,QAAQC,IAAI,eAAgBioB,GAG5B,IAAIpC,EAAmB,EAKvB,GAJ0B,GAAtBxiB,EAAQ4E,MAAM4T,MAAaxY,EAAQ4E,MAAMhN,QAAQzB,OAAS,IAC5DqsB,EAAmBxiB,EAAQ4E,MAAMhN,QAAQzB,QAGvCkqB,GAAYrgB,EAAQ4E,MAAMhN,QAAQzB,OAAS,EAAG,CAChD,IAAIssB,EAAmBziB,EAAQ4E,MAAMhN,QACrC6qB,EAAmBA,EAAiBC,OAAOkC,EAAOtK,SAClDta,EAAQ8G,OAAO,gBAAiB2b,GAChCziB,EAAQ8G,OAAO,oBAAqB8d,EAAOvI,kBAE3Crc,EAAQ8G,OAAO,gBAAiB8d,EAAOtK,SACvCta,EAAQ8G,OAAO,oBAAqB8d,EAAOvI,aAG7C,IAAIuG,EAAS,GAmBb,OAjB0B,GAAtB5iB,EAAQ4E,MAAM4T,OAChBoK,EAAS/X,EAAUqT,gBAAgB,OAAQle,EAAQ4E,MAAM4T,KAAiB,KAAXoK,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAG1F,KAAhCtL,EAAQ4E,MAAMmW,gBAChB6H,EAAS/X,EAAUqT,gBAAgB,UAAWle,EAAQ4E,MAAMmW,cAA0B,KAAX6H,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAGrG,IAAjCtL,EAAQ4E,MAAMoW,iBAChB4H,EAAS/X,EAAUqT,gBAAgB,SAAUle,EAAQ4E,MAAMoW,eAA2B,KAAX4H,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAG3H,KAAXsX,IACF5iB,EAAQ8G,OAAO,gBAAgB,GAC/BvP,OAAOsqB,QAAQC,UAAU9hB,EAAQ4E,MAAO,GAAIge,IAGvCJ,QAQW,IAAI/oB,KAC5BuB,GAAI,uBACJqK,MAAOA,EACPjK,MACEynB,qBAAsB,GACtBwC,oBACAF,eAAgBta,EAAUsR,cAAcgJ,eACxCG,UAAU,EACVC,WAAaD,UAAU,GACvBE,aAAa,EACbC,SAAS,GAEXtpB,QAAS,WACP5E,OAAO2rB,WAAaxqB,KAAKyqB,WAEkB,IAAvCzqB,KAAK6N,OAAOgZ,QAAQvE,gBACtBnQ,EAAUkI,SAASra,KAAK6N,OAAOgZ,QAAQvE,iBAG3ClX,UACElM,QAAS,WACP,OAAOc,KAAK6N,OAAOgZ,QAAQ3nB,SAE7B4iB,YAAa,WACX,OAAO9hB,KAAK6N,OAAOgZ,QAAQ/E,aAE7BrH,UAAW,WACT,OAAOza,KAAK6N,OAAOgZ,QAAQpM,WAE7BqF,KAAM,WACJ,OAAO9f,KAAK6N,OAAOgZ,QAAQ/G,MAE7BlK,KAAM,WACJ,OAAO5V,KAAK6N,OAAOgZ,QAAQjR,MAE7ByM,cAAe,WACb,OAAOriB,KAAK6N,OAAOgZ,QAAQxE,eAE7BC,eAAgB,WACd,OAAOtiB,KAAK6N,OAAOgZ,QAAQvE,iBAI/Ble,SACE4oB,qBAAsB,WACpBhtB,KAAK+sB,SAAW/sB,KAAK+sB,SAEvBE,mBAAoB,SAA4Btb,GAC9C,IAAIub,EAAeltB,KAAK2sB,iBAAiBhb,GACzC,OAAIub,IAGG,GAETC,eAAgB,SAAwBpqB,GACtC,IAAIqqB,EAA0Bnd,KAAKC,MAAMD,KAAKyH,UAAU1X,KAAK2sB,mBACzDO,EAAeE,EAAwBrqB,GAEzCqqB,EAAwBrqB,QADLkG,IAAjBikB,IAC+BA,EAInCltB,KAAK2sB,iBAAmBS,GAE1BC,kBAAmB,WACjBrtB,KAAK8sB,aAAe9sB,KAAK8sB,YACzB,IAAIQ,EAAyBrd,KAAKC,MAAMD,KAAKyH,UAAU1X,KAAK2sB,mBAE5D,GAAI3sB,KAAKysB,gBAAkBzsB,KAAKysB,eAAehvB,OAAS,EAAG,CACzD,IAAKX,EAAI,EAAGA,EAAIkD,KAAKysB,eAAehvB,OAAQX,IAC1CwwB,EAAuBttB,KAAKysB,eAAe3vB,IAAMkD,KAAK8sB,YAGxD9sB,KAAK2sB,iBAAmBW,IAG5B3F,SAAU,WACR3nB,KAAK6N,OAAO8a,SAAS,eAAgBxW,EAAUsS,uBAC/CzkB,KAAK6N,OAAO8a,SAAS,YAAY/kB,KAAK,SAAUkmB,GAC9C9P,EAAE,wBAAwB/G,KAAK,aAAatP,IAAImmB,GAAkB/e,WAGtEqgB,kBAAmB,WACiB,KAA9BprB,KAAKmqB,sBAEPnqB,KAAK6N,OAAO8a,SAAS,uBAAwB3oB,KAAKmqB,sBAEpDnqB,KAAKmqB,qBAAuB,IAE9BrC,YAAa,WACX9nB,KAAK6N,OAAO8a,SAAS,eACrB9pB,OAAOsqB,QAAQC,UAAUjX,EAAUsR,cAAe,GAAI5kB,OAAOO,SAASmmB,WAExEkF,WAAY,WACN5rB,OAAOsqB,QAAQjd,OACjBlM,KAAK6N,OAAO8a,SAAS,WAAY9pB,OAAOsqB,QAAQjd,OACpB,IAAxBlM,KAAKsiB,gBACPnQ,EAAUkI,SAASra,KAAKsiB,iBAG1BtiB,KAAK6N,OAAO8a,SAAS,gBAGzB4E,gBAAiB,SAAyBC,GACxC,IAAIC,EAAkBzT,EAAE,IAAMwT,GAC9B,GAAIC,EAAiB,CACnBztB,KAAK0tB,eAAiB5lB,SAAS2lB,EAAgB1T,SAASE,IAAMD,EAAE7H,EAAUka,mBAAmB9c,UAC7F4C,EAAUkI,SAASra,KAAK0tB,gBACxBD,EAAgB1iB,QAChB,IAAIpM,EAAME,OAAOO,SAASuuB,SAAW,KAAO9uB,OAAOO,SAASiQ,KAAOxQ,OAAOO,SAASmmB,SAAW,WAAavlB,KAAK0tB,eAChH7uB,OAAOsqB,QAAQC,WAAYwE,KAAMjvB,GAAO,GAAIA,MAIlD4D,YACE+a,oBACE1U,SAAU,iCACV2U,QAASC,aAAaC,QACtB5U,OACE6iB,gBAAiBC,OACjBC,WACEnP,KAAMkP,OACNlO,QAAS,IAEXY,cAAesN,OACfzN,gBAAiByN,OACjBvN,YAAauN,OACbkC,YAAalC,QAEfjpB,KAAM,WACJ,OACEyK,IAAK,qCACLuQ,MAAO,EACPE,SAAU,EACVC,eAAgB,OAChBC,UAAW,GACXC,aAAc,IAGlB3S,UACEjM,OAAQ,WACN,OAAIa,KAAKub,MAAM9d,QAAUuC,KAAK4d,WAAa5d,KAAKge,QAC1Che,KAAKie,SACAje,KAAKke,gBAAgBC,QAAQ,SAAUne,KAAKmb,MAAM1d,QAElDuC,KAAKoe,YAGPpe,KAAKqe,cAAcF,QAAQ,SAAUne,KAAK4d,WAGrDU,aAAc,WACZ,IAAIC,EAAcve,KAAKmb,MAAMnb,KAAKwe,SAClC,OAAOD,EAAcA,EAAYE,MAAQ,KAG7Cra,SACEsa,MAAO,SAAeC,GACpB9f,OAAOO,SAASoF,KAAOma,EAAKC,KAE9BhM,OAAQ,WACN,GAAI5S,KAAKwe,SAAW,GAAKxe,KAAKie,SAAU,CACtC,IAAI6P,EAAgB9tB,KAAKwe,QACzB3f,OAAOO,SAASoF,KAAOxE,KAAKmb,MAAM2S,GAAelP,QAE9B,KAAf5e,KAAKub,OAEPvb,KAAK6N,OAAO8a,SAAS,uBAAwB3oB,KAAKub,OAGtDvb,KAAK2S,QACL3S,KAAKub,MAAQ,IAEf2D,UAAW,WACTlf,KAAK+d,YAAc/d,KAAKwe,SACF,IAAlBxe,KAAKwe,UACPxe,KAAK8d,UAAY9d,KAAKub,QAG1B4D,SAAU,YACc,IAAlBnf,KAAKwe,QACPxe,KAAKub,MAAQvb,KAAKse,aAElBte,KAAKub,MAAQvb,KAAK8d,WAGtBsB,aAAc,YACU,IAAlBpf,KAAKwe,SACPxe,KAAKqf,UAGTC,SAAU,WACRtf,KAAKkf,YACLlf,KAAKuf,KACLvf,KAAKmf,YAEPK,WAAY,WACVxf,KAAKkf,YACLlf,KAAKyf,OACLzf,KAAKmf,YAEPO,YAAa,WACX1f,KAAK2S,QACL3S,KAAKwe,SAAW,EAChBxe,KAAK+d,aAAe,EACpB/d,KAAK8d,UAAY,IAEnBgB,eAAgB,WACd9e,KAAKmb,SACLnb,KAAKwe,SAAW,EAChBxe,KAAK+d,aAAe,EACpB/d,KAAK8d,UAAY,eAQvBiQ,IAAI,SAAS9wB,EAAQU,EAAOJ,GAClC,aAEA,GAAI2D,SAASC,eAAe,qBAAsB,CAChD,IAAIgR,GACF6b,aAAc,SAAsBC,GAClC,OAAO,SAAU/hB,GACf,OAAOA,EAAM+hB,KAIjBnU,cAAe,WACb,IAAIC,EAASjS,SAASkS,EAAEnb,QAAQ0Q,SAAW,GACvCnQ,EAAW0I,SAASkS,EAAEha,KAAK6Z,gBAAgBE,SAASE,KAQxD,OAPAD,EAAE,cAAcE,SACdC,UAAW/a,EAAW2a,GACrB,OAAQ,WACUC,EAAE,8BACRjP,QAAQqP,KAAK,YAAa,KAGlChb,EAAW2a,GAGpBM,SAAU,SAAkBjb,GAC1B4a,EAAE,cAAcE,SACdC,UAAW/a,GACV,SAGLulB,UAAW,SAAmBhmB,GAE5B,IAAIimB,EAAejmB,EAEnB,GAA2B,GAAvBimB,EAAannB,OAAa,SAE9B,IAAIywB,EAAkBtJ,EAAaC,OAAO,GACtCsJ,EAAmBD,EAAgBpJ,MAAM,KAc7C,OAbAF,EAAeuJ,EAAiB,GAAKA,EAAiB,GAAKD,GACjCpJ,MAAM,KAEXrS,IAAI,SAAUsS,GAEjC,IAAIC,EAAQD,EAASD,MAAM,KAE3B,OACEnT,IAAKqT,EAAM,GACXC,MAAOD,EAAM,OAOnBE,gBAAiB,SAAyBC,GAExC,IAKIC,EAAe,IALFD,EAAW1S,IAAI,SAAU4S,GAExC,OAAOA,EAAM1T,IAAM,IAAM0T,EAAMJ,QAGGK,KAAK,KAEzC,OAAOzmB,OAAOO,SAASmmB,SAAWH,GAGpCI,gBAAiB,SAAyB7T,EAAKsT,EAAOtmB,GACpD,IAAI8mB,EAASzlB,KAAK2kB,UAAUhmB,GAExB+mB,EAAgBD,EAAOxR,OAAO,SAAUoR,GAC1C,OAAOA,EAAM1T,MAAQA,IAGnBgU,EAAmBF,EAAOxR,OAAO,SAAUoR,GAC7C,OAAOA,EAAM1T,MAAQA,IAGnBiU,EAAeF,EAAc,QAEEzc,IAAjB2c,EAKhBA,EAAaX,MAAQA,EAGrBW,GACEjU,IAAKA,EACLsT,MAAOA,GAIX,IAAIY,EAAYF,EAKhB,YAFa1c,GAATgc,GAAoBY,EAAUrP,KAAKoP,GAEhC5lB,KAAKklB,gBAAgBW,IAG9BhE,aACEpH,WAAW,EACX2I,uBAAwB,GACxBhI,WACAsS,eAAgB,EAChBU,WACAlvB,YAGFukB,eACEhJ,UAAW6R,WAAWtI,YAAa,EACnCoK,QAAS9B,WAAW+B,YACpBnvB,QAASotB,WAAWgC,cAAc1M,YAClCwB,uBAAwBkJ,WAAWiC,wBAA0B,GAC7D9L,gBAAiB6J,WAAW5J,oBAC5BtH,WACAsS,eAAgBpB,WAAWnI,QAAU,IAIzCpjB,IAAIC,IAAIC,aAER,IAAI0L,EAAQ,IAAIX,KAAKC,OAEnBC,OACEkiB,QAASjc,EAAUsR,cAAc2K,QACjClvB,QAASiT,EAAUsR,cAAcvkB,QACjCub,UAAWtI,EAAUsR,cAAchJ,UACnC2I,uBAAwBjR,EAAUsR,cAAcL,uBAChDX,gBAAiBtQ,EAAUsR,cAAchB,gBACzCrH,QAASjJ,EAAUsR,cAAcrI,QACjCsS,eAAgBvb,EAAUsR,cAAciK,gBAI1C7G,SAEE2H,WAAY,SAAoBtiB,GAC9B,MAAiD,KAA1CA,EAAMkX,uBAAuBF,UAGtCwK,eAAgBvb,EAAU6b,aAAa,kBACvCI,QAASjc,EAAU6b,aAAa,WAChC9uB,QAASiT,EAAU6b,aAAa,WAChCvT,UAAWtI,EAAU6b,aAAa,aAClCvL,gBAAiBtQ,EAAU6b,aAAa,mBACxC5K,uBAAwBjR,EAAU6b,aAAa,2BAIjD3hB,WACEwb,aAAc,SAAsB3b,EAAOwhB,GACzCxhB,EAAMwhB,eAAiBA,GAGzBvG,6BAA8B,SAAsCjb,EAAO+H,GACzE/H,EAAMkX,uBAAyBnP,GAGjCgU,cAAe,SAAuB/b,EAAOhN,GAC3CgN,EAAMhN,QAAUA,GAGlBuvB,cAAe,SAAuBviB,EAAOkiB,GAC3CliB,EAAMkiB,QAAUA,GAGlBpG,aAAc,SAAsB9b,EAAOuO,GACzCvO,EAAMuO,UAAYA,GAGpB+M,SAAU,SAAkBtb,EAAOub,GAEjCvb,EAAMkiB,QAAU3G,EAAS2G,QACzBliB,EAAMhN,QAAUuoB,EAASvoB,QACzBgN,EAAM4V,YAAc2F,EAAS3F,YAC7B5V,EAAMuO,UAAYgN,EAAShN,UAC3BvO,EAAMkX,uBAAyBqE,EAASrE,uBACxClX,EAAMkP,QAAUqM,EAASrM,QACzBlP,EAAMwhB,eAAiBjG,EAASiG,gBAGlC1G,WAAY,SAAoB9a,GAC9B,IAAI+a,EAAW9U,EAAU0P,YACzB,IAAK,IAAIlQ,KAAOsV,EACd/a,EAAMyF,GAAOsV,EAAStV,IAI1BmW,YAAa,SAAqB5b,EAAO6b,GACvC7b,EAAMkX,uBAAyBjR,EAAU0P,YAAYuB,uBACrDjR,EAAUoS,uBAAuB,oBAKrCiE,SACEX,aAAc,SAAsBvgB,EAASomB,GAC3CpmB,EAAQ8G,OAAO,eAAgBsf,IAGjC1F,aAAc,SAAsB1gB,EAASonB,GAC3CpnB,EAAQ8G,OAAO,eAAgBsgB,IAGjC9F,kBAAmB,SAA2BthB,EAAS2M,GACrD3M,EAAQ8G,OAAO,+BAAgC6F,GAC/C3M,EAAQqhB,SAAS,WAGnB/V,OAAQ,SAAgBtL,EAAS2hB,GAG/B,IAAIiD,EAAS5kB,EAAQ4E,MAAMkiB,QAAQna,OAAO,SAAU0a,GAClD,OAAOA,EAAOC,SAAWtnB,EAAQ4E,MAAMkX,yBAEzC9b,EAAQ8G,OAAO,gBAAiB8d,GAEhC,IAAIhC,EAAS,GAUb,IARI5iB,EAAQ4E,MAAMkX,wBAAgD,aAAtB6F,KAC1CiB,EAAS/X,EAAUqT,gBAAgB,WAAYle,EAAQ4E,MAAMkX,uBAAmC,KAAX8G,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAG/G,IAAjCtL,EAAQ4E,MAAMwhB,iBAChBxD,EAAS/X,EAAUqT,gBAAgB,SAAUle,EAAQ4E,MAAMwhB,eAA2B,KAAXxD,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAG3H,KAAXsX,EAAe,CAGjB,IAAI2E,EAAevnB,EAAQuf,QAAQ2H,WACnClnB,EAAQ8G,OAAO,eAAgBygB,GAC/BhwB,OAAOsqB,QAAQC,UAAU9hB,EAAQ4E,MAAO,GAAIge,KAIhD1C,SAAU,SAAkBlgB,EAASmgB,GACnCngB,EAAQ8G,OAAO,WAAYqZ,IAG7BT,WAAY,SAAoB1f,GAC9BA,EAAQ8G,OAAO,kBAOW,IAAIrN,KAElCuB,GAAI,qBAEJqK,MAAOA,EAEPlJ,QAAS,WAEP5E,OAAO2rB,WAAaxqB,KAAKyqB,WAEkB,IAAvCzqB,KAAK6N,OAAOgZ,QAAQ6G,eACtBvb,EAAUkI,SAASra,KAAK6N,OAAOgZ,QAAQ6G,gBAC9B1tB,KAAK6N,OAAOgZ,QAAQpM,UAI/B,IAAIgL,EAAStT,EAAUwS,UAAU9lB,OAAOO,SAASoF,MAE7CihB,EAAO,IAAwB,aAAlBA,EAAO,GAAG9T,KACzB3R,KAAK6N,OAAO8a,SAAS,oBAAqBmG,mBAAmBrJ,EAAO,GAAGR,SAM3EviB,MACE6nB,qBAIFnf,SAAUY,KAAK+iB,YAAY,YAAa,kBAAmB,yBAA0B,UAAW,mBAEhG3qB,SAEEwmB,cAAe,WACb5qB,KAAKqqB,mBAAqBrqB,KAAKqqB,mBAGjCvC,YAAa,SAAqBC,GAChC/nB,KAAK6N,OAAO8a,SAAS,cAAeZ,IAGtCmB,gBAAiB,WACflpB,KAAK6N,OAAO8a,SAAS,cACrBxW,EAAUoS,uBAAuB,kBACjC1lB,OAAOsqB,QAAQC,UAAUjX,EAAUsR,cAAe,GAAI5kB,OAAOO,SAASmmB,WAGxEyF,qBAAsB,SAA8B/F,GAClD,GAAa,IAATA,EAAJ,CAIA,IAAIhR,EAAShE,KAAKC,MAAM+U,GAExBjlB,KAAK6N,OAAO8a,SAAS,oBAAqB1U,QALxCjU,KAAK8nB,YAAY,aAQrB2C,WAAY,WAEN5rB,OAAOsqB,QAAQjd,OACjBlM,KAAK6N,OAAO8a,SAAS,WAAY9pB,OAAOsqB,QAAQjd,OAEL,IAAvClM,KAAK6N,OAAOgZ,QAAQ6G,gBACtBvb,EAAUkI,SAASra,KAAK6N,OAAOgZ,QAAQ6G,iBAGzC1tB,KAAK6N,OAAO8a,SAAS,eAIzBqG,UAAW,SAAmB7vB,GAC5B,MAAc,SAAVA,GAKNosB,YAAa,SAAqBxD,IAC3B/nB,KAAKuqB,iBAAiBjP,QAAQyM,IAAe,GAChD/nB,KAAKuqB,iBAAiB/T,KAAKuR,IAI/ByD,WAAY,SAAoBzD,GAC9B,GAAI/nB,KAAKuqB,iBAAiBjP,QAAQyM,IAAe,EAAG,CAClD,IAAI9Z,EAAQjO,KAAKuqB,iBAAiBjP,QAAQyM,GACtC9Z,GAAS,GACXjO,KAAKuqB,iBAAiBkB,OAAOxd,EAAO,cAQ1CghB,IAAI,SAAShyB,EAAQU,EAAOJ,GAClC,aAEA,GAAI2D,SAASC,eAAe,sBAAuB,CACjD,IAAIgR,GACF0H,eAAgB,cAChByH,gBAAiB,oBACjBtB,gBACE2B,aAAc,EACdC,YAEF6B,eACEvkB,QAASotB,WAAWC,eAAe3K,YACnCE,YAAawK,WAAWC,eAAe5I,aAAe,EACtDlJ,UAAW6R,WAAWtI,YAAa,EACnClE,KAAMwM,WAAWtK,MAAQ,EACzBpM,KAAM0W,WAAWnK,MAAQ,GACzBE,cAAeiK,WAAWpI,eAAiB,GAC3C5B,eAAgBgK,WAAWnI,QAAU,EACrC5B,kBAAmB+J,WAAW9J,kBAC9BC,gBAAiB6J,WAAW4C,cAC5B3b,cAAe+Y,WAAW6C,cAC1BhM,yBAA0BmJ,WAAW9J,kBAAkBvP,KAAK,SAAU0L,GACpE,OAAOA,EAAK0F,aAEZnc,KAAM,GACNgb,SAAU,IAEZE,uBAAwBkJ,WAAW4C,cAAcjc,KAAK,SAAU0L,GAC9D,OAAOA,EAAK0F,aAEZnc,KAAM,GACNgb,SAAU,IAEZkM,qBAAsB9C,WAAW6C,cAAclc,KAAK,SAAU0L,GAC5D,OAAOA,EAAK0F,aAEZnc,KAAM,GACNgb,SAAU,KAGduB,oBAAqB,WACnB,OAAO3c,SAASkS,EAAEha,KAAKshB,iBAAiBvH,SAASE,MAEnD0K,UAAW,SAAmBhmB,GAC5B,IAAIimB,EAAejmB,EAEnB,OAA2B,GAAvBimB,EAAannB,WAIjBmnB,EAAeA,EAAaC,OAAO,IAETC,MAAM,KAEXrS,IAAI,SAAUsS,GACjC,IAAIC,EAAQD,EAASD,MAAM,KAC3B,OACEnT,IAAKqT,EAAM,GACXC,MAAOD,EAAM,OAMnBE,gBAAiB,SAAyBC,GACxC,IAIIC,EAAe,IAJFD,EAAW1S,IAAI,SAAU4S,GACxC,OAAOA,EAAM1T,IAAM,IAAM0T,EAAMJ,QAGGK,KAAK,KAEzC,OAAOzmB,OAAOO,SAASmmB,SAAWH,GAEpCI,gBAAiB,SAAyB7T,EAAKsT,EAAOtmB,GACpD,IAAI8mB,EAASzlB,KAAK2kB,UAAUhmB,GAExB+mB,EAAgBD,EAAOxR,OAAO,SAAUoR,GAC1C,OAAOA,EAAM1T,MAAQA,IAGnBgU,EAAmBF,EAAOxR,OAAO,SAAUoR,GAC7C,OAAOA,EAAM1T,MAAQA,IAGnBiU,EAAeF,EAAc,QAEEzc,IAAjB2c,EAGhBA,EAAaX,MAAQA,EAErBW,GACEjU,IAAKA,EACLsT,MAAOA,GAIX,IAAIY,EAAYF,EAIhB,YAFa1c,GAATgc,GAAoBY,EAAUrP,KAAKoP,GAEhC5lB,KAAKklB,gBAAgBW,IAE9B/L,cAAe,WACb,IAAIC,EAASjS,SAASkS,EAAEnb,QAAQ0Q,SAAW,GAEvCnQ,EAAW0I,SAASkS,EAAEha,KAAK6Z,gBAAgBE,SAASE,KAQxD,OAPAD,EAAE,cAAcE,SACdC,UAAW/a,EAAW2a,GACrB,OAAQ,WACUC,EAAE,eACRjP,UAGR3L,EAAW2a,GAEpBM,SAAU,SAAkBjb,GAC1B4a,EAAE,cAAcE,SACdC,UAAW/a,GACV,OAAQ,WACU4a,EAAE,eACRjP,WAGjB6H,OAAQ,SAAgBR,EAAS4T,EAAYtT,EAAQ2c,EAAQzZ,EAAMkK,GACjE,OAAO/e,IAAIgH,KAAKC,KAAK,iCACnBqe,QAASjU,EACT+P,KAAMvM,EACNuQ,MAAOrG,EAAO,GAAKlK,EACnB6Q,WAAYT,EACZ4I,OAAQlc,EACR4c,OAAQD,IACPzrB,KAAK,SAAUC,GAEhB,OAAuB,KAAnBA,EAAS1E,OACJ0E,EAASC,MAEhBE,QAAQC,IAAI,yCACL+b,iBAER,SAAUjc,GACX,OAAOic,mBAMbjf,IAAIC,IAAIC,aAER,IAAI0L,EAAQ,IAAIX,KAAKC,OAEnBC,OACEhN,QAASiT,EAAUsR,cAAcvkB,QACjC4iB,YAAa3P,EAAUsR,cAAc3B,YACrCrH,UAAWtI,EAAUsR,cAAchJ,UACnCqF,KAAM3N,EAAUsR,cAAc3D,KAC9BlK,KAAMzD,EAAUsR,cAAc7N,KAC9ByM,cAAelQ,EAAUsR,cAAcpB,cACvCC,eAAgBnQ,EAAUsR,cAAcnB,eACxCC,kBAAmBpQ,EAAUsR,cAAclB,kBAC3CE,gBAAiBtQ,EAAUsR,cAAchB,gBACzClP,cAAepB,EAAUsR,cAAclQ,cACvC4P,yBAA0BhR,EAAUsR,cAAcN,yBAClDC,uBAAwBjR,EAAUsR,cAAcL,uBAChDgM,qBAAsBjd,EAAUsR,cAAc2L,sBAGhDvI,SACEtE,kBAAmB,SAA2BrW,GAC5C,OAAOA,EAAMqW,mBAEfE,gBAAiB,SAAyBvW,GACxC,OAAOA,EAAMuW,iBAEflP,cAAe,SAAuBrH,GACpC,OAAOA,EAAMqH,eAEf4P,yBAA0B,SAAkCjX,GAC1D,OAAOA,EAAMiX,0BAEfC,uBAAwB,SAAgClX,GACtD,OAAOA,EAAMkX,wBAEfgM,qBAAsB,SAA8BljB,GAClD,OAAOA,EAAMkjB,sBAEflwB,QAAS,SAAiBgN,GACxB,OAAOA,EAAMhN,SAEf4iB,YAAa,SAAqB5V,GAChC,OAAOA,EAAM4V,aAEfrH,UAAW,SAAmBvO,GAC5B,OAAOA,EAAMuO,WAEfqF,KAAM,SAAc5T,GAClB,OAAOA,EAAM4T,MAEflK,KAAM,SAAc1J,GAClB,OAAOA,EAAM0J,MAEfyM,cAAe,SAAuBnW,GACpC,OAAOA,EAAMmW,eAEfC,eAAgB,SAAwBpW,GACtC,OAAOA,EAAMoW,iBAKjBjW,WACE2a,WAAY,SAAoB9a,GAC9B,IAAI+a,EAAW9U,EAAUsR,cACzB,IAAK,IAAI9R,KAAOsV,EACd/a,EAAMyF,GAAOsV,EAAStV,IAG1BuV,+BAAgC,SAAwChb,EAAO+H,GAC7E/H,EAAMiX,yBAA2BlP,GAEnCkT,6BAA8B,SAAsCjb,EAAO+H,GACzE/H,EAAMkX,uBAAyBnP,GAEjCsb,2BAA4B,SAAoCrjB,EAAO+H,GACrE/H,EAAMkjB,qBAAuBnb,GAE/BuT,SAAU,SAAkBtb,EAAOub,GACjC,IAAK,IAAI9V,KAAO8V,EACdvb,EAAMyF,GAAO8V,EAAS9V,IAG1BgW,SAAU,SAAkBzb,EAAO0b,GACjC1b,EAAM4T,QAER+H,aAAc,SAAsB3b,EAAOoW,GACzCpW,EAAMoW,eAAiBA,GAEzBwF,YAAa,SAAqB5b,EAAO6b,GACpB,eAAfA,EACF7b,EAAMiX,yBAA2BhR,EAAUsR,cAAcN,yBACjC,aAAf4E,EACT7b,EAAMkX,uBAAyBjR,EAAUsR,cAAcL,uBAC/B,WAAf2E,EACT7b,EAAMkjB,qBAAuBjd,EAAUsR,cAAc2L,qBAC7B,YAAfrH,IACT7b,EAAMmW,cAAgBlQ,EAAUsR,cAAcpB,eAEhDrI,EAAE,2BAA2BjP,SAE/Bid,aAAc,SAAsB9b,EAAOuO,GACzCvO,EAAMuO,UAAYA,GAEpBwN,cAAe,SAAuB/b,EAAOhN,GAC3CgN,EAAMhN,QAAUA,GAElBgpB,kBAAmB,SAA2Bhc,EAAOic,GACnDjc,EAAM4V,YAAcqG,GAEtBG,oBAAqB,SAA6Bpc,EAAOqc,GACvDrc,EAAMmW,cAAgBkG,IAI1BC,SACEE,oBAAqB,SAA6BphB,EAAS2M,GAEzD,OADA3M,EAAQ8G,OAAO,iCAAkC6F,GAC1C3M,EAAQqhB,SAAS,WAE1BC,kBAAmB,SAA2BthB,EAAS2M,GAErD,OADA3M,EAAQ8G,OAAO,+BAAgC6F,GACxC3M,EAAQqhB,SAAS,WAE1B6G,gBAAiB,SAAyBloB,EAAS2M,GAEjD,OADA3M,EAAQ8G,OAAO,6BAA8B6F,GACtC3M,EAAQqhB,SAAS,WAE1BnB,SAAU,SAAkBlgB,EAASmgB,GACnCngB,EAAQ8G,OAAO,WAAYqZ,IAE7BE,SAAU,SAAkBrgB,GAE1B,OADAA,EAAQ8G,OAAO,YACR9G,EAAQqhB,SAAS,UAAYhB,UAAU,KAEhDE,aAAc,SAAsBvgB,EAASgb,GAC3Chb,EAAQ8G,OAAO,eAAgBkU,IAEjCwF,YAAa,SAAqBxgB,EAASygB,GAEzC,IAAIiB,KAcJ,GAbwD,KAApD1hB,EAAQ4E,MAAMiX,yBAAyBD,UACzC8F,EAAWxS,KAAKlP,EAAQ4E,MAAMiX,0BAEsB,KAAlD7b,EAAQ4E,MAAMkX,uBAAuBF,UACvC8F,EAAWxS,KAAKlP,EAAQ4E,MAAMkX,wBAEoB,KAAhD9b,EAAQ4E,MAAMkjB,qBAAqBlM,UACrC8F,EAAWxS,KAAKlP,EAAQ4E,MAAMkjB,sBAEI,KAAhC9nB,EAAQ4E,MAAMmW,eAChB2G,EAAWxS,KAAKlP,EAAQ4E,MAAMmW,eAG5B2G,EAAWvrB,OAAS,EAEtB,OADA6J,EAAQ8G,OAAO,cAAe2Z,GACvBzgB,EAAQqhB,SAAS,UAAYM,kBAAmBlB,IAGvDzgB,EAAQ8G,OAAO,eAGnB8a,gBAAiB,SAAyB5hB,GACxCA,EAAQ8G,OAAO,cACfvP,OAAOsqB,QAAQC,UAAUjX,EAAUsR,cAAe,GAAI5kB,OAAOO,SAASmmB,WAExE8D,qBAAsB,SAA8B/hB,EAASgiB,GAE3D,OADAhiB,EAAQ8G,OAAO,sBAAuBkb,GAC/BhiB,EAAQqhB,SAAS,WAG1B/V,OAAQ,SAAgBtL,EAASqiB,GAE/B,IAAIV,GADJU,EAAUA,OACsBV,kBAC5BtB,EAAWgC,EAAQhC,SAOvB,OAJKA,GACHrgB,EAAQ8G,OAAO,YAAc0R,KAAM,IAG9B3N,EAAUS,OAAOtL,EAAQ4E,MAAMmW,cAAe/a,EAAQ4E,MAAMiX,yBAAyBD,SAAU5b,EAAQ4E,MAAMkX,uBAAuBF,SAAU5b,EAAQ4E,MAAMkjB,qBAAqBlM,SAAU5b,EAAQ4E,MAAM0J,KAAMtO,EAAQ4E,MAAM4T,MAAMlc,KAAK,SAAUsoB,GAEvP,IAAIpC,EAAmB,EAKvB,GAJ0B,GAAtBxiB,EAAQ4E,MAAM4T,OAChBgK,EAAmBxiB,EAAQ4E,MAAMhN,QAAQzB,QAGvCkqB,EAAU,CACZ,IAAIoC,EAAmBziB,EAAQ4E,MAAMhN,QACrC6qB,EAAmBA,EAAiBC,OAAOkC,EAAOtK,SAClDta,EAAQ8G,OAAO,gBAAiB2b,GAChCziB,EAAQ8G,OAAO,oBAAqB8d,EAAOvI,kBAE3Crc,EAAQ8G,OAAO,gBAAiB8d,EAAOtK,SACvCta,EAAQ8G,OAAO,oBAAqB8d,EAAOvI,aAG7C,IAAIuG,EAAS,GA+Bb,OA7B0B,GAAtB5iB,EAAQ4E,MAAM4T,OAChBoK,EAAS/X,EAAUqT,gBAAgB,OAAQle,EAAQ4E,MAAM4T,KAAiB,KAAXoK,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAG1F,KAAhCtL,EAAQ4E,MAAMmW,gBAChB6H,EAAS/X,EAAUqT,gBAAgB,UAAWle,EAAQ4E,MAAMmW,cAA0B,KAAX6H,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAGlF,KAApDtL,EAAQ4E,MAAMiX,yBAAyBD,UAAyC,eAAtB+F,IAC5DiB,EAAS/X,EAAUqT,gBAAgB,aAAcle,EAAQ4E,MAAMiX,yBAAyBD,SAAqB,KAAXgH,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAG3G,KAAlDtL,EAAQ4E,MAAMkX,uBAAuBF,UAAyC,aAAtB+F,IAC1DiB,EAAS/X,EAAUqT,gBAAgB,WAAYle,EAAQ4E,MAAMkX,uBAAuBF,SAAqB,KAAXgH,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAGzG,KAAhDtL,EAAQ4E,MAAMkjB,qBAAqBlM,UAAyC,eAAtB+F,IACxDiB,EAAS/X,EAAUqT,gBAAgB,SAAUle,EAAQ4E,MAAMkjB,qBAAqBlM,SAAqB,KAAXgH,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAGpH,IAAjCtL,EAAQ4E,MAAMoW,iBAChB4H,EAAS/X,EAAUqT,gBAAgB,SAAUle,EAAQ4E,MAAMoW,eAA2B,KAAX4H,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAG3H,KAAXsX,IACF5iB,EAAQ8G,OAAO,gBAAgB,GAC/BvP,OAAOsqB,QAAQC,UAAU9hB,EAAQ4E,MAAO,GAAIge,IAGvCJ,QAQW,IAAI/oB,KAE5BuB,GAAI,sBAEJqK,MAAOA,EAEPjK,MACEynB,qBAAsB,GACtBE,mBAAmB,EACnBE,qBAGF9mB,QAAS,WACP5E,OAAO2rB,WAAaxqB,KAAKyqB,WAEkB,IAAvCzqB,KAAK6N,OAAOgZ,QAAQvE,gBACtBnQ,EAAUkI,SAASra,KAAK6N,OAAOgZ,QAAQvE,iBAI3ClX,UACEmX,kBAAmB,WACjB,OAAOviB,KAAK6N,OAAOgZ,QAAQtE,mBAE7BE,gBAAiB,WACf,OAAOziB,KAAK6N,OAAOgZ,QAAQpE,iBAE7BlP,cAAe,WACb,OAAOvT,KAAK6N,OAAOgZ,QAAQtT,eAE7B4P,yBAA0B,WACxB,OAAOnjB,KAAK6N,OAAOgZ,QAAQ1D,0BAE7BC,uBAAwB,WACtB,OAAOpjB,KAAK6N,OAAOgZ,QAAQzD,wBAE7BgM,qBAAsB,WACpB,OAAOpvB,KAAK6N,OAAOgZ,QAAQuI,sBAE7BlwB,QAAS,WACP,OAAOc,KAAK6N,OAAOgZ,QAAQ3nB,SAE7B4iB,YAAa,WACX,OAAO9hB,KAAK6N,OAAOgZ,QAAQ/E,aAE7BrH,UAAW,WACT,OAAOza,KAAK6N,OAAOgZ,QAAQpM,WAE7BqF,KAAM,WACJ,OAAO9f,KAAK6N,OAAOgZ,QAAQ/G,MAE7BlK,KAAM,WACJ,OAAO5V,KAAK6N,OAAOgZ,QAAQjR,MAE7ByM,cAAe,WACb,OAAOriB,KAAK6N,OAAOgZ,QAAQxE,eAE7BC,eAAgB,WACd,OAAOtiB,KAAK6N,OAAOgZ,QAAQvE,gBAE7BoI,YAAa,WACX,IAAI1B,KAeJ,MAb+C,KAA3ChpB,KAAKmjB,yBAAyBD,UAChC8F,EAAWxS,KAAKxW,KAAKmjB,0BAEsB,KAAzCnjB,KAAKojB,uBAAuBF,UAC9B8F,EAAWxS,KAAKxW,KAAKojB,wBAEoB,KAAvCpjB,KAAKovB,qBAAqBlM,UAC5B8F,EAAWxS,KAAKxW,KAAKovB,sBAEI,KAAvBpvB,KAAKqiB,eACP2G,EAAWxS,KAAKxW,KAAKqiB,eAGhB2G,EAAWvrB,SAKtB2G,SACEwmB,cAAe,WACb5qB,KAAKqqB,mBAAqBrqB,KAAKqqB,mBAEjCU,uBAAwB,SAAgC9F,GACtD,GAAa,IAATA,EAAJ,CAIA,IAAIhR,EAAShE,KAAKC,MAAM+U,GAExBjlB,KAAK6N,OAAO8a,SAAS,sBAAuB1U,QAL1CjU,KAAK8nB,YAAY,eAOrBkD,qBAAsB,SAA8B/F,GAClD,GAAa,IAATA,EAAJ,CAIA,IAAIhR,EAAShE,KAAKC,MAAM+U,GAExBjlB,KAAK6N,OAAO8a,SAAS,oBAAqB1U,QALxCjU,KAAK8nB,YAAY,aAOrB2H,mBAAoB,SAA4BxK,GAC9C,GAAa,IAATA,EAAJ,CAIA,IAAIhR,EAAShE,KAAKC,MAAM+U,GAExBjlB,KAAK6N,OAAO8a,SAAS,kBAAmB1U,QALtCjU,KAAK8nB,YAAY,WAOrBH,SAAU,WACR3nB,KAAK6N,OAAO8a,SAAS,eAAgBxW,EAAUsS,uBAC/CzkB,KAAK6N,OAAO8a,SAAS,YAAY/kB,KAAK,SAAUkmB,GAC9C9P,EAAE,uBAAuB/G,KAAK,aAAatP,IAAImmB,GAAkB/e,WAGrEqgB,kBAAmB,WACiB,KAA9BprB,KAAKmqB,sBAEPnqB,KAAK6N,OAAO8a,SAAS,uBAAwB3oB,KAAKmqB,sBAEpDnqB,KAAKmqB,qBAAuB,IAE9BrC,YAAa,SAAqBC,GAChC/nB,KAAK6N,OAAO8a,SAAS,cAAeZ,GACpClpB,OAAOsqB,QAAQC,UAAUjX,EAAUsR,cAAe,GAAI5kB,OAAOO,SAASmmB,WAExE2D,gBAAiB,WACflpB,KAAK6N,OAAO8a,SAAS,mBACrB3O,EAAE,2BAA2BjP,QAC7BlM,OAAOsqB,QAAQC,UAAUjX,EAAUsR,cAAe,GAAI5kB,OAAOO,SAASmmB,WAExEkF,WAAY,WACN5rB,OAAOsqB,QAAQjd,OACjBlM,KAAK6N,OAAO8a,SAAS,WAAY9pB,OAAOsqB,QAAQjd,OACpB,IAAxBlM,KAAKsiB,gBACPnQ,EAAUkI,SAASra,KAAKsiB,iBAG1BtiB,KAAK6N,OAAO8a,SAAS,gBAGzB4C,YAAa,SAAqBxD,IAC3B/nB,KAAKuqB,iBAAiBjP,QAAQyM,IAAe,GAChD/nB,KAAKuqB,iBAAiB/T,KAAKuR,IAG/ByD,WAAY,SAAoBzD,GAC9B,GAAI/nB,KAAKuqB,iBAAiBjP,QAAQyM,IAAe,EAAG,CAClD,IAAI9Z,EAAQjO,KAAKuqB,iBAAiBjP,QAAQyM,GACtC9Z,GAAS,GACXjO,KAAKuqB,iBAAiBkB,OAAOxd,EAAO,cAQ1CyhB,IAAI,SAASzyB,EAAQU,EAAOJ,GAClC,aAIA,GAAI2D,SAASC,eAAe,yBAA0B,CACpD,IAAIgR,GACF0H,eAAgB,0BAChByH,gBAAiB,oBAEjBiD,uBAAwB,SAAgCpf,GACtDqf,YAAc,IAAMrf,EACpB6U,EAAEwK,aAAapR,IAAI,KAGrB4a,aAAc,SAAsBC,GAClC,OAAO,SAAU/hB,GACf,OAAOA,EAAM+hB,KAIjBnU,cAAe,WACb,IAAIC,EAASjS,SAASkS,EAAEnb,QAAQ0Q,SAAW,GACvCnQ,EAAW0I,SAASkS,EAAEha,KAAK6Z,gBAAgBE,SAASE,KAQxD,OAPAD,EAAE,cAAcE,SACdC,UAAW/a,EAAW2a,GACrB,OAAQ,WACUC,EAAE,2BACRjP,UAGR3L,EAAW2a,GAGpBM,SAAU,SAAkBjb,GAC1B4a,EAAE,cAAcE,SACdC,UAAW/a,GACV,OAAQ,WACU4a,EAAE,2BACRjP,WAIjB0Z,oBAAqB,WACnB,OAAO3c,SAASkS,EAAEha,KAAKshB,iBAAiBvH,SAASE,MAGnD0K,UAAW,SAAmBhmB,GAE5B,IAAIimB,EAAejmB,EAEnB,OAA2B,GAAvBimB,EAAannB,WAEjBmnB,EAAeA,EAAaC,OAAO,IAETC,MAAM,KAEXrS,IAAI,SAAUsS,GAEjC,IAAIC,EAAQD,EAASD,MAAM,KAE3B,OACEnT,IAAKqT,EAAM,GACXC,MAAOD,EAAM,OAOnBE,gBAAiB,SAAyBC,GAExC,IAKIC,EAAe,IALFD,EAAW1S,IAAI,SAAU4S,GAExC,OAAOA,EAAM1T,IAAM,IAAM0T,EAAMJ,QAGGK,KAAK,KAEzC,OAAOzmB,OAAOO,SAASmmB,SAAWH,GAGpCI,gBAAiB,SAAyB7T,EAAKsT,EAAOtmB,GACpD,IAAI8mB,EAASzlB,KAAK2kB,UAAUhmB,GAExB+mB,EAAgBD,EAAOxR,OAAO,SAAUoR,GAC1C,OAAOA,EAAM1T,MAAQA,IAGnBgU,EAAmBF,EAAOxR,OAAO,SAAUoR,GAC7C,OAAOA,EAAM1T,MAAQA,IAGnBiU,EAAeF,EAAc,QAEEzc,IAAjB2c,EAKhBA,EAAaX,MAAQA,EAGrBW,GACEjU,IAAKA,EACLsT,MAAOA,GAIX,IAAIY,EAAYF,EAKhB,OAFMV,GAAOY,EAAUrP,KAAKoP,GAErB5lB,KAAKklB,gBAAgBW,IAG9BjT,OAAQ,SAAgB+c,EAAQvwB,EAAU4mB,EAAYC,EAAO2J,EAAWC,EAAWC,EAAgB7xB,EAAU8E,EAAMqP,EAASwD,EAAMD,GAChI,OAAO5U,IAAIgH,KAAKC,KAAK,6BACnB+nB,OAAQJ,EACRznB,KAAMnF,EACNsjB,QAASjU,EACT+P,KAAMvM,EACNuQ,KAAMxQ,EACN6Q,SAAUpnB,EACVqnB,WAAYT,EACZU,MAAOT,EACP+J,UAAWJ,EACXK,UAAWJ,EACXK,eAAgBJ,EAChBK,SAAUlyB,IACT2F,KAAK,SAAUC,GAChB,OAAuB,KAAnBA,EAAS1E,OACJ0E,EAASC,MAEhBE,QAAQC,IAAI,yCACL+b,iBAER,SAAUjc,GACX,OAAOic,kBAIX6B,aACE8N,OAAQ,GACR7P,KAAM,EACNlK,KAAM0W,WAAWnK,MAAQ,GACzBL,YAAa,EACbrH,WAAW,EACX0I,0BAA4Bjb,KAAM,aAAcgb,SAAU,IAC1DG,qBAAuBnb,KAAM,QAASgb,SAAU,IAChDE,wBAA0Blb,KAAM,WAAYgb,SAAU,IACtDkN,wBAA0BloB,KAAM,WAAYgb,SAAU,IACtDmN,yBAA2BnoB,KAAM,YAAagb,SAAU,IACxDoN,yBAA2BpoB,KAAM,6BAA8Bgb,SAAU,IACzEqN,8BAAgCroB,KAAM,iBAAkBgb,SAAU,IAClEsN,WAAY,GACZnO,cAAe,GACfjH,WACAsS,eAAgB,EAChB+C,kBAGFhN,eACEkM,OAAQrD,WAAWoE,gBAAkB,GACrC5Q,KAAMwM,WAAWtK,MAAQ,EACzBpM,KAAM0W,WAAWnK,MAAQ,GACzBsO,cAAenE,WAAWgC,cAAc1M,YACxCE,YAAawK,WAAWgC,cAAc3K,aAAe,EACrDlJ,UAAW6R,WAAWtI,YAAa,EACnCb,yBAA0BmJ,WAAW9J,kBAAkBvP,KAAK,SAAU0L,GACpE,OAAOA,EAAK0F,aAEZnc,KAAM,aACNgb,SAAU,IAEZG,oBAAqBiJ,WAAW1J,aAAa3P,KAAK,SAAU0L,GAC1D,OAAOA,EAAK0F,aAEZnc,KAAM,QACNgb,SAAU,IAEZE,uBAAwBkJ,WAAW5J,gBAAgBzP,KAAK,SAAU0L,GAChE,OAAOA,EAAK0F,aAEZnc,KAAM,WACNgb,SAAU,IAEZkN,uBAAwB9D,WAAWqE,gBAAgB1d,KAAK,SAAU0L,GAChE,OAAOA,EAAK0F,aAEZnc,KAAM,WACNgb,SAAU,IAEZmN,wBAAyB/D,WAAWsE,yBAAyB3d,KAAK,SAAU0L,GAC1E,OAAOA,EAAK0F,aAEZnc,KAAM,YACNgb,SAAU,IAEZoN,wBAAyBhE,WAAWuE,sCAClC3oB,KAAM,6BACNgb,SAAU,IAEZqN,6BAA8BjE,WAAWwE,sBAAsB7d,KAAK,SAAU0L,GAC5E,OAAOA,EAAK0F,aAEZnc,KAAM,iBACNgb,SAAU,IAEZX,kBAAmB+J,WAAW9J,sBAC9BG,aAAc2J,WAAW1J,iBACzBH,gBAAiB6J,WAAW5J,oBAC5BqO,gBAAiBzE,WAAWqE,oBAC5BK,iBAAkB1E,WAAWsE,6BAC7BK,sBAAuB3E,WAAWwE,0BAClCN,WAAYlE,WAAW4E,YAAc,GACrC7O,cAAeiK,WAAWpI,eAAiB,GAC3C9I,WACAsS,eAAgBpB,WAAWnI,QAAU,EACrCgN,eAIJpwB,IAAIC,IAAIC,aAER,IAAI0L,EAAQ,IAAIX,KAAKC,OAEnBC,OACEukB,cAAete,EAAUsR,cAAcgN,cACvCd,OAAQxd,EAAUsR,cAAckM,OAChC7P,KAAM3N,EAAUsR,cAAc3D,KAC9BlK,KAAMzD,EAAUsR,cAAc7N,KAC9BkM,YAAa3P,EAAUsR,cAAc3B,YACrCrH,UAAWtI,EAAUsR,cAAchJ,UACnC0I,yBAA0BhR,EAAUsR,cAAcN,yBAClDE,oBAAqBlR,EAAUsR,cAAcJ,oBAC7CD,uBAAwBjR,EAAUsR,cAAcL,uBAChDgN,uBAAwBje,EAAUsR,cAAc2M,uBAChDC,wBAAyBle,EAAUsR,cAAc4M,wBACjDC,wBAAyBne,EAAUsR,cAAc6M,wBACjDC,6BAA8Bpe,EAAUsR,cAAc8M,6BACtDhO,kBAAmBpQ,EAAUsR,cAAclB,kBAC3CI,aAAcxQ,EAAUsR,cAAcd,aACtCF,gBAAiBtQ,EAAUsR,cAAchB,gBACzCsO,gBAAiB5e,EAAUsR,cAAcsN,gBACzCC,iBAAkB7e,EAAUsR,cAAcuN,iBAC1CC,sBAAuB9e,EAAUsR,cAAcwN,sBAC/CT,WAAYre,EAAUsR,cAAc+M,WACpCnO,cAAelQ,EAAUsR,cAAcpB,cACvCjH,QAASjJ,EAAUsR,cAAcrI,QACjCsS,eAAgBvb,EAAUsR,cAAciK,eAExCyD,UAAWhf,EAAUsR,cAAc0N,UACnCC,iBAAiB,EACjBC,iBAAkB,GAClBC,UAAU,EACVC,mBAAoB,IAItB1K,SAlQqB2K,GAoQnBhD,WAAY,SAAoBtiB,GAE9B,MAA+B,KAAxBA,EAAMmW,eAA6C,KAArBnW,EAAMskB,YAAgE,KAA3CtkB,EAAMmkB,wBAAwBnN,UAA8D,KAA3ChX,EAAMokB,wBAAwBpN,UAA6D,KAA1ChX,EAAMkkB,uBAAuBlN,UAA6D,KAA1ChX,EAAMkX,uBAAuBF,UAA+D,KAA5ChX,EAAMiX,yBAAyBD,UAA0D,KAAvChX,EAAMmX,oBAAoBH,UAAmE,KAAhDhX,EAAMqkB,6BAA6BrN,UAAoC,KAAjBhX,EAAMyjB,QAG/ZjC,eAAgBvb,EAAU6b,aAAa,kBACvClO,KAAM3N,EAAU6b,aAAa,QAC7BpY,KAAMzD,EAAU6b,aAAa,QAC7ByD,mBAAoBtf,EAAU6b,aAAa,cAC3C0D,sBAAuBvf,EAAU6b,aAAa,iBAC9CyC,cAAete,EAAU6b,aAAa,iBACtCvT,UAAWtI,EAAU6b,aAAa,aAClC2B,OAAQxd,EAAU6b,aAAa,UAC/BzL,kBAAmBpQ,EAAU6b,aAAa,qBAC1CrL,aAAcxQ,EAAU6b,aAAa,gBACrCvL,gBAAiBtQ,EAAU6b,aAAa,mBACxC+C,gBAAiB5e,EAAU6b,aAAa,mBACxCgD,iBAAkB7e,EAAU6b,aAAa,oBACzCiD,sBAAuB9e,EAAU6b,aAAa,yBAC9C7K,yBAA0BhR,EAAU6b,aAAa,4BACjD3K,oBAAqBlR,EAAU6b,aAAa,uBAC5C5K,uBAAwBjR,EAAU6b,aAAa,0BAC/CoC,uBAAwBje,EAAU6b,aAAa,0BAC/CqC,wBAAyBle,EAAU6b,aAAa,2BAChDsC,wBAAyBne,EAAU6b,aAAa,2BAChDuC,6BAA8Bpe,EAAU6b,aAAa,gCACrDlM,YAAa3P,EAAU6b,aAAa,eAEpCmD,UAAWhf,EAAU6b,aAAa,aAClCoD,gBAAiBjf,EAAU6b,aAAa,mBACxCuD,mBAAoBpf,EAAU6b,aAAa,sBAC3CsD,SAAUnf,EAAU6b,aAAa,aAnSTrc,EAoSvB,qBApS4BsT,EAoSN9S,EAAU6b,aAAa,sBApSJrc,KAAO6f,EAAOG,OAAOC,eAAeJ,EAAK7f,GAAOsT,MAAOA,EAAO4M,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAI7f,GAAOsT,EAAgBuM,GAuSvMnlB,WACEwb,aAAc,SAAsB3b,EAAOwhB,GACzCxhB,EAAMwhB,eAAiBA,GAGzB/F,SAAU,SAAkBzb,EAAO0b,GACjC1b,EAAM4T,QAGRkS,WAAY,SAAoB9lB,EAAO4T,GACrC5T,EAAM4T,KAAOA,GAGfmS,iBAAkB,SAA0B/lB,EAAOqc,GACjDrc,EAAMskB,WAAajI,GAGrBD,oBAAqB,SAA6Bpc,EAAOqc,GACvDrc,EAAMmW,cAAgBkG,GAGxB2J,aAAc,SAAsBhmB,EAAOyjB,GACzCzjB,EAAMyjB,OAASA,GAGjBzI,+BAAgC,SAAwChb,EAAO+H,GAC7E/H,EAAMiX,yBAA2BlP,GAEnCmT,0BAA2B,SAAmClb,EAAO+H,GACnE/H,EAAMmX,oBAAsBpP,GAG9BkT,6BAA8B,SAAsCjb,EAAO+H,GACzE/H,EAAMkX,uBAAyBnP,GAGjCke,6BAA8B,SAAsCjmB,EAAO+H,GACzE/H,EAAMkkB,uBAAyBnc,GAGjCme,8BAA+B,SAAuClmB,EAAO+H,GAC3E/H,EAAMmkB,wBAA0Bpc,GAGlCoe,8BAA+B,SAAuCnmB,EAAO+H,GAC3E/H,EAAMokB,wBAA0Brc,GAGlCqe,mCAAoC,SAA4CpmB,EAAO+H,GACrF/H,EAAMqkB,6BAA+Btc,GAKvCse,oBAAqB,SAA6BrmB,EAAOukB,GACvDvkB,EAAMukB,cAAgBA,GAGxBvI,kBAAmB,SAA2Bhc,EAAOic,GACnDjc,EAAM4V,YAAcqG,GAGtBH,aAAc,SAAsB9b,EAAOuO,GACzCvO,EAAMuO,UAAYA,GAGpB+M,SAAU,SAAkBtb,EAAOub,GACjC,IAAK,IAAI9V,KAAO8V,EACdvb,EAAMyF,GAAO8V,EAAS9V,IAI1BqV,WAAY,SAAoB9a,GAC9B,IAAI+a,EAAW9U,EAAU0P,YACzB,IAAK,IAAIlQ,KAAOsV,EACd/a,EAAMyF,GAAOsV,EAAStV,IAI1B6gB,YAAa,SAAqBtmB,GAChCA,EAAMyjB,OAASxd,EAAU0P,YAAY8N,OACrC3V,EAAE,2BAA2BjP,SAG/B+c,YAAa,SAAqB5b,EAAO6b,GACpB,eAAfA,GACF7b,EAAMiX,yBAA2BhR,EAAU0P,YAAYsB,yBACvDnJ,EAAE,2BAA2BjP,QAC7BoH,EAAUoS,uBAAuB,qBACT,UAAfwD,GACT7b,EAAMmX,oBAAsBlR,EAAU0P,YAAYwB,oBAClDrJ,EAAE,2BAA2BjP,QAC7BoH,EAAUoS,uBAAuB,mBACT,aAAfwD,GACT7b,EAAMkX,uBAAyBjR,EAAU0P,YAAYuB,uBACrDpJ,EAAE,2BAA2BjP,QAC7BoH,EAAUoS,uBAAuB,mBACT,aAAfwD,GACT7b,EAAMkkB,uBAAyBje,EAAU0P,YAAYuO,uBACrDpW,EAAE,2BAA2BjP,QAC7BoH,EAAUoS,uBAAuB,mBACT,cAAfwD,GACT/N,EAAE,2BAA2BjP,QAC7BmB,EAAMmkB,wBAA0Ble,EAAU0P,YAAYwO,wBACtDle,EAAUoS,uBAAuB,oBACT,cAAfwD,GACT/N,EAAE,2BAA2BjP,QAC7BmB,EAAMokB,wBAA0Bne,EAAU0P,YAAYyO,yBAC9B,mBAAfvI,GACT7b,EAAMqkB,6BAA+Bpe,EAAU0P,YAAY0O,6BAC3DvW,EAAE,2BAA2BjP,QAC7BoH,EAAUoS,uBAAuB,0BACT,SAAfwD,GACT/N,EAAE,2BAA2BjP,QAC7BmB,EAAMskB,WAAare,EAAU0P,YAAY2O,YACjB,YAAfzI,IACT/N,EAAE,2BAA2BjP,QAC7BmB,EAAMmW,cAAgBlQ,EAAU0P,YAAYQ,gBAKhDoQ,gBAAiB,SAAyBvmB,EAAOilB,GAC/CjlB,EAAMilB,UAAYA,GAGpBuB,sBAAuB,SAA+BxmB,EAAOklB,GAC3DllB,EAAMklB,gBAAkBA,GAG1BuB,yBAA0B,SAAkCzmB,EAAOqlB,GACjErlB,EAAMqlB,mBAAqBA,GAG7BqB,eAAgB,SAAwB1mB,EAAOolB,GAC7CplB,EAAMolB,SAAWA,IAKrB9I,SACEX,aAAc,SAAsBvgB,EAASomB,GAC3CpmB,EAAQ8G,OAAO,eAAgBsf,IAGjC/F,SAAU,SAAkBrgB,GAE1B,OADAA,EAAQ8G,OAAO,YACR9G,EAAQqhB,SAAS,UAAYhB,UAAU,KAGhDK,aAAc,SAAsB1gB,EAASonB,GAC3CpnB,EAAQ8G,OAAO,eAAgBsgB,IAGjCuD,iBAAkB,SAA0B3qB,EAASihB,GACnDjhB,EAAQ8G,OAAO,mBAAoBma,IAGrCD,oBAAqB,SAA6BhhB,EAASihB,GACzDjhB,EAAQ8G,OAAO,sBAAuBma,IAGxC2J,aAAc,SAAsB5qB,EAASqoB,GAE3C,OADAroB,EAAQ8G,OAAO,eAAgBuhB,GACxBroB,EAAQqhB,SAAS,WAE1BqJ,WAAY,SAAoB1qB,EAASurB,GACvCvrB,EAAQ8G,OAAO,aAAcykB,IAG/B/K,YAAa,SAAqBxgB,EAASygB,GAMzC,MALkB,UAAdA,EACFzgB,EAAQ8G,OAAO,eAEf9G,EAAQ8G,OAAO,cAAe2Z,GAEzBzgB,EAAQqhB,SAAS,UAAYM,kBAAmBlB,KAGzDW,oBAAqB,SAA6BphB,EAAS2M,GAEzD,OADA3M,EAAQ8G,OAAO,iCAAkC6F,GAC1C3M,EAAQqhB,SAAS,WAG1BE,eAAgB,SAAwBvhB,EAAS2M,GAE/C,OADA3M,EAAQ8G,OAAO,4BAA6B6F,GACrC3M,EAAQqhB,SAAS,WAG1BC,kBAAmB,SAA2BthB,EAAS2M,GAErD,OADA3M,EAAQ8G,OAAO,+BAAgC6F,GACxC3M,EAAQqhB,SAAS,WAG1BmK,kBAAmB,SAA2BxrB,EAAS2M,GAErD,OADA3M,EAAQ8G,OAAO,+BAAgC6F,GACxC3M,EAAQqhB,SAAS,WAG1BoK,mBAAoB,SAA4BzrB,EAAS2M,GAEvD,OADA3M,EAAQ8G,OAAO,gCAAiC6F,GACzC3M,EAAQqhB,SAAS,WAG1BqK,mBAAoB,SAA4B1rB,EAAS2M,GAEvD,OADA3M,EAAQ8G,OAAO,gCAAiC6F,GACzC3M,EAAQqhB,SAAS,WAG1BsK,wBAAyB,SAAiC3rB,EAAS2M,GAEjE,OADA3M,EAAQ8G,OAAO,qCAAsC6F,GAC9C3M,EAAQqhB,SAAS,WAI1B8J,gBAAiB,SAAyBnrB,EAAS6pB,GACjD7pB,EAAQ8G,OAAO,kBAAmB+iB,IAGpCuB,sBAAuB,SAA+BprB,EAAS8pB,GAC7D9pB,EAAQ8G,OAAO,wBAAyBgjB,IAG1CuB,yBAA0B,SAAkCrrB,EAASiqB,GACnEjqB,EAAQ8G,OAAO,2BAA4BmjB,IAG7CqB,eAAgB,SAAwBtrB,EAASgqB,GAC/ChqB,EAAQ8G,OAAO,iBAAkBkjB,IAGnC1e,OAAQ,SAAgBtL,EAASqiB,GAE/B,IAAIV,GADJU,EAAUA,OACsBV,kBAC5BtB,EAAWgC,EAAQhC,SACnBhS,EAAOrO,EAAQ4E,MAAMukB,cAAchzB,OASvC,OAPKkqB,IAEHrgB,EAAQ8G,OAAO,YAAc0R,KAAM,IACnCnK,EAAO,GAIFxD,EAAUS,OAAOtL,EAAQ4E,MAAMyjB,OAAQroB,EAAQ4E,MAAMkX,uBAAuBF,SAAU5b,EAAQ4E,MAAMiX,yBAAyBD,SAAU5b,EAAQ4E,MAAMmX,oBAAoBH,SAAU5b,EAAQ4E,MAAMmkB,wBAAwBnN,SAAU5b,EAAQ4E,MAAMokB,wBAAwBpN,SAAU5b,EAAQ4E,MAAMqkB,6BAA6BrN,SAAU5b,EAAQ4E,MAAMkkB,uBAAuBlN,SAAU5b,EAAQ4E,MAAMskB,WAAYlpB,EAAQ4E,MAAMmW,cAAe/a,EAAQ4E,MAAM0J,KAAMD,GAAM/R,KAAK,SAAUsoB,GAG5d,IAAIpC,EAAmB,EAKvB,GAJ0B,GAAtBxiB,EAAQ4E,MAAM4T,OAChBgK,EAAmBxiB,EAAQ4E,MAAMukB,cAAchzB,QAG7CkqB,EAAU,CACZ,IAAIuL,EAAyB5rB,EAAQ4E,MAAMukB,cAC3CyC,EAAyBA,EAAuBlJ,OAAOkC,EAAOtK,SAC9Dta,EAAQ8G,OAAO,sBAAuB8kB,QAEtC5rB,EAAQ8G,OAAO,sBAAuB8d,EAAOtK,SAG/Cta,EAAQ8G,OAAO,oBAAqB8d,EAAOvI,aAC3C,IAAIuG,EAAS,GAoDb,GAlD0B,GAAtB5iB,EAAQ4E,MAAM4T,OAChBoK,EAAS/X,EAAUqT,gBAAgB,OAAQle,EAAQ4E,MAAM4T,KAAiB,KAAXoK,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAGjG,KAAzBtL,EAAQ4E,MAAMyjB,QAAsC,UAArB1G,IAGjCiB,EAAS/X,EAAUqT,gBAAgB,SAAUle,EAAQ4E,MAAMyjB,OAAmB,KAAXzF,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAG1E,KAApDtL,EAAQ4E,MAAMiX,yBAAyBD,UAAyC,eAAtB+F,IAC5DiB,EAAS/X,EAAUqT,gBAAgB,aAAcle,EAAQ4E,MAAMiX,yBAAyBD,SAAqB,KAAXgH,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAG9G,KAA/CtL,EAAQ4E,MAAMmX,oBAAoBH,UAAyC,UAAtB+F,IACvDiB,EAAS/X,EAAUqT,gBAAgB,QAASle,EAAQ4E,MAAMmX,oBAAoBH,SAAqB,KAAXgH,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAGjG,KAAlDtL,EAAQ4E,MAAMkX,uBAAuBF,UAAyC,aAAtB+F,IAC1DiB,EAAS/X,EAAUqT,gBAAgB,WAAYle,EAAQ4E,MAAMkX,uBAAuBF,SAAqB,KAAXgH,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAGvG,KAAlDtL,EAAQ4E,MAAMkkB,uBAAuBlN,UAAyC,aAAtB+F,IAC1DiB,EAAS/X,EAAUqT,gBAAgB,WAAYle,EAAQ4E,MAAMkkB,uBAAuBlN,SAAqB,KAAXgH,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAGtG,KAAnDtL,EAAQ4E,MAAMmkB,wBAAwBnN,UAAyC,cAAtB+F,IAC3DiB,EAAS/X,EAAUqT,gBAAgB,YAAale,EAAQ4E,MAAMmkB,wBAAwBnN,SAAqB,KAAXgH,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAGxG,KAAnDtL,EAAQ4E,MAAMokB,wBAAwBpN,UAAyC,cAAtB+F,IAC3DiB,EAAS/X,EAAUqT,gBAAgB,YAAale,EAAQ4E,MAAMokB,wBAAwBpN,SAAqB,KAAXgH,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAGnG,KAAxDtL,EAAQ4E,MAAMqkB,6BAA6BrN,UAAyC,mBAAtB+F,IAChEiB,EAAS/X,EAAUqT,gBAAgB,iBAAkBle,EAAQ4E,MAAMqkB,6BAA6BrN,SAAqB,KAAXgH,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAGxI,KAA7BtL,EAAQ4E,MAAMskB,YAA2C,SAAtBvH,IACrCiB,EAAS/X,EAAUqT,gBAAgB,OAAQle,EAAQ4E,MAAMskB,WAAuB,KAAXtG,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAGhG,KAAhCtL,EAAQ4E,MAAMmW,eAA8C,YAAtB4G,IACxCiB,EAAS/X,EAAUqT,gBAAgB,UAAWle,EAAQ4E,MAAMmW,cAA0B,KAAX6H,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAGrG,IAAjCtL,EAAQ4E,MAAMwhB,iBAChBxD,EAAS/X,EAAUqT,gBAAgB,SAAUle,EAAQ4E,MAAMwhB,eAA2B,KAAXxD,EAAgB,IAAMA,EAAOpF,MAAM,KAAK,GAAKjmB,OAAOO,SAASwT,SAG3H,KAAXsX,EAAe,CAGjB,IAAI2E,EAAevnB,EAAQuf,QAAQ2H,WACnClnB,EAAQ8G,OAAO,eAAgBygB,GAC/BhwB,OAAOsqB,QAAQC,UAAU9hB,EAAQ4E,MAAO,GAAIge,GAG9C,OAAOJ,KAIXqJ,kBAAmB,SAA2B7rB,EAASgiB,GACjDA,GACFhiB,EAAQ8G,OAAO,mBAAoBkb,IAIvCD,qBAAsB,SAA8B/hB,EAASgiB,GACvDA,GACFhiB,EAAQ8G,OAAO,sBAAuBkb,IAI1C9B,SAAU,SAAkBlgB,EAASmgB,GACnCngB,EAAQ8G,OAAO,WAAYqZ,IAG7BT,WAAY,SAAoB1f,GAC9BA,EAAQ8G,OAAO,kBAOc,IAAIrN,KAErCuB,GAAI,yBAEJqK,MAAOA,EAEPlJ,QAAS,WAEP,IAAIoP,EAAM7S,KACVe,IAAIgH,KAAKpE,IAAI,yBAAyBC,KAAK,SAAUC,GACnDgP,EAAIhF,OAAO8a,SAAS,kBAAmB9kB,EAASC,KAAKlB,MACrDiQ,EAAIhF,OAAO8a,SAAS,yBAAyB,IAE5C,SAAU5kB,GACXC,QAAQC,IAAIF,KAGdlF,OAAO2rB,WAAaxqB,KAAKyqB,WAEkB,IAAvCzqB,KAAK6N,OAAOgZ,QAAQ6G,eACtBvb,EAAUkI,SAASra,KAAK6N,OAAOgZ,QAAQ6G,gBAC9B1tB,KAAK6N,OAAOgZ,QAAQpM,WAKjC/X,MACE0wB,sBAAuB,GACvBC,yBAA0B,GAC1BhJ,mBAAmB,EACnBrE,WAAY,GACZuE,oBACA3nB,KAAM,KACNG,KAAM,GACNC,MAAO,GACPC,QAAS,GACTM,mBAAoB,GACpBC,SAAU,GACVuB,aAAc,IAIhBqG,SAAUY,KAAK+iB,YAAY,OAAQ,OAAQ,SAAU,gBAAiB,YAAa,oBAAqB,eAAgB,kBAAmB,kBAAmB,mBAAoB,wBAAyB,2BAA4B,sBAAuB,yBAA0B,yBAA0B,0BAA2B,0BAA2B,+BAAgC,qBAAsB,wBAAyB,cAAe,iBAAkB,YAAa,kBAAmB,mBAAoB,WAAY,uBAGxhB3qB,SAEEwmB,cAAe,WACb5qB,KAAKqqB,mBAAqBrqB,KAAKqqB,mBAGjC1C,SAAU,WACR3nB,KAAK6N,OAAO8a,SAAS,eAAgBxW,EAAUsS,uBAC/CzkB,KAAK6N,OAAO8a,SAAS,YAAY/kB,KAAK,SAAUkmB,GAC9C9P,EAAE,0BAA0B/G,KAAK,6BAA6BtP,IAAImmB,GAAkB/e,WAKxFqgB,kBAAmB,WAEkB,KAA/BprB,KAAKozB,uBAAkE,KAAlCpzB,KAAKqzB,2BAC5CrzB,KAAK6N,OAAO8a,SAAS,oBAAqB3oB,KAAKozB,uBAC/CpzB,KAAK6N,OAAO8a,SAAS,uBAAwB3oB,KAAKqzB,0BAClDrzB,KAAK6N,OAAO8a,SAAS,UAGrB3oB,KAAKozB,sBAAwB,GAC7BpzB,KAAKqzB,yBAA2B,KAKpCC,YAAa,SAAqB3D,GAChC3V,EAAE,2BAA2BjP,QAC7B/K,KAAK6N,OAAO8a,SAAS,eAAgBgH,GACrC3vB,KAAK6N,OAAO8a,SAAS,aAAc,IAGrCb,YAAa,SAAqBC,GAChC/nB,KAAK6N,OAAO8a,SAAS,cAAeZ,IAEtCpjB,eAAgB,WACd3E,KAAK+C,KAAO,GACZ/C,KAAKgD,MAAQ,GACbhD,KAAKiD,QAAU,GACfjD,KAAKmxB,UAAUvsB,UAAY,GAC3B5E,KAAKmxB,UAAUtsB,WAAa,GAC5B7E,KAAKmxB,UAAUrsB,aAAe,GAC9B9E,KAAK+E,aAAe,IAGtBW,SAAU,WACR,IAAI9C,EAAO1B,SAASyE,uBAAuB,uBAAuB,GAC7D/C,EAAKgD,UAAUC,SAAS,SAC3BjD,EAAKgD,UAAUE,IAAI,SAIvBC,WAAY,WACV,IAAInD,EAAO1B,SAASyE,uBAAuB,uBAAuB,GAC9D/C,EAAKgD,UAAUC,SAAS,SAC1BjD,EAAKgD,UAAUI,OAAO,SAI1BkjB,gBAAiB,WACflpB,KAAK6N,OAAO8a,SAAS,cACrBxW,EAAUoS,uBAAuB,oBACjCpS,EAAUoS,uBAAuB,eACjCpS,EAAUoS,uBAAuB,kBACjCpS,EAAUoS,uBAAuB,kBACjCpS,EAAUoS,uBAAuB,mBACjCpS,EAAUoS,uBAAuB,yBACjCvK,EAAE,2BAA2BjP,QAC7BlM,OAAOsqB,QAAQC,UAAUjX,EAAUsR,cAAe,GAAI5kB,OAAOO,SAASmmB,WAGxEwF,uBAAwB,SAAgC9F,GACtD,GAAa,IAATA,EAGF,OAFAjlB,KAAK8nB,YAAY,mBACjB9N,EAAE,2BAA2BjP,QAG/B,IAAIkJ,EAAShE,KAAKC,MAAM+U,GACxBjlB,KAAK6N,OAAO8a,SAAS,sBAAuB1U,IAG9CgX,kBAAmB,SAA2BhG,GAC5C,GAAa,IAATA,EAGF,OAFAjlB,KAAK8nB,YAAY,cACjB9N,EAAE,2BAA2BjP,QAG/B,IAAIkJ,EAAShE,KAAKC,MAAM+U,GACxBjlB,KAAK6N,OAAO8a,SAAS,iBAAkB1U,IAGzC+W,qBAAsB,SAA8B/F,GAClD,GAAa,IAATA,EAGF,OAFAjlB,KAAK8nB,YAAY,iBACjB9N,EAAE,2BAA2BjP,QAG/B,IAAIkJ,EAAShE,KAAKC,MAAM+U,GACxBjlB,KAAK6N,OAAO8a,SAAS,oBAAqB1U,IAG5Csf,qBAAsB,SAA8BtO,GAClD,GAAa,IAATA,EAGF,OAFAjlB,KAAK8nB,YAAY,iBACjB9N,EAAE,2BAA2BjP,QAG/B,IAAIkJ,EAAShE,KAAKC,MAAM+U,GACxBjlB,KAAK6N,OAAO8a,SAAS,oBAAqB1U,IAG5Cuf,sBAAuB,SAA+BvO,GACpD,GAAa,IAATA,EAGF,OAFAjlB,KAAK8nB,YAAY,kBACjB9N,EAAE,2BAA2BjP,QAG/B,IAAIkJ,EAAShE,KAAKC,MAAM+U,GACxBjlB,KAAK6N,OAAO8a,SAAS,qBAAsB1U,IAG7Cwf,2BAA4B,SAAoCxO,GAC9D,GAAa,IAATA,EAIF,OAHAjlB,KAAK8nB,YAAY,kBACjB9N,EAAE,2BAA2BjP,aAC7B/G,QAAQC,IAAI,WAGd,IAAIgQ,EAAShE,KAAKC,MAAM+U,GACxBjlB,KAAK6N,OAAO8a,SAAS,0BAA2B1U,IAGlDyW,YAAa,WACX,IAAI1B,KAiCJ,MA/B+C,KAA3ChpB,KAAKmjB,yBAAyBD,UAChC8F,EAAWxS,KAAKxW,KAAKmjB,0BAEmB,KAAtCnjB,KAAKqjB,oBAAoBH,UAC3B8F,EAAWxS,KAAKxW,KAAKqjB,qBAEsB,KAAzCrjB,KAAKojB,uBAAuBF,UAC9B8F,EAAWxS,KAAKxW,KAAKojB,wBAE4B,KAA/CpjB,KAAKuwB,6BAA6BrN,UACpC8F,EAAWxS,KAAKxW,KAAKuwB,8BAEsB,KAAzCvwB,KAAKowB,uBAAuBlN,UAC9B8F,EAAWxS,KAAKxW,KAAKowB,wBAEuB,KAA1CpwB,KAAKqwB,wBAAwBnN,UAC/B8F,EAAWxS,KAAKxW,KAAKqwB,yBAEuB,KAA1CrwB,KAAKswB,wBAAwBpN,UAC/B8F,EAAWxS,KAAKxW,KAAKswB,yBAES,KAA5BtwB,KAAKyxB,oBACPzI,EAAWxS,KAAKxW,KAAKyxB,oBAEY,KAA/BzxB,KAAK0xB,uBACP1I,EAAWxS,KAAKxW,KAAK0xB,uBAEH,KAAhB1xB,KAAK2vB,QACP3G,EAAWxS,KAAKxW,KAAK2vB,QAGhB3G,EAAWvrB,QAGpBgtB,WAAY,WAEN5rB,OAAOsqB,QAAQjd,OACjBlM,KAAK6N,OAAO8a,SAAS,WAAY9pB,OAAOsqB,QAAQjd,OAEL,IAAvClM,KAAK6N,OAAOgZ,QAAQ6G,gBACtBvb,EAAUkI,SAASra,KAAK6N,OAAOgZ,QAAQ6G,iBAGzC1tB,KAAK6N,OAAO8a,SAAS,eAIzBtkB,OAAQ,WACN,IAAIE,EAAS,UAAYvE,KAAK0zB,uBAC9B70B,OAAOO,SAASoF,KAAOD,EACvBvE,KAAKyE,eAGPA,YAAa,SAAqB3B,GAC5BA,EACF9C,KAAK6N,OAAO8a,SAAS,2BAA4B7lB,GAEjD9C,KAAK6N,OAAO8a,SAAS,2BAA4B,IAGxCznB,SAAS+E,qBAAqB,QAAQ,GAC5CL,UAAUM,OAAO,cACtBlG,KAAK6N,OAAO8a,SAAS,kBAAmB3oB,KAAKsxB,UACxCtxB,KAAK2C,YACR3C,KAAK2E,iBACL3E,KAAK+F,cAEP/F,KAAKmG,eAEPM,cAAe,WACb,IAAIC,GAAU,EAoBd,MAnBiB,IAAb1G,KAAK+C,MACP/C,KAAKmxB,UAAUvsB,UAAY5E,KAAKmxB,UAAUxqB,SAAW,gBACrDD,GAAU,GAEV1G,KAAKmxB,UAAUvsB,UAAY,GAEX,IAAd5E,KAAKgD,OAAgBhD,KAAKgD,MAAM4D,MAAM,iDAIxC5G,KAAKmxB,UAAUtsB,WAAa,IAH5B7E,KAAKmxB,UAAUtsB,WAAa,wBAA0B7E,KAAKmxB,UAAUtqB,UAAY,IACjFH,GAAU,GAIQ,IAAhB1G,KAAKiD,SACPjD,KAAKmxB,UAAUrsB,aAAe9E,KAAKmxB,UAAUrqB,YAAc,gBAC3DJ,GAAU,GAEV1G,KAAKmxB,UAAUrsB,aAAe,GAEhC9E,KAAKuG,eACEG,GAETJ,YAAa,SAAqBrD,GAChCjD,KAAK0F,WACL1F,KAAKmxB,UAAUlsB,eAAiBhC,EAChCjD,KAAKuG,gBAEPJ,YAAa,SAAqBlD,GAChCjD,KAAKmxB,UAAUlsB,eAAiB,IAGlCC,cAAe,WACb,IAAIE,EAAOpF,KACXqF,WAAW,WACiB,oBAAfC,WACTF,EAAKF,gBAELI,WAAWC,OAAO,gBAChBC,QAAS,2CACT3H,SAAUuH,EAAKK,qBAGlB,MAGLA,kBAAmB,WACjBzB,QAAQC,IAAI,aAEdoD,OAAQ,WACN,GAAIrH,KAAKyG,gBAAiB,CACxB,IAAIlD,EAAqBrC,SAASC,eAAe,mBAAmBgD,aAAa,sBAC7EmD,EAAUtH,KACdsF,WAAWiC,QAAQhE,GAAsBiE,OAAQ,qBAAsB5D,KAAK,SAAU6D,GACpF,IAAIC,EAAaC,eAAeC,QAAQ,cACpCF,EACFC,eAAeE,QAAQ,aAAcC,SAASJ,GAAc,GAE5DC,eAAeE,QAAQ,aAAc,GAEvC9G,IAAIgH,KAAKC,KAAK,+BACZC,GAAIX,EAAQuG,OAAOgZ,QAAQ0K,mBAC3BrpB,KAAMZ,EAAQvE,KACdoF,MAAOb,EAAQtE,MACfoF,QAASd,EAAQrE,QACjBoF,WAAYX,EACZY,kBAAmBb,IAClB7D,KAAK,SAAUC,GACO,KAAnBA,EAAS1E,OACP0E,EAASC,KAAKyE,QAChBjB,EAAQhB,YAAYzC,EAASC,KAAKb,SACzBY,EAASC,KAAK0E,gBACvBlB,EAAQvC,aAAe,wBAEvBf,QAAQC,IAAIJ,EAASC,KAAKb,UAG5Be,QAAQC,IAAI,gCACZqD,EAAQhB,YAAYzC,EAASC,KAAKb,WAEnC,SAAUc,GACXuD,EAAQhB,YAAY,uEAErB,SAAUzC,GACXG,QAAQC,IAAI,iCAKlB+qB,UAAW,SAAmB7vB,GAC5B,MAAc,SAAVA,GAKNosB,YAAa,SAAqBxD,IAC3B/nB,KAAKuqB,iBAAiBjP,QAAQyM,IAAe,GAChD/nB,KAAKuqB,iBAAiB/T,KAAKuR,IAI/ByD,WAAY,SAAoBzD,GAC9B,GAAI/nB,KAAKuqB,iBAAiBjP,QAAQyM,IAAe,EAAG,CAClD,IAAI9Z,EAAQjO,KAAKuqB,iBAAiBjP,QAAQyM,GACtC9Z,GAAS,GACXjO,KAAKuqB,iBAAiBkB,OAAOxd,EAAO,MAM5C1L,YACEoG,cACEC,SAAU,uBACVC,OAAQ,SAAU,eAClBuC,UACE+lB,UAAW,WACT,OAAOnxB,KAAK6N,OAAOgZ,QAAQsK,WAG7BC,gBAAiB,WACf,OAAOpxB,KAAK6N,OAAOgZ,QAAQuK,iBAG7BC,iBAAkB,WAChB,OAAOrxB,KAAK6N,OAAOgZ,QAAQwK,kBAG7BC,SAAU,WACR,OAAOtxB,KAAK6N,OAAOgZ,QAAQyK,eAhgCvC,IAAyBE,EAAK7f,EAAKsT,YAwgCxB","file":"custom.js","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()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/)) {\n this.form.EmailError = \"Please enter a valid \" + this.form.EmailText + \".\";\n isValid = false;\n } else {\n this.form.EmailError = \"\";\n }\n if (this.message == \"\") {\n this.form.MessageError = this.form.MessageText + \" is required.\";\n isValid = false;\n } else {\n this.form.MessageError = \"\";\n }\n // if (this.honeypot) {\n // this.form.MessageError = \"Error\"\n // isValid = false;\n // }\n // var captchaComplete = !!grecaptcha.getResponse(this.formRecaptcha);\n // if(!captchaComplete){\n // this.form.CaptchaError = \"Error with Recaptcha.\"\n // isValid = false;\n // }\n this.$forceUpdate();\n return isValid;\n },\n validateVCard: function validateVCard() {\n var isValid = true;\n console.log(\"vcard\");\n },\n downloadVCard: function downloadVCard(url) {\n if (url) {\n var link = document.createElement('a');\n link.href = url;\n document.body.appendChild(link);\n link.click();\n this.toggleVCardModal();\n }\n },\n submit: function submit(professionalId) {\n if (professionalId) {\n this.professionalId = professionalId;\n }\n if (this.validateInput()) {\n var context = this;\n grecaptcha.execute(this.recaptchaPublicKey, { action: 'email_disclaimer' }).then(function (token) {\n var emailCount = sessionStorage.getItem('emailCount');\n if (emailCount) {\n sessionStorage.setItem('emailCount', parseInt(emailCount) + 1);\n } else {\n sessionStorage.setItem('emailCount', 1);\n }\n Vue.http.post('/api/shared/submitemailform', {\n ID: context.professionalId,\n Name: context.name,\n Email: context.email,\n Message: context.message,\n EmailCount: emailCount,\n RecaptchaResponse: token\n }).then(function (response) {\n if (response.status == 200) {\n if (response.body.success) {\n context.showMessage(response.body.message);\n } else if (response.body.recaptchaFailed) {\n context.form.CaptchaError = \"Error with Recaptcha.\";\n isValid = false;\n } else {\n console.log(response.body.message);\n }\n } else {\n console.log(\"error while submitting email\");\n context.showMessage(response.body.message);\n }\n }, function (error) {\n context.showMessage(\"There was an error submitting the email, please try again later.\");\n });\n }, function (response) {\n console.log(\"Error while executing recaptcha\");\n });\n }\n },\n submitVCard: function submitVCard(professionalId) {\n if (professionalId) {\n this.professionalId = professionalId;\n }\n var context = this;\n grecaptcha.execute(this.recaptchaPublicKey, { action: 'email_disclaimer' }).then(function (token) {\n Vue.http.post('/api/shared/ValidateCaptcha', {\n response: token\n }).then(function (response) {\n if (response && response.body.success) {\n // return isValid;\n Vue.http.post('/api/shared/submitvcard', {\n ID: context.professionalId\n }).then(function (response) {\n if (response.status == 200 && response.body.success == true) {\n context.downloadVCard(response.body.vcardurl);\n } else {\n console.log(\"error while downloading vCard\");\n context.showVCardMessage(response.body.message);\n }\n }, function (error) {\n context.showVCardMessage(\"There was an error downloading the vCard. Please try again later.\");\n });\n }\n if (response && response.body.recaptchaFailed) {\n isValid = response.body.success;\n this.vCardForm.CaptchaError = \"Error with Recaptcha.\";\n }\n // this.$forceUpdate();\n // return isValid;\n }, function (error) {\n console.log(error);\n });\n }, function (error) {\n console.log(error);\n });\n }\n },\n\n components: {\n 'email-form': {\n template: '#email-form-template',\n props: ['accept', 'decline']\n },\n 'v-card': {\n template: '#v-card-template'\n }\n }\n};\n\n},{}],5:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n el: '#contact-us-app',\n\n data: function data() {\n return {\n model: undefined,\n\n typeSelectorInitiated: false,\n inquiryTypes: undefined,\n selectedInquiryType: undefined,\n submitting: false,\n recaptchaPublicKey: '',\n\n validation: {\n submitTriggered: false,\n showTermsConditionsError: false,\n showRecaptchaError: false,\n showRequiredFieldsError: false,\n showEmailAddressError: false,\n requiredFields: {\n firstName: false,\n lastName: false,\n email: false,\n message: false\n }\n },\n\n submission: {\n posted: false,\n success: false\n },\n\n form: {\n FirstName: '', LastName: '', Email: '',\n Phone: '', JobTitle: '', Company: '',\n Message: '', Captcha: false, TermsConditions: false, MarketingSignup: false,\n InquiryTypeId: '', ContactUsFormId: '',\n Hidden: ''\n }\n };\n },\n\n created: function created() {\n this.model = window.serializedContactUsDropdown;\n this.inquiryTypes = this.model.inquiryTypes;\n\n this.form.ContactUsFormId = document.getElementById('contact-us-form').getAttribute('data-form-id');\n this.recaptchaPublicKey = document.getElementById('contact-us-form').getAttribute('data-recaptcha-key');\n },\n\n methods: {\n submit: function submit() {\n this.submitTriggered = true;\n if (this.validate()) {\n this.submitting = true;\n if (this.selectedInquiryType) {\n this.form.InquiryTypeId = this.selectedInquiryType.id;\n }\n var context = this;\n grecaptcha.execute(this.recaptchaPublicKey, { action: 'contact_us' }).then(function (token) {\n context.form.RecaptchaResponse = token;\n context.$http.post('/api/contactus/submit', context.form).then(function (response) {\n if (response) {\n context.submission.posted = true;\n context.submission.success = response.body.success;\n context.submitting = false;\n context.validation.showRecaptchaError = response.body.recaptchaFailed;\n } else {\n context.submitting = false;\n context.submission.success = response;\n context.validation.showRecaptchaError = response.body.recaptchaFailed;\n }\n }, function (error) {\n console.log(error);\n context.submitting = false;\n });\n }, function (error) {\n console.log(error);\n context.submitting = false;\n });\n } else {\n setTimeout(function () {\n errorFields = document.getElementsByClassName('form-validation-error');\n if (errorFields.length) {\n errorFields[0].focus();\n }\n }, 100);\n }\n },\n\n validate: function validate() {\n if (!this.validation.submitTriggered) {\n this.validation.submitTriggered = true;\n }\n\n this.validation.requiredFields.firstName = !!this.form.FirstName;\n this.validation.requiredFields.lastName = !!this.form.LastName;\n this.validation.requiredFields.email = !!this.form.Email;\n this.validation.requiredFields.message = !!this.form.Message;\n\n this.validation.showTermsConditionsError = !this.form.TermsConditions;\n\n var re = /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n this.validation.showEmailAddressError = this.validation.requiredFields.email && !re.test(this.form.Email); // Email filled out, but wrong\n\n var required = this.validation.requiredFields;\n this.validation.showRequiredFieldsError = false; // Reset this error if re-submitting\n for (var field in required) {\n if (required.hasOwnProperty(field) && !required[field]) {\n console.log('Missing required field:', field);\n this.validation.showRequiredFieldsError = true;\n }\n }\n\n var captchaComplete;\n // if (this.form.Hidden) {\n // return false\n // }\n\n return !(this.validation.showTermsConditionsError || this.validation.showEmailAddressError || this.validation.showRequiredFieldsError);\n }\n },\n\n computed: {\n emailAddress: function emailAddress() {\n if (!this.selectedInquiryType.contactRecipient) {\n return this.selectedInquiryType.emailOverride;\n }\n },\n firstNameErrorField: function firstNameErrorField() {\n return this.validation.submitTriggered && !this.validation.requiredFields.firstName ? 'error-message-required' : '';\n },\n lastNameErrorField: function lastNameErrorField() {\n return this.validation.submitTriggered && !this.validation.requiredFields.lastName ? 'error-message-required' : '';\n },\n emailErrorField: function emailErrorField() {\n if (this.validation.submitTriggered) {\n if (this.validation.showEmailAddressError) {\n return 'error-message-email';\n } else if (!this.validation.requiredFields.email) {\n return 'error-message-required';\n }\n }\n },\n messageErrorField: function messageErrorField() {\n return this.validation.submitTriggered && !this.validation.requiredFields.message ? 'error-message-required' : '';\n },\n termsErrorField: function termsErrorField() {\n return this.validation.submitTriggered && this.validation.showTermsConditionsError ? 'error-message-terms' : '';\n }\n }\n};\n\n},{}],6:[function(require,module,exports){\n'use strict';\n\nvar diversityStore = new Vuex.Store({\n state: {\n showVideo: undefined,\n slidesPaused: undefined\n },\n mutations: {\n closeVideo: function closeVideo(state) {\n state.showVideo = undefined;\n // state.slidesPaused = undefined;\n },\n loadVideo: function loadVideo(state, videoId) {\n state.showVideo = videoId;\n state.slidesPaused = true;\n },\n pauseSlides: function pauseSlides(state) {\n state.slidesPaused = true;\n },\n playSlides: function playSlides(state) {\n state.slidesPaused = undefined;\n }\n }\n});\nmodule.exports = {\n el: '#diversity-carousel-app',\n store: diversityStore,\n data: function data() {\n return {\n carousel: window.json.carousel,\n activeSlide: 0,\n slideMove: 'forward',\n player: undefined,\n interval: window.json.carousel.featureRotationInterval\n };\n },\n created: loadAPI(),\n\n mounted: function mounted() {\n var self = this;\n if (this.interval >= 500) {\n setInterval(function () {\n Vue.nextTick(function () {\n self.nextSlide(true);\n });\n }, self.interval);\n }\n },\n computed: {\n slideLength: function slideLength() {\n return this.carousel.slides.length;\n },\n isPaused: function isPaused() {\n return this.$store.state.slidesPaused;\n },\n showVideo: function showVideo() {\n this.slidesPaused = this.$store.state.slidesPaused;\n return this.$store.state.showVideo;\n }\n },\n watch: {\n showVideo: function showVideo() {\n if (this.showVideo !== undefined) {\n this.startVideo(this.showVideo);\n }\n }\n },\n methods: {\n activeClass: function activeClass(index) {\n return this.activeSlide ? true : false;\n },\n switchSlides: function switchSlides(slideBackward) {\n\n slideBackward = slideBackward ? slideBackward : false;\n this.$store.commit('pauseSlides');\n if (slideBackward) {\n this.previousSlide();\n } else {\n this.nextSlide();\n }\n },\n openModal: function openModal(group) {\n this.activeGroup = group;\n },\n closeModal: function closeModal() {\n this.activeGroup = undefined;\n },\n nextSlide: function nextSlide(isInterval) {\n if (!this.isPaused || !isInterval) {\n this.slideMove = 'forward';\n this.activeSlide + 1 == this.slideLength ? this.activeSlide = 0 : this.activeSlide++;\n }\n },\n previousSlide: function previousSlide() {\n this.slideMove = 'backward';\n\n this.activeSlide == 0 ? this.activeSlide = this.slideLength - 1 : this.activeSlide--;\n },\n playVideo: function playVideo(videoId) {\n this.$store.commit('loadVideo', videoId);\n },\n afterLeave: function afterLeave(el) {\n //force class removal\n el.classList.remove('slide-leave-to');\n },\n pauseVideo: function pauseVideo() {\n if (this.isPaused) {\n this.$store.commit('playSlides');\n } else {\n this.$store.commit('pauseSlides');\n }\n },\n skipToSlide: function skipToSlide(index) {\n this.$store.commit('pauseSlides');\n this.activeSlide = index;\n },\n pauseAndCloseVideoPlayer: function pauseAndCloseVideoPlayer() {\n this.$store.commit('closeVideo');\n if (this.player) this.player.pauseVideo();else console.log(\"No video available\");\n },\n startVideo: function startVideo(videoId) {\n if (this.player) {\n if (this.player.getVideoData().video_id !== videoId) this.player.loadVideoById(videoId);\n this.player.playVideo();\n } else {\n this.player = new YT.Player('video-iframe', {\n videoId: videoId,\n host: 'https://www.youtube.com',\n frameborder: 0,\n height: '390',\n width: '640',\n playerVars: { autoplay: 1, showinfo: 0 },\n events: {\n 'onReady': function onReady() {},\n 'onStateChange': function onStateChange() {}\n }\n });\n }\n }\n }\n};\nfunction loadAPI() {\n var firstScriptTag;\n var tag = document.createElement('script');\n\n tag.src = 'https://www.youtube.com/iframe_api';\n firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n}\n\n},{}],7:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n el: '#featured-people-app',\n\n data: {\n featuredPeople: JSON.parse(window.initialData.featuredPeople),\n index: 0\n },\n\n computed: {\n slideLength: function slideLength() {\n return this.featuredPeople.length;\n },\n\n showSlider: function showSlider() {\n return this.slideLength > 1;\n }\n },\n\n methods: {\n slideStyles: function slideStyles(slide) {\n return { transform: 'translateX(' + this.index * -100 + '%)' };\n },\n nextSlide: function nextSlide() {\n this.index = (this.index + 1) % this.slideLength;\n }\n }\n};\n\n},{}],8:[function(require,module,exports){\n'use strict';\n\nvar directions = {\n\t37: -1, // Arrow left\n\t39: 1 // Arrow right\n};\n\nmodule.exports = {\n\tel: '#gold-tabs-app',\n\n\tdata: {\n\t\tactiveTab: 0,\n\t\tpanelsLength: 0,\n\t\tshowMobileNav: false\n\t},\n\n\tmounted: function mounted() {\n\t\tthis.panelsLength = this.$refs.tabframe.dataset.panelsLength;\n\t},\n\n\tcomputed: {\n\t\tactiveLabel: function activeLabel() {\n\t\t\tvar tabEl = this.$refs['tabButton-' + this.activeTab];\n\t\t\treturn tabEl ? tabEl.innerText : '';\n\t\t}\n\t},\n\n\tmethods: {\n\t\tselectTab: function selectTab(givenIndex) {\n\t\t\t// Clamp the tab index so it's not out of bounds\n\t\t\tthis.activeTab = Math.min(this.panelsLength - 1, Math.max(0, givenIndex));\n\t\t\tthis.showMobileNav = false;\n\t\t},\n\n\t\tonTabKeydown: function onTabKeydown(event, givenIndex) {\n\t\t\tvar key = event.keyCode;\n\t\t\tvar dir = directions[key];\n\n\t\t\tif (dir !== undefined) {\n\t\t\t\tvar toIndex = givenIndex + dir;\n\t\t\t\tthis.selectTab(toIndex);\n\n\t\t\t\tvar toTabButton = this.$refs['tabButton-' + toIndex];\n\t\t\t\tif (toTabButton) {\n\t\t\t\t\ttoTabButton.focus();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\ttoggleMobileNav: function toggleMobileNav() {\n\t\t\tthis.showMobileNav = !this.showMobileNav;\n\t\t}\n\t}\n};\n\n},{}],9:[function(require,module,exports){\n'use strict';\n\nif (document.getElementById('locations-app')) {\n var error = function error(func, message) {\n throw new Error('ERROR: [' + func.name + '] > ' + message);\n };\n\n var utilities = require('../../app/location-utilities');\n\n var region = new Vue({\n el: '#locations-app',\n\n data: function data() {\n return {\n keyword: '',\n executed: false,\n locations: [],\n displayCount: 0,\n displayedLocations: [],\n offices: []\n };\n },\n\n mounted: function mounted() {\n this.offices = JSON.parse(window.initialData.offices).map(function (office) {\n return {\n id: office.id,\n latLng: { lat: office.lat, lng: office.lng }\n };\n });\n\n this.locations = JSON.parse(window.initialData.locations);\n this.displayCount = parseInt(window.initialData.displayCount) || 4;\n this.reset();\n },\n\n methods: {\n search: function search() {\n if (this.keyword) {\n this.executed = true;\n var app = this;\n utilities.geocode(this.keyword, function (address) {\n if (address) {\n utilities.getNearestOffice(address, app.offices, function (nearestOffice) {\n if (nearestOffice) {\n var location = app.getLocationByOffice(nearestOffice);\n app.displayedLocations = [location];\n } else {\n error(utilities.getNearestOffice, \"An error occurred while trying to find the nearest office to \" + address + \".\");\n }\n });\n } else {\n error(utilities.geocode, \"An error occurred while trying to geocode \" + address + \".\");\n }\n });\n } else {\n this.clear();\n }\n },\n\n getLocationByOffice: function getLocationByOffice(office) {\n var location = this.locations.find(function (location) {\n return location.officeId === office.id;\n });\n\n if (location) return location;else error(this.getLocationByOffice, \"Could not find a location that matches office ID \" + office.id + \".\");\n },\n\n reset: function reset() {\n this.keyword = '';\n this.displayedLocations = this.locations.slice(0, this.displayCount);\n this.executed = false;\n }\n },\n watch: {\n keyword: function keyword(val) {\n if (this.executed && !val) {\n this.reset();\n }\n }\n }\n });\n}\n\n},{\"../../app/location-utilities\":1}],10:[function(require,module,exports){\n'use strict';\n\nvar ScreenRead = require('./screen-read');\n\nmodule.exports = {\n el: '#office-listing-app',\n\n data: function data() {\n return {\n offices: null,\n regionFilters: null,\n selectedFilter: null,\n officesLoaded: false,\n dropdown: { shown: false, selected: null }\n };\n },\n\n created: function created() {\n this.regionFilters = window.serializedRegionFilters;\n this.selectedFilter = this.regionFilters[0];\n this.offices = window.serializedOffices;\n this.officesLoaded = true;\n },\n\n methods: {\n changeSelectedRegion: function changeSelectedRegion(regionId) {\n var filter = this.getRegionFilter(regionId);\n this.selectedFilter = filter;\n this.getOffices(regionId);\n this.toggleDropdown();\n },\n\n getOffices: function getOffices(regionId, callback) {\n this.officesLoaded = false;\n this.$http.get('/api/locations/officesbyregion?regionId=' + regionId).then(function (response) {\n this.offices = response.body.offices;\n this.officesLoaded = true;\n if (callback) callback(this.offices);\n }, function (error) {\n console.log(error);\n });\n },\n\n toggleDropdown: function toggleDropdown() {\n this.dropdown.shown = !this.dropdown.shown;\n },\n\n getRegionFilter: function getRegionFilter(regionId) {\n for (var i = 0; i < this.regionFilters.length; i++) {\n var currentFilter = this.regionFilters[i];\n if (currentFilter.id == regionId) return currentFilter;\n }\n },\n toTwoPlaces: function toTwoPlaces(num) {\n return num < 10 ? \"0\" + num : num;\n }\n },\n\n computed: {\n seconds: function seconds(int) {\n return \"sh-\" + int;\n },\n\n minutes: function minutes(int) {\n return \"mh-\" + int;\n },\n\n hours: function hours(int) {\n return \"hh-\" + int;\n }\n },\n\n components: {\n 'clock': {\n template: '#clock-template',\n props: ['seconds', 'minutes', 'hours'],\n computed: {\n computedHours: function computedHours() {\n var currentHours = this.hours;\n if (currentHours >= 12) {\n currentHours = currentHours - 12;\n }\n return Math.floor((currentHours + this.minutes / 60) * 5);\n }\n }\n },\n 'ScreenRead': ScreenRead\n }\n};\n\n},{\"./screen-read\":13}],11:[function(require,module,exports){\n'use strict';\n\nvar directions = {\n 37: -1, // Arrow left\n 39: 1 // Arrow right\n};\n\nmodule.exports = {\n el: '#related-articles-app',\n\n data: function data() {\n return {\n model: null,\n panels: null,\n articles: null,\n context: {\n articlesLoaded: false,\n moreArticles: false,\n selectedPanel: null\n },\n dropdown: {\n shown: false,\n selected: null\n }\n };\n },\n\n created: function created() {\n this.model = window.relatedArticlesDataModel;\n this.getPanels(this.getArticles);\n },\n\n methods: {\n getPanels: function getPanels(callback) {\n this.panels = this.model.articlePanels;\n this.context.selectedPanel = this.panels[0];\n if (callback) callback(this.context.selectedPanel.id, 0, this.model.displayCount);\n },\n\n getArticles: function getArticles(panelId, skip, take, reload, callback) {\n var request = '/api/shared/relatedarticles' + '?panelId=' + panelId + '&entityId=' + this.model.entityId;\n\n if (skip) request = request + '&' + 'skip=' + skip;\n if (take) request = request + '&' + 'take=' + take;\n\n this.$http.get(request).then(function (response) {\n if (!this.articles || reload) {\n this.articles = response.body.articles;\n this.context.moreArticles = response.body.moreArticles;\n this.context.articlesLoaded = true;\n window.vueAppStates.perspectivesNewsEvents = true;\n } else {\n var receivedArticles = response.body.articles;\n this.context.moreArticles = response.body.moreArticles;\n if (callback) callback(receivedArticles);\n }\n }, function (error) {\n console.log(error);\n });\n },\n\n loadMoreArticles: function loadMoreArticles(panelId) {\n var skip = this.articles.length;\n this.getArticles(panelId, skip, this.model.viewMoreCount, false, this.addReceivedArticles);\n },\n\n selectPanel: function selectPanel(panelId) {\n if (this.context.selectedPanel.id != panelId) {\n this.context.selectedPanel = this.getPanelById(panelId);\n this.context.selectedPanel.Name = panelId;\n this.getArticles(this.context.selectedPanel.id, 0, this.model.displayCount, true);\n }\n },\n\n addReceivedArticles: function addReceivedArticles(receivedArticles) {\n for (var i = 0; i < receivedArticles.length; i++) {\n this.articles.push(receivedArticles[i]);\n }\n },\n\n toggleDropdown: function toggleDropdown() {\n this.dropdown.shown = !this.dropdown.shown;\n },\n\n getPanelById: function getPanelById(panelId) {\n for (var i = 0; i < this.panels.length; i++) {\n var panel = this.panels[i];\n if (panel.id == panelId) return panel;\n }\n },\n\n getLinkTarget: function getLinkTarget(isExternalLink) {\n return isExternalLink ? \"_blank\" : \"_self\";\n },\n\n onTabKeydown: function onTabKeydown(event, tabIndex) {\n var key = event.keyCode;\n var dir = directions[key];\n\n if (dir !== undefined) {\n var toIndex = tabIndex + dir;\n var toPanel = this.panels[toIndex];\n var toTabButton = this.$refs.tabButton[toIndex];\n\n if (toPanel && toTabButton) {\n this.selectPanel(toPanel.id);\n toTabButton.focus();\n }\n }\n }\n },\n\n components: {\n 'article-tile': {\n template: '#article-tile-template',\n props: ['id', 'featured', 'external', 'url', 'title', 'date', 'multimedia', 'source', 'presentationtitle', 'location', 'type', 'image', 'getlinktarget', 'featuredlabel']\n }\n }\n};\n\n},{}],12:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n el: '#related-experience-app',\n\n data: function data() {\n return {\n model: null,\n experienceGroups: [],\n experiences: [],\n firstSet: [],\n dropdown: { shown: false, selected: null },\n moreExperiences: false,\n loadedMore: false\n };\n },\n\n created: function created() {\n this.model = window.relatedExperienceDataModel;\n this.getExperienceGroups(this.getExperiences);\n },\n\n methods: {\n viewLess: function viewLess() {\n this.experiences = JSON.parse(JSON.stringify(this.firstSet));\n this.loadedMore = false;\n this.moreExperiences = true;\n },\n\n getExperienceGroups: function getExperienceGroups(callback) {\n this.experienceGroups = this.model.experienceGroups;\n this.dropdown.selected = this.experienceGroups[0];\n if (callback) callback(this.dropdown.selected.id, 0, this.model.displayCount, this.resetExperiences, false);\n },\n\n getExperiences: function getExperiences(selectedGroupId, skip, take, callback, toggleDropdown) {\n var requestUrl = this.buildRequestUrl(selectedGroupId, skip, take);\n\n this.$http.get(requestUrl).then(function (response) {\n this.moreExperiences = response.body.moreExperiences;\n var addedExperiences = response.body.relatedExperiences.filter(function (exp) {\n return exp.ID != '00000000-0000-0000-0000-000000000000';\n });\n callback(addedExperiences);\n if (toggleDropdown) this.toggleDropdown();\n window.vueAppStates.relatedExperience = true;\n }, function (error) {\n console.log(error);\n });\n },\n\n changeExperienceGroup: function changeExperienceGroup(experienceGroupId) {\n this.loadedMore = false;\n if (!this.dropdown.selected || this.dropdown.selected.id != experienceGroupId) {\n this.dropdown.selected = this.getExperienceGroupById(experienceGroupId);\n this.getExperiences(this.dropdown.selected.id, 0, this.model.displayCount, this.resetExperiences, true);\n }\n },\n\n buildRequestUrl: function buildRequestUrl(selectedGroupId, skip, take) {\n var requestUrl = '/api/shared/relatedexperience?experienceGroupId=' + selectedGroupId;\n if (skip) requestUrl += '&skip=' + skip;\n if (take) requestUrl += '&take=' + take;\n if (this.model.entityId) requestUrl += '&entityId=' + this.model.entityId;\n if (this.experienceGroups) requestUrl += '&numExperienceGroups=' + this.experienceGroups.length;\n return requestUrl;\n },\n\n showMoreExperiences: function showMoreExperiences() {\n if (!this.loadedMore) {\n this.firstSet = JSON.parse(JSON.stringify(this.experiences));\n this.loadedMore = true;\n }\n var currentlyDisplayed = this.experiences.length;\n this.getExperiences(this.dropdown.selected.id, currentlyDisplayed, this.model.viewMoreCount, this.addExperiences, false);\n },\n\n resetExperiences: function resetExperiences(addedExperiences) {\n this.experiences = addedExperiences;\n },\n\n addExperiences: function addExperiences(addedExperiences) {\n this.experiences.pushArray(addedExperiences);\n },\n\n toggleDropdown: function toggleDropdown() {\n this.dropdown.shown = !this.dropdown.shown;\n },\n\n getExperienceGroupById: function getExperienceGroupById(groupId) {\n for (var i = 0; i < this.experienceGroups.length; i++) {\n var group = this.experienceGroups[i];\n if (group.id == groupId) return group;\n }\n }\n }\n};\n\n},{}],13:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n template: '',\n data: function data() {\n return {\n screenReadTime: new Date()\n };\n },\n props: ['seconds', 'minutes', 'hours', 'mode'],\n created: function created() {\n this.screenReadTime = new Date();\n this.screenReadTime.setHours(this.hours);\n this.screenReadTime.setMinutes(this.minutes);\n this.screenReadTime.setSeconds(this.seconds);\n\n var start = function () {\n this.updateTime();\n // Update every minute on the minute\n setInterval(this.updateTime, 60000);\n }.bind(this);\n\n // Wait for the next minute to start\n setTimeout(start, (60 - this.seconds) * 1000);\n },\n computed: {\n output: function output() {\n var hours = this.toTwoPlaces(this.screenReadTime.getHours());\n var minutes = this.toTwoPlaces(this.screenReadTime.getMinutes());\n return hours + ':' + minutes;\n },\n ariaLiveMode: function ariaLiveMode() {\n return this.mode === 'loud' ? 'polite' : null;\n }\n },\n methods: {\n toTwoPlaces: function toTwoPlaces(num) {\n return num < 10 ? \"0\" + num : num;\n },\n updateTime: function updateTime() {\n this.screenReadTime.setMinutes(this.screenReadTime.getMinutes() + 1);\n this.screenReadTime = new Date(this.screenReadTime.getYear(), this.screenReadTime.getMonth(), this.screenReadTime.getDate(), this.screenReadTime.getHours(), this.screenReadTime.getMinutes(), 0);\n }\n }\n};\n\n},{}],14:[function(require,module,exports){\n\"use strict\";\n\nvar utilities = {\n\t\tdefaultElement: '#search-top',\n\n\t\tdefaultScroll: function defaultScroll() {\n\t\t\t\tvar offset = parseInt($(window).height() / 2);\n\t\t\t\tvar location = parseInt($(this.defaultElement).offset().top);\n\n\t\t\t\t$(\"html, body\").animate({\n\t\t\t\t\t\tscrollTop: location - offset\n\t\t\t\t}, \"slow\", function () {\n\t\t\t\t\t\tvar $resultCount = $('.searched-criteria-results');\n\t\t\t\t\t\t$resultCount.focus().attr('tabindex', -1);\n\t\t\t\t});\n\n\t\t\t\treturn location - offset;\n\t\t},\n\n\t\tscrollTo: function scrollTo(location) {\n\t\t\t\t$(\"html, body\").animate({\n\t\t\t\t\t\tscrollTop: location\n\t\t\t\t}, \"slow\");\n\t\t}\n};\n\nmodule.exports = {\n\t\tel: '#site-search-results',\n\n\t\tdata: function data() {\n\t\t\t\treturn {\n\t\t\t\t\t\tmodel: {},\n\t\t\t\t\t\tresults: [],\n\t\t\t\t\t\tcontext: {\n\t\t\t\t\t\t\t\tcurrentlyDisplayedCount: 0,\n\t\t\t\t\t\t\t\tremainingResults: false,\n\t\t\t\t\t\t\t\tresultsStartIndex: 0,\n\t\t\t\t\t\t\t\tsearching: false,\n\t\t\t\t\t\t\t\tselectedFilter: {},\n\t\t\t\t\t\t\t\ttotalResults: 0,\n\t\t\t\t\t\t\t\tsuggestion: null\n\t\t\t\t\t\t},\n\t\t\t\t\t\tconstants: {\n\t\t\t\t\t\t\t\tbaseRequest: '/api/sitesearch/search',\n\t\t\t\t\t\t\t\tlimitFilterFormat: 'more:pagemap:metatags-limitfilter:{0}',\n\t\t\t\t\t\t\t\tlanguageFilterFormat: 'more:pagemap:metatags-languagefilter:{0}',\n\t\t\t\t\t\t\t\tqueryKey: 'query'\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\tcreated: function created() {\n\t\t\t\tthis.model = window.siteSearchResultsModel;\n\t\t\t\tthis.results = this.model.serverResults && this.model.serverResults.items ? this.model.serverResults.items : [];\n\t\t\t\tthis.context.currentlyDisplayedCount = this.results ? this.results.length : 0;\n\t\t\t\tthis.context.selectedFilter = this.model.filters[0];\n\t\t\t\tthis.setContext(this.model.serverResults);\n\n\t\t\t\tvar app = this;\n\t\t\t\twindow.setTimeout(function () {\n\t\t\t\t\t\tvar scrollUser = false;\n\n\t\t\t\t\t\tif (window.location.search.indexOf(app.constants.queryKey) >= 0) {\n\t\t\t\t\t\t\t\tvar queryParams = window.getQueryParams();\n\t\t\t\t\t\t\t\tvar query = queryParams[app.constants.queryKey];\n\t\t\t\t\t\t\t\tif (query && query !== '') {\n\t\t\t\t\t\t\t\t\t\tutilities.defaultScroll();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}, 1000);\n\t\t},\n\n\t\tupdated: function updated() {\n\t\t\t\t// Set focus on the first new result after loading more\n\t\t\t\tvar firstResultItem = this.$refs.resultListItems ? this.$refs.resultListItems[this.context.resultsStartIndex] : undefined;\n\t\t\t\tvar firstResultLink = firstResultItem !== undefined ? firstResultItem.firstChild : undefined;\n\t\t\t\tif (firstResultLink !== undefined) {\n\t\t\t\t\t\tfirstResultLink.focus();\n\t\t\t\t}\n\t\t},\n\n\t\tmethods: {\n\t\t\t\texecuteSearch: function executeSearch(start, take, callback) {\n\t\t\t\t\t\tvar request = this.buildRequest(start, take);\n\t\t\t\t\t\tvar app = this;\n\t\t\t\t\t\tthis.$http.get(request).then(function (response) {\n\t\t\t\t\t\t\t\tvar results = response.body.results;\n\t\t\t\t\t\t\t\tapp.setContext(results);\n\t\t\t\t\t\t\t\tcallback(results);\n\n\t\t\t\t\t\t\t\tdocument.getElementsByTagName(\"title\")[0].innerHTML = response.body.titleTag;\n\t\t\t\t\t\t}, function () {\n\t\t\t\t\t\t\t\tconsole.log(error);\n\t\t\t\t\t\t});\n\t\t\t\t},\n\n\t\t\t\thandleFilterClick: function handleFilterClick(limitFilter) {\n\t\t\t\t\t\tthis.context.searching = true;\n\t\t\t\t\t\tthis.context.selectedFilter = limitFilter;\n\t\t\t\t\t\t//this.limitFilter = limitFilter; \n\t\t\t\t\t\t//this.selectFilter(limitFilter);\n\n\t\t\t\t\t\tvar app = this;\n\t\t\t\t\t\tthis.executeSearch(1, this.model.initialDisplayCount, function (results) {\n\t\t\t\t\t\t\t\tif (results && results.items) {\n\t\t\t\t\t\t\t\t\t\tapp.results = results.items;\n\t\t\t\t\t\t\t\t\t\tapp.context.currentlyDisplayedCount = app.results.length;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tapp.results = [];\n\t\t\t\t\t\t\t\t\t\tapp.context.currentlyDisplayedCount = 0;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tapp.context.searching = false;\n\t\t\t\t\t\t\t\tif (app.context.mobileMenuExpanded) {\n\t\t\t\t\t\t\t\t\t\tapp.context.mobileMenuExpanded = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t//utilities.defaultScroll();\n\t\t\t\t\t\t});\n\t\t\t\t},\n\n\t\t\t\tuseSuggestion: function useSuggestion() {\n\t\t\t\t\t\tvar app = this;\n\n\t\t\t\t\t\tapp.query = this.context.suggestion;\n\t\t\t\t\t\tapp.context.searching = true;\n\t\t\t\t\t\tapp.model.searchQuery = this.context.suggestion;\n\n\t\t\t\t\t\tthis.executeSearch(1, this.model.initialDisplayCount, function (results) {\n\t\t\t\t\t\t\t\tif (results && results.items) {\n\t\t\t\t\t\t\t\t\t\tapp.results = results.items;\n\t\t\t\t\t\t\t\t\t\tapp.context.currentlyDisplayedCount = app.results.length;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tapp.results = [];\n\t\t\t\t\t\t\t\t\t\tapp.context.currentlyDisplayedCount = 0;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t//utilities.defaultScroll();\n\t\t\t\t\t\t});\n\t\t\t\t},\n\n\t\t\t\thandleRemoveFilterClick: function handleRemoveFilterClick(type) {\n\t\t\t\t\t\tif (type == 'query') {\n\t\t\t\t\t\t\t\tthis.model.searchQuery = '';\n\t\t\t\t\t\t\t\tthis.handleFilterClick(this.context.selectedFilter.limitFilter);\n\t\t\t\t\t\t} else if (type == 'filter') {\n\t\t\t\t\t\t\t\tthis.handleFilterClick({ limitFilter: 'all', name: 'ALL' });\n\t\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\thandleLoadMoreResultsClick: function handleLoadMoreResultsClick() {\n\t\t\t\t\t\tvar app = this;\n\t\t\t\t\t\tthis.executeSearch(this.context.currentlyDisplayedCount + 1, this.model.viewModel.viewMoreCount, function (results) {\n\t\t\t\t\t\t\t\tif (results && results.items) {\n\t\t\t\t\t\t\t\t\t\tapp.context.resultsStartIndex = app.results.length;\n\t\t\t\t\t\t\t\t\t\tapp.results.pushArray(results.items);\n\t\t\t\t\t\t\t\t\t\tapp.context.currentlyDisplayedCount += results.items.length;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t},\n\n\t\t\t\thandleTypeAheadSearchQuery: function handleTypeAheadSearchQuery(typeAheadQuery) {\n\t\t\t\t\t\tvar app = this;\n\t\t\t\t\t\tapp.model.searchQuery = typeAheadQuery;\n\t\t\t\t\t\tthis.executeSearch(1, this.model.initialDisplayCount, function (results) {\n\t\t\t\t\t\t\t\tif (results && results.items) {\n\t\t\t\t\t\t\t\t\t\tapp.results = results.items;\n\t\t\t\t\t\t\t\t\t\tapp.context.currentlyDisplayedCount = app.results.length;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tapp.results = [];\n\t\t\t\t\t\t\t\t\t\tapp.context.currentlyDisplayedCount = 0;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t//utilities.defaultScroll();\n\t\t\t\t\t\t});\n\t\t\t\t},\n\n\t\t\t\tbuildRequest: function buildRequest(start, take) {\n\t\t\t\t\t\treturn this.constants.baseRequest + '?query=' + encodeURIComponent(this.query) + '&limitfilter=' + this.limitFilter + '&languagefilter=' + this.languageFilter + '&start=' + start + '&take=' + take;\n\t\t\t\t},\n\n\t\t\t\tsetContext: function setContext(results) {\n\t\t\t\t\t\tthis.context.totalResults = results.totalResults > 0 ? results.totalResults : 0;\n\n\t\t\t\t\t\tif (!!results.suggestion) {\n\t\t\t\t\t\t\t\tthis.context.suggestion = results.suggestion;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.context.suggestion = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.context.remainingResults = results.remainingResults > 0 ? results.remainingResults : 0;\n\t\t\t\t}\n\t\t},\n\n\t\tcomputed: {\n\t\t\t\tquery: function query() {\n\t\t\t\t\t\treturn this.model.searchQuery;\n\t\t\t\t},\n\n\t\t\t\tvalidQuery: function validQuery() {\n\t\t\t\t\t\treturn this.model.searchQuery && this.model.searchQuery !== '' || this.context.selectedFilter && this.context.selectedFilter.limitFilter !== 'all';\n\t\t\t\t},\n\n\t\t\t\ttotalResultsNotice: function totalResultsNotice() {\n\t\t\t\t\t\tif (this.results) {\n\t\t\t\t\t\t\t\treturn this.model.viewModel.resultCountFormat.format(this.context.totalResults);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn this.model.viewModel.noResultsLabel;\n\t\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tresultsVisibility: function resultsVisibility() {\n\t\t\t\t\t\treturn this.context.searching ? 'hidden' : 'visible';\n\t\t\t\t},\n\n\t\t\t\tlimitFilter: function limitFilter() {\n\t\t\t\t\t\tif (this.context.selectedFilter && this.context.selectedFilter.limitFilter !== 'all') {\n\t\t\t\t\t\t\t\treturn this.context.selectedFilter.limitFilter;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn \"\";\n\t\t\t\t},\n\n\t\t\t\tlanguageFilter: function languageFilter() {\n\t\t\t\t\t\tif (this.model.viewModel.currentLanguageCode) {\n\t\t\t\t\t\t\t\treturn this.model.viewModel.currentLanguageCode;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Re-Add Language Filter after the meta tags go live.\n\t\t\t\t\t\t// if (this.model.viewModel.currentLanguageCode) {\n\t\t\t\t\t\t// queryParts.push(this.constants.languageFilterFormat.format(this.model.viewModel.currentLanguageCode));\n\t\t\t\t\t\t// }\n\t\t\t\t\t\treturn \"\";\n\t\t\t\t}\n\t\t},\n\n\t\tcomponents: {\n\t\t\t\t'search-typeahead': {\n\t\t\t\t\t\ttemplate: '#search-typeahead-sitesearch',\n\t\t\t\t\t\textends: VueTypeahead.default,\n\t\t\t\t\t\tprops: ['placeholdertext', 'arialabel', 'defaultstatus', 'populatedstatus', 'emptystatus'],\n\t\t\t\t\t\tcreated: function created() {\n\t\t\t\t\t\t\t\tthis.model = window.siteSearchResultsModel;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdata: function data() {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tmodel: {},\n\t\t\t\t\t\t\t\t\t\tsrc: '/api/sitesearch/typeahead',\n\t\t\t\t\t\t\t\t\t\tlimit: window.siteSearchResultsModel.viewModel.typeAheadTake || 5,\n\t\t\t\t\t\t\t\t\t\tminChars: 3,\n\t\t\t\t\t\t\t\t\t\tqueryParamName: 'term',\n\t\t\t\t\t\t\t\t\t\tcontext: {\n\t\t\t\t\t\t\t\t\t\t\t\tmobileMenuExpanded: false,\n\t\t\t\t\t\t\t\t\t\t\t\tselectedFilter: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tname: 'All'\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tlastQuery: '',\n\t\t\t\t\t\t\t\t\t\tlastCurrent: -1\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcomputed: {\n\t\t\t\t\t\t\t\tstatus: function status() {\n\t\t\t\t\t\t\t\t\t\tif (this.query.length >= this.minChars && !this.loading) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (this.hasItems) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn this.populatedstatus.replace(/\\{0\\}/g, this.items.length);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn this.emptystatus;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\treturn this.defaultstatus.replace(/\\{0\\}/g, this.minChars);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tcurrentTitle: function currentTitle() {\n\t\t\t\t\t\t\t\t\t\tvar currentItem = this.items[this.current];\n\t\t\t\t\t\t\t\t\t\treturn currentItem ? currentItem.Title : '';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmethods: {\n\t\t\t\t\t\t\t\tonHit: function onHit(item) {\n\t\t\t\t\t\t\t\t\t\twindow.location.href = item.Url;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tsearch: function search() {\n\t\t\t\t\t\t\t\t\t\tif (this.query !== '') {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.$emit('setsearchquery', this.query);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.clearTypeahead();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tgoToResult: function goToResult() {\n\t\t\t\t\t\t\t\t\t\tif (this.current >= 0 && this.hasItems) {\n\t\t\t\t\t\t\t\t\t\t\t\twindow.location.href = this.items[this.current].Url;\n\t\t\t\t\t\t\t\t\t\t} else if (this.query !== '') {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.$emit('setsearchquery', this.query);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.clearTypeahead();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tselectFilter: function selectFilter(limitFilter) {\n\t\t\t\t\t\t\t\t\t\tfor (var i = 0; i < this.model.filters.length; i++) {\n\t\t\t\t\t\t\t\t\t\t\t\tvar filter = this.model.filters[i];\n\t\t\t\t\t\t\t\t\t\t\t\tif (filter.limitFilter === limitFilter) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.context.selectedFilter = this.model.filters[i];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tfilterClick: function filterClick(limitFilter) {\n\t\t\t\t\t\t\t\t\t\tthis.selectFilter(limitFilter);\n\t\t\t\t\t\t\t\t\t\tthis.context.mobileMenuExpanded = false;\n\t\t\t\t\t\t\t\t\t\tthis.$emit('setfilterchange', this.context.selectedFilter);\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tbeforeNav: function beforeNav() {\n\t\t\t\t\t\t\t\t\t\tthis.lastCurrent = this.current;\n\t\t\t\t\t\t\t\t\t\tif (this.current === -1) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.lastQuery = this.query;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tafterNav: function afterNav() {\n\t\t\t\t\t\t\t\t\t\tif (this.current !== -1) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.query = this.currentTitle;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.query = this.lastQuery;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tupdateCustom: function updateCustom() {\n\t\t\t\t\t\t\t\t\t\tif (this.current === -1) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.update();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tupCustom: function upCustom() {\n\t\t\t\t\t\t\t\t\t\tthis.beforeNav();\n\t\t\t\t\t\t\t\t\t\tthis.up();\n\t\t\t\t\t\t\t\t\t\tthis.afterNav();\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tdownCustom: function downCustom() {\n\t\t\t\t\t\t\t\t\t\tthis.beforeNav();\n\t\t\t\t\t\t\t\t\t\tthis.down();\n\t\t\t\t\t\t\t\t\t\tthis.afterNav();\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tresetCustom: function resetCustom() {\n\t\t\t\t\t\t\t\t\t\tthis.reset();\n\t\t\t\t\t\t\t\t\t\tthis.current = -1;\n\t\t\t\t\t\t\t\t\t\tthis.lastCurrent = -1;\n\t\t\t\t\t\t\t\t\t\tthis.lastQuery = '';\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tclearTypeahead: function clearTypeahead() {\n\t\t\t\t\t\t\t\t\t\tthis.items = [];\n\t\t\t\t\t\t\t\t\t\tthis.current = -1;\n\t\t\t\t\t\t\t\t\t\tthis.lastCurrent = -1;\n\t\t\t\t\t\t\t\t\t\tthis.lastQuery = '';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n};\n\n},{}],15:[function(require,module,exports){\n'use strict';\n\nif (document.getElementById('articles-landing')) {\n\t// Recent Articles\n\tvar recentArticlesUtility = {\n\t\tsearch: function search(apiUrl, take, page) {\n\t\t\tvar searchUrl = apiUrl + ('?skip=' + (page - 1) * take + '&take=' + take);\n\t\t\treturn Vue.http.post(searchUrl).then(function (response) {\n\n\t\t\t\tif (response.status == 200) {\n\t\t\t\t\treturn response.body;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log(\"error while retrieving search results\");\n\t\t\t\t\treturn defaultResults;\n\t\t\t\t}\n\t\t\t}, function (error) {\n\t\t\t\tconsole.log(error);\n\t\t\t});\n\t\t}\n\t};\n\n\tvar landingSettingsDefaultValues = {\n\t\trecentArticles: landingServerJson.RecentArticles || [],\n\t\trecentArticleCount: landingServerJson.RecentArticleCount || 0,\n\t\trecentArticlesPageSize: landingServerJson.RecentArticlesPageSize,\n\t\trecentArticlesApiUrl: landingServerJson.RecentArticlesApiUrl,\n\t\tsearchApiUrl: landingServerJson.SearchApiUrl,\n\t\ttypeAheadApiUrl: landingServerJson.TypeAheadApiUrl,\n\t\theaderText: landingServerJson.RecentArticleHeaderText || '',\n\t\tloadMoreText: landingServerJson.LoadMoreText || 'View More',\n\t\ttemplateName: landingServerJson.LandingPageTemplateName,\n\t\trecentArticlesPage: 1\n\n\t\t// Article search\n\t};var utilities = {\n\t\tdefaultElement: '#search-landing-filters',\n\t\tloadMoreElement: '#load-more-button',\n\t\tupcomingLoadMoreElement: '#upcoming-load-more-button',\n\t\tperspectiveFilters: ['capability', 'topic', 'location', 'type', 'time'],\n\t\teventFilters: ['capability', 'location', 'type', 'time', 'topic', 'date'],\n\t\tnewsFilters: ['capability', 'topic', 'location', 'type', 'time'],\n\t\tdefaultResults: {\n\t\t\tResultsCount: 0,\n\t\t\tResults: []\n\t\t},\n\t\temptyValues: {\n\t\t\tresults: [],\n\t\t\tresultCount: 0,\n\t\t\tsearching: false,\n\t\t\tpage: searchServerJson.Page || 1,\n\t\t\tupcomingPage: searchServerJson.UpcomingPage || 1,\n\t\t\ttake: searchServerJson.Take || 25,\n\t\t\tupcomingTake: searchServerJson.upcomingTake || 10,\n\t\t\tsearchKeyword: '',\n\t\t\tscrollPosition: 0,\n\t\t\tcapabilityFilters: searchServerJson.CapabilityFilters,\n\t\t\tlocationFilters: searchServerJson.LocationFilters,\n\t\t\ttopicFilters: searchServerJson.TopicFilters,\n\t\t\ttypeFilters: searchServerJson.TypeFilters,\n\t\t\tdateFilters: searchServerJson.DateFilters,\n\t\t\tselectedProfessionalFilter: { FilterId: '', Name: '' },\n\t\t\tselectedCapabilityFilter: { FilterId: '', Name: '' },\n\t\t\tselectedLocationFilter: { FilterId: '', Name: '' },\n\t\t\tselectedTopicFilter: { FilterId: '', Name: '' },\n\t\t\tselectedTypeFilter: { FilterId: '', Name: '' },\n\t\t\tselectedDateFilter: { FilterId: '', Name: '' },\n\t\t\tselectedEventDateFilter: ''\n\t\t},\n\t\tdefaultValues: {\n\t\t\tresults: searchServerJson.ArticleSearchResults.Results || [],\n\t\t\tresultCount: searchServerJson.ArticleSearchResults.ResultCount || 0,\n\t\t\tupcomingResultCount: searchServerJson.ArticleSearchResults.UpcomingResultCount || 0,\n\t\t\tupcomingResults: searchServerJson.ArticleSearchResults.UpcomingResults || [],\n\t\t\tsearching: searchServerJson.Searching || false,\n\t\t\tpage: searchServerJson.Page || 1,\n\t\t\ttake: searchServerJson.Take || 25,\n\t\t\tupcomingPage: searchServerJson.UpcomingPage,\n\t\t\tupcomingTake: searchServerJson.UpcomingTake || 10,\n\t\t\tsearchKeyword: searchServerJson.SearchKeyword || '',\n\t\t\tscrollPosition: searchServerJson.Scroll || 0,\n\t\t\tcapabilityFilters: searchServerJson.CapabilityFilters,\n\t\t\tlocationFilters: searchServerJson.LocationFilters,\n\t\t\ttopicFilters: searchServerJson.TopicFilters,\n\t\t\ttypeFilters: searchServerJson.TypeFilters,\n\t\t\tdateFilters: searchServerJson.DateFilters,\n\t\t\tselectedProfessionalFilter: !!searchServerJson.ProfessionalFilter ? searchServerJson.ProfessionalFilter : {\n\t\t\t\tName: \"\",\n\t\t\t\tFilterId: \"\"\n\t\t\t},\n\t\t\tselectedCapabilityFilter: searchServerJson.CapabilityFilters.find(function (item) {\n\t\t\t\treturn item.Selected;\n\t\t\t}) || {\n\t\t\t\tName: \"\",\n\t\t\t\tFilterId: \"\"\n\t\t\t},\n\t\t\tselectedLocationFilter: searchServerJson.LocationFilters.find(function (item) {\n\t\t\t\treturn item.Selected;\n\t\t\t}) || {\n\t\t\t\tName: \"\",\n\t\t\t\tFilterId: \"\"\n\t\t\t},\n\t\t\tselectedTopicFilter: searchServerJson.TopicFilters.find(function (item) {\n\t\t\t\treturn item.Selected;\n\t\t\t}) || {\n\t\t\t\tName: \"\",\n\t\t\t\tFilterId: \"\"\n\t\t\t},\n\t\t\tselectedTypeFilter: searchServerJson.TypeFilters.find(function (item) {\n\t\t\t\treturn item.Selected;\n\t\t\t}) || {\n\t\t\t\tName: \"\",\n\t\t\t\tFilterId: \"\"\n\t\t\t},\n\t\t\tselectedDateFilter: searchServerJson.DateFilters.find(function (item) {\n\t\t\t\treturn item.Selected;\n\t\t\t}) || {\n\t\t\t\tName: \"\",\n\t\t\t\tFilterId: \"\"\n\t\t\t},\n\t\t\tselectedEventDateFilter: searchServerJson.SelectedEventDate || ''\n\t\t},\n\t\tclearDropdownSelection: function clearDropdownSelection(id) {\n\t\t\tformattedId = '#' + id;\n\t\t\t$(formattedId).val('');\n\t\t},\n\t\tgetLoadMoreLocation: function getLoadMoreLocation() {\n\t\t\treturn parseInt($(this.loadMoreElement).offset().top);\n\t\t},\n\t\tgetUpcomingLoadMoreLocation: function getUpcomingLoadMoreLocation() {\n\t\t\treturn parseInt($(this.upcomingLoadMoreElement).offset().top);\n\t\t},\n\t\tgetParams: function getParams(url) {\n\t\t\tvar searchParams = url;\n\n\t\t\tif (searchParams.length == 0) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\tsearchParams = searchParams.substr(1);\n\n\t\t\tvar params = searchParams.split('&');\n\n\t\t\tvar objects = params.map(function (equation) {\n\t\t\t\tvar sides = equation.split('=');\n\t\t\t\treturn {\n\t\t\t\t\tkey: sides[0],\n\t\t\t\t\tvalue: sides[1]\n\t\t\t\t};\n\t\t\t});\n\n\t\t\treturn objects;\n\t\t},\n\t\tgetNewUrlParams: function getNewUrlParams(paramsList) {\n\t\t\tvar paramPairs = paramsList.map(function (param) {\n\t\t\t\treturn param.key + '=' + param.value;\n\t\t\t});\n\n\t\t\tvar newUrlParams = '?' + paramPairs.join('&');\n\n\t\t\treturn window.location.pathname + newUrlParams;\n\t\t},\n\t\tsetUrlParameter: function setUrlParameter(key, value, url) {\n\t\t\tvar params = this.getParams(url);\n\n\t\t\tvar paramsWithKey = params.filter(function (param) {\n\t\t\t\treturn param.key === key;\n\t\t\t});\n\n\t\t\tvar paramsWithoutKey = params.filter(function (param) {\n\t\t\t\treturn param.key !== key;\n\t\t\t});\n\n\t\t\tvar paramWithKey = paramsWithKey[0];\n\n\t\t\tvar paramExists = paramWithKey !== undefined;\n\n\t\t\tif (paramExists) {\n\t\t\t\tparamWithKey.value = value;\n\t\t\t} else {\n\t\t\t\tparamWithKey = {\n\t\t\t\t\tkey: key,\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tvar newParams = paramsWithoutKey;\n\n\t\t\tif (value != undefined) newParams.push(paramWithKey);\n\n\t\t\treturn this.getNewUrlParams(newParams);\n\t\t},\n\t\tdefaultScroll: function defaultScroll() {\n\t\t\tvar offset = parseInt($(window).height() / 2);\n\n\t\t\tvar location = parseInt($(this.defaultElement).offset().top);\n\t\t\t$(\"html, body\").animate({\n\t\t\t\tscrollTop: location - offset\n\t\t\t}, \"slow\", function () {\n\t\t\t\tvar $resultCount = $('.searched-criteria-results');\n\t\t\t\t$resultCount.focus().attr('tabindex', -1);\n\t\t\t});\n\n\t\t\treturn location - offset;\n\t\t},\n\t\tscrollTo: function scrollTo(location) {\n\t\t\t$(\"html, body\").animate({\n\t\t\t\tscrollTop: location\n\t\t\t}, \"slow\");\n\t\t},\n\t\tsearch: function search(apiUrl, page, take, upcomingPage, upcomingTake, keyword, eventDate, dateFilter, location, capability, topic, type, professional) {\n\t\t\treturn Vue.http.post(apiUrl, {\n\t\t\t\tSkip: (page - 1) * take,\n\t\t\t\tTake: take,\n\t\t\t\tUpcomingSkip: (upcomingPage - 1) * upcomingTake,\n\t\t\t\tUpcomingTake: upcomingTake,\n\t\t\t\tKeyword: keyword,\n\t\t\t\tEventDate: eventDate,\n\t\t\t\tDateFilter: dateFilter,\n\t\t\t\tLocation: location,\n\t\t\t\tCapability: capability,\n\t\t\t\tTopic: topic,\n\t\t\t\tType: type,\n\t\t\t\tProfessional: professional\n\t\t\t}).then(function (response) {\n\n\t\t\t\tif (response.status == 200) {\n\t\t\t\t\treturn response.body;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log(\"error while retrieving search results\");\n\t\t\t\t\treturn defaultResults;\n\t\t\t\t}\n\t\t\t}, function (error) {\n\t\t\t\tconsole.log(error);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tVue.use(VueResource);\n\n\tvar store = new Vuex.Store({\n\n\t\tstate: {\n\t\t\tresults: utilities.defaultValues.results,\n\t\t\tresultCount: utilities.defaultValues.resultCount,\n\t\t\tsearching: utilities.defaultValues.searching,\n\t\t\tpage: utilities.defaultValues.page,\n\t\t\ttake: utilities.defaultValues.take,\n\t\t\tupcomingPage: utilities.defaultValues.upcomingPage,\n\t\t\tupcomingTake: utilities.defaultValues.upcomingTake,\n\t\t\tsearchKeyword: utilities.defaultValues.searchKeyword,\n\t\t\tscrollPosition: utilities.defaultValues.scrollPosition,\n\t\t\tcapabilityFilters: utilities.defaultValues.capabilityFilters,\n\t\t\tlocationFilters: utilities.defaultValues.locationFilters,\n\t\t\ttopicFilters: utilities.defaultValues.topicFilters,\n\t\t\ttypeFilters: utilities.defaultValues.typeFilters,\n\t\t\tdateFilters: utilities.defaultValues.dateFilters,\n\t\t\tselectedProfessionalFilter: utilities.defaultValues.selectedProfessionalFilter,\n\t\t\tselectedCapabilityFilter: utilities.defaultValues.selectedCapabilityFilter,\n\t\t\tselectedLocationFilter: utilities.defaultValues.selectedLocationFilter,\n\t\t\tselectedTopicFilter: utilities.defaultValues.selectedTopicFilter,\n\t\t\tselectedTypeFilter: utilities.defaultValues.selectedTypeFilter,\n\t\t\tselectedDateFilter: utilities.defaultValues.selectedDateFilter,\n\t\t\tselectedEventDateFilter: utilities.defaultValues.selectedEventDateFilter,\n\t\t\tupcomingResultCount: utilities.defaultValues.upcomingResultCount,\n\t\t\tupcomingResults: utilities.defaultValues.upcomingResults\n\t\t},\n\n\t\tgetters: {\n\t\t\tselectedEventDateFilter: function selectedEventDateFilter(state) {\n\t\t\t\treturn state.selectedEventDateFilter;\n\t\t\t},\n\t\t\tresults: function results(state) {\n\t\t\t\treturn state.results;\n\t\t\t},\n\t\t\tresultCount: function resultCount(state) {\n\t\t\t\treturn state.resultCount;\n\t\t\t},\n\t\t\tupcomingResultCount: function upcomingResultCount(state) {\n\t\t\t\treturn state.upcomingResultCount;\n\t\t\t},\n\t\t\tupcomingResults: function upcomingResults(state) {\n\t\t\t\treturn state.upcomingResults;\n\t\t\t},\n\t\t\tsearching: function searching(state) {\n\t\t\t\treturn state.searching;\n\t\t\t},\n\t\t\tupcomingTake: function upcomingTake(state) {\n\t\t\t\treturn state.upcomingTake;\n\t\t\t},\n\t\t\tupcomingPage: function upcomingPage(state) {\n\t\t\t\treturn state.upcomingPage;\n\t\t\t},\n\t\t\tpage: function page(state) {\n\t\t\t\treturn state.page;\n\t\t\t},\n\t\t\ttake: function take(state) {\n\t\t\t\treturn state.take;\n\t\t\t},\n\t\t\tsearchKeyword: function searchKeyword(state) {\n\t\t\t\treturn state.searchKeyword;\n\t\t\t},\n\t\t\tscrollPosition: function scrollPosition(state) {\n\t\t\t\treturn state.scrollPosition;\n\t\t\t},\n\t\t\tcapabilityFilters: function capabilityFilters(state) {\n\t\t\t\treturn state.capabilityFilters;\n\t\t\t},\n\t\t\tlocationFilters: function locationFilters(state) {\n\t\t\t\treturn state.locationFilters;\n\t\t\t},\n\t\t\ttopicFilters: function topicFilters(state) {\n\t\t\t\treturn state.topicFilters;\n\t\t\t},\n\t\t\ttypeFilters: function typeFilters(state) {\n\t\t\t\treturn state.typeFilters;\n\t\t\t},\n\t\t\tdateFilters: function dateFilters(state) {\n\t\t\t\treturn state.dateFilters;\n\t\t\t},\n\t\t\tselectedProfessionalFilter: function selectedProfessionalFilter(state) {\n\t\t\t\treturn state.selectedProfessionalFilter;\n\t\t\t},\n\t\t\tselectedCapabilityFilter: function selectedCapabilityFilter(state) {\n\t\t\t\treturn state.selectedCapabilityFilter;\n\t\t\t},\n\t\t\tselectedLocationFilter: function selectedLocationFilter(state) {\n\t\t\t\treturn state.selectedLocationFilter;\n\t\t\t},\n\t\t\tselectedTopicFilter: function selectedTopicFilter(state) {\n\t\t\t\treturn state.selectedTopicFilter;\n\t\t\t},\n\t\t\tselectedTypeFilter: function selectedTypeFilter(state) {\n\t\t\t\treturn state.selectedTypeFilter;\n\t\t\t},\n\t\t\tselectedDateFilter: function selectedDateFilter(state) {\n\t\t\t\treturn state.selectedDateFilter;\n\t\t\t}\n\t\t},\n\n\t\tmutations: {\n\t\t\tupdateSelectedEventDateFilter: function updateSelectedEventDateFilter(state, date) {\n\t\t\t\tstate.selectedEventDateFilter = date;\n\t\t\t},\n\t\t\tresetState: function resetState(state) {\n\t\t\t\tvar defaults = utilities.emptyValues;\n\t\t\t\tfor (var key in defaults) {\n\t\t\t\t\tstate[key] = defaults[key];\n\t\t\t\t}\n\t\t\t\tutilities.clearDropdownSelection('field-capability');\n\t\t\t\tutilities.clearDropdownSelection('field-location');\n\t\t\t\tutilities.clearDropdownSelection('field-type');\n\t\t\t\tutilities.clearDropdownSelection('field-time-period');\n\t\t\t},\n\t\t\tupdateSelectedCapabilityFilter: function updateSelectedCapabilityFilter(state, filter) {\n\t\t\t\tstate.selectedCapabilityFilter = filter;\n\t\t\t},\n\t\t\tupdateSelectedLocationFilter: function updateSelectedLocationFilter(state, filter) {\n\t\t\t\tstate.selectedLocationFilter = filter;\n\t\t\t},\n\t\t\tupdateSelectedTopicFilter: function updateSelectedTopicFilter(state, filter) {\n\t\t\t\tstate.selectedTopicFilter = filter;\n\t\t\t},\n\t\t\tupdateSelectedTypeFilter: function updateSelectedTypeFilter(state, filter) {\n\t\t\t\tstate.selectedTypeFilter = filter;\n\t\t\t},\n\t\t\tupdateSelectedDateFilter: function updateSelectedDateFilter(state, filter) {\n\t\t\t\tstate.selectedDateFilter = filter;\n\t\t\t},\n\t\t\tupdateSelectedProfessionalFilter: function updateSelectedProfessionalFilter(state, filter) {\n\t\t\t\tstate.selectedProfessionalFilter = filter;\n\t\t\t},\n\t\t\tsetState: function setState(state, newState) {\n\t\t\t\tfor (var key in newState) {\n\t\t\t\t\tstate[key] = newState[key];\n\t\t\t\t}\n\t\t\t},\n\t\t\tloadMoreUpcoming: function loadMoreUpcoming(state) {\n\t\t\t\tstate.upcomingPage++;\n\t\t\t},\n\t\t\tloadMore: function loadMore(state, _loadMore) {\n\t\t\t\tstate.page++;\n\t\t\t},\n\t\t\tupdateScroll: function updateScroll(state, scrollPosition) {\n\t\t\t\tstate.scrollPosition = scrollPosition;\n\t\t\t},\n\t\t\tclearFilter: function clearFilter(state, filterName) {\n\t\t\t\tif (filterName === \"capability\") {\n\t\t\t\t\tstate.selectedCapabilityFilter = utilities.defaultValues.selectedCapabilityFilter;\n\t\t\t\t\tutilities.clearDropdownSelection('field-capability');\n\t\t\t\t} else if (filterName === \"location\") {\n\t\t\t\t\tstate.selectedLocationFilter = utilities.defaultValues.selectedLocationFilter;\n\t\t\t\t\tutilities.clearDropdownSelection('field-location');\n\t\t\t\t} else if (filterName === 'type') {\n\t\t\t\t\tstate.selectedTypeFilter = utilities.defaultValues.selectedTypeFilter;\n\t\t\t\t\tutilities.clearDropdownSelection('field-type');\n\t\t\t\t} else if (filterName === \"keyword\") {\n\t\t\t\t\tstate.searchKeyword = utilities.defaultValues.searchKeyword;\n\t\t\t\t} else if (filterName === 'professional') {\n\t\t\t\t\tstate.selectedProfessionalFilter = utilities.defaultValues.selectedProfessionalFilter;\n\t\t\t\t} else if (filterName === 'time') {\n\t\t\t\t\tstate.selectedDateFilter = utilities.defaultValues.selectedDateFilter;\n\t\t\t\t\tutilities.clearDropdownSelection('field-time-period');\n\t\t\t\t} else if (filterName === 'eventdate') {\n\t\t\t\t\tstate.selectedEventDateFilter = utilities.defaultValues.selectedEventDateFilter;\n\t\t\t\t\tutilities.clearDropdownSelection('field-time-period');\n\t\t\t\t}\n\t\t\t\t$('#search-landing-filters').focus();\n\t\t\t},\n\t\t\tsetSearching: function setSearching(state, searching) {\n\t\t\t\tstate.searching = searching;\n\t\t\t},\n\t\t\tupdateResults: function updateResults(state, results) {\n\t\t\t\tstate.results = results;\n\t\t\t},\n\t\t\tupdateResultCount: function updateResultCount(state, count) {\n\t\t\t\tstate.resultCount = count;\n\t\t\t},\n\t\t\tupdateUpcomingResultCount: function updateUpcomingResultCount(state, count) {\n\t\t\t\tstate.upcomingResultCount = count;\n\t\t\t},\n\t\t\tupdateUpcomingResults: function updateUpcomingResults(state, results) {\n\t\t\t\tstate.upcomingResults = results;\n\t\t\t},\n\t\t\tupdateSearchKeyword: function updateSearchKeyword(state, text) {\n\t\t\t\tstate.searchKeyword = text;\n\t\t\t}\n\t\t},\n\n\t\tactions: {\n\t\t\tsetSelectedEventDateFilter: function setSelectedEventDateFilter(context, date) {\n\t\t\t\tcontext.commit('updateSelectedEventDateFilter', date);\n\t\t\t},\n\t\t\tsetCapabilityFilter: function setCapabilityFilter(context, filter) {\n\t\t\t\tcontext.commit(\"updateSelectedCapabilityFilter\", filter);\n\t\t\t\treturn context.dispatch('search');\n\t\t\t},\n\t\t\tsetLocationFilter: function setLocationFilter(context, filter) {\n\t\t\t\tcontext.commit(\"updateSelectedLocationFilter\", filter);\n\t\t\t\treturn context.dispatch('search');\n\t\t\t},\n\t\t\tsetTopicFilter: function setTopicFilter(context, filter) {\n\t\t\t\tcontext.commit(\"updateSelectedTopicFilter\", filter);\n\t\t\t\treturn context.dispatch('search');\n\t\t\t},\n\t\t\tsetTypeFilter: function setTypeFilter(context, filter) {\n\t\t\t\tcontext.commit(\"updateSelectedTypeFilter\", filter);\n\t\t\t\treturn context.dispatch('search');\n\t\t\t},\n\t\t\tsetDateFilter: function setDateFilter(context, filter) {\n\t\t\t\tcontext.commit(\"updateSelectedDateFilter\", filter);\n\t\t\t\treturn context.dispatch('search');\n\t\t\t},\n\t\t\tsetState: function setState(context, newState) {\n\t\t\t\tcontext.commit('setState', newState);\n\t\t\t},\n\t\t\tloadMoreUpcoming: function loadMoreUpcoming(context) {\n\t\t\t\tcontext.commit('loadMoreUpcoming');\n\t\t\t\treturn context.dispatch('search', { loadMore: true });\n\t\t\t},\n\t\t\tloadMore: function loadMore(context) {\n\t\t\t\tcontext.commit('loadMore');\n\t\t\t\treturn context.dispatch('search', { loadMore: true });\n\t\t\t},\n\t\t\tupdateScroll: function updateScroll(context, scrollPosition) {\n\t\t\t\tcontext.commit('updateScroll', scrollPosition);\n\t\t\t},\n\t\t\tclearFilter: function clearFilter(context, filterName) {\n\n\t\t\t\tvar setFilters = [];\n\t\t\t\tif (context.state.selectedCapabilityFilter.FilterId !== '') {\n\t\t\t\t\tsetFilters.push(context.state.selectedCapabilityFilter);\n\t\t\t\t}\n\t\t\t\tif (context.state.selectedLocationFilter.FilterId !== '') {\n\t\t\t\t\tsetFilters.push(context.state.selectedLocationFilter);\n\t\t\t\t}\n\t\t\t\tif (context.state.searchKeyword !== '') {\n\t\t\t\t\tsetFilters.push(context.state.searchKeyword);\n\t\t\t\t}\n\t\t\t\tif (context.state.selectedTopicFilter.FilterId !== '') {\n\t\t\t\t\tsetFilters.push(context.state.selectedTopicFilter);\n\t\t\t\t}\n\t\t\t\tif (context.state.selectedTypeFilter.FilterId !== '') {\n\t\t\t\t\tsetFilters.push(context.state.selectedTypeFilter);\n\t\t\t\t}\n\t\t\t\tif (context.state.selectedProfessionalFilter.FilterId !== '') {\n\t\t\t\t\tsetFilters.push(context.state.selectedProfessionalFilter);\n\t\t\t\t}\n\t\t\t\tif (context.state.selectedDateFilter.FilterId !== '') {\n\t\t\t\t\tsetFilters.push(context.state.selectedDateFilter);\n\t\t\t\t}\n\t\t\t\tif (context.state.selectedEventDateFilter !== '') {\n\t\t\t\t\tsetFilters.push(context.state.selectedEventDateFilter);\n\t\t\t\t}\n\t\t\t\t$('#search-landing-filters').focus();\n\n\t\t\t\tif (setFilters.length > 1) {\n\t\t\t\t\tcontext.commit('clearFilter', filterName);\n\t\t\t\t\treturn context.dispatch(\"search\", { clearedFilterName: filterName });\n\t\t\t\t} else {\n\t\t\t\t\t//reset state\n\t\t\t\t\tcontext.commit('resetState');\n\t\t\t\t}\n\t\t\t},\n\t\t\tclearAllFilters: function clearAllFilters(context) {\n\t\t\t\tcontext.commit('resetState');\n\t\t\t\twindow.history.pushState(utilities.defaultValues, '', window.location.pathname);\n\t\t\t},\n\t\t\tperformKeywordSearch: function performKeywordSearch(context, term) {\n\t\t\t\tcontext.commit('updateSearchKeyword', term);\n\t\t\t\treturn context.dispatch('search');\n\t\t\t},\n\t\t\tperformProfessionalSearch: function performProfessionalSearch(context, professional) {\n\t\t\t\tvar lawyerFilter = {};\n\t\t\t\tlawyerFilter.Name = professional.name;\n\t\t\t\tlawyerFilter.FilterId = professional.id;\n\t\t\t\tcontext.commit('updateSelectedProfessionalFilter', lawyerFilter);\n\t\t\t\treturn context.dispatch('search');\n\t\t\t},\n\t\t\tupdateSearchKeyword: function updateSearchKeyword(context, value) {\n\t\t\t\tcontext.commit('updateSearchKeyword', value);\n\t\t\t},\n\t\t\tupdateSearchProfessional: function updateSearchProfessional(context, value) {\n\t\t\t\tcontext.commit('updateSearchProfessional', value);\n\t\t\t},\n\t\t\tupdateSearchProfessionalId: function updateSearchProfessionalId(context, value) {\n\t\t\t\tcontext.commit('updateSearchProfessionalId', value);\n\t\t\t},\n\t\t\tsearch: function search(context, payload) {\n\t\t\t\tpayload = payload || {};\n\t\t\t\tvar clearedFilterName = payload.clearedFilterName;\n\t\t\t\tvar loadMore = payload.loadMore;\n\n\t\t\t\tif (!loadMore) {\n\t\t\t\t\tcontext.commit('setState', { page: 1, upcomingPage: 1 });\n\t\t\t\t}\n\n\t\t\t\tvar dateFilterId = '';\n\t\t\t\tif (context.state.selectedDateFilter) {\n\t\t\t\t\tdateFilterId = context.state.selectedDateFilter.FilterId;\n\t\t\t\t}\n\n\t\t\t\treturn utilities.search(landingSettingsDefaultValues.searchApiUrl, context.state.page, context.state.take, context.state.upcomingPage, context.state.upcomingTake, context.state.searchKeyword, context.state.selectedEventDateFilter, dateFilterId, context.state.selectedLocationFilter.FilterId, context.state.selectedCapabilityFilter.FilterId, context.state.selectedTopicFilter.FilterId, context.state.selectedTypeFilter.FilterId, context.state.selectedProfessionalFilter.FilterId).then(function (searchResult) {\n\t\t\t\t\t// if we are not on first page, then add to results\n\t\t\t\t\tvar firstResultIndex = 0;\n\t\t\t\t\tif (context.state.page != 1) {\n\t\t\t\t\t\tfirstResultIndex = context.state.results.length;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (loadMore) {\n\t\t\t\t\t\tvar paginatedResults = context.state.results;\n\t\t\t\t\t\tpaginatedResults = paginatedResults.concat(searchResult.Results);\n\t\t\t\t\t\tcontext.commit('updateResults', paginatedResults);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.commit('updateResults', searchResult.Results);\n\t\t\t\t\t\tcontext.commit('updateResultCount', searchResult.ResultCount);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (landingSettingsDefaultValues.templateName === 'events') {\n\t\t\t\t\t\tif (context.state.upcomingPage != 1) {\n\t\t\t\t\t\t\tfirstResultIndex = context.state.upcomingResults.length;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (loadMore) {\n\t\t\t\t\t\t\tvar paginatedUpcomingResults = context.state.upcomingResults;\n\t\t\t\t\t\t\tpaginatedUpcomingResults = paginatedUpcomingResults.concat(searchResult.UpcomingResults);\n\t\t\t\t\t\t\tcontext.commit('updateUpcomingResults', paginatedUpcomingResults);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.commit('updateUpcomingResultCount', searchResult.UpcomingResultCount);\n\t\t\t\t\t\t\tcontext.commit('updateUpcomingResults', searchResult.UpcomingResults);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvar newUrl = '';\n\n\t\t\t\t\tif (context.state.page != 0) {\n\t\t\t\t\t\tnewUrl = utilities.setUrlParameter(\"page\", context.state.page, newUrl !== \"\" ? '?' + newUrl.split('?')[1] : window.location.search);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (landingSettingsDefaultValues.templateName === 'events' && context.state.upcomingPage != 0) {\n\t\t\t\t\t\tnewUrl = utilities.setUrlParameter(\"upcomingpage\", context.state.upcomingPage, newUrl !== \"\" ? '?' + newUrl.split('?')[1] : window.location.search);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (context.state.searchKeyword !== \"\") {\n\t\t\t\t\t\tnewUrl = utilities.setUrlParameter(\"keyword\", context.state.searchKeyword, newUrl !== \"\" ? '?' + newUrl.split('?')[1] : window.location.search);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (context.state.selectedEventDateFilter !== \"\") {\n\t\t\t\t\t\tnewUrl = utilities.setUrlParameter(\"eventdate\", context.state.selectedEventDateFilter, newUrl !== \"\" ? '?' + newUrl.split('?')[1] : window.location.search);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (context.state.selectedProfessionalFilter.FilterId != '' || clearedFilterName === \"professional\") {\n\t\t\t\t\t\tnewUrl = utilities.setUrlParameter('professional', context.state.selectedProfessionalFilter.FilterId, newUrl !== \"\" ? '?' + newUrl.split('?')[1] : window.location.search);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (context.state.selectedCapabilityFilter.FilterId !== \"\" || clearedFilterName === \"capability\") {\n\t\t\t\t\t\tnewUrl = utilities.setUrlParameter(\"capability\", context.state.selectedCapabilityFilter.FilterId, newUrl !== \"\" ? '?' + newUrl.split('?')[1] : window.location.search);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (context.state.selectedLocationFilter.FilterId !== \"\" || clearedFilterName === \"location\") {\n\t\t\t\t\t\tnewUrl = utilities.setUrlParameter(\"location\", context.state.selectedLocationFilter.FilterId, newUrl !== \"\" ? '?' + newUrl.split('?')[1] : window.location.search);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (context.state.selectedTopicFilter.FilterId !== \"\" || clearedFilterName === \"topic\") {\n\t\t\t\t\t\tnewUrl = utilities.setUrlParameter(\"topic\", context.state.selectedTopicFilter.FilterId, newUrl !== '' ? '?' + newUrl.split('?')[1] : window.location.search);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (context.state.selectedTypeFilter.FilterId !== \"\" || clearedFilterName === \"type\") {\n\t\t\t\t\t\tnewUrl = utilities.setUrlParameter(\"type\", context.state.selectedTypeFilter.FilterId, newUrl !== '' ? '?' + newUrl.split('?')[1] : window.location.search);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (context.state.selectedDateFilter.FilterId !== \"\" || clearedFilterName === \"date\") {\n\t\t\t\t\t\tnewUrl = utilities.setUrlParameter(\"date\", context.state.selectedDateFilter.FilterId, newUrl !== '' ? '?' + newUrl.split('?')[1] : window.location.search);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (context.state.scrollPosition !== 0) {\n\t\t\t\t\t\tnewUrl = utilities.setUrlParameter(\"scroll\", context.state.scrollPosition, newUrl !== \"\" ? '?' + newUrl.split('?')[1] : window.location.search);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (newUrl !== \"\") {\n\t\t\t\t\t\tcontext.commit('setSearching', true);\n\t\t\t\t\t\twindow.history.pushState(context.state, '', newUrl);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn firstResultIndex;\n\t\t\t\t});\n\t\t\t}\n\n\t\t}\n\n\t});\n\n\tvar articleSearchApp = new Vue({\n\n\t\tel: '#articles-landing',\n\n\t\tstore: store,\n\n\t\tdata: {\n\t\t\tcurrentSearchKeyword: '',\n\t\t\tcurrentSearchProfessional: '',\n\t\t\tshowMobileFilters: false,\n\t\t\teventPage: true,\n\t\t\tfocusedDropdowns: []\n\t\t},\n\n\t\tcreated: function created() {\n\t\t\twindow.onpopstate = this.onPopState;\n\n\t\t\tif (this.$store.getters.scrollPosition !== 0) {\n\t\t\t\tutilities.scrollTo(this.$store.getters.scrollPosition);\n\t\t\t}\n\t\t},\n\n\t\tcomputed: {\n\t\t\tupcomingResultCount: function upcomingResultCount() {\n\t\t\t\treturn this.$store.getters.upcomingResultCount;\n\t\t\t},\n\t\t\tupcomingResults: function upcomingResults() {\n\t\t\t\treturn this.$store.getters.upcomingResults;\n\t\t\t},\n\t\t\tresults: function results() {\n\t\t\t\treturn this.$store.getters.results;\n\t\t\t},\n\t\t\tresultCount: function resultCount() {\n\t\t\t\treturn this.$store.getters.resultCount;\n\t\t\t},\n\t\t\tsearching: function searching() {\n\t\t\t\treturn this.$store.getters.searching;\n\t\t\t},\n\t\t\tupcomingTake: function upcomingTake() {\n\t\t\t\treturn this.$store.getters.upcomingTake;\n\t\t\t},\n\t\t\tupcomingPage: function upcomingPage() {\n\t\t\t\treturn this.$store.getters.upcomingPage;\n\t\t\t},\n\t\t\tpage: function page() {\n\t\t\t\treturn this.$store.getters.page;\n\t\t\t},\n\t\t\ttake: function take() {\n\t\t\t\treturn this.$store.getters.take;\n\t\t\t},\n\t\t\tsearchKeyword: function searchKeyword() {\n\t\t\t\treturn this.$store.getters.searchKeyword;\n\t\t\t},\n\t\t\tscrollPosition: function scrollPosition() {\n\t\t\t\treturn this.$store.getters.scrollPosition;\n\t\t\t},\n\t\t\tcapabilityFilters: function capabilityFilters() {\n\t\t\t\treturn this.$store.getters.capabilityFilters;\n\t\t\t},\n\t\t\tlocationFilters: function locationFilters() {\n\t\t\t\treturn this.$store.getters.locationFilters;\n\t\t\t},\n\t\t\ttopicFilters: function topicFilters() {\n\t\t\t\treturn this.$store.getters.topicFilters;\n\t\t\t},\n\t\t\ttypeFilters: function typeFilters() {\n\t\t\t\treturn this.$store.getters.typeFilters;\n\t\t\t},\n\t\t\tdateFilters: function dateFilters() {\n\t\t\t\treturn this.$store.getters.dateFilters;\n\t\t\t},\n\t\t\tselectedCapabilityFilter: function selectedCapabilityFilter() {\n\t\t\t\treturn this.$store.getters.selectedCapabilityFilter;\n\t\t\t},\n\t\t\tselectedLocationFilter: function selectedLocationFilter() {\n\t\t\t\treturn this.$store.getters.selectedLocationFilter;\n\t\t\t},\n\t\t\tselectedTopicFilter: function selectedTopicFilter() {\n\t\t\t\treturn this.$store.getters.selectedTopicFilter;\n\t\t\t},\n\t\t\tselectedTypeFilter: function selectedTypeFilter() {\n\t\t\t\treturn this.$store.getters.selectedTypeFilter;\n\t\t\t},\n\t\t\tselectedDateFilter: function selectedDateFilter() {\n\t\t\t\treturn this.$store.getters.selectedDateFilter;\n\t\t\t},\n\t\t\tselectedProfessionalFilter: function selectedProfessionalFilter() {\n\t\t\t\treturn this.$store.getters.selectedProfessionalFilter;\n\t\t\t},\n\t\t\tselectedEventDateFilter: function selectedEventDateFilter() {\n\t\t\t\treturn this.$store.getters.selectedEventDateFilter;\n\t\t\t},\n\t\t\tfilterCount: function filterCount() {\n\t\t\t\tvar setFilters = [];\n\n\t\t\t\tif (this.selectedCapabilityFilter.FilterId !== '') {\n\t\t\t\t\tsetFilters.push(this.selectedCapabilityFilter);\n\t\t\t\t}\n\t\t\t\tif (this.selectedLocationFilter.FilterId !== '') {\n\t\t\t\t\tsetFilters.push(this.selectedLocationFilter);\n\t\t\t\t}\n\t\t\t\tif (this.selectedTopicFilter.FilterId !== '') {\n\t\t\t\t\tsetFilters.push(this.selectedTopicFilter);\n\t\t\t\t}\n\t\t\t\tif (this.selectedTypeFilter.FilterId !== '') {\n\t\t\t\t\tsetFilters.push(this.selectedTypeFilter);\n\t\t\t\t}\n\t\t\t\tif (this.selectedDateFilter.FilterId !== '') {\n\t\t\t\t\tsetFilters.push(this.selectedDateFilter);\n\t\t\t\t}\n\t\t\t\tif (this.selectedProfessionalFilter.FilterId !== '') {\n\t\t\t\t\tsetFilters.push(this.searchProfessional);\n\t\t\t\t}\n\t\t\t\tif (this.selectedEventDateFilter !== '') {\n\t\t\t\t\tsetFilters.push(this.selectedEventDateFilter);\n\t\t\t\t}\n\t\t\t\tif (this.searchKeyword !== '') {\n\t\t\t\t\tsetFilters.push(this.searchKeyword);\n\t\t\t\t}\n\n\t\t\t\treturn setFilters.length;\n\t\t\t}\n\t\t},\n\n\t\tmethods: {\n\t\t\ttoggleFilters: function toggleFilters() {\n\t\t\t\tthis.showMobileFilters = !this.showMobileFilters;\n\t\t\t},\n\t\t\tshouldShowFilter: function shouldShowFilter(filterName) {\n\t\t\t\tvar currentTemplateName = landingSettingsDefaultValues.templateName;\n\t\t\t\tif (currentTemplateName === 'perspectives') {\n\t\t\t\t\treturn utilities.perspectiveFilters.indexOf(filterName) !== -1;\n\t\t\t\t} else if (currentTemplateName === 'news') {\n\t\t\t\t\treturn utilities.newsFilters.indexOf(filterName) !== -1;\n\t\t\t\t} else if (currentTemplateName === 'events') {\n\t\t\t\t\treturn utilities.eventFilters.indexOf(filterName) !== -1;\n\t\t\t\t}\n\t\t\t},\n\t\t\tcapabilityFilterChange: function capabilityFilterChange(value) {\n\t\t\t\tif (value) {\n\t\t\t\t\tvar filter = JSON.parse(value);\n\t\t\t\t\t// var scrollValue = utilities.defaultScroll()\n\t\t\t\t\t// this.$store.dispatch('updateScroll', scrollValue)\n\t\t\t\t\tthis.$store.dispatch('setCapabilityFilter', filter);\n\t\t\t\t} else {\n\t\t\t\t\tthis.$store.dispatch('clearFilter', 'capability');\n\t\t\t\t}\n\t\t\t},\n\t\t\tlocationFilterChange: function locationFilterChange(value) {\n\t\t\t\tif (value) {\n\t\t\t\t\tvar filter = JSON.parse(value);\n\t\t\t\t\t// var scrollValue = utilities.defaultScroll()\n\t\t\t\t\t// this.$store.dispatch('updateScroll', scrollValue)\n\t\t\t\t\tthis.$store.dispatch('setLocationFilter', filter);\n\t\t\t\t} else {\n\t\t\t\t\tthis.$store.dispatch('clearFilter', 'location');\n\t\t\t\t}\n\t\t\t},\n\t\t\ttopicFilterChange: function topicFilterChange(value) {\n\t\t\t\tif (value) {\n\t\t\t\t\tvar filter = JSON.parse(value);\n\t\t\t\t\t// var scrollValue = utilities.defaultScroll()\n\t\t\t\t\t// this.$store.dispatch('updateScroll', scrollValue)\n\t\t\t\t\tthis.$store.dispatch('setTopicFilter', filter);\n\t\t\t\t} else {\n\t\t\t\t\tthis.$store.dispatch('clearFilter', 'topic');\n\t\t\t\t}\n\t\t\t},\n\t\t\ttypeFilterChange: function typeFilterChange(value) {\n\t\t\t\tif (value) {\n\t\t\t\t\tvar filter = JSON.parse(value);\n\t\t\t\t\t// var scrollValue = utilities.defaultScroll()\n\t\t\t\t\t// this.$store.dispatch('updateScroll', scrollValue)\n\t\t\t\t\tthis.$store.dispatch('setTypeFilter', filter);\n\t\t\t\t} else {\n\t\t\t\t\tthis.$store.dispatch('clearFilter', 'type');\n\t\t\t\t}\n\t\t\t},\n\t\t\tdateFilterChange: function dateFilterChange(value) {\n\t\t\t\tif (value) {\n\t\t\t\t\tvar filter = JSON.parse(value);\n\t\t\t\t\t// var scrollValue = utilities.defaultScroll()\n\t\t\t\t\t// this.$store.dispatch('updateScroll', scrollValue)\n\t\t\t\t\tthis.$store.dispatch('setDateFilter', filter);\n\t\t\t\t} else {\n\t\t\t\t\tthis.$store.dispatch('clearFilter', 'time');\n\t\t\t\t}\n\t\t\t},\n\t\t\tloadMoreUpcoming: function loadMoreUpcoming() {\n\t\t\t\t//this.$store.dispatch('updateScroll', utilities.getUpcomingLoadMoreLocation())\n\t\t\t\tthis.$store.dispatch('loadMoreUpcoming').then(function (firstResultIndex) {\n\t\t\t\t\t$('#search-entity-landing-results').find('.listing-articles-title').get(firstResultIndex).focus();\n\t\t\t\t});\n\t\t\t},\n\t\t\tloadMore: function loadMore() {\n\t\t\t\t//this.$store.dispatch('updateScroll', utilities.getLoadMoreLocation())\n\t\t\t\tthis.$store.dispatch('loadMore').then(function (firstResultIndex) {\n\t\t\t\t\t$('#search-entity-landing-results').find('.listing-articles-title').get(firstResultIndex).focus();\n\t\t\t\t});\n\t\t\t},\n\t\t\tsearchButtonClick: function searchButtonClick() {\n\t\t\t\tvar datePicker = document.getElementById('datepicker');\n\t\t\t\tvar eventStart = '';\n\n\t\t\t\tif (datePicker) {\n\t\t\t\t\tvar eventStart = datePicker.value;\n\t\t\t\t}\n\n\t\t\t\tif (this.currentSearchKeyword !== '' || eventStart !== '') {\n\n\t\t\t\t\tif (this.currentSearchKeyword != '') {\n\t\t\t\t\t\tthis.$store.dispatch('updateSearchKeyword', this.currentSearchKeyword);\n\t\t\t\t\t\t// this.currentSearchKeyword = ''\n\t\t\t\t\t}\n\n\t\t\t\t\tif (eventStart !== '') {\n\t\t\t\t\t\tdatePicker.value = '';\n\t\t\t\t\t\tthis.$store.dispatch('setSelectedEventDateFilter', eventStart);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.$store.dispatch('search');\n\t\t\t\t\t// var scrollValue = utilities.defaultScroll()\n\t\t\t\t\t// this.$store.dispatch('updateScroll', scrollValue)\n\t\t\t\t}\n\t\t\t},\n\t\t\tclearFilter: function clearFilter(filterName) {\n\t\t\t\tif (filterName == 'keyword') {\n\t\t\t\t\tthis.currentSearchKeyword = '';\n\t\t\t\t}\n\t\t\t\tthis.$store.dispatch('clearFilter', filterName);\n\t\t\t\twindow.history.pushState(utilities.defaultValues, '', window.location.pathname);\n\t\t\t},\n\t\t\tclearAllFilters: function clearAllFilters() {\n\t\t\t\tthis.$store.dispatch('clearAllFilters');\n\t\t\t\t$('#search-landing-filters').focus();\n\t\t\t\twindow.history.pushState(utilities.defaultValues, '', window.location.pathname);\n\t\t\t},\n\t\t\tonPopState: function onPopState() {\n\t\t\t\tif (window.history.state) {\n\t\t\t\t\tthis.$store.dispatch('setState', window.history.state);\n\t\t\t\t\tif (this.scrollPosition !== 0) {\n\t\t\t\t\t\tutilities.scrollTo(this.scrollPosition);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.$store.dispatch('clearFilter');\n\t\t\t\t}\n\t\t\t},\n\t\t\tgetLinkTarget: function getLinkTarget(isExternalLink) {\n\t\t\t\treturn isExternalLink ? \"_blank\" : \"_self\";\n\t\t\t},\n\t\t\tfocusFilter: function focusFilter(filterName) {\n\t\t\t\tif (!this.focusedDropdowns.indexOf(filterName) > -1) {\n\t\t\t\t\tthis.focusedDropdowns.push(filterName);\n\t\t\t\t}\n\t\t\t},\n\t\t\tblurFilter: function blurFilter(filterName) {\n\t\t\t\tif (this.focusedDropdowns.indexOf(filterName) > -1) {\n\t\t\t\t\tvar index = this.focusedDropdowns.indexOf(filterName);\n\t\t\t\t\tif (index > -1) {\n\t\t\t\t\t\tthis.focusedDropdowns.splice(index, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcomponents: {\n\t\t\t'search-typeahead': {\n\t\t\t\ttemplate: '#search-typeahead',\n\t\t\t\textends: VueTypeahead.default,\n\t\t\t\tprops: {\n\t\t\t\t\tplaceholdertext: String,\n\t\t\t\t\tarialabel: {\n\t\t\t\t\t\ttype: String,\n\t\t\t\t\t\tdefault: ''\n\t\t\t\t\t},\n\t\t\t\t\tdefaultstatus: String,\n\t\t\t\t\tpopulatedstatus: String,\n\t\t\t\t\temptystatus: String\n\t\t\t\t},\n\t\t\t\tdata: function data() {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsrc: landingSettingsDefaultValues.typeAheadApiUrl,\n\t\t\t\t\t\tlimit: 5,\n\t\t\t\t\t\tminChars: 3,\n\t\t\t\t\t\tqueryParamName: 'professional',\n\t\t\t\t\t\tlastQuery: '',\n\t\t\t\t\t\tlastCurrent: -1\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\tcomputed: {\n\t\t\t\t\tstatus: function status() {\n\t\t\t\t\t\tif (this.query.length >= this.minChars && !this.loading) {\n\t\t\t\t\t\t\tif (this.hasItems) {\n\t\t\t\t\t\t\t\treturn this.populatedstatus.replace(/\\{0\\}/g, this.items.length);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn this.emptystatus;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn this.defaultstatus.replace(/\\{0\\}/g, this.minChars);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tcurrentTitle: function currentTitle() {\n\t\t\t\t\t\tvar currentItem = this.items[this.current];\n\t\t\t\t\t\treturn currentItem ? currentItem.Title : '';\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tmethods: {\n\t\t\t\t\tonHit: function onHit(item) {\n\t\t\t\t\t\tthis.query = item.Title;\n\t\t\t\t\t\tthis.resetCustom();\n\t\t\t\t\t\tthis.$store.dispatch('performProfessionalSearch', { name: item.Title, id: item.Id });\n\t\t\t\t\t\tthis.query = '';\n\t\t\t\t\t},\n\t\t\t\t\tbeforeNav: function beforeNav() {\n\t\t\t\t\t\tthis.lastCurrent = this.current;\n\t\t\t\t\t\tif (this.current === -1) {\n\t\t\t\t\t\t\tthis.lastQuery = this.query;\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tafterNav: function afterNav() {\n\t\t\t\t\t\tif (this.current !== -1) {\n\t\t\t\t\t\t\tthis.query = this.currentTitle;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.query = this.lastQuery;\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tupdateCustom: function updateCustom() {\n\t\t\t\t\t\tif (this.current === -1) {\n\t\t\t\t\t\t\tthis.update();\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tupCustom: function upCustom() {\n\t\t\t\t\t\tthis.beforeNav();\n\t\t\t\t\t\tthis.up();\n\t\t\t\t\t\tthis.afterNav();\n\t\t\t\t\t},\n\t\t\t\t\tdownCustom: function downCustom() {\n\t\t\t\t\t\tthis.beforeNav();\n\t\t\t\t\t\tthis.down();\n\t\t\t\t\t\tthis.afterNav();\n\t\t\t\t\t},\n\t\t\t\t\tresetCustom: function resetCustom() {\n\t\t\t\t\t\tthis.reset();\n\t\t\t\t\t\tthis.current = -1;\n\t\t\t\t\t\tthis.lastCurrent = -1;\n\t\t\t\t\t\tthis.lastQuery = '';\n\t\t\t\t\t},\n\t\t\t\t\tclearTypeahead: function clearTypeahead() {\n\t\t\t\t\t\tthis.items = [];\n\t\t\t\t\t\tthis.current = -1;\n\t\t\t\t\t\tthis.lastCurrent = -1;\n\t\t\t\t\t\tthis.lastQuery = '';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t'recent-articles': {\n\t\t\t\ttemplate: '#recent-articles',\n\t\t\t\tprops: [],\n\t\t\t\tdata: function data() {\n\t\t\t\t\treturn {\n\t\t\t\t\t\trecentArticles: landingSettingsDefaultValues.recentArticles,\n\t\t\t\t\t\tarticleCount: landingSettingsDefaultValues.recentArticleCount,\n\t\t\t\t\t\tpageSize: landingSettingsDefaultValues.recentArticlesPageSize,\n\t\t\t\t\t\trecentArticlesApiUrl: landingSettingsDefaultValues.recentArticlesApiUrl,\n\t\t\t\t\t\tpage: landingSettingsDefaultValues.recentArticlesPage,\n\t\t\t\t\t\tloadMoreText: landingSettingsDefaultValues.loadMoreText,\n\t\t\t\t\t\theaderText: landingSettingsDefaultValues.headerText,\n\t\t\t\t\t\tfirstResultIndex: 0\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\tcomputed: {\n\t\t\t\t\tshownArticleCount: function shownArticleCount() {\n\t\t\t\t\t\treturn this.page * this.pageSize;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tmethods: {\n\t\t\t\t\tsearch: function search() {\n\t\t\t\t\t\tvar self = this;\n\t\t\t\t\t\trecentArticlesUtility.search(this.recentArticlesApiUrl, this.pageSize, this.page).then(function (result) {\n\t\t\t\t\t\t\tif (self.page != 0) {\n\t\t\t\t\t\t\t\tvar firstResultIndex = self.recentArticles.length;\n\t\t\t\t\t\t\t\tvar paginatedArticles = self.recentArticles;\n\t\t\t\t\t\t\t\tpaginatedArticles = paginatedArticles.concat(result.Results);\n\t\t\t\t\t\t\t\tself.recentArticles = paginatedArticles;\n\t\t\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\t\t\tconsole.log('self.recentArticles.length', self.recentArticles.length);\n\t\t\t\t\t\t\t\t\t$('#search-entity-landing-promo').find('.listing-articles-title').get(firstResultIndex).focus();\n\t\t\t\t\t\t\t\t}, 200);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tself.recentArticles = result.Results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\tloadMore: function loadMore() {\n\t\t\t\t\t\tthis.page++;\n\t\t\t\t\t\tthis.search();\n\t\t\t\t\t},\n\t\t\t\t\tgetLinkTarget: function getLinkTarget(isExternalLink) {\n\t\t\t\t\t\treturn isExternalLink ? \"_blank\" : \"_self\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n}\n\n},{}],16:[function(require,module,exports){\n'use strict';\n\nif (document.getElementById('capabilities-search')) {\n var utilities = {\n defaultElement: '#search-landing-filters',\n loadMoreElement: '#load-more-button',\n headerMenuElement: '#site-header',\n defaultResults: {\n ResultsCount: 0,\n Results: []\n },\n emptyValues: {\n results: [],\n resultCount: 0,\n searching: false,\n page: 0,\n take: 25,\n searchKeyword: \"\",\n scrollPosition: 0\n },\n defaultValues: {\n results: serverJson.InitialResults.Results || [],\n resultCount: serverJson.InitialResults.ResultCount || 0,\n searching: serverJson.Searching || false,\n page: serverJson.Page || 0,\n take: serverJson.Take || 25,\n searchKeyword: serverJson.SearchKeyword || \"\",\n scrollPosition: serverJson.ScrollPosition || 0,\n parentServices: serverParents || []\n },\n getLoadMoreLocation: function getLoadMoreLocation() {\n return parseInt($(this.loadMoreElement).offset().top);\n },\n getParams: function getParams(url) {\n var searchParams = url;\n\n if (searchParams.length == 0) {\n return [];\n }\n\n searchParams = searchParams.substr(1);\n\n var params = searchParams.split('&');\n\n var objects = params.map(function (equation) {\n var sides = equation.split('=');\n return {\n key: sides[0],\n value: sides[1]\n };\n });\n\n return objects;\n },\n getNewUrlParams: function getNewUrlParams(paramsList) {\n var paramPairs = paramsList.map(function (param) {\n return param.key + '=' + param.value;\n });\n\n var newUrlParams = '?' + paramPairs.join('&');\n\n return window.location.pathname + newUrlParams;\n },\n setUrlParameter: function setUrlParameter(key, value, url) {\n var params = this.getParams(url);\n\n var paramsWithKey = params.filter(function (param) {\n return param.key === key;\n });\n\n var paramsWithoutKey = params.filter(function (param) {\n return param.key !== key;\n });\n\n var paramWithKey = paramsWithKey[0];\n\n var paramExists = paramWithKey !== undefined;\n\n if (paramExists) {\n paramWithKey.value = value;\n } else {\n paramWithKey = {\n key: key,\n value: value\n };\n }\n\n var newParams = paramsWithoutKey;\n\n if (value != undefined) newParams.push(paramWithKey);\n\n return this.getNewUrlParams(newParams);\n },\n defaultScroll: function defaultScroll() {\n var offset = parseInt($(window).height() / 2);\n\n var location = parseInt($(this.defaultElement).offset().top);\n $(\"html, body\").animate({\n scrollTop: location - offset\n }, \"slow\", function () {\n // var $resultCount = $('#search-top');\n // $resultCount\n // .focus()\n //.attr('tabindex', -1);\n });\n\n return location - offset;\n },\n scrollTo: function scrollTo(location) {\n $(\"html, body\").animate({\n scrollTop: location\n }, \"slow\", function () {\n // var $resultCount = $('#search-top');\n // $resultCount\n // .focus()\n });\n },\n search: function search(keyword, take, page) {\n return Vue.http.post('/api/capabilities/search', {\n Keyword: keyword,\n Take: take,\n Skip: (page - 1) * take\n }).then(function (response) {\n\n if (response.status == 200) {\n return response.body;\n } else {\n console.log(\"error while retrieving search results\");\n return defaultResults;\n }\n }, function (error) {\n return defaultResults;\n });\n }\n };\n\n Vue.use(VueResource);\n\n var store = new Vuex.Store({\n\n state: {\n results: utilities.defaultValues.results,\n resultCount: utilities.defaultValues.resultCount,\n searching: utilities.defaultValues.searching,\n page: utilities.defaultValues.page,\n take: utilities.defaultValues.take,\n searchKeyword: utilities.defaultValues.searchKeyword,\n scrollPosition: utilities.defaultValues.scrollPosition\n },\n\n getters: {\n\n results: function results(state) {\n return state.results;\n },\n resultCount: function resultCount(state) {\n return state.resultCount;\n },\n searching: function searching(state) {\n return state.searching;\n },\n page: function page(state) {\n return state.page;\n },\n take: function take(state) {\n return state.take;\n },\n searchKeyword: function searchKeyword(state) {\n return state.searchKeyword;\n },\n scrollPosition: function scrollPosition(state) {\n return state.scrollPosition;\n }\n\n },\n\n mutations: {\n setState: function setState(state, newState) {\n for (var key in newState) {\n state[key] = newState[key];\n }\n },\n loadMore: function loadMore(state, _loadMore) {\n state.page++;\n },\n updateScroll: function updateScroll(state, scrollPosition) {\n state.scrollPosition = scrollPosition;\n },\n clearFilter: function clearFilter(state) {\n var defaults = utilities.emptyValues;\n for (var key in defaults) {\n state[key] = defaults[key];\n }\n },\n setSearching: function setSearching(state, searching) {\n state.searching = searching;\n },\n updateResults: function updateResults(state, results) {\n state.results = results;\n },\n updateResultCount: function updateResultCount(state, count) {\n state.resultCount = count;\n },\n updateSearchKeyword: function updateSearchKeyword(state, text) {\n state.searchKeyword = text;\n }\n },\n\n actions: {\n setState: function setState(context, newState) {\n context.commit('setState', newState);\n },\n loadMore: function loadMore(context) {\n context.commit('loadMore');\n return context.dispatch('search', { loadMore: true });\n },\n updateScroll: function updateScroll(context, scrollPosition) {\n context.commit('updateScroll', scrollPosition);\n },\n clearFilter: function clearFilter(context) {\n context.commit('clearFilter');\n $('#search-landing-filters').focus();\n },\n performKeywordSearch: function performKeywordSearch(context, term) {\n context.commit('updateSearchKeyword', term);\n return context.dispatch('search');\n },\n search: function search(context, payload) {\n payload = payload || {};\n var loadMore = payload.loadMore;\n\n if (!loadMore) {\n context.commit('setState', { page: 1 });\n }\n\n return utilities.search(context.state.searchKeyword, context.state.take, context.state.page).then(function (result) {\n console.log('page:', context.state.page);\n console.log('current results:', context.state.results);\n console.log('new results:', result);\n\n // if we are not on first page, then add to results\n var firstResultIndex = 0;\n if (context.state.page != 0 && context.state.results.length > 0) {\n firstResultIndex = context.state.results.length;\n }\n\n if (loadMore && context.state.results.length > 0) {\n var paginatedResults = context.state.results;\n paginatedResults = paginatedResults.concat(result.Results);\n context.commit('updateResults', paginatedResults);\n context.commit('updateResultCount', result.ResultCount);\n } else {\n context.commit('updateResults', result.Results);\n context.commit('updateResultCount', result.ResultCount);\n }\n\n var newUrl = '';\n\n if (context.state.page != 0) {\n newUrl = utilities.setUrlParameter(\"page\", context.state.page, newUrl !== \"\" ? '?' + newUrl.split('?')[1] : window.location.search);\n }\n\n if (context.state.searchKeyword !== \"\") {\n newUrl = utilities.setUrlParameter(\"keyword\", context.state.searchKeyword, newUrl !== \"\" ? '?' + newUrl.split('?')[1] : window.location.search);\n }\n\n if (context.state.scrollPosition !== 0) {\n newUrl = utilities.setUrlParameter(\"scroll\", context.state.scrollPosition, newUrl !== \"\" ? '?' + newUrl.split('?')[1] : window.location.search);\n }\n\n if (newUrl !== \"\") {\n context.commit('setSearching', true);\n window.history.pushState(context.state, '', newUrl);\n }\n\n return firstResultIndex;\n });\n }\n\n }\n\n });\n\n var capabilitySearchApp = new Vue({\n el: '#capabilities-search',\n store: store,\n data: {\n currentSearchKeyword: '',\n toggledPractices: {},\n parentServices: utilities.defaultValues.parentServices,\n expanded: true,\n expandObj: { expanded: true },\n allExpanded: false,\n viewAll: false\n },\n created: function created() {\n window.onpopstate = this.onPopState;\n\n if (this.$store.getters.scrollPosition !== 0) {\n utilities.scrollTo(this.$store.getters.scrollPosition);\n }\n },\n computed: {\n results: function results() {\n return this.$store.getters.results;\n },\n resultCount: function resultCount() {\n return this.$store.getters.resultCount;\n },\n searching: function searching() {\n return this.$store.getters.searching;\n },\n page: function page() {\n return this.$store.getters.page;\n },\n take: function take() {\n return this.$store.getters.take;\n },\n searchKeyword: function searchKeyword() {\n return this.$store.getters.searchKeyword;\n },\n scrollPosition: function scrollPosition() {\n return this.$store.getters.scrollPosition;\n }\n\n },\n methods: {\n toggleCapabilityView: function toggleCapabilityView() {\n this.viewAll = !this.viewAll;\n },\n isExpandedPractice: function isExpandedPractice(key) {\n var toggleStatus = this.toggledPractices[key];\n if (toggleStatus) {\n return toggleStatus;\n }\n return false;\n },\n togglePractice: function togglePractice(name) {\n var updatedToggledPractices = JSON.parse(JSON.stringify(this.toggledPractices));\n var toggleStatus = updatedToggledPractices[name];\n if (toggleStatus !== undefined) {\n updatedToggledPractices[name] = !toggleStatus;\n } else {\n updatedToggledPractices[name] = true;\n }\n this.toggledPractices = updatedToggledPractices;\n },\n toggleAllServices: function toggleAllServices() {\n this.allExpanded = !this.allExpanded;\n var updatedToggledServices = JSON.parse(JSON.stringify(this.toggledPractices));\n\n if (this.parentServices && this.parentServices.length > 0) {\n for (i = 0; i < this.parentServices.length; i++) {\n updatedToggledServices[this.parentServices[i]] = this.allExpanded;\n }\n\n this.toggledPractices = updatedToggledServices;\n }\n },\n loadMore: function loadMore() {\n this.$store.dispatch('updateScroll', utilities.getLoadMoreLocation());\n this.$store.dispatch(\"loadMore\").then(function (firstResultIndex) {\n $('#capabilities-search').find('.result a').get(firstResultIndex).focus();\n });\n },\n searchButtonClick: function searchButtonClick() {\n if (this.currentSearchKeyword !== \"\") {\n //utilities.defaultScroll()\n this.$store.dispatch('performKeywordSearch', this.currentSearchKeyword);\n }\n this.currentSearchKeyword = \"\";\n },\n clearFilter: function clearFilter() {\n this.$store.dispatch('clearFilter');\n window.history.pushState(utilities.defaultValues, '', window.location.pathname);\n },\n onPopState: function onPopState() {\n if (window.history.state) {\n this.$store.dispatch('setState', window.history.state);\n if (this.scrollPosition !== 0) {\n utilities.scrollTo(this.scrollPosition);\n }\n } else {\n this.$store.dispatch('clearFilter');\n }\n },\n scrollToSection: function scrollToSection(element) {\n var scrollToElement = $('#' + element);\n if (scrollToElement) {\n this.scrollLocation = parseInt(scrollToElement.offset().top - $(utilities.headerMenuElement).height());\n utilities.scrollTo(this.scrollLocation);\n scrollToElement.focus();\n var url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + '?scroll=' + this.scrollLocation;\n window.history.pushState({ path: url }, '', url);\n }\n }\n },\n components: {\n 'search-typeahead': {\n template: '#search-typeahead-capabilities',\n extends: VueTypeahead.default,\n props: {\n placeholdertext: String,\n arialabel: {\n type: String,\n default: ''\n },\n defaultstatus: String,\n populatedstatus: String,\n emptystatus: String,\n buttonlabel: String\n },\n data: function data() {\n return {\n src: '/api/capabilities/typeaheadservice',\n limit: 6,\n minChars: 3,\n queryParamName: 'name',\n lastQuery: '',\n lastCurrent: -1\n };\n },\n computed: {\n status: function status() {\n if (this.query.length >= this.minChars && !this.loading) {\n if (this.hasItems) {\n return this.populatedstatus.replace(/\\{0\\}/g, this.items.length);\n } else {\n return this.emptystatus;\n }\n } else {\n return this.defaultstatus.replace(/\\{0\\}/g, this.minChars);\n }\n },\n currentTitle: function currentTitle() {\n var currentItem = this.items[this.current];\n return currentItem ? currentItem.Title : '';\n }\n },\n methods: {\n onHit: function onHit(item) {\n window.location.href = item.Url;\n },\n search: function search() {\n if (this.current >= 0 && this.hasItems) {\n var selectedIndex = this.current;\n window.location.href = this.items[selectedIndex].Url;\n } else {\n if (this.query !== \"\") {\n //utilities.defaultScroll()\n this.$store.dispatch('performKeywordSearch', this.query);\n }\n }\n this.reset();\n this.query = '';\n },\n beforeNav: function beforeNav() {\n this.lastCurrent = this.current;\n if (this.current === -1) {\n this.lastQuery = this.query;\n }\n },\n afterNav: function afterNav() {\n if (this.current !== -1) {\n this.query = this.currentTitle;\n } else {\n this.query = this.lastQuery;\n }\n },\n updateCustom: function updateCustom() {\n if (this.current === -1) {\n this.update();\n }\n },\n upCustom: function upCustom() {\n this.beforeNav();\n this.up();\n this.afterNav();\n },\n downCustom: function downCustom() {\n this.beforeNav();\n this.down();\n this.afterNav();\n },\n resetCustom: function resetCustom() {\n this.reset();\n this.current = -1;\n this.lastCurrent = -1;\n this.lastQuery = '';\n },\n clearTypeahead: function clearTypeahead() {\n this.items = [];\n this.current = -1;\n this.lastCurrent = -1;\n this.lastQuery = '';\n }\n }\n }\n }\n });\n}\n\n},{}],17:[function(require,module,exports){\n\"use strict\";\n\nif (document.getElementById('careers-interview')) {\n var utilities = {\n createGetter: function createGetter(propertyName) {\n return function (state) {\n return state[propertyName];\n };\n },\n\n defaultScroll: function defaultScroll() {\n var offset = parseInt($(window).height() / 2);\n var location = parseInt($(this.defaultElement).offset().top);\n $(\"html, body\").animate({\n scrollTop: location - offset\n }, \"slow\", function () {\n var $resultCount = $('.searched-criteria-results');\n $resultCount.focus().attr('tabindex', -1);\n });\n\n return location - offset;\n },\n\n scrollTo: function scrollTo(location) {\n $(\"html, body\").animate({\n scrollTop: location\n }, \"slow\");\n },\n\n getParams: function getParams(url) {\n\n var searchParams = url;\n\n if (searchParams.length == 0) return [];\n\n var searchParamsOne = searchParams.substr(1);\n var searchParamsList = searchParamsOne.split('?');\n searchParams = searchParamsList[1] ? searchParamsList[1] : searchParamsOne;\n var params = searchParams.split('&');\n\n var objects = params.map(function (equation) {\n\n var sides = equation.split('=');\n\n return {\n key: sides[0],\n value: sides[1]\n };\n });\n\n return objects;\n },\n\n getNewUrlParams: function getNewUrlParams(paramsList) {\n\n var paramPairs = paramsList.map(function (param) {\n\n return param.key + '=' + param.value;\n });\n\n var newUrlParams = '?' + paramPairs.join('&');\n\n return window.location.pathname + newUrlParams;\n },\n\n setUrlParameter: function setUrlParameter(key, value, url) {\n var params = this.getParams(url);\n\n var paramsWithKey = params.filter(function (param) {\n return param.key === key;\n });\n\n var paramsWithoutKey = params.filter(function (param) {\n return param.key !== key;\n });\n\n var paramWithKey = paramsWithKey[0];\n\n var paramExists = paramWithKey !== undefined;\n\n if (paramExists) {\n\n // Update value for parameter\n paramWithKey.value = value;\n } else {\n\n paramWithKey = {\n key: key,\n value: value\n };\n }\n\n var newParams = paramsWithoutKey;\n\n // Won't add key if value is null/undefined\n if (value != undefined) newParams.push(paramWithKey);\n\n return this.getNewUrlParams(newParams);\n },\n\n emptyValues: {\n searching: false,\n selectedLocationFilter: \"\",\n filters: [],\n scrollLocation: 0,\n schools: [],\n results: []\n },\n\n defaultValues: {\n searching: serverJson.Searching || false,\n schools: serverJson.Schools || [],\n results: serverJson.SearchResults.Results || [],\n selectedLocationFilter: serverJson.SelectedLocationFilter || \"\",\n locationFilters: serverJson.LocationFilters || [],\n filters: [],\n scrollLocation: serverJson.Scroll || 0\n }\n };\n\n Vue.use(VueResource);\n\n var store = new Vuex.Store({\n\n state: {\n schools: utilities.defaultValues.schools,\n results: utilities.defaultValues.results,\n searching: utilities.defaultValues.searching,\n selectedLocationFilter: utilities.defaultValues.selectedLocationFilter,\n locationFilters: utilities.defaultValues.locationFilters,\n filters: utilities.defaultValues.filters,\n scrollLocation: utilities.defaultValues.scrollLocation\n },\n\n //For view / UI to render data from store.\n getters: {\n\n filtersSet: function filtersSet(state) {\n return state.selectedLocationFilter.FilterId !== \"\";\n },\n\n scrollLocation: utilities.createGetter('scrollLocation'),\n schools: utilities.createGetter('schools'),\n results: utilities.createGetter('results'),\n searching: utilities.createGetter('searching'),\n locationFilters: utilities.createGetter('locationFilters'),\n selectedLocationFilter: utilities.createGetter('selectedLocationFilter')\n },\n\n // For Actions to call and change / modify store.\n mutations: {\n updateScroll: function updateScroll(state, scrollLocation) {\n state.scrollLocation = scrollLocation;\n },\n\n updateSelectedLocationFilter: function updateSelectedLocationFilter(state, filter) {\n state.selectedLocationFilter = filter;\n },\n\n updateResults: function updateResults(state, results) {\n state.results = results;\n },\n\n updateSchools: function updateSchools(state, schools) {\n state.schools = schools;\n },\n\n setSearching: function setSearching(state, searching) {\n state.searching = searching;\n },\n\n setState: function setState(state, newState) {\n\n state.schools = newState.schools;\n state.results = newState.results;\n state.resultCount = newState.resultCount;\n state.searching = newState.searching;\n state.selectedLocationFilter = newState.selectedLocationFilter;\n state.filters = newState.filters;\n state.scrollLocation = newState.scrollLocation;\n },\n\n resetState: function resetState(state) {\n var defaults = utilities.emptyValues;\n for (var key in defaults) {\n state[key] = defaults[key];\n }\n },\n\n clearFilter: function clearFilter(state, filterName) {\n state.selectedLocationFilter = utilities.emptyValues.selectedLocationFilter;\n utilities.clearDropdownSelection('field-location');\n }\n },\n\n // For View / UI to call to call an action or mutation against store.\n actions: {\n updateScroll: function updateScroll(context, scrollLocation) {\n context.commit(\"updateScroll\", scrollLocation);\n },\n\n setSearching: function setSearching(context, isSearching) {\n context.commit(\"setSearching\", isSearching);\n },\n\n setLocationFilter: function setLocationFilter(context, filter) {\n context.commit(\"updateSelectedLocationFilter\", filter);\n context.dispatch('search');\n },\n\n search: function search(context, clearedFilterName) {\n\n // Execute search via web service, then push parameters to url\n var result = context.state.schools.filter(function (school) {\n return school.Office === context.state.selectedLocationFilter;\n });\n context.commit(\"updateResults\", result);\n\n var newUrl = \"\";\n\n if (context.state.selectedLocationFilter || clearedFilterName === \"location\") {\n newUrl = utilities.setUrlParameter(\"location\", context.state.selectedLocationFilter, newUrl !== \"\" ? '?' + newUrl.split('?')[1] : window.location.search);\n }\n\n if (context.state.scrollLocation !== 0) {\n newUrl = utilities.setUrlParameter(\"scroll\", context.state.scrollLocation, newUrl !== \"\" ? '?' + newUrl.split('?')[1] : window.location.search);\n }\n\n if (newUrl !== \"\") {\n // If any filter is enabled, display search mode.\n // Will hide search if final filter is cleared.\n var enableSearch = context.getters.filtersSet;\n context.commit(\"setSearching\", enableSearch);\n window.history.pushState(context.state, '', newUrl);\n }\n },\n\n setState: function setState(context, newState) {\n context.commit('setState', newState);\n },\n\n resetState: function resetState(context) {\n context.commit('resetState');\n }\n\n }\n\n });\n\n var careersInterviewSearchApp = new Vue({\n\n el: '#careers-interview',\n\n store: store,\n\n created: function created() {\n\n window.onpopstate = this.onPopState;\n\n if (this.$store.getters.scrollLocation !== 0) {\n utilities.scrollTo(this.$store.getters.scrollLocation);\n } else if (this.$store.getters.searching) {\n //utilities.defaultScroll()\n }\n\n var params = utilities.getParams(window.location.href);\n\n if (params[0] && params[0].key === \"location\") {\n this.$store.dispatch('setLocationFilter', decodeURIComponent(params[0].value));\n }\n\n var app = this;\n },\n\n data: {\n focusedDropdowns: []\n },\n\n // Computed called in UI for displaying values from store, call store getters\n computed: Vuex.mapGetters(['searching', 'locationFilters', 'selectedLocationFilter', 'results', 'scrollLocation']),\n // Called in UI - dispatch store actions\n methods: {\n\n toggleFilters: function toggleFilters() {\n this.showMobileFilters = !this.showMobileFilters;\n },\n\n clearFilter: function clearFilter(filterName) {\n this.$store.dispatch('clearFilter', filterName);\n },\n\n clearAllFilters: function clearAllFilters() {\n this.$store.dispatch('resetState');\n utilities.clearDropdownSelection('field-location');\n window.history.pushState(utilities.defaultValues, '', window.location.pathname);\n },\n\n locationFilterChange: function locationFilterChange(value) {\n if (value == \"\") {\n this.clearFilter('location');\n return;\n }\n var filter = JSON.parse(value);\n //utilities.defaultScroll();\n this.$store.dispatch('setLocationFilter', filter);\n },\n\n onPopState: function onPopState() {\n\n if (window.history.state) {\n this.$store.dispatch('setState', window.history.state);\n\n if (this.$store.getters.scrollLocation !== 0) {\n utilities.scrollTo(this.$store.getters.scrollLocation);\n }\n } else {\n this.$store.dispatch('resetState');\n }\n },\n\n toBoolean: function toBoolean(status) {\n if (status == \"false\") return false;\n if (status == \"true\") return true;\n return true;\n },\n\n focusFilter: function focusFilter(filterName) {\n if (!this.focusedDropdowns.indexOf(filterName) > -1) {\n this.focusedDropdowns.push(filterName);\n }\n },\n\n blurFilter: function blurFilter(filterName) {\n if (this.focusedDropdowns.indexOf(filterName) > -1) {\n var index = this.focusedDropdowns.indexOf(filterName);\n if (index > -1) {\n this.focusedDropdowns.splice(index, 1);\n }\n }\n }\n }\n });\n}\n\n},{}],18:[function(require,module,exports){\n'use strict';\n\nif (document.getElementById('experience-landing')) {\n var utilities = {\n defaultElement: '#search-top',\n loadMoreElement: '#load-more-button',\n defaultResults: {\n ResultsCount: 0,\n Results: []\n },\n defaultValues: {\n results: serverJson.InitialResults.Results || [],\n resultCount: serverJson.InitialResults.ResultCount || 0,\n searching: serverJson.Searching || false,\n page: serverJson.Page || 0,\n take: serverJson.Take || 25,\n searchKeyword: serverJson.SearchKeyword || \"\",\n scrollPosition: serverJson.Scroll || 0,\n capabilityFilters: serverJson.CapabilityFilters,\n locationFilters: serverJson.OfficeFilters,\n regionFilters: serverJson.RegionFilters,\n selectedCapabilityFilter: serverJson.CapabilityFilters.find(function (item) {\n return item.Selected;\n }) || {\n Name: \"\",\n FilterId: \"\"\n },\n selectedLocationFilter: serverJson.OfficeFilters.find(function (item) {\n return item.Selected;\n }) || {\n Name: \"\",\n FilterId: \"\"\n },\n selectedRegionFilter: serverJson.RegionFilters.find(function (item) {\n return item.Selected;\n }) || {\n Name: \"\",\n FilterId: \"\"\n }\n },\n getLoadMoreLocation: function getLoadMoreLocation() {\n return parseInt($(this.loadMoreElement).offset().top);\n },\n getParams: function getParams(url) {\n var searchParams = url;\n\n if (searchParams.length == 0) {\n return [];\n }\n\n searchParams = searchParams.substr(1);\n\n var params = searchParams.split('&');\n\n var objects = params.map(function (equation) {\n var sides = equation.split('=');\n return {\n key: sides[0],\n value: sides[1]\n };\n });\n\n return objects;\n },\n getNewUrlParams: function getNewUrlParams(paramsList) {\n var paramPairs = paramsList.map(function (param) {\n return param.key + '=' + param.value;\n });\n\n var newUrlParams = '?' + paramPairs.join('&');\n\n return window.location.pathname + newUrlParams;\n },\n setUrlParameter: function setUrlParameter(key, value, url) {\n var params = this.getParams(url);\n\n var paramsWithKey = params.filter(function (param) {\n return param.key === key;\n });\n\n var paramsWithoutKey = params.filter(function (param) {\n return param.key !== key;\n });\n\n var paramWithKey = paramsWithKey[0];\n\n var paramExists = paramWithKey !== undefined;\n\n if (paramExists) {\n paramWithKey.value = value;\n } else {\n paramWithKey = {\n key: key,\n value: value\n };\n }\n\n var newParams = paramsWithoutKey;\n\n if (value != undefined) newParams.push(paramWithKey);\n\n return this.getNewUrlParams(newParams);\n },\n defaultScroll: function defaultScroll() {\n var offset = parseInt($(window).height() / 2);\n\n var location = parseInt($(this.defaultElement).offset().top);\n $(\"html, body\").animate({\n scrollTop: location - offset\n }, \"slow\", function () {\n var $resultCount = $('#search-top');\n $resultCount.focus();\n });\n\n return location - offset;\n },\n scrollTo: function scrollTo(location) {\n $(\"html, body\").animate({\n scrollTop: location\n }, \"slow\", function () {\n var $resultCount = $('#search-top');\n $resultCount.focus();\n });\n },\n search: function search(keyword, capability, office, region, take, page) {\n return Vue.http.post('/api/capabilities/experiences', {\n Keyword: keyword,\n Take: take,\n Skip: (page - 1) * take,\n Capability: capability,\n Office: office,\n Region: region\n }).then(function (response) {\n\n if (response.status == 200) {\n return response.body;\n } else {\n console.log(\"error while retrieving search results\");\n return defaultResults;\n }\n }, function (error) {\n return defaultResults;\n });\n }\n\n };\n\n Vue.use(VueResource);\n\n var store = new Vuex.Store({\n\n state: {\n results: utilities.defaultValues.results,\n resultCount: utilities.defaultValues.resultCount,\n searching: utilities.defaultValues.searching,\n page: utilities.defaultValues.page,\n take: utilities.defaultValues.take,\n searchKeyword: utilities.defaultValues.searchKeyword,\n scrollPosition: utilities.defaultValues.scrollPosition,\n capabilityFilters: utilities.defaultValues.capabilityFilters,\n locationFilters: utilities.defaultValues.locationFilters,\n regionFilters: utilities.defaultValues.regionFilters,\n selectedCapabilityFilter: utilities.defaultValues.selectedCapabilityFilter,\n selectedLocationFilter: utilities.defaultValues.selectedLocationFilter,\n selectedRegionFilter: utilities.defaultValues.selectedRegionFilter\n },\n\n getters: {\n capabilityFilters: function capabilityFilters(state) {\n return state.capabilityFilters;\n },\n locationFilters: function locationFilters(state) {\n return state.locationFilters;\n },\n regionFilters: function regionFilters(state) {\n return state.regionFilters;\n },\n selectedCapabilityFilter: function selectedCapabilityFilter(state) {\n return state.selectedCapabilityFilter;\n },\n selectedLocationFilter: function selectedLocationFilter(state) {\n return state.selectedLocationFilter;\n },\n selectedRegionFilter: function selectedRegionFilter(state) {\n return state.selectedRegionFilter;\n },\n results: function results(state) {\n return state.results;\n },\n resultCount: function resultCount(state) {\n return state.resultCount;\n },\n searching: function searching(state) {\n return state.searching;\n },\n page: function page(state) {\n return state.page;\n },\n take: function take(state) {\n return state.take;\n },\n searchKeyword: function searchKeyword(state) {\n return state.searchKeyword;\n },\n scrollPosition: function scrollPosition(state) {\n return state.scrollPosition;\n }\n\n },\n\n mutations: {\n resetState: function resetState(state) {\n var defaults = utilities.defaultValues;\n for (var key in defaults) {\n state[key] = defaults[key];\n }\n },\n updateSelectedCapabilityFilter: function updateSelectedCapabilityFilter(state, filter) {\n state.selectedCapabilityFilter = filter;\n },\n updateSelectedLocationFilter: function updateSelectedLocationFilter(state, filter) {\n state.selectedLocationFilter = filter;\n },\n updateSelectedRegionFilter: function updateSelectedRegionFilter(state, filter) {\n state.selectedRegionFilter = filter;\n },\n setState: function setState(state, newState) {\n for (var key in newState) {\n state[key] = newState[key];\n }\n },\n loadMore: function loadMore(state, _loadMore) {\n state.page++;\n },\n updateScroll: function updateScroll(state, scrollPosition) {\n state.scrollPosition = scrollPosition;\n },\n clearFilter: function clearFilter(state, filterName) {\n if (filterName === \"capability\") {\n state.selectedCapabilityFilter = utilities.defaultValues.selectedCapabilityFilter;\n } else if (filterName === \"location\") {\n state.selectedLocationFilter = utilities.defaultValues.selectedLocationFilter;\n } else if (filterName === \"region\") {\n state.selectedRegionFilter = utilities.defaultValues.selectedRegionFilter;\n } else if (filterName === \"keyword\") {\n state.searchKeyword = utilities.defaultValues.searchKeyword;\n }\n $('#search-landing-filters').focus();\n },\n setSearching: function setSearching(state, searching) {\n state.searching = searching;\n },\n updateResults: function updateResults(state, results) {\n state.results = results;\n },\n updateResultCount: function updateResultCount(state, count) {\n state.resultCount = count;\n },\n updateSearchKeyword: function updateSearchKeyword(state, text) {\n state.searchKeyword = text;\n }\n },\n\n actions: {\n setCapabilityFilter: function setCapabilityFilter(context, filter) {\n context.commit(\"updateSelectedCapabilityFilter\", filter);\n return context.dispatch('search');\n },\n setLocationFilter: function setLocationFilter(context, filter) {\n context.commit(\"updateSelectedLocationFilter\", filter);\n return context.dispatch('search');\n },\n setRegionFilter: function setRegionFilter(context, filter) {\n context.commit(\"updateSelectedRegionFilter\", filter);\n return context.dispatch('search');\n },\n setState: function setState(context, newState) {\n context.commit('setState', newState);\n },\n loadMore: function loadMore(context) {\n context.commit('loadMore');\n return context.dispatch('search', { loadMore: true });\n },\n updateScroll: function updateScroll(context, scrollPosition) {\n context.commit('updateScroll', scrollPosition);\n },\n clearFilter: function clearFilter(context, filterName) {\n\n var setFilters = [];\n if (context.state.selectedCapabilityFilter.FilterId !== '') {\n setFilters.push(context.state.selectedCapabilityFilter);\n }\n if (context.state.selectedLocationFilter.FilterId !== '') {\n setFilters.push(context.state.selectedLocationFilter);\n }\n if (context.state.selectedRegionFilter.FilterId !== '') {\n setFilters.push(context.state.selectedRegionFilter);\n }\n if (context.state.searchKeyword !== '') {\n setFilters.push(context.state.searchKeyword);\n }\n\n if (setFilters.length > 1) {\n context.commit('clearFilter', filterName);\n return context.dispatch(\"search\", { clearedFilterName: filterName });\n } else {\n //reset state\n context.commit('resetState');\n }\n },\n clearAllFilters: function clearAllFilters(context) {\n context.commit('resetState');\n window.history.pushState(utilities.defaultValues, '', window.location.pathname);\n },\n performKeywordSearch: function performKeywordSearch(context, term) {\n context.commit('updateSearchKeyword', term);\n return context.dispatch('search');\n //utilities.defaultScroll()\n },\n search: function search(context, payload) {\n payload = payload || {};\n var clearedFilterName = payload.clearedFilterName;\n var loadMore = payload.loadMore;\n var filters = [];\n\n if (!loadMore) {\n context.commit('setState', { page: 1 });\n }\n\n return utilities.search(context.state.searchKeyword, context.state.selectedCapabilityFilter.FilterId, context.state.selectedLocationFilter.FilterId, context.state.selectedRegionFilter.FilterId, context.state.take, context.state.page).then(function (result) {\n // if we are not on first page, then add to results\n var firstResultIndex = 0;\n if (context.state.page != 1) {\n firstResultIndex = context.state.results.length;\n }\n\n if (loadMore) {\n var paginatedResults = context.state.results;\n paginatedResults = paginatedResults.concat(result.Results);\n context.commit('updateResults', paginatedResults);\n context.commit('updateResultCount', result.ResultCount);\n } else {\n context.commit('updateResults', result.Results);\n context.commit('updateResultCount', result.ResultCount);\n }\n\n var newUrl = '';\n\n if (context.state.page != 0) {\n newUrl = utilities.setUrlParameter(\"page\", context.state.page, newUrl !== \"\" ? '?' + newUrl.split('?')[1] : window.location.search);\n }\n\n if (context.state.searchKeyword !== \"\") {\n newUrl = utilities.setUrlParameter(\"keyword\", context.state.searchKeyword, newUrl !== \"\" ? '?' + newUrl.split('?')[1] : window.location.search);\n }\n\n if (context.state.selectedCapabilityFilter.FilterId !== \"\" || clearedFilterName === \"capability\") {\n newUrl = utilities.setUrlParameter(\"capability\", context.state.selectedCapabilityFilter.FilterId, newUrl !== \"\" ? '?' + newUrl.split('?')[1] : window.location.search);\n }\n\n if (context.state.selectedLocationFilter.FilterId !== \"\" || clearedFilterName === \"location\") {\n newUrl = utilities.setUrlParameter(\"location\", context.state.selectedLocationFilter.FilterId, newUrl !== \"\" ? '?' + newUrl.split('?')[1] : window.location.search);\n }\n\n if (context.state.selectedRegionFilter.FilterId !== \"\" || clearedFilterName === \"admissions\") {\n newUrl = utilities.setUrlParameter(\"region\", context.state.selectedRegionFilter.FilterId, newUrl !== \"\" ? '?' + newUrl.split('?')[1] : window.location.search);\n }\n\n if (context.state.scrollPosition !== 0) {\n newUrl = utilities.setUrlParameter(\"scroll\", context.state.scrollPosition, newUrl !== \"\" ? '?' + newUrl.split('?')[1] : window.location.search);\n }\n\n if (newUrl !== \"\") {\n context.commit('setSearching', true);\n window.history.pushState(context.state, '', newUrl);\n }\n\n return firstResultIndex;\n });\n }\n\n }\n\n });\n\n var capabilitySearchApp = new Vue({\n\n el: '#experience-landing',\n\n store: store,\n\n data: {\n currentSearchKeyword: '',\n showMobileFilters: false,\n focusedDropdowns: []\n },\n\n created: function created() {\n window.onpopstate = this.onPopState;\n\n if (this.$store.getters.scrollPosition !== 0) {\n utilities.scrollTo(this.$store.getters.scrollPosition);\n }\n },\n\n computed: {\n capabilityFilters: function capabilityFilters() {\n return this.$store.getters.capabilityFilters;\n },\n locationFilters: function locationFilters() {\n return this.$store.getters.locationFilters;\n },\n regionFilters: function regionFilters() {\n return this.$store.getters.regionFilters;\n },\n selectedCapabilityFilter: function selectedCapabilityFilter() {\n return this.$store.getters.selectedCapabilityFilter;\n },\n selectedLocationFilter: function selectedLocationFilter() {\n return this.$store.getters.selectedLocationFilter;\n },\n selectedRegionFilter: function selectedRegionFilter() {\n return this.$store.getters.selectedRegionFilter;\n },\n results: function results() {\n return this.$store.getters.results;\n },\n resultCount: function resultCount() {\n return this.$store.getters.resultCount;\n },\n searching: function searching() {\n return this.$store.getters.searching;\n },\n page: function page() {\n return this.$store.getters.page;\n },\n take: function take() {\n return this.$store.getters.take;\n },\n searchKeyword: function searchKeyword() {\n return this.$store.getters.searchKeyword;\n },\n scrollPosition: function scrollPosition() {\n return this.$store.getters.scrollPosition;\n },\n filterCount: function filterCount() {\n var setFilters = [];\n\n if (this.selectedCapabilityFilter.FilterId !== '') {\n setFilters.push(this.selectedCapabilityFilter);\n }\n if (this.selectedLocationFilter.FilterId !== '') {\n setFilters.push(this.selectedLocationFilter);\n }\n if (this.selectedRegionFilter.FilterId !== '') {\n setFilters.push(this.selectedRegionFilter);\n }\n if (this.searchKeyword !== '') {\n setFilters.push(this.searchKeyword);\n }\n\n return setFilters.length;\n }\n\n },\n\n methods: {\n toggleFilters: function toggleFilters() {\n this.showMobileFilters = !this.showMobileFilters;\n },\n capabilityFilterChange: function capabilityFilterChange(value) {\n if (value == \"\") {\n this.clearFilter('capability');\n return;\n }\n var filter = JSON.parse(value);\n //utilities.defaultScroll();\n this.$store.dispatch('setCapabilityFilter', filter);\n },\n locationFilterChange: function locationFilterChange(value) {\n if (value == \"\") {\n this.clearFilter('location');\n return;\n }\n var filter = JSON.parse(value);\n //utilities.defaultScroll();\n this.$store.dispatch('setLocationFilter', filter);\n },\n regionFilterChange: function regionFilterChange(value) {\n if (value == \"\") {\n this.clearFilter('region');\n return;\n }\n var filter = JSON.parse(value);\n //utilities.defaultScroll();\n this.$store.dispatch('setRegionFilter', filter);\n },\n loadMore: function loadMore() {\n this.$store.dispatch('updateScroll', utilities.getLoadMoreLocation());\n this.$store.dispatch('loadMore').then(function (firstResultIndex) {\n $('#experience-landing').find('.result p').get(firstResultIndex).focus();\n });\n },\n searchButtonClick: function searchButtonClick() {\n if (this.currentSearchKeyword !== \"\") {\n //utilities.defaultScroll()\n this.$store.dispatch('performKeywordSearch', this.currentSearchKeyword);\n }\n this.currentSearchKeyword = \"\";\n },\n clearFilter: function clearFilter(filterName) {\n this.$store.dispatch('clearFilter', filterName);\n window.history.pushState(utilities.defaultValues, '', window.location.pathname);\n },\n clearAllFilters: function clearAllFilters() {\n this.$store.dispatch('clearAllFilters');\n $('#search-landing-filters').focus();\n window.history.pushState(utilities.defaultValues, '', window.location.pathname);\n },\n onPopState: function onPopState() {\n if (window.history.state) {\n this.$store.dispatch('setState', window.history.state);\n if (this.scrollPosition !== 0) {\n utilities.scrollTo(this.scrollPosition);\n }\n } else {\n this.$store.dispatch('clearFilter');\n }\n },\n focusFilter: function focusFilter(filterName) {\n if (!this.focusedDropdowns.indexOf(filterName) > -1) {\n this.focusedDropdowns.push(filterName);\n }\n },\n blurFilter: function blurFilter(filterName) {\n if (this.focusedDropdowns.indexOf(filterName) > -1) {\n var index = this.focusedDropdowns.indexOf(filterName);\n if (index > -1) {\n this.focusedDropdowns.splice(index, 1);\n }\n }\n }\n }\n });\n}\n\n},{}],19:[function(require,module,exports){\n'use strict';\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nif (document.getElementById('professionals-landing')) {\n var utilities = {\n defaultElement: '#search-landing-filters',\n loadMoreElement: '#load-more-button',\n\n clearDropdownSelection: function clearDropdownSelection(id) {\n formattedId = '#' + id;\n $(formattedId).val('');\n },\n\n createGetter: function createGetter(propertyName) {\n return function (state) {\n return state[propertyName];\n };\n },\n\n defaultScroll: function defaultScroll() {\n var offset = parseInt($(window).height() / 2);\n var location = parseInt($(this.defaultElement).offset().top);\n $(\"html, body\").animate({\n scrollTop: location - offset\n }, \"slow\", function () {\n var $resultCount = $('#search-landing-filters');\n $resultCount.focus();\n });\n\n return location - offset;\n },\n\n scrollTo: function scrollTo(location) {\n $(\"html, body\").animate({\n scrollTop: location\n }, \"slow\", function () {\n var $resultCount = $('#search-landing-filters');\n $resultCount.focus();\n });\n },\n\n getLoadMoreLocation: function getLoadMoreLocation() {\n return parseInt($(this.loadMoreElement).offset().top);\n },\n\n getParams: function getParams(url) {\n\n var searchParams = url;\n\n if (searchParams.length == 0) return [];\n\n searchParams = searchParams.substr(1);\n\n var params = searchParams.split('&');\n\n var objects = params.map(function (equation) {\n\n var sides = equation.split('=');\n\n return {\n key: sides[0],\n value: sides[1]\n };\n });\n\n return objects;\n },\n\n getNewUrlParams: function getNewUrlParams(paramsList) {\n\n var paramPairs = paramsList.map(function (param) {\n\n return param.key + '=' + param.value;\n });\n\n var newUrlParams = '?' + paramPairs.join('&');\n\n return window.location.pathname + newUrlParams;\n },\n\n setUrlParameter: function setUrlParameter(key, value, url) {\n var params = this.getParams(url);\n\n var paramsWithKey = params.filter(function (param) {\n return param.key === key;\n });\n\n var paramsWithoutKey = params.filter(function (param) {\n return param.key !== key;\n });\n\n var paramWithKey = paramsWithKey[0];\n\n var paramExists = paramWithKey !== undefined;\n\n if (paramExists) {\n\n // Update value for parameter\n paramWithKey.value = value;\n } else {\n\n paramWithKey = {\n key: key,\n value: value\n };\n }\n\n var newParams = paramsWithoutKey;\n\n // Won't add key if value is null/undefined\n if (!!value) newParams.push(paramWithKey);\n\n return this.getNewUrlParams(newParams);\n },\n\n search: function search(letter, location, capability, topic, admission, diversity, globalSolution, position, name, keyword, take, skip) {\n return Vue.http.post('/api/professionals/search', {\n Letter: letter,\n Name: name,\n Keyword: keyword,\n Take: take,\n Skip: skip,\n Location: location,\n Capability: capability,\n Topic: topic,\n Admission: admission,\n Diversity: diversity,\n GlobalSolution: globalSolution,\n Position: position\n }).then(function (response) {\n if (response.status == 200) {\n return response.body;\n } else {\n console.log(\"error while retrieving search results\");\n return defaultResults;\n }\n }, function (error) {\n return defaultResults;\n });\n },\n\n emptyValues: {\n letter: \"\",\n page: 0,\n take: serverJson.Take || 25,\n resultCount: 0,\n searching: false,\n selectedCapabilityFilter: { Name: \"Capability\", FilterId: \"\" },\n selectedTopicFilter: { Name: \"Topic\", FilterId: \"\" },\n selectedLocationFilter: { Name: \"Location\", FilterId: \"\" },\n selectedPositionFilter: { Name: \"Position\", FilterId: \"\" },\n selectedAdmissionFilter: { Name: \"Admission\", FilterId: \"\" },\n selectedDiversityFilter: { Name: \"Diverse Attorney Directory\", FilterId: \"\" },\n selectedGlobalSolutionFilter: { Name: \"GlobalSolution\", FilterId: \"\" },\n searchName: \"\",\n searchKeyword: \"\",\n filters: [],\n scrollLocation: 0,\n professionals: []\n },\n\n defaultValues: {\n letter: serverJson.SelectedLetter || \"\",\n page: serverJson.Page || 0,\n take: serverJson.Take || 25,\n professionals: serverJson.SearchResults.Results || [],\n resultCount: serverJson.SearchResults.ResultCount || 0,\n searching: serverJson.Searching || false,\n selectedCapabilityFilter: serverJson.CapabilityFilters.find(function (item) {\n return item.Selected;\n }) || {\n Name: \"Capability\",\n FilterId: \"\"\n },\n selectedTopicFilter: serverJson.TopicFilters.find(function (item) {\n return item.Selected;\n }) || {\n Name: \"Topic\",\n FilterId: \"\"\n },\n selectedLocationFilter: serverJson.LocationFilters.find(function (item) {\n return item.Selected;\n }) || {\n Name: \"Location\",\n FilterId: \"\"\n },\n selectedPositionFilter: serverJson.PositionFilters.find(function (item) {\n return item.Selected;\n }) || {\n Name: \"Position\",\n FilterId: \"\"\n },\n selectedAdmissionFilter: serverJson.BarAdmissionStateFilters.find(function (item) {\n return item.Selected;\n }) || {\n Name: \"Admission\",\n FilterId: \"\"\n },\n selectedDiversityFilter: serverJson.DiverseAttorneyDirectoryOptInFilter || {\n Name: \"Diverse Attorney Directory\",\n FilterId: \"\"\n },\n selectedGlobalSolutionFilter: serverJson.GlobalSolutionFilters.find(function (item) {\n return item.Selected;\n }) || {\n Name: \"GlobalSolution\",\n FilterId: \"\"\n },\n capabilityFilters: serverJson.CapabilityFilters || [],\n topicFilters: serverJson.TopicFilters || [],\n locationFilters: serverJson.LocationFilters || [],\n positionFilters: serverJson.PositionFilters || [],\n admissionFilters: serverJson.BarAdmissionStateFilters || [],\n globalSolutionFilters: serverJson.GlobalSolutionFilters || [],\n searchName: serverJson.SearchName || \"\",\n searchKeyword: serverJson.SearchKeyword || \"\",\n filters: [],\n scrollLocation: serverJson.Scroll || 0,\n emailForm: {}\n }\n };\n\n Vue.use(VueResource);\n\n var store = new Vuex.Store({\n\n state: {\n professionals: utilities.defaultValues.professionals,\n letter: utilities.defaultValues.letter,\n page: utilities.defaultValues.page,\n take: utilities.defaultValues.take,\n resultCount: utilities.defaultValues.resultCount,\n searching: utilities.defaultValues.searching,\n selectedCapabilityFilter: utilities.defaultValues.selectedCapabilityFilter,\n selectedTopicFilter: utilities.defaultValues.selectedTopicFilter,\n selectedLocationFilter: utilities.defaultValues.selectedLocationFilter,\n selectedPositionFilter: utilities.defaultValues.selectedPositionFilter,\n selectedAdmissionFilter: utilities.defaultValues.selectedAdmissionFilter,\n selectedDiversityFilter: utilities.defaultValues.selectedDiversityFilter,\n selectedGlobalSolutionFilter: utilities.defaultValues.selectedGlobalSolutionFilter,\n capabilityFilters: utilities.defaultValues.capabilityFilters,\n topicFilters: utilities.defaultValues.topicFilters,\n locationFilters: utilities.defaultValues.locationFilters,\n positionFilters: utilities.defaultValues.positionFilters,\n admissionFilters: utilities.defaultValues.admissionFilters,\n globalSolutionFilters: utilities.defaultValues.globalSolutionFilters,\n searchName: utilities.defaultValues.searchName,\n searchKeyword: utilities.defaultValues.searchKeyword,\n filters: utilities.defaultValues.filters,\n scrollLocation: utilities.defaultValues.scrollLocation,\n // Email Form\n emailForm: utilities.defaultValues.emailForm,\n emailFormLoaded: false,\n formEmailAddress: '',\n showForm: false,\n formProfessionalId: ''\n },\n\n //For view / UI to render data from store.\n getters: _defineProperty({\n\n filtersSet: function filtersSet(state) {\n\n return state.searchKeyword !== \"\" || state.searchName !== \"\" || state.selectedAdmissionFilter.FilterId !== \"\" || state.selectedDiversityFilter.FilterId !== \"\" || state.selectedPositionFilter.FilterId !== \"\" || state.selectedLocationFilter.FilterId !== \"\" || state.selectedCapabilityFilter.FilterId !== \"\" || state.selectedTopicFilter.FilterId !== \"\" || state.selectedGlobalSolutionFilter.FilterId !== \"\" || state.letter !== \"\";\n },\n\n scrollLocation: utilities.createGetter('scrollLocation'),\n page: utilities.createGetter('page'),\n take: utilities.createGetter('take'),\n selectedSearchName: utilities.createGetter('searchName'),\n selectedSearchKeyword: utilities.createGetter('searchKeyword'),\n professionals: utilities.createGetter('professionals'),\n searching: utilities.createGetter('searching'),\n letter: utilities.createGetter('letter'),\n capabilityFilters: utilities.createGetter('capabilityFilters'),\n topicFilters: utilities.createGetter('topicFilters'),\n locationFilters: utilities.createGetter('locationFilters'),\n positionFilters: utilities.createGetter('positionFilters'),\n admissionFilters: utilities.createGetter('admissionFilters'),\n globalSolutionFilters: utilities.createGetter('globalSolutionFilters'),\n selectedCapabilityFilter: utilities.createGetter('selectedCapabilityFilter'),\n selectedTopicFilter: utilities.createGetter('selectedTopicFilter'),\n selectedLocationFilter: utilities.createGetter('selectedLocationFilter'),\n selectedPositionFilter: utilities.createGetter('selectedPositionFilter'),\n selectedAdmissionFilter: utilities.createGetter('selectedAdmissionFilter'),\n selectedDiversityFilter: utilities.createGetter('selectedDiversityFilter'),\n selectedGlobalSolutionFilter: utilities.createGetter('selectedGlobalSolutionFilter'),\n resultCount: utilities.createGetter('resultCount'),\n // Email Form\n emailForm: utilities.createGetter(\"emailForm\"),\n emailFormLoaded: utilities.createGetter(\"emailFormLoaded\"),\n formProfessionalId: utilities.createGetter('formProfessionalId'),\n showForm: utilities.createGetter('showForm')\n }, 'formProfessionalId', utilities.createGetter('formProfessionalId')),\n\n // For Actions to call and change / modify store.\n mutations: {\n updateScroll: function updateScroll(state, scrollLocation) {\n state.scrollLocation = scrollLocation;\n },\n\n loadMore: function loadMore(state, _loadMore) {\n state.page++;\n },\n\n updatePage: function updatePage(state, page) {\n state.page = page;\n },\n\n updateSearchName: function updateSearchName(state, text) {\n state.searchName = text;\n },\n\n updateSearchKeyword: function updateSearchKeyword(state, text) {\n state.searchKeyword = text;\n },\n\n updateLetter: function updateLetter(state, letter) {\n state.letter = letter;\n },\n\n updateSelectedCapabilityFilter: function updateSelectedCapabilityFilter(state, filter) {\n state.selectedCapabilityFilter = filter;\n },\n updateSelectedTopicFilter: function updateSelectedTopicFilter(state, filter) {\n state.selectedTopicFilter = filter;\n },\n\n updateSelectedLocationFilter: function updateSelectedLocationFilter(state, filter) {\n state.selectedLocationFilter = filter;\n },\n\n updateSelectedPositionFilter: function updateSelectedPositionFilter(state, filter) {\n state.selectedPositionFilter = filter;\n },\n\n updateSelectedAdmissionFilter: function updateSelectedAdmissionFilter(state, filter) {\n state.selectedAdmissionFilter = filter;\n },\n\n updateSelectedDiversityFilter: function updateSelectedDiversityFilter(state, filter) {\n state.selectedDiversityFilter = filter;\n },\n\n updateSelectedGlobalSolutionFilter: function updateSelectedGlobalSolutionFilter(state, filter) {\n state.selectedGlobalSolutionFilter = filter;\n },\n\n // Professionals\n\n updateProfessionals: function updateProfessionals(state, professionals) {\n state.professionals = professionals;\n },\n\n updateResultCount: function updateResultCount(state, count) {\n state.resultCount = count;\n },\n\n setSearching: function setSearching(state, searching) {\n state.searching = searching;\n },\n\n setState: function setState(state, newState) {\n for (var key in newState) {\n state[key] = newState[key];\n }\n },\n\n resetState: function resetState(state) {\n var defaults = utilities.emptyValues;\n for (var key in defaults) {\n state[key] = defaults[key];\n }\n },\n\n clearLetter: function clearLetter(state) {\n state.letter = utilities.emptyValues.letter;\n $('#search-landing-filters').focus();\n },\n\n clearFilter: function clearFilter(state, filterName) {\n if (filterName === \"capability\") {\n state.selectedCapabilityFilter = utilities.emptyValues.selectedCapabilityFilter;\n $('#search-landing-filters').focus();\n utilities.clearDropdownSelection('field-capability');\n } else if (filterName === \"topic\") {\n state.selectedTopicFilter = utilities.emptyValues.selectedTopicFilter;\n $('#search-landing-filters').focus();\n utilities.clearDropdownSelection('field-location');\n } else if (filterName === \"location\") {\n state.selectedLocationFilter = utilities.emptyValues.selectedLocationFilter;\n $('#search-landing-filters').focus();\n utilities.clearDropdownSelection('field-location');\n } else if (filterName === \"position\") {\n state.selectedPositionFilter = utilities.emptyValues.selectedPositionFilter;\n $('#search-landing-filters').focus();\n utilities.clearDropdownSelection('field-position');\n } else if (filterName === \"admission\") {\n $('#search-landing-filters').focus();\n state.selectedAdmissionFilter = utilities.emptyValues.selectedAdmissionFilter;\n utilities.clearDropdownSelection('field-admission');\n } else if (filterName === \"diversity\") {\n $('#search-landing-filters').focus();\n state.selectedDiversityFilter = utilities.emptyValues.selectedDiversityFilter;\n } else if (filterName === \"globalSolution\") {\n state.selectedGlobalSolutionFilter = utilities.emptyValues.selectedGlobalSolutionFilter;\n $('#search-landing-filters').focus();\n utilities.clearDropdownSelection('field-global-solution');\n } else if (filterName === \"name\") {\n $('#search-landing-filters').focus();\n state.searchName = utilities.emptyValues.searchName;\n } else if (filterName === \"keyword\") {\n $('#search-landing-filters').focus();\n state.searchKeyword = utilities.emptyValues.searchKeyword;\n }\n },\n\n // Email Form\n updateEmailForm: function updateEmailForm(state, emailForm) {\n state.emailForm = emailForm;\n },\n\n updateEmailFormLoaded: function updateEmailFormLoaded(state, emailFormLoaded) {\n state.emailFormLoaded = emailFormLoaded;\n },\n\n updateFormProfessionalId: function updateFormProfessionalId(state, formProfessionalId) {\n state.formProfessionalId = formProfessionalId;\n },\n\n updateShowForm: function updateShowForm(state, showForm) {\n state.showForm = showForm;\n }\n },\n\n // For View / UI to call to call an action or mutation against store.\n actions: {\n updateScroll: function updateScroll(context, scrollLocation) {\n context.commit(\"updateScroll\", scrollLocation);\n },\n\n loadMore: function loadMore(context) {\n context.commit(\"loadMore\");\n return context.dispatch(\"search\", { loadMore: true });\n },\n\n setSearching: function setSearching(context, isSearching) {\n context.commit(\"setSearching\", isSearching);\n },\n\n updateSearchName: function updateSearchName(context, text) {\n context.commit(\"updateSearchName\", text);\n },\n\n updateSearchKeyword: function updateSearchKeyword(context, text) {\n context.commit(\"updateSearchKeyword\", text);\n },\n\n updateLetter: function updateLetter(context, letter) {\n context.commit(\"updateLetter\", letter);\n return context.dispatch('search');\n },\n updatePage: function updatePage(context, pageNumber) {\n context.commit(\"updatePage\", pageNumber);\n },\n\n clearFilter: function clearFilter(context, filterName) {\n if (filterName == \"letter\") {\n context.commit(\"clearLetter\");\n } else {\n context.commit(\"clearFilter\", filterName);\n }\n return context.dispatch(\"search\", { clearedFilterName: filterName });\n },\n\n setCapabilityFilter: function setCapabilityFilter(context, filter) {\n context.commit(\"updateSelectedCapabilityFilter\", filter);\n return context.dispatch('search');\n },\n\n setTopicFilter: function setTopicFilter(context, filter) {\n context.commit(\"updateSelectedTopicFilter\", filter);\n return context.dispatch('search');\n },\n\n setLocationFilter: function setLocationFilter(context, filter) {\n context.commit(\"updateSelectedLocationFilter\", filter);\n return context.dispatch('search');\n },\n\n setPositionFilter: function setPositionFilter(context, filter) {\n context.commit(\"updateSelectedPositionFilter\", filter);\n return context.dispatch('search');\n },\n\n setAdmissionFilter: function setAdmissionFilter(context, filter) {\n context.commit(\"updateSelectedAdmissionFilter\", filter);\n return context.dispatch('search');\n },\n\n setDiversityFilter: function setDiversityFilter(context, filter) {\n context.commit(\"updateSelectedDiversityFilter\", filter);\n return context.dispatch('search');\n },\n\n setGlobalSolutionFilter: function setGlobalSolutionFilter(context, filter) {\n context.commit(\"updateSelectedGlobalSolutionFilter\", filter);\n return context.dispatch('search');\n },\n\n // Email Form\n updateEmailForm: function updateEmailForm(context, emailForm) {\n context.commit(\"updateEmailForm\", emailForm);\n },\n\n updateEmailFormLoaded: function updateEmailFormLoaded(context, emailFormLoaded) {\n context.commit(\"updateEmailFormLoaded\", emailFormLoaded);\n },\n\n updateFormProfessionalId: function updateFormProfessionalId(context, formProfessionalId) {\n context.commit(\"updateFormProfessionalId\", formProfessionalId);\n },\n\n updateShowForm: function updateShowForm(context, showForm) {\n context.commit(\"updateShowForm\", showForm);\n },\n\n search: function search(context, payload) {\n payload = payload || {};\n var clearedFilterName = payload.clearedFilterName;\n var loadMore = payload.loadMore;\n var skip = context.state.professionals.length;\n\n if (!loadMore) {\n // First page of people search starts at 0, instead of 1 like others\n context.commit('setState', { page: 0 });\n skip = 0;\n }\n\n // Execute search via web service, then push parameters to url\n return utilities.search(context.state.letter, context.state.selectedLocationFilter.FilterId, context.state.selectedCapabilityFilter.FilterId, context.state.selectedTopicFilter.FilterId, context.state.selectedAdmissionFilter.FilterId, context.state.selectedDiversityFilter.FilterId, context.state.selectedGlobalSolutionFilter.FilterId, context.state.selectedPositionFilter.FilterId, context.state.searchName, context.state.searchKeyword, context.state.take, skip).then(function (result) {\n\n // if we are not on first page, then add to results\n var firstResultIndex = 0;\n if (context.state.page != 0) {\n firstResultIndex = context.state.professionals.length;\n }\n\n if (loadMore) {\n var paginatedProfessionals = context.state.professionals;\n paginatedProfessionals = paginatedProfessionals.concat(result.Results);\n context.commit(\"updateProfessionals\", paginatedProfessionals);\n } else {\n context.commit(\"updateProfessionals\", result.Results);\n }\n\n context.commit(\"updateResultCount\", result.ResultCount);\n var newUrl = \"\";\n\n if (context.state.page != 0) {\n newUrl = utilities.setUrlParameter(\"page\", context.state.page, newUrl !== \"\" ? '?' + newUrl.split('?')[1] : window.location.search);\n }\n\n if (context.state.letter !== \"\" || clearedFilterName == \"letter\") {\n // Pass in the window location search if no url has been built yet\n // Otherwise, pass in the in progress new url, but only the query parameters\n newUrl = utilities.setUrlParameter(\"letter\", context.state.letter, newUrl !== \"\" ? '?' + newUrl.split('?')[1] : window.location.search);\n }\n\n if (context.state.selectedCapabilityFilter.FilterId !== \"\" || clearedFilterName === \"capability\") {\n newUrl = utilities.setUrlParameter(\"capability\", context.state.selectedCapabilityFilter.FilterId, newUrl !== \"\" ? '?' + newUrl.split('?')[1] : window.location.search);\n }\n\n if (context.state.selectedTopicFilter.FilterId !== \"\" || clearedFilterName === \"topic\") {\n newUrl = utilities.setUrlParameter(\"topic\", context.state.selectedTopicFilter.FilterId, newUrl !== \"\" ? '?' + newUrl.split('?')[1] : window.location.search);\n }\n\n if (context.state.selectedLocationFilter.FilterId !== \"\" || clearedFilterName === \"location\") {\n newUrl = utilities.setUrlParameter(\"location\", context.state.selectedLocationFilter.FilterId, newUrl !== \"\" ? '?' + newUrl.split('?')[1] : window.location.search);\n }\n\n if (context.state.selectedPositionFilter.FilterId !== \"\" || clearedFilterName === \"position\") {\n newUrl = utilities.setUrlParameter(\"position\", context.state.selectedPositionFilter.FilterId, newUrl !== \"\" ? '?' + newUrl.split('?')[1] : window.location.search);\n }\n\n if (context.state.selectedAdmissionFilter.FilterId !== \"\" || clearedFilterName === \"admission\") {\n newUrl = utilities.setUrlParameter(\"admission\", context.state.selectedAdmissionFilter.FilterId, newUrl !== \"\" ? '?' + newUrl.split('?')[1] : window.location.search);\n }\n\n if (context.state.selectedDiversityFilter.FilterId !== \"\" || clearedFilterName === \"diversity\") {\n newUrl = utilities.setUrlParameter(\"diversity\", context.state.selectedDiversityFilter.FilterId, newUrl !== \"\" ? '?' + newUrl.split('?')[1] : window.location.search);\n }\n\n if (context.state.selectedGlobalSolutionFilter.FilterId !== \"\" || clearedFilterName === \"globalSolution\") {\n newUrl = utilities.setUrlParameter(\"globalSolution\", context.state.selectedGlobalSolutionFilter.FilterId, newUrl !== \"\" ? '?' + newUrl.split('?')[1] : window.location.search);\n }\n\n if (context.state.searchName !== \"\" || clearedFilterName === \"name\") {\n newUrl = utilities.setUrlParameter(\"name\", context.state.searchName, newUrl !== \"\" ? '?' + newUrl.split('?')[1] : window.location.search);\n }\n\n if (context.state.searchKeyword !== \"\" || clearedFilterName === \"keyword\") {\n newUrl = utilities.setUrlParameter(\"keyword\", context.state.searchKeyword, newUrl !== \"\" ? '?' + newUrl.split('?')[1] : window.location.search);\n }\n\n if (context.state.scrollLocation !== 0) {\n newUrl = utilities.setUrlParameter(\"scroll\", context.state.scrollLocation, newUrl !== \"\" ? '?' + newUrl.split('?')[1] : window.location.search);\n }\n\n if (newUrl !== \"\") {\n // If any filter is enabled, display search mode.\n // Will hide search if final filter is cleared.\n var enableSearch = context.getters.filtersSet;\n context.commit(\"setSearching\", enableSearch);\n window.history.pushState(context.state, '', newUrl);\n }\n\n return firstResultIndex;\n });\n },\n\n performNameSearch: function performNameSearch(context, term) {\n if (term) {\n context.commit('updateSearchName', term);\n }\n },\n\n performKeywordSearch: function performKeywordSearch(context, term) {\n if (term) {\n context.commit('updateSearchKeyword', term);\n }\n },\n\n setState: function setState(context, newState) {\n context.commit('setState', newState);\n },\n\n resetState: function resetState(context) {\n context.commit('resetState');\n }\n\n }\n\n });\n\n var professionalLandingSearchApp = new Vue({\n\n el: '#professionals-landing',\n\n store: store,\n\n created: function created() {\n\n var app = this;\n Vue.http.get('/api/shared/emailform').then(function (response) {\n app.$store.dispatch('updateEmailForm', response.body.form);\n app.$store.dispatch('updateEmailFormLoaded', true);\n // app.loadRecaptcha();\n }, function (error) {\n console.log(error);\n });\n\n window.onpopstate = this.onPopState;\n\n if (this.$store.getters.scrollLocation !== 0) {\n utilities.scrollTo(this.$store.getters.scrollLocation);\n } else if (this.$store.getters.searching) {\n //utilities.defaultScroll()\n }\n },\n\n data: {\n currentSearchNameTerm: \"\",\n currentSearchKeywordTerm: \"\",\n showMobileFilters: false,\n capability: '',\n focusedDropdowns: [],\n form: null,\n name: \"\",\n email: \"\",\n message: \"\",\n recaptchaPublicKey: \"\",\n honeypot: \"\",\n CaptchaError: \"\"\n },\n\n // Computed called in UI for displaying values from store, call store getters\n computed: Vuex.mapGetters(['page', 'take', 'letter', 'professionals', 'searching', 'capabilityFilters', 'topicFilters', 'locationFilters', 'positionFilters', 'admissionFilters', 'globalSolutionFilters', 'selectedCapabilityFilter', 'selectedTopicFilter', 'selectedLocationFilter', 'selectedPositionFilter', 'selectedAdmissionFilter', 'selectedDiversityFilter', 'selectedGlobalSolutionFilter', 'selectedSearchName', 'selectedSearchKeyword', 'resultCount', 'scrollLocation', 'emailForm', 'emailFormLoaded', 'formEmailAddress', 'showForm', 'formProfessionalId']),\n\n // Called in UI - dispatch store actions\n methods: {\n\n toggleFilters: function toggleFilters() {\n this.showMobileFilters = !this.showMobileFilters;\n },\n\n loadMore: function loadMore() {\n this.$store.dispatch('updateScroll', utilities.getLoadMoreLocation());\n this.$store.dispatch(\"loadMore\").then(function (firstResultIndex) {\n $('#professionals-landing').find('.professional-result-link').get(firstResultIndex).focus();\n });\n },\n\n // Executes button search\n searchButtonClick: function searchButtonClick() {\n\n if (this.currentSearchNameTerm !== '' || this.currentSearchKeywordTerm !== '') {\n this.$store.dispatch('performNameSearch', this.currentSearchNameTerm);\n this.$store.dispatch('performKeywordSearch', this.currentSearchKeywordTerm);\n this.$store.dispatch('search');\n\n // Clear all search text\n this.currentSearchNameTerm = \"\";\n this.currentSearchKeywordTerm = \"\";\n }\n },\n\n // Sets letter filter and executes search\n letterClick: function letterClick(letter) {\n $('#search-landing-filters').focus();\n this.$store.dispatch('updateLetter', letter);\n this.$store.dispatch('updatePage', 1);\n },\n\n clearFilter: function clearFilter(filterName) {\n this.$store.dispatch('clearFilter', filterName);\n },\n clearEmailForm: function clearEmailForm() {\n this.name = \"\";\n this.email = \"\";\n this.message = \"\";\n this.emailForm.NameError = \"\";\n this.emailForm.EmailError = \"\";\n this.emailForm.MessageError = \"\";\n this.CaptchaError = \"\";\n },\n\n hideForm: function hideForm() {\n var form = document.getElementsByClassName('email-form__wrapper')[0];\n if (!form.classList.contains('hide')) {\n form.classList.add('hide');\n }\n },\n\n unhideForm: function unhideForm() {\n var form = document.getElementsByClassName('email-form__wrapper')[0];\n if (form.classList.contains('hide')) {\n form.classList.remove('hide');\n }\n },\n\n clearAllFilters: function clearAllFilters() {\n this.$store.dispatch('resetState');\n utilities.clearDropdownSelection('field-capability');\n utilities.clearDropdownSelection('field-topic');\n utilities.clearDropdownSelection('field-location');\n utilities.clearDropdownSelection('field-position');\n utilities.clearDropdownSelection('field-admission');\n utilities.clearDropdownSelection('field-global-solution');\n $('#search-landing-filters').focus();\n window.history.pushState(utilities.defaultValues, '', window.location.pathname);\n },\n\n capabilityFilterChange: function capabilityFilterChange(value) {\n if (value == \"\") {\n this.clearFilter('capability');\n $('#search-landing-filters').focus();\n return;\n }\n var filter = JSON.parse(value);\n this.$store.dispatch('setCapabilityFilter', filter);\n },\n\n topicFilterChange: function topicFilterChange(value) {\n if (value == \"\") {\n this.clearFilter('topic');\n $('#search-landing-filters').focus();\n return;\n }\n var filter = JSON.parse(value);\n this.$store.dispatch('setTopicFilter', filter);\n },\n\n locationFilterChange: function locationFilterChange(value) {\n if (value == \"\") {\n this.clearFilter('location');\n $('#search-landing-filters').focus();\n return;\n }\n var filter = JSON.parse(value);\n this.$store.dispatch('setLocationFilter', filter);\n },\n\n positionFilterChange: function positionFilterChange(value) {\n if (value == \"\") {\n this.clearFilter('position');\n $('#search-landing-filters').focus();\n return;\n }\n var filter = JSON.parse(value);\n this.$store.dispatch('setPositionFilter', filter);\n },\n\n admissionFilterChange: function admissionFilterChange(value) {\n if (value == \"\") {\n this.clearFilter('admission');\n $('#search-landing-filters').focus();\n return;\n }\n var filter = JSON.parse(value);\n this.$store.dispatch('setAdmissionFilter', filter);\n },\n\n globalSolutionFilterChange: function globalSolutionFilterChange(value) {\n if (value == \"\") {\n this.clearFilter('globalSolution');\n $('#search-landing-filters').focus();\n console.log('focusss');\n return;\n }\n var filter = JSON.parse(value);\n this.$store.dispatch('setGlobalSolutionFilter', filter);\n },\n\n filterCount: function filterCount() {\n var setFilters = [];\n\n if (this.selectedCapabilityFilter.FilterId !== '') {\n setFilters.push(this.selectedCapabilityFilter);\n }\n if (this.selectedTopicFilter.FilterId !== '') {\n setFilters.push(this.selectedTopicFilter);\n }\n if (this.selectedLocationFilter.FilterId !== '') {\n setFilters.push(this.selectedLocationFilter);\n }\n if (this.selectedGlobalSolutionFilter.FilterId !== '') {\n setFilters.push(this.selectedGlobalSolutionFilter);\n }\n if (this.selectedPositionFilter.FilterId !== '') {\n setFilters.push(this.selectedPositionFilter);\n }\n if (this.selectedAdmissionFilter.FilterId !== '') {\n setFilters.push(this.selectedAdmissionFilter);\n }\n if (this.selectedDiversityFilter.FilterId !== '') {\n setFilters.push(this.selectedDiversityFilter);\n }\n if (this.selectedSearchName !== '') {\n setFilters.push(this.selectedSearchName);\n }\n if (this.selectedSearchKeyword !== '') {\n setFilters.push(this.selectedSearchKeyword);\n }\n if (this.letter !== '') {\n setFilters.push(this.letter);\n }\n\n return setFilters.length;\n },\n\n onPopState: function onPopState() {\n\n if (window.history.state) {\n this.$store.dispatch('setState', window.history.state);\n\n if (this.$store.getters.scrollLocation !== 0) {\n utilities.scrollTo(this.$store.getters.scrollLocation);\n }\n } else {\n this.$store.dispatch('resetState');\n }\n },\n\n accept: function accept() {\n var mailTo = 'mailto:' + this.disclaimerEmailAddress;\n window.location.href = mailTo;\n this.toggleModal();\n },\n\n toggleModal: function toggleModal(professionalId) {\n if (professionalId) {\n this.$store.dispatch('updateFormProfessionalId', professionalId);\n } else {\n this.$store.dispatch('updateFormProfessionalId', '');\n }\n\n var body = document.getElementsByTagName('body')[0];\n body.classList.toggle('modal-lock');\n this.$store.dispatch('updateShowForm', !this.showForm);\n if (!this.showModal) {\n this.clearEmailForm();\n this.unhideForm();\n }\n this.hideMessage();\n },\n validateInput: function validateInput() {\n var isValid = true;\n if (this.name == \"\") {\n this.emailForm.NameError = this.emailForm.NameText + \" is required.\";\n isValid = false;\n } else {\n this.emailForm.NameError = \"\";\n }\n if (this.email == \"\" || !this.email.match(/^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$/)) {\n this.emailForm.EmailError = \"Please enter a valid \" + this.emailForm.EmailText + \".\";\n isValid = false;\n } else {\n this.emailForm.EmailError = \"\";\n }\n if (this.message == \"\") {\n this.emailForm.MessageError = this.emailForm.MessageText + \" is required.\";\n isValid = false;\n } else {\n this.emailForm.MessageError = \"\";\n }\n this.$forceUpdate();\n return isValid;\n },\n showMessage: function showMessage(message) {\n this.hideForm();\n this.emailForm.DisplayMessage = message;\n this.$forceUpdate();\n },\n hideMessage: function hideMessage(message) {\n this.emailForm.DisplayMessage = '';\n },\n\n loadRecaptcha: function loadRecaptcha() {\n var self = this;\n setTimeout(function () {\n if (typeof grecaptcha === 'undefined') {\n self.loadRecaptcha();\n } else {\n grecaptcha.render('form-captcha', {\n sitekey: '6Le6sx4UAAAAAEvHiBxQCMkeaKEoUdlu8nFn9c_q',\n callback: self.recaptchaCallback\n });\n }\n }, 100);\n },\n\n recaptchaCallback: function recaptchaCallback() {\n console.log(\"callback\");\n },\n submit: function submit() {\n if (this.validateInput()) {\n var recaptchaPublicKey = document.getElementById('contact-us-form').getAttribute('data-recaptcha-key');\n var context = this;\n grecaptcha.execute(recaptchaPublicKey, { action: 'email_disclaimer' }).then(function (token) {\n var emailCount = sessionStorage.getItem('emailCount');\n if (emailCount) {\n sessionStorage.setItem('emailCount', parseInt(emailCount) + 1);\n } else {\n sessionStorage.setItem('emailCount', 1);\n }\n Vue.http.post('/api/shared/submitemailform', {\n ID: context.$store.getters.formProfessionalId,\n Name: context.name,\n Email: context.email,\n Message: context.message,\n EmailCount: emailCount,\n RecaptchaResponse: token\n }).then(function (response) {\n if (response.status == 200) {\n if (response.body.success) {\n context.showMessage(response.body.message);\n } else if (response.body.recaptchaFailed) {\n context.CaptchaError = \"Error with Recaptcha.\";\n } else {\n console.log(response.body.message);\n }\n } else {\n console.log(\"error while submitting email\");\n context.showMessage(response.body.message);\n }\n }, function (error) {\n context.showMessage(\"There was an error submitting the email, please try again later.\");\n });\n }, function (response) {\n console.log(\"Error executing recaptcha\");\n });\n }\n },\n\n toBoolean: function toBoolean(status) {\n if (status == \"false\") return false;\n if (status == \"true\") return true;\n return true;\n },\n\n focusFilter: function focusFilter(filterName) {\n if (!this.focusedDropdowns.indexOf(filterName) > -1) {\n this.focusedDropdowns.push(filterName);\n }\n },\n\n blurFilter: function blurFilter(filterName) {\n if (this.focusedDropdowns.indexOf(filterName) > -1) {\n var index = this.focusedDropdowns.indexOf(filterName);\n if (index > -1) {\n this.focusedDropdowns.splice(index, 1);\n }\n }\n }\n },\n\n components: {\n 'email-form': {\n template: '#email-form-template',\n props: ['accept', 'toggleModal'],\n computed: {\n emailForm: function emailForm() {\n return this.$store.getters.emailForm;\n },\n\n emailFormLoaded: function emailFormLoaded() {\n return this.$store.getters.emailFormLoaded;\n },\n\n formEmailAddress: function formEmailAddress() {\n return this.$store.getters.formEmailAddress;\n },\n\n showForm: function showForm() {\n return this.$store.getters.showForm;\n }\n }\n }\n }\n });\n}\n\n},{}]},{},[2]);\n"]}