{"version":3,"sources":["components/shared/Spinner/Spinner.js","components/shared/BubbleButton/BubbleButton.js","assets/apple.svg","services/LogService.js","services/FetchService.js","services/AxiosService.js","services/HttpService.js","services/RecaptchaService.js","services/BootstrapService.js","components/shared/Navbar/Navbar.js","components/Home/Exposition/Exposition.js","components/Home/List/List.js","assets/course-plug.svg","components/Home/List/Items/CourseItem.js","components/Home/List/Items/HowItWorksItem.js","components/Home/List/Items/WhyUsItem.js","components/Home/SingleCourse/SingleCourse.js","assets/google.svg","components/Home/AppStore/AppStore.js","components/Home/Spacer/Spacer.js","assets/error.svg","components/shared/FullNameInput/FullNameInput.js","services/SessionService.js","services/MemberService.js","services/FormService.js","components/Home/TryForFree/TryForFree.js","components/Home/Plans/Plans.js","components/shared/Reviews/util/jqueryShim.js","components/shared/Reviews/assets/arrow-right.svg","assets/avatar-plug.svg","components/shared/Reviews/Reviews.js","assets/check-mark.svg","components/shared/Subscribe/Subscribe.js","components/shared/Footer/Footer.js","assets/chevron-left.svg","assets/cancel.svg","components/Home/GroupsModal/GroupsModal.js","components/Home/Home.js","components/Approvals/Approvals.js","utils/debounce.js","utils/key.js","components/shared/Pages/Pages.js","components/shared/Empty/Empty.js","assets/filter-bars.svg","components/Courses/Courses.js","assets/less-than.svg","assets/greater-than.svg","assets/clock.svg","services/ScheduleService.js","components/shared/Calendar/Calendar.js","services/PaymentService.js","components/CourseDetails/CourseDetails.js","components/Pricing/Plans/Membership.js","components/Pricing/Plans/IndividualCourse.js","components/shared/RadioButton/RadioButton.js","components/Pricing/Plans/CourseBundle.js","components/Pricing/Plans/GroupPlan.js","components/Pricing/Plans/Webinar.js","components/Pricing/Pricing.js","components/Buy/Buy.js","components/Payment/Payment.js","assets/social.svg","assets/phone.svg","assets/world.svg","assets/letter.svg","components/Requirements/Requirements.js","components/Login/Login.js","components/Register/Register.js","components/ForgotPassword/ForgotPassword.js","components/ResetPassword/ResetPassword.js","assets/location.svg","assets/printer.svg","components/Help/Help.js","services/FaqService.js","components/Faq/Faq.js","utils/string.js","utils/array.js","assets/arrow-down.svg","components/PrivacyPolicy/PrivacyPolicy.js","components/Terms/Terms.js","components/AffiliatedSites/AffiliatedSites.js","components/ConfirmEmail/ConfirmEmail.js","components/CompleteProfile/CompleteProfile.js","components/CreateGroup/CreateGroup.js","components/RefundPolicy/RefundPolicy.js","components/ComplaintPolicy/ComplaintPolicy.js","components/CustomPage/CustomPage.js","components/shared/Error/Error.js","components/shared/AppError/AppError.js","App.js","reportWebVitals.js","index.js"],"names":["Spinner","className","aria-hidden","React","Component","BubbleButton","e","bubble","target","querySelector","rect","getBoundingClientRect","y","clientY","top","x","clientX","left","gsap","to","this","props","onMouseEnter","handleBubble","onMouseLeave","ref","innerRef","type","formNoValidate","onClick","children","forwardRef","_extends","Object","assign","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","d","SvgApple","_ref","svgRef","title","titleId","viewBox","xmlns","id","ForwardRef","logService","log","message","push","fetchService","response","console","error","add","Promise","reject","Error","ok","contentType","headers","get","includes","text","json","status","statusText","url","headersString","entries","map","value","join","errorDetails","then","body","catch","requestOptions","method","fetch","getResponse","JSON","stringify","data","request","code","navigator","onLine","timeout","axios","handleError","post","put","delete","HttpSelector","freeze","UseFetch","UseAxios","ApiSelector","UseApi","UseApp","httpService","httpSelector","apiSelector","apiToken","sessionId","refreshingApiToken","hssEdClientId","hssEdClientSecret","hssEdClientPlatform","metaSiteName","document","siteName","getAttribute","startsWith","metaSessionId","metaSlot","slot","metaLocal","local","toLowerCase","apiUrl","metaColor","color","documentElement","style","setProperty","warn","expiration","Date","setDate","getDate","cookie","selection","resolve","clear","startTime","performance","now","checkApi","success","elapsedTime","reportError","useFetchUseApi","useAxiosUseApi","useFetchUseApp","useAxiosUseApp","useThirdParty","getVersion","noApi","setApiRoutingCookie","errorModel","lineNo","columnNo","stack","window","location","href","referrer","tryUseFetchUseApi","tryUseAxiosUseApi","tryUseFetchUseApp","tryUseAxiosUseApp","tryThirdPartyRequest","tryGetVersion","tryGetVersionImpl","func","getHttpFunc","tryThirdPartyRequestImpl","userId","getPreBootstrap","getPreBootstrapImpl","succeeded","errors","userAgent","lowerCaseUserAgent","some","keyword","browserInfo","userAgentData","brands","isChromiumBased","chrome","brand","isFirefox","isWebKit","isBot","fetchImplementation","getFetchImplementationIdentifier","connection","mozConnection","webkitConnection","effectiveType","downlink","rtt","saveData","getHeaders","bind","postNoResponse","axiosService","useAuth","expiresIn","apiTokenExpire","setSession","result","accessToken","accessTokenLifetime","verify","expireInSeconds","refreshApiToken","verifyApiToken","endpoint","getEndpoint","recaptchaCallbackName","ready","recaptchaService","_ready","_readyCallbacks","_siteKey","forEach","cb","grecaptcha","render","element","siteKey","theme","callback","action","execute","script","createElement","src","async","defer","head","appendChild","bootstrapService","primaryColor","secondaryColor","defaultPlanType","defaultStateName","apiTokenLifetime","recaptchaSiteKey","setDefaultProperties","setSingleCourseId","setAllColors","landing","sections","plansSection","find","s","name","plans","defaultPlan","p","isDefault","pages","requirementsPage","requirements","defaultState","r","authorityName","courseCatalog","courses","singleCourseId","site","rgb","hexToRgb","g","b","primaryLightColor","hex","exec","parseInt","credits","creditTerm","creditsTerm","ceTerm","getCategoryTerm","showAddress","showReleaseDate","paymentOptions","Navbar","navbar","scrollBarWidth","innerWidth","clientWidth","state","previousY","isMobileNavbarOpened","scrollNavbar","toggleMobileNavbar","clickHome","clickTryForFree","setupScrollAnimation","addEventListener","setState","classList","remove","getComputedStyle","paddingRight","pageYOffset","isPageStart","hideMobilelNavbar","showMobileNavbar","scrollTo","behavior","clickTry","backgroundColor","activeLink","navs","logo","logoUrl","appStoreData","appleUrl","tryForFreeData","tryForFreeLabel","actionLabel","getCETerm","div","alt","n","page","header","pathname","tryForFree","role","aria-label","Exposition","actionLink","imageUrl","imageBackgroundUrl","highlighted","data-aos","isMobileOnly","undefined","data-aos-duration","data-aos-easing","List","registerPlugin","ScrollTrigger","info","setupListScroll","matchMedia","create","trigger","pin","start","end","offsetHeight","scrub","CourseItem","courseId","description","shortDescription","substring","split","slice","courseImage","getCreditsTerm","toFixed","HowItWorksItem","WhyUsItem","SingleCourse","course","releaseDate","schedules","getShowReleaseDate","toDateString","startDate","toLocaleDateString","weekday","month","day","fill","_ref3","_ref4","_ref5","SvgGoogle","xmlnsXlink","AppStore","googleUrl","Spacer","onLoad","refresh","cx","cy","SvgError","width","height","FullNameInput","fullNameInput","fullNameGroup","firstNameInput","middleNameInput","lastNameInput","lastNameInputTextField","useFullNameInput","firstName","middleName","lastName","checkFullNameInput","setupNameInputs","setTimeout","changeNameInputs","ignoreFullName","display","currentTarget","focus","$","hide","show","fullName","getFullName","required","placeholder","defaultValue","onChange","htmlFor","input","sessionService","accessTokenObject","member","memberDigest","session","refreshToken","userSessionId","disableAutoLogin","requiresEmailConfirm","tokenPayload","jwt","jws","JWS","readSafeJSONString","accessTokenNotBefore","nbf","accessTokenExpire","exp","accessTokenExpireLocal","accessTokenName","Array","isArray","email","jsonSession","localStorage","setItem","eraseUserSessionCookie","setUserSessionCookie","days","expires","date","setTime","getTime","toUTCString","cookieValue","encodeURIComponent","MemberType","memberService","confirmEmailValidated","completeProfileValidated","successRedirect","replace","subscribeRequest","loginRequest","setLocalUserSession","checkEmailRequest","mtcId","getItem","row","registerRequest","requestType","confirmAccount","autoLogin","origin","timezoneOffset","getTimezoneOffset","contactId","getMtcId","forgotPasswordRequest","resetPasswordRequest","token","completeProfileRequest","validateMemberRequest","joinGroupRequest","recaptchaToken","registerCode","groupCode","formService","form","button","setAttribute","removeAttribute","inputs","querySelectorAll","inputDiv","innerText","duration","results","hideAllErrors","contains","requiredOK","checkRequired","nameOK","checkName","emailOK","checkEmail","passwordOK","checkPassword","creditCardOK","checkCreditCard","expMonthOK","checkExpirationMonth","expYearOK","checkExpirationYear","cvvOK","checkCvv","numberOK","checkNumber","questionOK","checkQuestion","every","control","attributes","trim","test","isValidCreditCardNo","nCheck","bEven","cDigit","charAt","nDigit","isNaN","getFullYear","TryForFree","useFullName","submitForm","preventDefault","isFormValid","validate","password","confirm","showInputError","hideLoadingButton","showLoadingButton","memberRequest","getToken","memberType","checkEmailInUse","isInUse","register","goToMembers","showFormError","onSubmit","Plans","plan","index","data-aos-delay","data-aos-anchor-placement","data-type","openGroupPlanModal","withRouter","jQuery","SvgArrowRight","stroke","strokeWidth","strokeLinecap","SvgAvatarPlug","Reviews","carousel","clickNextReview","setupCarousel","owlCarousel","animateOut","smartSpeed","autoWidth","margin","reviewsData","reviews","testimonials","review","cursor","comment","SvgCheckMark","Subscribe","successMessage","subscribeRequirement","subscribe","subscribeData","section","Footer","siteData","footers","logoLightUrl","defaultPassType","phone","sitePhone","fax","siteFax","siteEmail","address","siteAddress","street","concat","city","zip","getShowAddress","year","rel","opacity","SvgChevronLeft","vectorEffect","strokeLinejoin","SvgCancel","GroupsModal","modal","screen1","screen2","screen3","toggleModal","showCreateGroup","showJoinGroup","clickCreateGroup","clickJoinGroup","clickBack","setupSelects","select2","minimumResultsForSearch","on","shouldIgnore","stopPropagation","dataset","clearAllInputs","validateJoinGroup","goToJoinGroup","goToCreateGroup","disabled","Home","groupPlanModal","tryForFreeSection","toggleGroupPlanModal","setupScroll","scrollIntoView","block","toggleOverflowForModal","history","homeData","heroData","approvalsData","coursesData","spacer1Data","howItWorksData","spacer2Data","whyUsData","plansData","siteEmailFromName","works","work","features","feature","Approvals","orgApprovals","organizationApprovals","courseApprovals","approval","dangerouslySetInnerHTML","__html","f","debounce","wait","immediate","context","args","later","callNow","clearTimeout","getKey","uuid","Pages","Pagination","withStyles","root","Empty","emptyTitle","emptyImg","noResultsImageUrl","x1","y1","x2","y2","SvgFilterBars","Courses","filterMenu","mobileFilterMenu","mobileSubmitButton","coursesList","categoryFilter","searchFilter","sortFilter","pageNumber","openMobileFilterMenu","closeMobileFilterMenu","clickMobileFilterItem","clickMobileSubmit","changeCoursesPage","searchCourses","searchCoursesMobile","updateSelects","filterType","setMobileFilterActive","filterCourses","sortCourses","first","hasClass","filterValue","filter","addClass","siblings","removeClass","select","val","filterOption","enableMobileSpinner","disableMobileSpinner","sortOption","c","subjectArea","search","sort","a","aval","order","bval","categoryFilters","subjectAreaFilters","sortOptions","getCourses","pagedCourses","renderKey","data-filter-type","option","data-value","ul","data-aos-offset","placeholderImage","deliveryMethod","count","Math","ceil","size","SvgLessThan","SvgGreaterThan","SvgClock","scheduleService","getMonth","getDay","getDaysInMonth","today","short","full","timeZoneName","shortIndex","Calendar","currentSchedule","currentMonth","currentYear","getYear","clickPreviousMonth","clickNextMonth","clickDay","clickBuy","setupSchedules","getDays","selectSchedule","firstDayOfWeek","getFirstDayOfWeek","lastDayOfWeek","getLastDayOfWeek","daysInMonth","daysinPreviousMonth","getDaysInPreviousMonth","unselected","selected","schedule","previousMonth","nextMonth","buySchedule","item","currentMonthAndYear","selectedDate","selectedTime","toLocaleTimeString","hour","minute","endDate","selectedDuration","abs","rowIndex","dayIndex","canClick","getTimeZone","paymentService","paymentType","group","creditCard","sandboxTicket","paypalValidated","buyRequest","quantity","scheduleId","groupName","isAdminOnly","creditCardNo","expirationMonth","expirationYear","securityCode","payerId","orderId","paymentRequestId","CourseDetails","courseDescription","courseDescriptionButton","authorBios","authorBiosButtons","courseObjectives","courseObjectivesButton","clickReadMoreDescription","clickReadMoreBio","clickReadMoreObjectives","goToBuy","setupReadMoreButtons","bio","price","reset","bundles","courseBundleTypes","bundlesWithCourse","bundle","courseDigests","match","params","categoryTerm","memberships","passTypes","getBundles","audience","knowledgeLevel","advancePreparation","prerequisites","commercialSupport","jointProvidership","authors","author","designations","sectionIndex","objectives","objective","objectiveIndex","String","membership","descriptionText","cIndex","Membership","featureIndex","IndividualCourse","goToCourse","category","courseNo","RadioButton","defaultChecked","CourseBundle","webinars","webinar","changeSchedule","courseIndex","scheduleIndex","GroupPlan","minMembers","memberCountMin","maxMembers","memberCountMax","Webinar","Pricing","planFilter","mobilePlanFilter","plansList","currentPlan","clickMobileFilterSubmit","changePlansPage","setupMobileFilter","updateCurrentPlan","shouldIgnoreHistory","filterPlans","sortPlans","each","onpopstate","path","sorter","sortPassTypes","sortBundleTypes","groupTypes","sortGroupTypes","pricingData","bodyText","itemsFilter","getPlans","pagedPlans","planType","getCurrentPlanType","Buy","userSwitcher","userSwitch","nameInput","passwordInput","confirmInput","clickSwitch","fillSandboxForm","setupSwitcher","userSelections","offsetWidth","offsetLeft","toggleAccountInputs","selectedSwitch","setSwitchActive","hideInputs","css","showInputs","parent","ctrlKey","metaKey","validateMember","Payment","getPaymentOptions","useCreditCard","useCreditCardSandbox","usePayPal","usePayPalSandbox","useOffline","numPaymentMethods","paymentSwitcher","paymentSwitch","paymentInputs","paymentParagraph","getSandboxTicket","paymentSelections","togglePaymentInputs","enableForm","disableForm","submitCreditCard","submitPayPal","submitCheckOrPhone","card","mm","yyyy","cvv","buyItemCreditCard","buyItemPayPal","orderRequest","paymentRequests","secureAcceptanceUrl","buyItemOffline","creditCardLabel","payPalLabel","span","cardError","fillRule","clipRule","_ref6","_ref7","SvgSocial","SvgPhone","SvgWorld","SvgLetter","Requirements","content","mobileSelect","currentState","clickState","searchStates","updateCurrentState","stateName","scrollY","requirementsData","allRequirements","currentRequirement","requirement","statename","requirementText","organizationName","organizationPhone","organizationUrl","organizationEmail","Login","login","Register","groupRegisterCode","ForgotPassword","paragraph","forgotPassword","animate","html","emailError","ResetPassword","resetPassword","SvgLocation","SvgPrinter","Help","helpData","address1","address2","fullAddress","faqService","faqRequest","Faq","accordianItems","questionForm","clickAccordianItem","submitQuestion","setupAccordian","closeItem","parentElement","closeAllItems","toggle","question","askQuestion","faqData","faqs","faq","li","answer","splitBody","middle","floor","before","lastIndexOf","after","substr","splitArray","list","half","splice","SvgArrowDown","PrivacyPolicy","topicRefs","clickTopic","topic","policyData","effectiveDate","topics","body1","body2","class","itemIndex","firstItems","secondItems","Terms","termsData","AffiliatedSites","affiliatedData","sites","ConfirmEmail","errorBody","setBootstrapCallback","setCallback","validateToken","validateConfirmEmailToken","forceUpdate","tokenValidated","CompleteProfile","requireFirstName","requireLastName","requirePassword","validateCompleteProfileToken","completeProfile","confirmError","CompleteGroup","groupSwitcher","groupSwitch","numberOfMembers","RefundPolicy","ComplaintPolicy","CustomPage","errorCode","errorTitle","errorDescription","errorImg","errorImageUrl","AppError","App","dataLoading","dataError","onerror","msg","setupAOS","selectApi","getBootstrap","AOS","init","once","delay","easing","maxDistance","anchorPlacement","loading","exact","component","CreateGroup","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.d5caa18a.chunk.js","sourcesContent":["import React from 'react'\r\nimport './Spinner.scss'\r\n\r\nclass Spinner extends React.Component {\r\n    // Component\r\n    render() {\r\n        return (\r\n            <div className=\"a4-spinner\" aria-hidden={true}></div>\r\n        )\r\n    }\r\n}\r\n\r\nexport default Spinner;","import React from 'react'\r\nimport gsap from 'gsap'\r\n\r\nclass BubbleButton extends React.Component {\r\n    // Event Handlers\r\n    handleBubble(e) {\r\n        const bubble = e.target.querySelector('span.a4-btn-bubble span')\r\n        if(bubble) {\r\n            const rect = e.target.getBoundingClientRect();\r\n            const y = e.clientY - rect.top;\r\n            const x = e.clientX - rect.left;\r\n\r\n            gsap.to(bubble, {\r\n                top: y,\r\n                left: x\r\n            }, 0);\r\n        }\r\n    }\r\n\r\n    // Component\r\n    render() {\r\n        return (\r\n            <button className={\"a4-btn -bubble \" + this.props.className} \r\n                    onMouseEnter={this.handleBubble} \r\n                    onMouseLeave={this.handleBubble} \r\n                    ref={this.props.innerRef} \r\n                    type={this.props.type} \r\n                    formNoValidate={this.props.formNoValidate} \r\n                    onClick={this.props.onClick}>\r\n                {this.props.children}\r\n                <span className=\"a4-btn-bubble\">\r\n                    <span></span>\r\n                </span>\r\n            </button>\r\n        )\r\n    }\r\n}\r\n\r\nexport default React.forwardRef((props, ref) => <BubbleButton \r\n  innerRef={ref} {...props}\r\n/>);","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n  d: \"M19.0748 17.121C18.7909 17.8241 18.4549 18.4713 18.0656 19.0663C17.5348 19.8775 17.1003 20.439 16.7654 20.7508C16.2463 21.2626 15.6901 21.5247 15.0945 21.5397C14.6669 21.5397 14.1513 21.4092 13.551 21.1446C12.9488 20.8813 12.3954 20.7508 11.8893 20.7508C11.3586 20.7508 10.7894 20.8813 10.1806 21.1446C9.57089 21.4092 9.07969 21.5471 8.70413 21.5608C8.13298 21.5869 7.56368 21.3173 6.99542 20.7508C6.63273 20.4117 6.17907 19.8303 5.63561 19.0067C5.05252 18.1272 4.57314 17.1073 4.19758 15.9446C3.79538 14.6887 3.59375 13.4725 3.59375 12.2951C3.59375 10.9464 3.8656 9.78316 4.4101 8.80837C4.83803 8.02538 5.40733 7.40774 6.11986 6.95432C6.83238 6.5009 7.60226 6.26984 8.43136 6.25506C8.88502 6.25506 9.47993 6.40549 10.2192 6.70115C10.9564 6.9978 11.4298 7.14823 11.6373 7.14823C11.7925 7.14823 12.3183 6.97233 13.2098 6.62164C14.0528 6.29642 14.7642 6.16176 15.3471 6.21481C16.9265 6.35146 18.1131 7.01891 18.9022 8.22141C17.4897 9.13893 16.7909 10.424 16.8048 12.0726C16.8176 13.3567 17.2521 14.4253 18.1061 15.2738C18.4931 15.6676 18.9254 15.9719 19.4063 16.1881C19.302 16.5123 19.1919 16.8228 19.0748 17.121ZM15.4525 1.84011C15.4525 2.84659 15.1096 3.78634 14.4259 4.65616C13.6008 5.69021 12.6029 6.28773 11.5207 6.19344C11.507 6.0727 11.499 5.94561 11.499 5.81207C11.499 4.84585 11.8913 3.81181 12.5881 2.96633C12.9359 2.53826 13.3784 2.18232 13.9149 1.89838C14.4502 1.61867 14.9566 1.46399 15.4328 1.4375C15.4468 1.57205 15.4525 1.70661 15.4525 1.8401V1.84011Z\"\n});\n\nfunction SvgApple(_ref, svgRef) {\n  var title = _ref.title,\n      titleId = _ref.titleId,\n      props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    viewBox: \"0 0 23 23\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgApple);\nexport default \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjMgMjMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQo8cGF0aCBkPSJNMTkuMDc0OCAxNy4xMjFDMTguNzkwOSAxNy44MjQxIDE4LjQ1NDkgMTguNDcxMyAxOC4wNjU2IDE5LjA2NjNDMTcuNTM0OCAxOS44Nzc1IDE3LjEwMDMgMjAuNDM5IDE2Ljc2NTQgMjAuNzUwOEMxNi4yNDYzIDIxLjI2MjYgMTUuNjkwMSAyMS41MjQ3IDE1LjA5NDUgMjEuNTM5N0MxNC42NjY5IDIxLjUzOTcgMTQuMTUxMyAyMS40MDkyIDEzLjU1MSAyMS4xNDQ2QzEyLjk0ODggMjAuODgxMyAxMi4zOTU0IDIwLjc1MDggMTEuODg5MyAyMC43NTA4QzExLjM1ODYgMjAuNzUwOCAxMC43ODk0IDIwLjg4MTMgMTAuMTgwNiAyMS4xNDQ2QzkuNTcwODkgMjEuNDA5MiA5LjA3OTY5IDIxLjU0NzEgOC43MDQxMyAyMS41NjA4QzguMTMyOTggMjEuNTg2OSA3LjU2MzY4IDIxLjMxNzMgNi45OTU0MiAyMC43NTA4QzYuNjMyNzMgMjAuNDExNyA2LjE3OTA3IDE5LjgzMDMgNS42MzU2MSAxOS4wMDY3QzUuMDUyNTIgMTguMTI3MiA0LjU3MzE0IDE3LjEwNzMgNC4xOTc1OCAxNS45NDQ2QzMuNzk1MzggMTQuNjg4NyAzLjU5Mzc1IDEzLjQ3MjUgMy41OTM3NSAxMi4yOTUxQzMuNTkzNzUgMTAuOTQ2NCAzLjg2NTYgOS43ODMxNiA0LjQxMDEgOC44MDgzN0M0LjgzODAzIDguMDI1MzggNS40MDczMyA3LjQwNzc0IDYuMTE5ODYgNi45NTQzMkM2LjgzMjM4IDYuNTAwOSA3LjYwMjI2IDYuMjY5ODQgOC40MzEzNiA2LjI1NTA2QzguODg1MDIgNi4yNTUwNiA5LjQ3OTkzIDYuNDA1NDkgMTAuMjE5MiA2LjcwMTE1QzEwLjk1NjQgNi45OTc4IDExLjQyOTggNy4xNDgyMyAxMS42MzczIDcuMTQ4MjNDMTEuNzkyNSA3LjE0ODIzIDEyLjMxODMgNi45NzIzMyAxMy4yMDk4IDYuNjIxNjRDMTQuMDUyOCA2LjI5NjQyIDE0Ljc2NDIgNi4xNjE3NiAxNS4zNDcxIDYuMjE0ODFDMTYuOTI2NSA2LjM1MTQ2IDE4LjExMzEgNy4wMTg5MSAxOC45MDIyIDguMjIxNDFDMTcuNDg5NyA5LjEzODkzIDE2Ljc5MDkgMTAuNDI0IDE2LjgwNDggMTIuMDcyNkMxNi44MTc2IDEzLjM1NjcgMTcuMjUyMSAxNC40MjUzIDE4LjEwNjEgMTUuMjczOEMxOC40OTMxIDE1LjY2NzYgMTguOTI1NCAxNS45NzE5IDE5LjQwNjMgMTYuMTg4MUMxOS4zMDIgMTYuNTEyMyAxOS4xOTE5IDE2LjgyMjggMTkuMDc0OCAxNy4xMjFaTTE1LjQ1MjUgMS44NDAxMUMxNS40NTI1IDIuODQ2NTkgMTUuMTA5NiAzLjc4NjM0IDE0LjQyNTkgNC42NTYxNkMxMy42MDA4IDUuNjkwMjEgMTIuNjAyOSA2LjI4NzczIDExLjUyMDcgNi4xOTM0NEMxMS41MDcgNi4wNzI3IDExLjQ5OSA1Ljk0NTYxIDExLjQ5OSA1LjgxMjA3QzExLjQ5OSA0Ljg0NTg1IDExLjg5MTMgMy44MTE4MSAxMi41ODgxIDIuOTY2MzNDMTIuOTM1OSAyLjUzODI2IDEzLjM3ODQgMi4xODIzMiAxMy45MTQ5IDEuODk4MzhDMTQuNDUwMiAxLjYxODY3IDE0Ljk1NjYgMS40NjM5OSAxNS40MzI4IDEuNDM3NUMxNS40NDY4IDEuNTcyMDUgMTUuNDUyNSAxLjcwNjYxIDE1LjQ1MjUgMS44NDAxVjEuODQwMTFaIiAvPg0KPC9zdmc+DQo=\";\nexport { ForwardRef as ReactComponent };","class LogService {\r\n    log = [];\r\n\r\n    add(message) {\r\n        if (this.log.length > 200) {\r\n            this.log = [];\r\n        }\r\n        this.log.push(message);\r\n    }\r\n\r\n    clear() {\r\n        this.log = [];\r\n    }\r\n}\r\n\r\nconst logService = new LogService();\r\nexport default logService;","import logService from './LogService'\r\n\r\nclass FetchService {\r\n    constructor() {\r\n    }\r\n\r\n    getResponse(response) {\r\n        try {\r\n            if (!response) {\r\n                console.error(\"http-service.getResponse()) Response is null or undefined\");\r\n                logService.add(\"fetchService.getResponse() Response is null or undefined\");\r\n                return Promise.reject(new Error(\"Response is null or undefined\"));\r\n            }\r\n\r\n            if (response.ok) {\r\n                const contentType = response.headers.get('Content-Type');\r\n                logService.add(`fetchService.getResponse() response content-type ${contentType}`);\r\n\r\n                if (contentType.includes('text/plain')) {\r\n                    logService.add(\"fetchService.getResponse() return response.text()\");\r\n                    return response.text();\r\n                } else if (contentType.includes('application/json')) {\r\n                    logService.add(\"fetchService.getResponse() return response.json()\");\r\n                    return response.json();\r\n                } else {\r\n                    throw new Error('Unsupported content type');\r\n                }\r\n            }\r\n\r\n            logService.add(\"fetchService.getResponse() response not ok\");\r\n            logService.add(`fetchService.getResponse() response.status =  ${response.status}`);\r\n            logService.add(`fetchService.getResponse() response.statusText =  ${response.statusText}`);\r\n            logService.add(`fetchService.getResponse() response.url =  ${response.url}`);\r\n\r\n            const headersArray = [...response.headers.entries()]; // Convert headers to an array\r\n            const headersString = headersArray\r\n                .map(([key, value]) => `${key}: ${value}`) // Format each header as \"key: value\"\r\n                .join(', '); // Join them with newlines\r\n            logService.add(`fetchService.getResponse() response.headers =  ${headersString}`);\r\n\r\n            // Handle HTTP error responses\r\n            const errorDetails = {\r\n                status: response.status,\r\n                statusText: response.statusText,\r\n                url: response.url,\r\n                headers: [...response.headers.entries()] // Include headers if needed\r\n            };\r\n\r\n            // Try parsing the response body for more error details\r\n            return response.json()\r\n                .then((body) => {\r\n                    errorDetails.body = body;\r\n                    console.error(\"http-service.getResponse() response body = \", body);\r\n                    return Promise.reject(errorDetails);\r\n                })\r\n                .catch(() => {\r\n                    // Reject with error details if the body is not JSON\r\n                    return Promise.reject(errorDetails);\r\n                });\r\n        } catch (error) {\r\n            console.error(\"http-service.getResponse() Unexpected error = \", error);\r\n            logService.add(`fetchService.getResponse() Unexpected error = ${error}`);\r\n            return Promise.reject(error); // Handle unexpected errors\r\n        }\r\n    }\r\n\r\n    get(url, headers) {\r\n        const requestOptions = {\r\n            method: \"GET\",\r\n            headers: headers,\r\n        }\r\n\r\n        logService.add(`fetchService.get() return fetch() ${url}`);\r\n\r\n        return fetch(url, requestOptions)\r\n            .then(response => {\r\n                logService.add('fetchService.get() fetch().then() return');\r\n                return this.getResponse(response);\r\n            })\r\n            .catch(error => {\r\n                console.error('fetchService.get() fetch() caught error, url = ', url);\r\n                console.error('fetchService.get() fetch() caught error = ', error);\r\n                logService.add(`fetchService.get() fetch() caught error = ${error}`);\r\n                throw error;\r\n            });\r\n    }\r\n\r\n    post(url, headers, body) {\r\n        const requestOptions = {\r\n            method: \"POST\",\r\n            headers: headers,\r\n            body: JSON.stringify(body)\r\n        };\r\n\r\n        logService.add(`fetchService.post() return fetch() ${url}`);\r\n\r\n        return fetch(url, requestOptions)\r\n            .then(response => {\r\n                logService.add('fetchService.post() fetch().then() return');\r\n                return this.getResponse(response);\r\n            })\r\n            .catch(error => {\r\n                console.error('fetchService.post() fetch() caught error, url = ', url);\r\n                console.error('fetchService.post() fetch() caught error = ', error);\r\n                logService.add(`fetchService.post() fetch() caught error = ${error}`);\r\n                throw error;\r\n            });\r\n    }\r\n\r\n    postNoResponse(url, headers, body) {\r\n        const requestOptions = {\r\n            method: \"POST\",\r\n            headers: headers,\r\n            body: JSON.stringify(body)\r\n        }\r\n\r\n        logService.add(`fetchService.postNoResponse() return fetch() ${url}`);\r\n\r\n        return fetch(url, requestOptions)\r\n            .then(response => {\r\n                logService.add('fetchService.post() postNoResponse().then() return');\r\n                return response;\r\n            })\r\n            .catch(error => {\r\n                console.error('fetchService.postNoResponse() fetch() caught error, url = ', url);\r\n                console.error('fetchService.postNoResponse() fetch() caught error = ', error);\r\n                logService.add(`fetchService.postNoResponse() fetch() caught error = ${error}`);\r\n                throw error;\r\n            });\r\n    }\r\n\r\n    put(url, headers, body) {\r\n        const requestOptions = {\r\n            method: \"PUT\",\r\n            headers: headers,\r\n            body: JSON.stringify(body)\r\n        }\r\n\r\n        logService.add(`fetchService.put() return fetch() ${url}`);\r\n\r\n        return fetch(url, requestOptions)\r\n            .then(response => {\r\n                logService.add('fetchService.put() fetch().then() return');\r\n                return this.getResponse(response);\r\n            })\r\n            .catch(error => {\r\n                console.error('fetchService.put() fetch() caught error, url = ', url);\r\n                console.error('fetchService.put() fetch() caught error = ', error);\r\n                logService.add(`fetchService.put() fetch() caught error = ${error}`);\r\n                throw error;\r\n            });\r\n    }\r\n\r\n    delete(url, headers, body) {\r\n        const requestOptions = {\r\n            method: \"DELETE\",\r\n            headers: headers,\r\n            body: JSON.stringify(body)\r\n        }\r\n\r\n        logService.add(`fetchService.delete() return fetch() ${url}`);\r\n\r\n        return fetch(url, requestOptions)\r\n            .then(response => {\r\n                logService.add('fetchService.delete() fetch().then() return');\r\n                return this.getResponse(response);\r\n            })\r\n            .catch(error => {\r\n                console.error('fetchService.delete() fetch() caught error, url = ', url);\r\n                console.error('fetchService.delete() fetch() caught error = ', error);\r\n                logService.add(`fetchService.delete() fetch() caught error = ${error}`);\r\n                throw error;\r\n            });\r\n    }\r\n}\r\n\r\nconst fetchService = new FetchService();\r\nexport default fetchService;","import logService from './LogService'\r\nimport axios from 'axios'\r\n\r\nclass FetchService {\r\n    constructor() {\r\n    }\r\n\r\n    handleError(error) {\r\n        if (error.response) {\r\n            // The request was made, and the server responded with a status code\r\n            // that falls outside the range of 2xx\r\n            logService.add('axiosService responded with an error');\r\n            logService.add(`axiosService status = ${error.response.status}`);\r\n\r\n            console.error('Server responded with an error:');\r\n            console.error('Status:', error.response.status);\r\n            console.error('Headers:', error.response.headers);\r\n            console.error('Data:', error.response.data);\r\n        } else if (error.request) {\r\n            // The request was made, but no response was received\r\n            logService.add('axiosService no response');\r\n            logService.add(`axiosService code = ${error.code}`);\r\n            logService.add(`axiosService message = ${error.message}`);\r\n\r\n            console.error('No response received from server:', error);\r\n            console.error('Error code:', error.code);\r\n            console.error('Error message:', error.message);\r\n            console.error(error.request);\r\n        } else {\r\n            // Something else happened while setting up the request\r\n            logService.add('axiosService error during request setup');\r\n            logService.add(`axiosService code = ${error.code}`);\r\n            logService.add(`axiosService message = ${error.message}`);\r\n\r\n            console.error('Error during request setup:', error.message);\r\n        }\r\n\r\n        // Optionally handle specific errors (e.g., timeout, network issues)\r\n        if (error.code === 'ECONNABORTED') {\r\n            logService.add('axiosService Request timeout occurred');\r\n\r\n            console.error('Request timeout occurred');\r\n        } else if (navigator.onLine === false) {\r\n            logService.add('axiosService No internet connection');\r\n\r\n            console.error('No internet connection');\r\n        }\r\n    }\r\n\r\n    get(url, headers) {\r\n        headers[\"UsingAxios\"] = \"true\";\r\n        const requestOptions = {\r\n            headers: headers,\r\n            timeout: 30000\r\n        }\r\n\r\n        logService.add('axiosService.get() return fetch()');\r\n\r\n        return axios.get(url, requestOptions)\r\n            .then(response => {\r\n                logService.add('axiosService.get() get().then() return');\r\n                return response.data;\r\n            })\r\n            .catch(error => {\r\n                console.error('axiosService.get() get() caught error  ', error);\r\n                logService.add(`axiosService.get() get() caught error = ${error}`);\r\n                this.handleError(error);\r\n                throw error;\r\n            });\r\n    }\r\n\r\n    post(url, headers, body) {\r\n        headers[\"UsingAxios\"] = \"true\";\r\n        const requestOptions = {\r\n            headers: headers,\r\n            timeout: 30000\r\n        }\r\n\r\n        logService.add('axiosService.post() return fetch()');\r\n\r\n        return axios.post(url, body, requestOptions)\r\n            .then(response => {\r\n                logService.add('axios.post() success');\r\n                return response.data;\r\n            })\r\n            .catch(error => {\r\n                // Handle different types of errors\r\n                console.error('axiosService.post() post() caught error  ', error);\r\n                logService.add(`axiosService.post() post() caught error = ${error}`);\r\n                this.handleError(error);\r\n                throw error;\r\n            });\r\n    }\r\n\r\n    postNoResponse(url, headers, body) {\r\n        headers[\"UsingAxios\"] = \"true\";\r\n        const requestOptions = {\r\n            headers: headers,\r\n            timeout: 30000\r\n        }\r\n\r\n        return axios.post(url, body, requestOptions)\r\n            .then(response => {\r\n                logService.add('axios.postNoResponse() success');\r\n                return response.data;\r\n            })\r\n            .catch(error => {\r\n                console.error('axiosService.postNoResponse() post() caught error  ', error);\r\n                logService.add(`axiosService.postNoResponse() post() caught error = ${error}`);\r\n                this.handleError(error);\r\n                throw error;\r\n            });\r\n    }\r\n\r\n    put(url, headers, body) {\r\n        headers[\"UsingAxios\"] = \"true\";\r\n        const requestOptions = {\r\n            headers: headers,\r\n            timeout: 30000\r\n        }\r\n\r\n        return axios.put(url, body, requestOptions)\r\n            .then(response => {\r\n                logService.add('axios.put() success');\r\n                return response.data;\r\n            })\r\n            .catch(error => {\r\n                console.error('axiosService.put() put() caught error  ', error);\r\n                logService.add(`axiosService.put() put() caught error = ${error}`);\r\n                this.handleError(error);\r\n                throw error;\r\n            });\r\n    }\r\n\r\n    delete(url, headers, body) {\r\n        headers[\"UsingAxios\"] = \"true\";\r\n        const requestOptions = {\r\n            headers: headers,\r\n            timeout: 30000\r\n        }\r\n\r\n        return axios.delete(url, body, requestOptions)\r\n            .then(response => {\r\n                logService.add('axios.delete() success');\r\n                return response.data;\r\n            })\r\n            .catch(error => {\r\n                console.error('axiosService.delete() delete() caught error  ', error);\r\n                logService.add(`axiosService.delete() delete() caught error = ${error}`);\r\n                this.handleError(error);\r\n                throw error;\r\n            });\r\n    }\r\n}\r\n\r\nconst fetchService = new FetchService();\r\nexport default fetchService;","import fetchService from './FetchService'\r\nimport axiosService from './AxiosService'\r\nimport logService from './LogService'\r\n\r\nconst HttpSelector = Object.freeze({\r\n    UseFetch: 'UseFetch',\r\n    UseAxios: 'UseAxios'\r\n});\r\n\r\nconst ApiSelector = Object.freeze({\r\n    UseApi: 'UseApi',\r\n    UseApp: 'UseApp'\r\n});\r\n\r\nclass HttpService {\r\n    constructor() {\r\n        this.httpSelector = HttpSelector.UseFetch;\r\n        this.apiSelector = ApiSelector.UseApi;\r\n\r\n        this.apiToken = null;\r\n        this.sessionId = null;\r\n        this.refreshingApiToken = false;\r\n\r\n        //client = cubert-landing\r\n        this.hssEdClientId = '39b11001-4269-4b26-a138-db50c2bbdf69';\r\n        this.hssEdClientSecret = '40015df8-380c-456e-abf1-254791cb9509';\r\n        this.hssEdClientPlatform = 'web';\r\n\r\n        let metaSiteName = document.querySelector('meta[name=hssedsitename]');\r\n        if (metaSiteName) {\r\n            this.siteName = metaSiteName.getAttribute('content');\r\n            if (this.siteName.startsWith('@')) {\r\n                this.siteName = \"nursececlub.com\";\r\n                // NURSING = nursececlub.com accelerated-ce.com ohionursepracticeactce.com newyorkinfectioncontrolce.com paact31training.com cnaceu.com oregon-afh-ce.com michigan-implicit-bias-training.com\r\n                // ACCOUNTING = cpelite.com, affordable-new-jersey-law-ethics.com\r\n            }\r\n        }\r\n\r\n        let metaSessionId = document.querySelector('meta[name=hssedsessionid]');\r\n        if (metaSessionId) {\r\n            this.sessionId = metaSessionId.getAttribute('content');\r\n            if (this.sessionId.startsWith('@'))\r\n                this.sessionId = null;\r\n        }\r\n\r\n        let metaSlot = document.querySelector('meta[name=hssedslot]');\r\n        if (metaSlot) {\r\n            this.slot = metaSlot.getAttribute('content');\r\n        }\r\n        if (!this.slot || this.slot.startsWith('@')) {\r\n            this.slot = 'prod';\r\n        }\r\n\r\n        let metaLocal = document.querySelector('meta[name=hssedlocal]');\r\n        if (metaLocal) {\r\n            this.local = metaLocal.getAttribute('content');\r\n        }\r\n        if (this.local) {\r\n            if (this.local.startsWith('@')) {\r\n                this.local = false;\r\n            }\r\n            else {\r\n                this.local = this.local.toLowerCase() === \"true\";\r\n            }\r\n        } else {\r\n            this.local = false;\r\n        }\r\n\r\n        if (this.local) {\r\n            this.apiUrl = \"http://localhost:7002\";\r\n        }\r\n        else {\r\n            // const hostname = window.location.hostname;\r\n            // const apiHostname = `api.${hostname}`;\r\n            // this.apiAliasUrl = `${window.location.protocol}//${apiHostname}`;\r\n\r\n            switch (this.slot) {\r\n                case 'dev':\r\n                    this.apiUrl = \"https://hssedapi.azurewebsites.net\";\r\n                    //this.apiUrl = \"https://api-dev.hssed.com\";\r\n                    break;\r\n                case 'staging':\r\n                    this.apiUrl = \"https://api-staging.hssed.com\";\r\n                    break;\r\n                default:\r\n                    this.apiUrl = \"https://hssedapi.azurewebsites.net\";\r\n                    break;\r\n            }\r\n        }\r\n\r\n        let metaColor = document.querySelector('meta[name=hssedcolor]');\r\n        if (metaColor) {\r\n            this.color = metaColor.getAttribute('content');\r\n            document.documentElement.style.setProperty('--spinner-color', this.color);\r\n        }\r\n        if (!this.color || this.color.startsWith('@')) {\r\n            this.color = null; //DEFAULT COLOR\r\n            document.documentElement.style.setProperty('--spinner-color', \"#4AD5C6\");\r\n        }\r\n\r\n        console.warn(`http-service.siteName = ${this.siteName}`)\r\n        console.warn(`http-service.slot = ${this.slot}`)\r\n        console.warn(`http-service.local = ${this.local}`)\r\n        console.warn(`http-service.apiUrl = ${this.apiUrl}`)\r\n    }\r\n\r\n    setApiRoutingCookie() {\r\n        // Set a cookie named `routeBackend` with a value `appServer` that expires in 1 day\r\n        const cookieName = \"routeBackend\";\r\n        const cookieValue = \"appServer\";\r\n        const expiration = new Date();\r\n        expiration.setDate(expiration.getDate() + 1); // 1 day expiration\r\n\r\n        document.cookie = `${cookieName}=${cookieValue}; path=/`;\r\n    }\r\n\r\n    selectApi(selection = null) {\r\n\r\n        if (selection != null) {\r\n            this.httpSelector = selection.httpSelector;\r\n            this.apiSelector = selection.apiSelector;\r\n\r\n            console.log('httpService.selectApi() httpSelector = ', this.httpSelector);\r\n            console.log('httpService.selectApi() apiSelector = ', this.apiSelector);\r\n\r\n            return Promise.resolve(true);\r\n        }\r\n        else {\r\n            logService.clear();\r\n            logService.add('httpService.selectApi() return checkApi()');\r\n            this.startTime = performance.now();\r\n\r\n            return this.checkApi()\r\n                .then(success => {\r\n                    if (success) {\r\n                        let elapsedTime = (performance.now() - this.startTime);\r\n                        let reportError = !this.useFetchUseApi;\r\n                        let message = '';\r\n                        message += !this.useFetchUseApi ? 'no-fetch-api' : '';\r\n                        message += !this.useAxiosUseApi ? ', no-axios-api' : '';\r\n                        message += !this.useFetchUseApp ? ', no-fetch-app' : '';\r\n                        message += !this.useAxiosUseApp ? ', no-axios-app' : '';\r\n                        message += !this.useFetchUseApi ? (this.useThirdParty ? '' : ', no-third-party') : '';\r\n                        message += !this.useFetchUseApi ? (this.getVersion ? ', got-version' : ', no-get-version') : '';\r\n                        let noApi = false;\r\n\r\n                        if (this.useFetchUseApi) {\r\n                            this.httpSelector = HttpSelector.UseFetch;\r\n                            this.apiSelector = ApiSelector.UseApi;\r\n                        }\r\n                        else if (this.useAxiosUseApi) {\r\n                            this.httpSelector = HttpSelector.UseAxios;\r\n                            this.apiSelector = ApiSelector.UseApi;\r\n                        }\r\n                        else if (this.useFetchUseApp) {\r\n                            this.httpSelector = HttpSelector.UseFetch;\r\n                            this.apiSelector = ApiSelector.UseApp;\r\n                        }\r\n                        else if (this.useAxiosUseApp) {\r\n                            this.httpSelector = HttpSelector.UseAxios;\r\n                            this.apiSelector = ApiSelector.UseApp;\r\n                        }\r\n                        else {\r\n                            noApi = true;\r\n                        }\r\n\r\n                        if (this.apiSelector == ApiSelector.UseApp) {\r\n                            this.setApiRoutingCookie();\r\n                        }\r\n\r\n                        if (message != '') {\r\n                            logService.add(`httpService.selectApi() ${message}`);\r\n\r\n                            console.log(`httpService.selectApi() ${message}`);\r\n                        }\r\n\r\n                        logService.add(`httpService.selectApi() httpSelector = ${this.httpSelector}`);\r\n                        logService.add(`httpService.selectApi() apiSelector = ${this.apiSelector}`);\r\n\r\n                        console.log('httpService.selectApi() httpSelector = ', this.httpSelector);\r\n                        console.log('httpService.selectApi() apiSelector = ', this.apiSelector);\r\n\r\n                        if (reportError) {\r\n                            let errorModel = {\r\n                                status: noApi ? \"failed\" : \"workaround\",\r\n                                source: \"selectApi\",\r\n                                message: message,\r\n                                lineNo: 0,\r\n                                columnNo: 0,\r\n                                stack: \"No stack trace\",\r\n                                url: window.location.href,\r\n                                referrer: document.referrer,\r\n                                elapsedTime: elapsedTime,\r\n                                log: logService.log\r\n                            };\r\n                            this.reportError(errorModel);\r\n                        }\r\n\r\n                        return true;\r\n                    }\r\n                    console.error('httpService.selectApi() failed', logService.log);\r\n                    return false;\r\n                })\r\n                .catch((e) => {\r\n                    console.error('httpService.selectApi() error', logService.log);\r\n                    return false;\r\n                });\r\n        }\r\n    }\r\n\r\n    checkApi() {\r\n        //console.log('calling tryUseFetchUseApi...');\r\n        logService.add('httpService.checkApi() return tryUseFetchUseApi()');\r\n        return this.tryUseFetchUseApi()\r\n            .then(success => {\r\n                this.useFetchUseApi = success;\r\n                //console.log('calling tryUseAxiosUseApi...');\r\n                logService.add('httpService.checkApi() return tryUseAxiosUseApi()');\r\n                return this.tryUseAxiosUseApi()\r\n                    .then(success => {\r\n                        this.useAxiosUseApi = success;\r\n                        //console.log('calling tryUseFetchUseApp...');\r\n                        logService.add('httpService.checkApi() return tryUseFetchUseApp()');\r\n                        return this.tryUseFetchUseApp()\r\n                            .then(success => {\r\n                                this.useFetchUseApp = success;\r\n                                //console.log('calling tryUseFetchUseApp...');\r\n                                logService.add('httpService.checkApi() return tryUseAxiosUseApp()');\r\n                                return this.tryUseAxiosUseApp()\r\n                                    .then(success => {\r\n                                        this.useAxiosUseApp = success;\r\n                                        //console.log('calling tryThirdPartyRequest...');\r\n                                        return this.tryThirdPartyRequest()\r\n                                            .then(success => {\r\n                                                this.useThirdParty = success;\r\n                                                //console.log('calling tryGetVersion...');\r\n                                                return this.tryGetVersion()\r\n                                                    .then(success => {\r\n                                                        this.getVersion = success;\r\n\r\n                                                        return this.useFetchUseApi || this.useAxiosUseApi || this.useFetchUseApp || this.useAxiosUseApp;\r\n                                                    });\r\n                                            });\r\n                                    });\r\n                            });\r\n                    });\r\n            });\r\n    }\r\n\r\n    tryGetVersion() {\r\n        return this.tryGetVersionImpl()\r\n            .then((success) => {\r\n                if (success) {\r\n                    return true;\r\n                }\r\n                else {\r\n                    return false;\r\n                }\r\n            })\r\n            .catch((e) => {\r\n                return false;\r\n            });\r\n    }\r\n\r\n    tryGetVersionImpl() {\r\n        if (!this.useFetchUseApi) {\r\n            this.httpSelector = HttpSelector.UseFetch;\r\n            this.apiSelector = ApiSelector.UseApi;\r\n\r\n            const url = 'https://api.hssed.com/api/version';\r\n\r\n            const headers = {\r\n                'Content-type': 'text/plain'\r\n            };\r\n\r\n            let func = this.getHttpFunc('get');\r\n            if (func) {\r\n                return func(url, headers)\r\n                    .then(text => {\r\n                        logService.add(`httpService.tryGetVersion() then() returns ${text}`);\r\n                        return text;\r\n                    })\r\n                    .catch(error => {\r\n                        console.error('http-service.tryGetVersion() caught error  ', error);\r\n                        logService.add(`httpService.tryGetVersion() caught error = ${error}`);\r\n                        throw error;\r\n                    });\r\n            }\r\n            return Promise.reject(new Error('No http func'));\r\n        }\r\n        else {\r\n            return Promise.resolve(true);\r\n        }\r\n    }\r\n\r\n    tryThirdPartyRequest() {\r\n        return this.tryThirdPartyRequestImpl()\r\n            .then((success) => {\r\n                if (success) {\r\n                    return true;\r\n                }\r\n                else {\r\n                    return false;\r\n                }\r\n            })\r\n            .catch((e) => {\r\n                return false;\r\n            });\r\n    }\r\n\r\n    tryThirdPartyRequestImpl() {\r\n        if (!this.useFetchUseApi) {\r\n            this.httpSelector = HttpSelector.UseFetch;\r\n            this.apiSelector = ApiSelector.UseApi;\r\n\r\n            const url = 'https://jsonplaceholder.typicode.com/posts';\r\n\r\n            const headers = {\r\n                'Content-type': 'application/json; charset=UTF-8'\r\n            };\r\n\r\n            const body = {\r\n                title: 'foo',\r\n                body: 'bar',\r\n                userId: 1,\r\n            };\r\n\r\n            let func = this.getHttpFunc('post');\r\n            if (func) {\r\n                return func(url, headers, body)\r\n                    .then(json => {\r\n                        logService.add(`httpService.tryThirdPartyRequest() then() returns ${JSON.stringify(json)}`);\r\n                        return json;\r\n                    })\r\n                    .catch(error => {\r\n                        console.error('http-service.tryThirdPartyRequest() caught error  ', error);\r\n                        logService.add(`httpService.tryThirdPartyRequest() caught error = ${error}`);\r\n                        throw error;\r\n                    });\r\n            }\r\n            return Promise.reject(new Error('No http func'));\r\n        }\r\n        else {\r\n            return Promise.resolve(true);\r\n        }\r\n    }\r\n\r\n    tryUseFetchUseApi() {\r\n        this.httpSelector = HttpSelector.UseFetch;\r\n        this.apiSelector = ApiSelector.UseApi;\r\n        return this.getPreBootstrap();\r\n    }\r\n\r\n    tryUseAxiosUseApi() {\r\n        this.httpSelector = HttpSelector.UseAxios;\r\n        this.apiSelector = ApiSelector.UseApi;\r\n        return this.getPreBootstrap();\r\n    }\r\n\r\n    tryUseFetchUseApp() {\r\n        this.httpSelector = HttpSelector.UseFetch;\r\n        this.apiSelector = ApiSelector.UseApp;\r\n        return this.getPreBootstrap();\r\n    }\r\n\r\n    tryUseAxiosUseApp() {\r\n        this.httpSelector = HttpSelector.UseAxios;\r\n        this.apiSelector = ApiSelector.UseApp;\r\n        return this.getPreBootstrap();\r\n    }\r\n\r\n    getPreBootstrap() {\r\n        return this.getPreBootstrapImpl()\r\n            .then((success) => {\r\n                if (success) {\r\n                    return true;\r\n                }\r\n                else {\r\n                    return false;\r\n                }\r\n            })\r\n            .catch((e) => {\r\n                return false;\r\n            });\r\n    }\r\n\r\n    getPreBootstrapImpl() {\r\n        const url = `api/site/prebootstrap/${httpService.siteName}/cuberto`;\r\n        const body = {\r\n            \"useCache\": true,\r\n            \"useLanding\": true,\r\n            \"usePaymentOptions\": true,\r\n            \"useCatalog\": true,\r\n            \"usePages\": true,\r\n            \"useHeaderNavs\": true,\r\n            \"useFooterNavs\": true,\r\n            \"usePassTypes\": true,\r\n            \"useCourseBundleTypes\": true,\r\n            \"useGroupTypes\": true,\r\n            \"injectApiToken\": true,\r\n            \"injectImageSets\": true,\r\n            \"injectColors\": true,\r\n            \"injectImageUrls\": true,\r\n            \"injectImageBytes\": false\r\n        };\r\n\r\n        logService.add(`httpService.getPreBootstrap() return httpService.post() ${url}`);\r\n\r\n        return this.post(url, body, false)\r\n            .then(json => {\r\n                if (json && json.succeeded) {\r\n                    logService.add('httpService.getPreBootstrap() SUCCESS');\r\n                    return true;\r\n                }\r\n                else {\r\n                    if (json) {\r\n                        console.error(\"Cannot get pre bootstrap - json errors\", json.errors);\r\n\r\n                        logService.add('httpService.getPreBootstrapImpl() json errors');\r\n                        logService.add('httpService.getPreBootstrap() FAILED');\r\n                    }\r\n                    else {\r\n                        console.error(\"Cannot get pre bootstrap - null json\");\r\n\r\n                        logService.add('httpService.getPreBootstrapImpl() null json');\r\n                        logService.add('httpService.getPreBootstrap() FAILED');\r\n                    }\r\n                }\r\n                return Promise.reject(new Error(\"Failed to get pre bootstrap\"));\r\n            })\r\n            .catch(error => {\r\n                console.error('httpService.getPreBootstrapImpl() httpService.post() caught error = ', error);\r\n\r\n                logService.add(`httpService.getPreBootstrapImpl() httpService.post() caught error = ${error}`);\r\n                logService.add('httpService.getPreBootstrap() FAILED');\r\n                throw error;\r\n            });\r\n    }\r\n\r\n    isBot(userAgent) {\r\n        if (!userAgent) return false; // Ensure a valid userAgent is provided\r\n\r\n        // Common bot identifiers in user-agent strings\r\n        const botKeywords = [\r\n            \"bot\",\r\n            \"crawl\",\r\n            \"spider\",\r\n            \"slurp\",\r\n            \"bingpreview\",\r\n            \"mediapartners\", // Google AdSense\r\n            \"google\",        // General Google crawlers\r\n            \"yandex\",\r\n            \"baidu\",\r\n            \"duckduckbot\",\r\n            \"facebot\",\r\n            \"twitterbot\",\r\n            \"applebot\",\r\n            \"semrushbot\",\r\n            \"screaming frog\",\r\n            \"ahrefsbot\",\r\n            \"mj12bot\",\r\n            \"uptimerobot\",\r\n            \"curl\",          // Command-line tool often used for scraping\r\n            \"wget\",          // Command-line tool\r\n        ];\r\n\r\n        // Convert the user-agent to lowercase for case-insensitive matching\r\n        const lowerCaseUserAgent = userAgent.toLowerCase();\r\n\r\n        // Check if the user-agent contains any bot keywords\r\n        return botKeywords.some(keyword => lowerCaseUserAgent.includes(keyword));\r\n    }\r\n\r\n    getFetchImplementationIdentifier() {\r\n        const userAgent = navigator.userAgent;\r\n\r\n        // Modern browsers support userAgentData (more reliable than userAgent)\r\n        const browserInfo = navigator.userAgentData ? navigator.userAgentData.brands : null;\r\n\r\n        // Check for the presence of features tied to specific engines\r\n        const isChromiumBased =\r\n            !!window.chrome ||\r\n            (!!browserInfo && browserInfo.some(brand => brand.brand.includes(\"Chromium\")));\r\n\r\n        const isFirefox = userAgent.includes(\"Firefox\");\r\n        const isWebKit = userAgent.includes(\"AppleWebKit\") && !isChromiumBased;\r\n\r\n        if (isChromiumBased) {\r\n            return \"Chromium-based (Blink engine)\";\r\n        } else if (isFirefox) {\r\n            return \"Gecko-based (Firefox)\";\r\n        } else if (isWebKit) {\r\n            return \"WebKit-based (Safari)\";\r\n        } else if ('fetch' in window) {\r\n            return \"Unknown (Fetch API supported)\";\r\n        } else {\r\n            return \"Fetch API not supported\";\r\n        }\r\n    }\r\n\r\n    reportError(error) {\r\n        const url = 'api/reporterror';\r\n\r\n        if (!error.source) {\r\n            error.source = httpService.siteName;\r\n        }\r\n\r\n        if (!error.userAgent) {\r\n            error.userAgent = navigator.userAgent;\r\n        }\r\n        error.isBot = this.isBot(error.userAgent);\r\n\r\n        if (!error.fetchImplementation) {\r\n            error.fetchImplementation = this.getFetchImplementationIdentifier();\r\n        }\r\n\r\n        if (!error.connection) {\r\n            if ('connection' in navigator) {\r\n                const connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection;\r\n                error.connection = `type: ${connection.type || 'unknown'}, effectiveType: ${connection.effectiveType || 'unknown'}, downlink: ${connection.downlink || 'unknown'}, rtt: ${connection.rtt || 'unknown'}, saveData: ${connection.saveData || false}`;\r\n            } else {\r\n                error.connection = 'Network Information API is not supported';\r\n            }\r\n        }\r\n\r\n        console.error('httpService.reportError() = ', JSON.stringify(error, null, 2));\r\n\r\n        let func = this.getHttpFunc('postNoResponse');\r\n        if (func) {\r\n            const headers = this.getHeaders(false);\r\n\r\n            return func(url, headers, error)\r\n        }\r\n        return Promise.reject(new Error('No http func'));\r\n    }\r\n\r\n    getHttpFunc(method) {\r\n        switch (this.httpSelector) {\r\n            case HttpSelector.UseFetch:\r\n                switch (method) {\r\n                    case 'get':\r\n                        return fetchService.get.bind(fetchService);\r\n                    case 'post':\r\n                        return fetchService.post.bind(fetchService);\r\n                    case 'postNoResponse':\r\n                        return fetchService.postNoResponse.bind(fetchService);\r\n                    case 'put':\r\n                        return fetchService.put.bind(fetchService);\r\n                    case 'delete':\r\n                        return fetchService.delete.bind(fetchService);\r\n                }\r\n                return null;\r\n            case HttpSelector.UseAxios:\r\n                switch (method) {\r\n                    case 'get':\r\n                        return axiosService.get.bind(axiosService);\r\n                    case 'post':\r\n                        return axiosService.post.bind(axiosService);\r\n                    case 'postNoResponse':\r\n                        return axiosService.postNoResponse.bind(axiosService);\r\n                    case 'put':\r\n                        return axiosService.put.bind(axiosService);\r\n                    case 'delete':\r\n                        return axiosService.delete.bind(axiosService);\r\n                }\r\n                return null;\r\n        }\r\n        return null;\r\n    }\r\n\r\n    getEndpoint(url) {\r\n        if (url.startsWith('http')) {\r\n            return url;\r\n        }\r\n\r\n        switch (this.apiSelector) {\r\n            case ApiSelector.UseApi:\r\n                return `${this.apiUrl}/${url}`;\r\n            case ApiSelector.UseApp:\r\n                return url;\r\n        }\r\n        return null;\r\n    }\r\n\r\n    getHeaders(useAuth) {\r\n        let headers = {};\r\n        if (useAuth) {\r\n            headers[\"Authorization\"] = `Bearer ${httpService.apiToken}`;\r\n        }\r\n        headers[\"HssEdSiteName\"] = this.siteName;\r\n        headers[\"HssEdSessionId\"] = this.sessionId;\r\n        headers[\"HssEdClientId\"] = this.hssEdClientId;\r\n        headers[\"HssEdClientSecret\"] = this.hssEdClientSecret;\r\n        headers[\"HssEdClientPlatform\"] = this.hssEdClientPlatform;\r\n        headers[\"Content-Type\"] = \"application/json\";\r\n        return headers;\r\n    }\r\n\r\n    setSession(apiToken, sessionId, expiresIn = 3599) {\r\n        this.apiToken = apiToken;\r\n        this.sessionId = sessionId;\r\n        this.apiTokenExpire = (Date.now() / 1000) + expiresIn;\r\n\r\n        //console.log(`http-service.setSession: api token expires in ${expiresIn} seconds`);\r\n    }\r\n\r\n    refreshApiToken() {\r\n        //console.log('http-service.refreshApiToken...');\r\n\r\n        this.refreshingApiToken = true;\r\n\r\n        const url = 'api/identity/token';\r\n        const body = {};\r\n\r\n        return this.post(url, body, false)\r\n            .then(json => {\r\n                this.refreshingApiToken = false;\r\n                if (json && json.succeeded) {\r\n                    //console.log('http-service.refreshApiToken: got new api token', json);\r\n                    this.setSession(json.result.accessToken, this.sessionId, json.result.accessTokenLifetime);\r\n                    return json;\r\n                }\r\n                console.error('http-service.refreshApiToken: cannot get api token', json);\r\n                return json;\r\n            })\r\n            .catch(error => {\r\n                this.refreshingApiToken = false;\r\n                console.error('http-service.refreshApiToken: error in getting new api token...', error);\r\n                return Promise.reject(error);\r\n            });\r\n    }\r\n\r\n    verifyApiToken(verify = true) {\r\n        if (verify) {\r\n            if (this.apiToken) {\r\n                let expireInSeconds = this.apiTokenExpire - (Date.now() / 1000);\r\n                console.warn(`http-service.verifyApiToken: expires in ${expireInSeconds}`);\r\n                if (expireInSeconds < 0) {\r\n                    //api token has expired, so refresh\r\n                    return this.refreshApiToken();\r\n                }\r\n                //api token has not expired\r\n                return Promise.resolve({ succeeded: true });\r\n            }\r\n            console.error('http-service.verifyApiToken: missing apiToken');\r\n            //no api token\r\n            return Promise.resolve({ succeeded: false });\r\n        }\r\n        return Promise.resolve({ succeeded: true });\r\n    }\r\n\r\n    get(url, verify = true) {\r\n        logService.add('httpService.get() return verifyApiToken()');\r\n\r\n        return this.verifyApiToken(verify)\r\n            .then(result => {\r\n                if (result && result.succeeded) {\r\n                    const headers = this.getHeaders(verify);\r\n\r\n                    let endpoint = this.getEndpoint(url);\r\n                    if (endpoint) {\r\n                        let func = this.getHttpFunc('get');\r\n                        if (func) {\r\n                            return func(endpoint, headers)\r\n                                .then(response => {\r\n                                    logService.add('httpService.get() then() return');\r\n                                    return response;\r\n                                })\r\n                                .catch(error => {\r\n                                    console.error('http-service.get() caught error  ', error);\r\n                                    logService.add(`httpService.get() caught error = ${error}`);\r\n                                    throw error;\r\n                                });\r\n                        }\r\n                    }\r\n                    logService.add(`httpService.get() no get func`);\r\n                    return Promise.reject(new Error(`httpService.get() no get func`));\r\n                }\r\n                console.error(result);\r\n                logService.add(`httpService.get() verifyApiToken() bad result = ${result}`);\r\n                return Promise.reject(new Error(`httpService.get() verifyApiToken() bad result = ${result}`));\r\n            })\r\n            .catch(error => {\r\n                console.error('http-service.get() verifyApiToken() caught error  ', error);\r\n                logService.add(`httpService.get() verifyApiToken() caught error = ${error}`);\r\n                throw error;\r\n            });\r\n    }\r\n\r\n    post(url, body, verify = true) {\r\n        logService.add('httpService.post() return verifyApiToken()');\r\n\r\n        return this.verifyApiToken(verify)\r\n            .then(result => {\r\n                if (result && result.succeeded) {\r\n                    const headers = this.getHeaders(verify);\r\n\r\n                    logService.add('httpService.post() return fetch()');\r\n\r\n                    let endpoint = this.getEndpoint(url);\r\n                    if (endpoint) {\r\n                        let func = this.getHttpFunc('post');\r\n                        if (func) {\r\n                            return func(endpoint, headers, body)\r\n                                .then(response => {\r\n                                    logService.add('httpService.post() then() return');\r\n                                    return response;\r\n                                })\r\n                                .catch(error => {\r\n                                    console.error('http-service.post() caught error  ', error);\r\n                                    logService.add(`httpService.post() caught error = ${error}`);\r\n                                    throw error;\r\n                                });\r\n                        }\r\n                    }\r\n                    logService.add(`httpService.post() no post func`);\r\n                    return Promise.reject(new Error(`httpService.post() no post func`));\r\n                }\r\n                console.error(result);\r\n                logService.add(`httpService.post() verifyApiToken() bad result = ${result}`);\r\n                return Promise.reject(new Error(`httpService.post() verifyApiToken() bad result = ${result}`));\r\n            })\r\n            .catch(error => {\r\n                console.error('http-service.post() verifyApiToken() caught error  ', error);\r\n                logService.add(`httpService.post() verifyApiToken() caught error = ${error}`);\r\n                throw error;\r\n            });\r\n    }\r\n\r\n    postNoResponse(url, body, verify = true) {\r\n        return this.verifyApiToken(verify)\r\n            .then(result => {\r\n                if (result && result.succeeded) {\r\n                    const headers = this.getHeaders(verify);\r\n\r\n                    let endpoint = this.getEndpoint(url);\r\n                    if (endpoint) {\r\n                        let func = this.getHttpFunc('postNoResponse');\r\n                        if (func) {\r\n                            return func(endpoint, headers, body)\r\n                                .then(response => {\r\n                                    logService.add('httpService.postNoResponse() then() return');\r\n                                    return response;\r\n                                })\r\n                                .catch(error => {\r\n                                    console.error('http-service.postNoResponse() caught error  ', error);\r\n                                    logService.add(`httpService.postNoResponse() caught error = ${error}`);\r\n                                    throw error;\r\n                                });\r\n                        }\r\n                    }\r\n                    logService.add(`httpService.postNoResponse() no postNoResponse func`);\r\n                    return Promise.reject(new Error(`httpService.postNoResponse() no postNoResponse func`));\r\n                }\r\n                console.error(result);\r\n                logService.add(`httpService.postNoResponse() verifyApiToken() bad result = ${result}`);\r\n                return Promise.reject(new Error(`httpService.postNoResponse() verifyApiToken() bad result = ${result}`));\r\n            })\r\n            .catch(error => {\r\n                console.error('http-service.postNoResponse() verifyApiToken() caught error  ', error);\r\n                logService.add(`httpService.postNoResponse() verifyApiToken() caught error = ${error}`);\r\n                throw error;\r\n            });\r\n    }\r\n\r\n    put(url, body, verify = true) {\r\n        return this.verifyApiToken(verify)\r\n            .then(result => {\r\n                if (result && result.succeeded) {\r\n                    const headers = this.getHeaders(verify);\r\n\r\n                    let endpoint = this.getEndpoint(url);\r\n                    if (endpoint) {\r\n                        let func = this.getHttpFunc('put');\r\n                        if (func) {\r\n                            return func(endpoint, headers, body)\r\n                                .then(response => {\r\n                                    logService.add('httpService.put() then() return');\r\n                                    return response;\r\n                                })\r\n                                .catch(error => {\r\n                                    console.error('http-service.put() caught error  ', error);\r\n                                    logService.add(`httpService.put() caught error = ${error}`);\r\n                                    throw error;\r\n                                });\r\n                        }\r\n                    }\r\n                    logService.add(`httpService.put() no put func`);\r\n                    return Promise.reject(new Error(`httpService.put() no put func`));\r\n                }\r\n                console.error(result);\r\n                logService.add(`httpService.put() verifyApiToken() bad result = ${result}`);\r\n                return Promise.reject(new Error(`httpService.put() verifyApiToken() bad result = ${result}`));\r\n            })\r\n            .catch(error => {\r\n                console.error('http-service.put() verifyApiToken() caught error  ', error);\r\n                logService.add(`httpService.put() verifyApiToken() caught error = ${error}`);\r\n                throw error;\r\n            });\r\n    }\r\n\r\n    delete(url, body, verify = true) {\r\n        return this.verifyApiToken(verify)\r\n            .then(result => {\r\n                if (result && result.succeeded) {\r\n                    const headers = this.getHeaders(verify);\r\n\r\n                    let endpoint = this.getEndpoint(url);\r\n                    if (endpoint) {\r\n                        let func = this.getHttpFunc('delete');\r\n                        if (func) {\r\n                            return func(endpoint, headers, body)\r\n                                .then(response => {\r\n                                    logService.add('httpService.delete() then() return');\r\n                                    return response;\r\n                                })\r\n                                .catch(error => {\r\n                                    console.error('http-service.delete() caught error  ', error);\r\n                                    logService.add(`httpService.delete() caught error = ${error}`);\r\n                                    throw error;\r\n                                });\r\n                        }\r\n                    }\r\n                    logService.add(`httpService.delete() no delete func`);\r\n                    return Promise.reject(new Error(`httpService.delete() no delete func`));\r\n                }\r\n                console.error(result);\r\n                logService.add(`httpService.delete() verifyApiToken() bad result = ${result}`);\r\n                return Promise.reject(new Error(`httpService.delete() verifyApiToken() bad result = ${result}`));\r\n            })\r\n            .catch(error => {\r\n                console.error('http-service.delete() verifyApiToken() caught error  ', error);\r\n                logService.add(`httpService.delete() verifyApiToken() caught error = ${error}`);\r\n                throw error;\r\n            });\r\n    }\r\n}\r\n\r\nconst httpService = new HttpService();\r\nexport default httpService;\r\n\r\nexport { HttpSelector, ApiSelector };","const recaptchaCallbackName = 'setRecaptchaReady';\r\nconst ready = new Promise(resolve => window[recaptchaCallbackName] = resolve);\r\n\r\nclass RecaptchaService {\r\n\r\n    constructor() {\r\n        this._ready = false;\r\n        this._readyCallbacks = [];\r\n        this._siteKey = null;\r\n        \r\n        ready.then(() => {\r\n            this._ready = true;\r\n            //console.log('recaptcha3 ready...');\r\n            if (this._readyCallbacks.length > 0) {\r\n                this._readyCallbacks.forEach(cb => {\r\n                    window.grecaptcha.render(cb.element, {\r\n                        siteKey: this._siteKey,\r\n                        theme: cb.theme,\r\n                        callback: cb.callback\r\n                    });\r\n                });\r\n                this._readyCallbacks = [];\r\n            }\r\n        });\r\n    }\r\n\r\n    get siteKey() { return this._siteKey; }\r\n    set siteKey(value) {\r\n        //console.log('set siteKey...', value);\r\n        if (!this._ready && !this._siteKey) {\r\n            this._siteKey = value;\r\n\r\n            let script = document.createElement('script');\r\n            script.src = `https://www.google.com/recaptcha/api.js?onload=${recaptchaCallbackName}&render=${this._siteKey}`;\r\n            script.async = true;\r\n            script.defer = true;\r\n            document.head.appendChild(script);\r\n        }\r\n    }\r\n   \r\n    getToken(action = 'default') {\r\n        if (this._ready) {\r\n            //console.log('recaptcha3 getting token...');\r\n            return window.grecaptcha.execute(this.siteKey, { action: action });\r\n        } \r\n        else {\r\n            console.log('recaptcha3 not yet ready...');\r\n            return new Promise((resolve, reject) => {\r\n                if (this._ready) {\r\n                    //console.log('recaptcha3 now ready resolving...');\r\n                    resolve(window.grecaptcha.execute(this.siteKey, { action: action }));\r\n                } else {\r\n                    //console.log('recaptcha3 not yet ready rejecting...');\r\n                    reject(new Error('recaptcha3 not ready'));\r\n                }\r\n            });\r\n        }\r\n    }\r\n}\r\n\r\nconst recaptchaService = new RecaptchaService();\r\nexport default recaptchaService;","import httpService from './HttpService'\r\nimport recaptchaService from './RecaptchaService'\r\nimport logService from './LogService'\r\n// import axios from 'axios'\r\n\r\nclass BootstrapService {\r\n\r\n    constructor() {\r\n        this.data = null;\r\n\r\n        this.primaryColor = null;\r\n        this.secondaryColor = null;\r\n\r\n        this.defaultPlanType = null;\r\n        this.defaultStateName = null;\r\n\r\n        this.callback = null;\r\n    }\r\n\r\n    setCallback(callback) {\r\n        this.callback = callback;\r\n    }\r\n\r\n    \r\n    getBootstrap() {\r\n        const url = `api/site/bootstrap/${httpService.siteName}/cuberto`;\r\n        const body = {\r\n            \"useCache\": true,\r\n            \"useLanding\": true,\r\n            \"usePaymentOptions\": true,\r\n            \"useCatalog\": true,\r\n            \"usePages\": true,\r\n            \"useHeaderNavs\": true,\r\n            \"useFooterNavs\": true,\r\n            \"usePassTypes\": true,\r\n            \"useCourseBundleTypes\": true,\r\n            \"useGroupTypes\": true,\r\n            \"injectApiToken\": true,\r\n            \"injectImageSets\": true,\r\n            \"injectColors\": true,\r\n            \"injectImageUrls\": true,\r\n            \"injectImageBytes\": false\r\n        };\r\n\r\n        logService.clear();\r\n        logService.add('bootstrapService.getBootstrap() return httpService.post()');\r\n\r\n        return httpService.post(url, body, false)\r\n            .then(json => {\r\n                if (json && json.succeeded) {\r\n                    // HTTP & Recaptcha\r\n                    httpService.setSession(json.result.apiToken, json.result.sessionId, json.result.apiTokenLifetime);\r\n                    recaptchaService.siteKey = json.result.recaptchaSiteKey;\r\n\r\n                    // Data\r\n                    this.data = json.result;\r\n                    \r\n                    // Default Properties\r\n                    this.setDefaultProperties(json);\r\n\r\n                    // Single Course Id\r\n                    this.setSingleCourseId(json);\r\n\r\n                    // Colors\r\n                    this.setAllColors(json);\r\n\r\n                    // Callback\r\n                    if (this.callback) {\r\n                        return this.callback();\r\n                    }\r\n                    return true;\r\n                }\r\n                else {\r\n                    if (json) {\r\n                        console.error(\"Cannot get bootstrap - json errors\", json.errors);\r\n                        logService.add('bootstrapService.getBootstrap() json errors');\r\n                    }\r\n                    else {\r\n                        console.error(\"Cannot get bootstrap - null json\");\r\n                        logService.add('bootstrapService.getBootstrap() null json');\r\n                    }\r\n                }\r\n                return Promise.reject(new Error(\"Failed to get bootstrap data\"));\r\n            })\r\n            .catch(error => {\r\n                console.error('bootstrapService.getBootstrap() httpService.post() caught error = ', error);\r\n                logService.add(`bootstrapService.getBootstrap() httpService.post() caught error = ${error}`);\r\n                throw error;\r\n            });\r\n    }\r\n\r\n    setDefaultProperties(json) {\r\n        if (json.result.landing.sections) {\r\n            let plansSection = json.result.landing.sections.find(s => s.name === \"plans\");\r\n            if (plansSection) {\r\n                let plans = plansSection.plans;\r\n                if (plans) {\r\n                    let defaultPlan = json.result.landing.sections.find(s => s.name === \"plans\").plans.find(p => p.isDefault === true);\r\n                    this.defaultPlanType = defaultPlan ? defaultPlan.type : null;\r\n                }\r\n            }\r\n        }\r\n        if (json.result.landing.pages) {\r\n            let requirementsPage = json.result.landing.pages.find(p => p.name === \"requirements\");\r\n            if (requirementsPage) {\r\n                let requirements = requirementsPage.requirements;\r\n                if (requirements) {\r\n                    let defaultState = requirements.find(r => r.isDefault === true);\r\n                    this.defaultStateName = defaultState ? defaultState.authorityName.toLowerCase() : null;\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    setSingleCourseId(json) {\r\n        if (json.result.courseCatalog && json.result.courseCatalog.courses && json.result.courseCatalog.courses.length === 1) {\r\n            this.singleCourseId = json.result.courseCatalog.courses[0].id;\r\n        }\r\n    }\r\n\r\n    setAllColors(json) {\r\n        if (json.result.site) {\r\n            if (json.result.site.primaryColor) {\r\n                this.primaryColor = json.result.site.primaryColor;\r\n                document.documentElement.style.setProperty('--primary', json.result.site.primaryColor);\r\n                let rgb = this.hexToRgb(json.result.site.primaryColor);\r\n                if (rgb) {\r\n                    document.documentElement.style.setProperty('--primaryR', rgb.r);\r\n                    document.documentElement.style.setProperty('--primaryG', rgb.g);\r\n                    document.documentElement.style.setProperty('--primaryB', rgb.b);\r\n                }\r\n            }\r\n            if (json.result.site.secondaryColor) {\r\n                this.secondaryColor = json.result.site.secondaryColor;\r\n                document.documentElement.style.setProperty('--secondary', json.result.site.secondaryColor);\r\n                let rgb = this.hexToRgb(json.result.site.secondaryColor);\r\n                if (rgb) {\r\n                    document.documentElement.style.setProperty('--secondaryR', rgb.r);\r\n                    document.documentElement.style.setProperty('--secondaryG', rgb.g);\r\n                    document.documentElement.style.setProperty('--secondaryB', rgb.b);\r\n                }\r\n            }\r\n            if (json.result.site.primaryLightColor) {\r\n                document.documentElement.style.setProperty('--primary-light', json.result.site.primaryLightColor);\r\n                let rgb = this.hexToRgb(json.result.site.primaryLightColor);\r\n                if (rgb) {\r\n                    document.documentElement.style.setProperty('--primary-lightR', rgb.r);\r\n                    document.documentElement.style.setProperty('--primary-lightG', rgb.g);\r\n                    document.documentElement.style.setProperty('--primary-lightB', rgb.b);\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    hexToRgb(hex) {\r\n        var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n        return result ? {\r\n            r: parseInt(result[1], 16),\r\n            g: parseInt(result[2], 16),\r\n            b: parseInt(result[3], 16)\r\n        } : null;\r\n    }\r\n\r\n    getCreditsTerm(credits) {\r\n        if (credits === 1) {\r\n            return this.data.site.creditTerm;\r\n        }\r\n        else if (credits > 1) {\r\n            return this.data.site.creditsTerm;\r\n        }\r\n    }\r\n\r\n    getCETerm() {\r\n        if (this.data.site.ceTerm) {\r\n            return this.data.site.ceTerm;\r\n        }\r\n        else {\r\n            return \"CE\";\r\n        }\r\n    }\r\n\r\n    getCategoryTerm() {\r\n        if (this.data.site.getCategoryTerm) {\r\n            return this.data.site.getCategoryTerm\r\n        }\r\n        else {\r\n            return \"Category\"\r\n        }\r\n    }\r\n\r\n    getShowAddress() {\r\n        if (this.data.site) {\r\n            return this.data.site.showAddress\r\n        }\r\n        else {\r\n            return true\r\n        }\r\n    }\r\n\r\n    getShowReleaseDate() {\r\n        return this.data.site ? (this.data.site.showReleaseDate === false ? false : true) : true;\r\n    }\r\n\r\n    getPaymentOptions() {\r\n        return this.data.paymentOptions;\r\n    }\r\n}\r\n\r\nconst bootstrapService = new BootstrapService();\r\nexport default bootstrapService;","import React from 'react'\r\nimport './Navbar.scss'\r\nimport { Link } from 'react-router-dom'\r\n\r\nimport BubbleButton from '../BubbleButton/BubbleButton'\r\nimport { ReactComponent as Apple } from '../../../assets/apple.svg'\r\n// import { ReactComponent as Login } from './assets/login.svg'\r\n// import { ReactComponent as Register } from './assets/register.svg'\r\n\r\nimport bootstrapService from '../../../services/BootstrapService'\r\n\r\nclass Navbar extends React.Component {\r\n    // Constructor\r\n    constructor(props) {\r\n        super(props);\r\n\r\n        // Refs\r\n        this.navbar = null;\r\n\r\n        // State\r\n        this.scrollBarWidth = window.innerWidth - document.documentElement.clientWidth;\r\n        this.state = {\r\n            previousY: 0,\r\n            isMobileNavbarOpened: false,\r\n        }\r\n\r\n        // This Binding\r\n        this.scrollNavbar = this.scrollNavbar.bind(this);\r\n        this.toggleMobileNavbar = this.toggleMobileNavbar.bind(this);\r\n        this.clickHome = this.clickHome.bind(this);\r\n        this.clickTryForFree = this.clickTryForFree.bind(this);\r\n    }\r\n\r\n    // Lifecycle\r\n    componentDidMount() {\r\n        this.setupScrollAnimation()\r\n    }\r\n\r\n    // Helpers\r\n    setupScrollAnimation() {\r\n        window.addEventListener(\"scroll\", this.scrollNavbar);\r\n    }\r\n\r\n    showMobileNavbar() {\r\n        this.setState({ isMobileNavbarOpened: true });\r\n        document.body.classList.add(\"overflow-hidden\");\r\n        this.navbar.classList.add('-open');\r\n    }\r\n\r\n    hideMobilelNavbar() {\r\n        this.setState({ isMobileNavbarOpened: false });\r\n        document.body.classList.remove(\"overflow-hidden\");\r\n        this.navbar.classList.remove('-open');\r\n    }\r\n\r\n    toggleOverflowForModal() {\r\n        const style = getComputedStyle(this.navbar)\r\n        if (style.paddingRight === 0) {\r\n            this.navbar.style.paddingRight = `${this.scrollBarWidth}px`;\r\n        }\r\n        else {\r\n            this.navbar.style.paddingRight = 0;\r\n        }\r\n    }\r\n\r\n    // Event Handlers\r\n    scrollNavbar() {\r\n        if (this.navbar) {\r\n            const y = window.pageYOffset;\r\n\r\n            const isPageStart = y < 50;\r\n            if (y <= 10) {\r\n                this.navbar.classList.remove(\"-fixed\");\r\n            }\r\n\r\n            if (isPageStart || this.state.previousY > y) {\r\n                this.navbar.classList.remove(\"-hide\");\r\n            } else {\r\n                this.navbar.classList.add(\"-hide\", \"-fixed\");\r\n            }\r\n\r\n            this.setState({ previousY: y });\r\n        }\r\n    }\r\n\r\n    toggleMobileNavbar() {\r\n        if (this.state.isMobileNavbarOpened) {\r\n            this.hideMobilelNavbar();\r\n        } else {\r\n            this.showMobileNavbar();\r\n        }\r\n    }\r\n\r\n    clickHome() {\r\n        this.hideMobilelNavbar();\r\n        window.scrollTo({\r\n            top: 0,\r\n            left: 0,\r\n            behavior: \"smooth\",\r\n        });\r\n    }\r\n\r\n    clickTryForFree() {\r\n        this.hideMobilelNavbar();\r\n\r\n        if (this.props.clickTry) {\r\n            this.props.clickTry();\r\n        }\r\n    }\r\n\r\n    // Component\r\n    render() {        \r\n        const { backgroundColor, activeLink } = this.props;\r\n\r\n        const navs = bootstrapService.data.landing.headers;\r\n        const logo = bootstrapService.data.site.logoUrl;\r\n        const pages = bootstrapService.data.landing.pages;\r\n\r\n        const appStoreData = bootstrapService.data.landing.sections.find(s => s.name === \"appStore\");\r\n        const appleUrl = appStoreData ? appStoreData.appleUrl : null;\r\n\r\n        const tryForFreeData = bootstrapService.data.landing.sections.find(s => s.name === \"tryForFree\");\r\n        const tryForFreeLabel = tryForFreeData && tryForFreeData.actionLabel ? tryForFreeData.actionLabel : 'Try For Free';\r\n\r\n        const defaultPlanType = bootstrapService.defaultPlanType;\r\n        const defaultStateName = bootstrapService.defaultStateName;\r\n\r\n        const ceTerm = bootstrapService.getCETerm();\r\n\r\n        return (\r\n            <div className={\"a4-navbar \" + (backgroundColor ? backgroundColor : \"\")} ref={div => this.navbar = div}>\r\n                <div className=\"a4-navbar-container\">\r\n                    <div className=\"a4-navbar-brand\">\r\n                        <Link to=\"/\" onClick={this.clickHome}>\r\n                            <div className=\"-logo\">\r\n                                <img src={logo} alt=\"\" />\r\n                            </div>\r\n                        </Link>\r\n                    </div>\r\n                    <ul className=\"a4-navbar-menu\">\r\n                        {\r\n                            navs.find(n => n === \"approvals\") &&\r\n                            <li className={\"a4-navbar-menu-item\" + (activeLink === \"approvals\" ? \" -active\" : \"\")}>\r\n                                <Link to=\"/approvals\">Our Approvals</Link>\r\n                            </li>\r\n                        }\r\n                        {\r\n                            navs.find(n => n === \"courses\") &&\r\n                            <li className={\"a4-navbar-menu-item\" + (activeLink === \"courses\" ? \" -active\" : \"\")}>\r\n                                {\r\n                                    bootstrapService.singleCourseId &&\r\n                                    <Link to={`/course/${bootstrapService.singleCourseId}`}>The Course</Link>\r\n                                }\r\n                                {\r\n                                    !bootstrapService.singleCourseId &&\r\n                                    <Link to=\"/courses\">Our Courses</Link>\r\n                                }\r\n                            </li>\r\n                        }\r\n                        {\r\n                            navs.find(n => n === \"pricing\") &&\r\n                            <li className={\"a4-navbar-menu-item\" + (activeLink === \"pricing\" ? \" -active\" : \"\")}>\r\n                                <Link to={`/pricing/${defaultPlanType}`}>Pricing</Link>\r\n                            </li>\r\n                        }\r\n                        {\r\n                            navs.find(n => n === \"requirements\") &&\r\n                            <li className={\"a4-navbar-menu-item\" + (activeLink === \"requirements\" ? \" -active\" : \"\")}>\r\n                                <Link to={`/requirements/${defaultStateName}`}>{ceTerm} Requirements</Link>\r\n                            </li>\r\n                        }\r\n                        {\r\n                            navs.map(name => {\r\n                                if (!['approvals','courses','pricing','requirements','try-for-free','no-login','no-register'].includes(name)) {\r\n                                    const page = pages.find(p => p.name === name);\r\n                                    return <li className={\"a4-navbar-menu-item\" + (activeLink === name ? \" -active\" : \"\")}><Link to={`/${name}`}>{page.header}</Link></li>;\r\n                                }\r\n                            })\r\n                        }\r\n                    </ul>\r\n                    <div className=\"a4-navbar-navigation\">\r\n                        <div className=\"a4-navbar-account\">\r\n                            <ul className=\"a4-navbar-account-base-list\">\r\n                                {\r\n                                    !navs.find(n => n === \"no-login\") &&\r\n                                    <li className={\"a4-navbar-account-base-list-item\" + (activeLink === \"login\" ? \" -active\" : \"\")}>\r\n                                        <Link to=\"/login\">Login</Link>\r\n                                    </li>\r\n                                }\r\n                                {\r\n                                    !navs.find(n => n === \"no-register\") &&\r\n                                    <li className={\"a4-navbar-account-base-list-item\" + (activeLink === \"register\" ? \" -active\" : \"\")}>\r\n                                        <Link to=\"/register\">Sign Up</Link>\r\n                                    </li>\r\n                                }\r\n                            </ul>\r\n                        </div>\r\n                        {\r\n                            navs.find(n => n === \"try-for-free\") &&\r\n                            <>\r\n                                {\r\n                                    this.props.clickTry &&\r\n                                    <div className=\"a4-navbar-try_free\" onClick={this.clickTryForFree}>\r\n                                        <BubbleButton className=\"-secondary\">{tryForFreeLabel}</BubbleButton>\r\n                                    </div>\r\n                                }\r\n                                {\r\n                                    !this.props.clickTry &&\r\n                                    <div className=\"a4-navbar-try_free\">\r\n                                        <Link to={{pathname: \"/\", state: {tryForFree: true}}} onClick={this.clickTryForFree}>\r\n                                            <BubbleButton className=\"-secondary\">{tryForFreeLabel}</BubbleButton>\r\n                                        </Link>\r\n                                    </div>\r\n                                }\r\n                            </>\r\n                            \r\n                        }\r\n                        <div className=\"a4-navbar-control\">\r\n                            {\r\n                                appleUrl &&\r\n                                <div className=\"a4-navbar-control-item\">\r\n                                    <a href={appleUrl}>\r\n                                        <BubbleButton className=\"a4-btn_store\">\r\n                                            <div className=\"a4-btn_store-icon\">\r\n                                                <svg className=\"a4-svgsprite -app-store\">\r\n                                                    <Apple />\r\n                                                </svg>\r\n                                            </div>\r\n                                            <div className=\"a4-btn_store-text\">Available in <b>App Store</b></div>\r\n                                        </BubbleButton>\r\n                                    </a>\r\n                                </div>\r\n                            }\r\n                        </div>\r\n                        <div className=\"a4-navbar-menu-toggle\" onClick={this.toggleMobileNavbar}>\r\n                            <button className=\"a4-btn a4-btn-burger\" type=\"button\" role=\"navigation\" aria-label=\"Open navigation\">\r\n                                <span className=\"backdrop\"></span>\r\n                                <span className=\"burger\"><span className=\"middle\"></span></span>\r\n                            </button>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div className=\"a4-navbar-nav\">\r\n                    <div className=\"a4-navbar-nav-filler\"></div>\r\n                    <div className=\"a4-navbar-nav-content\">\r\n                        <div className=\"a4-navbar-nav-body\">\r\n                            <div className=\"a4-navbar-nav-body-inner\">\r\n                                <ul className=\"a4-navbar-nav-list\">\r\n                                    {\r\n                                        navs.find(n => n === \"approvals\") &&\r\n                                        <li className={\"a4-navbar-nav-list-item\"  + (activeLink === \"approvals\" ? \" -active\" : \"\")}>\r\n                                            <Link to=\"/approvals\" onClick={this.toggleMobileNavbar}>Our Approvals</Link>\r\n                                        </li>\r\n                                    }\r\n                                    {\r\n                                        navs.find(n => n === \"courses\") &&\r\n                                        <li className={\"a4-navbar-nav-list-item\" + (activeLink === \"courses\" ? \" -active\" : \"\")}>\r\n                                            {\r\n                                                bootstrapService.singleCourseId &&\r\n                                                <Link to={`/course/${bootstrapService.singleCourseId}`} onClick={this.toggleMobileNavbar}>The Course</Link>\r\n                                            }\r\n                                            {\r\n                                                !bootstrapService.singleCourseId &&\r\n                                                <Link to=\"/courses\" onClick={this.toggleMobileNavbar}>Our Courses</Link>\r\n                                            }\r\n                                            \r\n                                        </li>\r\n                                    }\r\n                                    {\r\n                                        navs.find(n => n === \"pricing\") &&\r\n                                        <li className={\"a4-navbar-nav-list-item\" + (activeLink === \"pricing\" ? \" -active\" : \"\")}>\r\n                                            <Link to={`/pricing/${defaultPlanType}`} onClick={this.toggleMobileNavbar}>Pricing</Link>\r\n                                        </li>\r\n                                    }\r\n                                    {\r\n                                        navs.find(n => n === \"requirements\") &&\r\n                                        <li className={\"a4-navbar-nav-list-item\" + (activeLink === \"requirements\" ? \" -active\" : \"\")}>\r\n                                            <Link to={`/requirements/${defaultStateName}`} onClick={this.toggleMobileNavbar}>{ceTerm} Requirements</Link>\r\n                                        </li>\r\n                                    }\r\n                                    {\r\n                                        navs.map(name => {\r\n                                            if (!['approvals','courses','pricing','requirements','try-for-free','no-login','no-register'].includes(name)) {\r\n                                                const page = pages.find(p => p.name === name);\r\n                                                return <li className={\"a4-navbar-menu-item\" + (activeLink === name ? \" -active\" : \"\")}><Link to={`/${name}`}>{page.header}</Link></li>;\r\n                                            }\r\n                                        })\r\n                                    }\r\n                                    {\r\n                                        !navs.find(n => n === \"no-login\") &&\r\n                                        <li className={\"a4-navbar-nav-list-item\" + (activeLink === \"login\" ? \" -active\" : \"\")} id=\"nav-login\">\r\n                                            <Link to=\"/login\" onClick={this.toggleMobileNavbar}>Login</Link>\r\n                                        </li>\r\n                                    }\r\n                                    {\r\n                                        !navs.find(n => n === \"no-register\") &&\r\n                                        <li className={\"a4-navbar-nav-list-item\" + (activeLink === \"register\" ? \" -active\" : \"\")} id=\"nav-reg\">\r\n                                            <Link to=\"/register\" onClick={this.toggleMobileNavbar}>Sign Up</Link>\r\n                                        </li>\r\n                                    }\r\n                                </ul>\r\n                            </div>\r\n                        </div>\r\n                        {\r\n                            navs.find(n => n === \"try-for-free\") &&\r\n                            <div className=\"a4-navbar-nav-footer lg_hidden\">\r\n                                <div className=\"a4-navbar-nav-footer-inner\">\r\n                                    {\r\n                                        this.props.clickTry &&\r\n                                        <div onClick={this.clickTryForFree}>\r\n                                            <button className=\"a4-btn -secondary\">{tryForFreeLabel}</button>\r\n                                        </div>\r\n                                    }\r\n                                    {\r\n                                        !this.props.clickTry &&\r\n                                        <Link to={{pathname: \"/\", state: {tryForFree: true}}} onClick={this.clickTryForFree}>\r\n                                            <button className=\"a4-btn -secondary\">{tryForFreeLabel}</button>\r\n                                        </Link>\r\n                                    }\r\n                                </div>\r\n                            </div>\r\n                        }\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        )\r\n    }\r\n}\r\n\r\nexport default Navbar;","import React from 'react'\r\nimport './Exposition.scss'\r\nimport { Link } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport BubbleButton from '../../shared/BubbleButton/BubbleButton'\r\n\r\nclass Exposition extends React.Component {\r\n    // Component\r\n    render() {\r\n        const { headers, body, actionLabel, actionLink, imageUrl, imageBackgroundUrl } = this.props.data;\r\n        const type = this.props.type;\r\n        const highlighted = this.props.highlighted;\r\n\r\n        return (\r\n            <div className={\"a4-exposition \" + (type ? \"-\" + type + \" \" : \"\") + (highlighted ? \"-highlighted\" : \"\")}>\r\n                <div className=\"a4-exposition-container\">\r\n                    <div className=\"a4-exposition-content\">\r\n                        <div className=\"a4-exposition-info\">\r\n                            <h1 className=\"a4-exposition-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>{headers[0]} <span className=\"text-primary\">{headers[1]} </span>{headers[2]}</h1>\r\n                            <p className=\"a4-exposition-description\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1300\">{body}</p>\r\n                            <div className=\"a4-exposition-control\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1400\">\r\n                                <Link to={actionLink ? actionLink : \"\"}>\r\n                                    <BubbleButton className=\"-primary\">{actionLabel} </BubbleButton>\r\n                                </Link>\r\n                            </div>\r\n                        </div>\r\n                        <div className=\"a4-exposition-illustration\">\r\n                            {\r\n                                imageBackgroundUrl && <img src={imageBackgroundUrl} className=\"a4-exposition-illustration-background\" alt=\"\" />\r\n                            }\r\n                            <img src={imageUrl} data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-easing=\"ease-out-quad\" alt=\"\" />\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        )\r\n    }\r\n}\r\n\r\nexport default Exposition;","import React from 'react'\r\nimport './List.scss'\r\nimport { Link } from 'react-router-dom'\r\nimport gsap from 'gsap'\r\nimport { ScrollTrigger } from 'gsap/ScrollTrigger'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport BubbleButton from '../../shared/BubbleButton/BubbleButton'\r\n\r\nclass List extends React.Component {\r\n    // Constructor\r\n    constructor(props) {\r\n        super(props);\r\n\r\n        // GSAP\r\n        gsap.registerPlugin(ScrollTrigger);\r\n\r\n        // Refs\r\n        this.body = null;\r\n        this.info = null;\r\n    }\r\n\r\n    // Lifecycle\r\n    componentDidMount() {\r\n        this.setupListScroll()\r\n    }\r\n\r\n    // Helpers\r\n    setupListScroll() {\r\n        ScrollTrigger.matchMedia({\r\n            \"(min-width: 768px)\": () => {\r\n                ScrollTrigger.create({\r\n                    trigger: this.body,\r\n                    pin: this.info,\r\n                    start: () => `top center`,\r\n                    end: () => `bottom center+=${this.info ? this.info.offsetHeight : 0}px`,\r\n                    scrub: true,\r\n                });\r\n            },\r\n        });\r\n    }\r\n\r\n    // Component\r\n    render() {\r\n        const { headers, body, actionLabel, actionLink } = this.props.data;\r\n        const type = this.props.type;\r\n        const highlighted = this.props.highlighted;\r\n\r\n        return (\r\n            <div className={(\"a4-list -\" + type) + (highlighted ? \" -highlighted\" : \"\")}>\r\n                <div className=\"a4-list-container\">\r\n                    <div className=\"a4-list-content\">\r\n                        <div className=\"a4-list-body\" ref={div => this.body = div}>\r\n                            <div className=\"a4-list-info\" ref={div => this.info = div}>\r\n                                <h2 className=\"a4-list-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                    {headers[0]} <span className=\"text-primary\">{headers[1]}</span> {headers[2]}\r\n                                </h2>\r\n                                <p className=\"a4-list-description\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1300\">{body}</p>\r\n                                {\r\n                                    actionLink && \r\n                                    <div className=\"a4-list-info-control\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1400\">\r\n                                        <Link to={actionLink}>\r\n                                            <BubbleButton className=\"-primary\">{actionLabel}</BubbleButton>\r\n                                        </Link>\r\n                                    </div>\r\n                                }\r\n                            </div>\r\n                            <ul className=\"a4-list-items\">\r\n                                {this.props.children}\r\n                            </ul>\r\n                            {\r\n                                actionLink && \r\n                                <div className=\"a4-list-control\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                    <Link to={actionLink}>\r\n                                        <BubbleButton className=\"-primary\">{actionLabel}</BubbleButton>\r\n                                    </Link>\r\n                                </div>\r\n                            }\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        )\r\n    }\r\n}\r\n\r\nexport default List;","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEwIiBoZWlnaHQ9IjIxMCIgdmlld0JveD0iMCAwIDIxMCAyMTAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQo8cmVjdCB3aWR0aD0iMjEwIiBoZWlnaHQ9IjIxMCIgcng9IjMwIiBmaWxsPSJ3aGl0ZSIvPg0KPHJlY3Qgd2lkdGg9IjIxMCIgaGVpZ2h0PSIyMTAiIHJ4PSIzMCIgZmlsbD0iIzI0RDhDNSIgZmlsbC1vcGFjaXR5PSIwLjE1Ii8+DQo8Y2lyY2xlIGN4PSI4My4xMTYxIiBjeT0iOTAuMjc2OCIgcj0iNC45OTEwNyIgc3Ryb2tlPSIjMjREOEM1IiBzdHJva2Utd2lkdGg9IjMiLz4NCjxwYXRoIGQ9Ik04My4zNDgxIDEyNC44M0gxMjcuNjgzQzEyOS44NDQgMTI0LjgzIDEzMS4yOTYgMTIyLjYxNiAxMzAuNDM1IDEyMC42MzRMMTE4Ljk4OSA5NC4zMDk1QzExOC4wNjUgOTIuMTgzOCAxMTUuMTgyIDkxLjg2NDYgMTEzLjgxNSA5My43MzY2TDEwMC45OCAxMTEuMzE2QzEwMC4wMTUgMTEyLjYzNyA5OC4xNjg0IDExMi45NDIgOTYuODMwMiAxMTJMOTEuNTQ2NyAxMDguMjgyQzkwLjEwOTQgMTA3LjI3IDg4LjExNDQgMTA3LjcwNiA4Ny4yMjg5IDEwOS4yMjRMODAuNzU2OCAxMjAuMzE5Qzc5LjU5MDEgMTIyLjMxOSA4MS4wMzI3IDEyNC44MyA4My4zNDgxIDEyNC44M1oiIHN0cm9rZT0iIzI0RDhDNSIgc3Ryb2tlLXdpZHRoPSIzIi8+DQo8cmVjdCB4PSI2My41IiB5PSI3NC41IiB3aWR0aD0iODMiIGhlaWdodD0iNjEuNSIgcng9IjUuNSIgc3Ryb2tlPSIjMjREOEM1IiBzdHJva2Utd2lkdGg9IjMiLz4NCjwvc3ZnPg0K\"","import React from 'react'\r\nimport { Link } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport courseImage from '../../../../assets/course-plug.svg'\r\n\r\nimport bootstrapService from '../../../../services/BootstrapService'\r\n\r\nclass CourseItem extends React.Component {\r\n    // Component\r\n    render() {\r\n        const { courseId, title, description, imageUrl, credits } = this.props.data;\r\n\r\n        const length = imageUrl ? 150 : 250;\r\n        const shortDescription = description ? description.substring(0, length).split(\" \").slice(0, -1).join(\" \") + \"...\" : null;\r\n\r\n        return (\r\n            <li className=\"a4-list-items-item\">\r\n                <Link to={`/course/${courseId}`}>\r\n                    {\r\n                        imageUrl &&\r\n                        <div className=\"a4-list-items-item-image\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"700\">\r\n                            <img src={imageUrl ? imageUrl : courseImage} alt=\"\" />\r\n                        </div>\r\n                    }\r\n                    <div className=\"a4-list-items-item-info\">\r\n                        <h3 className=\"a4-list-items-item-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1300\">{title}</h3>\r\n                        <div className=\"a4-list-items-item-details\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1400\">\r\n                            <div className=\"a4-list-items-item-details-label\">{bootstrapService.getCreditsTerm(2)}:</div>\r\n                            <span>{credits.toFixed(1)}</span>\r\n                        </div>\r\n                        <p className=\"a4-list-items-item-description -courses\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1400\">{shortDescription}</p>\r\n                    </div>\r\n                </Link>\r\n            </li>\r\n        )\r\n    }\r\n}\r\n\r\nexport default CourseItem;","import React from 'react'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nclass HowItWorksItem extends React.Component {\r\n    // Component\r\n    render() {\r\n        const { header, body } = this.props.data;\r\n        \r\n        return (\r\n            <li className=\"a4-list-items-item\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                <div className=\"a4-list-items-item-number\"></div>\r\n                <div className=\"a4-list-items-item-info\">\r\n                    <h3 className=\"a4-list-items-item-title\">{header}</h3>\r\n                    <p className=\"a4-list-items-item-description\">{body}</p>\r\n                </div>\r\n            </li>\r\n        )\r\n    }\r\n}\r\n\r\nexport default HowItWorksItem;","import React from 'react'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nclass WhyUsItem extends React.Component {\r\n    // Component\r\n    render() {\r\n        const { header, body, imageUrl } = this.props.data;\r\n\r\n        return (\r\n            <li className=\"a4-list-items-item\">\r\n                <div className=\"a4-list-items-item-image\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"700\">\r\n                    <img src={imageUrl} alt=\"\" />\r\n                </div>\r\n                <div className=\"a4-list-items-item-info\">\r\n                    <div className=\"a4-list-items-item-info\">\r\n                        <h3 className=\"a4-list-items-item-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1300\">{header}</h3>\r\n                        <p className=\"a4-list-items-item-description\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1400\">{body}</p>\r\n                    </div>\r\n                </div>\r\n            </li>\r\n        )\r\n    }\r\n}\r\n\r\nexport default WhyUsItem;","import React from 'react'\r\nimport './SingleCourse.scss'\r\nimport { Link } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport BubbleButton from '../../shared/BubbleButton/BubbleButton'\r\n\r\nimport bootstrapService from '../../../services/BootstrapService'\r\n\r\nclass SingleCourse extends React.Component {\r\n    // Component\r\n    render() {\r\n        const { headers } = this.props.data;\r\n        const { courseId, title, credits, releaseDate, description, imageUrl, schedules } = this.props.course;\r\n\r\n        const length = imageUrl ? 200 : 300;\r\n        const shortDescription = description.substring(0, length).split(\" \").slice(0, -1).join(\" \") + \"...\";\r\n\r\n        const showReleaseDate = bootstrapService.getShowReleaseDate();\r\n\r\n        return (\r\n            <div className=\"a4-single-course -highlighted\">\r\n                <div className=\"a4-single-course-container\">\r\n                    <div className=\"a4-single-course-column\">\r\n                        <h1 className=\"a4-single-course-header\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>{headers[0]} <span className=\"text-primary\">{headers[1]}</span></h1>\r\n                        <div className=\"a4-single-course-content\">\r\n                            <div className=\"a4-single-course-details\">\r\n                                <h1 className=\"a4-single-course-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>{title}</h1>\r\n                                <div className=\"a4-single-course-info\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1200\">\r\n                                    <div className=\"a4-single-course-info-item\">\r\n                                        <div className=\"a4-single-course-info-label\">{bootstrapService.getCreditsTerm(credits)}:</div>\r\n                                        <span>{credits.toFixed(1)}</span>\r\n                                    </div>\r\n                                    <div className=\"a4-single-course-info-item -right\">\r\n                                    {\r\n                                        !schedules && showReleaseDate && releaseDate &&\r\n                                        <>\r\n                                            <div className=\"a4-single-course-info-label\">Publish Date:</div>\r\n                                            <span>{new Date(releaseDate).toDateString().split(' ').slice(1).join(' ')}</span>\r\n                                        </>\r\n                                    }\r\n                                    {\r\n                                        schedules &&\r\n                                        <>\r\n                                            <div className=\"a4-single-course-info-label\">Next Session:</div>\r\n                                            <span>{new Date(schedules[0].startDate).toLocaleDateString(\"en-US\", {weekday: 'long', month: 'short', day: 'numeric'})}</span>\r\n                                        </>\r\n                                    }  \r\n                                    </div>\r\n                                </div>\r\n                                <p className=\"a4-single-course-description\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1300\">{shortDescription}</p>\r\n                                <div className=\"a4-single-course-control\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1400\">\r\n                                    <Link to={`/course/${courseId}`}>\r\n                                        <BubbleButton className=\"-primary\">View Course</BubbleButton>\r\n                                    </Link>\r\n                                </div>\r\n                            </div>\r\n                            <div className=\"a4-single-course-illustration\">\r\n                                <img src={imageUrl} data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-easing=\"ease-out-quad\" alt=\"\" />\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        )\r\n    }\r\n}\r\n\r\nexport default SingleCourse;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n  d: \"M.58.49A2.47,2.47,0,0,0,0,2.24V29.76a2.47,2.47,0,0,0,.58,1.75l.1.08L16.27,16.18v-.36L.68.4Z\",\n  fill: \"#00ceff\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n  d: \"M21.47,21.32l-5.2-5.14v-.36l5.2-5.14.12.06,6.16,3.47c1.76,1,1.76,2.6,0,3.59l-6.16,3.45Z\",\n  fill: \"#ffe300\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n  d: \"M21.59,21.25,16.27,16,.58,31.51a2.08,2.08,0,0,0,2.62.07L21.59,21.25\",\n  fill: \"#ff3a44\"\n});\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n  d: \"M21.59,10.74,3.2.41A2.09,2.09,0,0,0,.58.49L16.27,16Z\",\n  fill: \"#00f085\"\n});\n\nfunction SvgGoogle(_ref, svgRef) {\n  var title = _ref.title,\n      titleId = _ref.titleId,\n      props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n    viewBox: \"0 0 29.07 32\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _ref2, _ref3, _ref4, _ref5);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgGoogle);\nexport default \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjkuMDcgMzIiPg0KICA8cGF0aCBkPSJNLjU4LjQ5QTIuNDcsMi40NywwLDAsMCwwLDIuMjRWMjkuNzZhMi40NywyLjQ3LDAsMCwwLC41OCwxLjc1bC4xLjA4TDE2LjI3LDE2LjE4di0uMzZMLjY4LjRaIiBmaWxsPSIjMDBjZWZmIi8+DQogIDxwYXRoIGQ9Ik0yMS40NywyMS4zMmwtNS4yLTUuMTR2LS4zNmw1LjItNS4xNC4xMi4wNiw2LjE2LDMuNDdjMS43NiwxLDEuNzYsMi42LDAsMy41OWwtNi4xNiwzLjQ1WiIgZmlsbD0iI2ZmZTMwMCIvPg0KICA8cGF0aCBkPSJNMjEuNTksMjEuMjUsMTYuMjcsMTYsLjU4LDMxLjUxYTIuMDgsMi4wOCwwLDAsMCwyLjYyLjA3TDIxLjU5LDIxLjI1IiBmaWxsPSIjZmYzYTQ0Ii8+DQogIDxwYXRoIGQ9Ik0yMS41OSwxMC43NCwzLjIuNDFBMi4wOSwyLjA5LDAsMCwwLC41OC40OUwxNi4yNywxNloiIGZpbGw9IiMwMGYwODUiLz4NCjwvc3ZnPg==\";\nexport { ForwardRef as ReactComponent };","import React from 'react'\r\nimport './AppStore.scss'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport BubbleButton from '../../shared/BubbleButton/BubbleButton'\r\nimport { ReactComponent as Apple } from '../../../assets/apple.svg'\r\nimport { ReactComponent as Google } from '../../../assets/google.svg'\r\n\r\nclass AppStore extends React.Component {\r\n    // Component\r\n    render() {\r\n        const { headers, body, appleUrl, googleUrl, imageUrl } = this.props.data;\r\n\r\n        return (\r\n            <section className=\"a4-appstore\">\r\n                <div className=\"a4-appstore-container\">\r\n                    <div className=\"a4-appstore-content\">\r\n                        <div className=\"a4-appstore-info\">\r\n                            <div className=\"a4-appstore-title\">\r\n                                <h2 data-aos={isMobileOnly ? undefined : \"fade-up\"}><span className=\"text-primary\">{headers[0]} </span>{headers[1]}</h2>\r\n                            </div>\r\n                            <div className=\"a4-appstore-description\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1300\">\r\n                                <p>{body}</p>\r\n                            </div>\r\n                            <div className=\"a4-appstore-control\">\r\n                                {\r\n                                    appleUrl &&\r\n                                    <div className=\"a4-appstore-control-item\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1400\">\r\n                                        <a href={appleUrl}>\r\n                                            <BubbleButton className=\"a4-btn_store\">\r\n                                                <div className=\"a4-btn_store-icon\">\r\n                                                    <svg className=\"a4-svgsprite -app-store\">\r\n                                                        <Apple />\r\n                                                    </svg>\r\n                                                </div>\r\n                                                <div className=\"a4-btn_store-text\">Available in <b>App Store</b></div>\r\n                                            </BubbleButton>\r\n                                        </a>\r\n                                    </div>\r\n                                }\r\n                                {\r\n                                    googleUrl &&\r\n                                    <div className=\"a4-appstore-control-item\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1600\">\r\n                                        <a href={googleUrl}>\r\n                                            <BubbleButton className=\"a4-btn_store\">\r\n                                                <div className=\"a4-btn_store-icon\">\r\n                                                    <svg className=\"a4-svgsprite -gplay-store\">\r\n                                                        <Google />\r\n                                                    </svg>\r\n                                                </div>\r\n                                                <div className=\"a4-btn_store-text\">Get it on <b>Google Play</b></div>\r\n                                            </BubbleButton>\r\n                                        </a>\r\n                                    </div>\r\n                                }\r\n                            </div>\r\n                        </div>\r\n                        <div className=\"a4-appstore-gadget\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                            <img src={imageUrl} alt=\"\" />\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </section>\r\n        )\r\n    }\r\n}\r\n\r\nexport default AppStore;","import React from 'react'\r\nimport './Spacer.scss'\r\nimport { ScrollTrigger } from 'gsap/ScrollTrigger'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nclass Spacer extends React.Component {\r\n    // Component\r\n    render() {\r\n        const { imageUrl, imageBackgroundUrl } = this.props.data;\r\n        const type = this.props.type;\r\n        const backgroundColor = this.props.backgroundColor;\r\n\r\n        return (\r\n            <section className={`a4-spacer -${type}`}>\r\n                <div className=\"a4-spacer-container\">\r\n                    <div className={\"a4-spacer-filler \" + backgroundColor}></div>\r\n                    <div className=\"a4-spacer-content\">\r\n                        <div className=\"a4-spacer-content-wrapper\">\r\n                            {\r\n                                imageBackgroundUrl &&\r\n                                <img className=\"a4-spacer-content-background\" src={imageBackgroundUrl} alt=\"\" />\r\n                            }\r\n                            <img src={imageUrl} data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-easing=\"ease-out-quad\" alt=\"\" onLoad={() => ScrollTrigger.refresh()}/>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </section>\r\n        )\r\n    }\r\n}\r\n\r\nexport default Spacer;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"circle\", {\n  cx: 10,\n  cy: 10,\n  r: 10,\n  fill: \"#EB9191\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n  d: \"M9.15039 15.08V13.533H10.8374V15.08H9.15039ZM9.15039 12.56V5H10.8374V12.56H9.15039Z\",\n  fill: \"white\"\n});\n\nfunction SvgError(_ref, svgRef) {\n  var title = _ref.title,\n      titleId = _ref.titleId,\n      props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 20,\n    height: 20,\n    viewBox: \"0 0 20 20\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _ref2, _ref3);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgError);\nexport default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxjaXJjbGUgY3g9IjEwIiBjeT0iMTAiIHI9IjEwIiBmaWxsPSIjRUI5MTkxIi8+DQo8cGF0aCBkPSJNOS4xNTAzOSAxNS4wOFYxMy41MzNIMTAuODM3NFYxNS4wOEg5LjE1MDM5Wk05LjE1MDM5IDEyLjU2VjVIMTAuODM3NFYxMi41Nkg5LjE1MDM5WiIgZmlsbD0id2hpdGUiLz4NCjwvc3ZnPg0K\";\nexport { ForwardRef as ReactComponent };","import React from 'react'\r\nimport './FullNameInput.scss'\r\nimport $ from 'jquery'\r\n\r\nimport { ReactComponent as Error } from '../../../assets/error.svg'\r\n\r\nclass FullNameInput extends React.Component {\r\n\r\n    constructor(props) {\r\n        super(props);\r\n\r\n        // Refs\r\n        this.fullNameInput = null;\r\n        this.fullNameGroup = null;\r\n        this.firstNameInput = null;\r\n        this.middleNameInput = null;\r\n        this.lastNameInput = null;\r\n        this.lastNameInputTextField = null;\r\n\r\n        // State\r\n        this.state = {\r\n            useFullNameInput: true,\r\n            firstName: this.props.firstName,\r\n            middleName: this.props.middleName,\r\n            lastName: this.props.lastName,\r\n        }\r\n\r\n        // This Binding\r\n        this.checkFullNameInput = this.checkFullNameInput.bind(this);\r\n    }\r\n\r\n    // Lifecycle\r\n    componentDidMount() {\r\n        this.setupNameInputs();\r\n    }\r\n\r\n    // Helpers\r\n    setupNameInputs() {\r\n        // Timeout hack ensures function runs after Render (so that REFs are set)\r\n        setTimeout(() => {\r\n            if (this.state.firstName && this.state.middleName && this.state.lastName) {\r\n                console.log(\"full name\")\r\n                // Change Name Inputs\r\n                this.changeNameInputs();\r\n\r\n                // Update Parent Component (Form)\r\n                this.props.ignoreFullName();\r\n\r\n                // Update State\r\n                this.setState({ useFullNameInput: false });\r\n            }\r\n        }, 0);\r\n    }\r\n\r\n    changeNameInputs() {\r\n        // Hide Full Name\r\n        this.fullNameInput.classList.add(\"-disabled\");\r\n        this.fullNameInput.style.display = \"none\";\r\n\r\n        // Show First Name\r\n        this.firstNameInput.classList.remove(\"-disabled\");\r\n        this.firstNameInput.style.display = \"block\";\r\n\r\n        // Show Middle Name\r\n        this.middleNameInput.classList.remove(\"-disabled\");\r\n        this.middleNameInput.style.display = \"block\";\r\n\r\n        // Show Last Name\r\n        this.lastNameInput.classList.remove(\"-disabled\");\r\n        this.lastNameInput.style.display = \"block\";\r\n    }\r\n\r\n    // Event Handlers\r\n    checkFullNameInput(e) {\r\n        if (e.currentTarget.value.split(\" \").length > 2) {\r\n            // Change Name Inputs\r\n            this.changeNameInputs();\r\n\r\n            // Update Parent Component (Form)\r\n            this.props.ignoreFullName();\r\n\r\n            // Update State\r\n            this.setState({\r\n                useFullNameInput: false,\r\n                firstName: e.currentTarget.value.split(\" \")[0],\r\n                middleName: e.currentTarget.value.split(\" \")[1],\r\n            }, () => {\r\n                this.lastNameInputTextField.value = \"\";\r\n                this.lastNameInputTextField.focus();\r\n            });\r\n        }\r\n    }\r\n\r\n    hideInputs() {\r\n        if (this.state.useFullNameInput) {\r\n            this.fullNameInput.classList.add(\"-disabled\");\r\n            $(this.fullNameInput).hide(200);\r\n        }\r\n        else {\r\n            this.firstNameInput.classList.add(\"-disabled\");\r\n            this.middleNameInput.classList.add(\"-disabled\");\r\n            this.lastNameInput.classList.add(\"-disabled\");\r\n            $(this.fullNameGroup).hide(200);\r\n        }\r\n    }\r\n\r\n    showInputs() {\r\n        if (this.state.useFullNameInput) {\r\n            $(this.fullNameInput).show(0, () => {\r\n                this.fullNameInput.classList.remove(\"-disabled\");\r\n            });\r\n        }\r\n        else {\r\n            $(this.fullNameGroup).show(0, () => {\r\n                this.firstNameInput.classList.remove(\"-disabled\");\r\n                this.middleNameInput.classList.remove(\"-disabled\");\r\n                this.lastNameInput.classList.remove(\"-disabled\");\r\n            });\r\n        }\r\n    }\r\n\r\n    getFullName() {\r\n        if (this.state.firstName && this.state.middleName && this.state.lastName) {\r\n            return this.state.firstName + \" \" + this.state.middleName + \" \" + this.state.lastName;\r\n        }\r\n        else if (this.state.firstName && this.state.lastName) {\r\n            return this.state.firstName + \" \" + this.state.lastName\r\n        }\r\n        else {\r\n            return \"\";\r\n        }\r\n    }\r\n\r\n    render() {\r\n        const fullName = this.getFullName();\r\n\r\n        return (\r\n            <>\r\n                <div className=\"a4-input\" ref={div => this.fullNameInput = div}>\r\n                    <input name=\"fullName\" required placeholder=\"Full Name\" defaultValue={fullName} onChange={this.checkFullNameInput}/>\r\n                    <label htmlFor=\"fullName\">Full Name</label>\r\n                    <span className=\"a4-input-error\">Enter your full name</span>\r\n                    <svg className=\"a4-svgsprite -error text-secondary\">\r\n                        <Error />\r\n                    </svg>\r\n                </div>\r\n                <div className=\"a4-input-group\" ref={div => this.fullNameGroup = div}>\r\n                    <div className=\"a4-input firstName -disabled\" ref={div => this.firstNameInput = div}>\r\n                        <input name=\"firstName\" required placeholder=\"First Name\" defaultValue={this.state.firstName} />\r\n                        <label htmlFor=\"firstName\">First Name</label>\r\n                        <span className=\"a4-input-error\"></span>\r\n                        <svg className=\"a4-svgsprite -error text-secondary\">\r\n                            <Error />\r\n                        </svg>\r\n                    </div>\r\n                    <div className=\"a4-input middleName -disabled\" ref={div => this.middleNameInput = div}>\r\n                        <input name=\"middleName\" placeholder=\"Middle Name\" defaultValue={this.state.middleName} />\r\n                        <label htmlFor=\"middleName\">Middle Name</label>\r\n                        <span className=\"a4-input-error\"></span>\r\n                        <svg className=\"a4-svgsprite -error text-secondary\">\r\n                            <Error />\r\n                        </svg>\r\n                    </div>\r\n                    <div className=\"a4-input lastName -disabled\" ref={div => this.lastNameInput = div}>\r\n                        <input name=\"lastName\" required placeholder=\"Last Name\" defaultValue={this.state.lastName} ref={input => this.lastNameInputTextField = input} />\r\n                        <label htmlFor=\"lastName\">Last Name</label>\r\n                        <span className=\"a4-input-error\"></span>\r\n                        <svg className=\"a4-svgsprite -error text-secondary\">\r\n                            <Error />\r\n                        </svg>\r\n                    </div>\r\n                </div>\r\n            </>\r\n        )\r\n    }\r\n}\r\n\r\nexport default FullNameInput;","import * as jwt from 'jsrsasign'\r\n\r\nclass SessionService {\r\n\r\n    //save the user session in local storage so that the member site will see user is logged in\r\n    setLocalUserSession(json) {\r\n        if (json.succeeded) {\r\n            if (json.result) {\r\n                // could be LoginMemberResult (result.member has accessToken, result.Member has member info)\r\n                // could be Order (result has accessToken, result.memberDigest has member info)\r\n                \r\n                let accessTokenObject = null;\r\n                if (json.result.member && json.result.member.accessToken) {\r\n                    accessTokenObject = json.result.member;\r\n                }\r\n                else if (json.result.accessToken) {\r\n                    accessTokenObject = json.result;\r\n                }\r\n\r\n                let member = null;\r\n                let memberDigest = null;\r\n                if (json.result.member && json.result.member.accessToken) {\r\n                    member = json.result.member;          \r\n                }\r\n                else if (json.result.memberDigest) {\r\n                    memberDigest = json.result.memberDigest;\r\n                }\r\n\r\n                // console.log('accessTokenObject = ', accessTokenObject);\r\n                // console.log('member = ', member);\r\n                // console.log('memberDigest = ', memberDigest);\r\n                \r\n                if (accessTokenObject && (member || memberDigest)) {\r\n\r\n                    let session = {\r\n                        accessToken: accessTokenObject.accessToken,\r\n                        refreshToken: accessTokenObject.refreshToken,\r\n                        userSessionId: accessTokenObject.userSessionId\r\n                    };\r\n\r\n                    if (member) {\r\n                        session.firstName = member.firstName;\r\n                        session.lastName = member.lastName;\r\n                        session.disableAutoLogin = member.disableAutoLogin;\r\n                        session.requiresEmailConfirm = member.requiresEmailConfirm;\r\n                    }\r\n                    else if (memberDigest) {\r\n                        session.firstName = memberDigest.firstName;\r\n                        session.lastName = memberDigest.lastName;     \r\n                        session.disableAutoLogin = memberDigest.disableAutoLogin;\r\n                        session.requiresEmailConfirm = memberDigest.requiresEmailConfirm;\r\n                    }\r\n\r\n                    if (session.accessToken) {\r\n                        // let tokenHeader = jwt.KJUR.jws.JWS.readSafeJSONString(jwt.b64utoutf8(session.accessToken.split(\".\")[0]));\r\n                        let tokenPayload = jwt.KJUR.jws.JWS.readSafeJSONString(jwt.b64utoutf8(session.accessToken.split(\".\")[1]));\r\n                        session.accessTokenNotBefore = tokenPayload.nbf;\r\n                        session.accessTokenExpire = tokenPayload.exp;\r\n                        session.accessTokenExpireLocal = (Date.now() / 1000) + (tokenPayload.exp - tokenPayload.nbf);\r\n                        session.accessTokenName = tokenPayload.name;\r\n                        if (Array.isArray(tokenPayload.email)) {\r\n                            if (tokenPayload.email.length > 0) {\r\n                                session.name = tokenPayload.name;\r\n                                session.email = tokenPayload.email[0];\r\n                            }\r\n                        } \r\n                        else {\r\n                            session.name = tokenPayload.name;\r\n                            session.email = tokenPayload.email;\r\n                        }\r\n                    }\r\n\r\n                    let jsonSession = JSON.stringify(session);\r\n                    window.localStorage.setItem('userSession', jsonSession);\r\n\r\n                    //create user session cookie\r\n                    if (session.disableAutoLogin || session.requiresEmailConfirm || (session.email && session.email.startsWith('test_'))) {\r\n                        this.eraseUserSessionCookie();\r\n                    }\r\n                    else {\r\n                        this.setUserSessionCookie(session);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        return json;\r\n    }\r\n\r\n    setUserSessionCookie(session, days = 30) {\r\n        var expires = \"\";\r\n        if (days) {\r\n            var date = new Date();\r\n            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\r\n            expires = \"; expires=\" + date.toUTCString();\r\n        }\r\n        var cookieValue = encodeURIComponent(`at=${session.accessToken || ''};atl=${session.accessTokenExpire || ''}`);\r\n        document.cookie = '_us=' + cookieValue + expires + \"; path=/; SameSite\";\r\n    }\r\n\r\n    eraseUserSessionCookie() {\r\n        document.cookie = '_us=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';\r\n    }\r\n}\r\n\r\nconst sessionService = new SessionService();\r\nexport default sessionService;","import httpService from './HttpService'\r\nimport sessionService from './SessionService'\r\n\r\nexport const MemberType = {\r\n    Payment: 0,\r\n    Register: 1,\r\n    TryForFree: 2,\r\n}\r\n\r\nclass MemberService {\r\n\r\n    constructor() {\r\n        this.confirmEmailValidated = false;\r\n        this.completeProfileValidated = false;\r\n    }\r\n\r\n    goToMembers(successRedirect) {\r\n        //console.log('gotToMembers redirect = ', successRedirect);\r\n\r\n        window.location.replace(successRedirect ? successRedirect : '/members');\r\n    }\r\n\r\n    subscribe(subscribeRequest) {\r\n        const url = 'api/member/subscribe';\r\n\r\n        return httpService.post(url, subscribeRequest);\r\n    }\r\n\r\n    login(loginRequest) {\r\n        const url = 'api/member/login';\r\n\r\n        return httpService.post(url, loginRequest)\r\n            .then(json => {\r\n                if (json && json.succeeded) {\r\n                    sessionService.setLocalUserSession(json);\r\n                }\r\n                return json;\r\n            });\r\n    }\r\n\r\n    checkEmailInUse(checkEmailRequest) {\r\n        const url = 'api/member/email/inuse';\r\n\r\n        return httpService.post(url, checkEmailRequest)\r\n            .then(json => {\r\n                if (json && json.succeeded) {\r\n                    return json.result;\r\n                }\r\n                else {\r\n                    console.log(json.errors);\r\n                }\r\n            })\r\n    }\r\n\r\n    getMtcId() {\r\n        // Check local storage first\r\n        let mtcId = localStorage.getItem('mtc_id');\r\n        if (!mtcId) {\r\n            // Fallback to cookies if not in local storage\r\n            mtcId = document.cookie.split('; ').find(row => row.startsWith('mtc_id='))?.split('=')[1];\r\n            if (mtcId) {\r\n                // Sync to local storage for future access\r\n                localStorage.setItem('mtc_id', mtcId);\r\n            }\r\n        }\r\n        return mtcId;\r\n    }\r\n\r\n    register(registerRequest) {\r\n        const url = 'api/member/register';\r\n\r\n        registerRequest.requestType = 1;\r\n        registerRequest.confirmAccount = false;\r\n        registerRequest.autoLogin = true;\r\n        registerRequest.origin = window.location.origin;\r\n        registerRequest.timezoneOffset = -(new Date().getTimezoneOffset() / 60);\r\n        registerRequest.contactId = this.getMtcId();\r\n\r\n        return httpService.post(url, registerRequest)\r\n            .then(json => {                \r\n                if (json && json.succeeded) {\r\n                    sessionService.setLocalUserSession(json);\r\n                }\r\n                return json;\r\n            });\r\n    }\r\n\r\n    forgotPassword(forgotPasswordRequest) {\r\n        const url = 'api/member/requestresetpassword';\r\n\r\n        forgotPasswordRequest.origin = window.location.origin;\r\n\r\n        return httpService.post(url, forgotPasswordRequest);\r\n    }\r\n\r\n    resetPassword(resetPasswordRequest) {\r\n        const url = 'api/member/setresetpassword';\r\n\r\n        return httpService.post(url, resetPasswordRequest)\r\n            .then(json => {\r\n                if (json && json.succeeded) {\r\n                    sessionService.setLocalUserSession(json);\r\n                }\r\n                return json;\r\n            });\r\n    }\r\n\r\n    validateConfirmEmailToken(token) {\r\n        const url = 'api/member/confirmemail';\r\n        const body = {\r\n            \"confirmEmailToken\": token,\r\n            \"origin\": window.location.origin\r\n        };\r\n\r\n        // Reset\r\n        this.confirmEmailValidated = false;\r\n\r\n        return httpService.post(url, body)\r\n            .then(json => {\r\n                if (json && json.succeeded && json.result.status === 0) {\r\n                    this.confirmEmailValidated = true;\r\n                }\r\n\r\n                return json;\r\n            });\r\n    }\r\n\r\n    validateCompleteProfileToken(token) {\r\n        const url = 'api/member/validatecompleteprofile/${token}';\r\n        const body = {};\r\n\r\n        // Reset\r\n        this.completeProfileValidated = false;\r\n\r\n        return httpService.post(url, body)\r\n            .then(json => {\r\n                if (json && json.succeeded && json.result.status === 0) {\r\n                    this.completeProfileValidated = true;\r\n                }\r\n\r\n                return json;\r\n            });\r\n    }\r\n\r\n    completeProfile(completeProfileRequest) {\r\n        const url = 'api/member/completeprofile';\r\n\r\n        completeProfileRequest.origin = window.location.origin;\r\n        completeProfileRequest.timezoneOffset = -(new Date().getTimezoneOffset() / 60);\r\n        completeProfileRequest.contactId = this.getMtcId();\r\n\r\n        return httpService.post(url, completeProfileRequest)\r\n            .then(json => {\r\n                if (json && json.succeeded) {\r\n                    sessionService.setLocalUserSession(json);\r\n                }\r\n                return json;\r\n            });\r\n    }\r\n\r\n    validateMember(validateMemberRequest) {\r\n        const url = 'api/member/validate';\r\n\r\n        return httpService.post(url, validateMemberRequest);\r\n    }\r\n\r\n    validateJoinGroup(joinGroupRequest) {\r\n        const url = 'api/group/register/verify';\r\n        const body = {\r\n            recaptchaToken: joinGroupRequest.recaptchaToken,\r\n            registerCode: joinGroupRequest.groupCode,\r\n        };\r\n\r\n        return httpService.post(url, body);\r\n    }\r\n}\r\n\r\nconst memberService = new MemberService();\r\nexport default memberService;","import gsap from 'gsap'\r\n\r\nclass FormService {\r\n\r\n    // Submit Button\r\n    showLoadingButton(form) {\r\n        const button = form.querySelector(\".a4-form-submit\");\r\n        button.setAttribute(\"disabled\", true);\r\n        button.classList.add(\"-loading\");\r\n    }\r\n    \r\n    hideLoadingButton(form) {\r\n        const button = form.querySelector(\".a4-form-submit\");\r\n        button.classList.remove(\"-loading\");\r\n        button.removeAttribute(\"disabled\");\r\n    }\r\n\r\n    // Show/Hide Errors\r\n    showInputError(form, name, error) {\r\n        const inputs = form.querySelectorAll(\".a4-input\");\r\n        for (const inputDiv of inputs) {\r\n            const input = inputDiv.querySelector(\"input, textarea\");\r\n            if (input.name === name) {\r\n                const span = inputDiv.querySelector(\"span\");\r\n                span.innerText = error;\r\n                inputDiv.classList.add(\"-error\");\r\n                return;\r\n            }\r\n        }\r\n    }\r\n    \r\n    showFormError(form, error) {\r\n        const p = form.querySelector(\".a4-form-error\");\r\n        p.innerText = error;\r\n        gsap.to(p, {\r\n            display: \"block\",\r\n            duration: 0.2,\r\n        }, 0);\r\n    }\r\n    \r\n    hideAllErrors(form) {\r\n        const inputs = form.querySelectorAll(\".a4-input\");\r\n        for (const input of inputs) {\r\n            input.classList.remove(\"-error\");\r\n        }\r\n    \r\n        const error = form.querySelector(\".a4-form-error\");\r\n        if (error) {\r\n            error.innerText = \"\";\r\n            gsap.to(error, {\r\n                display: \"none\",\r\n                duration: 0.2,\r\n            }, 0);\r\n        }\r\n    }\r\n    \r\n    clearAllInputs(form) {\r\n        const inputs = form.querySelectorAll(\".a4-input\");\r\n        for (const inputDiv of inputs) {\r\n            const input = inputDiv.querySelector(\"input, textarea\");\r\n            input.value = \"\";\r\n        }\r\n    }\r\n    \r\n    // Error Validation\r\n    validate(form) {\r\n        let results = [];\r\n    \r\n        this.hideAllErrors(form);\r\n    \r\n        const inputs = form.querySelectorAll('.a4-input');\r\n        inputs.forEach((input) => {\r\n            if (!input.classList.contains(\"-disabled\")) {\r\n                const requiredOK = this.checkRequired(input);\r\n                const nameOK = this.checkName(input);\r\n                const emailOK = this.checkEmail(input);\r\n                const passwordOK = this.checkPassword(input);\r\n                const creditCardOK = this.checkCreditCard(input);\r\n                const expMonthOK = this.checkExpirationMonth(input);\r\n                const expYearOK = this.checkExpirationYear(input);\r\n                const cvvOK = this.checkCvv(input);\r\n                const numberOK = this.checkNumber(input);\r\n                const questionOK = this.checkQuestion(input);\r\n        \r\n                results.push(requiredOK && nameOK && emailOK && passwordOK && creditCardOK && expMonthOK && expYearOK && cvvOK && numberOK && questionOK);\r\n            }\r\n            else {\r\n                results.push(true);\r\n            }\r\n        });\r\n    \r\n        return results.every(i => i);\r\n    }\r\n    \r\n    checkRequired(input) {\r\n        const control = input.querySelector(\"input, textarea\");\r\n    \r\n        if (control ? control.attributes.required : false) {\r\n            if (control.value.trim() === \"\") {\r\n                input.classList.add(\"-error\");\r\n                return false;\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n    \r\n    checkName(input) {\r\n        const control = input.querySelector(\"input, textarea\");\r\n    \r\n        if (control) {\r\n            const name = control.getAttribute(\"name\");\r\n            const error = input.querySelector(\".a4-input-error\");\r\n\r\n            if (name === \"fullName\") {\r\n                error.innerText = \"Enter your full name\";\r\n\r\n                if(control.value !== \"\" && (control.value.split(\" \").length < 2 || control.value.split(\" \")[1] === \"\")) {\r\n                    error.innerText = \"Full name must be at least 2 words\";\r\n                    input.classList.add(\"-error\");\r\n                    return false;\r\n                }\r\n                else if (control.value !== \"\" && control.value.length > 70) {\r\n                    error.innerText = \"Name is too long\";\r\n                    input.classList.add(\"-error\");\r\n                    return false;\r\n                }\r\n            }\r\n            else if (name === \"firstName\" || name === \"middleName\" || name === \"lastName\") {\r\n                error.innerText = \"\";\r\n\r\n                if (control.value !== \"\" && control.value.length > 35) {\r\n                    error.innerText = \"Name is too long\";\r\n                    input.classList.add(\"-error\");\r\n                    return false;\r\n                }\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n    \r\n    checkEmail(input) {\r\n        const control = input.querySelector(\"input, textarea\");\r\n    \r\n        if (control ? control.getAttribute(\"name\") === \"email\" : false) {\r\n            const emailRegex = /^(([^<>()[\\]\\\\.,;:\\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,}))$/;\r\n            const error = input.querySelector(\".a4-input-error\");\r\n            error.innerText = \"Enter a valid email\";\r\n\r\n            if (control.value !== \"\" && control.value.length > 256) {\r\n                error.innerText = \"Email is too long\";\r\n                input.classList.add(\"-error\");\r\n                return false;\r\n            }\r\n    \r\n            if(control.value !== \"\" && !emailRegex.test(control.value.trim())) {\r\n                input.classList.add(\"-error\");\r\n                return false;\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n    \r\n    checkPassword(input) {\r\n        const control = input.querySelector(\"input, textarea\");\r\n    \r\n        if (control ? control.getAttribute(\"name\") === \"password\" || control.getAttribute(\"name\") === \"confirm\" : false) {\r\n            const error = input.querySelector(\".a4-input-error\");\r\n            error.innerText = \"Enter a valid password\";\r\n\r\n            if (control.value !== \"\" && control.value.length > 128) {\r\n                error.innerText = \"Password is too long\";\r\n                input.classList.add(\"-error\");\r\n                return false;\r\n            }\r\n    \r\n            if(control.value !== \"\" && control.value.length < 6) {\r\n                error.innerText = \"Password must be at least 6 characters\"\r\n                input.classList.add(\"-error\");\r\n                return false;\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n    \r\n    checkCreditCard(input) {\r\n        const control = input.querySelector(\"input, textarea\");\r\n    \r\n        if (control ? control.getAttribute(\"name\") === \"card\" : false) {\r\n            const error = input.querySelector(\".a4-input-error\");\r\n            error.innerText = \"Enter a valid credit card\";\r\n    \r\n            if(control.value !== \"\" && !this.isValidCreditCardNo(control.value)) {\r\n                input.classList.add(\"-error\");\r\n                return false;\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n    \r\n    isValidCreditCardNo(value) {\r\n        // accept only digits, dashes or spaces\r\n        if (/[^0-9-\\s]+/.test(value)) return false;\r\n        // The Luhn Algorithm. It's so pretty.\r\n        let nCheck = 0, bEven = false; // , nDigit = 0\r\n        value = value.replace(/\\D/g, \"\");\r\n        for (var n = value.length - 1; n >= 0; n--) {\r\n            let cDigit = value.charAt(n),\r\n            nDigit = parseInt(cDigit, 10);\r\n            if (bEven) {\r\n            if ((nDigit *= 2) > 9) nDigit -= 9;\r\n            }\r\n            nCheck += nDigit;\r\n            bEven = !bEven;\r\n        }\r\n        if ((nCheck % 10) === 0) {\r\n            if (value.length === 15 && (value.startsWith('34') || value.startsWith('37'))) {\r\n            //amex\r\n            return true;\r\n            }\r\n            else if ((value.length === 13 || value.length === 16) && value.startsWith('4')) {\r\n            //visa\r\n            return true;\r\n            }\r\n            else if ((value.length === 16) && (value.startsWith('51') || value.startsWith('52') || value.startsWith('53') || value.startsWith('54') || value.startsWith('55'))) {\r\n            //mastercard\r\n            return true;\r\n            }\r\n            else if ((value.length === 16 && value.startsWith('6011')) || (value.length === 15 && value.startsWith('5'))) {\r\n            //discover\r\n            return true;\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n    \r\n    checkExpirationMonth(input) {\r\n        const control = input.querySelector(\"input, textarea\");\r\n    \r\n        if (control ? control.getAttribute(\"name\") === \"mm\" : false) {\r\n            if(control.value !== \"\" && (isNaN(control.value) || (control.value < 1 || control.value > 12))) {\r\n                input.classList.add(\"-error\");\r\n                return false;\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n    \r\n    checkExpirationYear(input) {\r\n        const control = input.querySelector(\"input, textarea\");\r\n        if (control ? control.getAttribute(\"name\") === \"yyyy\" : false) {\r\n            if(control.value !== \"\" && (isNaN(control.value) || control.value.length !== 4 || (control.value < new Date().getFullYear()))) {\r\n                input.classList.add(\"-error\");\r\n                return false;\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n    \r\n    checkCvv(input) {\r\n        const control = input.querySelector(\"input, textarea\");\r\n    \r\n        if (control ? control.getAttribute(\"name\") === \"cvv\" : false) {\r\n            if(control.value !== \"\" && (isNaN(control.value) || (control.value.length < 3 || control.value.length > 4))) {\r\n                input.classList.add(\"-error\");\r\n                return false;\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n\r\n    checkNumber(input) {\r\n        const control = input.querySelector(\"input, textarea\");\r\n    \r\n        if (control ? control.getAttribute(\"name\") === \"numberOfMembers\" : false) {\r\n            const error = input.querySelector(\".a4-input-error\");\r\n            error.innerText = \"Enter the number of members\";\r\n\r\n            if(control.value !== \"\" && isNaN(control.value)) {\r\n                error.innerText = \"Enter a valid number\";\r\n                input.classList.add(\"-error\");\r\n                return false;\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n\r\n    checkQuestion(input) {\r\n        const control = input.querySelector(\"input, textarea\");\r\n    \r\n        if (control ? control.getAttribute(\"name\") === \"question\" : false) {\r\n            const error = input.querySelector(\".a4-input-error\");\r\n            error.innerText = \"Enter a valid question\";\r\n    \r\n            if(control.value === \"\") {\r\n                input.classList.add(\"-error\");\r\n                return false;\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n}\r\n\r\nconst formService = new FormService();\r\nexport default formService;","import React from 'react'\r\nimport './TryForFree.scss'\r\nimport { Link } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n \r\nimport FullNameInput from '../../shared/FullNameInput/FullNameInput'\r\nimport BubbleButton from '../../shared/BubbleButton/BubbleButton'\r\nimport { ReactComponent as Error } from '../../../assets/error.svg'\r\n\r\nimport memberService from '../../../services/MemberService'\r\nimport formService from '../../../services/FormService'\r\nimport recaptchaService from '../../../services/RecaptchaService'\r\nimport { MemberType } from '../../../services/MemberService'\r\n\r\nclass TryForFree extends React.Component {\r\n    // Constructor\r\n    constructor(props) {\r\n        super(props);\r\n\r\n        // Refs\r\n        this.form = null;\r\n\r\n        // State\r\n        this.state = {\r\n            useFullName: true,\r\n        }\r\n\r\n        // This Binding\r\n        this.ignoreFullName = this.ignoreFullName.bind(this);\r\n        this.submitForm = this.submitForm.bind(this);\r\n    }\r\n\r\n    // Event Handlers\r\n    ignoreFullName() {\r\n        this.setState({ useFullName: false });\r\n    }\r\n\r\n    submitForm(e) {\r\n        e.preventDefault();\r\n\r\n        const isFormValid = formService.validate(this.form);\r\n\r\n        const email = e.target.email.value.trim();\r\n        const password = e.target.password.value;\r\n        const confirm = e.target.confirm.value;\r\n        \r\n        let firstName = \"\";\r\n        let middleName = \"\";\r\n        let lastName = \"\";\r\n\r\n        if (this.state.useFullName) {\r\n            firstName = e.target.fullName.value.split(\" \")[0];\r\n            lastName = e.target.fullName.value.split(\" \")[1];\r\n        }\r\n        else {\r\n            firstName = e.target.firstName.value;\r\n            middleName = e.target.middleName.value;\r\n            lastName = e.target.lastName.value;\r\n        }\r\n\r\n        if (password !== confirm) {\r\n            formService.showInputError(this.form, \"confirm\", \"This password does not match\");\r\n            formService.hideLoadingButton(this.form);\r\n            return;\r\n        }\r\n\r\n        if(!isFormValid) return;\r\n\r\n        formService.showLoadingButton(this.form);\r\n\r\n        let memberRequest = {email, password, firstName, middleName, lastName};\r\n\r\n        recaptchaService.getToken(\"register\")\r\n        .then(token => {\r\n            memberRequest.recaptchaToken = token;\r\n            memberRequest.memberType = MemberType.TryForFree;\r\n            memberRequest.contactId = memberService.getMtcId();\r\n\r\n            memberService.checkEmailInUse(memberRequest)\r\n            .then((isInUse) =>  {\r\n                if (isInUse) {\r\n                    formService.hideAllErrors(this.form);\r\n                    formService.hideLoadingButton(this.form);\r\n                    formService.showInputError(this.form, \"email\", \"This email address is already taken\");\r\n                }\r\n                else {\r\n                    memberService.register(memberRequest)\r\n                    .then(json => {\r\n                        if (json.succeeded) {\r\n                            memberService.goToMembers(json.result.successRedirect);\r\n                        }\r\n                        else {\r\n                            formService.hideAllErrors(this.form);\r\n                            formService.hideLoadingButton(this.form);\r\n                            formService.showFormError(this.form, json.errors[0]);\r\n                        }\r\n                    });\r\n                }\r\n            })\r\n        })\r\n    }\r\n\r\n    // Component\r\n    render() {\r\n        const { headers, body, actionLabel } = this.props.data;\r\n        \r\n        return (\r\n            <section className=\"a4-create-account\" ref={this.props.innerRef}>\r\n                <div className=\"a4-create-account-container\">\r\n                    <div className=\"a4-create-account-content\">\r\n                        <div className=\"a4-create-account-info\">\r\n                            <h2 className=\"a4-create-account-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>{headers[0]} <span className=\"text-primary\">{headers[1]}</span> {headers[2]}</h2>\r\n                            <p className=\"a4-create-account-description\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>{body}</p>\r\n                        </div>\r\n                        <form className=\"a4-create-account-form\" data-aos={isMobileOnly ? undefined : \"fade-up\"} ref={form => this.form = form} onSubmit={this.submitForm}>\r\n                            <div className=\"a4-create-account-group\">\r\n                                <FullNameInput ignoreFullName={this.ignoreFullName} /> \r\n                            </div>\r\n                            <div className=\"a4-create-account-group\">\r\n                                <div className=\"a4-input\">\r\n                                    <input name=\"email\" type='email' required placeholder=\"E-mail address\" />\r\n                                    <label htmlFor=\"email\">E-mail address</label>\r\n                                    <span className=\"a4-input-error\">Enter a valid e-mail address</span>\r\n                                    <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                        <Error />\r\n                                    </svg>\r\n                                </div>\r\n                            </div>\r\n                            <div className=\"a4-create-account-group\">\r\n                                <div className=\"a4-input\">\r\n                                    <input name=\"password\" placeholder=\"Password\" required type=\"password\" />\r\n                                    <label htmlFor=\"password\">Password</label>\r\n                                    <span className=\"a4-input-error\">Enter a valid password</span>\r\n                                    <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                        <Error />\r\n                                    </svg>\r\n                                </div>\r\n                            </div>\r\n                            <div className=\"a4-create-account-group\">\r\n                                <div className=\"a4-input\">\r\n                                    <input name=\"confirm\" placeholder=\"Confirm Password\" required type=\"password\" />\r\n                                    <label htmlFor=\"password\">Confirm Password</label>\r\n                                    <span className=\"a4-input-error\">Enter a valid password</span>\r\n                                    <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                        <Error />\r\n                                    </svg>\r\n                                </div>\r\n                            </div>\r\n                            <p className=\"a4-form-error\"></p>\r\n                            <div className=\"a4-create-account-control\">\r\n                                <BubbleButton className=\"a4-form-submit -primary\" type=\"submit\" formNoValidate>\r\n                                    <b>{actionLabel}</b>\r\n                                </BubbleButton>\r\n                                <Link to=\"/login\" className=\"a4-already-have-acc\">Already have an account?</Link>\r\n                            </div>\r\n                            <div className=\"a4-create-account-terms\">\r\n                                By registering you agree to our &nbsp;\r\n                                <Link to=\"/terms-and-conditions\" className=\"md_inline\"><b>Terms of Use</b></Link>\r\n                            </div>\r\n                        </form>\r\n                    </div>\r\n                </div>\r\n            </section>\r\n        )\r\n    }\r\n}\r\n\r\nexport default React.forwardRef((props, ref) => <TryForFree \r\n  innerRef={ref} {...props}\r\n/>);","import React from 'react'\r\nimport './Plans.scss'\r\nimport { Link, withRouter } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nclass Plans extends React.Component {\r\n    // Component\r\n    render() {\r\n        const headers = this.props.data.headers;\r\n        const plans = this.props.data.plans;\r\n\r\n        return (\r\n            <section className=\"a4-find-plan\">\r\n                <div className=\"a4-find-plan-container\">\r\n                    <div className=\"a4-find-plan-content\">\r\n                        <div className=\"a4-find-plan-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                            <h1>{headers[0]} <span className=\"text-primary\">{headers[1]}</span></h1>\r\n                        </div>\r\n                        {/* ONLY 1 PLAN */}\r\n                        {\r\n                            this.props.data && plans.length === 1 && \r\n                            <ul className=\"a4-one-plan-list\">\r\n                            {\r\n                                plans.map((plan, index) => {\r\n                                    return <li className=\"a4-one-plan-list-item-wrapper\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay={`${100 + index * 150}`} data-aos-anchor-placement=\"top-bottom\" key={index}>\r\n                                        {\r\n                                            plan.type !== \"group-plans\" &&\r\n                                            <Link to={`/pricing/${plan.type}`}>\r\n                                                <div className=\"a4-one-plan-list-item -active\" data-type={plan.type}>\r\n                                                    <div className=\"a4-one-plan-list-item-image\">\r\n                                                        <img src={plan.imageUrl} width=\"153px\" height=\"147px\" alt=\"\" />\r\n                                                    </div>\r\n                                                    <div className=\"a4-one-plan-list-item-title\">\r\n                                                        <h4>{plan.title}</h4>\r\n                                                    </div>\r\n                                                    <div className=\"a4-one-plan-list-item-description\">\r\n                                                        <p>\r\n                                                            <span className=\"a4-one-plan-list-item-programs\">{plan.description}</span>\r\n                                                        </p>\r\n                                                    </div>\r\n                                                </div>\r\n                                            </Link>\r\n                                        }\r\n                                        {\r\n                                            plan.type === \"group-plans\" &&\r\n                                            <div className=\"a4-one-plan-list-item -active\" data-type={plan.type} onClick={this.props.openGroupPlanModal}>\r\n                                                <div className=\"a4-one-plan-list-item-image\">\r\n                                                    <img src={plan.imageUrl} width=\"153px\" height=\"147px\" alt=\"\" />\r\n                                                </div>\r\n                                                <div className=\"a4-one-plan-list-item-title\">\r\n                                                    <h4>{plan.title}</h4>\r\n                                                </div>\r\n                                                <div className=\"a4-one-plan-list-item-description\">\r\n                                                    <p>\r\n                                                        <span className=\"a4-three-plan-list-item-programs\">{plan.description}</span>\r\n                                                    </p>\r\n                                                </div>\r\n                                            </div>\r\n                                        }\r\n                                    </li>\r\n                                })\r\n                            }\r\n                            </ul>\r\n                        }\r\n                        {/* EVEN NUMBER OF PLANS */}\r\n                        {\r\n                            this.props.data && plans.length > 1 && plans.length % 2 === 0 && \r\n                            <ul className=\"a4-four-plan-list\">\r\n                            {\r\n                                plans.map((plan, index) => {\r\n                                    return <li className=\"a4-four-plan-list-item-wrapper\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay={`${100 + index * 150}`} data-aos-anchor-placement=\"top-bottom\" key={index}>\r\n                                        {\r\n                                            plan.type !== \"group-plans\" &&\r\n                                            <Link to={`/pricing/${plan.type}`}>\r\n                                                <div className=\"a4-four-plan-list-item -active\" data-type={plan.type}>\r\n                                                    <div className=\"a4-four-plan-list-item-image\">\r\n                                                        <img src={plan.imageUrl} width=\"153px\" height=\"147px\" alt=\"\" />\r\n                                                    </div>\r\n                                                    <div className=\"a4-four-plan-list-item-title\">\r\n                                                        <h4>{plan.title}</h4>\r\n                                                    </div>\r\n                                                    <div className=\"a4-four-plan-list-item-description\">\r\n                                                        <p>\r\n                                                            <span className=\"a4-three-plan-list-item-programs\">{plan.description}</span>\r\n                                                        </p>\r\n                                                    </div>\r\n                                                </div>\r\n                                            </Link>\r\n                                        }\r\n                                        {\r\n                                            plan.type === \"group-plans\" &&\r\n                                            <div className=\"a4-four-plan-list-item -active\" data-type={plan.type} onClick={this.props.openGroupPlanModal}>\r\n                                                <div className=\"a4-four-plan-list-item-image\">\r\n                                                    <img src={plan.imageUrl} width=\"153px\" height=\"147px\" alt=\"\" />\r\n                                                </div>\r\n                                                <div className=\"a4-four-plan-list-item-title\">\r\n                                                    <h4>{plan.title}</h4>\r\n                                                </div>\r\n                                                <div className=\"a4-four-plan-list-item-description\">\r\n                                                    <p>\r\n                                                        <span className=\"a4-three-plan-list-item-programs\">{plan.description}</span>\r\n                                                    </p>\r\n                                                </div>\r\n                                            </div>\r\n                                        }\r\n                                    </li>\r\n                                })\r\n                            }\r\n                            </ul>\r\n                        }\r\n                        {/* ODD NUMBER OF PLANS */}\r\n                        {\r\n                            this.props.data && plans.length > 1 && plans.length % 2 === 1 &&\r\n                            <ul className=\"a4-three-plan-list\">\r\n                            {\r\n                                plans.map((plan, index) => {\r\n                                    return <li className=\"a4-three-plan-list-item-wrapper\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay={`${100 + index * 150}`} data-aos-anchor-placement=\"top-bottom\" key={index}>\r\n                                        {\r\n                                            plan.type !== \"group-plans\" &&\r\n                                            <Link to={`/pricing/${plan.type}`}>\r\n                                                <div className=\"a4-three-plan-list-item -active\">\r\n                                                    <div className=\"a4-three-plan-list-item-image\">\r\n                                                        <img src={plan.imageUrl} alt=\"\" />\r\n                                                    </div>\r\n                                                    <div className=\"a4-three-plan-list-item-title\">\r\n                                                        <h4>{plan.title}</h4>\r\n                                                    </div>\r\n                                                    <div className=\"a4-three-plan-list-item-description\">\r\n                                                        <p>\r\n                                                            <span className=\"a4-three-plan-list-item-programs\">{plan.description}</span>\r\n                                                        </p>\r\n                                                    </div>\r\n                                                </div>\r\n                                            </Link>\r\n                                        }\r\n                                        {\r\n                                            plan.type === \"group-plans\" &&\r\n                                            <div className=\"a4-three-plan-list-item -active\" data-type={plan.type} onClick={this.props.openGroupPlanModal}>\r\n                                                <div className=\"a4-three-plan-list-item-image\">\r\n                                                    <img src={plan.imageUrl} alt=\"\" />\r\n                                                </div>\r\n                                                <div className=\"a4-three-plan-list-item-title\">\r\n                                                    <h4>{plan.title}</h4>\r\n                                                </div>\r\n                                                <div className=\"a4-three-plan-list-item-description\">\r\n                                                    <p>\r\n                                                        <span className=\"a4-three-plan-list-item-programs\">{plan.description}</span>\r\n                                                    </p>\r\n                                                </div>\r\n                                            </div>\r\n                                        }\r\n                                    </li>\r\n                                })  \r\n                            }                                \r\n                            </ul>\r\n                        }\r\n                    </div>\r\n                </div>\r\n            </section>\r\n        )\r\n    }\r\n}\r\n\r\nexport default withRouter(Plans);","import $ from 'jquery'\r\n\r\nwindow.$ = $;\r\nwindow.jQuery = $;\r\n\r\nexport default $;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n  d: \"M1.42847 7C0.876182 7 0.428467 7.44772 0.428467 8C0.428467 8.55228 0.876182 9 1.42847 9L1.42847 7ZM19.2784 8.70711C19.669 8.31658 19.669 7.68342 19.2784 7.29289L12.9145 0.928931C12.5239 0.538407 11.8908 0.538407 11.5003 0.928931C11.1097 1.31946 11.1097 1.95262 11.5003 2.34314L17.1571 8L11.5003 13.6569C11.1097 14.0474 11.1097 14.6805 11.5003 15.0711C11.8908 15.4616 12.5239 15.4616 12.9145 15.0711L19.2784 8.70711ZM1.42847 9L18.5713 9L18.5713 7L1.42847 7L1.42847 9Z\",\n  fill: \"current\"\n});\n\nfunction SvgArrowRight(_ref, svgRef) {\n  var title = _ref.title,\n      titleId = _ref.titleId,\n      props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    viewBox: \"0 0 20 16\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrowRight);\nexport default \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQo8cGF0aCBkPSJNMS40Mjg0NyA3QzAuODc2MTgyIDcgMC40Mjg0NjcgNy40NDc3MiAwLjQyODQ2NyA4QzAuNDI4NDY3IDguNTUyMjggMC44NzYxODIgOSAxLjQyODQ3IDlMMS40Mjg0NyA3Wk0xOS4yNzg0IDguNzA3MTFDMTkuNjY5IDguMzE2NTggMTkuNjY5IDcuNjgzNDIgMTkuMjc4NCA3LjI5Mjg5TDEyLjkxNDUgMC45Mjg5MzFDMTIuNTIzOSAwLjUzODQwNyAxMS44OTA4IDAuNTM4NDA3IDExLjUwMDMgMC45Mjg5MzFDMTEuMTA5NyAxLjMxOTQ2IDExLjEwOTcgMS45NTI2MiAxMS41MDAzIDIuMzQzMTRMMTcuMTU3MSA4TDExLjUwMDMgMTMuNjU2OUMxMS4xMDk3IDE0LjA0NzQgMTEuMTA5NyAxNC42ODA1IDExLjUwMDMgMTUuMDcxMUMxMS44OTA4IDE1LjQ2MTYgMTIuNTIzOSAxNS40NjE2IDEyLjkxNDUgMTUuMDcxMUwxOS4yNzg0IDguNzA3MTFaTTEuNDI4NDcgOUwxOC41NzEzIDlMMTguNTcxMyA3TDEuNDI4NDcgN0wxLjQyODQ3IDlaIiBmaWxsPSJjdXJyZW50Ii8+DQo8L3N2Zz4NCg==\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"circle\", {\n  cx: 25,\n  cy: 25,\n  r: 25,\n  fill: \"#F4FDFC\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"circle\", {\n  cx: 25,\n  cy: 19,\n  r: 3.75,\n  stroke: \"currentColor\",\n  strokeWidth: 2.5\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n  d: \"M34 33.9999C34 29.792 29.9706 26.3809 25 26.3809C20.0294 26.3809 16 29.792 16 33.9999\",\n  stroke: \"currentColor\",\n  strokeWidth: 2.5,\n  strokeLinecap: \"round\"\n});\n\nfunction SvgAvatarPlug(_ref, svgRef) {\n  var title = _ref.title,\n      titleId = _ref.titleId,\n      props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 50,\n    height: 50,\n    viewBox: \"0 0 50 50\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _ref2, _ref3, _ref4);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgAvatarPlug);\nexport default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHZpZXdCb3g9IjAgMCA1MCA1MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxjaXJjbGUgY3g9IjI1IiBjeT0iMjUiIHI9IjI1IiBmaWxsPSIjRjRGREZDIi8+DQo8Y2lyY2xlIGN4PSIyNSIgY3k9IjE5IiByPSIzLjc1IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyLjUiIC8+DQo8cGF0aCBkPSJNMzQgMzMuOTk5OUMzNCAyOS43OTIgMjkuOTcwNiAyNi4zODA5IDI1IDI2LjM4MDlDMjAuMDI5NCAyNi4zODA5IDE2IDI5Ljc5MiAxNiAzMy45OTk5IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPg0KPC9zdmc+DQo=\";\nexport { ForwardRef as ReactComponent };","import React from 'react'\r\nimport $ from './util/jqueryShim'\r\nimport 'owl.carousel'\r\nimport 'owl.carousel/dist/assets/owl.carousel.css'\r\nimport './Reviews.scss'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport { ReactComponent as ArrowRight } from './assets/arrow-right.svg'\r\nimport { ReactComponent as Avatar } from '../../../assets/avatar-plug.svg'\r\n\r\nimport bootstrapService from '../../../services/BootstrapService'\r\n\r\nclass Reviews extends React.Component {\r\n    // Constructor\r\n    constructor(props) {\r\n        super(props);\r\n\r\n        // Refs\r\n        this.carousel = null;\r\n\r\n        // This Binding\r\n        this.clickNextReview = this.clickNextReview.bind(this);\r\n    }\r\n\r\n    // Lifecycle\r\n    componentDidMount() {\r\n        this.setupCarousel();\r\n    }\r\n\r\n    // Helpers\r\n    setupCarousel() {\r\n        $(\".a4-client-reviews-list\").owlCarousel({\r\n            animateOut: \"azaza\",\r\n            smartSpeed: 700,\r\n            autoWidth: true,\r\n            margin: 26,\r\n        });\r\n    }\r\n\r\n    // Event Handlers\r\n    clickNextReview() {\r\n        $(this.carousel).trigger(\"next.owl.carousel\");\r\n    }\r\n\r\n    // Component\r\n    render() {\r\n        const reviewsData = bootstrapService.data.landing.sections.find(s => s.name === \"testimonials\");\r\n\r\n        const header = reviewsData ? reviewsData.header : null;\r\n        const body = reviewsData ? reviewsData.body : null;\r\n        const reviews = reviewsData ? reviewsData.testimonials : null;\r\n\r\n        return (\r\n            <>\r\n                {\r\n                    reviewsData &&\r\n                    <section className=\"a4-client-reviews\">\r\n                        <div className=\"a4-main-client-reviews-container\">\r\n                            <div className=\"a4-main-client-reviews-content\">\r\n                                <div>\r\n                                    <div className=\"a4-client-reviews-info\">\r\n                                        <div className=\"a4-client-reviews-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                            <h2>{header}</h2>\r\n                                        </div>\r\n                                        <div className=\"a4-client-reviews-description\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                            <p>{body}</p>\r\n                                        </div>\r\n                                    </div>\r\n                                    <div className=\"relative\">\r\n                                        <div className=\"a4-client-reviews-list-container\">\r\n                                            <div className=\"a4-client-reviews-list-control\" onClick={this.clickNextReview}>\r\n                                                <svg className=\"a4-svgsprite -logo text-secondary\">\r\n                                                    <ArrowRight fill={bootstrapService.primaryColor}/>\r\n                                                </svg>\r\n                                            </div>\r\n                                            <ul className=\"a4-client-reviews-list owl-carousel\" ref={div => this.carousel = div}>\r\n                                                {\r\n                                                    reviews.map((review, index) => {\r\n                                                        return <li className=\"a4-client-reviews-list-item\" data-aos={isMobileOnly ? undefined : \"fade-up\"} key={index} style={{cursor: \"grab\"}}>\r\n                                                            <div className=\"a4-client-reviews-list-item-user\">\r\n                                                                <div className=\"a4-client-reviews-list-item-user-avatar\">\r\n                                                                    {\r\n                                                                        review.imageUrl &&\r\n                                                                        <img src={review.imageUrl} height=\"50\" width=\"50\" alt=\"\" />\r\n                                                                    }\r\n                                                                    {\r\n                                                                        !review.imageUrl &&\r\n                                                                        <Avatar height=\"50\" width=\"50\" />\r\n                                                                    }\r\n                                                                    \r\n                                                                </div>\r\n                                                                <div className=\"a4-client-reviews-list-item-user-info\">\r\n                                                                    <div className=\"a4-client-reviews-list-item-user-name\">{review.name}</div>\r\n                                                                    <div className=\"a4-client-reviews-list-item-user-from\">{review.location}</div>\r\n                                                                </div>\r\n                                                            </div>\r\n                                                            <div className=\"a4-client-reviews-list-item-review\">\r\n                                                                <p>{review.comment}</p>\r\n                                                            </div>\r\n                                                        </li>\r\n                                                    })\r\n                                                }\r\n                                            </ul>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </section>\r\n                }\r\n            </>\r\n        )\r\n    }\r\n}\r\n\r\nexport default Reviews;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n  d: \"M1 5L5 9L12.5 1.5\",\n  stroke: \"current\",\n  strokeWidth: 2,\n  strokeLinecap: \"round\",\n  fill: \"transparent\"\n});\n\nfunction SvgCheckMark(_ref, svgRef) {\n  var title = _ref.title,\n      titleId = _ref.titleId,\n      props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    viewBox: \"0 0 14 11\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCheckMark);\nexport default \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTQgMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQo8cGF0aCBkPSJNMSA1TDUgOUwxMi41IDEuNSIgc3Ryb2tlPSJjdXJyZW50IiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgZmlsbD0ndHJhbnNwYXJlbnQnLz4NCjwvc3ZnPg0K\";\nexport { ForwardRef as ReactComponent };","import React from 'react'\r\nimport './Subscribe.scss'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport BubbleButton from '../BubbleButton/BubbleButton'\r\nimport { ReactComponent as Error } from '../../../assets/error.svg'\r\nimport { ReactComponent as CheckMark } from '../../../assets/check-mark.svg'\r\n\r\nimport bootstrapService from '../../../services/BootstrapService'\r\nimport formService from '../../../services/FormService'\r\nimport memberService from '../../../services/MemberService'\r\nimport recaptchaService from '../../../services/RecaptchaService'\r\n\r\nclass Subscribe extends React.Component {\r\n    // Constructor\r\n    constructor(props) {\r\n        super(props);\r\n\r\n        // Refs\r\n        this.form = null;\r\n        this.successMessage = null;\r\n\r\n        // This Binding\r\n        this.submitForm = this.submitForm.bind(this);\r\n    }\r\n\r\n    // Event Handlers\r\n    submitForm(e) {\r\n        e.preventDefault();\r\n\r\n        const isFormValid = formService.validate(this.form);\r\n\r\n        if(!isFormValid) return;\r\n\r\n        formService.showLoadingButton(this.form);\r\n\r\n        const email = e.target.email.value.trim();\r\n\r\n        recaptchaService.getToken(\"subscribe\")\r\n        .then(token => {\r\n            let subscribeRequirement = {email, recaptchaToken: token};\r\n\r\n            memberService.subscribe(subscribeRequirement)\r\n            .then((json) => {\r\n                if (json.succeeded) {\r\n                    this.successMessage.classList.add(\"-visible\");\r\n                }\r\n                else {\r\n                    formService.hideAllErrors(this.form);\r\n                    formService.hideLoadingButton(this.form);\r\n                    formService.showFormError(this.form, json.errors[0]);\r\n                }\r\n            });\r\n        });\r\n    }\r\n\r\n    // Component\r\n    render() {\r\n        const subscribeData = bootstrapService.data.landing.sections.find(s => s.name === \"newsletter\");\r\n\r\n        const headers = subscribeData ? subscribeData.headers : null;\r\n        const body = subscribeData ? subscribeData.body : null;\r\n\r\n        return (\r\n            <>\r\n                {\r\n                    subscribeData &&\r\n                    <section className=\"a4-special-offers\">\r\n                        <div className=\"a4-special-offers-container\">\r\n                            <div className=\"a4-special-offers-content\">\r\n                                <div className=\"a4-special-offers-info\">\r\n                                    <div className=\"a4-special-offers-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                        <h2>{headers[0]} <span className=\"text-primary\">{headers[1]}</span> {headers[2]}</h2>\r\n                                    </div>\r\n                                    <div className=\"a4-special-offers-description\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                        <p>{body}</p>\r\n                                    </div>\r\n                                </div>\r\n                                <form className=\"a4-special-offers-form\" data-aos={isMobileOnly ? undefined : \"fade-up\"} ref={form => this.form = form} onSubmit={this.submitForm}>\r\n                                    <div className=\"a4-special-offers-form-filler\" aria-hidden={true}></div>\r\n                                    <section className=\"a4-special-offers-form-section\">\r\n                                        <div className=\"a4-input\">\r\n                                            <input name=\"email\" type='email' required placeholder=\"E-mail address\" />\r\n                                            <label htmlFor=\"email\">E-mail address</label>\r\n                                            <span className=\"a4-input-error\">Enter a valid e-mail address</span>\r\n                                            <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                                <Error />\r\n                                            </svg>\r\n                                        </div>\r\n                                        <p className=\"a4-form-error\"></p>\r\n                                        <div className=\"a4-special-offers-form-control\">\r\n                                            <BubbleButton className=\"a4-form-submit -primary\" type=\"submit\" formNoValidate>\r\n                                                <b>Subscribe</b>\r\n                                            </BubbleButton>\r\n                                        </div>\r\n                                        <div className=\"a4-special-offers-sub-anytime\">\r\n                                            <p>You can unsubscribe at any time.</p>\r\n                                        </div>\r\n                                    </section>\r\n                                    <section className=\"a4-special-offers-form-section -success\" ref={section => this.successMessage = section}> \r\n                                        <figure>\r\n                                            <svg className=\"a4-svgsprite text-secondary\">\r\n                                                <CheckMark stroke={bootstrapService.primaryColor} />\r\n                                            </svg>\r\n                                        </figure>\r\n                                        <h3>Thank you!</h3>\r\n                                        <p>Your subscription has been successfully issued.</p>\r\n                                    </section>\r\n                                </form>\r\n                            </div>\r\n                        </div>\r\n                    </section>\r\n                }\r\n            </>\r\n        )\r\n    }\r\n}\r\n\r\nexport default Subscribe;","import React from 'react'\r\nimport './Footer.scss'\r\nimport { Link } from 'react-router-dom'\r\n\r\nimport BubbleButton from '../BubbleButton/BubbleButton'\r\nimport { ReactComponent as Apple } from '../../../assets/apple.svg'\r\nimport { ReactComponent as Google } from '../../../assets/google.svg'\r\n\r\nimport bootstrapService from '../../../services/BootstrapService'\r\n\r\nclass Footer extends React.Component {\r\n    // Component\r\n    render() {\r\n        const siteData = bootstrapService.data.site;\r\n        const navs = bootstrapService.data.landing.footers;\r\n\r\n        const logo = bootstrapService.data.site.logoLightUrl;\r\n\r\n        const defaultPassType = bootstrapService.defaultPlanType;\r\n        const defaultStateName = bootstrapService.defaultStateName;\r\n\r\n        const siteName = siteData.name;\r\n        const phone = siteData.sitePhone;\r\n        const fax = siteData.siteFax;\r\n        const email = siteData.siteEmail;\r\n        const address = siteData.siteAddress.street.concat(\" \", siteData.siteAddress.city, \", \", siteData.siteAddress.state, \" \", siteData.siteAddress.zip);\r\n\r\n        const homeData = bootstrapService.data.landing;\r\n        const appStoreData = homeData.sections.find(s => s.name === \"appStore\");\r\n        const appleUrl = appStoreData ? appStoreData.appleUrl : null;\r\n        const googleUrl = appStoreData ? appStoreData.googleUrl : null;\r\n\r\n        const ceTerm = bootstrapService.getCETerm();\r\n\r\n        const showAddress = bootstrapService.getShowAddress();\r\n\r\n        const year = new Date().getFullYear()\r\n\r\n        return (\r\n            <section className=\"a4-footer\">\r\n                <div className=\"a4-footer-container\">\r\n                    <div className=\"a4-footer-filler\"></div>\r\n                    <div className=\"a4-footer-content\">\r\n                        <div className=\"a4-footer-left\">\r\n                            <div>\r\n                                <div className=\"a4-footer-logo\">\r\n                                    <img src={logo} alt=\"\" />\r\n                                </div>\r\n                                <div className=\"a4-footer-copyright\">© Copyright {year} {siteName}</div>\r\n                            </div>\r\n                            <div className=\"a4-footer-app-store\">\r\n                                {\r\n                                    appleUrl &&\r\n                                    <a href={appleUrl} target=\"_blank\" rel=\"noreferrer\">\r\n                                        <BubbleButton className=\"a4-btn_store -fixed -bordered\">\r\n                                            <div className=\"a4-btn_store-icon\">\r\n                                                <svg className=\"a4-svgsprite -app-store\">\r\n                                                    <Apple />\r\n                                                </svg>\r\n                                            </div>\r\n                                            <div className=\"a4-btn_store-text\">Available in <b>App Store</b></div>\r\n                                        </BubbleButton>\r\n                                    </a>\r\n                                }\r\n                                {\r\n                                    googleUrl &&\r\n                                    <a href={googleUrl} target=\"_blank\" rel=\"noreferrer\">\r\n                                        <BubbleButton className=\"a4-btn_store -fixed -bordered\">\r\n                                            <div className=\"a4-btn_store-icon\">\r\n                                                <svg className=\"a4-svgsprite -gplay-store\">\r\n                                                    <Google />\r\n                                                </svg>\r\n                                            </div>\r\n                                            <div className=\"a4-btn_store-text\">Get it on <b>Google Play</b></div>\r\n                                        </BubbleButton>\r\n                                    </a>\r\n                                }\r\n                            </div>\r\n                        </div>\r\n                        <div className=\"a4-footer-right\">\r\n                            <div className=\"a4-footer-list\">\r\n                                <div className=\"a4-footer-list-title\">\r\n                                    <h4>Company</h4>\r\n                                    <ul>\r\n                                        {\r\n                                            navs.find(n => n === \"approvals\") &&\r\n                                            <li>\r\n                                                <Link to=\"/approvals\">Our Approvals</Link>\r\n                                            </li>\r\n                                        }\r\n                                        {\r\n                                            navs.find(n => n === \"courses\") &&\r\n                                            <li>\r\n                                                {\r\n                                                    bootstrapService.singleCourseId &&\r\n                                                    <Link to={`/course/${bootstrapService.singleCourseId}`}>The Course</Link>\r\n                                                }\r\n                                                {\r\n                                                    !bootstrapService.singleCourseId &&\r\n                                                    <Link to=\"/courses\">Our Courses</Link>\r\n                                                }\r\n                                            </li>\r\n                                        }\r\n                                        {\r\n                                            navs.find(n => n === \"pricing\") &&\r\n                                            <li>\r\n                                                <Link to={`/pricing/${defaultPassType}`}>Pricing</Link>\r\n                                            </li>\r\n                                        }\r\n                                        {\r\n                                            navs.find(n => n === \"faq\") &&\r\n                                            <li>\r\n                                                <Link to=\"/faq\">FAQ</Link>\r\n                                            </li>\r\n                                        }\r\n                                    </ul>\r\n                                </div>\r\n                            </div>\r\n                            <div className=\"a4-footer-list\">\r\n                                <div className=\"a4-footer-list-title\">\r\n                                    <h4>Useful Links</h4>\r\n                                    <ul>\r\n                                        {\r\n                                            navs.find(n => n === \"help-support\") &&\r\n                                            <li>\r\n                                                <Link to=\"/help-and-support\">Help & Support</Link>\r\n                                            </li>\r\n                                        }\r\n                                        {\r\n                                            navs.find(n => n === \"requirements\") &&\r\n                                            <li>\r\n                                                <Link to={`/requirements/${defaultStateName}`}>{ceTerm} Requirements</Link>\r\n                                            </li>\r\n                                        }\r\n                                        {\r\n                                            navs.find(n => n === \"our-sites\") &&\r\n                                            <li>\r\n                                                <Link to=\"/affiliated-sites\">Affiliated Sites</Link>\r\n                                            </li>\r\n                                        }\r\n                                        {\r\n                                            navs.find(n => n === \"terms\") &&\r\n                                            <li>\r\n                                                <Link to=\"/terms-and-conditions\">Terms & Conditions</Link>\r\n                                            </li>\r\n                                        }\r\n                                        {\r\n                                            navs.find(n => n === \"privacy\") &&\r\n                                            <li>\r\n                                                <Link to=\"/privacy-policy\">Privacy Policy</Link>\r\n                                            </li>\r\n                                        }\r\n                                        {\r\n                                            navs.find(n => n === \"refund-policy\") &&\r\n                                            <li>\r\n                                                <Link to=\"/refund-policy\">Refund Policy</Link>\r\n                                            </li>\r\n                                        }\r\n                                        {\r\n                                            navs.find(n => n === \"complaint-resolution-policy\") &&\r\n                                            <li>\r\n                                                <Link to=\"/complaint-resolution-policy\">Complaint Resolution Policy</Link>\r\n                                            </li>\r\n                                        }\r\n                                    </ul>\r\n                                </div>\r\n                            </div>\r\n                            <div className=\"a4-footer-list\">\r\n                            <div className=\"a4-footer-list-title\">\r\n                                    <h4>Contact</h4>\r\n                                    <ul>\r\n                                        <li className=\"a4-footer-list-item-nowrap\"> \r\n                                            Email: \r\n                                            <a href={`mailto:${email}`} target=\"_blank\" rel=\"noreferrer\"> {email}</a>\r\n                                        </li>\r\n                                        <li> \r\n                                            Phone:\r\n                                            <a href={`tel:${phone}`}> {phone}</a>\r\n                                        </li>\r\n                                        <li> \r\n                                            Fax:\r\n                                            <a href={`fax:${fax}`}> {fax}</a>\r\n                                        </li>\r\n                                        {\r\n                                            showAddress &&\r\n                                            <li>\r\n                                                Address:\r\n                                                <a href={`http://maps.google.com/?q=${address}`} target=\"_blank\" rel=\"noreferrer\">\r\n                                                    &nbsp; {address}\r\n                                                </a>\r\n                                            </li>\r\n                                        }\r\n                                    </ul>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </section>\r\n        )\r\n    }\r\n}\r\n\r\nexport default Footer;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n  opacity: 0.3,\n  d: \"M6 1L2 5L6 9\",\n  stroke: \"#D1D4DA\",\n  strokeWidth: 2,\n  strokeLinecap: \"round\"\n});\n\nfunction SvgChevronLeft(_ref, svgRef) {\n  var title = _ref.title,\n      titleId = _ref.titleId,\n      props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    viewBox: \"0 0 7 10\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgChevronLeft);\nexport default \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgNyAxMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxwYXRoIG9wYWNpdHk9IjAuMyIgZD0iTTYgMUwyIDVMNiA5IiBzdHJva2U9IiNEMUQ0REEiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+DQo8L3N2Zz4NCg==\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n  d: \"M23 23L3 3\",\n  vectorEffect: \"non-scaling-stroke\",\n  stroke: \"currentColor\",\n  strokeWidth: 3,\n  strokeLinecap: \"round\",\n  strokeLinejoin: \"round\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n  d: \"M3.00004 23L23 3\",\n  vectorEffect: \"non-scaling-stroke\",\n  stroke: \"currentColor\",\n  strokeWidth: 3,\n  strokeLinecap: \"round\",\n  strokeLinejoin: \"round\"\n});\n\nfunction SvgCancel(_ref, svgRef) {\n  var title = _ref.title,\n      titleId = _ref.titleId,\n      props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    viewBox: \"0 0 26 26\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _ref2, _ref3);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCancel);\nexport default \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjYgMjYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPHBhdGggZD0iTTIzIDIzTDMgMyIgdmVjdG9yLWVmZmVjdD0ibm9uLXNjYWxpbmctc3Ryb2tlIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIC8+DQogICAgPHBhdGggZD0iTTMuMDAwMDQgMjNMMjMgMyIgdmVjdG9yLWVmZmVjdD0ibm9uLXNjYWxpbmctc3Ryb2tlIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIC8+DQo8L3N2Zz4NCg==\";\nexport { ForwardRef as ReactComponent };","import React from 'react'\r\nimport './GroupsModal.scss'\r\nimport $ from 'jquery'\r\nimport 'select2'\r\n\r\nimport BubbleButton from '../../shared/BubbleButton/BubbleButton'\r\nimport { ReactComponent as BackButton } from '../../../assets/chevron-left.svg'\r\nimport { ReactComponent as Cancel } from '../../../assets/cancel.svg'\r\nimport { ReactComponent as Error } from '../../../assets/error.svg'\r\n\r\nimport formService from '../../../services/FormService'\r\nimport memberService from '../../../services/MemberService'\r\nimport recaptchaService from '../../../services/RecaptchaService'\r\n\r\nclass GroupsModal extends React.Component {\r\n    // Constructor\r\n    constructor(props) {\r\n        super(props);\r\n\r\n        // State\r\n        this.scrollBarWidth = window.innerWidth - document.documentElement.clientWidth;\r\n\r\n        // Refs\r\n        this.modal = null;\r\n        this.screen1 = null;\r\n        this.screen2 = null;\r\n        this.screen3 = null;\r\n\r\n        // This Binding\r\n        this.toggleModal = this.toggleModal.bind(this);\r\n        this.showCreateGroup = this.showCreateGroup.bind(this);\r\n        this.showJoinGroup = this.showJoinGroup.bind(this);\r\n        this.clickCreateGroup = this.clickCreateGroup.bind(this);\r\n        this.clickJoinGroup = this.clickJoinGroup.bind(this);\r\n        this.clickBack = this.clickBack.bind(this);\r\n    }\r\n\r\n    // Lifecycle\r\n    componentDidMount() {\r\n        this.setupSelects();\r\n    }\r\n    \r\n    componentDidUpdate() {\r\n        this.setupSelects();\r\n    }\r\n\r\n    // Helpers\r\n    setupSelects() {\r\n        $('.a4-select select').select2({\r\n            minimumResultsForSearch: -1,\r\n        });\r\n\r\n        $('.a4-select select').on(\"change\", (e, shouldIgnore) => {\r\n            e.stopPropagation();\r\n            if (!shouldIgnore) {\r\n                const { plan } = e.currentTarget.dataset;\r\n                console.log(\"SELECTED \" + plan);\r\n            }\r\n        });\r\n    }\r\n    \r\n    // Event Handlers\r\n    toggleModal(e) {\r\n        if (e) e.stopPropagation(); // Prevent toggleModal from firing twice on Cancel\r\n        \r\n        if (!this.modal.classList.contains(\"-opened\")) {\r\n            this.modal.classList.add(\"-opened\");\r\n            document.body.classList.add(\"overflow-hidden\");\r\n            document.body.style.paddingRight = `${this.scrollBarWidth}px`;\r\n            this.screen1.style.display = \"block\";\r\n            this.screen2.style.display = \"none\";\r\n            this.screen3.style.display = \"none\";\r\n        }\r\n        else {\r\n            this.modal.classList.remove(\"-opened\");\r\n            document.body.classList.remove(\"overflow-hidden\");\r\n            document.body.style.paddingRight = 0;\r\n            this.screen2.style.display = \"none\";\r\n            this.screen3.style.display = \"none\";\r\n        }\r\n    }\r\n\r\n    showCreateGroup(e) {\r\n        e.stopPropagation();\r\n        this.screen1.style.display = \"none\";\r\n        this.screen2.style.display = \"block\";\r\n    }\r\n\r\n    showJoinGroup(e) {\r\n        e.stopPropagation();\r\n        \r\n        formService.clearAllInputs(this.screen3)\r\n        formService.hideAllErrors(this.screen3)\r\n\r\n        this.screen1.style.display = \"none\";\r\n        this.screen3.style.display = \"block\";\r\n    }\r\n\r\n    clickCreateGroup(e) {\r\n        e.stopPropagation();\r\n        this.toggleModal();\r\n    }\r\n\r\n    clickJoinGroup(e) {\r\n        e.stopPropagation();\r\n        \r\n        const isFormValid = formService.validate(this.screen3);\r\n        if(!isFormValid) return;\r\n\r\n        const groupCode = this.screen3.querySelector(\"input\").value;\r\n\r\n        formService.showLoadingButton(this.screen3);\r\n\r\n        let joinGroupRequest = { groupCode };\r\n\r\n        recaptchaService.getToken(\"joinGroup\")\r\n        .then(token => {\r\n            joinGroupRequest.recaptchaToken = token;\r\n\r\n            memberService.validateJoinGroup(joinGroupRequest)\r\n            .then(json => {    \r\n                if (json.succeeded) {\r\n                    this.props.goToJoinGroup(groupCode);\r\n                }\r\n                else {\r\n                    formService.hideAllErrors(this.screen3);\r\n                    formService.hideLoadingButton(this.screen3);\r\n                    if (json.errors[0] === \"Cannot get group\") {\r\n                        formService.showInputError(this.screen3, \"groupCode\", \"Invalid group code\");\r\n                    }\r\n                    else {\r\n                        formService.showInputError(this.screen3, \"groupCode\", json.errors[0]);\r\n                    }  \r\n                }\r\n            });\r\n        })\r\n    }\r\n\r\n    clickBack(e) {\r\n        e.stopPropagation();\r\n        this.screen3.style.display = \"none\";\r\n        this.screen2.style.display = \"none\";\r\n        this.screen1.style.display = \"block\";\r\n    }\r\n\r\n    stopPropagation(e) {\r\n        e.stopPropagation();\r\n    }\r\n\r\n    // Component\r\n    render() {\r\n        return (\r\n            <div className=\"a4-modal\" ref={div => this.modal = div} onClick={this.toggleModal}>\r\n                <div className=\"a4-modal-content\" onClick={this.stopPropagation}>\r\n                    <svg className=\"a4-svgsprite -cancel text-secondary\" onClick={this.toggleModal}>\r\n                        <Cancel />\r\n                    </svg>\r\n                    <div className=\"a4-find-plan-modal\">\r\n                        <div className=\"screen screen-one\" ref={div => this.screen1 = div}>\r\n                            <header className=\"a4-find-plan-modal-title\">What would you like to do?</header>\r\n                            <div className=\"a4-find-plan-modal-btn-group\">\r\n                                <BubbleButton className=\"-primary -new-group\" onClick={this.props.goToCreateGroup}>\r\n                                    Create New Group\r\n                                </BubbleButton>\r\n                                <div className=\"button a4-btn -inverted -join-group\" type=\"button\" onClick={this.showJoinGroup}>\r\n                                    Join Existing Group\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <div className=\"screen screen-two\" ref={div => this.screen2 = div}>\r\n                            <svg className=\"a4-svgsprite -back text-secondary\" onClick={this.clickBack}>\r\n                                <BackButton />\r\n                            </svg>\r\n                            <header className=\"a4-find-plan-modal-title\">Create New Group</header>\r\n                            <div className=\"a4-input\">\r\n                                <input name=\"users\" placeholder=\"Enter the number of users\" required onClick={this.stopPropagation}/>\r\n                                <label htmlFor=\"users\">Number of users</label>\r\n                                <span className=\"a4-input-error\"></span>\r\n                                <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                    <Error />\r\n                                </svg>\r\n                            </div>\r\n                            <div className=\"a4-select\">\r\n                                <select defaultValue={\"selected\"} onClick={this.stopPropagation}>\r\n                                    <option value=\"selected\" disabled>Select the group plan</option>\r\n                                    <option plan=\"plan1\">Plan 1</option>\r\n                                    <option plan=\"plan2\">Plan 2</option>\r\n                                    <option plan=\"plan3\">Plan 3</option>\r\n                                </select>\r\n                            </div>\r\n                            <div className=\"a4-find-plan-modal-btn-group\">\r\n                                <BubbleButton className=\"-primary\" onClick={this.clickCreateGroup}>\r\n                                    Create\r\n                                </BubbleButton>\r\n                            </div>\r\n                        </div>\r\n                        <div className=\"screen screen-three\" ref={div => this.screen3 = div}>\r\n                            <svg className=\"a4-svgsprite -back text-secondary\" onClick={this.clickBack}>\r\n                                <BackButton />\r\n                            </svg>\r\n                            <header className=\"a4-find-plan-modal-title\">Please enter your group code</header>\r\n                            <div className=\"a4-input\">\r\n                                <input name=\"groupCode\" placeholder=\"Group Code\" required onClick={this.stopPropagation} />\r\n                                <label htmlFor=\"groupCode\">Group Code</label>\r\n                                <span className=\"a4-input-error\">Enter a valid code</span>\r\n                                <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                    <Error />\r\n                                </svg>\r\n                            </div>\r\n                            <div className=\"a4-find-plan-modal-btn-group\">\r\n                                <BubbleButton className=\"a4-form-submit -primary\" onClick={this.clickJoinGroup}>\r\n                                    Join\r\n                                </BubbleButton>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        )\r\n    }\r\n}\r\n\r\nexport default GroupsModal;\r\n","import React from 'react'\r\nimport {ReactTitle} from 'react-meta-tags'\r\nimport './Home.scss'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Exposition from './Exposition/Exposition'\r\nimport List from './List/List'\r\nimport CourseItem from './List/Items/CourseItem'\r\nimport HowItWorksItem from './List/Items/HowItWorksItem'\r\nimport WhyUsItem from './List/Items/WhyUsItem'\r\nimport SingleCourse from './SingleCourse/SingleCourse'\r\nimport AppStore from './AppStore/AppStore'\r\nimport Spacer from './Spacer/Spacer'\r\nimport TryForFree from './TryForFree/TryForFree'\r\nimport Plans from './Plans/Plans'\r\nimport Reviews from '../shared/Reviews/Reviews'\r\nimport Subscribe from '../shared/Subscribe/Subscribe'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport GroupsModal from './GroupsModal/GroupsModal'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\n\r\nclass Home extends React.Component {\r\n    // Constructor\r\n    constructor(props) {\r\n        super(props);\r\n\r\n        // Refs\r\n        this.navbar = null;\r\n        this.groupPlanModal = null;\r\n        this.tryForFreeSection = null;\r\n\r\n        // This Binding\r\n        this.clickTryForFree = this.clickTryForFree.bind(this);\r\n        this.toggleGroupPlanModal = this.toggleGroupPlanModal.bind(this);\r\n        this.goToCreateGroup = this.goToCreateGroup.bind(this);\r\n        this.goToJoinGroup = this.goToJoinGroup.bind(this);\r\n    }\r\n\r\n    // Lifecycle\r\n    componentDidMount() {\r\n        this.setupScroll();\r\n    }\r\n\r\n    // Helpers\r\n    setupScroll() {\r\n        if (this.props.location.state && this.props.location.state.tryForFree) {\r\n            setTimeout(() => {\r\n                if (this.tryForFreeSection) {\r\n                    this.tryForFreeSection.scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n                }\r\n            }, 300);\r\n        }\r\n        else {\r\n            window.scrollTo(0, 0);\r\n        }\r\n    }\r\n\r\n    // Event Handlers\r\n    clickTryForFree() {\r\n        this.tryForFreeSection.scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n    }\r\n\r\n    toggleGroupPlanModal() {\r\n        this.groupPlanModal.toggleModal();\r\n        this.navbar.toggleOverflowForModal();\r\n    }\r\n\r\n    goToCreateGroup(e) {\r\n        this.toggleGroupPlanModal();\r\n        this.props.history.push(\"/pricing/group-plans\");\r\n    }\r\n\r\n    goToJoinGroup(groupCode) {\r\n        this.toggleGroupPlanModal();\r\n        this.props.history.push(`/register/${groupCode}`);\r\n    }\r\n\r\n    // Component\r\n    render() {\r\n        const homeData = bootstrapService.data.landing;\r\n\r\n        const heroData = homeData.sections.find(s => s.name === \"intro\");\r\n        const approvalsData = homeData.sections.find(s => s.name === \"approvals\");\r\n        const coursesData = homeData.sections.find(s => s.name === \"catalog\");\r\n        const appStoreData = homeData.sections.find(s => s.name === \"appStore\");\r\n        const spacer1Data = homeData.sections.find(s => s.name === \"spacer1\");\r\n        const howItWorksData = homeData.sections.find(s => s.name === \"works\");\r\n        const tryForFreeData = homeData.sections.find(s => s.name === \"tryForFree\");\r\n        const spacer2Data = homeData.sections.find(s => s.name === \"spacer2\");\r\n        const whyUsData = homeData.sections.find(s => s.name === \"features\");\r\n        const plansData = homeData.sections.find(s => s.name === \"plans\");\r\n\r\n        const title = bootstrapService.data.site.siteEmailFromName;\r\n\r\n        return (\r\n            <>\r\n                <ReactTitle title={title} />\r\n\r\n                <Navbar ref={navbar => this.navbar = navbar} clickTry={this.clickTryForFree} />\r\n                <div className=\"a4-view\">\r\n                    <div className=\"a4-layout a4-home\">\r\n                        <div className=\"a4-home-content\">\r\n                            {\r\n                                heroData && <Exposition data={heroData} type=\"hero\" highlighted={true} />\r\n                            }\r\n                            {\r\n                                approvalsData && <Exposition data={approvalsData} type=\"approvals\" />\r\n                            }\r\n                            {\r\n                                coursesData && coursesData.courses.length > 1 &&\r\n                                <List data={coursesData} type=\"courses\" highlighted={true}>\r\n                                    {\r\n                                        coursesData.courses.map((course, index) => {\r\n                                            return <CourseItem data={course} key={index} />\r\n                                        })\r\n                                    }\r\n                                </List>\r\n                            }\r\n                            {\r\n                                coursesData && coursesData.courses.length === 1 &&\r\n                                <SingleCourse  data={coursesData} course={coursesData.courses[0]}/>\r\n                            }\r\n                            {\r\n                                appStoreData && <AppStore data={appStoreData} />\r\n                            }\r\n                            {\r\n                                spacer1Data && <Spacer data={spacer1Data} type=\"one\" backgroundColor=\"primary_light\" />\r\n                            }\r\n                            {\r\n                                howItWorksData &&\r\n                                <List data={howItWorksData} type=\"howItWorks\">\r\n                                    {\r\n                                        howItWorksData.works.map((work, index) => {\r\n                                            return <HowItWorksItem data={work} key={index} />\r\n                                        })\r\n                                    }\r\n                                </List>\r\n                            }\r\n                            {\r\n                                tryForFreeData && <TryForFree data={tryForFreeData} ref={section => this.tryForFreeSection = section} />\r\n                            }\r\n                            {\r\n                                spacer2Data && <Spacer data={spacer2Data} type=\"two\" backgroundColor=\"primary_light\" />\r\n                            }\r\n                            {\r\n                                whyUsData &&\r\n                                <List data={whyUsData} type=\"whyUs\">\r\n                                    {\r\n                                        whyUsData.features.map((feature, index) => {\r\n                                            return <WhyUsItem data={feature} key={index} />\r\n                                        })\r\n                                    }\r\n                                </List>\r\n                            }\r\n                            {\r\n                                plansData && <Plans data={plansData} openGroupPlanModal={this.toggleGroupPlanModal} />\r\n                            }\r\n                            <Reviews />\r\n                            <Subscribe />\r\n                            <Footer />\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <GroupsModal ref={modal => this.groupPlanModal = modal} goToCreateGroup={this.goToCreateGroup} goToJoinGroup={this.goToJoinGroup}/>\r\n            </>\r\n        )\r\n    }\r\n}\r\n\r\nexport default Home;","import React from 'react'\r\nimport './Approvals.scss'\r\nimport { Link } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Subscribe from '../shared/Subscribe/Subscribe'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport courseImage from '../../assets/course-plug.svg'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\n\r\nclass Approvals extends React.Component {\r\n    // Lifecycle\r\n    componentDidMount() {\r\n        window.scrollTo(0, 0);\r\n    }\r\n\r\n    // Component\r\n    render() {\r\n        const approvalsData =  bootstrapService.data.landing.pages.find(p => p.name === \"approvals\");\r\n\r\n        const header = approvalsData ? approvalsData.header : null;\r\n        const imageUrl = approvalsData ? approvalsData.imageUrl : null;\r\n        const orgApprovals = approvalsData ? approvalsData.organizationApprovals : null;\r\n        const courseApprovals = approvalsData ? approvalsData.courseApprovals : null;\r\n\r\n        return (\r\n            <>\r\n                {\r\n                    approvalsData &&\r\n                    <>\r\n                        <Navbar activeLink=\"approvals\" />\r\n                        <div className=\"a4-view\">\r\n                            <div className=\"a4-layout a4-approvals\">\r\n                                <div className=\"a4-approvals-container\">\r\n                                    <section className=\"a4-approvals-main\">\r\n                                        <div className=\"a4-approvals-main-container\">\r\n                                            <div className=\"a4-approvals-main-content\">\r\n                                                <div className=\"a4-approvals-main-illustration\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay=\"0\" data-aos-anchor-placement=\"top-bottom\">\r\n                                                    <img src={imageUrl} alt=\"\" />\r\n                                                </div>\r\n                                                <div className=\"a4-approvals-main-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay=\"100\" data-aos-anchor-placement=\"top-bottom\">\r\n                                                    <h1>{header}</h1>\r\n                                                </div>\r\n                                            </div>\r\n                                        </div>\r\n                                    </section>\r\n                                    <section className=\"a4-approvals-app-and-acc\">\r\n                                        <div className=\"a4-approvals-app-and-acc-container\">\r\n                                            <div className=\"a4-approvals-app-and-acc-content\">\r\n                                                {\r\n                                                    orgApprovals && orgApprovals.length > 0 &&\r\n                                                    <div className=\"a4-approvals-app-and-acc-topic\">\r\n                                                        <div className=\"a4-approvals-app-and-acc-topic-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay=\"0\" data-aos-anchor-placement=\"top-bottom\">\r\n                                                            <h2>Approvals & Accreditations</h2>\r\n                                                        </div>\r\n                                                        <section className=\"a4-approvals-list\">\r\n                                                            {\r\n                                                                orgApprovals.map((approval, index) => {\r\n                                                                    return <a href={approval.url} target=\"_blank\" rel=\"noreferrer\" className=\"a4-approvals-list-item -highlighted\" key={index}>\r\n                                                                        <div className=\"a4-approvals-list-item-image\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                                                            <img src={approval.imageUrl ? approval.imageUrl : courseImage} alt=\"\" />\r\n                                                                        </div>\r\n                                                                        <div className=\"a4-approvals-list-item-block\">\r\n                                                                            <div className=\"a4-approvals-list-item-block-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                                                                <h3>{approval.header}</h3>\r\n                                                                            </div>\r\n                                                                            <div className=\"a4-approvals-list-item-block-description\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                                                                <p dangerouslySetInnerHTML={{ __html: approval.body}}></p>\r\n                                                                            </div>\r\n                                                                        </div>\r\n                                                                    </a>\r\n                                                                })\r\n                                                            }\r\n                                                        </section>\r\n                                                    </div>\r\n                                                }\r\n                                                {\r\n                                                    courseApprovals && courseApprovals.length > 0 &&\r\n                                                    <div className=\"a4-approvals-app-and-acc-topic\">\r\n                                                        <div className=\"a4-approvals-app-and-acc-topic-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay=\"0\" data-aos-anchor-placement=\"top-bottom\">\r\n                                                            <h2>Course Specific Approvals</h2>\r\n                                                        </div>\r\n                                                        <section className=\"a4-approvals-list\">\r\n                                                            {\r\n                                                                courseApprovals.map((approval, index) => {\r\n                                                                    return <a href={approval.url} target=\"_blank\" rel=\"noreferrer\" className=\"a4-approvals-list-item -highlighted\" key={index}>\r\n                                                                        <div className=\"a4-approvals-list-item-image\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                                                            <img src={approval.imageUrl ? approval.imageUrl : courseImage} alt=\"\" />\r\n                                                                        </div>\r\n                                                                        <div className=\"a4-approvals-list-item-block\">\r\n                                                                            <div className=\"a4-approvals-list-item-block-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                                                                <h3>{approval.header}</h3>\r\n                                                                            </div>\r\n                                                                            <div data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                                                                <div className=\"a4-approvals-list-item-block-description\">\r\n                                                                                    <p dangerouslySetInnerHTML={{ __html: approval.body}}></p>\r\n                                                                                </div>\r\n                                                                                <div className=\"a4-approvals-list-item-block-control\">\r\n                                                                                    <Link to={`/course/${approval.features.find(f => f.name === \"courseId\").value}`}>\r\n                                                                                        <span className=\"text-primary\">Course Details</span>\r\n                                                                                    </Link>\r\n                                                                                </div>\r\n                                                                            </div>\r\n                                                                        </div>\r\n                                                                    </a>\r\n                                                                })\r\n                                                            }\r\n                                                        </section>\r\n                                                    </div>\r\n                                                }\r\n                                            </div>\r\n                                        </div>\r\n                                    </section>\r\n                                </div>\r\n                                <Subscribe />\r\n                                <Footer />\r\n                            </div>\r\n                        </div>\r\n                    </>\r\n                }   \r\n            </>\r\n        )\r\n    }\r\n}\r\n\r\nexport default Approvals;","export function debounce(func, wait, immediate) {\r\n    var timeout;\r\n\r\n    return function executedFunction() {\r\n        var context = this;\r\n        var args = arguments;\r\n\r\n        var later = function () {\r\n            timeout = null;\r\n            if (!immediate) {\r\n                func.apply(context, args);\r\n            }\r\n        };\r\n\r\n        var callNow = immediate && !timeout;\r\n\r\n        clearTimeout(timeout);\r\n\r\n        timeout = setTimeout(later, wait);\r\n\r\n        if (callNow) {\r\n            func.apply(context, args);\r\n        }\r\n    };\r\n};","import { v4 as uuid } from 'uuid';\r\n\r\nexport function getKey() {\r\n    return uuid();\r\n}","import React from 'react'\r\nimport './Pages.scss'\r\n\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\nimport Pagination from '@material-ui/lab/Pagination';\r\n\r\nconst styles = theme => ({\r\n    root: {\r\n        \"& .Mui-selected\": {\r\n            color: \"white\",\r\n            backgroundColor: \"var(--primary)\",\r\n           },\r\n        \"& .MuiPaginationItem-root:hover\": {\r\n            color: \"black\",\r\n            backgroundColor: \"#F8F9FA\",\r\n        }\r\n    }\r\n});\r\n\r\nclass Pages extends React.Component {\r\n    // Component\r\n    render() {\r\n        return (\r\n            <div className=\"a4-pagination\">\r\n                <Pagination {...this.props} />\r\n            </div>\r\n        )\r\n    }\r\n}\r\n\r\nexport default withStyles(styles)(Pages);","import React from 'react'\r\nimport './Empty.scss'\r\nimport { withRouter } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport bootstrapService from '../../../services/BootstrapService'\r\n\r\nclass Empty extends React.Component {\r\n    render() {\r\n        const emptyTitle = this.props.location.state ? this.props.location.state.title : \"No courses matched your search\";\r\n        const emptyImg = bootstrapService.data ? bootstrapService.data.site.noResultsImageUrl : \"\";\r\n\r\n        return (\r\n            <div className=\"a4-empty\">\r\n                <div className=\"a4-empty-exposition\">\r\n                    <div className=\"a4-empty-exposition-container\">\r\n                        <div className={`a4-empty-exposition-content -${this.props.name}`}>\r\n                            <div className=\"a4-empty-exposition-info\">\r\n                                <h1 className=\"a4-empty-exposition-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>{emptyTitle}</h1>\r\n                            </div>\r\n                            <div className=\"a4-empty-exposition-illustration\">\r\n                                <img src={emptyImg} data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-easing=\"ease-out-quad\" alt=\"\" />\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        )\r\n    }\r\n}\r\n\r\nexport default withRouter(Empty);","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"line\", {\n  x1: 0.5,\n  y1: 0.5,\n  x2: 10.5,\n  y2: 0.5,\n  stroke: \"#A3A9B6\",\n  strokeLinecap: \"round\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"line\", {\n  x1: 1.96655,\n  y1: 4.5,\n  x2: 9.03322,\n  y2: 4.5,\n  stroke: \"#A3A9B6\",\n  strokeLinecap: \"round\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"line\", {\n  x1: 3.43335,\n  y1: 8.5,\n  x2: 7.56668,\n  y2: 8.5,\n  stroke: \"#A3A9B6\",\n  strokeLinecap: \"round\"\n});\n\nfunction SvgFilterBars(_ref, svgRef) {\n  var title = _ref.title,\n      titleId = _ref.titleId,\n      props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    viewBox: \"0 0 11 9\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _ref2, _ref3, _ref4);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgFilterBars);\nexport default \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTEgOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxsaW5lIHgxPSIwLjUiIHkxPSIwLjUiIHgyPSIxMC41IiB5Mj0iMC41IiBzdHJva2U9IiNBM0E5QjYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPg0KPGxpbmUgeDE9IjEuOTY2NTUiIHkxPSI0LjUiIHgyPSI5LjAzMzIyIiB5Mj0iNC41IiBzdHJva2U9IiNBM0E5QjYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPg0KPGxpbmUgeDE9IjMuNDMzMzUiIHkxPSI4LjUiIHgyPSI3LjU2NjY4IiB5Mj0iOC41IiBzdHJva2U9IiNBM0E5QjYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPg0KPC9zdmc+DQo=\";\nexport { ForwardRef as ReactComponent };","import React from 'react'\r\nimport './Courses.scss'\r\nimport { Link } from 'react-router-dom'\r\nimport $ from 'jquery'\r\nimport 'select2'\r\nimport { debounce } from '../../utils/debounce'\r\nimport { getKey } from '../../utils/key'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Pages from '../shared/Pages/Pages'\r\nimport Empty from '../shared/Empty/Empty'\r\nimport Subscribe from '../shared/Subscribe/Subscribe'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport placeholderImage from '../../assets/course-plug.svg'\r\nimport { ReactComponent as FilterBars } from '../../assets/filter-bars.svg'\r\nimport { ReactComponent as Error } from '../../assets/error.svg'\r\nimport { ReactComponent as Cancel } from '../../assets/cancel.svg'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\n\r\nclass Courses extends React.Component {\r\n    // Constructor\r\n    constructor(props) {\r\n        super(props);\r\n\r\n        // Refs\r\n        this.filterMenu = null;\r\n        this.mobileFilterMenu = null;\r\n        this.mobileSubmitButton = null;\r\n        this.coursesList = null;\r\n\r\n        // State\r\n        this.state = {\r\n            categoryFilter: null,\r\n            searchFilter: null,\r\n            sortFilter: null,\r\n            pageNumber: 0,\r\n        }\r\n\r\n        // This Binding\r\n        this.openMobileFilterMenu = this.openMobileFilterMenu.bind(this);\r\n        this.closeMobileFilterMenu = this.closeMobileFilterMenu.bind(this);\r\n        this.clickMobileFilterItem = this.clickMobileFilterItem.bind(this);\r\n        this.clickMobileSubmit = this.clickMobileSubmit.bind(this);\r\n        this.changeCoursesPage = this.changeCoursesPage.bind(this);\r\n        this.searchCourses = debounce(this.searchCourses.bind(this), 400);\r\n        this.searchCoursesMobile = debounce(this.searchCoursesMobile.bind(this), 400);\r\n    }\r\n\r\n    // Lifecyle\r\n    componentDidMount() {\r\n        window.scrollTo(0, 0);\r\n        this.setupSelects();\r\n    }\r\n\r\n    componentDidUpdate() {\r\n        this.updateSelects();\r\n    }\r\n\r\n    // Helpers\r\n    setupSelects() {\r\n        $('.a4-select select').select2({\r\n            minimumResultsForSearch: -1,\r\n        });\r\n\r\n        $('.a4-select select').on(\"change\", (e, shouldIgnore) => {\r\n            if (!shouldIgnore) {\r\n                const { filterType } = e.currentTarget.dataset;\r\n                this.setMobileFilterActive(filterType, e.currentTarget.value);\r\n\r\n                if (filterType === \"category\") {\r\n                    this.filterCourses(e.currentTarget.value)\r\n                }\r\n                else if (filterType === \"sort\") {\r\n                    this.sortCourses(e.currentTarget.value)\r\n                }\r\n            }\r\n        });\r\n    }\r\n\r\n    updateSelects() {\r\n        if (!$('.a4-select select').first().hasClass(\"select2-hidden-accessible\")) {\r\n            this.setupSelects();\r\n        }\r\n    }\r\n\r\n    setMobileFilterActive(filterType, filterValue) {\r\n        const filter = $(this.mobileFilterMenu).find(`.a4-mobile-filter-items-item[data-filter-type='${filterType}'][data-value='${filterValue}']`);\r\n        filter.addClass(\"-active\");\r\n        filter.siblings(\".-active\").removeClass(\"-active\");\r\n\r\n        const select = $(this.filterMenu).find(`select[data-filter-type='${filterType}']`);\r\n        select.val(filter.data().value);\r\n        select.trigger(\"change\", true);\r\n    }\r\n\r\n    filterCourses(filterOption) {\r\n        this.enableMobileSpinner();\r\n        this.setState({\r\n            categoryFilter: filterOption !== \"\" ? filterOption : null,\r\n            pageNumber: 0,\r\n        }, this.disableMobileSpinner())\r\n    }\r\n\r\n    sortCourses(sortOption) {\r\n        this.enableMobileSpinner();\r\n        this.setState({\r\n            sortFilter: sortOption,\r\n            pageNumber: 0,\r\n        }, this.disableMobileSpinner())\r\n    }\r\n\r\n    enableMobileSpinner() {\r\n        this.mobileSubmitButton.setAttribute(\"disabled\", true);\r\n        this.mobileSubmitButton.classList.add(\"-loading\");\r\n    }\r\n\r\n    disableMobileSpinner() {\r\n        if (this.mobileSubmitButton) {\r\n            this.mobileSubmitButton.removeAttribute(\"disabled\");\r\n            this.mobileSubmitButton.classList.remove(\"-loading\");\r\n        }\r\n    }\r\n\r\n    // Event Handlers\r\n    openMobileFilterMenu() {\r\n        document.body.classList.add(\"overflow-hidden\");\r\n        this.mobileFilterMenu.classList.add(\"-open\");\r\n        this.disableMobileSpinner();\r\n    }\r\n\r\n    closeMobileFilterMenu() {\r\n        document.body.classList.remove(\"overflow-hidden\");\r\n        this.mobileFilterMenu.classList.remove(\"-open\");\r\n    }\r\n\r\n    clickMobileFilterItem(e) {\r\n        this.enableMobileSpinner();\r\n\r\n        const { filterType, value } = e.currentTarget.dataset;\r\n        this.setMobileFilterActive(filterType, value);\r\n\r\n        setTimeout((filterType, value) => {\r\n            if (filterType === \"category\") {\r\n                this.filterCourses(value);\r\n            }\r\n            else if (filterType === \"sort\") {\r\n                this.sortCourses(value);\r\n            }\r\n        }, 1000, filterType, value);\r\n    }\r\n\r\n    clickMobileSubmit() {\r\n        this.closeMobileFilterMenu();\r\n    }\r\n\r\n    searchCourses(e) {\r\n        $(this.mobileFilterMenu).find(\".a4-input\").find(\"input\").val(e.target.value)\r\n        this.setState({\r\n            searchFilter: e.target.value !== \"\" ? e.target.value.toLowerCase() : null,\r\n            pageNumber: 0,\r\n        });\r\n    }\r\n\r\n    searchCoursesMobile(e) {\r\n        this.enableMobileSpinner();\r\n        $(this.filterMenu).find(\".a4-input\").find(\"input\").val(e.target.value)\r\n\r\n        setTimeout(() => {\r\n            this.setState({\r\n                searchFilter: e.target.value !== \"\" ? e.target.value.toLowerCase() : null,\r\n                pageNumber: 0,\r\n            }, this.disableMobileSpinner());\r\n        }, 600);\r\n    }\r\n\r\n    changeCoursesPage(e, page) {\r\n        window.scrollTo(0, 0);\r\n        this.setState({ pageNumber: page - 1 });\r\n    }\r\n\r\n    // Data\r\n    getCourses() {\r\n        const allCourses = bootstrapService.data ? bootstrapService.data.courseCatalog.courses : null;\r\n        let courses = allCourses;\r\n\r\n        if (courses && this.state.categoryFilter) {\r\n            courses = courses.filter(c => c.subjectArea.replace(/\\s+/g, \"-\").trim().toLowerCase() === this.state.categoryFilter)\r\n        }\r\n\r\n        if (courses && this.state.searchFilter) {\r\n            courses = courses.filter(c => c.title.toLowerCase().search(this.state.searchFilter) > -1)\r\n        }\r\n\r\n        if (courses && this.state.sortFilter) {\r\n            if (this.state.sortFilter === \"default\") {\r\n                courses = courses.sort(function (a, b) {\r\n                    //sort by course.order (first)\r\n                    let aval = typeof a.order !== 'undefined' ? a.order : null;\r\n                    let bval = typeof b.order !== 'undefined' ? b.order : null;\r\n                    if (aval === bval) {\r\n                        //sort by course.title (second, when order is same)\r\n                        if (a.title === b.title) {\r\n                            return 0;\r\n                        }\r\n                        return a.title < b.title ? -1 : 1;\r\n                    }\r\n                    return aval > bval ? -1 : 1;\r\n                })\r\n            }\r\n            else if (this.state.sortFilter === \"title\") {\r\n                courses = courses.sort(function (a, b) {\r\n                    if (a.title === b.title) {\r\n                        return 0;\r\n                    }\r\n                    return a.title < b.title ? -1 : 1;\r\n                })\r\n            }\r\n            else if (this.state.sortFilter === \"credits\") {\r\n                courses = courses.sort(function (a, b) {\r\n                    //sort by course.credits (first)\r\n                    if (a.credits === b.credits) {\r\n                        //sort by course.title (second, when order is same)\r\n                        if (a.title === b.title) {\r\n                            return 0;\r\n                        }\r\n                        return a.title < b.title ? -1 : 1;\r\n                    }\r\n                    return a.credits < b.credits ? -1 : 1;\r\n                })\r\n            }\r\n            else if (this.state.sortFilter === \"release-date\") {\r\n                courses = courses.sort(function (a, b) {\r\n                    if (a.releaseDate === b.releaseDate) {\r\n                        return 0;\r\n                    }\r\n                    return a.releaseDate > b.releaseDate ? -1 : 1;\r\n                })\r\n            }\r\n            else {\r\n                console.log(\"INVALID SORT OPTION\")\r\n            }\r\n        }\r\n\r\n        return courses\r\n    }\r\n\r\n    // Component\r\n    render() {\r\n        const coursesData = bootstrapService.data.landing.pages.find(p => p.name === \"course-catalog\");\r\n\r\n        const header = coursesData ? coursesData.header : null;\r\n        const categoryFilters = coursesData ? coursesData.subjectAreaFilters : null;\r\n        const sortOptions = coursesData ? coursesData.sortOptions : null;\r\n\r\n        const courses = this.getCourses();\r\n        const pagedCourses = courses ? courses.slice(10 * this.state.pageNumber, 10 * this.state.pageNumber + 10) : null;\r\n\r\n        const renderKey = getKey();\r\n\r\n        const showReleaseDate = bootstrapService.getShowReleaseDate();\r\n\r\n        return (\r\n            <>\r\n                {\r\n                    coursesData &&\r\n                    <>\r\n                        <Navbar backgroundColor=\"-primary-light\" activeLink=\"courses\" />\r\n                        <div className=\"a4-view\">\r\n                            <div className=\"a4-layout a4-course-catalog\">\r\n                                <section className=\"a4-course-catalog-title\">\r\n                                    <div className=\"a4-course-catalog-container\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay=\"50\" data-aos-anchor-placement=\"top-bottom\">\r\n                                        <h1>{header}</h1>\r\n                                    </div>\r\n                                </section>\r\n                                <section className=\"a4-course-catalog-filter-panel\">\r\n                                    <div className=\"a4-course-catalog-filter-panel-container\">\r\n                                        <div className=\"a4-course-catalog-filter-panel-content\" data-aos={isMobileOnly ? undefined : \"fade-up\"} ref={div => this.filterMenu = div}>\r\n                                            <div className=\"a4-course-catalog-filter-panel-section-1 md_hidden\">\r\n                                                <button className=\"a4-btn\" id=\"filter-menu-btn\" onClick={this.openMobileFilterMenu}>\r\n                                                    <i>\r\n                                                        <svg className=\"a4-svgsprite\">\r\n                                                            <FilterBars stroke={bootstrapService.secondaryColor} />\r\n                                                        </svg>\r\n                                                    </i>\r\n                                                    <span>\r\n                                                        Browse\r\n                                                    </span>\r\n                                                </button>\r\n                                            </div>\r\n                                            <div className=\"a4-course-catalog-filter-panel-section-2\">\r\n                                                {\r\n                                                    categoryFilters && categoryFilters.length > 0 &&\r\n                                                    <div className=\"filter-item\" id=\"category-filter\">\r\n                                                        <div className=\"a4-select\">\r\n                                                            <select data-filter-type=\"category\">\r\n                                                                <option value=''>All Categories</option>\r\n                                                                {\r\n                                                                    categoryFilters.map((filter, index) => {\r\n                                                                        return <option value={filter.replace(/\\s+/g, \"-\").trim().toLowerCase()} key={index}>{filter}</option>\r\n                                                                    })\r\n                                                                }\r\n                                                            </select>\r\n                                                        </div>\r\n                                                    </div>\r\n                                                }\r\n                                                <div className=\"a4-input -search filter-item\">\r\n                                                    <input required placeholder=\"Search\" onChange={this.searchCourses} />\r\n                                                    <label>Search</label>\r\n                                                    <span className=\"a4-input-error\"></span>\r\n                                                    <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                                        <Error />\r\n                                                    </svg>\r\n                                                </div>\r\n                                            </div>\r\n                                            <div className=\"a4-course-catalog-filter-panel-section-3\">\r\n                                                {\r\n                                                    sortOptions && sortOptions.length > 0 &&\r\n                                                    <>\r\n                                                        <div className=\"a4-course-catalog-filter-panel-section-title\">\r\n                                                            <h4>Sort</h4>\r\n                                                        </div>\r\n                                                        <div id=\"sort-filter\">\r\n                                                            <div className=\"a4-select\">\r\n                                                                <select data-filter-type=\"sort\">\r\n                                                                    <option value='default'>Default</option>\r\n                                                                    {\r\n                                                                        sortOptions.map((option, index) => {\r\n                                                                            return <option value={option.replace(/\\s+/g, \"-\").trim().toLowerCase()} key={index}>{option === \"Credits\" ? bootstrapService.getCreditsTerm(2.0) : option}</option>\r\n                                                                        })\r\n                                                                    }\r\n                                                                </select>\r\n                                                            </div>\r\n                                                        </div>\r\n                                                    </>\r\n                                                }\r\n                                            </div>\r\n                                        </div>\r\n                                        <div className=\"a4-mobile-filter-menu\" ref={div => this.mobileFilterMenu = div}>\r\n                                            <div className=\"a4-mobile-filter-container\">\r\n                                                <div className=\"a4-mobile-filter-content\">\r\n                                                    <div className=\"a4-mobile-filter-top\">\r\n                                                        <div className=\"a4-mobile-filter-title\">\r\n                                                            <h4>Browse</h4>\r\n                                                        </div>\r\n                                                        <div className=\"a4-mobile-filter-cancel\" onClick={this.closeMobileFilterMenu}>\r\n                                                            <svg className=\"a4-svgsprite -cancel\">\r\n                                                                <Cancel />\r\n                                                            </svg>\r\n                                                        </div>\r\n                                                    </div>\r\n                                                    <div className=\"a4-mobile-filter-search\">\r\n                                                        <div className=\"a4-input -search filter-item\">\r\n                                                            <input required placeholder=\"Search\" onChange={this.searchCoursesMobile} />\r\n                                                            <label>Search</label>\r\n                                                            <span className=\"a4-input-error\"></span>\r\n                                                            <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                                                <Error />\r\n                                                            </svg>\r\n                                                        </div>\r\n                                                    </div>\r\n                                                    <div className=\"a4-mobile-filter-list\">\r\n                                                        {\r\n                                                            categoryFilters && categoryFilters.length > 0 &&\r\n                                                            <>\r\n                                                                <div className=\"a4-mobile-filter-list-title\">\r\n                                                                    <h4>Category</h4>\r\n                                                                </div>\r\n                                                                <ul className=\"a4-mobile-filter-items\">\r\n                                                                    <li className=\"a4-mobile-filter-items-item -active\" data-filter-type=\"category\" data-value=\"\" key={0} onClick={this.clickMobileFilterItem}>\r\n                                                                        <span>All Categories</span>\r\n                                                                    </li>\r\n                                                                    {\r\n                                                                        categoryFilters && categoryFilters.length > 0 && categoryFilters.map((filter, index) => {\r\n                                                                            return <li className=\"a4-mobile-filter-items-item\" data-filter-type=\"category\" data-value={filter.replace(/\\s+/g, \"-\").trim().toLowerCase()} key={index + 1} onClick={this.clickMobileFilterItem}>\r\n                                                                                <span>{filter}</span>\r\n                                                                            </li>\r\n                                                                        })\r\n                                                                    }\r\n                                                                </ul>\r\n                                                            </>\r\n                                                        }\r\n                                                    </div>\r\n                                                    <div className=\"a4-mobile-filter-list\">\r\n                                                        {\r\n                                                            sortOptions && sortOptions.length > 0 &&\r\n                                                            <>\r\n                                                                <div className=\"a4-mobile-filter-list-title\">\r\n                                                                    <h4>Sort</h4>\r\n                                                                </div>\r\n                                                                <ul className=\"a4-mobile-filter-items\">\r\n                                                                    <li className=\"a4-mobile-filter-items-item -active\" data-filter-type=\"sort\" data-value=\"default\" key={0} onClick={this.clickMobileFilterItem}>\r\n                                                                        <span>Default</span>\r\n                                                                    </li>\r\n                                                                    {\r\n                                                                        sortOptions && sortOptions.length > 0 && sortOptions.map((option, index) => {\r\n                                                                            return <li className=\"a4-mobile-filter-items-item\" data-filter-type=\"sort\" data-value={option.replace(/\\s+/g, \"-\").trim().toLowerCase()} key={index + 1} onClick={this.clickMobileFilterItem}>\r\n                                                                                <span>{option === \"Credits\" ? bootstrapService.getCreditsTerm(2.0) : option}</span>\r\n                                                                            </li>\r\n                                                                        })\r\n                                                                    }\r\n                                                                </ul>\r\n                                                            </>\r\n                                                        }\r\n                                                    </div>\r\n                                                </div>\r\n                                                <div className=\"a4-mobile-filter-control\">\r\n                                                    <button className=\"a4-btn -primary\" ref={button => this.mobileSubmitButton = button} onClick={this.clickMobileSubmit}>\r\n                                                        Show &nbsp;\r\n                                                        <span className=\"a4-mobile-filter-control-course-count\">{courses ? courses.length : 0} courses</span>\r\n                                                    </button>\r\n                                                </div>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                </section>\r\n                                <section className=\"a4-course-catalog-list\" key={renderKey}>\r\n                                    <div className=\"a4-course-catalog-list-container\">\r\n                                        <div className=\"a4-course-catalog-list-content\">\r\n                                            <ul className=\"a4-course-catalog-list-items\" ref={ul => this.coursesList = ul}>\r\n                                                {\r\n                                                    pagedCourses &&\r\n                                                    pagedCourses.map((course, index) => {\r\n                                                        const description = course.description ? course.description.substring(0, 220).split(\" \").slice(0, -1).join(\" \") + \"...\" : \"...\";\r\n\r\n                                                        return <li key={index}>\r\n                                                            <Link to={`/course/${course.id}`} className=\"a4-course-catalog-list-items-item\">\r\n                                                                {\r\n                                                                    course.imageUrl &&\r\n                                                                    <div className=\"a4-course-catalog-list-items-item-image\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-offset=\"-1\">\r\n                                                                        <img src={course.imageUrl ? course.imageUrl : placeholderImage} alt=\"\" />\r\n                                                                    </div>\r\n                                                                }\r\n                                                                <div className=\"a4-course-catalog-list-items-item-details\">\r\n                                                                    <div className=\"a4-course-catalog-list-items-item-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-offset=\"-1\">\r\n                                                                        <h4>{course.title}</h4>\r\n                                                                    </div>\r\n                                                                    <div className=\"a4-course-catalog-list-items-item-info\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-offset=\"-1\">\r\n                                                                        <div className=\"a4-course-catalog-list-items-item-info-item\">\r\n                                                                            <div className=\"a4-course-catalog-list-items-item-info-label\">{bootstrapService.getCreditsTerm(2)}:</div>\r\n                                                                            <span>{course.credits.toFixed(1)}</span>\r\n                                                                        </div>\r\n                                                                        <div className=\"a4-course-catalog-list-items-item-info-item -right\">\r\n                                                                        {\r\n                                                                            showReleaseDate && course.releaseDate &&\r\n                                                                            <>\r\n                                                                                <div className=\"a4-course-catalog-list-items-item-info-label\">Publish Date:</div>\r\n                                                                                <span>{new Date(course.releaseDate).toLocaleDateString(\"en-US\", {month: 'short', year: 'numeric'})}</span>\r\n                                                                            </>\r\n                                                                        }\r\n                                                                        {\r\n                                                                            !showReleaseDate &&\r\n                                                                            <>\r\n                                                                                <div className=\"a4-course-catalog-list-items-item-info-label\">Delivery Method:</div>\r\n                                                                                <span>{course.deliveryMethod}</span>\r\n                                                                            </>\r\n                                                                        }\r\n                                                                        </div>\r\n                                                                        {\r\n                                                                            !showReleaseDate && course.schedules && course.schedules[0] &&\r\n                                                                            <div className=\"a4-course-catalog-list-items-item-info-item -right\">\r\n                                                                                <div className=\"a4-course-catalog-list-items-item-info-label\">Next Session:</div>\r\n                                                                                <span>{new Date(course.schedules[0].startDate).toLocaleDateString(\"en-US\", {month: 'short', day: 'numeric'})}</span>\r\n                                                                            </div>\r\n                                                                        }\r\n                                                                    </div>\r\n                                                                    <div className=\"a4-course-catalog-list-items-item-container\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-offset=\"-1\">\r\n                                                                        <div className=\"a4-course-catalog-list-items-item-description\">\r\n                                                                            {description}\r\n                                                                        </div>\r\n                                                                        <div className=\"a4-course-catalog-list-items-item-control\">\r\n                                                                            <span>Learn More</span>\r\n                                                                        </div>\r\n                                                                    </div>\r\n                                                                    \r\n                                                                </div>\r\n                                                            </Link>\r\n                                                        </li>\r\n                                                    })\r\n                                                }\r\n                                            </ul>\r\n                                            {\r\n                                                courses && courses.length > 10 &&\r\n                                                <Pages count={Math.ceil(courses.length / 10)} page={this.state.pageNumber + 1} size=\"large\" onChange={this.changeCoursesPage} />\r\n                                            }\r\n                                            {\r\n                                                (this.state.categoryFilter || this.state.searchFilter) && courses.length === 0 &&\r\n                                                <Empty name=\"courses\"/>\r\n                                            }\r\n                                        </div>\r\n                                    </div>\r\n                                </section>\r\n                                <Subscribe />\r\n                                <Footer />\r\n                            </div>\r\n                        </div>\r\n                    </>\r\n                }\r\n            </>\r\n        )\r\n    }\r\n}\r\n\r\nexport default Courses;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n  d: \"M6 9L2 5L6 1\",\n  stroke: \"current\",\n  strokeWidth: 2,\n  strokeLinecap: \"round\"\n});\n\nfunction SvgLessThan(_ref, svgRef) {\n  var title = _ref.title,\n      titleId = _ref.titleId,\n      props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    viewBox: \"0 0 7 10\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLessThan);\nexport default \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgNyAxMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxwYXRoIGQ9Ik02IDlMMiA1TDYgMSIgc3Ryb2tlPSJjdXJyZW50IiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPg0KPC9zdmc+DQo=\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n  d: \"M1 9L5 5L0.999999 1\",\n  stroke: \"current\",\n  strokeWidth: 2,\n  strokeLinecap: \"round\"\n});\n\nfunction SvgGreaterThan(_ref, svgRef) {\n  var title = _ref.title,\n      titleId = _ref.titleId,\n      props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    viewBox: \"0 0 7 10\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgGreaterThan);\nexport default \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgNyAxMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxwYXRoIGQ9Ik0xIDlMNSA1TDAuOTk5OTk5IDEiIHN0cm9rZT0iY3VycmVudCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4NCjwvc3ZnPg0K\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n  d: \"M8.99297 0.666504C4.39297 0.666504 0.667969 4.39984 0.667969 8.99984C0.667969 13.5998 4.39297 17.3332 8.99297 17.3332C13.6013 17.3332 17.3346 13.5998 17.3346 8.99984C17.3346 4.39984 13.6013 0.666504 8.99297 0.666504ZM9.0013 15.6665C5.31797 15.6665 2.33464 12.6832 2.33464 8.99984C2.33464 5.3165 5.31797 2.33317 9.0013 2.33317C12.6846 2.33317 15.668 5.3165 15.668 8.99984C15.668 12.6832 12.6846 15.6665 9.0013 15.6665ZM9.41797 4.83317H8.16797V9.83317L12.543 12.4582L13.168 11.4332L9.41797 9.20817V4.83317Z\",\n  fill: \"current\"\n});\n\nfunction SvgClock(_ref, svgRef) {\n  var title = _ref.title,\n      titleId = _ref.titleId,\n      props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    viewBox: \"0 0 18 18\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgClock);\nexport default \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQo8cGF0aCBkPSJNOC45OTI5NyAwLjY2NjUwNEM0LjM5Mjk3IDAuNjY2NTA0IDAuNjY3OTY5IDQuMzk5ODQgMC42Njc5NjkgOC45OTk4NEMwLjY2Nzk2OSAxMy41OTk4IDQuMzkyOTcgMTcuMzMzMiA4Ljk5Mjk3IDE3LjMzMzJDMTMuNjAxMyAxNy4zMzMyIDE3LjMzNDYgMTMuNTk5OCAxNy4zMzQ2IDguOTk5ODRDMTcuMzM0NiA0LjM5OTg0IDEzLjYwMTMgMC42NjY1MDQgOC45OTI5NyAwLjY2NjUwNFpNOS4wMDEzIDE1LjY2NjVDNS4zMTc5NyAxNS42NjY1IDIuMzM0NjQgMTIuNjgzMiAyLjMzNDY0IDguOTk5ODRDMi4zMzQ2NCA1LjMxNjUgNS4zMTc5NyAyLjMzMzE3IDkuMDAxMyAyLjMzMzE3QzEyLjY4NDYgMi4zMzMxNyAxNS42NjggNS4zMTY1IDE1LjY2OCA4Ljk5OTg0QzE1LjY2OCAxMi42ODMyIDEyLjY4NDYgMTUuNjY2NSA5LjAwMTMgMTUuNjY2NVpNOS40MTc5NyA0LjgzMzE3SDguMTY3OTdWOS44MzMxN0wxMi41NDMgMTIuNDU4MkwxMy4xNjggMTEuNDMzMkw5LjQxNzk3IDkuMjA4MTdWNC44MzMxN1oiIGZpbGw9ImN1cnJlbnQiLz4NCjwvc3ZnPg0K\";\nexport { ForwardRef as ReactComponent };","class ScheduleService {\r\n\r\n    getDay(date) {\r\n        return new Date(date).getDate();\r\n    }\r\n\r\n    getMonth(date) {\r\n        return new Date(date).getMonth();\r\n    }\r\n\r\n    getYear(date) {\r\n        return new Date(date).getFullYear();\r\n    }\r\n\r\n    getFirstDayOfWeek(month, year) {\r\n        return new Date(year, month, 1).getDay();\r\n    }\r\n\r\n    getLastDayOfWeek(month, year) {\r\n        return new Date(year, month, this.getDaysInMonth(month, year)).getDay();\r\n    }\r\n\r\n    getDaysInMonth(month, year) {\r\n        return new Date(year, month + 1, 0).getDate();\r\n    }\r\n\r\n    getDaysInPreviousMonth(month, year) {\r\n        return new Date(year, month, 0).getDate();\r\n    }\r\n\r\n    getDaysInNextMonth(month, year) {\r\n        return new Date(year, month + 2, 0).getDate();\r\n    }\r\n\r\n    getTimeZone() {\r\n        const today = new Date();\r\n        const short = today.toLocaleDateString(undefined);\r\n        const full = today.toLocaleDateString(undefined, { timeZoneName: 'short' });\r\n\r\n        // Trying to remove date from the string in a locale-agnostic way\r\n        const shortIndex = full.indexOf(short);\r\n        if (shortIndex >= 0) {\r\n            const trimmed = full.substring(0, shortIndex) + full.substring(shortIndex + short.length);\r\n            \r\n            // by this time `trimmed` should be the timezone's name with some punctuation -\r\n            // trim it from both sides\r\n            return trimmed.replace(/^[\\s,.\\-:;]+|[\\s,.\\-:;]+$/g, '');\r\n\r\n        } else {\r\n            // in some magic case when short representation of date is not present in the long one, just return the long one as a fallback, since it should contain the timezone's name\r\n            return full;\r\n        }\r\n    }\r\n}\r\n\r\nconst scheduleService = new ScheduleService();\r\nexport default scheduleService;","import React from 'react'\r\nimport './Calendar.scss'\r\n\r\nimport BubbleButton from '../BubbleButton/BubbleButton'\r\nimport { ReactComponent as PreviousButton } from '../../../assets/less-than.svg'\r\nimport { ReactComponent as NextButton } from '../../../assets/greater-than.svg'\r\nimport { ReactComponent as Clock } from '../../../assets/clock.svg'\r\nimport bootstrapService from '../../../services/BootstrapService'\r\nimport scheduleService from '../../../services/ScheduleService'\r\n\r\nclass Calendar extends React.Component {\r\n    // Constructor\r\n    constructor(props) {\r\n        super(props);\r\n\r\n        // State\r\n        this.state = {\r\n            currentSchedule: this.props.schedules[0],\r\n            currentMonth: scheduleService.getMonth(this.props.schedules[0].startDate),\r\n            currentYear: scheduleService.getYear(this.props.schedules[0].startDate),\r\n            days: [],\r\n        }\r\n\r\n        // This Binding\r\n        this.clickPreviousMonth = this.clickPreviousMonth.bind(this);\r\n        this.clickNextMonth = this.clickNextMonth.bind(this);\r\n        this.clickDay = this.clickDay.bind(this);\r\n        this.clickBuy = this.clickBuy.bind(this);\r\n    }\r\n\r\n    // Lifecyle\r\n    componentDidMount() {\r\n        this.setupSchedules();\r\n    }\r\n\r\n    // Helpers\r\n    setupSchedules() {\r\n        const days = this.getDays(scheduleService.getMonth(this.state.currentSchedule.startDate), scheduleService.getYear(this.state.currentSchedule.startDate), this.state.currentSchedule);\r\n        this.setState({ days: days }, this.props.selectSchedule(this.state.currentSchedule));\r\n    }\r\n\r\n    getDays(month, year, currentSchedule) {\r\n        const firstDayOfWeek = scheduleService.getFirstDayOfWeek(month, year);\r\n        const lastDayOfWeek = scheduleService.getLastDayOfWeek(month, year);\r\n        const daysInMonth = scheduleService.getDaysInMonth(month, year);\r\n        const daysinPreviousMonth = scheduleService.getDaysInPreviousMonth(month, year);\r\n\r\n        let days = [];\r\n\r\n        // Add Previous Month's Days\r\n        for (let i = daysinPreviousMonth - firstDayOfWeek + 1; i <= daysinPreviousMonth; i++) {\r\n            days.push({ \"day\": i, \"disabled\": true, \"unselected\": false, \"selected\": false })\r\n        }\r\n\r\n        // Add This Month's Days\r\n        for (let i = 1; i <= daysInMonth; i++) {\r\n\r\n            let unselected = false;\r\n            let selected = false;\r\n\r\n            this.props.schedules.filter(s => scheduleService.getMonth(s.startDate) === month && scheduleService.getYear(s.startDate) === year).forEach((schedule, index) => {\r\n                const day = scheduleService.getDay(schedule.startDate);\r\n                if (day === i) {\r\n                    unselected = true;\r\n\r\n                    if (schedule.startDate === currentSchedule.startDate) {\r\n                        selected = true;\r\n                    }\r\n                }\r\n            })\r\n\r\n            days.push({ \"day\": i, \"disabled\": false, \"unselected\": unselected, \"selected\": selected })\r\n        }\r\n\r\n        // Add Next Month's Days\r\n        for (let i = 1; i <= 6-lastDayOfWeek; i++) {\r\n            days.push({ \"day\": i, \"disabled\": true, \"unselected\": false, \"selected\": false });\r\n        }\r\n\r\n        return days;\r\n    }\r\n\r\n    // Event Handlers\r\n    clickPreviousMonth(e) {\r\n        e.preventDefault();\r\n\r\n        let previousMonth = this.state.currentMonth - 1;\r\n        let year = this.state.currentYear;\r\n        if (previousMonth === -1) {\r\n            previousMonth = 11;\r\n            year = year - 1;\r\n        }\r\n\r\n        const days = this.getDays(previousMonth, year, this.state.currentSchedule);\r\n        this.setState({ currentMonth: previousMonth, currentYear: year, days: days });\r\n    }\r\n\r\n    clickNextMonth(e) {\r\n        e.preventDefault();\r\n\r\n        let nextMonth = this.state.currentMonth + 1;\r\n        let year = this.state.currentYear;\r\n        if (nextMonth === 12) {\r\n            nextMonth = 0;\r\n            year = year + 1;\r\n        }\r\n\r\n        const days = this.getDays(nextMonth, year, this.state.currentSchedule);\r\n        this.setState({ currentMonth: nextMonth, currentYear: year, days: days });\r\n    }\r\n\r\n    clickDay(day) {\r\n        this.props.schedules.forEach((schedule, index) => {\r\n            if (scheduleService.getDay(schedule.startDate) === day.day && scheduleService.getMonth(schedule.startDate) === this.state.currentMonth && scheduleService.getYear(schedule.startDate) === this.state.currentYear) {\r\n                const days = this.getDays(this.state.currentMonth, this.state.currentYear, schedule);\r\n                this.setState({ days: days, currentSchedule: schedule }, this.props.selectSchedule(schedule));\r\n            }\r\n        })\r\n    }\r\n\r\n    clickBuy(e) {\r\n        e.stopPropagation();\r\n        this.props.buySchedule(this.props.item);\r\n    }\r\n\r\n    // Component\r\n    render() {\r\n        const daysOfWeek = [\"SUN\",\"MON\",\"TUE\",\"WED\",\"THU\",\"FRI\",\"SAT\"];\r\n        const currentMonthAndYear = new Date(this.state.currentYear, this.state.currentMonth).toLocaleDateString(\"en-US\", {month: 'long', year: 'numeric'});;\r\n        const days = this.state.days;\r\n\r\n        const selectedDate = new Date(this.state.currentSchedule.startDate).toLocaleDateString(\"en-US\", {weekday: 'long', month: 'long', day: 'numeric'});\r\n        const selectedTime = `${new Date(this.state.currentSchedule.startDate).toLocaleTimeString(\"en-US\", {hour: \"2-digit\", minute: \"2-digit\"})} - ${new Date(this.state.currentSchedule.endDate).toLocaleTimeString(\"en-US\", {hour: \"2-digit\", minute: \"2-digit\"})}`;\r\n        const selectedDuration = `${Math.abs(new Date(this.state.currentSchedule.endDate) - new Date(this.state.currentSchedule.startDate)) / 36e5} hours`;\r\n\r\n        return (\r\n            <div className=\"a4-calendar\">\r\n                <div className=\"a4-calendar-container\">\r\n                    <div className=\"a4-calendar-content\">\r\n                        <div className=\"a4-calendar-header\">\r\n                            <div className=\"a4-calendar-header-current-month\">\r\n                                <h3>{currentMonthAndYear}</h3>\r\n                            </div>\r\n                            <div className=\"a4-calendar-header-controls\">\r\n                                <div className=\"a4-calendar-header-controls-button -previous\" onClick={this.clickPreviousMonth}>\r\n                                    <svg className=\"a4-svgsprite\">\r\n                                        <PreviousButton stroke={bootstrapService.primaryColor} />\r\n                                    </svg>\r\n                                </div>\r\n                                <div className=\"a4-calendar-header-controls-button\" onClick={this.clickNextMonth}>\r\n                                    <svg className=\"a4-svgsprite\">\r\n                                        <NextButton stroke={bootstrapService.primaryColor} />\r\n                                    </svg>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <div className=\"a4-calendar-days\">\r\n                            <div className=\"a4-calendar-days-row\" style={{\"paddingBottom\": \"5px\"}}>\r\n                            {\r\n                                daysOfWeek.map((day, index) => {\r\n                                    return <div key={index} className=\"a4-calendar-days-cell\">\r\n                                        <div className=\"a4-calendar-days-header\">{day}</div>\r\n                                    </div>\r\n                                })\r\n                            }\r\n                            </div>\r\n                            {\r\n                                [...Array(6)].map((row, rowIndex) => {\r\n                                    return <div key={rowIndex} className=\"a4-calendar-days-row\">\r\n                                    {\r\n                                        days.slice(rowIndex * 7, (rowIndex+1)*7).map((day, dayIndex) => {\r\n                                            const canClick = day.unselected || day.selected;\r\n                                            return <div key={dayIndex} className={`a4-calendar-days-cell ${day.disabled ? \"-disabled\" : \"\"} ${day.unselected ? \"-unselected\" : \"\"} ${day.selected ? \"-selected\" : \"\"}`} onClick={canClick ? () => this.clickDay(day) : undefined}>\r\n                                                <div className=\"a4-calendar-days-day\">{day.day}</div>\r\n                                            </div>\r\n                                        })\r\n                                    }\r\n                                    </div>\r\n                                })\r\n                            }\r\n                            \r\n                        </div>\r\n                    </div>\r\n                    <div className=\"a4-calendar-info\">\r\n                        <div className=\"a4-calendar-info-item\">\r\n                            <div className=\"a4-calendar-info-label\">Date</div>\r\n                            <div className=\"a4-calendar-info-text\">{selectedDate}</div>\r\n                        </div>\r\n                        <div className=\"a4-calendar-info-item\">\r\n                            <div className=\"a4-calendar-info-label\">Time</div>\r\n                            <div className=\"a4-calendar-info-text\">{selectedTime} ({scheduleService.getTimeZone()})</div>\r\n                        </div>\r\n                        <div className=\"a4-calendar-info-item\">\r\n                            <div className=\"a4-calendar-info-label\">Duration</div>\r\n                            <div className=\"a4-calendar-info-text -duration\">\r\n                                <svg className=\"a4-svgsprite\">\r\n                                    <Clock fill={bootstrapService.primaryColor} />\r\n                                </svg>\r\n                                {selectedDuration}\r\n                            </div>\r\n                        </div>\r\n                        <div className=\"a4-calendar-info-item -buy\">\r\n                            <BubbleButton onClick={this.clickBuy} className=\"a4-course-plan-buy-now -primary\">Buy Now</BubbleButton>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        )\r\n    }\r\n}\r\n\r\nexport default Calendar;","import httpService from './HttpService';\r\nimport sessionService from './SessionService'\r\nimport memberService from './MemberService'\r\nimport { MemberType } from './MemberService'\r\n\r\nclass PaymentService {\r\n\r\n    constructor() {\r\n        // State\r\n        this.memberType = \"register\";\r\n        this.paymentType = \"cc\";\r\n\r\n        // Data\r\n        this.member = null;\r\n        this.item = null;\r\n        this.schedule = null;\r\n        this.group = null;\r\n        this.creditCard = null;\r\n        this.sandboxTicket = null;\r\n\r\n        // Validation\r\n        this.paypalValidated = false;\r\n    }\r\n\r\n    reset() {\r\n        this.memberType = \"register\";\r\n        this.paymentType = \"cc\";\r\n        \r\n        this.member = null;\r\n        this.item = null;\r\n        this.schedule = null;\r\n        this.group = null;\r\n        this.creditCard = null;\r\n        this.sandboxTicket = null;\r\n    }\r\n    \r\n    getSandboxTicket() {\r\n        const url = 'api/test/sandbox/ticket';\r\n        const body = {};\r\n\r\n        return httpService.post(url, body)\r\n        .then(json => {\r\n            if (json.succeeded) {\r\n                this.sandboxTicket = json.value;\r\n            }\r\n\r\n            return json;\r\n        });\r\n    }\r\n\r\n    buyItemCreditCard(buyRequest) {\r\n        if (this.member && this.item && this.creditCard) {\r\n            const url = 'api/order/process';\r\n            const body = {\r\n                \"recaptchaToken\": buyRequest.recaptchaToken,\r\n                \"acceptedTerms\": true,\r\n                \"memberRequest\": {\r\n                    \"requestType\": this.member.requestType,\r\n                    \"email\": this.member.email,\r\n                    \"password\": this.member.password,\r\n                    \"firstName\": this.member.firstName,\r\n                    \"lastName\": this.member.lastName,\r\n                    \"memberType\": MemberType.Payment,\r\n                    \"autoLogin\": true,\r\n                    \"origin\": window.location.origin,\r\n                    \"timezoneOffset\": this.member.timezoneOffset,\r\n                    \"contactId\": memberService.getMtcId()\r\n                },\r\n                \"itemRequests\": [\r\n                    {\r\n                        \"itemId\": this.item.id,\r\n                        \"quantity\": this.item.quantity,\r\n                        \"scheduleId\": this.schedule ? this.schedule.scheduleId : null,\r\n                        \"args\": {\r\n                            \"name\": this.group ? this.group.groupName : null,\r\n                            \"adminOnly\": this.group ? this.group.isAdminOnly : null,\r\n                        }\r\n                    }\r\n                ],\r\n                \"paymentRequests\": [\r\n                    {\r\n                        \"paymentType\": 1,\r\n                        \"creditCardNo\": this.creditCard.creditCardNo,\r\n                        \"expirationMonth\": this.creditCard.expirationMonth,\r\n                        \"expirationYear\": this.creditCard.expirationYear,\r\n                        \"securityCode\": this.creditCard.securityCode,\r\n                        \"sandboxTicket\": this.sandboxTicket\r\n                    }\r\n                ]\r\n            };\r\n\r\n            return httpService.post(url, body)\r\n            .then(json => {\r\n                if (json.succeeded) {\r\n                    sessionService.setLocalUserSession(json);\r\n                }\r\n                return json;\r\n            });\r\n        }\r\n        else {\r\n            console.log(\"Buy Item Register Failed - Missing Data\");\r\n        }\r\n    }\r\n\r\n    buyItemPayPal(buyRequest) {\r\n        if (this.member && this.item) {\r\n            const url = 'api/order/process';\r\n            const body = {\r\n                \"recaptchaToken\": buyRequest.recaptchaToken,\r\n                \"acceptedTerms\": true,\r\n                \"memberRequest\": {\r\n                    \"requestType\": this.member.requestType,\r\n                    \"email\": this.member.email,\r\n                    \"password\": this.member.password,\r\n                    \"firstName\": this.member.firstName,\r\n                    \"lastName\": this.member.lastName,\r\n                    \"memberType\": MemberType.Payment,\r\n                    \"autoLogin\": true,\r\n                    \"origin\": window.location.origin,\r\n                    \"timezoneOffset\": this.member.timezoneOffset,\r\n                    \"contactId\": memberService.getMtcId()\r\n                },\r\n                \"itemRequests\": [\r\n                    {\r\n                        \"itemId\": this.item.id,\r\n                        \"quantity\": this.item.quantity,\r\n                        \"scheduleId\": this.schedule ? this.schedule.scheduleId : null,\r\n                        \"args\": {\r\n                            \"name\": this.group ? this.group.name : null,\r\n                            \"adminOnly\": this.group ? this.group.isAdminOnly : null,\r\n                        }\r\n                    }\r\n                ],\r\n                \"paymentRequests\": [\r\n                    {\r\n                        \"paymentType\": 2,\r\n                        \"pathname\": \"/\",\r\n                        \"hash\": \"Pricing\",\r\n                        \"payPalReturnUrl\": `${window.location.origin}/complete-paypal`,\r\n                        \"creditCardNo\": null,\r\n                        \"expirationMonth\": null,\r\n                        \"expirationYear\": null,\r\n                        \"securityCode\": null,\r\n                        \"sandboxTicket\": this.sandboxTicket,\r\n                        \"payerId\": buyRequest.payerId,\r\n                    }\r\n                ]\r\n            };\r\n\r\n            return httpService.post(url, body);\r\n        }\r\n        else {\r\n            console.log(\"Buy Item PayPal Failed - Missing Data\")\r\n        }\r\n    }\r\n\r\n    buyItemOffline(buyRequest) {\r\n        if (this.member && this.item) {\r\n            const url = 'api/order/process';\r\n            const body = {\r\n                \"recaptchaToken\": buyRequest.recaptchaToken,\r\n                \"acceptedTerms\": true,\r\n                \"memberRequest\": {\r\n                    \"requestType\": this.member.requestType,\r\n                    \"email\": this.member.email,\r\n                    \"password\": this.member.password,\r\n                    \"firstName\": this.member.firstName,\r\n                    \"lastName\": this.member.lastName,\r\n                    \"memberType\": MemberType.Payment,\r\n                    \"autoLogin\": true,\r\n                    \"origin\": window.location.origin,\r\n                    \"timezoneOffset\": this.member.timezoneOffset,\r\n                    \"contactId\": memberService.getMtcId()\r\n                },\r\n                \"itemRequests\": [\r\n                    {\r\n                        \"itemId\": this.item.id,\r\n                        \"quantity\": this.item.quantity,\r\n                        \"scheduleId\": this.schedule ? this.schedule.scheduleId : null,\r\n                        \"args\": {\r\n                            \"name\": this.group ? this.group.name : null,\r\n                            \"adminOnly\": this.group ? this.group.isAdminOnly : null,\r\n                        }\r\n                    }\r\n                ],\r\n                \"paymentRequests\": [\r\n                    {\r\n                        \"paymentType\": 4,\r\n                        \"sandboxTicket\": this.sandboxTicket\r\n                    }\r\n                ]\r\n            };\r\n\r\n            return httpService.post(url, body)\r\n            .then(json => {\r\n                if (json.succeeded) {\r\n                    sessionService.setLocalUserSession(json);\r\n                }\r\n                return json;\r\n            });\r\n        }\r\n        else {\r\n            console.log(\"Buy Item PayPal Failed - Missing Data\")\r\n        }\r\n    }\r\n\r\n    getPayPalOrder(token) {\r\n        const url = 'api/order/filterone';\r\n        const body = {\r\n            token: token,\r\n        };\r\n\r\n        return httpService.post(url, body);\r\n    }\r\n\r\n    cancelPayPalPayment(orderId, paymentRequestId) {\r\n        const url = 'api/order/${orderId}/payment/${paymentRequestId}/cancel';\r\n        const body = null;\r\n\r\n        return httpService.post(url, body);\r\n    }\r\n}\r\n\r\nconst paymentService = new PaymentService();\r\nexport default paymentService;","import React from 'react'\r\nimport './CourseDetails.scss'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Reviews from '../shared/Reviews/Reviews'\r\nimport Subscribe from '../shared/Subscribe/Subscribe'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport BubbleButton from '../shared/BubbleButton/BubbleButton'\r\nimport Calendar from '../shared/Calendar/Calendar'\r\nimport placeholderImage from '../../assets/course-plug.svg'\r\nimport { ReactComponent as Avatar } from '../../assets/avatar-plug.svg'\r\nimport { ReactComponent as CheckMark } from '../../assets/check-mark.svg'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\nimport paymentService from '../../services/PaymentService'\r\n\r\nclass CourseDetails extends React.Component {\r\n    // Constructor\r\n    constructor(props) {\r\n        super(props);\r\n\r\n        // Refs\r\n        this.courseDescription = null;\r\n        this.courseDescriptionButton = null;\r\n        this.authorBios = [];\r\n        this.authorBiosButtons = [];\r\n        this.courseObjectives = null;\r\n        this.courseObjectivesButton = null;\r\n\r\n        // State\r\n        this.state = {\r\n            schedule: null\r\n        }\r\n\r\n        // This Binding\r\n        this.clickReadMoreDescription = this.clickReadMoreDescription.bind(this);\r\n        this.clickReadMoreBio = this.clickReadMoreBio.bind(this);\r\n        this.clickReadMoreObjectives = this.clickReadMoreObjectives.bind(this);\r\n        this.goToBuy = this.goToBuy.bind(this);\r\n        this.selectSchedule = this.selectSchedule.bind(this);\r\n        this.buySchedule = this.buySchedule.bind(this);\r\n    }\r\n\r\n    // Lifecycle\r\n    componentDidMount() {\r\n        window.scrollTo(0, 0);\r\n        this.setupReadMoreButtons();\r\n    }\r\n\r\n    // Helpers\r\n    setupReadMoreButtons() {\r\n        // Timeout hack ensures function runs after Render (so that REFs are set)\r\n        setTimeout(() => {\r\n            if (this.courseDescription) {\r\n                const style = getComputedStyle(this.courseDescription);\r\n                // console.log(\"description = \" + parseInt(style.height))\r\n                if (parseInt(style.height) < 200) {\r\n                    this.courseDescriptionButton.style.display = \"none\";\r\n                }\r\n                // else {\r\n                //     this.courseDescription.classList.add(\"-blur\");\r\n                // }\r\n            }\r\n\r\n            if (this.authorBios.length > 0) {\r\n\r\n                this.authorBios.forEach((bio, index) => {\r\n\r\n                    const style = getComputedStyle(bio);\r\n                    // console.log(\"bio = \" + parseInt(style.height))\r\n                    if (parseInt(style.height) < 100) {\r\n                        this.authorBiosButtons[index].style.display = \"none\";\r\n                    }\r\n                    // else {\r\n                    //     this.authorBios[index].classList.add(\"-blur\");\r\n                    // }\r\n                })\r\n            }\r\n\r\n            if (this.courseObjectives) {\r\n                const style = getComputedStyle(this.courseObjectives);\r\n                // console.log(\"objectives = \" + parseInt(style.height))\r\n                if (parseInt(style.height) < 300) {\r\n                    this.courseObjectivesButton.style.display = \"none\";\r\n                }\r\n                // else {\r\n                //     this.courseObjectives.classList.add(\"-blur\");\r\n                // }\r\n            }\r\n        }, 0);\r\n    }\r\n\r\n    // Event Hanlders\r\n    clickReadMoreDescription(e) {\r\n        e.preventDefault();\r\n        this.courseDescription.classList.add(\"-show\");\r\n        this.courseDescriptionButton.style.display = \"none\";\r\n    }\r\n\r\n    clickReadMoreBio(e) {\r\n        e.preventDefault();\r\n        const index = e.currentTarget.getAttribute(\"index\")\r\n        this.authorBios[index].classList.add(\"-show\");\r\n        this.authorBiosButtons[index].style.display = \"none\";\r\n    }\r\n\r\n    clickReadMoreObjectives(e) {\r\n        e.preventDefault();\r\n        this.courseObjectives.classList.add(\"-show\");\r\n        this.courseObjectivesButton.style.display = \"none\";\r\n    }\r\n\r\n    goToBuy(item) {\r\n        if (item.price) {\r\n            paymentService.reset();\r\n            paymentService.item = { ...item, quantity: 1 };\r\n\r\n            if (this.state.schedule) {\r\n                paymentService.schedule = this.state.schedule;\r\n            }\r\n\r\n            this.props.history.push(\"/buy\");\r\n        }\r\n        else {\r\n            this.props.history.push({ pathname: \"/\", state: { tryForFree: true } });\r\n        }\r\n    }\r\n\r\n    selectSchedule(schedule) {\r\n        this.setState({ schedule: schedule });\r\n    }\r\n\r\n    buySchedule(item) {\r\n        this.goToBuy(item)\r\n    }\r\n\r\n    // Data\r\n    getBundles(courseId) {\r\n        const bundles = bootstrapService.data.courseBundleTypes;\r\n        if (bundles) {\r\n            let bundlesWithCourse = [];\r\n            bundles.forEach((bundle, index) => {\r\n                if (bundle.courseDigests && bundle.courseDigests.filter(c => c.id === courseId).length > 0) {\r\n                    bundlesWithCourse.push(bundle);\r\n                }\r\n            })\r\n            return bundlesWithCourse.length > 0 ? bundlesWithCourse : null;\r\n        }\r\n    }\r\n\r\n    // Component\r\n    render() {\r\n        const courses = bootstrapService.data.courseCatalog.courses;\r\n        const course = courses.find(c => c.id === this.props.match.params.id);\r\n\r\n        if (!course) {\r\n            this.props.history.push(\"/courses\");\r\n            return null;\r\n        }\r\n\r\n        const categoryTerm = bootstrapService.getCategoryTerm();\r\n        const releaseDate = course ? new Date(course.releaseDate).toDateString().split(' ').slice(1).join(' ') : null;\r\n\r\n        const memberships = bootstrapService.data.passTypes;\r\n        const bundles = course ? this.getBundles(course.id) : null;\r\n\r\n        const schedule = this.state.schedule ? new Date(this.state.schedule.startDate).toLocaleDateString(\"en-US\", { weekday: 'long', month: 'long', day: 'numeric' }) : null;\r\n\r\n        const showReleaseDate = bootstrapService.getShowReleaseDate();\r\n\r\n        return (\r\n            <>\r\n                <Navbar activeLink={bootstrapService.singleCourseId ? \"courses\" : \"\"} />\r\n                {\r\n                    course &&\r\n                    <div className=\"a4-view\">\r\n                        <div className=\"a4-layout a4-course-details\">\r\n                            <section className=\"a4-course-details-main\">\r\n                                <div className=\"a4-course-details-main-container\">\r\n                                    <div className=\"a4-course-details-main-content\">\r\n                                        {\r\n                                            course.imageUrl &&\r\n                                            <div className=\"a4-course-details-main-cover\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                                <img src={course.imageUrl ? course.imageUrl : placeholderImage} alt=\"\" />\r\n                                            </div>\r\n                                        }\r\n                                        <div className=\"a4-course-details-main-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                            <h1>{course.title}</h1>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </section>\r\n                            <section className=\"a4-course-details-info\">\r\n                                <div className=\"a4-course-details-info-container\">\r\n                                    <div className=\"a4-course-details-info-content\">\r\n                                        <div className=\"a4-course-details-info-side\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                            <ul className=\"a4-course-details-list\">\r\n                                                {/* <li className=\"a4-course-details-list-item\">\r\n                                                    <div className=\"a4-course-details-list-item-label\">Course No:</div>\r\n                                                    <div className=\"a4-course-details-list-item-text\">{course.courseNo}</div>\r\n                                                </li> */}\r\n                                                {\r\n                                                    course.subjectArea &&\r\n                                                    <li className=\"a4-course-details-list-item\">\r\n                                                        <div className=\"a4-course-details-list-item-label\">{categoryTerm}:</div>\r\n                                                        <div className=\"a4-course-details-list-item-text\">{course.subjectArea}</div>\r\n                                                    </li>\r\n                                                }\r\n                                                {\r\n                                                    course.audience &&\r\n                                                    <li className=\"a4-course-details-list-item\">\r\n                                                        <div className=\"a4-course-details-list-item-label\">Designed For:</div>\r\n                                                        <div className=\"a4-course-details-list-item-text\">{course.audience}</div>\r\n                                                    </li>\r\n                                                }\r\n                                                {\r\n                                                    course.deliveryMethod &&\r\n                                                    <li className=\"a4-course-details-list-item\">\r\n                                                        <div className=\"a4-course-details-list-item-label\">Delivery Method:</div>\r\n                                                        <div className=\"a4-course-details-list-item-text\">{course.deliveryMethod}</div>\r\n                                                    </li>\r\n                                                }\r\n                                                {\r\n                                                    course.schedules && course.schedules[0] &&\r\n                                                    <li className=\"a4-course-details-list-item\">\r\n                                                        <div className=\"a4-course-details-list-item-label\">Next Session:</div>\r\n                                                        <div className=\"a4-course-details-list-item-text\">{new Date(course.schedules[0].startDate).toLocaleDateString(\"en-US\", {weekday: 'long', month: 'short', day: 'numeric'})}</div>\r\n                                                    </li>\r\n                                                }\r\n                                                {\r\n                                                    course.knowledgeLevel &&\r\n                                                    <li className=\"a4-course-details-list-item\">\r\n                                                        <div className=\"a4-course-details-list-item-label\">Knowledge Level:</div>\r\n                                                        <div className=\"a4-course-details-list-item-text\">{course.knowledgeLevel}</div>\r\n                                                    </li>\r\n                                                }\r\n                                                {\r\n                                                    course.advancePreparation &&\r\n                                                    <li className=\"a4-course-details-list-item\">\r\n                                                        <div className=\"a4-course-details-list-item-label\">Advance Preparation:</div>\r\n                                                        <div className=\"a4-course-details-list-item-text\">{course.advancePreparation}</div>\r\n                                                    </li>\r\n                                                }\r\n                                                {\r\n                                                    course.prerequisites &&\r\n                                                    <li className=\"a4-course-details-list-item\">\r\n                                                        <div className=\"a4-course-details-list-item-label\">Prerequisites:</div>\r\n                                                        <div className=\"a4-course-details-list-item-text\">{course.prerequisites}</div>\r\n                                                    </li>\r\n                                                }\r\n                                                {\r\n                                                    course.commercialSupport &&\r\n                                                    <li className=\"a4-course-details-list-item\">\r\n                                                        <div className=\"a4-course-details-list-item-label\">Commercial Support:</div>\r\n                                                        <div className=\"a4-course-details-list-item-text\">{course.commercialSupport}</div>\r\n                                                    </li>\r\n                                                }\r\n                                                {\r\n                                                    course.jointProvidership &&\r\n                                                    <li className=\"a4-course-details-list-item\">\r\n                                                        <div className=\"a4-course-details-list-item-label\">Joint Providership:</div>\r\n                                                        <div className=\"a4-course-details-list-item-text\">{course.jointProvidership}</div>\r\n                                                    </li>\r\n                                                }\r\n                                                {\r\n                                                    showReleaseDate && releaseDate &&\r\n                                                    <li className=\"a4-course-details-list-item\">\r\n                                                        <div className=\"a4-course-details-list-item-label\">Publish Date:</div>\r\n                                                        <div className=\"a4-course-details-list-item-text\">{releaseDate}</div>\r\n                                                    </li>\r\n                                                }\r\n                                                <li className=\"a4-course-details-list-item\">\r\n                                                    <div className=\"a4-course-details-list-item-label\">{bootstrapService.getCreditsTerm(2)}:</div>\r\n                                                    <div className=\"a4-course-details-list-item-text\">{course.credits.toFixed(1)}</div>\r\n                                                </li>\r\n                                            </ul>\r\n                                        </div>\r\n                                        <div className=\"a4-course-details-info-body\">\r\n                                            <div className=\"a4-course-details-about\">\r\n                                                <div className=\"a4-course-details-about-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                                    <h2>About Course</h2>\r\n                                                </div>\r\n                                                <div data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                                    <div className=\"a4-course-details-about-description\" ref={div => this.courseDescription = div} dangerouslySetInnerHTML={{ __html: course.description }}>\r\n                                                    </div>\r\n                                                    <div className=\"a4-course-details-about-control\">\r\n                                                        <button ref={button => this.courseDescriptionButton = button} onClick={this.clickReadMoreDescription}>Read More</button>\r\n                                                    </div>\r\n                                                </div>\r\n                                            </div>\r\n                                            {\r\n                                                course.authors && course.authors.map((author, index) => {\r\n                                                    return <div className=\"a4-course-details-from-author\" key={index}>\r\n                                                        <div className=\"a4-course-details-from-author-info\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                                            <div className=\"a4-course-details-from-author-avatar\">\r\n                                                                {\r\n                                                                    author.imageUrl &&\r\n                                                                    <img src={author.imageUrl} alt=\"\" />\r\n                                                                }\r\n                                                                {\r\n                                                                    !author.imageUrl &&\r\n                                                                    <Avatar />\r\n                                                                }\r\n                                                            </div>\r\n                                                            <div className=\"a4-course-details-from-author-details\">\r\n                                                                <div className=\"a4-course-details-from-author-name\">Author</div>\r\n                                                                <div className=\"a4-course-details-from-author-from\">{author.name} &nbsp; &nbsp; {author.designations}</div>\r\n                                                            </div>\r\n                                                        </div>\r\n                                                        {\r\n                                                            author.bio &&\r\n                                                            <div data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                                                <div className=\"a4-course-details-from-author-comment\" ref={div => this.authorBios[index] = div} dangerouslySetInnerHTML={{ __html: author.bio }}>\r\n                                                                </div>\r\n                                                                <div className=\"a4-course-details-about-control\">\r\n                                                                    <button index={index} ref={button => this.authorBiosButtons[index] = button} onClick={this.clickReadMoreBio}>Read More</button>\r\n                                                                </div>\r\n                                                            </div>\r\n                                                        }\r\n                                                    </div>\r\n                                                })\r\n                                            }\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </section>\r\n                            {\r\n                                course.sections &&\r\n                                <section className=\"a4-course-details-objectives\">\r\n                                    <div className=\"a4-course-details-objectives-container\">\r\n                                        <div className=\"a4-course-details-objectives-content\">\r\n                                            <div className=\"a4-course-details-objectives-side\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                                <h3>Learning Objectives:</h3>\r\n                                            </div>\r\n                                            <div className=\"a4-course-details-objectives-body\">\r\n                                                <div className=\"a4-course-details-objectives-sections\" ref={div => this.courseObjectives = div}>\r\n                                                    {\r\n                                                        course.sections.map((section, sectionIndex) => {\r\n                                                            return <div className=\"a4-course-details-objectives-section\" key={sectionIndex}>\r\n                                                                <div className=\"a4-course-details-objectives-section-header\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>{section.title}</div>\r\n                                                                <ul className=\"a4-course-details-objectives-list\">\r\n                                                                    {\r\n                                                                        section.objectives.map((objective, objectiveIndex) => {\r\n                                                                            return <li className=\"a4-course-details-objectives-list-item\" key={objectiveIndex} data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                                                                <div className=\"a4-course-details-objectives-list-item-number\"></div>\r\n                                                                                <div className=\"a4-course-details-objectives-list-item-info\">\r\n                                                                                    <p className=\"a4-course-details-objectives-list-item-description\">{objective}</p>\r\n                                                                                </div>\r\n                                                                            </li>\r\n                                                                        })\r\n                                                                    }\r\n                                                                </ul>\r\n                                                            </div>\r\n                                                        })\r\n                                                    }\r\n                                                </div>\r\n                                                <div className=\"a4-course-details-objectives-control\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                                    <button ref={button => this.courseObjectivesButton = button} onClick={this.clickReadMoreObjectives}>Read More</button>\r\n                                                </div>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                </section>\r\n                            }\r\n                            {\r\n                                course.schedules &&\r\n                                <section className=\"a4-course-details-schedules\">\r\n                                    <div className=\"a4-course-details-schedules-container\">\r\n                                        <div className=\"a4-course-details-schedules-content\">\r\n                                            <div className=\"a4-course-details-schedules-side\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                                <h3>Dates & Times:</h3>\r\n                                            </div>\r\n                                            <div className=\"a4-course-details-schedules-body\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                                <Calendar schedules={course.schedules} selectSchedule={this.selectSchedule} buySchedule={this.buySchedule} item={course.item} /> \r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                </section>\r\n                            }\r\n                            <section className=\"a4-course-details-pricing\">\r\n                                {\r\n                                    course.item &&\r\n                                    <div className=\"a4-course-details-pricing-course\">\r\n                                        <div className=\"a4-course-plan-container\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration='1400' data-aos-delay=\"0\" data-aos-anchor-placement=\"top-bottom\">\r\n                                            <div className=\"a4-course-plan-item\">\r\n                                                <div className=\"a4-course-plan-section\">\r\n                                                    <h3 className=\"a4-course-plan-title\">{course.item.price ? 'Buy' : 'Take'} Course</h3>\r\n                                                    <p className=\"a4-course-plan-description\">{course.title}</p>\r\n                                                    <p className=\"a4-course-plan-schedule\">{schedule}</p>\r\n                                                    <div className=\"a4-course-plan-section-subsection\">\r\n                                                        <BubbleButton onClick={() => this.goToBuy(course.item)} className=\"a4-course-plan-buy-now -primary\">{course.item.price ? 'Buy' : 'Take'} Now</BubbleButton>\r\n                                                    </div>\r\n                                                </div>\r\n                                                <div className=\"a4-course-plan-section\">\r\n                                                    <div className=\"a4-course-plan-price\">\r\n                                                        <b className=\"a4-course-plan-price-digits\">\r\n                                                            <span className=\"a4-course-plan-price-int\">${String(course.item.price).split('.')[0]}</span>\r\n                                                            <span className=\"a4-course-plan-price-float\">.{String(course.item.price).split('.')[1] ? String(course.item.price).split('.')[1] : '00'}</span>\r\n                                                        </b>\r\n                                                    </div>\r\n                                                    <div className={`a4-course-plan-controls ${schedule ? \"-bottomMargin\" : \"\"}`}>\r\n                                                        <BubbleButton onClick={() => this.goToBuy(course.item)} className=\"a4-course-plan-buy-now -primary\">{course.item.price ? 'Buy' : 'Take'} Now</BubbleButton>\r\n                                                    </div>\r\n                                                </div>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                }\r\n                                {\r\n                                    memberships &&\r\n                                    <div className=\"a4-course-details-pricing-container\">\r\n                                        <div className=\"a4-course-details-pricing-content\">\r\n                                            <h3 className=\"a4-course-details-pricing-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration='1400' data-aos-delay=\"0\" data-aos-anchor-placement=\"top-bottom\">Memberships</h3>\r\n                                            <ul className=\"a4-pricing-list\">\r\n                                                {\r\n                                                    memberships.map((membership, index) => {\r\n                                                        return <div className=\"a4-pricing-plan-container\" key={index} data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration='1400' data-aos-delay=\"0\" data-aos-anchor-placement=\"top-bottom\">\r\n                                                            <div className=\"a4-pricing-plan-item\">\r\n                                                                <div className=\"a4-pricing-plan-section\">\r\n                                                                    <h3 className=\"a4-pricing-plan-title\">{membership.item.title}</h3>\r\n                                                                    <p className=\"a4-pricing-plan-description\">{membership.item.descriptionText}</p>\r\n                                                                    <div className=\"a4-pricing-plan-section-subsection\">\r\n                                                                        <BubbleButton onClick={() => this.goToBuy(membership.item)} className=\"a4-pricing-plan-buy-now -primary -inverted\">Buy Now</BubbleButton>\r\n                                                                    </div>\r\n                                                                </div>\r\n                                                                <div className=\"a4-pricing-plan-section\">\r\n                                                                    <div className=\"a4-pricing-plan-price\">\r\n                                                                        <b className=\"a4-pricing-plan-price-digits\">\r\n                                                                            <span className=\"a4-pricing-plan-price-int\">${String(membership.item.price).split('.')[0]}</span>\r\n                                                                            <span className=\"a4-pricing-plan-price-float\">.{String(membership.item.price).split('.')[1] ? String(membership.item.price).split('.')[1] : '00'}</span>\r\n                                                                        </b>\r\n                                                                    </div>\r\n                                                                    <div className=\"a4-pricing-plan-controls\">\r\n                                                                        <BubbleButton onClick={() => this.goToBuy(membership.item)} className=\"a4-pricing-plan-buy-now -primary -inverted\">Buy Now</BubbleButton>\r\n                                                                    </div>\r\n                                                                </div>\r\n                                                            </div>\r\n                                                        </div>\r\n                                                    })\r\n                                                }\r\n                                            </ul>\r\n                                        </div>\r\n                                    </div>\r\n                                }\r\n                                {\r\n                                    bundles &&\r\n                                    <div className=\"a4-course-details-pricing-container\">\r\n                                        <div className=\"a4-course-details-pricing-content\">\r\n                                            <h3 className=\"a4-course-details-pricing-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration='1400' data-aos-delay=\"0\" data-aos-anchor-placement=\"top-bottom\">Course Bundles</h3>\r\n                                            <ul className=\"a4-pricing-list\">\r\n                                                {\r\n                                                    bundles.map((bundle, index) => {\r\n                                                        return <li className=\"a4-pricing-plan-container -course-bundle\" key={index} data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration='1400' data-aos-delay=\"0\" data-aos-anchor-placement=\"top-bottom\">\r\n                                                            <div className=\"a4-pricing-plan-item\">\r\n                                                                <div className=\"a4-pricing-plan-section\">\r\n                                                                    <h3 className=\"a4-pricing-plan-title\">{bundle.item.title}</h3>\r\n                                                                    <p className=\"a4-pricing-plan-description\">{bundle.item.descriptionText}</p>\r\n                                                                    <div className=\"a4-pricing-plan-section-subsection\">\r\n                                                                        <BubbleButton onClick={() => this.goToBuy(bundle.item)} className=\"a4-pricing-plan-buy-now -primary -inverted\">Buy Now</BubbleButton>\r\n                                                                    </div>\r\n                                                                    <ul className=\"a4-pricing-plan-advantages -course-bundle\">\r\n                                                                        {\r\n                                                                            bundle.courseDigests.map((c, cIndex) => {\r\n                                                                                return <li className=\"a4-pricing-plan-advantages-item -course-bundle\" key={cIndex}>\r\n                                                                                    {\r\n                                                                                        c.id === course.id &&\r\n                                                                                        <>\r\n                                                                                            <svg className=\"a4-svgsprite\">\r\n                                                                                                <CheckMark stroke={bootstrapService.primaryColor} />\r\n                                                                                            </svg>\r\n                                                                                            <span className=\"a4-pricing-plan-advantages-item-text -primary\">{c.title}</span>\r\n                                                                                        </>\r\n                                                                                    }\r\n                                                                                    {\r\n                                                                                        c.id !== course.id &&\r\n                                                                                        <>\r\n                                                                                            <svg className=\"a4-svgsprite\">\r\n                                                                                                <CheckMark stroke={bootstrapService.primaryColor} />\r\n                                                                                            </svg>\r\n                                                                                            <span className=\"a4-pricing-plan-advantages-item-text\">{c.title}</span>\r\n                                                                                        </>\r\n                                                                                    }\r\n                                                                                </li>\r\n                                                                            })\r\n                                                                        }\r\n                                                                    </ul>\r\n                                                                </div>\r\n                                                                <div className=\"a4-pricing-plan-section -course-bundle\">\r\n                                                                    <div className=\"a4-pricing-plan-price\">\r\n                                                                        <b className=\"a4-pricing-plan-price-digits\">\r\n                                                                            <span className=\"a4-pricing-plan-price-int\">${String(bundle.item.price).split('.')[0]}</span>\r\n                                                                            <span className=\"a4-pricing-plan-price-float\">.{String(bundle.item.price).split('.')[1] ? String(bundle.item.price).split('.')[1] : '00'}</span>\r\n                                                                        </b>\r\n                                                                    </div>\r\n                                                                    <div className=\"a4-pricing-plan-controls -course-bundle\">\r\n                                                                        <BubbleButton onClick={() => this.goToBuy(bundle.item)} className=\"a4-pricing-plan-buy-now -primary -inverted\">Buy Now</BubbleButton>\r\n                                                                    </div>\r\n                                                                </div>\r\n                                                            </div>\r\n                                                        </li>\r\n                                                    })\r\n                                                }\r\n                                            </ul>\r\n                                        </div>\r\n                                    </div>\r\n                                }\r\n                            </section>\r\n                            <section className=\"a4-client-reviews\">\r\n                                <div className=\"a4-client-reviews-container\">\r\n                                    <div className=\"a4-client-reviews-content\">\r\n                                        <Reviews />\r\n                                    </div>\r\n                                </div>\r\n                            </section>\r\n                            <Subscribe />\r\n                            <Footer />\r\n                        </div>\r\n                    </div>\r\n                }\r\n            </>\r\n        )\r\n    }\r\n}\r\n\r\nexport default CourseDetails;","import React from 'react'\r\nimport { withRouter } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport BubbleButton from '../../shared/BubbleButton/BubbleButton'\r\n\r\nimport paymentService from '../../../services/PaymentService'\r\n\r\nclass Membership extends React.Component {\r\n    constructor(props) {\r\n        super(props);\r\n\r\n        // This Binding\r\n        this.goToBuy = this.goToBuy.bind(this);\r\n    }\r\n\r\n    // Event Handlers\r\n    goToBuy(e) {\r\n        paymentService.reset();\r\n        paymentService.item = { ...this.props.data.item, quantity: 1 };\r\n        this.props.history.push(\"/buy\");\r\n    }\r\n\r\n    // Component\r\n    render() {\r\n        const title = this.props.data.item.title; \r\n        const description = this.props.data.item.descriptionText;\r\n        const features = this.props.data.features;\r\n        const price = this.props.data.item.price;\r\n\r\n        const shortDescription = description.length > 300 ? description.substring(0, 350).split(\" \").slice(0, -1).join(\" \") + \"...\" : description;\r\n\r\n        return (\r\n            <li className=\"a4-plan-container\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration='1400' data-aos-delay=\"0\" data-aos-anchor-placement=\"top-bottom\">\r\n                <div className=\"a4-plan-item\">\r\n                    <div className=\"a4-plan-section\">\r\n                        <h3 className=\"a4-plan-title\">{title}</h3>\r\n                        <p className=\"a4-plan-description\">{shortDescription}</p>\r\n                            <div className=\"a4-plan-section-subsection\">\r\n                                <BubbleButton onClick={this.goToBuy} className=\"a4-plan-buy-now -primary\">Buy Now</BubbleButton>\r\n                                <ul className=\"a4-plan-advantages -membership\">\r\n                                    {\r\n                                        features.map((feature, featureIndex) => {\r\n                                            return <li className=\"a4-plan-advantages-item -membership\" key={featureIndex}>\r\n                                                <div className=\"a4-plan-advantages-item-icon\">\r\n                                                    <img src={feature.imageUrl} alt=\"\" />\r\n                                                </div>\r\n                                                <span className=\"a4-plan-advantages-item-text\">{feature.value}</span>\r\n                                            </li>\r\n                                        })\r\n                                    }\r\n                                </ul>\r\n                            </div>\r\n                    </div>\r\n                    <div className=\"a4-plan-section\">\r\n                        <div className=\"a4-plan-price\">\r\n                            <b className=\"a4-plan-price-digits\">\r\n                                <span className=\"a4-plan-price-int\">${String(price).split('.')[0]}</span>\r\n                                <span className=\"a4-plan-price-float\">.{String(price).split('.')[1] ? String(price).split('.')[1] : '00'}</span>\r\n                            </b>\r\n                        </div>\r\n                        <div className=\"a4-plan-controls -membership\">\r\n                            <BubbleButton onClick={this.goToBuy} className=\"a4-plan-buy-now -primary\">Buy Now</BubbleButton>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </li>\r\n        )\r\n    }\r\n}\r\n\r\nexport default withRouter(Membership);;","import React from 'react'\r\nimport { Link, withRouter } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport BubbleButton from '../../shared/BubbleButton/BubbleButton'\r\n\r\nimport bootstrapService from '../../../services/BootstrapService'\r\nimport paymentService from '../../../services/PaymentService'\r\n\r\nclass IndividualCourse extends React.Component {\r\n    // Constructor\r\n    constructor(props) {\r\n        super(props);\r\n\r\n        // This Binding\r\n        this.goToCourse = this.goToCourse.bind(this);\r\n        this.goToBuy = this.goToBuy.bind(this);\r\n    }\r\n\r\n    // Event Handlers\r\n    goToCourse(e) {\r\n        if (window.innerWidth < 768) {\r\n            this.props.history.push(`/course/${this.props.data.id}`);\r\n        }\r\n    }\r\n\r\n    goToBuy(e) {\r\n        if (this.props.data.item.price) {\r\n            paymentService.reset();\r\n            paymentService.item = { ...this.props.data.item, quantity: 1 };\r\n            this.props.history.push(\"/buy\");\r\n        }\r\n        else {\r\n            this.props.history.push({ pathname: \"/\", state: { tryForFree: true } });\r\n        }\r\n    }\r\n\r\n    // Component\r\n    render() {\r\n        const courseId = this.props.data.id;\r\n        const title = this.props.data.title;\r\n        const description = this.props.data.description;\r\n        const shortDescription = description.substring(0, 280).split(\" \").slice(0, -1).join(\" \") + \"...\";\r\n        const category = this.props.data.subjectArea;\r\n        const credits = this.props.data.credits;\r\n        const courseNo = this.props.data.courseNo;\r\n        const deliveryMethod = this.props.data.deliveryMethod;\r\n        const price = this.props.data.item.price;\r\n\r\n        const categoryTerm = bootstrapService.getCategoryTerm();\r\n\r\n        return (\r\n            <li className=\"a4-plan-container -individual-course\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration='1400' data-aos-delay=\"0\" data-aos-anchor-placement=\"top-bottom\">\r\n                <div className=\"a4-plan-item\">\r\n                    <div className=\"a4-plan-section\">\r\n                        <h3 className=\"a4-plan-title -individual-course\" onClick={this.goToCourse}>{title}</h3>\r\n                        <p className=\"a4-plan-description -individual-course\" onClick={this.goToCourse}>{shortDescription}</p>\r\n                        <ul className=\"a4-plan-advantages -individual-course\">\r\n                            <li className=\"a4-plan-advantages-item -individual-course\">\r\n                                <span className=\"a4-plan-advantages-item-title\"><span className=\"text-primary\">{categoryTerm}:</span></span>\r\n                                <span className=\"a4-plan-advantages-item-value\">{category}</span>\r\n                            </li>\r\n                            <li className=\"a4-plan-advantages-item -individual-course\">\r\n                                <span className=\"a4-plan-advantages-item-title\"><span className=\"text-primary\">Delivery Method</span></span>\r\n                                <span className=\"a4-plan-advantages-item-value\">{deliveryMethod}</span>\r\n                            </li>\r\n                            <li className=\"a4-plan-advantages-item -individual-course\">\r\n                                <span className=\"a4-plan-advantages-item-title\"><span className=\"text-primary\">{bootstrapService.getCreditsTerm(2)}:</span></span>\r\n                                <span className=\"a4-plan-advantages-item-value\">{credits.toFixed(1)}</span>\r\n                            </li>\r\n                        </ul>\r\n                    </div>\r\n                    <div className=\"a4-plan-section\">\r\n                        <div className=\"a4-plan-price -individual-course\">\r\n                            <b className=\"a4-plan-price-digits\">\r\n                                <span className=\"a4-plan-price-int\">${String(price).split('.')[0]}</span>\r\n                                <span className=\"a4-plan-price-float\">.{String(price).split('.')[1] ? String(price).split('.')[1] : '00'}</span>\r\n                            </b>\r\n                        </div>\r\n                        <div className=\"a4-plan-controls\">\r\n                            <BubbleButton onClick={this.goToBuy} className=\"a4-plan-buy-now -primary\">{price ? 'Buy' : 'Take'} Now</BubbleButton>\r\n                            <Link to={`/course/${courseId}`} className=\"a4-plan-learn-more -individual-course\">About Course</Link>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </li>\r\n\r\n        )\r\n    }\r\n}\r\n\r\nexport default withRouter(IndividualCourse);","import React from 'react'\r\nimport './RadioButton.scss'\r\n\r\nclass RadioButton extends React.Component {\r\n    // Component\r\n    render() {\r\n        return (\r\n            <label className=\"a4-radio\"> {this.props.text}\r\n                <input type=\"radio\" name={`radio${this.props.course}`} value={this.props.value} defaultChecked={this.props.index === 0} />\r\n                <span className=\"a4-radio-button\"></span>\r\n            </label>\r\n        )\r\n    }\r\n}\r\n\r\nexport default RadioButton;","import React from 'react'\r\nimport { withRouter } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport BubbleButton from '../../shared/BubbleButton/BubbleButton'\r\nimport RadioButton from '../../shared/RadioButton/RadioButton'\r\nimport { ReactComponent as CheckMark } from '../../../assets/check-mark.svg'\r\n\r\nimport bootstrapService from '../../../services/BootstrapService'\r\nimport paymentService from '../../../services/PaymentService'\r\nimport scheduleService from '../../../services/ScheduleService'\r\n\r\nclass CourseBundle extends React.Component {\r\n    constructor(props) {\r\n        super(props);\r\n\r\n        // Constants\r\n        const webinars = this.props.data.courseDigests.filter(c => c.schedules)\r\n        this.webinar = webinars.length > 0 ? webinars[0] : null\r\n\r\n        // State\r\n        this.state = {\r\n            schedule: this.webinar ? this.webinar.schedules[0] : null\r\n        }\r\n\r\n        // This Binding\r\n        this.goToBuy = this.goToBuy.bind(this);\r\n        this.changeSchedule = this.changeSchedule.bind(this);\r\n    }\r\n\r\n    // Event Handlers\r\n    goToBuy(e) {\r\n        paymentService.reset();\r\n        paymentService.item = { ...this.props.data.item, quantity: 1 };\r\n        paymentService.schedule = this.state.schedule;\r\n        this.props.history.push(\"/buy\");\r\n    }\r\n\r\n    changeSchedule(e) {\r\n        this.setState({ schedule: this.webinar.schedules[e.target.value] });\r\n    }\r\n\r\n    // Component\r\n    render() {\r\n        const title = this.props.data.item.title;\r\n        const description = this.props.data.item.descriptionText;\r\n        const courses = this.props.data.courseDigests;\r\n        const price = this.props.data.item.price;\r\n\r\n        const shortDescription = description.length > 300 ? description.substring(0, 350).split(\" \").slice(0, -1).join(\" \") + \"...\" : description;\r\n\r\n        return (\r\n            <li className=\"a4-plan-container -course-bundle\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration='1400' data-aos-delay=\"0\" data-aos-anchor-placement=\"top-bottom\">\r\n                <div className=\"a4-plan-item\">\r\n                    <div className=\"a4-plan-section\">\r\n                        <h3 className=\"a4-plan-title\">{title}</h3>\r\n                        <p className=\"a4-plan-description -course-bundle\">{shortDescription}</p>\r\n                        <ul className=\"a4-plan-advantages -course-bundle\">\r\n                            {\r\n                                courses.map((course, courseIndex) => {\r\n                                    return <li className=\"a4-plan-advantages-item -course-bundle\" key={courseIndex}>\r\n                                        <svg className=\"a4-svgsprite\">\r\n                                            <CheckMark stroke={bootstrapService.primaryColor} />\r\n                                        </svg>\r\n                                        <span className=\"a4-plan-advantages-item-text\">{course.title}</span>\r\n                                    </li>\r\n                                })\r\n                            }\r\n                        </ul>\r\n                        {\r\n                            this.webinar &&\r\n                            <ul className=\"a4-plan-advantages -webinar\" onChange={this.changeSchedule}>\r\n                            {\r\n                                this.webinar.schedules.slice(0, 6).map((schedule, scheduleIndex) => {\r\n                                    return <li className=\"a4-plan-advantages-item -webinar\" key={scheduleIndex}>\r\n                                        <RadioButton value={scheduleIndex} index={scheduleIndex} course={this.webinar.id} />\r\n                                        <span className=\"a4-plan-advantages-item-text\">{new Date(schedule.startDate).toLocaleDateString(\"en-US\", {weekday: 'long', month: 'short', day: 'numeric'})}, {new Date(schedule.startDate).toLocaleTimeString(\"en-US\", {hour: \"2-digit\", minute: \"2-digit\"})} - {new Date(schedule.endDate).toLocaleTimeString(\"en-US\", {hour: \"2-digit\", minute: \"2-digit\"})} ({scheduleService.getTimeZone()})</span>\r\n                                    </li>\r\n                                })\r\n                            }\r\n                            </ul>\r\n                        }\r\n                    </div>\r\n                    <div className=\"a4-plan-section\">\r\n                        <div className=\"a4-plan-price\">\r\n                            <b className=\"a4-plan-price-digits\">\r\n                                <span className=\"a4-plan-price-int\">${String(price).split('.')[0]}</span>\r\n                                <span className=\"a4-plan-price-float\">.{String(price).split('.')[1] ? String(price).split('.')[1] : '00'}</span>\r\n                            </b>\r\n                        </div>\r\n                        <div className=\"a4-plan-controls\">\r\n                            <BubbleButton onClick={this.goToBuy} className=\"a4-plan-buy-now -primary\">Buy Now</BubbleButton>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </li>\r\n        )\r\n    }\r\n}\r\n\r\nexport default withRouter(CourseBundle);","import React from 'react'\r\nimport { withRouter } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport BubbleButton from '../../shared/BubbleButton/BubbleButton'\r\n\r\nimport paymentService from '../../../services/PaymentService'\r\n\r\nclass GroupPlan extends React.Component {\r\n    constructor(props) {\r\n        super(props);\r\n\r\n        // This Binding\r\n        this.goToCreateGroup = this.goToCreateGroup.bind(this);\r\n    }\r\n\r\n    // Event Handlers\r\n    goToCreateGroup(e) {\r\n        paymentService.reset();\r\n        paymentService.item = this.props.data.item;\r\n        paymentService.group = { isAdminOnly: false, minMembers: this.props.data.memberCountMin, maxMembers: this.props.data.memberCountMax };\r\n        this.props.history.push(\"/create-group\");\r\n    }\r\n\r\n    // Component\r\n    render() {\r\n        const title = this.props.data.item.title; \r\n        const description = this.props.data.item.descriptionText;\r\n        const features = this.props.data.features;\r\n        const price = this.props.data.item.price;\r\n\r\n        const shortDescription = description.length > 300 ? description.substring(0, 350).split(\" \").slice(0, -1).join(\" \") + \"...\" : description;\r\n\r\n        return (\r\n            <li className=\"a4-plan-container\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration='1400' data-aos-delay=\"0\" data-aos-anchor-placement=\"top-bottom\">\r\n                <div className=\"a4-plan-item\">\r\n                    <div className=\"a4-plan-section -group-plan\">\r\n                        <h3 className=\"a4-plan-title\">{title}</h3>\r\n                        <p className=\"a4-plan-description\">{shortDescription}</p>\r\n                            <div className=\"a4-plan-section-subsection\">\r\n                                <BubbleButton onClick={this.goToCreateGroup} className=\"a4-plan-buy-now -primary\">Buy Now</BubbleButton>\r\n                                <ul className=\"a4-plan-advantages -membership\">\r\n                                    {\r\n                                        features.map((feature, featureIndex) => {\r\n                                            return <li className=\"a4-plan-advantages-item -membership\" key={featureIndex}>\r\n                                                <div className=\"a4-plan-advantages-item-icon\">\r\n                                                    <img src={feature.imageUrl} alt=\"\" />\r\n                                                </div>\r\n                                                <span className=\"a4-plan-advantages-item-text\">{feature.value}</span>\r\n                                            </li>\r\n                                        })\r\n                                    }\r\n                                </ul>\r\n                            </div>\r\n                    </div>\r\n                    <div className=\"a4-plan-section -group-plan\">\r\n                        <div className=\"a4-plan-price -group-plan\">\r\n                            <b className=\"a4-plan-price-digits\">\r\n                                <span className=\"a4-plan-price-int\">${String(price).split('.')[0]}</span>\r\n                                <span className=\"a4-plan-price-float\">.{String(price).split('.')[1] ? String(price).split('.')[1] : '00'}</span>\r\n                            </b>\r\n                            <span>Per Member</span>\r\n                        </div>\r\n                        <div className=\"a4-plan-controls -membership\">\r\n                            <BubbleButton onClick={this.goToCreateGroup} className=\"a4-plan-buy-now -primary\">Buy Now</BubbleButton>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </li>\r\n        )\r\n    }\r\n}\r\n\r\nexport default withRouter(GroupPlan);;","import React from 'react'\r\nimport { Link, withRouter } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport BubbleButton from '../../shared/BubbleButton/BubbleButton'\r\nimport RadioButton from '../../shared/RadioButton/RadioButton'\r\n\r\nimport bootstrapService from '../../../services/BootstrapService'\r\nimport paymentService from '../../../services/PaymentService'\r\nimport scheduleService from '../../../services/ScheduleService'\r\n\r\nclass Webinar extends React.Component {\r\n    constructor(props) {\r\n        super(props);\r\n\r\n        // State\r\n        this.state = {\r\n            schedule: this.props.data.schedules[0]\r\n        }\r\n\r\n        // This Binding\r\n        this.goToBuy = this.goToBuy.bind(this);\r\n        this.changeSchedule = this.changeSchedule.bind(this);\r\n    }\r\n\r\n    // Event Handlers\r\n    goToCourse(e) {\r\n        if (window.innerWidth < 768) {\r\n            this.props.history.push(`/course/${this.props.data.id}`);\r\n        }\r\n    }\r\n\r\n    goToBuy(e) {\r\n        paymentService.reset();\r\n        paymentService.item = { ...this.props.data.item, quantity: 1};\r\n        paymentService.schedule = this.state.schedule;\r\n        this.props.history.push(\"/buy\");\r\n    }\r\n\r\n    changeSchedule(e) {\r\n        this.setState({ schedule: this.props.data.schedules[e.target.value] });\r\n    }\r\n\r\n    // Component\r\n    render() {\r\n        const courseId = this.props.data.id;\r\n        const title = this.props.data.item.title;\r\n        const description = this.props.data.item.descriptionText;\r\n        const category = this.props.data.subjectArea;\r\n        const credits = this.props.data.credits;\r\n        const courseNo = this.props.data.courseNo;\r\n        const deliveryMethod = this.props.data.deliveryMethod;\r\n        const schedules = this.props.data.schedules;\r\n        const price = this.props.data.item.price;\r\n\r\n        const shortDescription = description.length > 300 ? description.substring(0, 350).split(\" \").slice(0, -1).join(\" \") + \"...\" : description;\r\n\r\n        const categoryTerm = bootstrapService.getCategoryTerm();\r\n\r\n        return (\r\n            <li className=\"a4-plan-container -course-bundle\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration='1400' data-aos-delay=\"0\" data-aos-anchor-placement=\"top-bottom\">\r\n                <div className=\"a4-plan-item\">\r\n                    <div className=\"a4-plan-section -webinar\">\r\n                        <h3 className=\"a4-plan-title\" onClick={this.goToCourse}>{title}</h3>\r\n                        <p className=\"a4-plan-description -course-bundle\" onClick={this.goToCourse}>{shortDescription}</p>\r\n                        <ul className=\"a4-plan-advantages -individual-course\">\r\n                            <li className=\"a4-plan-advantages-item -individual-course\">\r\n                                <span className=\"a4-plan-advantages-item-title\"><span className=\"text-primary\">{categoryTerm}:</span></span>\r\n                                <span className=\"a4-plan-advantages-item-value\">{category}</span>\r\n                            </li>\r\n                            <li className=\"a4-plan-advantages-item -individual-course\">\r\n                                <span className=\"a4-plan-advantages-item-title\"><span className=\"text-primary\">Delivery Method</span></span>\r\n                                <span className=\"a4-plan-advantages-item-value\">{deliveryMethod}</span>\r\n                            </li>\r\n                            <li className=\"a4-plan-advantages-item -individual-course\">\r\n                                <span className=\"a4-plan-advantages-item-title\"><span className=\"text-primary\">{bootstrapService.getCreditsTerm(2)}:</span></span>\r\n                                <span className=\"a4-plan-advantages-item-value\">{credits.toFixed(1)}</span>\r\n                            </li>\r\n                        </ul>\r\n                        <ul className=\"a4-plan-advantages -webinar\" onChange={this.changeSchedule}>\r\n                            <li className=\"a4-plan-advantages-item -webinar-title\">\r\n                                <span className=\"a4-plan-advantages-item-title\"><span className=\"text-primary\">Dates & Times:</span></span>\r\n                            </li>\r\n                            {\r\n                                schedules.slice(0, 6).map((schedule, scheduleIndex) => {\r\n                                    return <li className=\"a4-plan-advantages-item -webinar\" key={scheduleIndex}>\r\n                                        <RadioButton value={scheduleIndex} index={scheduleIndex} course={courseId} />\r\n                                        <span className=\"a4-plan-advantages-item-text\">{new Date(schedule.startDate).toLocaleDateString(\"en-US\", {weekday: 'long', month: 'short', day: 'numeric'})}, {new Date(schedule.startDate).toLocaleTimeString(\"en-US\", {hour: \"2-digit\", minute: \"2-digit\"})} - {new Date(schedule.endDate).toLocaleTimeString(\"en-US\", {hour: \"2-digit\", minute: \"2-digit\"})} ({scheduleService.getTimeZone()})</span>\r\n                                    </li>\r\n                                })\r\n                            }\r\n                        </ul>\r\n                    </div> \r\n                    <div className=\"a4-plan-section -webinar\">\r\n                        <div className=\"a4-plan-price\">\r\n                            <b className=\"a4-plan-price-digits\">\r\n                                <span className=\"a4-plan-price-int\">${String(price).split('.')[0]}</span>\r\n                                <span className=\"a4-plan-price-float\">.{String(price).split('.')[1] ? String(price).split('.')[1] : '00'}</span>\r\n                            </b>\r\n                        </div>\r\n                        <div className=\"a4-plan-controls\">\r\n                            <BubbleButton onClick={this.goToBuy} className=\"a4-plan-buy-now -primary\">Buy Now</BubbleButton>\r\n                            <Link to={`/course/${courseId}`} className=\"a4-plan-learn-more -individual-course\">About Course</Link>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </li>\r\n        )\r\n    }\r\n}\r\n\r\nexport default withRouter(Webinar);","import React from 'react'\r\nimport './Pricing.scss'\r\nimport './Plans.scss'\r\nimport $ from 'jquery'\r\nimport 'select2'\r\nimport { debounce } from '../../utils/debounce'\r\nimport { getKey } from '../../utils/key'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Membership from './Plans/Membership'\r\nimport IndividualCourse from './Plans/IndividualCourse'\r\nimport CourseBundle from './Plans/CourseBundle'\r\nimport GroupPlan from './Plans/GroupPlan'\r\nimport Webinar from './Plans/Webinar'\r\nimport Pages from '../shared/Pages/Pages'\r\nimport Empty from '../shared/Empty/Empty'\r\nimport Subscribe from '../shared/Subscribe/Subscribe'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport { ReactComponent as FilterBars } from '../../assets/filter-bars.svg'\r\nimport { ReactComponent as Error } from '../../assets/error.svg'\r\nimport { ReactComponent as Cancel } from '../../assets/cancel.svg'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\n\r\nclass Pricing extends React.Component {\r\n    // Constructor\r\n    constructor(props) {\r\n        super(props);\r\n\r\n        // Refs\r\n        this.filterMenu = null;\r\n        this.planFilter = null;\r\n        this.mobileFilterMenu = null;\r\n        this.mobilePlanFilter = null;\r\n        this.mobileSubmitButton = null;\r\n        this.plansList = null;\r\n\r\n        // State\r\n        this.state = {\r\n            currentPlan: this.props.match.params.plan,\r\n            searchFilter: null,\r\n            sortFilter: null,\r\n            pageNumber: 0,\r\n        }\r\n\r\n        // Event Binding\r\n        this.openMobileFilterMenu = this.openMobileFilterMenu.bind(this);\r\n        this.closeMobileFilterMenu = this.closeMobileFilterMenu.bind(this);\r\n        this.clickMobileFilterItem = this.clickMobileFilterItem.bind(this);\r\n        this.clickMobileFilterSubmit = this.clickMobileFilterSubmit.bind(this);\r\n        this.changePlansPage = this.changePlansPage.bind(this);\r\n        this.searchCourses = debounce(this.searchCourses.bind(this), 400);\r\n        this.searchCoursesMobile = debounce(this.searchCoursesMobile.bind(this), 400);\r\n    }\r\n\r\n    // Lifecyle\r\n    componentDidMount() {\r\n        window.scrollTo(0, 0);\r\n        this.setupSelects();\r\n        this.setupMobileFilter();\r\n    }\r\n\r\n    componentDidUpdate() {\r\n        this.updateSelects();\r\n        this.updateCurrentPlan();\r\n    }\r\n\r\n    // Helpers\r\n    setupSelects() {\r\n        $('.a4-select select').select2({\r\n            minimumResultsForSearch: -1,\r\n        });\r\n\r\n        $('.a4-select select').on(\"change\", (e, shouldIgnore, shouldIgnoreHistory) => {\r\n            if (!shouldIgnore) {\r\n                const { filterType } = e.currentTarget.dataset;\r\n                this.setMobileFilterActive(filterType, e.currentTarget.value);\r\n                \r\n                if (filterType === \"category\") {\r\n                    if (this.state.currentPlan !== e.currentTarget.value) {\r\n                        this.filterPlans(e.currentTarget.value)\r\n\r\n                        if (!shouldIgnoreHistory) {\r\n                            this.props.history.push(`/pricing/${e.currentTarget.value}`);\r\n                        }\r\n                    }\r\n                }\r\n                else if (filterType === \"sort\") {\r\n                    this.sortPlans(e.currentTarget.value)\r\n                }\r\n            }\r\n        });\r\n\r\n        $(this.planFilter).children().each((index, plan) => {\r\n            if (plan.value === this.state.currentPlan) {\r\n                $(this.planFilter).val(plan.value);\r\n                $(this.planFilter).trigger(\"change\", [false, false]);\r\n            }\r\n        });\r\n    }\r\n\r\n    updateSelects() {\r\n        if (!$('.a4-select select').first().hasClass(\"select2-hidden-accessible\")) {\r\n            this.setupSelects();\r\n        }\r\n    }\r\n\r\n    updateCurrentPlan() {\r\n        // Back Button Clicked\r\n        window.onpopstate = (e) => {\r\n            if (this.props.match.params.plan !== this.state.currentPlan) {\r\n                $(this.planFilter).val(this.props.match.params.plan);\r\n                $(this.planFilter).trigger(\"change\", [false, true]);\r\n            }\r\n        } \r\n    }\r\n\r\n    setMobileFilterActive(filterType, filterValue) {\r\n        const filter = $(this.mobileFilterMenu).find(`.a4-mobile-filter-items-item[data-filter-type='${filterType}'][data-value='${filterValue}']`);\r\n        filter.addClass(\"-active\");\r\n        filter.siblings(\".-active\").removeClass(\"-active\");\r\n\r\n        const select = $(this.filterMenu).find(`select[data-filter-type='${filterType}']`);\r\n        select.val(filter.data().value);\r\n        select.trigger(\"change\", true);\r\n    }\r\n\r\n    setupMobileFilter() {\r\n        $(this.mobilePlanFilter).children().each((index, plan) => {\r\n            if (plan.dataset.value === this.path) {\r\n                plan.classList.add(\"-active\")\r\n            }\r\n        });\r\n    }\r\n\r\n    filterPlans(filterOption) {\r\n        this.enableMobileSpinner();\r\n        this.setState({\r\n            currentPlan: filterOption !== \"\" ? filterOption : null,\r\n        }, this.disableMobileSpinner())\r\n    }\r\n\r\n    sortPlans(sortOption) {\r\n        this.enableMobileSpinner();\r\n        this.setState({\r\n            sortFilter: sortOption,\r\n        }, this.disableMobileSpinner());\r\n    }\r\n\r\n    enableMobileSpinner() {\r\n        this.mobileSubmitButton.setAttribute(\"disabled\", true);\r\n        this.mobileSubmitButton.classList.add(\"-loading\");\r\n    }\r\n\r\n    disableMobileSpinner() {\r\n        if (this.mobileSubmitButton) {\r\n            this.mobileSubmitButton.removeAttribute(\"disabled\");\r\n            this.mobileSubmitButton.classList.remove(\"-loading\");\r\n        }\r\n    }\r\n\r\n    // Event Handlers\r\n    openMobileFilterMenu() {\r\n        document.body.classList.add(\"overflow-hidden\");\r\n        this.mobileFilterMenu.classList.add(\"-open\");\r\n        this.disableMobileSpinner();\r\n    }\r\n\r\n    closeMobileFilterMenu() {\r\n        document.body.classList.remove(\"overflow-hidden\");\r\n        this.mobileFilterMenu.classList.remove(\"-open\");\r\n    }\r\n\r\n    clickMobileFilterItem(e) {\r\n        this.enableMobileSpinner();\r\n\r\n        const { filterType, value } = e.currentTarget.dataset;\r\n        this.setMobileFilterActive(filterType, value);\r\n\r\n        setTimeout((filterType, value) => {\r\n            if (filterType === \"category\") {\r\n                this.filterPlans(value)\r\n                this.props.history.push(`/pricing/${value}`);\r\n            }\r\n            else if (filterType === \"sort\") {\r\n                this.sortPlans(value);\r\n            }\r\n        }, 500, filterType, value);\r\n    }\r\n\r\n    clickMobileFilterSubmit() {\r\n        this.closeMobileFilterMenu();\r\n    }\r\n\r\n    changePlansPage(e, page) {\r\n        window.scrollTo(0, 0);\r\n        this.setState( { pageNumber: page-1 });\r\n    }\r\n\r\n    searchCourses(e) {\r\n        $(this.mobileFilterMenu).find(\".a4-input\").find(\"input\").val(e.target.value)\r\n        this.setState({\r\n            searchFilter: e.target.value !== \"\" ? e.target.value.toLowerCase() : null,\r\n        });\r\n    }\r\n\r\n    searchCoursesMobile(e) {\r\n        this.enableMobileSpinner();\r\n        $(this.filterMenu).find(\".a4-input\").find(\"input\").val(e.target.value)\r\n        \r\n        setTimeout(() => {\r\n            this.setState({\r\n                searchFilter: e.target.value !== \"\" ? e.target.value.toLowerCase() : null,\r\n            }, this.disableMobileSpinner());\r\n        }, 600);\r\n    }\r\n\r\n    sortCourses(a, b) {\r\n        //sort by course.order (first)\r\n        let aval = typeof a.order !== 'undefined' ? a.order : null;\r\n        let bval = typeof b.order !== 'undefined' ? b.order : null;\r\n        if (aval === bval) {\r\n            //sort by course.title (second, when order is same)\r\n            if (a.title === b.title) {\r\n                return 0;\r\n            }\r\n            return a.title < b.title ? -1 : 1;\r\n        }\r\n        return aval > bval ? -1 : 1;\r\n    }\r\n\r\n    sortPassTypes(a, b) {\r\n        //sort by passType.order (first)\r\n        let aval = typeof a.order !== 'undefined' ? a.order : null;\r\n        let bval = typeof b.order !== 'undefined' ? b.order : null;\r\n        if (aval === bval) {\r\n            //sort by passType.name (second, when order is same)\r\n            if (a.name === b.name) {\r\n                return 0;\r\n            }\r\n            return a.name < b.name ? -1 : 1;\r\n        }\r\n        return aval > bval ? -1 : 1;\r\n    }\r\n\r\n    sortBundleTypes(a, b) {\r\n        //sort by bundleType.order (first)\r\n        let aval = typeof a.order !== 'undefined' ? a.order : null;\r\n        let bval = typeof b.order !== 'undefined' ? b.order : null;\r\n        if (aval ===bval) {\r\n            //sort by bundleType.name (second, when order is same)\r\n            if (a.name === b.name) {\r\n                return 0;\r\n            }\r\n            return a.name < b.name ? -1 : 1;\r\n        }\r\n        return aval > bval ? -1 : 1;\r\n    }\r\n\r\n    sortGroupTypes(a, b) {\r\n        //sort by groupType.order (first)\r\n        let aval = typeof a.order !== 'undefined' ? a.order : null;\r\n        let bval = typeof b.order !== 'undefined' ? b.order : null;\r\n        if (aval === bval) {\r\n            //sort by groupType.name (second, when order is same)\r\n            if (a.name === b.name) {\r\n                return 0;\r\n            }\r\n            return a.name < b.name ? -1 : 1;\r\n        }\r\n        return aval > bval ? -1 : 1;\r\n    }\r\n\r\n    // Data\r\n    getPlans() {\r\n        let plans = null;\r\n        let sorter = null;\r\n\r\n        if (bootstrapService.data) {\r\n            if (this.state.currentPlan === \"memberships\") {\r\n                plans = bootstrapService.data.passTypes;\r\n                sorter = this.sortPassTypes;\r\n            }\r\n            else if (this.state.currentPlan === \"individual-courses\") {\r\n                plans = bootstrapService.data.courseCatalog.courses.filter(c => c.hasOwnProperty(\"item\"));\r\n                sorter = this.sortCourses;\r\n            }\r\n            else if (this.state.currentPlan === \"course-bundles\") {\r\n                plans = bootstrapService.data.courseBundleTypes;\r\n                sorter = this.sortBundleTypes;\r\n            }\r\n            else if (this.state.currentPlan === \"group-plans\") {\r\n                plans = bootstrapService.data.groupTypes;\r\n                sorter = this.sortGroupTypes;\r\n            }\r\n        }\r\n\r\n        if (plans && this.state.searchFilter) {\r\n            plans = plans.filter(p => p.title.toLowerCase().search(this.state.searchFilter) > -1)\r\n        }\r\n\r\n        if (plans && this.state.sortFilter) {\r\n            if (this.state.sortFilter === \"default\") {\r\n                plans = plans.sort(sorter)\r\n            }\r\n            else if (this.state.sortFilter === \"title\") {\r\n                plans = plans.sort(function(a, b) {\r\n                    if (a.item.title === b.item.title) {\r\n                        return 0;\r\n                    }\r\n\r\n                    return a.item.title < b.item.title ? -1 : 1;\r\n                })\r\n            }\r\n            else if (this.state.sortFilter === \"price\") {\r\n                plans = plans.sort(function(a, b) {\r\n                    if (a.item.price === b.item.price) {\r\n                        return 0;\r\n                    }\r\n\r\n                    return a.item.price < b.item.price ? -1 : 1;\r\n                })\r\n            }\r\n            else {\r\n                console.log(\"INVALID SORT OPTION\")\r\n            }\r\n        }\r\n\r\n        return plans;\r\n    }\r\n\r\n    getCurrentPlanType() {\r\n        if (this.state.currentPlan === \"memberships\") {\r\n            return \"Memberships\"\r\n        }\r\n        else if (this.state.currentPlan === \"individual-courses\") {\r\n            return \"Courses\"\r\n        }\r\n        else if (this.state.currentPlan === \"course-bundles\") {\r\n            return \"Bundles\"\r\n        }\r\n        else if (this.state.currentPlan === \"group-plans\") {\r\n            return \"Group Plans\"\r\n        }\r\n\r\n        return \"Plans\";\r\n    }\r\n\r\n    // Component\r\n    render() {\r\n        const pricingData =  bootstrapService.data.landing.pages.find(p => p.name === \"pricing\");\r\n\r\n        const header = pricingData ? pricingData.header : null;\r\n        const body = pricingData ? pricingData.bodyText : null;\r\n        const categoryFilters = pricingData ? pricingData.itemsFilter : null;\r\n        const sortOptions = pricingData ? pricingData.sortOptions : null;\r\n\r\n        const plans = this.getPlans();\r\n        const pagedPlans = plans ? plans.slice(10*this.state.pageNumber, 10*this.state.pageNumber+10) : null;\r\n\r\n        const planType = this.getCurrentPlanType();\r\n\r\n        const renderKey = getKey();\r\n\r\n        return (\r\n            <>\r\n                {\r\n                    pricingData &&\r\n                    <>\r\n                        <Navbar backgroundColor=\"-primary-light\" activeLink=\"pricing\" />\r\n                        <div className=\"a4-view\">\r\n                            <div className=\"a4-layout a4-pricing\">\r\n                                <header className=\"a4-pricing-header\">\r\n                                    <div className=\"a4-pricing-container\">\r\n                                        <section className=\"a4-pricing-page-title\">\r\n                                            <div className=\"a4-pricing-page-title-filler\"></div>\r\n                                            <h1 className=\"title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>{header}</h1>\r\n                                            <p className=\"description\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>{body}</p>\r\n                                        </section>\r\n                                        <section className=\"a4-pricing-filter-panel\">\r\n                                            <div className=\"a4-pricing-filter-panel-filler\"></div>\r\n                                            <div className=\"a4-pricing-filter-panel-container\">\r\n                                                <div className=\"a4-pricing-filter-panel-content\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay=\"50\" data-aos-anchor-placement=\"top-bottom\" ref={div => this.filterMenu = div}>\r\n                                                    <div className=\"a4-pricing-filter-panel-section-1 md_hidden\">\r\n                                                        <button className=\"a4-btn\" id=\"filter-menu-btn\" onClick={this.openMobileFilterMenu}>\r\n                                                            <i>\r\n                                                                <svg className=\"a4-svgsprite\">\r\n                                                                    <FilterBars stroke={bootstrapService.secondaryColor} />\r\n                                                                </svg>\r\n                                                            </i>\r\n                                                            <span>\r\n                                                                Browse\r\n                                                            </span>\r\n                                                        </button>              \r\n                                                    </div>\r\n                                                    <div className=\"a4-pricing-filter-panel-section-2\">\r\n                                                        {\r\n                                                            categoryFilters && categoryFilters.length > 0 &&\r\n                                                            <div className=\"filter-item\" id=\"category-filter\">\r\n                                                                <div className=\"a4-select\">\r\n                                                                    <select data-filter-type=\"category\" ref={select => this.planFilter = select}>\r\n                                                                        {\r\n                                                                            categoryFilters.map((filter, index) => {\r\n                                                                                return <option value={filter.replace(/\\s+/g, \"-\").trim().toLowerCase()} key={index}>{filter}</option>\r\n                                                                            })\r\n                                                                        }\r\n                                                                    </select>\r\n                                                                </div>\r\n                                                            </div>  \r\n                                                        }\r\n                                                        {\r\n                                                            this.state.currentPlan === \"individual-courses\" &&\r\n                                                            <div className=\"a4-input -search filter-item\" data-aos={isMobileOnly ? undefined : \"fade\"}>\r\n                                                                <input required placeholder=\"Search\" onChange={this.searchCourses} />\r\n                                                                <label>Search</label>\r\n                                                                <span className=\"a4-input-error\"></span>\r\n                                                                <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                                                    <Error />\r\n                                                                </svg>\r\n                                                            </div>\r\n                                                        }\r\n                                                    </div>\r\n                                                    <div className=\"a4-pricing-filter-panel-section-3\">\r\n                                                        {\r\n                                                            sortOptions && sortOptions.length > 0 &&\r\n                                                            <>\r\n                                                                <div className=\"a4-pricing-filter-panel-section-title\">\r\n                                                                    <h4>Sort</h4>\r\n                                                                </div>\r\n                                                                <div id=\"sort-filter\">\r\n                                                                    <div className=\"a4-select\">\r\n                                                                        <select data-filter-type='sort'>\r\n                                                                            <option value=\"default\" key={0}>Default</option>\r\n                                                                            {\r\n                                                                                sortOptions.map((option, index) => {\r\n                                                                                    return <option value={option.replace(/\\s+/g, \"-\").trim().toLowerCase()} key={index+1}>{option}</option>\r\n                                                                                })\r\n                                                                            }\r\n                                                                        </select>\r\n                                                                    </div>\r\n                                                                </div>\r\n                                                            </>\r\n                                                        }\r\n                                                    </div>\r\n                                                </div>\r\n                                                <div className=\"a4-mobile-filter-menu\" ref={div => this.mobileFilterMenu = div}>\r\n                                                    <div className=\"a4-mobile-filter-container\">\r\n                                                        <div className=\"a4-mobile-filter-content\">\r\n                                                            <div className=\"a4-mobile-filter-top\">\r\n                                                                <div className=\"a4-mobile-filter-title\">\r\n                                                                    <h4>Browse</h4>\r\n                                                                </div>\r\n                                                                <div className=\"a4-mobile-filter-cancel\" onClick={this.closeMobileFilterMenu}>\r\n                                                                    <svg className=\"a4-svgsprite -cancel\">\r\n                                                                        <Cancel />\r\n                                                                    </svg>\r\n                                                                </div>\r\n                                                            </div>\r\n                                                            {\r\n                                                                this.state.currentPlan === \"individual-courses\" &&\r\n                                                                <div className=\"a4-mobile-filter-search\">\r\n                                                                    <div className=\"a4-input -search filter-item\" data-aos={isMobileOnly ? undefined : \"fade\"}>\r\n                                                                        <input required placeholder=\"Search\" onChange={this.searchCoursesMobile} />\r\n                                                                        <label>Search</label>\r\n                                                                        <span className=\"a4-input-error\"></span>\r\n                                                                        <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                                                            <Error />\r\n                                                                        </svg>\r\n                                                                    </div>\r\n                                                                </div>\r\n                                                            }\r\n                                                            <div className=\"a4-mobile-filter-list\">\r\n                                                                {\r\n                                                                    categoryFilters && categoryFilters.length > 0 &&\r\n                                                                    <>\r\n                                                                        <div className=\"a4-mobile-filter-list-title\">\r\n                                                                            <h4>Category</h4>\r\n                                                                        </div>\r\n                                                                        <ul className=\"a4-mobile-filter-items\" ref={ul => this.mobilePlanFilter = ul}>\r\n                                                                            {\r\n                                                                                categoryFilters.map((filter, index) => {\r\n                                                                                    return <li className=\"a4-mobile-filter-items-item\" data-filter-type=\"category\" data-value={filter.replace(/\\s+/g, \"-\").trim().toLowerCase()} key={index} onClick={this.clickMobileFilterItem}>\r\n                                                                                        <span>{filter}</span>\r\n                                                                                    </li>\r\n                                                                                })\r\n                                                                            }\r\n                                                                        </ul>\r\n                                                                    </>\r\n                                                                }\r\n                                                            </div>\r\n                                                            <div className=\"a4-mobile-filter-list\">\r\n                                                                {\r\n                                                                    sortOptions && sortOptions.length > 0 &&\r\n                                                                    <>\r\n                                                                        <div className=\"a4-mobile-filter-list-title\">\r\n                                                                            <h4>Sort</h4>\r\n                                                                        </div>\r\n                                                                        <ul className=\"a4-mobile-filter-items\">\r\n                                                                            <li className=\"a4-mobile-filter-items-item -active\" data-filter-type=\"sort\" data-value=\"default\" key={0} onClick={this.clickMobileFilterItem}>\r\n                                                                                <span>Default</span>\r\n                                                                            </li>   \r\n                                                                            {\r\n                                                                                sortOptions.map((option, index) => {\r\n                                                                                    return <li className=\"a4-mobile-filter-items-item\" data-filter-type=\"sort\" data-value={option.replace(/\\s+/g, \"-\").trim().toLowerCase()} key={index+1} onClick={this.clickMobileFilterItem}>\r\n                                                                                        <span>{option}</span>\r\n                                                                                    </li>\r\n                                                                                })\r\n                                                                            }\r\n                                                                        </ul>\r\n                                                                    </>\r\n                                                                }\r\n                                                            </div>\r\n                                                        </div>\r\n                                                        <div className=\"a4-mobile-filter-control\">\r\n                                                            <button className=\"a4-btn -primary\" ref={button => this.mobileSubmitButton = button} onClick={this.clickMobileFilterSubmit}>\r\n                                                                Show &nbsp;\r\n                                                                <span className=\"a4-mobile-filter-control-course-count\">{plans ? plans.length : \"\"} &nbsp;{planType}</span>\r\n                                                            </button>\r\n                                                        </div>\r\n                                                    </div>\r\n                                                </div>\r\n                                            </div>\r\n                                        </section>\r\n                                    </div>\r\n                                </header>\r\n                                <div className=\"a4-pricing-container\">\r\n                                    <section className=\"a4-pricing-memberships\" key={renderKey}>\r\n                                        <ul className=\"a4-pricing-list\" ref={ul => this.plansList = ul}>\r\n                                        {\r\n                                            pagedPlans &&\r\n                                            <>\r\n                                                {\r\n                                                    this.state.currentPlan === \"memberships\" &&\r\n                                                    pagedPlans.map((membership, index) => {\r\n                                                        return <Membership key={index} data={membership} />\r\n                                                    })\r\n                                                }\r\n                                                {\r\n                                                    this.state.currentPlan === \"individual-courses\" &&\r\n                                                    pagedPlans.map((course, index) => {\r\n                                                        if (course.schedules) {\r\n                                                            return <Webinar key={index} data={course} />\r\n                                                        }\r\n                                                        else {\r\n                                                            return <IndividualCourse key={index} data={course} />\r\n                                                        }\r\n                                                        \r\n                                                    })\r\n                                                }\r\n                                                {\r\n                                                    this.state.currentPlan === \"course-bundles\" &&\r\n                                                    pagedPlans.map((bundle, index) => {\r\n                                                        return <CourseBundle key={index} data={bundle} />\r\n                                                    })\r\n                                                }\r\n                                                {\r\n                                                    this.state.currentPlan === \"group-plans\" &&\r\n                                                    pagedPlans.map((plan, index) => {\r\n                                                        return <GroupPlan key={index} data={plan} />\r\n                                                    })\r\n                                                }\r\n                                            </>\r\n                                        }\r\n                                        </ul>\r\n                                        {\r\n                                            plans && plans.length > 10 &&\r\n                                            <Pages count={Math.ceil(plans.length/10)} page={this.state.pageNumber + 1} size=\"large\" onChange={this.changePlansPage}/>\r\n                                        }\r\n                                        {\r\n                                            this.state.searchFilter && plans.length === 0 &&\r\n                                            <Empty name=\"pricing\"/>\r\n                                        }\r\n                                    </section>\r\n                                    <Subscribe />\r\n                                    <Footer />\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </>\r\n                }\r\n            </>\r\n        )\r\n    }\r\n}\r\n\r\nexport default Pricing;","import React from 'react'\r\nimport './Buy.scss'\r\nimport $ from 'jquery'\r\nimport 'select2'\r\nimport gsap from 'gsap'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport FullNameInput from '../shared/FullNameInput/FullNameInput'\r\nimport BubbleButton from '../shared/BubbleButton/BubbleButton'\r\nimport { ReactComponent as Error } from '../../assets/error.svg'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\nimport formService from '../../services/FormService'\r\nimport paymentService from '../../services/PaymentService'\r\nimport memberService from '../../services/MemberService'\r\nimport recaptchaService from '../../services/RecaptchaService'\r\nimport scheduleService from '../../services/ScheduleService'\r\nimport { MemberType } from '../../services/MemberService'\r\n\r\nclass Buy extends React.Component {\r\n    // Constructor\r\n    constructor(props) {\r\n        super(props);\r\n\r\n        // Refs\r\n        this.form = null;\r\n        this.userSwitcher = null;\r\n        this.userSwitch = null;\r\n        this.nameInput = null;\r\n        this.passwordInput = null;\r\n        this.confirmInput = null;\r\n\r\n        // State\r\n        this.state = {\r\n            useFullName: true,\r\n        }\r\n\r\n        // This Binding\r\n        this.clickSwitch = this.clickSwitch.bind(this);\r\n        this.ignoreFullName = this.ignoreFullName.bind(this);\r\n        this.fillSandboxForm = this.fillSandboxForm.bind(this);\r\n        this.submitForm = this.submitForm.bind(this);\r\n    }\r\n\r\n    // Lifecyle\r\n    componentDidMount() {\r\n        window.scrollTo(0, 0);\r\n        this.setupSelects();\r\n        this.setupSwitcher();\r\n    }\r\n\r\n    componentDidUpdate() {\r\n        this.setupSelects();\r\n    }\r\n\r\n    // Helpers\r\n    setupSwitcher() {\r\n        if (this.userSwitcher) {\r\n            const userSelections = this.userSwitcher.querySelectorAll(\".a4-buy-form-selection\");\r\n            \r\n            if (paymentService.memberType === \"register\") {\r\n                userSelections[0].classList.add(\"-active\");\r\n                this.userSwitch.style.width = userSelections[0].offsetWidth + 5 + \"px\";\r\n                this.userSwitch.style.left = userSelections[0].offsetLeft + 20 + \"px\";\r\n                this.toggleAccountInputs(\"register\");\r\n            }\r\n            else {\r\n                userSelections[1].classList.add(\"-active\");\r\n                this.userSwitch.style.width = userSelections[1].offsetWidth + 5 + \"px\";\r\n                this.userSwitch.style.left = userSelections[1].offsetLeft + 20 + \"px\";\r\n                this.toggleAccountInputs(\"login\");\r\n            }\r\n        }\r\n    }\r\n\r\n    setupSelects() {\r\n        $('.a4-select select').select2({\r\n            minimumResultsForSearch: -1,\r\n        });\r\n\r\n        $('.a4-buy-form-btn-group-user select, .a4-buy-form-btn-group-payment select').on(\"change\", (e, shouldIgnore) => {\r\n            if (!shouldIgnore) {\r\n                const selectedSwitch = $(this.userSwitcher).find(\".a4-buy-form-selection\").filter(`[data-value=\"${e.currentTarget.value}\"]`)[0];\r\n\r\n                if (selectedSwitch) {\r\n                    this.setSwitchActive(selectedSwitch);\r\n                    this.toggleAccountInputs(e.currentTarget.value);\r\n                    paymentService.memberType = e.currentTarget.value;\r\n                }\r\n            }\r\n        });\r\n    }\r\n\r\n    setSwitchActive(selection) {\r\n        formService.hideAllErrors(this.form);\r\n        \r\n        $(selection).siblings().removeClass(\"-active\");\r\n        selection.classList.add(\"-active\");\r\n\r\n        gsap.to(this.userSwitch, {\r\n            width: selection.offsetWidth,\r\n            left: selection.offsetLeft + 20,\r\n            duration: 0.2,\r\n        });\r\n    }\r\n    \r\n    toggleAccountInputs(value) {\r\n        if (value === \"login\") {\r\n            this.nameInput.hideInputs();\r\n\r\n            $(this.passwordInput).css(\"margin-bottom\", 0)\r\n            this.confirmInput.classList.add(\"-disabled\");\r\n            $(this.confirmInput).hide(200);\r\n\r\n        } else {\r\n            this.nameInput.showInputs();\r\n\r\n            $(this.confirmInput).show(0, () => {\r\n                $(this.passwordInput).css(\"margin-bottom\", 34)\r\n                this.confirmInput.classList.remove(\"-disabled\");\r\n            });\r\n        }\r\n    }\r\n\r\n    // Event Handlers\r\n    clickSwitch(e) {\r\n        if (!e.currentTarget.classList.contains(\"-active\")) {\r\n            this.setSwitchActive(e.currentTarget);\r\n            this.toggleAccountInputs(e.currentTarget.dataset.value);\r\n\r\n            const select = $(e.currentTarget).parent().find(\"select\");\r\n            select.val(e.currentTarget.dataset.value);\r\n            select.trigger(\"change\", true);\r\n\r\n            paymentService.memberType = e.currentTarget.dataset.value;\r\n        }\r\n    }\r\n\r\n    fillSandboxForm(e) {\r\n        e.preventDefault();\r\n\r\n        if (e.ctrlKey || e.metaKey) {\r\n\r\n            const inputs = this.form.querySelectorAll('.a4-input');\r\n\r\n            inputs[0].querySelector(\"input, textarea\").value = \"Erick Harris\"\r\n            inputs[1].querySelector(\"input, textarea\").value = \"eh1@harris5.com\"\r\n            inputs[2].querySelector(\"input, textarea\").value = \"password\"\r\n        }\r\n    }\r\n\r\n    ignoreFullName() {\r\n        this.setState({ useFullName: false });\r\n    }\r\n\r\n    submitForm(e) {\r\n        e.preventDefault();\r\n\r\n        const isFormValid = formService.validate(this.form);\r\n\r\n        const email = e.target.email.value.trim();\r\n        const password = e.target.password.value;\r\n        const confirm = e.target.confirm.value;\r\n\r\n        if (paymentService.memberType === \"register\" && password !== confirm) {\r\n            formService.showInputError(this.form, \"confirm\", \"This password does not match\");\r\n            formService.hideLoadingButton(this.form);\r\n            return;\r\n        }\r\n\r\n        if(!isFormValid) return;\r\n\r\n        formService.showLoadingButton(this.form);\r\n\r\n        let memberRequest = {email, password};\r\n\r\n        recaptchaService.getToken(paymentService.paymentType)\r\n        .then(token => {\r\n            memberRequest.recaptchaToken = token;\r\n\r\n            if (paymentService.memberType === \"register\") {\r\n                memberRequest.requestType = 1;\r\n                memberRequest.memberType = MemberType.Payment;\r\n                memberRequest.timezoneOffset = -(new Date().getTimezoneOffset() / 60);\r\n                memberRequest.contactId = memberService.getMtcId();\r\n\r\n                if (this.state.useFullName) {\r\n                    memberRequest.firstName = e.target.fullName.value.split(\" \")[0];\r\n                    memberRequest.lastName = e.target.fullName.value.split(\" \")[1];\r\n                }\r\n                else {\r\n                    memberRequest.firstName = e.target.firstName.value;\r\n                    memberRequest.middleName = e.target.middleName.value;\r\n                    memberRequest.lastName = e.target.lastName.value;\r\n                }\r\n    \r\n                memberService.checkEmailInUse(memberRequest)\r\n                .then((isInUse) =>  {\r\n                    if (isInUse) {\r\n                        formService.hideAllErrors(this.form);\r\n                        formService.hideLoadingButton(this.form);\r\n                        formService.showInputError(this.form, \"email\", \"This email address is already taken\")\r\n                    }\r\n                    else {\r\n                        memberService.validateMember(memberRequest)\r\n                        .then(json => {\r\n                            if (json.succeeded) {\r\n                                paymentService.member = memberRequest;\r\n                                this.props.history.push(\"/payment\");\r\n                            }\r\n                            else {\r\n                                formService.hideAllErrors(this.form);\r\n                                formService.hideLoadingButton(this.form);\r\n                                formService.showFormError(this.form, json.errors[0]);\r\n                            }\r\n                        });\r\n                    }\r\n                })  \r\n            }\r\n            else if (paymentService.memberType === \"login\") {\r\n                memberRequest.requestType = 0;\r\n                memberRequest.contactId = memberService.getMtcId();\r\n\r\n                memberService.validateMember(memberRequest)\r\n                .then(json => {\r\n                    if (json.succeeded) {\r\n                        paymentService.member = memberRequest;\r\n                        this.props.history.push(\"/payment\");\r\n                    }\r\n                    else {\r\n                        formService.hideAllErrors(this.form);\r\n                        formService.hideLoadingButton(this.form);\r\n                        formService.showFormError(this.form, json.errors[0]);\r\n                    }\r\n                })         \r\n            }\r\n        })\r\n    }\r\n\r\n    // Component\r\n    render() {\r\n        // Go Home If No Payment Data\r\n        if (!paymentService.item) {\r\n            this.props.history.push(`/pricing/${bootstrapService.defaultPlanType}`);\r\n            return null;\r\n        }\r\n\r\n        const title = paymentService.item ? paymentService.item.title : null;\r\n        const schedule = paymentService.schedule ? `${new Date(paymentService.schedule.startDate).toLocaleDateString(\"en-US\", {weekday: 'long', month: 'short', day: 'numeric'})}, ${new Date(paymentService.schedule.startDate).toLocaleTimeString(\"en-US\", {hour: \"2-digit\", minute: \"2-digit\"})} - ${new Date(paymentService.schedule.endDate).toLocaleTimeString(\"en-US\", {hour: \"2-digit\", minute: \"2-digit\"})} (${scheduleService.getTimeZone()})` : null;\r\n\r\n        const firstName = paymentService.member ? paymentService.member.firstName : \"\";\r\n        const middleName = paymentService.member ? paymentService.member.middleName : \"\";\r\n        const lastName = paymentService.member ? paymentService.member.lastName : \"\";\r\n        const email = paymentService.member ? paymentService.member.email : \"\";\r\n        const password = paymentService.member ? paymentService.member.password : \"\";\r\n\r\n        return (\r\n            <>\r\n                <Navbar />\r\n                <div className=\"a4-view\">\r\n                    <div className=\"a4-layout a4-buy\">\r\n                        <section className=\"a4-buy-container\">\r\n                            <div className=\"a4-buy-content\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                <header className=\"a4-buy-title\">\r\n                                    <h1>\r\n                                        {title}\r\n                                    </h1>\r\n                                    {\r\n                                        schedule &&\r\n                                        <h3>\r\n                                            {schedule}\r\n                                        </h3>\r\n                                    }    \r\n                                </header>\r\n                                <form className=\"a4-buy-form\" ref={form => this.form = form} onSubmit={this.submitForm}>\r\n                                    <div className=\"a4-buy-form-group\">\r\n                                        <div className=\"a4-buy-form-group-switcher-container -user\" ref={div => this.userSwitcher = div}>\r\n                                            <div className=\"a4-buy-form-btn-group a4-buy-form-btn-group-user\">\r\n                                                <div className=\"a4-select sm_hidden\">\r\n                                                    <select defaultValue=\"register\">\r\n                                                        <option value=\"register\">Create New Account</option>\r\n                                                        <option value=\"login\">Login To My Account</option>\r\n                                                    </select>\r\n                                                </div>\r\n                                                <div className=\"a4-buy-form-selection hidden sm_block\" type=\"button\" data-value=\"register\" onClick={this.clickSwitch}>\r\n                                                    Create New Account\r\n                                                </div>\r\n                                                <div className=\"a4-buy-form-selection hidden sm_block\" type=\"button\" data-value=\"login\" onClick={this.clickSwitch}>\r\n                                                    Login To My Account\r\n                                                </div>\r\n                                            </div>\r\n                                            <div className=\"a4-switcher\" ref={div => this.userSwitch = div}></div>\r\n                                        </div>\r\n                                        <FullNameInput ref={div => this.nameInput = div} ignoreFullName={this.ignoreFullName} firstName={firstName} middleName={middleName} lastName={lastName}/>\r\n                                        <div className=\"a4-input\">\r\n                                            <input name=\"email\" required placeholder=\"E-mail address\" defaultValue={email} />\r\n                                            <label htmlFor=\"email\">E-mail address</label>\r\n                                            <span className=\"a4-input-error\">Enter a valid e-mail address</span>\r\n                                            <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                                <Error />\r\n                                            </svg>\r\n                                        </div>\r\n                                        <div className=\"a4-input\" ref={div => this.passwordInput = div}>\r\n                                            <input name=\"password\" placeholder=\"Password\" required type=\"password\" defaultValue={password} />\r\n                                            <label htmlFor=\"password\">Password</label>\r\n                                            <span className=\"a4-input-error\">Enter a valid password</span>\r\n                                            <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                                <Error />\r\n                                            </svg>\r\n                                        </div>\r\n                                        <div className=\"a4-input\" ref={div => this.confirmInput = div}>\r\n                                            <input name=\"confirm\" placeholder=\"Confirm Password\" required type=\"password\" defaultValue={password} />\r\n                                            <label htmlFor=\"password\">Confirm Password</label>\r\n                                            <span className=\"a4-input-error\">Enter a valid password</span>\r\n                                            <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                                <Error />\r\n                                            </svg>\r\n                                        </div>\r\n                                    </div>\r\n                                    <p className=\"a4-form-error\"></p>\r\n                                    <BubbleButton className=\"a4-form-submit -primary -fixed\" type=\"submit\" formNoValidate>\r\n                                        Proceed to Payment\r\n                                    </BubbleButton>\r\n                                    <div className=\"a4-buy-form-terms\" onClick={this.fillSandboxForm}>\r\n                                        Your payment information will be collected on the next page\r\n                                    </div>\r\n                                </form>\r\n                            </div>\r\n                        </section>\r\n                    </div>\r\n                </div>\r\n                <Footer />\r\n            </>\r\n        )\r\n    }\r\n}\r\n\r\nexport default Buy;","import React from 'react'\r\nimport './Payment.scss'\r\nimport { Link } from \"react-router-dom\"\r\nimport $ from 'jquery'\r\nimport 'select2'\r\nimport gsap from 'gsap'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport BubbleButton from '../shared/BubbleButton/BubbleButton'\r\nimport { ReactComponent as Error } from '../../assets/error.svg'\r\n\r\nimport formService from '../../services/FormService'\r\nimport paymentService from '../../services/PaymentService'\r\nimport memberService from '../../services/MemberService'\r\nimport recaptchaService from '../../services/RecaptchaService'\r\nimport scheduleService from '../../services/ScheduleService'\r\nimport bootstrapService from '../../services/BootstrapService'\r\n\r\nclass Payment extends React.Component {\r\n    // Constructor\r\n    constructor(props) {\r\n        super(props);\r\n\r\n        //Payment options\r\n        this.paymentOptions = bootstrapService.getPaymentOptions();\r\n        if (this.paymentOptions) {\r\n            this.useCreditCard = this.paymentOptions.useCreditCard;\r\n            this.useCreditCardSandbox = this.paymentOptions.useCreditCardSandbox;\r\n            this.usePayPal = this.paymentOptions.usePayPal;\r\n            this.usePayPalSandbox = this.paymentOptions.usePayPalSandbox;\r\n            this.useOffline = this.paymentOptions.useOffline;\r\n            this.numPaymentMethods = (this.useCreditCard ? 1 : 0) + (this.usePayPal ? 1 : 0) + (this.useOffline ? 1 : 0);\r\n        }\r\n\r\n        // Refs\r\n        this.form = null;\r\n        this.paymentSwitcher = null;\r\n        this.paymentSwitch = null;\r\n        this.paymentInputs = null;\r\n        this.paymentParagraph = null;\r\n\r\n        // This Binding\r\n        this.clickSwitch = this.clickSwitch.bind(this);\r\n        this.getSandboxTicket = this.getSandboxTicket.bind(this);\r\n        this.submitForm = this.submitForm.bind(this);\r\n    }\r\n\r\n    // Lifecyle\r\n    componentDidMount() {\r\n        window.scrollTo(0, 0);\r\n        this.setupSelects();\r\n        this.setupSwitcher();\r\n    }\r\n\r\n    componentDidUpdate() {\r\n        this.setupSelects();\r\n    }\r\n\r\n    // Helpers\r\n    setupSwitcher() {\r\n        if (this.paymentSwitcher) {\r\n            const paymentSelections = this.paymentSwitcher.querySelectorAll(\".a4-payment-form-selection\");\r\n\r\n            if (paymentService.paymentType === \"cc\") {\r\n                paymentSelections[0].classList.add(\"-active\");\r\n                this.paymentSwitch.style.width = paymentSelections[0].offsetWidth + 5 + \"px\";\r\n                this.paymentSwitch.style.left = paymentSelections[0].offsetLeft + 40 + \"px\";\r\n            }\r\n            else if (paymentService.paymentType === \"pp\") {\r\n                paymentSelections[1].classList.add(\"-active\");\r\n                this.paymentSwitch.style.width = paymentSelections[1].offsetWidth + 5 + \"px\";\r\n                this.paymentSwitch.style.left = paymentSelections[1].offsetLeft + 40 + \"px\";\r\n            }\r\n            else {\r\n                paymentSelections[2].classList.add(\"-active\");\r\n                this.paymentSwitch.style.width = paymentSelections[2].offsetWidth + 5 + \"px\";\r\n                this.paymentSwitch.style.left = paymentSelections[2].offsetLeft + \"px\";\r\n            }\r\n\r\n            this.togglePaymentInputs(paymentService.paymentType);\r\n        }\r\n    }\r\n\r\n    setupSelects() {\r\n        $('.a4-select select').select2({\r\n            minimumResultsForSearch: -1,\r\n        });\r\n\r\n        $('.a4-payment-form-btn-group-user select, .a4-payment-form-btn-group-payment select').on(\"change\", (e, shouldIgnore) => {\r\n            if (!shouldIgnore) {\r\n                const selectedSwitch = $(this.paymentSwitcher).find(\".a4-payment-form-selection\").filter(`[data-value=\"${e.currentTarget.value}\"]`)[0];\r\n\r\n                if (selectedSwitch) {\r\n                    this.setSwitchActive(selectedSwitch);\r\n                    this.togglePaymentInputs(e.currentTarget.value);\r\n                    paymentService.paymentType = e.currentTarget.value;\r\n                }\r\n            }\r\n        });\r\n    }\r\n\r\n    setSwitchActive(selection) {\r\n        formService.hideAllErrors(this.form);\r\n\r\n        $(selection).siblings().removeClass(\"-active\");\r\n        selection.classList.add(\"-active\");\r\n\r\n        gsap.to(this.paymentSwitch, {\r\n            width: selection.offsetWidth,\r\n            left: selection.offsetLeft + 40,\r\n            duration: 0.2,\r\n        });\r\n    }\r\n\r\n    togglePaymentInputs(value) {\r\n        const paymentInputs = $(this.paymentInputs).find(\".a4-input\");\r\n\r\n        if (value === \"cc\") {\r\n            $(this.paymentParagraph).hide();\r\n            $(this.paymentInputs).show(0, () => {\r\n                this.enableForm(paymentInputs);\r\n            });\r\n\r\n        } else {\r\n            this.disableForm(paymentInputs);\r\n\r\n            if (value === \"pp\") {\r\n                this.paymentParagraph.innerText = \"You will be redirected to PayPal to complete your payment.\";\r\n            }\r\n            else {\r\n                this.paymentParagraph.innerText = \"You will be provided with instructions to provide your payment information.\";\r\n            }\r\n\r\n            $(this.paymentInputs).hide(200);\r\n            $(this.paymentParagraph).show();\r\n        }\r\n    }\r\n\r\n    disableForm(paymentInputs) {\r\n        paymentInputs.each((index, input) => {\r\n            input.classList.add(\"-disabled\");\r\n        });\r\n    }\r\n\r\n    enableForm(paymentInputs) {\r\n        paymentInputs.each((index, input) => {\r\n            input.classList.remove(\"-disabled\");\r\n        });\r\n    }\r\n\r\n    // Event Handlers\r\n    clickSwitch(e) {\r\n        if (!e.currentTarget.classList.contains(\"-active\")) {\r\n            this.setSwitchActive(e.currentTarget);\r\n            this.togglePaymentInputs(e.currentTarget.dataset.value);\r\n\r\n            const select = $(e.currentTarget).parent().find(\"select\");\r\n            select.val(e.currentTarget.dataset.value);\r\n            select.trigger(\"change\", true);\r\n\r\n            paymentService.paymentType = e.currentTarget.dataset.value;\r\n        }\r\n    }\r\n\r\n    getSandboxTicket(e) {\r\n        e.preventDefault();\r\n\r\n        const useSandbox =\r\n            (paymentService.paymentType === \"cc\" && this.useCreditCardSandbox) ||\r\n            (paymentService.paymentType === \"pp\" && this.usePayPalSandbox);\r\n\r\n        if (useSandbox) {\r\n            if (e.ctrlKey || e.metaKey) {\r\n\r\n                const inputs = this.form.querySelectorAll('.a4-input');\r\n\r\n                paymentService.getSandboxTicket()\r\n                    .then(json => {\r\n                        if (json.succeeded) {\r\n                            if (paymentService.paymentType === \"cc\") {\r\n                                inputs[0].querySelector(\"input, textarea\").value = \"4007000000027\"\r\n                                inputs[1].querySelector(\"input, textarea\").value = \"12\"\r\n                                inputs[2].querySelector(\"input, textarea\").value = \"2025\"\r\n                                inputs[3].querySelector(\"input, textarea\").value = \"123\"\r\n                            }\r\n                        }\r\n                        else {\r\n                            console.log(json.errors);\r\n                        }\r\n                    })\r\n            }\r\n        }\r\n    }\r\n\r\n    submitForm(e) {\r\n        e.preventDefault();\r\n\r\n        if (paymentService.paymentType === \"cc\") {\r\n            this.submitCreditCard();\r\n        }\r\n        else if (paymentService.paymentType === \"pp\") {\r\n            this.submitPayPal();\r\n        }\r\n        else if (paymentService.paymentType === \"offline\") {\r\n            this.submitCheckOrPhone();\r\n        }\r\n    }\r\n\r\n    // Payment Methods\r\n    submitCreditCard() {\r\n        const isFormValid = formService.validate(this.form);\r\n        if (!isFormValid) return;\r\n\r\n        formService.showLoadingButton(this.form);\r\n\r\n        const creditCardNo = this.form.card.value;\r\n        const expirationMonth = this.form.mm.value;\r\n        const expirationYear = this.form.yyyy.value;\r\n        const securityCode = this.form.cvv.value;\r\n\r\n        const creditCard = { creditCardNo, expirationMonth, expirationYear, securityCode };\r\n        paymentService.creditCard = creditCard;\r\n\r\n        recaptchaService.getToken(\"buy\")\r\n            .then(token => {\r\n                let buyRequest = { recaptchaToken: token };\r\n\r\n                paymentService.buyItemCreditCard(buyRequest)\r\n                    .then(json => {\r\n                        if (json.succeeded) {\r\n                            memberService.goToMembers();\r\n                        }\r\n                        else {\r\n                            formService.hideAllErrors(this.form);\r\n                            formService.hideLoadingButton(this.form);\r\n                            formService.showFormError(this.form, json.errors[0]);\r\n                        }\r\n                    })\r\n            })\r\n    }\r\n\r\n    submitPayPal() {\r\n        formService.clearAllInputs(this.form);\r\n        formService.showLoadingButton(this.form);\r\n\r\n        recaptchaService.getToken(\"buy\")\r\n            .then(token => {\r\n                let buyRequest = { recaptchaToken: token };\r\n\r\n                paymentService.buyItemPayPal(buyRequest)\r\n                    .then(json => {\r\n                        if (json.succeeded) {\r\n                            let token = json.result.orderRequest.paymentRequests[0].token\r\n                            if (token) {\r\n                                //PayPal payment handler for PayPal\r\n                                if (paymentService.sandboxTicket) {\r\n                                    window.location.href = `https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&useraction=commit&token=${token}`;\r\n                                }\r\n                                else {\r\n                                    window.location.href = `https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&useraction=commit&token=${token}`;\r\n                                }\r\n                            }\r\n                            else {\r\n                                //Authorize.net payment handler for PayPal\r\n                                let secureAcceptanceUrl = json.result.orderRequest.paymentRequests[0].secureAcceptanceUrl\r\n                                if (secureAcceptanceUrl) {\r\n                                    window.location.href = secureAcceptanceUrl;\r\n                                }\r\n                            }\r\n                        }\r\n                        else {\r\n                            console.log(json.errors)\r\n                            formService.hideLoadingButton(this.form);\r\n                            this.paymentParagraph.innerText = \"PayPal payment unsuccessful. Please try again or use another payment method.\";\r\n                        }\r\n                    })\r\n            });\r\n    }\r\n\r\n    submitCheckOrPhone() {\r\n        formService.clearAllInputs(this.form);\r\n        formService.showLoadingButton(this.form);\r\n\r\n        recaptchaService.getToken(\"buy\")\r\n            .then(token => {\r\n                let buyRequest = { recaptchaToken: token };\r\n\r\n                paymentService.buyItemOffline(buyRequest)\r\n                    .then(json => {\r\n                        if (json.succeeded) {\r\n                            memberService.goToMembers();\r\n                        }\r\n                        else {\r\n                            console.log(json.errors)\r\n                            formService.hideLoadingButton(this.form);\r\n                            this.paymentParagraph.innerText = \"Offline payment unsuccessful. Please try again or use another payment method.\";\r\n                        }\r\n                    })\r\n            });\r\n    }\r\n\r\n    // Component\r\n    render() {\r\n        // Go Home If No Payment Data\r\n        if (!paymentService.item || !paymentService.member) {\r\n            if (paymentService.group) {\r\n                this.props.history.push(\"/complete-group\");\r\n            }\r\n            else {\r\n                this.props.history.push(\"/buy\");\r\n            }\r\n            return null;\r\n        }\r\n\r\n        const title = paymentService.item ? paymentService.item.title : \"\";\r\n        const schedule = paymentService.schedule ? `${new Date(paymentService.schedule.startDate).toLocaleDateString(\"en-US\", { weekday: 'long', month: 'short', day: 'numeric' })}, ${new Date(paymentService.schedule.startDate).toLocaleTimeString(\"en-US\", { hour: \"2-digit\", minute: \"2-digit\" })} - ${new Date(paymentService.schedule.endDate).toLocaleTimeString(\"en-US\", { hour: \"2-digit\", minute: \"2-digit\" })} (${scheduleService.getTimeZone()})` : null;\r\n        const price = paymentService.item ? (paymentService.item.price * paymentService.item.quantity).toFixed(2) : \"\";\r\n\r\n        const creditCardLabel = this.numPaymentMethods === 3 ? \"Credit Card\" : \"Pay With Credit Card\";\r\n        const payPalLabel = this.numPaymentMethods === 3 ? \"PayPal\" : \"Pay With PayPal\";\r\n        \r\n        return (\r\n            <>\r\n                <Navbar />\r\n                <div className=\"a4-view\">\r\n                    <div className=\"a4-layout a4-payment\">\r\n                        <section className=\"a4-payment-container\">\r\n                            <div className=\"a4-payment-content\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                <header className=\"a4-payment-title\">\r\n                                    <h1>\r\n                                        {title}\r\n                                    </h1>\r\n                                    {\r\n                                        schedule &&\r\n                                        <h3>\r\n                                            {schedule}\r\n                                        </h3>\r\n                                    }\r\n                                </header>\r\n                                <form className=\"a4-payment-form\" ref={form => this.form = form}>\r\n                                    <div className=\"a4-payment-form-group\">\r\n                                        <div className=\"a4-payment-form-group-switcher-container -payment\" ref={div => this.paymentSwitcher = div}>\r\n                                            <div className=\"a4-payment-form-btn-group a4-payment-form-btn-group-payment\">\r\n                                                <div className=\"a4-select sm_hidden\">\r\n                                                    <select name=\"payment_type\" defaultValue=\"cc\">\r\n                                                    {\r\n                                                        this.useCreditCard && \r\n                                                        <option value=\"cc\">Credit Card</option>\r\n                                                    }\r\n                                                    {\r\n                                                        this.usePayPal && \r\n                                                        <option value=\"pp\">PayPal</option>\r\n                                                    }\r\n                                                    {\r\n                                                        this.useOffline && \r\n                                                        <option value=\"offline\">Check or Phone</option>\r\n                                                    }\r\n                                                    </select>\r\n                                                </div>\r\n                                                {\r\n                                                    this.useCreditCard &&\r\n                                                    <div className=\"a4-payment-form-selection hidden sm_block\" type=\"button\" data-value=\"cc\" onClick={this.clickSwitch}>\r\n                                                        {creditCardLabel}\r\n                                                    </div>\r\n                                                }  \r\n                                                {\r\n                                                    this.usePayPal &&\r\n                                                    <div className=\"a4-payment-form-selection hidden sm_block\" type=\"button\" data-value=\"pp\" onClick={this.clickSwitch}>\r\n                                                        {payPalLabel}\r\n                                                    </div>\r\n                                                }\r\n                                                {\r\n                                                    this.useOffline &&\r\n                                                    <div className=\"a4-payment-form-selection hidden sm_block\" type=\"button\" data-value=\"offline\" onClick={this.clickSwitch}>\r\n                                                        Check or Phone\r\n                                                    </div>\r\n                                                }\r\n                                            </div>\r\n                                            <div className=\"a4-switcher\" ref={div => this.paymentSwitch = div}></div>\r\n                                        </div>\r\n                                        <div className=\"a4-inputs\" ref={div => this.paymentInputs = div}>\r\n                                            <div className=\"a4-input\">\r\n                                                <input name=\"card\" placeholder=\"Card No\" required />\r\n                                                <label htmlFor=\"card\">Card No</label>\r\n                                                <span className=\"a4-input-error\" ref={span => this.cardError = span}></span>\r\n                                                <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                                    <Error />\r\n                                                </svg>\r\n                                            </div>\r\n                                            <div className=\"a4-payment-form-small-input-group\">\r\n                                                <div className=\"a4-input\">\r\n                                                    <input name=\"mm\" placeholder=\"MM\" required />\r\n                                                    <label htmlFor=\"mm\">MM</label>\r\n                                                    <span className=\"a4-input-error\"></span>\r\n                                                    <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                                        <Error />\r\n                                                    </svg>\r\n                                                </div>\r\n                                                <div className=\"a4-input\">\r\n                                                    <input name=\"yyyy\" placeholder=\"YYYY\" required />\r\n                                                    <label htmlFor=\"yyyy\">YYYY</label>\r\n                                                    <span className=\"a4-input-error\"></span>\r\n                                                    <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                                        <Error />\r\n                                                    </svg>\r\n                                                </div>\r\n                                                <div className=\"a4-input\">\r\n                                                    <input name=\"cvv\" placeholder=\"CVV\" type=\"password\" required />\r\n                                                    <label htmlFor=\"cvv\">CVV</label>\r\n                                                    <span className=\"a4-input-error\"></span>\r\n                                                    <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                                        <Error />\r\n                                                    </svg>\r\n                                                </div>\r\n                                            </div>\r\n                                        </div>\r\n                                        <p className=\"a4-form-error\"></p>\r\n                                        <p className=\"a4-payment-form-paragraph\" ref={p => this.paymentParagraph = p}></p>\r\n                                    </div>\r\n                                    <BubbleButton className=\"a4-form-submit -primary -fixed\" type=\"button\" onClick={this.submitForm} formNoValidate>\r\n                                        Buy Now &nbsp; ${price}\r\n                                    </BubbleButton>\r\n                                    <div className=\"a4-payment-form-terms\" onClick={this.getSandboxTicket}>\r\n                                        By clicking Buy Now you agree to our &nbsp;\r\n                                        <Link to=\"/terms-and-conditions\" className=\"block sm_inline\">\r\n                                            <b>Terms of Use</b>\r\n                                        </Link>\r\n                                    </div>\r\n                                </form>\r\n                            </div>\r\n                        </section>\r\n                    </div>\r\n                </div>\r\n                <Footer />\r\n            </>\r\n        )\r\n    }\r\n}\r\n\r\nexport default Payment;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n  fillRule: \"evenodd\",\n  clipRule: \"evenodd\",\n  d: \"M17.5 3.25C15.7051 3.25 14.25 4.70507 14.25 6.5C14.25 8.29493 15.7051 9.75 17.5 9.75C19.2949 9.75 20.75 8.29493 20.75 6.5C20.75 4.70507 19.2949 3.25 17.5 3.25ZM11.75 6.5C11.75 3.32436 14.3244 0.75 17.5 0.75C20.6756 0.75 23.25 3.32436 23.25 6.5C23.25 9.67564 20.6756 12.25 17.5 12.25C14.3244 12.25 11.75 9.67564 11.75 6.5Z\",\n  fill: \"current\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n  fillRule: \"evenodd\",\n  clipRule: \"evenodd\",\n  d: \"M6.5 22.25C4.70507 22.25 3.25 23.7051 3.25 25.5C3.25 27.2949 4.70507 28.75 6.5 28.75C8.29493 28.75 9.75 27.2949 9.75 25.5C9.75 23.7051 8.29493 22.25 6.5 22.25ZM0.75 25.5C0.75 22.3244 3.32436 19.75 6.5 19.75C9.67564 19.75 12.25 22.3244 12.25 25.5C12.25 28.6756 9.67564 31.25 6.5 31.25C3.32436 31.25 0.75 28.6756 0.75 25.5Z\",\n  fill: \"current\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n  fillRule: \"evenodd\",\n  clipRule: \"evenodd\",\n  d: \"M28.1 22.25C26.3051 22.25 24.85 23.7051 24.85 25.5C24.85 27.2949 26.3051 28.75 28.1 28.75C29.8949 28.75 31.35 27.2949 31.35 25.5C31.35 23.7051 29.8949 22.25 28.1 22.25ZM22.35 25.5C22.35 22.3244 24.9244 19.75 28.1 19.75C31.2756 19.75 33.85 22.3244 33.85 25.5C33.85 28.6756 31.2756 31.25 28.1 31.25C24.9244 31.25 22.35 28.6756 22.35 25.5Z\",\n  fill: \"current\"\n});\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n  fillRule: \"evenodd\",\n  clipRule: \"evenodd\",\n  d: \"M13.559 12.882C14.1765 13.1907 14.4268 13.9416 14.118 14.559L12.118 18.559C11.8093 19.1765 11.0585 19.4268 10.441 19.1181C9.82351 18.8093 9.57323 18.0585 9.88197 17.441L11.882 13.441C12.1907 12.8235 12.9415 12.5733 13.559 12.882Z\",\n  fill: \"current\"\n});\n\nvar _ref6 = /*#__PURE__*/React.createElement(\"path\", {\n  fillRule: \"evenodd\",\n  clipRule: \"evenodd\",\n  d: \"M21.441 12.882C20.8235 13.1907 20.5732 13.9416 20.882 14.559L22.882 18.559C23.1907 19.1765 23.9415 19.4268 24.559 19.1181C25.1765 18.8093 25.4268 18.0585 25.118 17.441L23.118 13.441C22.8093 12.8235 22.0585 12.5733 21.441 12.882Z\",\n  fill: \"current\"\n});\n\nvar _ref7 = /*#__PURE__*/React.createElement(\"path\", {\n  fillRule: \"evenodd\",\n  clipRule: \"evenodd\",\n  d: \"M13.6446 25.3335C13.6447 26.0238 14.2043 26.5834 14.8947 26.5834L19.5613 26.5833C20.2517 26.5833 20.8113 26.0237 20.8113 25.3333C20.8113 24.6429 20.2516 24.0833 19.5613 24.0833L14.8946 24.0834C14.2043 24.0834 13.6446 24.6431 13.6446 25.3335Z\",\n  fill: \"current\"\n});\n\nfunction SvgSocial(_ref, svgRef) {\n  var title = _ref.title,\n      titleId = _ref.titleId,\n      props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 34,\n    height: 32,\n    viewBox: \"0 0 34 32\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSocial);\nexport default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzQiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzNCAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTcuNSAzLjI1QzE1LjcwNTEgMy4yNSAxNC4yNSA0LjcwNTA3IDE0LjI1IDYuNUMxNC4yNSA4LjI5NDkzIDE1LjcwNTEgOS43NSAxNy41IDkuNzVDMTkuMjk0OSA5Ljc1IDIwLjc1IDguMjk0OTMgMjAuNzUgNi41QzIwLjc1IDQuNzA1MDcgMTkuMjk0OSAzLjI1IDE3LjUgMy4yNVpNMTEuNzUgNi41QzExLjc1IDMuMzI0MzYgMTQuMzI0NCAwLjc1IDE3LjUgMC43NUMyMC42NzU2IDAuNzUgMjMuMjUgMy4zMjQzNiAyMy4yNSA2LjVDMjMuMjUgOS42NzU2NCAyMC42NzU2IDEyLjI1IDE3LjUgMTIuMjVDMTQuMzI0NCAxMi4yNSAxMS43NSA5LjY3NTY0IDExLjc1IDYuNVoiIGZpbGw9ImN1cnJlbnQiLz4NCjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNi41IDIyLjI1QzQuNzA1MDcgMjIuMjUgMy4yNSAyMy43MDUxIDMuMjUgMjUuNUMzLjI1IDI3LjI5NDkgNC43MDUwNyAyOC43NSA2LjUgMjguNzVDOC4yOTQ5MyAyOC43NSA5Ljc1IDI3LjI5NDkgOS43NSAyNS41QzkuNzUgMjMuNzA1MSA4LjI5NDkzIDIyLjI1IDYuNSAyMi4yNVpNMC43NSAyNS41QzAuNzUgMjIuMzI0NCAzLjMyNDM2IDE5Ljc1IDYuNSAxOS43NUM5LjY3NTY0IDE5Ljc1IDEyLjI1IDIyLjMyNDQgMTIuMjUgMjUuNUMxMi4yNSAyOC42NzU2IDkuNjc1NjQgMzEuMjUgNi41IDMxLjI1QzMuMzI0MzYgMzEuMjUgMC43NSAyOC42NzU2IDAuNzUgMjUuNVoiIGZpbGw9ImN1cnJlbnQiLz4NCjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjguMSAyMi4yNUMyNi4zMDUxIDIyLjI1IDI0Ljg1IDIzLjcwNTEgMjQuODUgMjUuNUMyNC44NSAyNy4yOTQ5IDI2LjMwNTEgMjguNzUgMjguMSAyOC43NUMyOS44OTQ5IDI4Ljc1IDMxLjM1IDI3LjI5NDkgMzEuMzUgMjUuNUMzMS4zNSAyMy43MDUxIDI5Ljg5NDkgMjIuMjUgMjguMSAyMi4yNVpNMjIuMzUgMjUuNUMyMi4zNSAyMi4zMjQ0IDI0LjkyNDQgMTkuNzUgMjguMSAxOS43NUMzMS4yNzU2IDE5Ljc1IDMzLjg1IDIyLjMyNDQgMzMuODUgMjUuNUMzMy44NSAyOC42NzU2IDMxLjI3NTYgMzEuMjUgMjguMSAzMS4yNUMyNC45MjQ0IDMxLjI1IDIyLjM1IDI4LjY3NTYgMjIuMzUgMjUuNVoiIGZpbGw9ImN1cnJlbnQiLz4NCjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTMuNTU5IDEyLjg4MkMxNC4xNzY1IDEzLjE5MDcgMTQuNDI2OCAxMy45NDE2IDE0LjExOCAxNC41NTlMMTIuMTE4IDE4LjU1OUMxMS44MDkzIDE5LjE3NjUgMTEuMDU4NSAxOS40MjY4IDEwLjQ0MSAxOS4xMTgxQzkuODIzNTEgMTguODA5MyA5LjU3MzIzIDE4LjA1ODUgOS44ODE5NyAxNy40NDFMMTEuODgyIDEzLjQ0MUMxMi4xOTA3IDEyLjgyMzUgMTIuOTQxNSAxMi41NzMzIDEzLjU1OSAxMi44ODJaIiBmaWxsPSJjdXJyZW50Ii8+DQo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIxLjQ0MSAxMi44ODJDMjAuODIzNSAxMy4xOTA3IDIwLjU3MzIgMTMuOTQxNiAyMC44ODIgMTQuNTU5TDIyLjg4MiAxOC41NTlDMjMuMTkwNyAxOS4xNzY1IDIzLjk0MTUgMTkuNDI2OCAyNC41NTkgMTkuMTE4MUMyNS4xNzY1IDE4LjgwOTMgMjUuNDI2OCAxOC4wNTg1IDI1LjExOCAxNy40NDFMMjMuMTE4IDEzLjQ0MUMyMi44MDkzIDEyLjgyMzUgMjIuMDU4NSAxMi41NzMzIDIxLjQ0MSAxMi44ODJaIiBmaWxsPSJjdXJyZW50Ii8+DQo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTEzLjY0NDYgMjUuMzMzNUMxMy42NDQ3IDI2LjAyMzggMTQuMjA0MyAyNi41ODM0IDE0Ljg5NDcgMjYuNTgzNEwxOS41NjEzIDI2LjU4MzNDMjAuMjUxNyAyNi41ODMzIDIwLjgxMTMgMjYuMDIzNyAyMC44MTEzIDI1LjMzMzNDMjAuODExMyAyNC42NDI5IDIwLjI1MTYgMjQuMDgzMyAxOS41NjEzIDI0LjA4MzNMMTQuODk0NiAyNC4wODM0QzE0LjIwNDMgMjQuMDgzNCAxMy42NDQ2IDI0LjY0MzEgMTMuNjQ0NiAyNS4zMzM1WiIgZmlsbD0iY3VycmVudCIvPg0KPC9zdmc+DQo=\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n  d: \"M1.75 5.25C1.75 3.17893 3.42893 1.5 5.5 1.5H15.625C17.6961 1.5 19.375 3.17893 19.375 5.25V7.33203V10.3672V21.4961V25.543V27.625C19.375 29.6961 17.6961 31.375 15.625 31.375H5.5C3.42893 31.375 1.75 29.6961 1.75 27.625V5.25Z\",\n  stroke: \"current\",\n  fill: \"transparent\",\n  strokeWidth: 2.5\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"circle\", {\n  cx: 10.875,\n  cy: 27.6875,\n  r: 0.9375,\n  fill: \"current\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n  d: \"M5.75 7.25H15.375\",\n  stroke: \"current\",\n  strokeWidth: 2.5,\n  fill: \"transparent\",\n  strokeLinecap: \"round\"\n});\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n  d: \"M5.75 24.1387H15.375\",\n  stroke: \"current\",\n  strokeWidth: 2.5,\n  fill: \"transparent\",\n  strokeLinecap: \"round\"\n});\n\nfunction SvgPhone(_ref, svgRef) {\n  var title = _ref.title,\n      titleId = _ref.titleId,\n      props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 21,\n    height: 33,\n    viewBox: \"0 0 21 33\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _ref2, _ref3, _ref4, _ref5);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgPhone);\nexport default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMzMiIHZpZXdCb3g9IjAgMCAyMSAzMyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxwYXRoIGQ9Ik0xLjc1IDUuMjVDMS43NSAzLjE3ODkzIDMuNDI4OTMgMS41IDUuNSAxLjVIMTUuNjI1QzE3LjY5NjEgMS41IDE5LjM3NSAzLjE3ODkzIDE5LjM3NSA1LjI1VjcuMzMyMDNWMTAuMzY3MlYyMS40OTYxVjI1LjU0M1YyNy42MjVDMTkuMzc1IDI5LjY5NjEgMTcuNjk2MSAzMS4zNzUgMTUuNjI1IDMxLjM3NUg1LjVDMy40Mjg5MyAzMS4zNzUgMS43NSAyOS42OTYxIDEuNzUgMjcuNjI1VjUuMjVaIiBzdHJva2U9ImN1cnJlbnQiIGZpbGw9InRyYW5zcGFyZW50IiBzdHJva2Utd2lkdGg9IjIuNSIvPg0KPGNpcmNsZSBjeD0iMTAuODc1IiBjeT0iMjcuNjg3NSIgcj0iMC45Mzc1IiBmaWxsPSJjdXJyZW50Ii8+DQo8cGF0aCBkPSJNNS43NSA3LjI1SDE1LjM3NSIgc3Ryb2tlPSJjdXJyZW50IiBzdHJva2Utd2lkdGg9IjIuNSIgZmlsbD0idHJhbnNwYXJlbnQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPg0KPHBhdGggZD0iTTUuNzUgMjQuMTM4N0gxNS4zNzUiIHN0cm9rZT0iY3VycmVudCIgc3Ryb2tlLXdpZHRoPSIyLjUiIGZpbGw9InRyYW5zcGFyZW50IiBzdHJva2UtbGluZWNhcD0icm91bmQiIC8+DQo8L3N2Zz4NCg==\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n  fillRule: \"evenodd\",\n  clipRule: \"evenodd\",\n  d: \"M11.25 0.0402285C11.5798 0.0135822 11.9133 0 12.25 0C12.5867 0 12.9202 0.0135822 13.25 0.0402286C13.4023 0.0525369 13.5539 0.0676326 13.7046 0.0854647C16.9868 0.473791 19.8714 2.15978 21.8312 4.61617C21.8472 4.63633 21.8633 4.65654 21.8792 4.6768C23.3274 6.51557 24.2602 8.77923 24.4598 11.25C24.4864 11.5798 24.5 11.9133 24.5 12.25C24.5 12.5867 24.4864 12.9202 24.4598 13.25C24.2604 15.7178 23.3296 17.9789 21.8845 19.8165C21.8161 19.9034 21.7466 19.9894 21.676 20.0744C19.7207 22.4273 16.9012 24.0363 13.7046 24.4145C13.5539 24.4324 13.4023 24.4475 13.25 24.4598C12.9202 24.4864 12.5867 24.5 12.25 24.5C11.9133 24.5 11.5798 24.4864 11.25 24.4598C11.0977 24.4475 10.9461 24.4324 10.7954 24.4145C7.59876 24.0363 4.7793 22.4273 2.82405 20.0744C2.7534 19.9894 2.68387 19.9034 2.6155 19.8165C1.17036 17.9789 0.239603 15.7178 0.0402286 13.25C0.0135822 12.9202 0 12.5867 0 12.25C0 11.9133 0.0135822 11.5798 0.0402285 11.25C0.239846 8.77923 1.17263 6.51557 2.62079 4.6768C2.63674 4.65654 2.65276 4.63633 2.66884 4.61618C4.62856 2.15978 7.51316 0.473791 10.7954 0.0854647C10.9461 0.0676326 11.0977 0.0525369 11.25 0.0402285ZM8.96499 2.53772C7.54734 3.01705 6.2687 3.79806 5.20548 4.80435C5.4201 5.02683 5.68112 5.26749 5.99342 5.50928C6.30888 5.7535 6.6799 6.00145 7.11277 6.2339C7.59685 4.94052 8.18658 3.80303 8.77215 2.8466C8.83647 2.74153 8.9008 2.63857 8.96499 2.53772ZM6.50833 8.17141C5.83317 7.83994 5.25643 7.46803 4.76908 7.09072C4.43226 6.82996 4.14033 6.56837 3.8896 6.31847C2.88129 7.7371 2.22501 9.42341 2.04816 11.25H6.03041C6.09649 10.164 6.26688 9.13521 6.50833 8.17141ZM8.03467 11.25C8.09177 10.4266 8.21693 9.63896 8.39183 8.89133C9.23574 9.13173 10.1855 9.30272 11.25 9.36926V11.25H8.03467ZM6.03041 13.25H2.04816C2.22003 15.0251 2.84468 16.6677 3.80518 18.0609C4.00135 17.8537 4.22558 17.6411 4.48118 17.4296C5.01321 16.9893 5.67009 16.5624 6.47587 16.1968C6.25161 15.2712 6.09348 14.2867 6.03041 13.25ZM8.37612 15.5408C8.20943 14.8134 8.09004 14.0485 8.03467 13.25H11.25V15.1257C10.1713 15.1822 9.21776 15.3295 8.37612 15.5408ZM7.06306 18.1317C6.5246 18.3983 6.09576 18.6895 5.75632 18.9704C5.49446 19.1871 5.28062 19.4019 5.10737 19.6016C6.18968 20.6533 7.50346 21.4681 8.96499 21.9623C8.9008 21.8614 8.83647 21.7585 8.77215 21.6534C8.16638 20.664 7.55616 19.4808 7.06306 18.1317ZM11.25 21.7714C11.0005 21.4243 10.7392 21.036 10.4779 20.6091C9.92919 19.7129 9.38494 18.6551 8.94686 17.4598C9.6132 17.2981 10.3765 17.1802 11.25 17.1287V21.7714ZM13.25 17.1287V21.7714C13.4995 21.4243 13.7608 21.036 14.0221 20.6091C14.5708 19.7129 15.1151 18.6551 15.5531 17.4598C14.8868 17.2981 14.1235 17.1802 13.25 17.1287ZM17.4369 18.1317C16.9438 19.4808 16.3336 20.664 15.7279 21.6534C15.6635 21.7585 15.5992 21.8614 15.535 21.9623C16.9965 21.4681 18.3103 20.6533 19.3926 19.6016C19.2194 19.4019 19.0055 19.1871 18.7437 18.9704C18.4042 18.6895 17.9754 18.3983 17.4369 18.1317ZM20.6948 18.0609C20.4987 17.8537 20.2744 17.6411 20.0188 17.4296C19.4868 16.9893 18.8299 16.5624 18.0241 16.1969C18.2484 15.2712 18.4065 14.2867 18.4696 13.25H22.4518C22.28 15.0251 21.6553 16.6677 20.6948 18.0609ZM22.4518 11.25C22.275 9.42341 21.6187 7.7371 20.6104 6.31847C20.3597 6.56837 20.0677 6.82996 19.7309 7.09072C19.2436 7.46803 18.6668 7.83994 17.9917 8.17141C18.2331 9.13521 18.4035 10.164 18.4696 11.25H22.4518ZM16.4653 11.25C16.4082 10.4266 16.2831 9.63896 16.1082 8.89133C15.2643 9.13173 14.3145 9.30272 13.25 9.36926V11.25H16.4653ZM13.25 13.25V15.1257C14.3287 15.1822 15.2822 15.3295 16.1239 15.5408C16.2906 14.8134 16.41 14.0485 16.4653 13.25H13.25ZM13.25 7.36476C14.1045 7.30322 14.8613 7.16458 15.5297 6.97649C15.0957 5.80729 14.561 4.77111 14.0221 3.8909C13.7608 3.46403 13.4995 3.07566 13.25 2.72862V7.36476ZM15.535 2.53772C15.5992 2.63857 15.6635 2.74153 15.7279 2.8466C16.3134 3.80303 16.9031 4.94052 17.3872 6.2339C17.8201 6.00145 18.1911 5.7535 18.5066 5.50928C18.8189 5.26749 19.0799 5.02683 19.2945 4.80435C18.2313 3.79806 16.9527 3.01705 15.535 2.53772ZM11.25 2.72862C11.0005 3.07566 10.7392 3.46403 10.4779 3.8909C9.93895 4.77111 9.4043 5.80729 8.97035 6.97649C9.63866 7.16458 10.3955 7.30322 11.25 7.36476V2.72862Z\",\n  fill: \"current\"\n});\n\nfunction SvgWorld(_ref, svgRef) {\n  var title = _ref.title,\n      titleId = _ref.titleId,\n      props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 25,\n    height: 25,\n    viewBox: \"0 0 25 25\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgWorld);\nexport default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjUiIGhlaWdodD0iMjUiIHZpZXdCb3g9IjAgMCAyNSAyNSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTEuMjUgMC4wNDAyMjg1QzExLjU3OTggMC4wMTM1ODIyIDExLjkxMzMgMCAxMi4yNSAwQzEyLjU4NjcgMCAxMi45MjAyIDAuMDEzNTgyMiAxMy4yNSAwLjA0MDIyODZDMTMuNDAyMyAwLjA1MjUzNjkgMTMuNTUzOSAwLjA2NzYzMjYgMTMuNzA0NiAwLjA4NTQ2NDdDMTYuOTg2OCAwLjQ3Mzc5MSAxOS44NzE0IDIuMTU5NzggMjEuODMxMiA0LjYxNjE3QzIxLjg0NzIgNC42MzYzMyAyMS44NjMzIDQuNjU2NTQgMjEuODc5MiA0LjY3NjhDMjMuMzI3NCA2LjUxNTU3IDI0LjI2MDIgOC43NzkyMyAyNC40NTk4IDExLjI1QzI0LjQ4NjQgMTEuNTc5OCAyNC41IDExLjkxMzMgMjQuNSAxMi4yNUMyNC41IDEyLjU4NjcgMjQuNDg2NCAxMi45MjAyIDI0LjQ1OTggMTMuMjVDMjQuMjYwNCAxNS43MTc4IDIzLjMyOTYgMTcuOTc4OSAyMS44ODQ1IDE5LjgxNjVDMjEuODE2MSAxOS45MDM0IDIxLjc0NjYgMTkuOTg5NCAyMS42NzYgMjAuMDc0NEMxOS43MjA3IDIyLjQyNzMgMTYuOTAxMiAyNC4wMzYzIDEzLjcwNDYgMjQuNDE0NUMxMy41NTM5IDI0LjQzMjQgMTMuNDAyMyAyNC40NDc1IDEzLjI1IDI0LjQ1OThDMTIuOTIwMiAyNC40ODY0IDEyLjU4NjcgMjQuNSAxMi4yNSAyNC41QzExLjkxMzMgMjQuNSAxMS41Nzk4IDI0LjQ4NjQgMTEuMjUgMjQuNDU5OEMxMS4wOTc3IDI0LjQ0NzUgMTAuOTQ2MSAyNC40MzI0IDEwLjc5NTQgMjQuNDE0NUM3LjU5ODc2IDI0LjAzNjMgNC43NzkzIDIyLjQyNzMgMi44MjQwNSAyMC4wNzQ0QzIuNzUzNCAxOS45ODk0IDIuNjgzODcgMTkuOTAzNCAyLjYxNTUgMTkuODE2NUMxLjE3MDM2IDE3Ljk3ODkgMC4yMzk2MDMgMTUuNzE3OCAwLjA0MDIyODYgMTMuMjVDMC4wMTM1ODIyIDEyLjkyMDIgMCAxMi41ODY3IDAgMTIuMjVDMCAxMS45MTMzIDAuMDEzNTgyMiAxMS41Nzk4IDAuMDQwMjI4NSAxMS4yNUMwLjIzOTg0NiA4Ljc3OTIzIDEuMTcyNjMgNi41MTU1NyAyLjYyMDc5IDQuNjc2OEMyLjYzNjc0IDQuNjU2NTQgMi42NTI3NiA0LjYzNjMzIDIuNjY4ODQgNC42MTYxOEM0LjYyODU2IDIuMTU5NzggNy41MTMxNiAwLjQ3Mzc5MSAxMC43OTU0IDAuMDg1NDY0N0MxMC45NDYxIDAuMDY3NjMyNiAxMS4wOTc3IDAuMDUyNTM2OSAxMS4yNSAwLjA0MDIyODVaTTguOTY0OTkgMi41Mzc3MkM3LjU0NzM0IDMuMDE3MDUgNi4yNjg3IDMuNzk4MDYgNS4yMDU0OCA0LjgwNDM1QzUuNDIwMSA1LjAyNjgzIDUuNjgxMTIgNS4yNjc0OSA1Ljk5MzQyIDUuNTA5MjhDNi4zMDg4OCA1Ljc1MzUgNi42Nzk5IDYuMDAxNDUgNy4xMTI3NyA2LjIzMzlDNy41OTY4NSA0Ljk0MDUyIDguMTg2NTggMy44MDMwMyA4Ljc3MjE1IDIuODQ2NkM4LjgzNjQ3IDIuNzQxNTMgOC45MDA4IDIuNjM4NTcgOC45NjQ5OSAyLjUzNzcyWk02LjUwODMzIDguMTcxNDFDNS44MzMxNyA3LjgzOTk0IDUuMjU2NDMgNy40NjgwMyA0Ljc2OTA4IDcuMDkwNzJDNC40MzIyNiA2LjgyOTk2IDQuMTQwMzMgNi41NjgzNyAzLjg4OTYgNi4zMTg0N0MyLjg4MTI5IDcuNzM3MSAyLjIyNTAxIDkuNDIzNDEgMi4wNDgxNiAxMS4yNUg2LjAzMDQxQzYuMDk2NDkgMTAuMTY0IDYuMjY2ODggOS4xMzUyMSA2LjUwODMzIDguMTcxNDFaTTguMDM0NjcgMTEuMjVDOC4wOTE3NyAxMC40MjY2IDguMjE2OTMgOS42Mzg5NiA4LjM5MTgzIDguODkxMzNDOS4yMzU3NCA5LjEzMTczIDEwLjE4NTUgOS4zMDI3MiAxMS4yNSA5LjM2OTI2VjExLjI1SDguMDM0NjdaTTYuMDMwNDEgMTMuMjVIMi4wNDgxNkMyLjIyMDAzIDE1LjAyNTEgMi44NDQ2OCAxNi42Njc3IDMuODA1MTggMTguMDYwOUM0LjAwMTM1IDE3Ljg1MzcgNC4yMjU1OCAxNy42NDExIDQuNDgxMTggMTcuNDI5NkM1LjAxMzIxIDE2Ljk4OTMgNS42NzAwOSAxNi41NjI0IDYuNDc1ODcgMTYuMTk2OEM2LjI1MTYxIDE1LjI3MTIgNi4wOTM0OCAxNC4yODY3IDYuMDMwNDEgMTMuMjVaTTguMzc2MTIgMTUuNTQwOEM4LjIwOTQzIDE0LjgxMzQgOC4wOTAwNCAxNC4wNDg1IDguMDM0NjcgMTMuMjVIMTEuMjVWMTUuMTI1N0MxMC4xNzEzIDE1LjE4MjIgOS4yMTc3NiAxNS4zMjk1IDguMzc2MTIgMTUuNTQwOFpNNy4wNjMwNiAxOC4xMzE3QzYuNTI0NiAxOC4zOTgzIDYuMDk1NzYgMTguNjg5NSA1Ljc1NjMyIDE4Ljk3MDRDNS40OTQ0NiAxOS4xODcxIDUuMjgwNjIgMTkuNDAxOSA1LjEwNzM3IDE5LjYwMTZDNi4xODk2OCAyMC42NTMzIDcuNTAzNDYgMjEuNDY4MSA4Ljk2NDk5IDIxLjk2MjNDOC45MDA4IDIxLjg2MTQgOC44MzY0NyAyMS43NTg1IDguNzcyMTUgMjEuNjUzNEM4LjE2NjM4IDIwLjY2NCA3LjU1NjE2IDE5LjQ4MDggNy4wNjMwNiAxOC4xMzE3Wk0xMS4yNSAyMS43NzE0QzExLjAwMDUgMjEuNDI0MyAxMC43MzkyIDIxLjAzNiAxMC40Nzc5IDIwLjYwOTFDOS45MjkxOSAxOS43MTI5IDkuMzg0OTQgMTguNjU1MSA4Ljk0Njg2IDE3LjQ1OThDOS42MTMyIDE3LjI5ODEgMTAuMzc2NSAxNy4xODAyIDExLjI1IDE3LjEyODdWMjEuNzcxNFpNMTMuMjUgMTcuMTI4N1YyMS43NzE0QzEzLjQ5OTUgMjEuNDI0MyAxMy43NjA4IDIxLjAzNiAxNC4wMjIxIDIwLjYwOTFDMTQuNTcwOCAxOS43MTI5IDE1LjExNTEgMTguNjU1MSAxNS41NTMxIDE3LjQ1OThDMTQuODg2OCAxNy4yOTgxIDE0LjEyMzUgMTcuMTgwMiAxMy4yNSAxNy4xMjg3Wk0xNy40MzY5IDE4LjEzMTdDMTYuOTQzOCAxOS40ODA4IDE2LjMzMzYgMjAuNjY0IDE1LjcyNzkgMjEuNjUzNEMxNS42NjM1IDIxLjc1ODUgMTUuNTk5MiAyMS44NjE0IDE1LjUzNSAyMS45NjIzQzE2Ljk5NjUgMjEuNDY4MSAxOC4zMTAzIDIwLjY1MzMgMTkuMzkyNiAxOS42MDE2QzE5LjIxOTQgMTkuNDAxOSAxOS4wMDU1IDE5LjE4NzEgMTguNzQzNyAxOC45NzA0QzE4LjQwNDIgMTguNjg5NSAxNy45NzU0IDE4LjM5ODMgMTcuNDM2OSAxOC4xMzE3Wk0yMC42OTQ4IDE4LjA2MDlDMjAuNDk4NyAxNy44NTM3IDIwLjI3NDQgMTcuNjQxMSAyMC4wMTg4IDE3LjQyOTZDMTkuNDg2OCAxNi45ODkzIDE4LjgyOTkgMTYuNTYyNCAxOC4wMjQxIDE2LjE5NjlDMTguMjQ4NCAxNS4yNzEyIDE4LjQwNjUgMTQuMjg2NyAxOC40Njk2IDEzLjI1SDIyLjQ1MThDMjIuMjggMTUuMDI1MSAyMS42NTUzIDE2LjY2NzcgMjAuNjk0OCAxOC4wNjA5Wk0yMi40NTE4IDExLjI1QzIyLjI3NSA5LjQyMzQxIDIxLjYxODcgNy43MzcxIDIwLjYxMDQgNi4zMTg0N0MyMC4zNTk3IDYuNTY4MzcgMjAuMDY3NyA2LjgyOTk2IDE5LjczMDkgNy4wOTA3MkMxOS4yNDM2IDcuNDY4MDMgMTguNjY2OCA3LjgzOTk0IDE3Ljk5MTcgOC4xNzE0MUMxOC4yMzMxIDkuMTM1MjEgMTguNDAzNSAxMC4xNjQgMTguNDY5NiAxMS4yNUgyMi40NTE4Wk0xNi40NjUzIDExLjI1QzE2LjQwODIgMTAuNDI2NiAxNi4yODMxIDkuNjM4OTYgMTYuMTA4MiA4Ljg5MTMzQzE1LjI2NDMgOS4xMzE3MyAxNC4zMTQ1IDkuMzAyNzIgMTMuMjUgOS4zNjkyNlYxMS4yNUgxNi40NjUzWk0xMy4yNSAxMy4yNVYxNS4xMjU3QzE0LjMyODcgMTUuMTgyMiAxNS4yODIyIDE1LjMyOTUgMTYuMTIzOSAxNS41NDA4QzE2LjI5MDYgMTQuODEzNCAxNi40MSAxNC4wNDg1IDE2LjQ2NTMgMTMuMjVIMTMuMjVaTTEzLjI1IDcuMzY0NzZDMTQuMTA0NSA3LjMwMzIyIDE0Ljg2MTMgNy4xNjQ1OCAxNS41Mjk3IDYuOTc2NDlDMTUuMDk1NyA1LjgwNzI5IDE0LjU2MSA0Ljc3MTExIDE0LjAyMjEgMy44OTA5QzEzLjc2MDggMy40NjQwMyAxMy40OTk1IDMuMDc1NjYgMTMuMjUgMi43Mjg2MlY3LjM2NDc2Wk0xNS41MzUgMi41Mzc3MkMxNS41OTkyIDIuNjM4NTcgMTUuNjYzNSAyLjc0MTUzIDE1LjcyNzkgMi44NDY2QzE2LjMxMzQgMy44MDMwMyAxNi45MDMxIDQuOTQwNTIgMTcuMzg3MiA2LjIzMzlDMTcuODIwMSA2LjAwMTQ1IDE4LjE5MTEgNS43NTM1IDE4LjUwNjYgNS41MDkyOEMxOC44MTg5IDUuMjY3NDkgMTkuMDc5OSA1LjAyNjgzIDE5LjI5NDUgNC44MDQzNUMxOC4yMzEzIDMuNzk4MDYgMTYuOTUyNyAzLjAxNzA1IDE1LjUzNSAyLjUzNzcyWk0xMS4yNSAyLjcyODYyQzExLjAwMDUgMy4wNzU2NiAxMC43MzkyIDMuNDY0MDMgMTAuNDc3OSAzLjg5MDlDOS45Mzg5NSA0Ljc3MTExIDkuNDA0MyA1LjgwNzI5IDguOTcwMzUgNi45NzY0OUM5LjYzODY2IDcuMTY0NTggMTAuMzk1NSA3LjMwMzIyIDExLjI1IDcuMzY0NzZWMi43Mjg2MloiIGZpbGw9ImN1cnJlbnQiLz4NCjwvc3ZnPg0K\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n  fillRule: \"evenodd\",\n  clipRule: \"evenodd\",\n  d: \"M5.46652 5.94685C5.91008 5.5368 6.60208 5.56398 7.01212 6.00754L11.3365 10.6854C12.6751 12.1335 14.9796 12.0821 16.2523 10.5757L20.0811 6.04411C20.4709 5.58269 21.161 5.52468 21.6224 5.91453C22.0838 6.30438 22.1418 6.99447 21.752 7.45589L17.9233 11.9875C15.8021 14.4981 11.9613 14.5838 9.73016 12.1703L5.40582 7.49246C4.99578 7.04889 5.02295 6.3569 5.46652 5.94685ZM22.75 2.8125H4.375C3.16688 2.8125 2.1875 3.79188 2.1875 5V19C2.1875 20.2081 3.16688 21.1875 4.375 21.1875H22.75C23.9581 21.1875 24.9375 20.2081 24.9375 19V5C24.9375 3.79188 23.9581 2.8125 22.75 2.8125ZM4.375 0.625H22.75C25.1662 0.625 27.125 2.58375 27.125 5V19C27.125 21.4162 25.1662 23.375 22.75 23.375H4.375C1.95876 23.375 0 21.4162 0 19V5C0 2.58375 1.95875 0.625 4.375 0.625Z\",\n  fill: \"current\"\n});\n\nfunction SvgLetter(_ref, svgRef) {\n  var title = _ref.title,\n      titleId = _ref.titleId,\n      props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    viewBox: \"0 0 28 24\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLetter);\nexport default \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjggMjQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTUuNDY2NTIgNS45NDY4NUM1LjkxMDA4IDUuNTM2OCA2LjYwMjA4IDUuNTYzOTggNy4wMTIxMiA2LjAwNzU0TDExLjMzNjUgMTAuNjg1NEMxMi42NzUxIDEyLjEzMzUgMTQuOTc5NiAxMi4wODIxIDE2LjI1MjMgMTAuNTc1N0wyMC4wODExIDYuMDQ0MTFDMjAuNDcwOSA1LjU4MjY5IDIxLjE2MSA1LjUyNDY4IDIxLjYyMjQgNS45MTQ1M0MyMi4wODM4IDYuMzA0MzggMjIuMTQxOCA2Ljk5NDQ3IDIxLjc1MiA3LjQ1NTg5TDE3LjkyMzMgMTEuOTg3NUMxNS44MDIxIDE0LjQ5ODEgMTEuOTYxMyAxNC41ODM4IDkuNzMwMTYgMTIuMTcwM0w1LjQwNTgyIDcuNDkyNDZDNC45OTU3OCA3LjA0ODg5IDUuMDIyOTUgNi4zNTY5IDUuNDY2NTIgNS45NDY4NVpNMjIuNzUgMi44MTI1SDQuMzc1QzMuMTY2ODggMi44MTI1IDIuMTg3NSAzLjc5MTg4IDIuMTg3NSA1VjE5QzIuMTg3NSAyMC4yMDgxIDMuMTY2ODggMjEuMTg3NSA0LjM3NSAyMS4xODc1SDIyLjc1QzIzLjk1ODEgMjEuMTg3NSAyNC45Mzc1IDIwLjIwODEgMjQuOTM3NSAxOVY1QzI0LjkzNzUgMy43OTE4OCAyMy45NTgxIDIuODEyNSAyMi43NSAyLjgxMjVaTTQuMzc1IDAuNjI1SDIyLjc1QzI1LjE2NjIgMC42MjUgMjcuMTI1IDIuNTgzNzUgMjcuMTI1IDVWMTlDMjcuMTI1IDIxLjQxNjIgMjUuMTY2MiAyMy4zNzUgMjIuNzUgMjMuMzc1SDQuMzc1QzEuOTU4NzYgMjMuMzc1IDAgMjEuNDE2MiAwIDE5VjVDMCAyLjU4Mzc1IDEuOTU4NzUgMC42MjUgNC4zNzUgMC42MjVaIiBmaWxsPSJjdXJyZW50Ii8+DQo8L3N2Zz4NCg==\";\nexport { ForwardRef as ReactComponent };","import React from 'react'\r\nimport './Requirements.scss'\r\nimport $ from 'jquery'\r\nimport 'select2'\r\nimport { debounce } from '../../utils/debounce'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport { ReactComponent as Error } from '../../assets/error.svg'\r\nimport { ReactComponent as Social } from '../../assets/social.svg'\r\nimport { ReactComponent as Phone } from '../../assets/phone.svg'\r\nimport { ReactComponent as World } from '../../assets/world.svg'\r\nimport { ReactComponent as Letter } from '../../assets/letter.svg'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\n\r\nclass Requirements extends React.Component {\r\n    // Constructor\r\n    constructor(props) {\r\n        super(props);\r\n\r\n        // Refs\r\n        this.content = null;\r\n        this.mobileSelect = null;\r\n\r\n        // State\r\n        this.state = {\r\n            currentState: this.props.match.params.state,\r\n            searchFilter: null,\r\n        }\r\n\r\n        // This Binding\r\n        this.clickState = this.clickState.bind(this);\r\n        this.searchStates = debounce(this.searchStates.bind(this), 400);\r\n    }\r\n\r\n    // Lifecycle\r\n    componentDidMount() {\r\n        window.scrollTo(0, 0);\r\n        this.setupSelects();\r\n    }\r\n\r\n    componentDidUpdate() {\r\n        this.updateSelects();\r\n        this.updateCurrentState();\r\n    }\r\n\r\n    // Helpers\r\n    setupSelects() {\r\n        $('.a4-select select').select2({\r\n            minimumResultsForSearch: -1,\r\n        });\r\n\r\n        $('.a4-select select').on(\"change\", (e, shouldIgnore, shouldIgnoreHistory) => {\r\n            if (!shouldIgnore) {\r\n                this.setState({ currentState: e.currentTarget.value });\r\n\r\n                if (!shouldIgnoreHistory) {\r\n                    this.props.history.push(`/requirements/${e.currentTarget.value}`);\r\n                }\r\n            }\r\n        });\r\n\r\n        $(this.mobileSelect).val(this.state.currentState);\r\n        $(this.mobileSelect).trigger(\"change\", [false, true]);\r\n    }\r\n\r\n    updateSelects() {\r\n        if (!$('.a4-select select').first().hasClass(\"select2-hidden-accessible\")) {\r\n            this.setupSelects();\r\n        }\r\n    }\r\n\r\n    updateCurrentState() {\r\n        // Back Button Clicked\r\n        window.onpopstate = (e) => {\r\n            if (this.props.match.params.state !== this.state.currentState) {\r\n                this.setState({ currentState: this.props.match.params.state }, () => {\r\n                    $('.a4-select select').val(this.props.match.params.state);\r\n                    $('.a4-select select').trigger(\"change\", [false, true]);\r\n                })\r\n            }\r\n        } \r\n    }\r\n\r\n    // Event Handlers\r\n    clickState(e) {\r\n        const stateName = e.currentTarget.getAttribute('statename');\r\n        this.setState({ currentState: stateName }, () => {\r\n            if (window.scrollY > 300) {\r\n                this.content.scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n            }\r\n            \r\n            this.props.history.push(`/requirements/${stateName}`);\r\n            $('.a4-select select').val(stateName);\r\n            $('.a4-select select').trigger(\"change\", true);\r\n        })\r\n    }\r\n\r\n    searchStates(e) {\r\n        this.setState({ searchFilter: e.target.value !== \"\" ? e.target.value.toLowerCase() : null });\r\n    }\r\n\r\n    // Component\r\n    render() {\r\n        const requirementsData = bootstrapService.data.landing.pages.find(p => p.name === \"requirements\");\r\n\r\n        const header = requirementsData ? requirementsData.header : null;\r\n\r\n        const allRequirements = requirementsData ? requirementsData.requirements : null;\r\n        const requirements = allRequirements && this.state.searchFilter ? allRequirements.filter(r => r.authorityName.toLowerCase().search(this.state.searchFilter) > -1) : allRequirements;\r\n        const currentRequirement = allRequirements ? allRequirements.find(r => r.authorityName.toLowerCase() === this.state.currentState) : null;\r\n\r\n        const renderKey = this.state.currentState; // only re-render when state changes\r\n\r\n        return (\r\n            <>\r\n                {\r\n                    requirementsData && \r\n                    <>\r\n                        <Navbar activeLink=\"requirements\" />\r\n                        <div className=\"a4-view\">\r\n                            <div className=\"a4-layout a4-ce\">\r\n                                <div className=\"a4-ce-container\">\r\n                                    <div className=\"a4-ce-page-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                        <h1 className=\"title\">{header}</h1>\r\n                                    </div>\r\n                                    <div className=\"a4-ce-content\" ref={div => this.content = div}>\r\n                                        {\r\n                                            allRequirements.length > 1 && \r\n                                            <div className=\"a4-ce-states-panel\">\r\n                                                <div className=\"a4-ce-states-panel-control\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                                    <div className=\"a4-ce-states-panel-control-label\">\r\n                                                        Choose your state\r\n                                                    </div>\r\n                                                    <div className=\"a4-select\">\r\n                                                        <select ref={select => this.mobileSelect = select}>\r\n                                                            {\r\n                                                                allRequirements.map((requirement, index) => {\r\n                                                                    return <option value={requirement.authorityName.toLowerCase()} key={index}>{requirement.authorityName}</option>\r\n                                                                })\r\n                                                            }\r\n                                                        </select>\r\n                                                    </div>\r\n                                                    <div className=\"a4-input -search filter-item\">\r\n                                                        <input required placeholder=\"Search\" onChange={this.searchStates} />\r\n                                                        <label>Search</label>\r\n                                                        <span className=\"a4-input-error\"></span>\r\n                                                        <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                                            <Error />\r\n                                                        </svg>\r\n                                                    </div>\r\n                                                </div>\r\n                                                <div className=\"a4-ce-states-panel-list\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                                    <div className=\"a4-ce-states-panel-list-fill\"></div>\r\n                                                    <ul>\r\n                                                        {\r\n                                                            requirements.map((requirement, index) => {\r\n                                                                return <li className={requirement.authorityName === (currentRequirement ? currentRequirement.authorityName : null) ? \"-active\" : \"\"} key={index} style={{cursor: \"pointer\"}}>\r\n                                                                    <div statename={requirement.authorityName.toLowerCase()} onClick={this.clickState}>{requirement.authorityName}</div>\r\n                                                                </li>\r\n                                                            })\r\n                                                        }\r\n                                                    </ul>\r\n                                                    {\r\n                                                        this.state.searchFilter && requirements.length === 0 &&\r\n                                                        <div className=\"a4-ce-states-panel-list-no-results\">\r\n                                                            <div>No states matched your search</div>\r\n                                                        </div>\r\n                                                    }\r\n                                                </div>\r\n                                            </div>\r\n                                        }\r\n                                        <div className=\"a4-ce-info\" key={renderKey}>\r\n                                            {\r\n                                                currentRequirement &&\r\n                                                <>\r\n                                                    <div className=\"a4-ce-article\">\r\n                                                        <div className=\"a4-ce-article-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                                            <h2>{currentRequirement.authorityName}</h2>\r\n                                                        </div>\r\n                                                        <div className=\"a4-ce-article-content\" data-aos={isMobileOnly ? undefined : \"fade-up\"} dangerouslySetInnerHTML={{ __html: currentRequirement.requirementText }}>\r\n                                                        </div>\r\n                                                    </div>\r\n                                                    <div className=\"a4-ce-contact-card\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                                        <div className=\"a4-ce-contact-card-title\">\r\n                                                            <h4>{currentRequirement.organizationName}</h4>\r\n                                                        </div>\r\n                                                        <div className=\"a4-ce-contact-card-item\">\r\n                                                            <div className=\"a4-ce-contact-card-item-icon\">\r\n                                                                <svg className=\"a4-svgsprite -social text-secondary\">\r\n                                                                    <Social fill={bootstrapService.primaryColor} />\r\n                                                                </svg>\r\n                                                            </div>\r\n                                                            <div className=\"a4-ce-contact-card-item-info\">\r\n                                                                <div className=\"a4-ce-contact-card-item-label\">Organization:</div>\r\n                                                                <div className=\"a4-ce-contact-card-item-text\">{currentRequirement.organizationName}</div>\r\n                                                            </div>\r\n                                                        </div>\r\n                                                        <div className=\"a4-ce-contact-card-item\">\r\n                                                            <div className=\"a4-ce-contact-card-item-icon\">\r\n                                                                <svg className=\"a4-svgsprite -phone text-secondary\">\r\n                                                                    <Phone stroke={bootstrapService.primaryColor} />\r\n                                                                </svg>\r\n                                                            </div>\r\n                                                            <div className=\"a4-ce-contact-card-item-info\">\r\n                                                                <div className=\"a4-ce-contact-card-item-label\">Phone:</div>\r\n                                                                <a href={`tel:${currentRequirement.organizationPhone}`} className=\"a4-ce-contact-card-item-text\">{currentRequirement.organizationPhone}</a>\r\n                                                            </div>\r\n                                                        </div>\r\n                                                        <div className=\"a4-ce-contact-card-item\">\r\n                                                            <div className=\"a4-ce-contact-card-item-icon\">\r\n                                                                <svg className=\"a4-svgsprite -world text-secondary\">\r\n                                                                    <World fill={bootstrapService.primaryColor} />\r\n                                                                </svg>\r\n                                                            </div>\r\n                                                            <div className=\"a4-ce-contact-card-item-info\">\r\n                                                                <div className=\"a4-ce-contact-card-item-label\">Website:</div>\r\n                                                                <a href={currentRequirement.organizationUrl} className=\"a4-ce-contact-card-item-text\" target=\"_blank\" rel=\"noreferrer\">{currentRequirement.organizationUrl}</a>\r\n                                                            </div>\r\n                                                        </div>\r\n                                                        {\r\n                                                            currentRequirement.organizationEmail &&\r\n                                                            <div className=\"a4-ce-contact-card-item\">\r\n                                                                <div className=\"a4-ce-contact-card-item-icon\">\r\n                                                                    <svg className=\"a4-svgsprite -letter text-secondary\">\r\n                                                                        <Letter fill={bootstrapService.primaryColor} />\r\n                                                                    </svg>\r\n                                                                </div>\r\n                                                                <div className=\"a4-ce-contact-card-item-info\">\r\n                                                                    <div className=\"a4-ce-contact-card-item-label\">Email:</div>\r\n                                                                    <a href={`mailto:${currentRequirement.organizationEmail}`} className=\"a4-ce-contact-card-item-text\">{currentRequirement.organizationEmail}</a>\r\n                                                                </div>\r\n                                                            </div>\r\n                                                        }\r\n                                                    </div>\r\n                                                </>\r\n                                            }\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                                <Footer />\r\n                            </div>\r\n                        </div>\r\n                    </>\r\n                }\r\n            </>\r\n        )\r\n    }\r\n}\r\n\r\nexport default Requirements;","import React from 'react'\r\nimport { Link } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport BubbleButton from '../shared/BubbleButton/BubbleButton'\r\nimport { ReactComponent as Error } from '../../assets/error.svg'\r\n\r\nimport formService from '../../services/FormService'\r\nimport memberService from '../../services/MemberService'\r\nimport recaptchaService from '../../services/RecaptchaService'\r\n\r\nclass Login extends React.Component {\r\n    // Constructor\r\n    constructor(props) {\r\n        super(props);\r\n\r\n        // Refs\r\n        this.form = null;\r\n\r\n        // This Binding\r\n        this.submitForm = this.submitForm.bind(this);\r\n    }\r\n\r\n    // Lifecycle\r\n    componentDidMount() {\r\n        window.scrollTo(0, 0);\r\n    }\r\n\r\n    // Event Handlers\r\n    submitForm(e) {\r\n        e.preventDefault();\r\n\r\n        const isFormValid = formService.validate(this.form);\r\n        if (!isFormValid) return;\r\n\r\n        formService.showLoadingButton(this.form);\r\n\r\n        const email = e.target.email.value.trim();\r\n        const password = e.target.password.value;\r\n\r\n        let memberRequest = {email, password}\r\n\r\n        recaptchaService.getToken(\"login\")\r\n        .then(token => {\r\n            memberRequest.recaptchaToken = token;\r\n            memberRequest.contactId = memberService.getMtcId();\r\n    \r\n            memberService.login(memberRequest)\r\n            .then(json => {\r\n                if (json && json.succeeded) {\r\n                    memberService.goToMembers();\r\n                }\r\n                else {\r\n                    formService.hideAllErrors(this.form);\r\n                    formService.hideLoadingButton(this.form);\r\n                    if (json && json.errors && json.errors.length) {\r\n                        formService.showFormError(this.form, json.errors[0]);\r\n                    }\r\n                    else {\r\n                        formService.showFormError(this.form, 'Sorry, there was an error');\r\n                    }\r\n                }\r\n            });\r\n        });\r\n    }\r\n\r\n    // Component\r\n    render() {\r\n        return (\r\n            <>\r\n                <Navbar activeLink=\"login\" />\r\n                <div className=\"a4-view\">\r\n                    <main className=\"a4-layout a4-auth -login\">\r\n                        <div className=\"a4-auth-container -login\">\r\n                            <section className=\"a4-auth-item-container\">\r\n                                <div className=\"a4-auth-item-shadow\"></div>\r\n                                <div className=\"a4-auth-item-content\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                    <h1 className=\"a4-auth-item-title\">Login</h1>\r\n                                    <form className=\"a4-auth-form\" ref={form => this.form = form} onSubmit={this.submitForm}>\r\n                                        <div className=\"a4-input\">\r\n                                            <input name=\"email\" type='email' required placeholder=\"E-mail address\" />\r\n                                            <label htmlFor=\"email\">E-mail address</label>\r\n                                            <span className=\"a4-input-error\">Enter a valid e-mail address</span>\r\n                                            <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                                <Error />\r\n                                            </svg>\r\n                                        </div>\r\n                                        <div className=\"a4-input\">\r\n                                            <input name=\"password\" placeholder=\"Password\" required type=\"password\" />\r\n                                            <label htmlFor=\"password\">Password</label>\r\n                                            <span className=\"a4-input-error\">Enter a valid password</span>\r\n                                            <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                                <Error />\r\n                                            </svg>\r\n                                        </div>\r\n                                        <p className=\"a4-form-error\"></p>\r\n                                        <section className=\"a4-auth-form-control\">\r\n                                            <BubbleButton className=\"a4-form-submit -primary\" type=\"submit\" formNoValidate>\r\n                                                <b>Login</b>\r\n                                            </BubbleButton>\r\n                                            <Link to=\"/forgot-password\">\r\n                                                <b>Forgot your password?</b>\r\n                                            </Link>\r\n                                        </section>\r\n                                    </form>\r\n                                </div>\r\n                            </section>\r\n                            <aside className=\"a4-auth-additional\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay='100'>\r\n                                <span>\r\n                                    Don’t have an Account? &nbsp;\r\n                                    <Link to=\"/register\" className=\"text-primary\">Sign up now!</Link>\r\n                                </span>\r\n                            </aside>\r\n                        </div>\r\n                        <Footer />\r\n                    </main>\r\n                </div>\r\n            </>\r\n        )\r\n    }\r\n}\r\n\r\nexport default Login;","import React from 'react'\r\nimport { Link } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport FullNameInput from '../shared/FullNameInput/FullNameInput'\r\nimport BubbleButton from '../shared/BubbleButton/BubbleButton'\r\nimport { ReactComponent as Error } from '../../assets/error.svg'\r\n\r\nimport formService from '../../services/FormService'\r\nimport memberService from '../../services/MemberService'\r\nimport recaptchaService from '../../services/RecaptchaService'\r\nimport { MemberType } from '../../services/MemberService'\r\n\r\nclass Register extends React.Component {\r\n    // Constructor\r\n    constructor(props) {\r\n        super(props);\r\n\r\n        // Refs\r\n        this.form = null;\r\n\r\n        // State\r\n        this.state = {\r\n            useFullName: true,\r\n        }\r\n\r\n        // This Binding\r\n        this.ignoreFullName = this.ignoreFullName.bind(this);\r\n        this.submitForm = this.submitForm.bind(this);\r\n    }\r\n\r\n    // Lifecycle\r\n    componentDidMount() {\r\n        window.scrollTo(0, 0);\r\n    }\r\n\r\n    // Event Handlers\r\n    ignoreFullName() {\r\n        this.setState({ useFullName: false });\r\n    }\r\n\r\n    submitForm(e) {\r\n        e.preventDefault();\r\n\r\n        const isFormValid = formService.validate(this.form);\r\n\r\n        const email = e.target.email.value.trim();\r\n        const password = e.target.password.value;\r\n        const confirm = e.target.confirm.value;\r\n\r\n        let firstName = \"\";\r\n        let middleName = \"\";\r\n        let lastName = \"\";\r\n\r\n        if (this.state.useFullName) {\r\n            firstName = e.target.fullName.value.split(\" \")[0];\r\n            lastName = e.target.fullName.value.split(\" \")[1];\r\n        }\r\n        else {\r\n            firstName = e.target.firstName.value;\r\n            middleName = e.target.middleName.value;\r\n            lastName = e.target.lastName.value;\r\n        }\r\n\r\n        if (password !== confirm) {\r\n            formService.showInputError(this.form, \"confirm\", \"This password does not match\");\r\n            formService.hideLoadingButton(this.form);\r\n            return;\r\n        }\r\n\r\n        if (!isFormValid) return;\r\n\r\n        formService.showLoadingButton(this.form);\r\n\r\n        let memberRequest = { email, password, firstName, middleName, lastName };\r\n\r\n        // Check if Joining Group\r\n        if (this.props.match.params.group) {\r\n            memberRequest.groupRegisterCode = this.props.match.params.group;\r\n        }\r\n\r\n        recaptchaService.getToken(\"register\")\r\n            .then(token => {\r\n                memberRequest.recaptchaToken = token;\r\n                memberRequest.memberType = MemberType.Register;\r\n                memberRequest.contactId = memberService.getMtcId();\r\n\r\n                memberService.checkEmailInUse(memberRequest)\r\n                    .then((isInUse) => {\r\n                        if (isInUse) {\r\n                            formService.hideAllErrors(this.form);\r\n                            formService.hideLoadingButton(this.form);\r\n                            formService.showInputError(this.form, \"email\", \"This email address is already taken\");\r\n                        }\r\n                        else {\r\n                            memberService.register(memberRequest)\r\n                                .then(json => {\r\n                                    if (json.succeeded) {\r\n                                        memberService.goToMembers();\r\n                                    }\r\n                                    else {\r\n                                        formService.hideAllErrors(this.form);\r\n                                        formService.hideLoadingButton(this.form);\r\n                                        formService.showFormError(this.form, json.errors[0]);\r\n                                    }\r\n                                });\r\n                        }\r\n                    })\r\n            });\r\n    }\r\n\r\n    // Component\r\n    render() {\r\n        return (\r\n            <>\r\n                <Navbar activeLink=\"register\" />\r\n                <div className=\"a4-view\">\r\n                    <main className=\"a4-layout a4-auth -register\">\r\n                        <div className=\"a4-auth-container -register\">\r\n                            <section className=\"a4-auth-item-container\">\r\n                                <div className=\"a4-auth-item-shadow\"></div>\r\n                                <div className=\"a4-auth-item-content\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                    <h1 className=\"a4-auth-item-title\"><span className=\"text-primary\">Sign</span> Up</h1>\r\n                                    <form className=\"a4-auth-form\" ref={form => this.form = form} onSubmit={this.submitForm}>\r\n                                        <FullNameInput ignoreFullName={this.ignoreFullName} />\r\n                                        <div className=\"a4-input\">\r\n                                            <input name=\"email\" required placeholder=\"E-mail address\" />\r\n                                            <label htmlFor=\"email\">E-mail address</label>\r\n                                            <span className=\"a4-input-error\">Enter a valid e-mail address</span>\r\n                                            <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                                <Error />\r\n                                            </svg>\r\n                                        </div>\r\n                                        <div className=\"a4-input\">\r\n                                            <input name=\"password\" placeholder=\"Password\" required type=\"password\" />\r\n                                            <label htmlFor=\"password\">Password</label>\r\n                                            <span className=\"a4-input-error\">Enter a valid password</span>\r\n                                            <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                                <Error />\r\n                                            </svg>\r\n                                        </div>\r\n                                        <div className=\"a4-input\">\r\n                                            <input name=\"confirm\" placeholder=\"Confirm Password\" required type=\"password\" />\r\n                                            <label htmlFor=\"password\">Confirm Password</label>\r\n                                            <span className=\"a4-input-error\">Enter a valid password</span>\r\n                                            <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                                <Error />\r\n                                            </svg>\r\n                                        </div>\r\n                                        <p className=\"a4-form-error\"></p>\r\n                                        <section className=\"a4-auth-form-control -join\">\r\n                                            <BubbleButton className=\"a4-form-submit -primary\" type=\"submit\" formNoValidate>\r\n                                                <b>Create Account</b>\r\n                                            </BubbleButton>\r\n                                        </section>\r\n                                    </form>\r\n                                </div>\r\n                            </section>\r\n                            <aside className=\"a4-auth-additional\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay='100'>\r\n                                <span>\r\n                                    Already have an account? &nbsp;\r\n                                    <Link to=\"/login\" className=\"text-primary\">Login</Link>\r\n                                </span>\r\n                            </aside>\r\n                        </div>\r\n                        <Footer />\r\n                    </main>\r\n                </div>\r\n            </>\r\n        )\r\n    }\r\n}\r\n\r\nexport default Register;","import React from 'react'\r\nimport { Link } from 'react-router-dom'\r\nimport $ from 'jquery'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport BubbleButton from '../shared/BubbleButton/BubbleButton'\r\nimport { ReactComponent as Error } from '../../assets/error.svg'\r\n\r\nimport formService from '../../services/FormService'\r\nimport memberService from '../../services/MemberService'\r\nimport recaptchaService from '../../services/RecaptchaService'\r\n\r\nclass ForgotPassword extends React.Component {\r\n    // Constructor\r\n    constructor(props) {\r\n        super(props);\r\n\r\n        // Refs\r\n        this.content = null;\r\n        this.paragraph = null;\r\n        this.form = null;\r\n\r\n        // This Binding\r\n        this.submitForm = this.submitForm.bind(this);\r\n    }\r\n\r\n    // Lifecycle\r\n    componentDidMount() {\r\n        window.scrollTo(0, 0);\r\n    }\r\n\r\n    // Event Handlers\r\n    submitForm(e) {\r\n        e.preventDefault();\r\n\r\n        const isFormValid = formService.validate(this.form);\r\n        if(!isFormValid) return;\r\n\r\n        formService.showLoadingButton(this.form);\r\n\r\n        const email = e.target.email.value.trim();\r\n\r\n        let forgotPasswordRequest = {email};\r\n\r\n        recaptchaService.getToken(\"forgotPassword\")\r\n        .then(token => {\r\n            forgotPasswordRequest.recaptchaToken = token;\r\n\r\n            memberService.forgotPassword(forgotPasswordRequest)\r\n            .then(json => {\r\n                if (json.succeeded) {\r\n                    this.content.classList.add(\"-success\");\r\n                    $(this.paragraph).animate({ opacity: 0 }, 300, function () {\r\n                        $(this)\r\n                            .html(\r\n                                \"We’ve emailed you a link to reset your password. If you don’t see it, please check your spam folder before getting in touch!\"\r\n                            )\r\n                            .animate({ opacity: 1 }, 100);\r\n                    });\r\n                }\r\n                else {\r\n                    this.content.classList.add(\"-success\");\r\n                    $(this.paragraph).animate({ opacity: 0 }, 300, function () {\r\n                        $(this)\r\n                            .html(\r\n                                \"If there is an account with your email address then we have emailed you a link to reset your password. If you don’t see it, please check your spam folder before getting in touch!\"\r\n                            )\r\n                            .animate({ opacity: 1 }, 100);\r\n                    });\r\n\r\n                    // formService.hideAllErrors(this.form);\r\n                    // formService.hideLoadingButton(this.form);\r\n\r\n                    // if (json.errors[0] === \"Cannot get user\") {\r\n                    //     formService.showInputError(this.form, \"email\", \"This email address is not recognized\");\r\n                    // }\r\n                    // else {\r\n                    //     formService.showFormError(this.form, json.errors[0]);\r\n                    // } \r\n                }\r\n            });\r\n        });\r\n    }\r\n\r\n    // Component\r\n    render() {\r\n        return (\r\n            <>\r\n                <Navbar />\r\n                <div className=\"a4-view\">\r\n                    <main className=\"a4-layout a4-auth\">\r\n                        <div className=\"a4-auth-container -login\">\r\n                            <section className=\"a4-auth-item-container\">\r\n                                <div className=\"a4-auth-item-shadow\"></div>\r\n                                <div className=\"a4-auth-item-content\" data-aos={isMobileOnly ? undefined : \"fade-up\"} ref={div => this.content = div}>\r\n                                    <h1 className=\"a4-auth-item-title\"><span className=\"text-primary\">Forgot</span> your password?</h1>\r\n                                    <p ref={p => this.paragraph = p}>Enter your account email, you will be sent<br></br>a link to reset your password.</p>\r\n                                    <form className=\"a4-auth-form\" ref={form => this.form = form} onSubmit={this.submitForm}>\r\n                                        <div className=\"a4-input\">\r\n                                            <input name=\"email\" required placeholder=\"E-mail address\" />\r\n                                            <label htmlFor=\"email\">E-mail address</label>\r\n                                            <span className=\"a4-input-error\" ref={span => this.emailError = span}>Enter a valid e-mail address</span>\r\n                                            <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                                <Error />\r\n                                            </svg>\r\n                                        </div>\r\n                                        <p className=\"a4-form-error\"></p>\r\n                                        <section className=\"a4-auth-form-control\">\r\n                                            <BubbleButton className=\"a4-form-submit -primary\" type=\"submit\" formNoValidate>\r\n                                                <b>Send me reset link</b>\r\n                                            </BubbleButton>\r\n                                        </section>\r\n                                    </form>\r\n                                </div>\r\n                            </section>\r\n                            <aside className=\"a4-auth-additional\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay='100'>\r\n                                <span>\r\n                                    Already have an Account? &nbsp;\r\n                                    <Link to=\"/login\" className=\"text-primary\">Login</Link>\r\n                                </span>\r\n                            </aside>\r\n                        </div>\r\n                        <Footer />\r\n                    </main>\r\n                </div>\r\n            </>\r\n        )\r\n    }\r\n}\r\n\r\nexport default ForgotPassword;","import React from 'react'\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport BubbleButton from '../shared/BubbleButton/BubbleButton'\r\nimport { ReactComponent as Error } from '../../assets/error.svg'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport formService from '../../services/FormService'\r\nimport memberService from '../../services/MemberService'\r\nimport recaptchaService from '../../services/RecaptchaService'\r\n\r\nclass ResetPassword extends React.Component {\r\n    // Constructor\r\n    constructor(props) {\r\n        super(props);\r\n\r\n        // Refs\r\n        this.form = null;\r\n\r\n        // This Binding\r\n        this.submitForm = this.submitForm.bind(this);\r\n    }\r\n\r\n    // Lifecycle\r\n    componentDidMount() {\r\n        window.scrollTo(0, 0);\r\n    }\r\n    \r\n    // Event Handlers\r\n    submitForm(e) {\r\n        e.preventDefault();\r\n\r\n        const isFormValid = formService.validate(this.form);\r\n\r\n        const token = this.props.match.params.token;\r\n        const password = e.target.password.value;\r\n        const confirm = e.target.confirm.value;\r\n\r\n        if (password !== confirm) {\r\n            formService.showInputError(this.form, \"confirm\", \"This password does not match\");\r\n            formService.hideLoadingButton(this.form);\r\n            return;\r\n        }\r\n\r\n        if(!isFormValid) return;\r\n\r\n        formService.showLoadingButton(this.form);\r\n\r\n        let resetPasswordRequest = {token, password}\r\n\r\n        recaptchaService.getToken(\"resetPassword\")\r\n        .then(token => {\r\n            resetPasswordRequest.recaptchaToken = token;\r\n\r\n            memberService.resetPassword(resetPasswordRequest)\r\n            .then(json => {\r\n                if (json.succeeded) {\r\n                    memberService.goToMembers();\r\n                }\r\n                else {\r\n                    formService.hideAllErrors(this.form);\r\n                    formService.hideLoadingButton(this.form);\r\n                    formService.showFormError(this.form, json.errors[0]);\r\n                }\r\n            });\r\n        });\r\n    }\r\n\r\n    // Component\r\n    render() {\r\n        return (\r\n            <>\r\n                <Navbar />\r\n                <div className=\"a4-view\">\r\n                    <main className=\"a4-layout a4-auth\">\r\n                        <div className=\"a4-auth-container -login\">\r\n                            <section className=\"a4-auth-item-container\">\r\n                                <div className=\"a4-auth-item-shadow\"></div>\r\n                                <div className=\"a4-auth-item-content\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                    <h1 className=\"a4-auth-item-title\"><span className=\"text-primary\">Reset</span> your password</h1>\r\n                                    <p>Enter your new password.</p>\r\n                                    <form className=\"a4-auth-form\" ref={form => this.form = form} onSubmit={this.submitForm}>\r\n                                        <div className=\"a4-input\">\r\n                                            <input name=\"password\" placeholder=\"Password\" required type=\"password\" />\r\n                                            <label htmlFor=\"password\">New Password</label>\r\n                                            <span className=\"a4-input-error\">Enter a valid password</span>\r\n                                            <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                                <Error />\r\n                                            </svg>\r\n                                        </div>\r\n                                        <div className=\"a4-input\">\r\n                                            <input name=\"confirm\" placeholder=\"Re-enter New Password\" required type=\"password\" />\r\n                                            <label htmlFor=\"password\">Re-enter New Password</label>\r\n                                            <span className=\"a4-input-error\">Enter a valid password</span>\r\n                                            <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                                <Error />\r\n                                            </svg>\r\n                                        </div>\r\n                                        <p className=\"a4-form-error\"></p>\r\n                                        <section className=\"a4-auth-form-control\">\r\n                                            <BubbleButton className=\"a4-form-submit -primary\" type=\"submit\" formNoValidate>\r\n                                                <b>Reset password</b>\r\n                                            </BubbleButton>\r\n                                        </section>\r\n                                    </form>\r\n                                </div>\r\n                            </section>\r\n                            <aside className=\"a4-auth-additional\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay='100'>\r\n                            </aside>\r\n                        </div>\r\n                        <Footer />\r\n                    </main>\r\n                </div>\r\n            </>\r\n        )\r\n    }\r\n}\r\n\r\nexport default ResetPassword;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n  fillRule: \"evenodd\",\n  clipRule: \"evenodd\",\n  d: \"M17.9848 9.57389C17.9848 10.612 17.4915 12.0763 16.6208 13.791C15.7675 15.4716 14.6193 17.2653 13.4551 18.9219C12.2935 20.5748 11.1298 22.0719 10.2555 23.1569C9.9958 23.4791 9.76199 23.7645 9.56175 24.0064C9.36151 23.7645 9.1277 23.4791 8.86802 23.1569C7.99367 22.0719 6.83 20.5748 5.66839 18.9219C4.50424 17.2653 3.35596 15.4716 2.50267 13.791C1.63201 12.0763 1.13867 10.612 1.13867 9.57389C1.13867 4.98668 4.89981 1.25 9.56175 1.25C14.2237 1.25 17.9848 4.98668 17.9848 9.57389Z\",\n  stroke: \"current\",\n  strokeWidth: 2,\n  fill: \"transparent\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"circle\", {\n  fillRule: \"evenodd\",\n  clipRule: \"evenodd\",\n  cx: 9.5625,\n  cy: 9.13477,\n  r: 2.5,\n  stroke: \"current\",\n  strokeWidth: 2,\n  fill: \"transparent\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n  fillRule: \"evenodd\",\n  clipRule: \"evenodd\",\n  d: \"M6.3664 25.0195C4.88188 25.3386 3.9082 25.8737 3.9082 26.4801C3.9082 27.4577 6.43952 28.2503 9.56205 28.2503C12.6846 28.2503 15.2159 27.4577 15.2159 26.4801C15.2159 25.8737 14.2422 25.3386 12.7577 25.0195\",\n  stroke: \"current\",\n  strokeWidth: 2,\n  strokeLinecap: \"round\",\n  fill: \"transparent\"\n});\n\nfunction SvgLocation(_ref, svgRef) {\n  var title = _ref.title,\n      titleId = _ref.titleId,\n      props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    viewBox: \"0 0 19 30\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _ref2, _ref3, _ref4);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLocation);\nexport default \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTkgMzAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTE3Ljk4NDggOS41NzM4OUMxNy45ODQ4IDEwLjYxMiAxNy40OTE1IDEyLjA3NjMgMTYuNjIwOCAxMy43OTFDMTUuNzY3NSAxNS40NzE2IDE0LjYxOTMgMTcuMjY1MyAxMy40NTUxIDE4LjkyMTlDMTIuMjkzNSAyMC41NzQ4IDExLjEyOTggMjIuMDcxOSAxMC4yNTU1IDIzLjE1NjlDOS45OTU4IDIzLjQ3OTEgOS43NjE5OSAyMy43NjQ1IDkuNTYxNzUgMjQuMDA2NEM5LjM2MTUxIDIzLjc2NDUgOS4xMjc3IDIzLjQ3OTEgOC44NjgwMiAyMy4xNTY5QzcuOTkzNjcgMjIuMDcxOSA2LjgzIDIwLjU3NDggNS42NjgzOSAxOC45MjE5QzQuNTA0MjQgMTcuMjY1MyAzLjM1NTk2IDE1LjQ3MTYgMi41MDI2NyAxMy43OTFDMS42MzIwMSAxMi4wNzYzIDEuMTM4NjcgMTAuNjEyIDEuMTM4NjcgOS41NzM4OUMxLjEzODY3IDQuOTg2NjggNC44OTk4MSAxLjI1IDkuNTYxNzUgMS4yNUMxNC4yMjM3IDEuMjUgMTcuOTg0OCA0Ljk4NjY4IDE3Ljk4NDggOS41NzM4OVoiIHN0cm9rZT0iY3VycmVudCIgc3Ryb2tlLXdpZHRoPSIyIiBmaWxsPSJ0cmFuc3BhcmVudCIvPg0KPGNpcmNsZSBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgY3g9IjkuNTYyNSIgY3k9IjkuMTM0NzciIHI9IjIuNSIgc3Ryb2tlPSJjdXJyZW50IiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9InRyYW5zcGFyZW50Ii8+DQo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTYuMzY2NCAyNS4wMTk1QzQuODgxODggMjUuMzM4NiAzLjkwODIgMjUuODczNyAzLjkwODIgMjYuNDgwMUMzLjkwODIgMjcuNDU3NyA2LjQzOTUyIDI4LjI1MDMgOS41NjIwNSAyOC4yNTAzQzEyLjY4NDYgMjguMjUwMyAxNS4yMTU5IDI3LjQ1NzcgMTUuMjE1OSAyNi40ODAxQzE1LjIxNTkgMjUuODczNyAxNC4yNDIyIDI1LjMzODYgMTIuNzU3NyAyNS4wMTk1IiBzdHJva2U9ImN1cnJlbnQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBmaWxsPSJ0cmFuc3BhcmVudCIvPg0KPC9zdmc+DQo=\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n  d: \"M23.9519 23.1875H25.125C26.7819 23.1875 28.125 21.8444 28.125 20.1875C28.125 17.8125 28.125 15.4375 28.125 13.0625C28.125 11.4056 26.7819 10.0625 25.125 10.0625H4C2.34315 10.0625 1 11.4056 1 13.0625V20.1875C1 21.8444 2.34314 23.1875 4 23.1875H5.17308\",\n  stroke: \"current\",\n  strokeWidth: 2,\n  strokeLinecap: \"round\",\n  fill: \"transparent\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n  d: \"M5.47754 3C5.47754 1.89543 6.37297 1 7.47754 1H21.6474C22.752 1 23.6474 1.89543 23.6474 3V6.21875H5.47754V3Z\",\n  stroke: \"current\",\n  strokeWidth: 2,\n  fill: \"transparent\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n  d: \"M20.8652 24.125C20.8652 25.2296 19.9698 26.125 18.8652 26.125L10.2595 26.125C9.15489 26.125 8.25946 25.2296 8.25946 24.125L8.25946 20.25L20.8652 20.25L20.8652 24.125Z\",\n  stroke: \"current\",\n  strokeWidth: 2,\n  fill: \"transparent\"\n});\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"line\", {\n  x1: 5.47754,\n  y1: 13.6562,\n  x2: 8.34613,\n  y2: 13.6562,\n  stroke: \"current\",\n  strokeWidth: 2,\n  strokeLinecap: \"round\",\n  fill: \"transparent\"\n});\n\nfunction SvgPrinter(_ref, svgRef) {\n  var title = _ref.title,\n      titleId = _ref.titleId,\n      props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    viewBox: \"0 0 30 28\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _ref2, _ref3, _ref4, _ref5);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgPrinter);\nexport default \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzAgMjgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQo8cGF0aCBkPSJNMjMuOTUxOSAyMy4xODc1SDI1LjEyNUMyNi43ODE5IDIzLjE4NzUgMjguMTI1IDIxLjg0NDQgMjguMTI1IDIwLjE4NzVDMjguMTI1IDE3LjgxMjUgMjguMTI1IDE1LjQzNzUgMjguMTI1IDEzLjA2MjVDMjguMTI1IDExLjQwNTYgMjYuNzgxOSAxMC4wNjI1IDI1LjEyNSAxMC4wNjI1SDRDMi4zNDMxNSAxMC4wNjI1IDEgMTEuNDA1NiAxIDEzLjA2MjVWMjAuMTg3NUMxIDIxLjg0NDQgMi4zNDMxNCAyMy4xODc1IDQgMjMuMTg3NUg1LjE3MzA4IiBzdHJva2U9ImN1cnJlbnQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBmaWxsPSJ0cmFuc3BhcmVudCIvPg0KPHBhdGggZD0iTTUuNDc3NTQgM0M1LjQ3NzU0IDEuODk1NDMgNi4zNzI5NyAxIDcuNDc3NTQgMUgyMS42NDc0QzIyLjc1MiAxIDIzLjY0NzQgMS44OTU0MyAyMy42NDc0IDNWNi4yMTg3NUg1LjQ3NzU0VjNaIiBzdHJva2U9ImN1cnJlbnQiIHN0cm9rZS13aWR0aD0iMiIgZmlsbD0idHJhbnNwYXJlbnQiIC8+DQo8cGF0aCBkPSJNMjAuODY1MiAyNC4xMjVDMjAuODY1MiAyNS4yMjk2IDE5Ljk2OTggMjYuMTI1IDE4Ljg2NTIgMjYuMTI1TDEwLjI1OTUgMjYuMTI1QzkuMTU0ODkgMjYuMTI1IDguMjU5NDYgMjUuMjI5NiA4LjI1OTQ2IDI0LjEyNUw4LjI1OTQ2IDIwLjI1TDIwLjg2NTIgMjAuMjVMMjAuODY1MiAyNC4xMjVaIiBzdHJva2U9ImN1cnJlbnQiIHN0cm9rZS13aWR0aD0iMiIgZmlsbD0idHJhbnNwYXJlbnQiLz4NCjxsaW5lIHgxPSI1LjQ3NzU0IiB5MT0iMTMuNjU2MiIgeDI9IjguMzQ2MTMiIHkyPSIxMy42NTYyIiBzdHJva2U9ImN1cnJlbnQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBmaWxsPSJ0cmFuc3BhcmVudCIvPg0KPC9zdmc+DQo=\";\nexport { ForwardRef as ReactComponent };","import React from 'react'\r\nimport './Help.scss'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Subscribe from '../shared/Subscribe/Subscribe'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport { ReactComponent as Letter } from '../../assets/letter.svg'\r\nimport { ReactComponent as Phone } from '../../assets/phone.svg'\r\nimport { ReactComponent as Location } from '../../assets/location.svg'\r\nimport { ReactComponent as World } from '../../assets/world.svg'\r\nimport { ReactComponent as Printer } from '../../assets/printer.svg'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\n\r\nclass Help extends React.Component {\r\n\r\n    // Lifecycle\r\n    componentDidMount() {\r\n        window.scrollTo(0, 0);\r\n    }\r\n\r\n    // Component\r\n    render() {\r\n        const helpData = bootstrapService.data.landing.pages.find(p => p.name === \"help-support\");\r\n\r\n        const header = helpData ? helpData.header : null;\r\n        const body = helpData ? helpData.bodyText : null;\r\n\r\n        const siteData = bootstrapService.data.site;\r\n\r\n        const email = siteData.siteEmail;\r\n        const phone = siteData.sitePhone;\r\n        const address1 = siteData.siteAddress.street;\r\n        const address2 = siteData.siteAddress.city.concat(\", \", siteData.siteAddress.state, \" \", siteData.siteAddress.zip);\r\n        const fullAddress = address1.concat(\" \", address2);\r\n        const url = siteData.name;\r\n        const fax = siteData.siteFax;\r\n\r\n        return (\r\n            <>\r\n                {\r\n                    helpData && siteData &&\r\n                    <>\r\n                        <Navbar />\r\n                        <div className=\"a4-view\">\r\n                            <div className=\"a4-layout a4-help-and-support\">\r\n                                <div className=\"a4- a4-help-and-support-container\">\r\n                                    <div className=\"a4- a4-help-and-support-page-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                        <h1 className=\"title\">{header}</h1>\r\n                                        <p className=\"description\">{body}</p>\r\n                                    </div>\r\n                                    <div className=\"a4-help-and-support-contacts\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                        <ul className=\"a4-help-and-support-contacts-list\">\r\n                                            <li className=\"a4-help-and-support-contacts-list-item\">\r\n                                                <div className=\"a4-help-and-support-contacts-list-item-info\">\r\n                                                    <div className=\"a4-help-and-support-contacts-list-item-label\">Email:</div>\r\n                                                    <a href={`mailto:${email}`} target=\"_blank\" rel=\"noreferrer\">\r\n                                                        <div className=\"a4-help-and-support-contacts-list-item-value\">{email}</div>\r\n                                                    </a>\r\n                                                </div>\r\n                                                <div className=\"a4-help-and-support-contacts-list-item-icon\">\r\n                                                    <svg className=\"a4-svgsprite -letter text-secondary\">\r\n                                                        <Letter fill={bootstrapService.primaryColor} />\r\n                                                    </svg>\r\n                                                </div>\r\n                                            </li>\r\n                                            <li className=\"a4-help-and-support-contacts-list-item\">\r\n                                                <div className=\"a4-help-and-support-contacts-list-item-info\">\r\n                                                    <div className=\"a4-help-and-support-contacts-list-item-label\">Phone:</div>\r\n                                                    <a href={`tel:${phone}`}>\r\n                                                        <div className=\"a4-help-and-support-contacts-list-item-value\">{phone}</div>\r\n                                                    </a>\r\n                                                </div>\r\n                                                <div className=\"a4-help-and-support-contacts-list-item-icon\">\r\n                                                    <svg className=\"a4-svgsprite -phone text-secondary\">\r\n                                                        <Phone stroke={bootstrapService.primaryColor} />\r\n                                                    </svg>\r\n                                                </div>\r\n                                            </li>\r\n                                            <li className=\"a4-help-and-support-contacts-list-item\">\r\n                                                <div className=\"a4-help-and-support-contacts-list-item-info\">\r\n                                                    <div className=\"a4-help-and-support-contacts-list-item-label\">Mailing Address:</div>\r\n                                                    <a href={`http://maps.google.com/?q=${fullAddress}`} target=\"_blank\" rel=\"noreferrer\">\r\n                                                        <div className=\"a4-help-and-support-contacts-list-item-value\">{address1}<br></br>{address2}</div>\r\n                                                    </a>\r\n                                                </div>\r\n                                                <div className=\"a4-help-and-support-contacts-list-item-icon\">\r\n                                                    <svg className=\"a4-svgsprite -location text-secondary\">\r\n                                                        <Location stroke={bootstrapService.primaryColor} />\r\n                                                    </svg>\r\n                                                </div>\r\n                                            </li>\r\n                                            <li className=\"a4-help-and-support-contacts-list-item\">\r\n                                                <div className=\"a4-help-and-support-contacts-list-item-info\">\r\n                                                    <div className=\"a4-help-and-support-contacts-list-item-label\">Website:</div>\r\n                                                    <a href={`https://${url}`} target=\"_blank\" rel=\"noreferrer\">\r\n                                                        <div className=\"a4-help-and-support-contacts-list-item-value\">https://{url}</div>\r\n                                                    </a>\r\n                                                </div>\r\n                                                <div className=\"a4-help-and-support-contacts-list-item-icon\">\r\n                                                    <svg className=\"a4-svgsprite -world text-secondary\">\r\n                                                        <World fill={bootstrapService.primaryColor} />\r\n                                                    </svg>\r\n                                                </div>\r\n                                            </li>\r\n                                            <li className=\"a4-help-and-support-contacts-list-item\">\r\n                                                <div className=\"a4-help-and-support-contacts-list-item-info\">\r\n                                                    <div className=\"a4-help-and-support-contacts-list-item-label\">Fax:</div>\r\n                                                    <a href={`fax:${fax}`}>\r\n                                                        <div className=\"a4-help-and-support-contacts-list-item-value\">{fax}</div>\r\n                                                    </a>\r\n                                                </div>\r\n                                                <div className=\"a4-help-and-support-contacts-list-item-icon\">\r\n                                                    <svg className=\"a4-svgsprite -printer text-secondary\">\r\n                                                        <Printer stroke={bootstrapService.primaryColor} />\r\n                                                    </svg>\r\n                                                </div>\r\n                                            </li>\r\n                                        </ul>\r\n                                    </div>\r\n                                </div>\r\n                                <Subscribe />\r\n                                <Footer />\r\n                            </div>\r\n                        </div>\r\n                    </>\r\n                }\r\n            </>\r\n        )\r\n    }\r\n}\r\n\r\nexport default Help;","import httpService from './HttpService';\r\n\r\nclass FaqService {\r\n    \r\n    askQuestion(faqRequest) {\r\n        const url = 'api/faqs/ask';\r\n\r\n        return httpService.post(url, faqRequest);\r\n    }\r\n}\r\n\r\nconst faqService = new FaqService();\r\nexport default faqService;","import React from 'react'\r\nimport './Faq.scss'\r\nimport $ from 'jquery'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Subscribe from '../shared/Subscribe/Subscribe'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport BubbleButton from '../shared/BubbleButton/BubbleButton'\r\nimport { ReactComponent as CheckMark } from '../../assets/check-mark.svg'\r\nimport { ReactComponent as Error } from '../../assets/error.svg'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\nimport formService from '../../services/FormService'\r\nimport faqService from '../../services/FaqService'\r\nimport recaptchaService from '../../services/RecaptchaService'\r\n\r\nclass Faq extends React.Component {\r\n    // Constructor\r\n    constructor(props) {\r\n        super(props);\r\n\r\n        // Refs\r\n        this.accordianItems = new Array([]);\r\n        this.questionForm = null;\r\n        this.successMessage = null;\r\n\r\n        // This Binding\r\n        this.clickAccordianItem = this.clickAccordianItem.bind(this);\r\n        this.submitQuestion = this.submitQuestion.bind(this);\r\n    }\r\n\r\n    // Lifecycle\r\n    componentDidMount() {\r\n        window.scrollTo(0, 0);\r\n        this.setupAccordian();\r\n    }\r\n\r\n    componentDidUpdate() {\r\n        this.setupAccordian();\r\n    }\r\n\r\n    // Helpers\r\n    setupAccordian() {\r\n        for (const item of this.accordianItems) {\r\n            const paragraph = $(item).find(\".a4-faq-topics-accordion-item-content-answer\");\r\n            const height = -(paragraph.height() + 20);\r\n            paragraph.css(\"margin-top\", height);\r\n        }\r\n    }\r\n\r\n    closeItem(paragraph) {\r\n        const height = -(paragraph.height() + 20);\r\n        paragraph.css(\"margin-top\", height);\r\n    }\r\n\r\n    closeAllItems() {\r\n        for (const item of this.accordianItems) {\r\n            if (item.classList.contains(\"-opened\")) {\r\n                const paragraph = $(item).find(\".a4-faq-topics-accordion-item-content-answer\");\r\n                this.closeItem(paragraph);\r\n                item.classList.remove(\"-opened\");\r\n            }\r\n        }\r\n    }\r\n\r\n    // Event Handlers\r\n    clickAccordianItem(e) {\r\n        const item = e.currentTarget.parentElement;\r\n        const paragraph = $(item).find(\".a4-faq-topics-accordion-item-content-answer\");\r\n\r\n        if (!item.classList.contains(\"-opened\")) {\r\n            paragraph.show(0, () => {\r\n                paragraph.css(\"margin-top\", \"\");\r\n            });\r\n            this.closeAllItems();\r\n        } \r\n        else {\r\n            this.closeItem(paragraph);\r\n        }\r\n\r\n        item.classList.toggle(\"-opened\");\r\n    }\r\n\r\n    submitQuestion(e) {\r\n        e.preventDefault();\r\n\r\n        const isFormValid = formService.validate(this.questionForm);\r\n        if(!isFormValid) return;\r\n\r\n        formService.showLoadingButton(this.questionForm);\r\n\r\n        const email = e.target.email.value.trim();\r\n        const question = e.target.question.value;\r\n\r\n        let faqRequest = {email, question};\r\n\r\n        recaptchaService.getToken(\"askFaq\")\r\n        .then(token => {\r\n            faqRequest.recaptchaToken = token;\r\n\r\n            faqService.askQuestion(faqRequest)\r\n            .then(json => {\r\n                if (json.succeeded) {\r\n                    this.successMessage.classList.add(\"-visible\");\r\n                }\r\n                else {\r\n                    formService.hideAllErrors(this.questionForm);\r\n                    formService.hideLoadingButton(this.questionForm);\r\n                    formService.showInputError(this.questionForm, \"question\", json.errors[0]);\r\n                }\r\n            });\r\n        });\r\n    }\r\n    \r\n    // Component\r\n    render() {\r\n        const faqData = bootstrapService.data.landing.pages.find(p => p.name === \"faq\");\r\n\r\n        const header = faqData ? faqData.header : null;\r\n        const faqs = faqData ? faqData.faqs : null;\r\n\r\n        console.log('bootstrapService.data = ', bootstrapService.data);\r\n        console.log('faqData = ', faqData);\r\n\r\n        return (\r\n            <>\r\n                {\r\n                    faqData && \r\n                    <>\r\n                        <Navbar />\r\n                        <div className=\"a4-view\">\r\n                            <div className=\"a4-layout a4-faq\">\r\n                                <div className=\"a4-faq-container\">\r\n                                    <div className=\"a4-faq-page-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                        <div className=\"a4-faq-page-title-content\">\r\n                                            <h1 className=\"title\">{header}</h1>\r\n                                        </div>\r\n                                    </div>\r\n                                    <div className=\"a4-faq-topics\">\r\n                                        <div className=\"a4-faq-topics-content\">\r\n                                            <ul className=\"a4-faq-topics-accordion\">\r\n                                                {\r\n                                                    faqs.map((faq, index) => {\r\n                                                        return <li className=\"a4-faq-topics-accordion-item\" data-aos={isMobileOnly ? undefined : \"fade-up\"} key={index} ref={li => this.accordianItems[index] = li}>\r\n                                                            <div className=\"a4-faq-topics-accordion-item-head\" onClick={this.clickAccordianItem}>\r\n                                                                <h3 className=\"a4-faq-topics-accordion-item-head-title\" dangerouslySetInnerHTML={{ __html: faq.question}}></h3> \r\n                                                                <span className=\"a4-faq-topics-accordion-item-head-icon\">\r\n                                                                    <div className=\"a4-dynamic-plus\"></div>\r\n                                                                </span>\r\n                                                            </div>\r\n                                                            <div className=\"a4-faq-topics-accordion-item-fill\"></div>\r\n                                                            <div className=\"a4-faq-topics-accordion-item-content\">\r\n                                                                <div className=\"a4-faq-topics-accordion-item-content-answer\" dangerouslySetInnerHTML={{ __html: faq.answer}}></div>\r\n                                                            </div>\r\n                                                        </li>\r\n                                                    })\r\n                                                }\r\n                                            </ul>\r\n                                        </div>\r\n                                    </div>\r\n                                    <div className=\"a4-faq-question\">\r\n                                        <div className=\"a4-faq-question-content\">\r\n                                            <div className=\"a4-faq-question-card\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                                <div className=\"a4-faq-question-card-content\">\r\n                                                    <div className=\"a4-faq-question-card-title\">\r\n                                                        <h2><span className=\"primary-text\">Did not find the answer</span> to your question?</h2>\r\n                                                    </div>\r\n                                                    <div className=\"a4-faq-question-card-form\">\r\n                                                        <form ref={form => this.questionForm = form} onSubmit={this.submitQuestion}>\r\n                                                            <section className=\"a4-faq-question-card-form-section\">\r\n                                                                <div className=\"a4-form-group\">\r\n                                                                    <div className=\"a4-input\">\r\n                                                                        <textarea placeholder='Your question' required name='question'></textarea>\r\n                                                                        <label htmlFor=\"question\">Your question</label>\r\n                                                                        <span className=\"a4-input-error\"></span>\r\n                                                                        <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                                                            <Error />\r\n                                                                        </svg>\r\n                                                                    </div>\r\n                                                                </div>\r\n                                                                <div className=\"a4-form-group\">\r\n                                                                    <div className=\"a4-input\">\r\n                                                                        <input name=\"email\" type='email' required placeholder=\"E-mail address\" />\r\n                                                                        <label htmlFor=\"email\">E-mail address</label>\r\n                                                                        <span className=\"a4-input-error\"></span>\r\n                                                                        <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                                                            <Error />\r\n                                                                        </svg>\r\n                                                                    </div>\r\n                                                                </div>\r\n                                                                <div className=\"a4-form-control\">\r\n                                                                    <BubbleButton className=\"a4-form-submit -primary\" type=\"submit\" formNoValidate>\r\n                                                                        Submit\r\n                                                                    </BubbleButton>\r\n                                                                </div>\r\n                                                            </section>\r\n                                                            <p className=\"a4-form-error\">Cannot make faq request at this time</p>\r\n                                                            <section className=\"a4-faq-question-card-form-section -success\" ref={section => this.successMessage = section}>\r\n                                                                <figure>\r\n                                                                    <svg className=\"a4-svgsprite text-secondary\">\r\n                                                                            <CheckMark stroke={bootstrapService.primaryColor} />\r\n                                                                        </svg>\r\n                                                                </figure>\r\n                                                                <h3><span className=\"text-primary\">Thank you</span> for the question!</h3>\r\n                                                                <p>We will answer you shortly.</p>\r\n                                                            </section>\r\n                                                        </form>\r\n                                                    </div>\r\n                                                </div>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                                <Subscribe />\r\n                                <Footer />\r\n                            </div>\r\n                        </div>\r\n                    </>\r\n                }\r\n            </>\r\n        )\r\n    }\r\n}\r\n\r\nexport default Faq;","export function splitBody(body) {\r\n    if (!body) return [null, null];\r\n\r\n    var middle = Math.floor(body.length / 2);\r\n    var before = body.lastIndexOf(' ', middle);\r\n    var after = body.indexOf(' ', middle + 1);\r\n\r\n    if (before === -1 || (after !== -1 && middle - before >= after - middle)) {\r\n        middle = after;\r\n    } else {\r\n        middle = before;\r\n    }\r\n\r\n    var s1 = body.substr(0, middle);\r\n    var s2 = body.substr(middle + 1);\r\n\r\n    return [s1, s2];\r\n}\r\n\r\nexport function getParameterByName(name, url = window.location.href) {\r\n    name = name.replace(/\\[\\]]/g, '\\\\$&');                                      // old = /[\\[\\]]/g, '\\\\$&'\r\n    var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),\r\n        results = regex.exec(url);\r\n    if (!results) return null;\r\n    if (!results[2]) return '';\r\n    return decodeURIComponent(results[2].replace(/\\+/g, ' '));\r\n}","export function splitArray(list) {\r\n    const half = Math.ceil(list.length / 2);    \r\n\r\n    const firstHalf = list.splice(0, half);\r\n    const secondHalf = list.splice(-half);\r\n\r\n    return [firstHalf, secondHalf];\r\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n  d: \"M9 1C9 0.447715 8.55228 -2.41411e-08 8 0C7.44772 2.41411e-08 7 0.447715 7 1L9 1ZM7.29289 21.7071C7.68342 22.0976 8.31658 22.0976 8.70711 21.7071L15.0711 15.3431C15.4616 14.9526 15.4616 14.3195 15.0711 13.9289C14.6805 13.5384 14.0474 13.5384 13.6569 13.9289L8 19.5858L2.34315 13.9289C1.95262 13.5384 1.31946 13.5384 0.928933 13.9289C0.538408 14.3195 0.538408 14.9526 0.928933 15.3431L7.29289 21.7071ZM7 1L7 21L9 21L9 1L7 1Z\",\n  fill: \"current\"\n});\n\nfunction SvgArrowDown(_ref, svgRef) {\n  var title = _ref.title,\n      titleId = _ref.titleId,\n      props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    viewBox: \"0 0 16 22\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrowDown);\nexport default \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTYgMjIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQo8cGF0aCBkPSJNOSAxQzkgMC40NDc3MTUgOC41NTIyOCAtMi40MTQxMWUtMDggOCAwQzcuNDQ3NzIgMi40MTQxMWUtMDggNyAwLjQ0NzcxNSA3IDFMOSAxWk03LjI5Mjg5IDIxLjcwNzFDNy42ODM0MiAyMi4wOTc2IDguMzE2NTggMjIuMDk3NiA4LjcwNzExIDIxLjcwNzFMMTUuMDcxMSAxNS4zNDMxQzE1LjQ2MTYgMTQuOTUyNiAxNS40NjE2IDE0LjMxOTUgMTUuMDcxMSAxMy45Mjg5QzE0LjY4MDUgMTMuNTM4NCAxNC4wNDc0IDEzLjUzODQgMTMuNjU2OSAxMy45Mjg5TDggMTkuNTg1OEwyLjM0MzE1IDEzLjkyODlDMS45NTI2MiAxMy41Mzg0IDEuMzE5NDYgMTMuNTM4NCAwLjkyODkzMyAxMy45Mjg5QzAuNTM4NDA4IDE0LjMxOTUgMC41Mzg0MDggMTQuOTUyNiAwLjkyODkzMyAxNS4zNDMxTDcuMjkyODkgMjEuNzA3MVpNNyAxTDcgMjFMOSAyMUw5IDFMNyAxWiIgZmlsbD0iY3VycmVudCIvPg0KPC9zdmc+DQo=\";\nexport { ForwardRef as ReactComponent };","import React from 'react'\r\nimport './PrivacyPolicy.scss'\r\nimport { splitBody } from '../../utils/string'\r\nimport { splitArray } from '../../utils/array'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport { ReactComponent as ArrowDown } from '../../assets/arrow-down.svg'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\n\r\nclass PrivacyPolicy extends React.Component {\r\n    // Constructor\r\n    constructor(props) {\r\n        super(props);\r\n\r\n        // Refs\r\n        this.topicRefs = new Array([]);\r\n\r\n        // This Binding\r\n        this.clickTopic = this.clickTopic.bind(this);\r\n    }\r\n\r\n    // Lifecycle\r\n    componentDidMount() {\r\n        window.scrollTo(0, 0);\r\n    }\r\n\r\n    // Event Handlers\r\n    clickTopic(e) {\r\n        const topic = e.currentTarget.getAttribute(\"topic\");\r\n        for (const ref of this.topicRefs) {\r\n            if (ref.getAttribute(\"topic\") === topic) {\r\n                ref.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n                return;\r\n            }\r\n        }\r\n    }\r\n    \r\n    // Component\r\n    render() {\r\n        const policyData = bootstrapService.data.landing.pages.find(p => p.name === \"privacy\");\r\n\r\n        const header = policyData ? policyData.header : null;\r\n        const effectiveDate = policyData ? policyData.effectiveDate : null;\r\n        const body = policyData ? policyData.body : null;\r\n        const topics = policyData ? policyData.topics : null;\r\n\r\n        const [body1, body2] = splitBody(body);\r\n        \r\n        return (\r\n            <>\r\n                {\r\n                    policyData &&\r\n                    <>\r\n                        <Navbar />\r\n                        <div className=\"a4-view\">\r\n                            <div className=\"a4-layout a4-policy\">\r\n                                <div className=\"a4-policy-container\">\r\n                                    <div className=\"a4-policy-page-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                        <h1 className=\"title\">{header}</h1>\r\n                                    </div>\r\n                                    <div className=\"a4-policy-pre\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                        <h4 className=\"title\">Effective date: {effectiveDate}.</h4>\r\n                                        <div className=\"cols\">\r\n                                            <div className=\"column\">\r\n                                                <p><span className=\"text-primary\" dangerouslySetInnerHTML={{ __html: body1 }}></span></p>\r\n                                            </div>\r\n                                            <div className=\"column\">\r\n                                                <p><span className=\"text-primary\" dangerouslySetInnerHTML={{ __html: body2 }}></span></p>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                    <div className=\"a4-policy-topics-summary\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                        <h2 className=\"title\">Choose the topic</h2>\r\n                                        <div className=\"summary-items\">\r\n                                            <div className=\"summary-items-fill\"></div>\r\n                                            {\r\n                                                topics.length <= 10 &&\r\n                                                <ul>\r\n                                                    {\r\n                                                        topics.map((topic, index) => {\r\n                                                            return <li key={index}>\r\n                                                                <button topic={topic.name.toLowerCase()} class=\"summary-items-fill-button\" onClick={this.clickTopic}>{topic.name}</button>\r\n                                                            </li>\r\n                                                        })\r\n                                                    }\r\n                                                </ul>\r\n                                            }\r\n                                            {\r\n                                                topics.length > 10 &&\r\n                                                <>\r\n                                                    <ul>\r\n                                                        {\r\n                                                            topics.slice(0, Math.ceil(topics.length / 2)).map((topic, index) => {\r\n                                                                return <li key={index}>\r\n                                                                    <button topic={topic.name.toLowerCase()} class=\"summary-items-fill-button\" onClick={this.clickTopic}>{topic.name}</button>\r\n                                                                </li>\r\n                                                            })\r\n                                                        }\r\n                                                    </ul>\r\n                                                    <ul>\r\n                                                        {\r\n                                                            topics.slice(Math.ceil(topics.length / 2), topics.length).map((topic, index) => {\r\n                                                                return <li key={index}>\r\n                                                                    <button topic={topic.name.toLowerCase()} class=\"summary-items-fill-button\" onClick={this.clickTopic}>{topic.name}</button>\r\n                                                                </li>\r\n                                                            })\r\n                                                        }\r\n                                                    </ul>\r\n                                                </>\r\n                                            }\r\n                                            <div className=\"summary-items-control\">\r\n                                                <svg className=\"a4-svgsprite -arrow-down text-secondary\">\r\n                                                    <ArrowDown fill={bootstrapService.primaryColor} />\r\n                                                </svg>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                    <div className=\"a4-policy-topics\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                        {\r\n                                            topics.map((topic, index) => {\r\n                                                if (topic.sections.length === 1) {\r\n                                                    return <div className=\"topic\" key={index} topic={topic.name.toLowerCase()} ref={div => this.topicRefs[index] = div}>\r\n                                                        <h2 className=\"topic-title\">{topic.name}</h2>\r\n                                                        <div className=\"cols\">\r\n                                                            {\r\n                                                                topic.sections.map((item, itemIndex) => {\r\n                                                                    return <div key={itemIndex}>\r\n                                                                        {\r\n                                                                            item.title &&\r\n                                                                            <h3 className=\"title\">{item.header}</h3>\r\n                                                                        }\r\n                                                                        <span className=\"description\" key={itemIndex} dangerouslySetInnerHTML={{ __html: item.body }}></span>\r\n                                                                    </div>\r\n                                                                })\r\n                                                            }\r\n                                                        </div>\r\n                                                    </div>\r\n                                                }\r\n                                                else {\r\n                                                    const [firstItems, secondItems] = splitArray(topic.sections);\r\n                                                    return <div className=\"topic\" key={index} topic={topic.name.toLowerCase()} ref={div => this.topicRefs[index] = div}>\r\n                                                        <h2 className=\"topic-title\">{topic.name}</h2>\r\n                                                        <div className=\"cols\">\r\n                                                            <div className=\"column\">\r\n                                                                {\r\n                                                                    firstItems.map((item, itemIndex) => {\r\n                                                                        return <>\r\n                                                                            {\r\n                                                                                item.title &&\r\n                                                                                <h3 className=\"title\" key={itemIndex}>{item.header}</h3>\r\n                                                                            }\r\n                                                                            <span className=\"description\" dangerouslySetInnerHTML={{ __html: item.body }}></span>\r\n                                                                        </>\r\n                                                                    })\r\n                                                                }\r\n                                                            </div>\r\n                                                            <div className=\"column\">\r\n                                                                {\r\n                                                                    secondItems.map((item, itemIndex) => {\r\n                                                                        return <>\r\n                                                                            {\r\n                                                                                item.title &&\r\n                                                                                <h3 className=\"title\" key={itemIndex}>{item.header}</h3>\r\n                                                                            }\r\n                                                                            <span className=\"description\" dangerouslySetInnerHTML={{ __html: item.body }}></span>\r\n                                                                        </>\r\n                                                                    })\r\n                                                                }\r\n                                                            </div>\r\n                                                        </div>\r\n                                                    </div>\r\n                                                }\r\n                                            })\r\n                                        }\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <Footer />\r\n                        </div>\r\n                    </>\r\n                }\r\n            </>\r\n        )\r\n    }\r\n}\r\n\r\nexport default PrivacyPolicy;","import React from 'react'\r\nimport './Terms.scss'\r\nimport { splitBody } from '../../utils/string'\r\nimport { splitArray } from '../../utils/array'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport { ReactComponent as ArrowDown } from '../../assets/arrow-down.svg'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\n\r\nclass Terms extends React.Component {\r\n    // Constructor\r\n    constructor(props) {\r\n        super(props);\r\n\r\n        // Refs\r\n        this.topicRefs = new Array([]);\r\n\r\n        // This Binding\r\n        this.clickTopic = this.clickTopic.bind(this);\r\n    }\r\n\r\n    // Lifecycle\r\n    componentDidMount() {\r\n        window.scrollTo(0, 0);\r\n    }\r\n\r\n    // Event Handlers\r\n    clickTopic(e) {\r\n        const topic = e.currentTarget.getAttribute(\"topic\");\r\n        for (const ref of this.topicRefs) {\r\n            if (ref.getAttribute(\"topic\") === topic) {\r\n                ref.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n                return;\r\n            }\r\n        }\r\n    }\r\n\r\n    // Component\r\n    render() {\r\n        const termsData = bootstrapService.data ? bootstrapService.data.landing.pages.find(p => p.name === \"terms\") : null;\r\n\r\n        const header = termsData ? termsData.header : null;\r\n        const effectiveDate = termsData ? termsData.effectiveDate : null;\r\n        const body = termsData ? termsData.body : null;\r\n        const topics = termsData ? termsData.topics : null;\r\n\r\n        const [body1, body2] = splitBody(body);\r\n\r\n        return (\r\n            <>\r\n                {\r\n                    termsData &&\r\n                    <>\r\n                        <Navbar />\r\n                        <div className=\"a4-view\">\r\n                            <div className=\"a4-layout a4-terms\">\r\n                                <div className=\"a4-terms-container\">\r\n                                    <div className=\"a4-terms-page-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                        <h1 className=\"title\">{header}</h1>\r\n                                    </div>\r\n                                    <div className=\"a4-terms-pre\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                        <h4 className=\"title\">Effective date: {effectiveDate}.</h4>\r\n                                        <div className=\"cols\">\r\n                                            <div className=\"column\">\r\n                                                <p><span className=\"text-primary\" dangerouslySetInnerHTML={{ __html: body1 }}></span></p>\r\n                                            </div>\r\n                                            <div className=\"column\">\r\n                                                <p><span className=\"text-primary\" dangerouslySetInnerHTML={{ __html: body2 }}></span></p>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                    <div className=\"a4-terms-topics-summary\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                        <h2 className=\"title\">Choose the terms</h2>\r\n                                        <div className=\"summary-items\">\r\n                                            <div className=\"summary-items-fill\"></div>\r\n                                            {\r\n                                                topics.length <= 10 &&\r\n                                                <ul>\r\n                                                    {\r\n                                                        topics.map((topic, index) => {\r\n                                                            return <li key={index}>\r\n                                                               <button topic={topic.name.toLowerCase()} class=\"summary-items-fill-button\" onClick={this.clickTopic}>{topic.name}</button>\r\n                                                            </li>\r\n                                                        })\r\n                                                    }\r\n                                                </ul>\r\n                                            }\r\n                                            {\r\n                                                topics.length > 10 &&\r\n                                                <>\r\n                                                    <ul>\r\n                                                        {\r\n                                                            topics.slice(0, Math.ceil(topics.length / 2)).map((topic, index) => {\r\n                                                                return <li key={index}>\r\n                                                                    <button topic={topic.name.toLowerCase()} class=\"summary-items-fill-button\" onClick={this.clickTopic}>{topic.name}</button>\r\n                                                                </li>\r\n                                                            })\r\n                                                        }\r\n                                                    </ul>\r\n                                                    <ul>\r\n                                                        {\r\n                                                            topics.slice(Math.ceil(topics.length / 2), topics.length).map((topic, index) => {\r\n                                                                return <li key={index}>\r\n                                                                    <button topic={topic.name.toLowerCase()} class=\"summary-items-fill-button\" onClick={this.clickTopic}>{topic.name}</button>\r\n                                                                </li>\r\n                                                            })\r\n                                                        }\r\n                                                    </ul>\r\n                                                </>\r\n                                            }\r\n                                            <div className=\"summary-items-control\">\r\n                                                <svg className=\"a4-svgsprite -arrow-down text-secondary\">\r\n                                                    <ArrowDown fill={bootstrapService.primaryColor} />\r\n                                                </svg>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                    <div className=\"a4-policy-topics\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                        {\r\n                                            topics.map((topic, index) => {\r\n                                                if (topic.sections.length === 1) {\r\n                                                    return <div className=\"topic\" key={index} topic={topic.name.toLowerCase()} ref={div => this.topicRefs[index] = div}>\r\n                                                        <h2 className=\"topic-title\">{topic.name}</h2>\r\n                                                        <div className=\"cols\">\r\n                                                            {\r\n                                                                topic.sections.map((item, itemIndex) => {\r\n                                                                    return <div key={itemIndex}>\r\n                                                                        {\r\n                                                                            item.title &&\r\n                                                                            <h3 className=\"title\">{item.header}</h3>\r\n                                                                        }\r\n                                                                        <span className=\"description\" key={itemIndex} dangerouslySetInnerHTML={{ __html: item.body }}></span>\r\n                                                                    </div>\r\n                                                                })\r\n                                                            }\r\n                                                        </div>\r\n                                                    </div>\r\n                                                }\r\n                                                else {\r\n                                                    const [firstItems, secondItems] = splitArray(topic.sections);\r\n                                                    return <div className=\"topic\" key={index} topic={topic.name.toLowerCase()} ref={div => this.topicRefs[index] = div}>\r\n                                                        <h2 className=\"topic-title\">{topic.name}</h2>\r\n                                                        <div className=\"cols\">\r\n                                                            <div className=\"column\">\r\n                                                                {\r\n                                                                    firstItems.map((item, itemIndex) => {\r\n                                                                        return <div key={itemIndex}>\r\n                                                                            {\r\n                                                                                item.title &&\r\n                                                                                <h3 className=\"title\">{item.header}</h3>\r\n                                                                            }\r\n                                                                            <span className=\"description\" key={itemIndex} dangerouslySetInnerHTML={{ __html: item.body }}></span>\r\n                                                                        </div>\r\n                                                                    })\r\n                                                                }\r\n                                                            </div>\r\n                                                            <div className=\"column\">\r\n                                                                {\r\n                                                                    secondItems.map((item, itemIndex) => {\r\n                                                                        return <div key={itemIndex}>\r\n                                                                            {\r\n                                                                                item.title &&\r\n                                                                                <h3 className=\"title\">{item.header}</h3>\r\n                                                                            }\r\n                                                                            <span className=\"description\" dangerouslySetInnerHTML={{ __html: item.body }}></span>\r\n                                                                        </div>\r\n                                                                    })\r\n                                                                }\r\n                                                            </div>\r\n                                                        </div>\r\n                                                    </div>\r\n                                                }\r\n                                            })\r\n                                        }\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <Footer />\r\n                        </div>\r\n                    </>\r\n                }\r\n            </>\r\n        )\r\n    }\r\n}\r\n\r\nexport default Terms;","import React from 'react'\r\nimport './AffiliatedSites.scss'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Subscribe from '../shared/Subscribe/Subscribe'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport placeholderImage from '../../assets/course-plug.svg'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\n\r\nclass AffiliatedSites extends React.Component {\r\n\r\n    // Lifecycle\r\n    componentDidMount() {\r\n        window.scrollTo(0, 0);\r\n    }\r\n\r\n    // Component\r\n    render() {\r\n        const affiliatedData = bootstrapService.data.landing.pages.find(p => p.name === \"our-sites\");\r\n\r\n        const header = affiliatedData ? affiliatedData.header : null;\r\n        const body = affiliatedData ? affiliatedData.bodyText : null;\r\n        const sites = affiliatedData ? affiliatedData.sites : null;\r\n\r\n        return (\r\n            <>\r\n                {\r\n                    affiliatedData &&\r\n                    <>\r\n                        <Navbar />\r\n                        <div className=\"a4-view\">\r\n                            <div className=\"a4-layout a4-affiliated-sites\">\r\n                                <div className=\"a4-affiliated-sites-container\">\r\n                                    <div className=\"a4-affiliated-sites-page-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                        <h1 className=\"title\">{header}</h1>\r\n                                        <p className=\"description\">{body}</p>\r\n                                    </div>\r\n                                    <div className=\"a4-affiliated-sites-list\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                        <ul className=\"a4-affiliated-sites-list-items\">\r\n                                            {\r\n                                                sites.map((site, index) => {\r\n                                                    return <li className=\"a4-affiliated-sites-list-items-item\" key={index}>\r\n                                                        <div className=\"a4-affiliated-sites-list-items-item-logo\">\r\n                                                            <a href={site.url} target=\"_blank\" rel=\"noreferrer\">\r\n                                                                <img src={site.imageUrl ? site.imageUrl : placeholderImage} alt=\"\" />\r\n                                                            </a>\r\n                                                        </div>\r\n                                                        <p className=\"a4-affiliated-sites-list-items-item-text\">{site.body}</p>\r\n                                                    </li>\r\n                                                })\r\n                                            }\r\n                                        </ul>\r\n                                    </div>\r\n                                </div>\r\n                                <Subscribe />\r\n                                <Footer />\r\n                            </div>\r\n                        </div>\r\n                    </>\r\n                }\r\n            </>\r\n        )\r\n    }\r\n}\r\n\r\nexport default AffiliatedSites;","import React from 'react'\r\nimport { Link } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport BubbleButton from '../shared/BubbleButton/BubbleButton'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\nimport memberService from '../../services/MemberService'\r\n\r\nclass ConfirmEmail extends React.Component {\r\n    // Constructor\r\n    constructor(props) {\r\n        super(props);\r\n\r\n        // State\r\n        this.state = {\r\n            errorBody: \"Your email address could not be verified.\"\r\n        }\r\n    }\r\n\r\n    // Lifecycle\r\n    componentDidMount() {\r\n        window.scrollTo(0, 0);\r\n        this.setBootstrapCallback();\r\n    }\r\n\r\n    // Helpers\r\n    setBootstrapCallback() {\r\n        bootstrapService.setCallback(() => {\r\n            return this.validateToken();\r\n        })\r\n    }\r\n\r\n    validateToken() {\r\n        const token = this.props.match.params.token;\r\n\r\n        return memberService.validateConfirmEmailToken(token)\r\n        .then(json => {\r\n            if (json.succeeded) {\r\n                if (json.result.status === 0) {\r\n                    this.forceUpdate();\r\n                }\r\n                else if (json.result.status === 1) {\r\n                    this.setState({ errorBody: \"Your email address could not be verified.<br></br>Token is invalid.\" });\r\n                }\r\n                else if (json.result.status === 2) {\r\n                    this.setState({ errorBody: \"Your email address could not be verified.<br></br>Token is expired.\" });\r\n                }\r\n                else if (json.result.status === 3) {\r\n                    this.setState({ errorBody: \"Your email address could not be verified.<br></br>Token is expired. A new email has been sent.\" });\r\n                }\r\n                else if (json.result.status === 4) {\r\n                    this.setState({ errorBody: \"Your email address could not be verified.<br></br>Confirm email is not required.\" });\r\n                }\r\n            }\r\n            else {\r\n                this.setState({ errorBody: `Your email address could not be verified.<br></br>${json.errors[0]}` });\r\n            }\r\n        })\r\n    }\r\n\r\n    // Component\r\n    render() {\r\n        const tokenValidated = memberService.confirmEmailValidated;\r\n        const errorBody = this.state.errorBody;\r\n\r\n        return (\r\n            <>\r\n                <Navbar />\r\n                <div className=\"a4-view\">\r\n                    <main className=\"a4-layout a4-auth\">\r\n                        {\r\n                            tokenValidated &&\r\n                            <div className=\"a4-auth-container\">\r\n                                <section className=\"a4-auth-item-container\">\r\n                                    <div className=\"a4-auth-item-shadow\"></div>\r\n                                    <div className=\"a4-auth-item-content confirm-email\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                        <h1 className=\"a4-auth-item-title\"><span className=\"text-primary\">Email</span> has been verified!</h1>\r\n                                        <p>Thank you for verifying your email address.<br></br>Please login using the button below.</p>\r\n                                        <form className=\"a4-auth-form\" onSubmit={this.submitForm}>\r\n                                            <section className=\"a4-auth-form-control\">\r\n                                                <Link to=\"/login\">\r\n                                                    <BubbleButton className=\"-primary\" type=\"submit\" formNoValidate>\r\n                                                        <b>Login to account</b>\r\n                                                    </BubbleButton>\r\n                                                </Link>\r\n                                            </section>\r\n                                        </form>\r\n                                    </div>\r\n                                </section>\r\n                                <aside className=\"a4-auth-additional\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay='100'>\r\n                                    <span>\r\n                                        Don’t have an Account? &nbsp;\r\n                                        <Link to=\"/register\" className=\"text-primary\">Register now!</Link>\r\n                                    </span>\r\n                                </aside>\r\n                            </div>\r\n                        }\r\n                        {\r\n                            !tokenValidated &&\r\n                            <div className=\"a4-auth-container\">\r\n                                <section className=\"a4-auth-item-container\">\r\n                                    <div className=\"a4-auth-item-shadow\"></div>\r\n                                    <div className=\"a4-auth-item-content confirm-email\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                        <h1 className=\"a4-auth-item-title\">Confirm Email <span className=\"text-primary\">Error</span></h1>\r\n                                        <p dangerouslySetInnerHTML={{ __html: errorBody}}></p>\r\n                                        <form className=\"a4-auth-form\" onSubmit={this.submitForm}>\r\n                                            <section className=\"a4-auth-form-control\">\r\n                                                <Link to=\"/help-and-support\">\r\n                                                    <BubbleButton className=\"-primary\" type=\"submit\" formNoValidate>\r\n                                                        <b>Get Help</b>\r\n                                                    </BubbleButton>\r\n                                                </Link>\r\n                                            </section>\r\n                                        </form>\r\n                                    </div>\r\n                                </section>\r\n                                <aside className=\"a4-auth-additional\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay='100'>\r\n                                    <span>\r\n                                        Don’t have an Account? &nbsp;\r\n                                        <Link to=\"/register\" className=\"text-primary\">Register now!</Link>\r\n                                    </span>\r\n                                </aside>\r\n                            </div>\r\n                        }\r\n                        <Footer />\r\n                    </main>\r\n                </div>\r\n            </>\r\n        )\r\n    }\r\n}\r\n\r\nexport default ConfirmEmail;","import React from 'react'\r\nimport { Link } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport BubbleButton from '../shared/BubbleButton/BubbleButton'\r\nimport { ReactComponent as Error } from '../../assets/error.svg'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\nimport formService from '../../services/FormService'\r\nimport memberService from '../../services/MemberService'\r\nimport recaptchaService from '../../services/RecaptchaService'\r\n\r\nclass CompleteProfile extends React.Component {\r\n    // Constructor\r\n    constructor(props) {\r\n        super(props);\r\n\r\n        // Refs\r\n        this.form = null;\r\n\r\n        // State\r\n        this.state = {\r\n            requireFirstName: true,\r\n            requireLastName: true,\r\n            requirePassword: true,\r\n            email: null,\r\n            firstName: null,\r\n            middleName: null,\r\n            lastName: null,\r\n            errorBody: \"Your account could not be verified.\",\r\n        }\r\n\r\n        // This Binding\r\n        this.submitForm = this.submitForm.bind(this);\r\n    }\r\n\r\n    // Lifecycle\r\n    componentDidMount() {\r\n        window.scrollTo(0, 0);\r\n        this.setBootstrapCallback();\r\n    }\r\n\r\n    // Helpers\r\n    setBootstrapCallback() {\r\n        bootstrapService.setCallback(() => {\r\n            return this.validateToken();\r\n        })\r\n    }\r\n\r\n    validateToken() {\r\n        const token = this.props.match.params.token;\r\n\r\n        return memberService.validateCompleteProfileToken(token)\r\n        .then(json => {\r\n            if (json.succeeded) {\r\n                if (json.result.status === 0) {\r\n                    this.setState({ \r\n                        requireFirstName: json.result.requireFirstName,\r\n                        requireLastName: json.result.requireLastName,\r\n                        requirePassword: json.result.requirePassword,\r\n\r\n                        email: json.result.email,\r\n                        firstName: json.result.firstName,\r\n                        middleName: json.result.middleName,\r\n                        lastName: json.result.lastName,\r\n                    });\r\n                }\r\n                else if (json.result.status === 1) {\r\n                    this.setState({ errorBody: \"Your account could not be verified.<br></br>Cannot find user.\" });\r\n                }\r\n                else if (json.result.status === 2) {\r\n                    this.setState({ errorBody: \"Your account could not be verified.<br></br>Cannot find member.\" });\r\n                }\r\n                else if (json.result.status === 3) {\r\n                    this.setState({ errorBody: \"Your account could not be verified.<br></br>Cannot update member.\" });\r\n                }\r\n                else if (json.result.status === 4) {\r\n                    this.setState({ errorBody: \"Your account could not be verified.<br></br>Token is invalid.\" }); \r\n                }\r\n                else if (json.result.status === 5) {\r\n                    this.setState({ errorBody: \"Your account could not be verified.<br></br>Token is expired.\" });\r\n                }\r\n                else if (json.result.status === 6) {\r\n                    this.setState({ errorBody: \"Your account could not be verified.<br></br>Complete profile is not required.\" });\r\n                }\r\n            }\r\n            else {\r\n                this.setState({ errorBody: `Your account could not be verified.<br></br>${json.errors[0]}` });\r\n            }\r\n        })\r\n    }\r\n\r\n    // Event Handlers\r\n    submitForm(e) {\r\n        e.preventDefault();\r\n\r\n        const isFormValid = formService.validate(this.form);\r\n\r\n        const firstName = this.state.requireFirstName ? e.target.firstName.value : \"\";\r\n        const middleName = e.target.middleName.value;\r\n        const lastName = this.state.requireLastName ? e.target.lastName.value : \"\";\r\n        const password = this.state.requirePassword ? e.target.password.value : \"\";\r\n        const confirm = this.state.requirePassword ? e.target.confirm.value : \"\"; \r\n\r\n        if (this.state.requirePassword && (password !== confirm)) {\r\n            formService.showInputError(this.form, \"confirm\", \"This password does not match\");\r\n            formService.hideLoadingButton(this.form);\r\n            return;\r\n        }\r\n\r\n        if(!isFormValid) return;\r\n\r\n        formService.showLoadingButton(this.form);\r\n\r\n        let completeProfileRequest = {firstName, middleName, lastName, password};\r\n        completeProfileRequest.token = this.props.match.params.token;\r\n\r\n        recaptchaService.getToken(\"completeProfile\")\r\n        .then(token => {\r\n            completeProfileRequest.recaptchaToken = token;\r\n\r\n            memberService.completeProfile(completeProfileRequest)\r\n            .then(json => {    \r\n                if (json.succeeded) {\r\n                    memberService.goToMembers();\r\n                }\r\n                else {\r\n                    formService.hideAllErrors(this.form);\r\n                    formService.hideLoadingButton(this.form);\r\n                    formService.showFormError(this.form, json.errors[0]);\r\n                }\r\n            });\r\n        });\r\n    }\r\n\r\n    // Component\r\n    render() {\r\n        const tokenValidated = memberService.completeProfileValidated;\r\n\r\n        const email = this.state.email;\r\n        const firstName = this.state.firstName ? this.state.firstName : \"\";\r\n        const middleName = this.state.middleName ? this.state.middleName : \"\";\r\n        const lastName = this.state.lastName ? this.state.lastName : \"\";\r\n\r\n        const requireFirstName = this.state.requireFirstName;\r\n        const requireLastName = this.state.requireLastName;\r\n        const requirePassword = this.state.requirePassword;\r\n\r\n        const errorBody = this.state.errorBody;\r\n\r\n        return (\r\n            <>\r\n                <Navbar activeLink=\"register\" />\r\n                <div className=\"a4-view\">\r\n                    <main className=\"a4-layout a4-auth -register\">\r\n                        {\r\n                            tokenValidated &&\r\n                            <div className=\"a4-auth-container -register\">\r\n                                <section className=\"a4-auth-item-container\">\r\n                                    <div className=\"a4-auth-item-shadow\"></div>\r\n                                    <div className=\"a4-auth-item-content\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                        <h1 className=\"a4-auth-item-title\"><span className=\"text-primary\">Complete</span> Profile</h1>\r\n                                        <form className=\"a4-auth-form\" ref={form => this.form = form} onSubmit={this.submitForm}>\r\n                                            <div className=\"a4-input\">\r\n                                                <input name=\"firstName\" required placeholder=\"First Name\" defaultValue={firstName} disabled={!requireFirstName} />\r\n                                                <label htmlFor=\"firstName\">First Name</label>\r\n                                                <span className=\"a4-input-error\">Enter your first name</span>\r\n                                                <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                                    <Error />\r\n                                                </svg>\r\n                                            </div>\r\n                                            <div className=\"a4-input\">\r\n                                                <input name=\"middleName\" placeholder=\"Middle Name\" defaultValue={middleName} />\r\n                                                <label htmlFor=\"middleName\">Middle Name (Optional)</label>\r\n                                                <span className=\"a4-input-error\"></span>\r\n                                                <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                                    <Error />\r\n                                                </svg>\r\n                                            </div>\r\n                                            <div className=\"a4-input\">\r\n                                                <input name=\"lastName\" required placeholder=\"Last Name\" defaultValue={lastName} disabled={!requireLastName} />\r\n                                                <label htmlFor=\"lastName\">Last Name</label>\r\n                                                <span className=\"a4-input-error\">Enter your last name</span>\r\n                                                <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                                    <Error />\r\n                                                </svg>\r\n                                            </div>\r\n                                            <div className=\"a4-input\">\r\n                                                <input name=\"email\" required placeholder=\"E-mail address\" value={email} disabled={true} />\r\n                                                <label htmlFor=\"email\">E-mail address</label>\r\n                                                <span className=\"a4-input-error\" ref={span => this.emailError = span}>Enter a valid e-mail address</span>\r\n                                                <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                                    <Error />\r\n                                                </svg>\r\n                                            </div>\r\n                                            {\r\n                                                requirePassword &&\r\n                                                <>\r\n                                                    <div className=\"a4-input\">\r\n                                                        <input name=\"password\" placeholder=\"Password\" required type=\"password\" />\r\n                                                        <label htmlFor=\"password\">Password</label>\r\n                                                        <span className=\"a4-input-error\">Enter a valid password</span>\r\n                                                        <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                                            <Error />\r\n                                                        </svg>\r\n                                                    </div>\r\n                                                    <div className=\"a4-input\">\r\n                                                        <input name=\"confirm\" placeholder=\"Confirm Password\" required type=\"password\" />\r\n                                                        <label htmlFor=\"password\">Confirm Password</label>\r\n                                                        <span className=\"a4-input-error\" ref={span => this.confirmError = span}>Enter a valid password</span>\r\n                                                        <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                                            <Error />\r\n                                                        </svg>\r\n                                                    </div>\r\n                                                </>\r\n                                            }\r\n                                            <p className=\"a4-form-error\"></p>\r\n                                            <section className=\"a4-auth-form-control -join\">\r\n                                                <BubbleButton className=\"a4-form-submit -primary\" type=\"submit\" formNoValidate>\r\n                                                    <b>Create Account</b>\r\n                                                </BubbleButton>\r\n                                            </section>\r\n                                        </form>\r\n                                    </div>\r\n                                </section>\r\n                                <aside className=\"a4-auth-additional\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay='100'>\r\n                                    <span>\r\n                                        Already have an account? &nbsp;\r\n                                        <Link to=\"/login\" className=\"text-primary\">Login.</Link>\r\n                                    </span>\r\n                                </aside>\r\n                            </div>\r\n                        }\r\n                        {\r\n                            !tokenValidated &&\r\n                            <div className=\"a4-auth-container\">\r\n                                <section className=\"a4-auth-item-container\">\r\n                                    <div className=\"a4-auth-item-shadow\"></div>\r\n                                    <div className=\"a4-auth-item-content confirm-email\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                        <h1 className=\"a4-auth-item-title\">Complete Profile <span className=\"text-primary\">Error</span></h1>\r\n                                        <p dangerouslySetInnerHTML={{ __html: errorBody}}></p>\r\n                                        <form className=\"a4-auth-form\" onSubmit={this.submitForm}>\r\n                                            <section className=\"a4-auth-form-control\">\r\n                                                <Link to=\"/help-and-support\">\r\n                                                    <BubbleButton className=\"-primary\" type=\"submit\" formNoValidate>\r\n                                                        <b>Get Help</b>\r\n                                                    </BubbleButton>\r\n                                                </Link>\r\n                                            </section>\r\n                                        </form>\r\n                                    </div>\r\n                                </section>\r\n                                <aside className=\"a4-auth-additional\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay='100'>\r\n                                    <span>\r\n                                        Don’t have an Account? &nbsp;\r\n                                        <Link to=\"/register\" className=\"text-primary\">Register now!</Link>\r\n                                    </span>\r\n                                </aside>\r\n                            </div>\r\n                        }\r\n                        <Footer />\r\n                    </main>\r\n                </div>\r\n            </>\r\n        )\r\n    }\r\n}\r\n\r\nexport default CompleteProfile;","import React from 'react'\r\nimport './CreateGroup.scss'\r\nimport $ from 'jquery'\r\nimport 'select2'\r\nimport gsap from 'gsap'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport BubbleButton from '../shared/BubbleButton/BubbleButton'\r\nimport { ReactComponent as Error } from '../../assets/error.svg'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\nimport formService from '../../services/FormService'\r\nimport paymentService from '../../services/PaymentService'\r\n\r\nclass CompleteGroup extends React.Component {\r\n    // Constructor\r\n    constructor(props) {\r\n        super(props);\r\n\r\n        // Refs\r\n        this.form = null;\r\n        this.groupSwitcher = null;\r\n        this.groupSwitch = null;\r\n\r\n        // This Binding\r\n        this.clickSwitch = this.clickSwitch.bind(this);\r\n        this.submitForm = this.submitForm.bind(this);\r\n    }\r\n\r\n    // Lifecyle\r\n    componentDidMount() {\r\n        window.scrollTo(0, 0);\r\n        this.setupSelects();\r\n        this.setupSwitcher();\r\n    }\r\n\r\n    componentDidUpdate() {\r\n        this.setupSelects();\r\n    }\r\n\r\n    // Helpers\r\n    setupSwitcher() {\r\n        if (this.groupSwitcher && paymentService.group) {\r\n            const userSelections = this.groupSwitcher.querySelectorAll(\".a4-complete-group-form-selection\");\r\n            \r\n            if (!paymentService.group.isAdminOnly) {\r\n                userSelections[0].classList.add(\"-active\");\r\n                this.groupSwitch.style.width = userSelections[0].offsetWidth + 5 + \"px\";\r\n                this.groupSwitch.style.left = userSelections[0].offsetLeft + \"px\";\r\n            }\r\n            else {\r\n                userSelections[1].classList.add(\"-active\");\r\n                this.groupSwitch.style.width = userSelections[1].offsetWidth + 5 + \"px\";\r\n                this.groupSwitch.style.left = userSelections[1].offsetLeft + \"px\";\r\n            }\r\n        }\r\n    }\r\n\r\n    setupSelects() {\r\n        $('.a4-select select').select2({\r\n            minimumResultsForSearch: -1,\r\n        });\r\n\r\n        $('.a4-complete-group-form-btn-group-user select, .a4-complete-group-form-btn-group-payment select').on(\"change\", (e, shouldIgnore) => {\r\n            if (!shouldIgnore) {\r\n                const selectedSwitch = $(this.groupSwitcher).find(\".a4-complete-group-form-selection\").filter(`[data-value=\"${e.currentTarget.value}\"]`)[0];\r\n\r\n                if (selectedSwitch) {\r\n                    this.setSwitchActive(selectedSwitch);\r\n                    paymentService.group.isAdminOnly = e.currentTarget.value === \"admin\";\r\n                }\r\n            }\r\n        });\r\n    }\r\n\r\n    setSwitchActive(selection) {\r\n        $(selection).siblings().removeClass(\"-active\");\r\n        selection.classList.add(\"-active\");\r\n\r\n        gsap.to(this.groupSwitch, {\r\n            width: selection.offsetWidth,\r\n            left: selection.offsetLeft,\r\n            duration: 0.2,\r\n        });\r\n    }\r\n\r\n    // Event Handlers\r\n    clickSwitch(e) {\r\n        if (!e.currentTarget.classList.contains(\"-active\")) {\r\n            this.setSwitchActive(e.currentTarget);\r\n\r\n            const select = $(e.currentTarget).parent().find(\"select\");\r\n            select.val(e.currentTarget.dataset.value);\r\n            select.trigger(\"change\", true);\r\n\r\n            paymentService.group.isAdminOnly = e.currentTarget.dataset.value === \"admin\";\r\n        }\r\n    }\r\n\r\n    submitForm(e) {\r\n        e.preventDefault();\r\n\r\n        const isFormValid = formService.validate(this.form);\r\n\r\n        const groupName = e.target.groupName.value;\r\n        const numberOfMembers = e.target.numberOfMembers.value;\r\n\r\n        const minMembers = paymentService.group.minMembers;\r\n        const maxMembers = paymentService.group.maxMembers;\r\n\r\n        if (numberOfMembers !== \"\" && numberOfMembers < minMembers) {\r\n            formService.showInputError(this.form, \"numberOfMembers\", `The number must be greater than ${minMembers}`);\r\n            formService.hideLoadingButton(this.form);\r\n            return;\r\n        }\r\n        else if (numberOfMembers !== \"\" && maxMembers && numberOfMembers > maxMembers) {\r\n            formService.showInputError(this.form, \"numberOfMembers\", `The number must be less than ${maxMembers}`);\r\n            formService.hideLoadingButton(this.form);\r\n            return;\r\n        }\r\n\r\n        if(!isFormValid) return;\r\n\r\n        formService.showLoadingButton(this.form);\r\n\r\n        paymentService.group.groupName = groupName;\r\n        paymentService.group.numberOfMembers = numberOfMembers;\r\n\r\n        paymentService.item.quantity = numberOfMembers;\r\n\r\n        this.props.history.push(\"/buy\");\r\n    }\r\n\r\n    // Component\r\n    render() {\r\n        // Go Home If No Payment Data\r\n        if (bootstrapService.data && (!paymentService.item || !paymentService.group)) {\r\n            this.props.history.push(`/pricing/group-plans`);\r\n            return null;\r\n        }\r\n\r\n        const title = paymentService.item ? `Create ${paymentService.item.title}`: \"\";\r\n        const groupName = paymentService.group ? paymentService.group.groupName : \"\";\r\n        const numberOfMembers = paymentService.group ? paymentService.group.numberOfMembers : \"\";\r\n        const minMembers = paymentService.group ? paymentService.group.minMembers : \"\";\r\n        const maxMembers = paymentService.group && paymentService.group.maxMembers ? `- ${paymentService.group.maxMembers}` : \"+\";\r\n\r\n        return (\r\n            <>\r\n                <Navbar />\r\n                <div className=\"a4-view\">\r\n                    <div className=\"a4-layout a4-complete-group\">\r\n                        <section className=\"a4-complete-group-container\">\r\n                            <div className=\"a4-complete-group-content\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                <header className=\"a4-complete-group-title\">\r\n                                    <h1>\r\n                                        {title}\r\n                                    </h1>\r\n                                </header>\r\n                                <form className=\"a4-complete-group-form\" ref={form => this.form = form} onSubmit={this.submitForm}>\r\n                                    <div className=\"a4-complete-group-form-group\">\r\n                                        <div className=\"a4-complete-group-form-group-switcher-container -user\" ref={div => this.groupSwitcher = div}>\r\n                                            <div className=\"a4-complete-group-form-btn-group a4-complete-group-form-btn-group-user\">\r\n                                                <div className=\"a4-select sm_hidden\">\r\n                                                    <select defaultValue=\"register\">\r\n                                                        <option value=\"member\">Create as Group Member</option>\r\n                                                        <option value=\"admin\">Create as Admin Only</option>\r\n                                                    </select>\r\n                                                </div>\r\n                                                <div className=\"a4-complete-group-form-selection hidden sm_block\" type=\"button\" data-value=\"member\" onClick={this.clickSwitch}>\r\n                                                    Create as Group Member\r\n                                                </div>\r\n                                                <div className=\"a4-complete-group-form-selection hidden sm_block\" type=\"button\" data-value=\"admin\" onClick={this.clickSwitch}>\r\n                                                    Create as Admin Only\r\n                                                </div>\r\n                                            </div>\r\n                                            <div className=\"a4-switcher\" ref={div => this.groupSwitch = div}></div>\r\n                                        </div>\r\n                                        <div className=\"a4-input\">\r\n                                            <input name=\"groupName\" required placeholder=\"Group Name\" defaultValue={groupName} />\r\n                                            <label htmlFor=\"name\">Group Name</label>\r\n                                            <span className=\"a4-input-error\">Enter a group name</span>\r\n                                            <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                                <Error />\r\n                                            </svg>\r\n                                        </div>\r\n                                        <div className=\"a4-input\">\r\n                                            <input name=\"numberOfMembers\" required placeholder={`Number of Members (${minMembers}${maxMembers})`} defaultValue={numberOfMembers} />\r\n                                            <label htmlFor=\"numberOfMembers\">Number of Members</label>\r\n                                            <span className=\"a4-input-error\">Enter the number of members</span>\r\n                                            <svg className=\"a4-svgsprite -error text-secondary\">\r\n                                                <Error />\r\n                                            </svg>\r\n                                        </div>\r\n                                    </div>\r\n                                    <p className=\"a4-form-error\"></p>\r\n                                    <BubbleButton className=\"a4-form-submit -primary -fixed\" type=\"submit\" formNoValidate>\r\n                                        Proceed to Registration\r\n                                    </BubbleButton>\r\n                                    <div className=\"a4-complete-group-form-terms\">\r\n                                        Your account information will be collected on the next page\r\n                                    </div>\r\n                                </form>\r\n                            </div>\r\n                        </section>\r\n                    </div>\r\n                </div>\r\n                <Footer />\r\n            </>\r\n        )\r\n    }\r\n}\r\n\r\nexport default CompleteGroup;","import React from 'react'\r\nimport './RefundPolicy.scss'\r\nimport { splitBody } from '../../utils/string'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport { ReactComponent as Letter } from '../../assets/letter.svg'\r\nimport { ReactComponent as Phone } from '../../assets/phone.svg'\r\nimport { ReactComponent as Location } from '../../assets/location.svg'\r\nimport { ReactComponent as Printer } from '../../assets/printer.svg'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\n\r\nclass RefundPolicy extends React.Component {\r\n\r\n    // Lifecycle\r\n    componentDidMount() {\r\n        window.scrollTo(0, 0);\r\n    }\r\n    \r\n    // Component\r\n    render() {\r\n        const policyData = bootstrapService.data.landing.pages.find(p => p.name === \"refund-policy\");\r\n\r\n        const header = policyData ? policyData.header : null;\r\n        const effectiveDate = policyData ? policyData.effectiveDate : null;\r\n        const body = policyData ? policyData.body : null;\r\n\r\n        const [body1, body2] = splitBody(body);\r\n\r\n        const siteData = bootstrapService.data.site;\r\n\r\n        const email = siteData.siteEmail;\r\n        const phone = siteData.sitePhone;\r\n        const address1 = siteData.siteAddress.street;\r\n        const address2 = siteData.siteAddress.city.concat(\", \", siteData.siteAddress.state, \" \", siteData.siteAddress.zip);\r\n        const fullAddress = address1.concat(\" \", address2);\r\n        const fax = siteData.siteFax;\r\n        \r\n        return (\r\n            <>\r\n                {\r\n                    policyData &&\r\n                    <>\r\n                        <Navbar />\r\n                        <div className=\"a4-view\">\r\n                            <div className=\"a4-layout a4-policy\">\r\n                                <div className=\"a4-policy-container\">\r\n                                    <div className=\"a4-policy-page-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                        <h1 className=\"title\">{header}</h1>\r\n                                    </div>\r\n                                    <div className=\"a4-policy-pre\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                        <h4 className=\"title\">Effective date: {effectiveDate}.</h4>\r\n                                        <div className=\"cols\">\r\n                                            <div className=\"column\">\r\n                                                <p><span className=\"text-primary\" dangerouslySetInnerHTML={{ __html: body1 }}></span></p>\r\n                                            </div>\r\n                                            <div className=\"column\">\r\n                                                <p><span className=\"text-primary\" dangerouslySetInnerHTML={{ __html: body2 }}></span></p>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                    <div className=\"a4-policy-contacts\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                        <ul className=\"a4-policy-contacts-list\">\r\n                                            <li className=\"a4-policy-contacts-list-item\">\r\n                                                <div className=\"a4-policy-contacts-list-item-info\">\r\n                                                    <div className=\"a4-policy-contacts-list-item-label\">Email:</div>\r\n                                                    <a href={`mailto:${email}`}>\r\n                                                        <div className=\"a4-policy-contacts-list-item-value\">{email}</div>\r\n                                                    </a>\r\n                                                </div>\r\n                                                <div className=\"a4-policy-contacts-list-item-icon\">\r\n                                                    <svg className=\"a4-svgsprite -letter text-secondary\">\r\n                                                        <Letter fill={bootstrapService.primaryColor} />\r\n                                                    </svg>\r\n                                                </div>\r\n                                            </li>\r\n                                            <li className=\"a4-policy-contacts-list-item\">\r\n                                                <div className=\"a4-policy-contacts-list-item-info\">\r\n                                                    <div className=\"a4-policy-contacts-list-item-label\">Phone:</div>\r\n                                                    <a href={`tel:${phone}`}>\r\n                                                        <div className=\"a4-policy-contacts-list-item-value\">{phone}</div>\r\n                                                    </a>\r\n                                                </div>\r\n                                                <div className=\"a4-policy-contacts-list-item-icon\">\r\n                                                    <svg className=\"a4-svgsprite -phone text-secondary\">\r\n                                                        <Phone stroke={bootstrapService.primaryColor} />\r\n                                                    </svg>\r\n                                                </div>\r\n                                            </li>\r\n                                            <li className=\"a4-policy-contacts-list-item\">\r\n                                                <div className=\"a4-policy-contacts-list-item-info\">\r\n                                                    <div className=\"a4-policy-contacts-list-item-label\">Mailing Address:</div>\r\n                                                    <a href={`http://maps.google.com/?q=${fullAddress}`} target=\"_blank\" rel=\"noreferrer\">\r\n                                                        <div className=\"a4-policy-contacts-list-item-value\">{address1}<br></br>{address2}</div>\r\n                                                    </a>\r\n                                                </div>\r\n                                                <div className=\"a4-policy-contacts-list-item-icon\">\r\n                                                    <svg className=\"a4-svgsprite -location text-secondary\">\r\n                                                        <Location stroke={bootstrapService.primaryColor} />\r\n                                                    </svg>\r\n                                                </div>\r\n                                            </li>\r\n                                            <li className=\"a4-policy-contacts-list-item\">\r\n                                                <div className=\"a4-policy-contacts-list-item-info\">\r\n                                                    <div className=\"a4-policy-contacts-list-item-label\">Fax:</div>\r\n                                                    <a href={`fax:${fax}`}>\r\n                                                        <div className=\"a4-policy-contacts-list-item-value\">{fax}</div>\r\n                                                    </a>\r\n                                                </div>\r\n                                                <div className=\"a4-policy-contacts-list-item-icon\">\r\n                                                    <svg className=\"a4-svgsprite -printer text-secondary\">\r\n                                                        <Printer stroke={bootstrapService.primaryColor} />\r\n                                                    </svg>\r\n                                                </div>\r\n                                            </li>\r\n                                        </ul>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <Footer />\r\n                        </div>\r\n                    </>\r\n                }\r\n            </>\r\n        )\r\n    }\r\n}\r\n\r\nexport default RefundPolicy;","import React from 'react'\r\nimport './ComplaintPolicy.scss'\r\nimport { splitBody } from '../../utils/string'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport { ReactComponent as Letter } from '../../assets/letter.svg'\r\nimport { ReactComponent as Phone } from '../../assets/phone.svg'\r\nimport { ReactComponent as Location } from '../../assets/location.svg'\r\nimport { ReactComponent as Printer } from '../../assets/printer.svg'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\n\r\nclass ComplaintPolicy extends React.Component {\r\n\r\n    // Lifecycle\r\n    componentDidMount() {\r\n        window.scrollTo(0, 0);\r\n    }\r\n    \r\n    // Component\r\n    render() {\r\n        const policyData = bootstrapService.data.landing.pages.find(p => p.name === \"complaint-resolution-policy\");\r\n\r\n        const header = policyData ? policyData.header : null;\r\n        const effectiveDate = policyData ? policyData.effectiveDate : null;\r\n        const body = policyData ? policyData.body : null;\r\n\r\n        const [body1, body2] = splitBody(body);\r\n\r\n        const siteData = bootstrapService.data.site;\r\n\r\n        const email = siteData.siteEmail;\r\n        const phone = siteData.sitePhone;\r\n        const address1 = siteData.siteAddress.street;\r\n        const address2 = siteData.siteAddress.city.concat(\", \", siteData.siteAddress.state, \" \", siteData.siteAddress.zip);\r\n        const fullAddress = address1.concat(\" \", address2);\r\n        const fax = siteData.siteFax;\r\n        \r\n        return (\r\n            <>\r\n                {\r\n                    policyData &&\r\n                    <>\r\n                        <Navbar />\r\n                        <div className=\"a4-view\">\r\n                            <div className=\"a4-layout a4-policy\">\r\n                                <div className=\"a4-policy-container\">\r\n                                    <div className=\"a4-policy-page-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                        <h1 className=\"title\">{header}</h1>\r\n                                    </div>\r\n                                    <div className=\"a4-policy-pre\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                        <h4 className=\"title\">Effective date: {effectiveDate}.</h4>\r\n                                        <div className=\"cols\">\r\n                                            <div className=\"column\">\r\n                                                <p><span className=\"text-primary\" dangerouslySetInnerHTML={{ __html: body1 }}></span></p>\r\n                                            </div>\r\n                                            <div className=\"column\">\r\n                                                <p><span className=\"text-primary\" dangerouslySetInnerHTML={{ __html: body2 }}></span></p>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                    <div className=\"a4-policy-contacts\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                        <ul className=\"a4-policy-contacts-list\">\r\n                                            <li className=\"a4-policy-contacts-list-item\">\r\n                                                <div className=\"a4-policy-contacts-list-item-info\">\r\n                                                    <div className=\"a4-policy-contacts-list-item-label\">Email:</div>\r\n                                                    <a href={`mailto:${email}`}>\r\n                                                        <div className=\"a4-policy-contacts-list-item-value\">{email}</div>\r\n                                                    </a>\r\n                                                </div>\r\n                                                <div className=\"a4-policy-contacts-list-item-icon\">\r\n                                                    <svg className=\"a4-svgsprite -letter text-secondary\">\r\n                                                        <Letter fill={bootstrapService.primaryColor} />\r\n                                                    </svg>\r\n                                                </div>\r\n                                            </li>\r\n                                            <li className=\"a4-policy-contacts-list-item\">\r\n                                                <div className=\"a4-policy-contacts-list-item-info\">\r\n                                                    <div className=\"a4-policy-contacts-list-item-label\">Phone:</div>\r\n                                                    <a href={`tel:${phone}`}>\r\n                                                        <div className=\"a4-policy-contacts-list-item-value\">{phone}</div>\r\n                                                    </a>\r\n                                                </div>\r\n                                                <div className=\"a4-policy-contacts-list-item-icon\">\r\n                                                    <svg className=\"a4-svgsprite -phone text-secondary\">\r\n                                                        <Phone stroke={bootstrapService.primaryColor} />\r\n                                                    </svg>\r\n                                                </div>\r\n                                            </li>\r\n                                            <li className=\"a4-policy-contacts-list-item\">\r\n                                                <div className=\"a4-policy-contacts-list-item-info\">\r\n                                                    <div className=\"a4-policy-contacts-list-item-label\">Mailing Address:</div>\r\n                                                    <a href={`http://maps.google.com/?q=${fullAddress}`} target=\"_blank\" rel=\"noreferrer\">\r\n                                                        <div className=\"a4-policy-contacts-list-item-value\">{address1}<br></br>{address2}</div>\r\n                                                    </a>\r\n                                                </div>\r\n                                                <div className=\"a4-policy-contacts-list-item-icon\">\r\n                                                    <svg className=\"a4-svgsprite -location text-secondary\">\r\n                                                        <Location stroke={bootstrapService.primaryColor} />\r\n                                                    </svg>\r\n                                                </div>\r\n                                            </li>\r\n                                            <li className=\"a4-policy-contacts-list-item\">\r\n                                                <div className=\"a4-policy-contacts-list-item-info\">\r\n                                                    <div className=\"a4-policy-contacts-list-item-label\">Fax:</div>\r\n                                                    <a href={`fax:${fax}`}>\r\n                                                        <div className=\"a4-policy-contacts-list-item-value\">{fax}</div>\r\n                                                    </a>\r\n                                                </div>\r\n                                                <div className=\"a4-policy-contacts-list-item-icon\">\r\n                                                    <svg className=\"a4-svgsprite -printer text-secondary\">\r\n                                                        <Printer stroke={bootstrapService.primaryColor} />\r\n                                                    </svg>\r\n                                                </div>\r\n                                            </li>\r\n                                        </ul>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <Footer />\r\n                        </div>\r\n                    </>\r\n                }\r\n            </>\r\n        )\r\n    }\r\n}\r\n\r\nexport default ComplaintPolicy;\r\n","import React from 'react'\r\nimport './CustomPage.scss'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Subscribe from '../shared/Subscribe/Subscribe'\r\nimport Footer from '../shared/Footer/Footer'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\n\r\nclass CustomPage extends React.Component {\r\n    // Constructor\r\n    constructor(props) {\r\n        super(props);\r\n    }\r\n\r\n    // Lifecycle\r\n    componentDidMount() {\r\n        window.scrollTo(0, 0);\r\n    }\r\n\r\n    // Component\r\n    render() {\r\n        const pages =  bootstrapService.data.landing.pages;\r\n        const page = pages.find(p => p.name === this.props.match.params.name);\r\n\r\n        if (!page) {\r\n            this.props.history.push(\"/\");\r\n            return null;\r\n        }\r\n\r\n        const header = page ? page.header : null;\r\n        const body = page ? page.body : null;\r\n\r\n        return (\r\n            <>\r\n                {\r\n                    page &&\r\n                    <>\r\n                        <Navbar />\r\n                        <div className=\"a4-view\">\r\n                            <div className=\"a4-layout a4-custom-page\">\r\n                                <div className=\"a4-custom-page-container\">\r\n                                    <div className=\"a4-custom-page-page-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                        <h1 className=\"title\">{header}</h1>\r\n                                        <div className=\"a4-custom-page-body\" dangerouslySetInnerHTML={{ __html: body }}></div>\r\n                                    </div>\r\n                                </div>\r\n                                <Subscribe />\r\n                                <Footer />\r\n                            </div>\r\n                        </div>\r\n                    </>\r\n                }\r\n            </>\r\n        )\r\n    }\r\n}\r\n\r\nexport default CustomPage;","import React from 'react'\r\nimport './Error.scss'\r\nimport { Link } from 'react-router-dom'\r\nimport { withRouter } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../Navbar/Navbar'\r\nimport Footer from '../Footer/Footer'\r\nimport BubbleButton from '../BubbleButton/BubbleButton'\r\n\r\nimport bootstrapService from '../../../services/BootstrapService'\r\n\r\nclass Error extends React.Component {\r\n    render() {\r\n        const errorCode = this.props.location.state ? this.props.location.state.code : \"404\"\r\n        const errorTitle = this.props.location.state ? this.props.location.state.title : \"Page not found\"\r\n        const errorDescription = this.props.location.state ? this.props.location.state.description : \"Looks like we can't find this page right now.<br /> You can visit our home page instead.\"\r\n        const errorImg = bootstrapService.data ? bootstrapService.data.site.errorImageUrl : \"\";\r\n\r\n        return (\r\n            <>\r\n                <Navbar ref={navbar => this.navbar = navbar} clickTry={this.clickTryForFree} />\r\n                <div className=\"a4-view\">\r\n                    <div className=\"a4-layout a4-error\">\r\n                        <div className=\"a4-error-content\">\r\n                            <div className={\"a4-error-exposition -highlighted\"}>\r\n                                <div className=\"a4-error-exposition-container\">\r\n                                    <div className=\"a4-error-exposition-content\">\r\n                                        <div className=\"a4-error-exposition-info\">\r\n                                            <h1 className=\"a4-error-exposition-code\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>{errorCode}</h1>\r\n                                            <h3 className=\"a4-error-exposition-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}><span className=\"text-primary\">{errorTitle}</span></h3>\r\n                                            <p className=\"a4-error-exposition-description\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1300\" dangerouslySetInnerHTML={{ __html: errorDescription}}></p>\r\n                                            <div className=\"a4-error-exposition-control\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1400\">\r\n                                                <Link to=\"/\">\r\n                                                    <BubbleButton className=\"-primary\">Back to home page</BubbleButton>\r\n                                                </Link>\r\n                                            </div>\r\n                                        </div>\r\n                                        <div className=\"a4-error-exposition-illustration\">\r\n                                            <img src={errorImg} data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-easing=\"ease-out-quad\" alt=\"\" />\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <Footer />\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </>\r\n        )\r\n    }\r\n}\r\n\r\nexport default withRouter(Error);","import React from 'react'\r\nimport './AppError.scss'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nclass AppError extends React.Component {\r\n    render() {\r\n        return (\r\n            <div className=\"a4-view\">\r\n                <div className=\"a4-layout a4-app-error\">\r\n                    <div className=\"a4-app-error-content\">\r\n                        <div className={\"a4-app-error-exposition -highlighted\"}>\r\n                            <div className=\"a4-app-error-exposition-container\">\r\n                                <div className=\"a4-app-error-exposition-content\">\r\n                                    <div className=\"a4-app-error-exposition-info\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n                                        <h1 className=\"a4-app-error-exposition-code\">Error</h1>\r\n                                        <h3 className=\"a4-app-error-exposition-title\"><span className=\"text-primary\">App Failed</span></h3>\r\n                                        <p className=\"a4-app-error-exposition-description\">The application failed to initialize.<br></br>Please contact customer support for assistance.<br></br>Thank you.</p>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        )\r\n    }\r\n}\r\n\r\nexport default AppError;","import React from 'react'\r\nimport { BrowserRouter as Router, Switch, Route, Redirect } from 'react-router-dom'\r\nimport AOS from 'aos'\r\nimport 'aos/dist/aos.css'\r\nimport 'select2/dist/css/select2.min.css'\r\nimport 'owl.carousel/dist/assets/owl.carousel.min.css'\r\nimport './App.scss' // must come after other css files\r\n\r\nimport Spinner from './components/shared/Spinner/Spinner'\r\nimport Home from './components/Home/Home'\r\nimport Approvals from './components/Approvals/Approvals'\r\nimport Courses from './components/Courses/Courses'\r\nimport CourseDetails from './components/CourseDetails/CourseDetails'\r\nimport Pricing from './components/Pricing/Pricing'\r\nimport Buy from './components/Buy/Buy'\r\nimport Payment from './components/Payment/Payment'\r\nimport Requirements from './components/Requirements/Requirements'\r\nimport Login from './components/Login/Login'\r\nimport Register from './components/Register/Register'\r\nimport ForgotPassword from './components/ForgotPassword/ForgotPassword'\r\nimport ResetPassword from './components/ResetPassword/ResetPassword'\r\nimport Help from './components/Help/Help'\r\nimport Faq from './components/Faq/Faq'\r\nimport PrivacyPolicy from './components/PrivacyPolicy/PrivacyPolicy'\r\nimport Terms from './components/Terms/Terms'\r\nimport AffiliatedSites from './components/AffiliatedSites/AffiliatedSites'\r\nimport ConfirmEmail from './components/ConfirmEmail/ConfirmEmail'\r\nimport CompleteProfile from './components/CompleteProfile/CompleteProfile'\r\nimport CreateGroup from './components/CreateGroup/CreateGroup'\r\nimport RefundPolicy from './components/RefundPolicy/RefundPolicy'\r\nimport ComplaintPolicy from './components/ComplaintPolicy/ComplaintPolicy'\r\nimport CustomPage from './components/CustomPage/CustomPage'\r\n\r\nimport Error from './components/shared/Error/Error'\r\nimport AppError from './components/shared/AppError/AppError'\r\n\r\nimport bootstrapService from './services/BootstrapService'\r\nimport httpService, { HttpSelector, ApiSelector } from './services/HttpService'\r\n\r\nclass App extends React.Component {\r\n  constructor(props) {\r\n    super(props);\r\n\r\n    // State\r\n    this.state = {\r\n      dataLoading: true,\r\n      dataError: false,\r\n    }\r\n\r\n    window.onerror = (msg, url, lineNo, columnNo, error) => {\r\n      httpService.reportError({\r\n        elapsedTime: 0,\r\n        message: msg,\r\n        url: url || \"Unknown URL\",\r\n        lineNo: lineNo || 0,\r\n        columnNo: columnNo || 0,\r\n        stack: error && error.stack ? `${error.stack}` : \"No stack trace\"\r\n      });\r\n    };\r\n  }\r\n\r\n  // Lifecycle\r\n  componentDidMount() {\r\n    this.setupAOS();\r\n    //httpService.selectApi({ httpSelector: HttpSelector.UseFetch, apiSelector: ApiSelector.UseApp })\r\n    httpService.selectApi()\r\n      .then(success => {\r\n        if (success) {\r\n          this.getBootstrap();\r\n        }\r\n        else {\r\n          this.setState({ dataError: true });\r\n        }\r\n      });\r\n  }\r\n\r\n  // Helpers\r\n  setupAOS() {\r\n    AOS.init({\r\n      once: true,\r\n      duration: 1200,\r\n      delay: 190,\r\n      easing: \"outexpo\",\r\n      maxDistance: 75,\r\n      anchorPlacement: \"top-bottom\",\r\n    });\r\n  }\r\n\r\n\r\n  getBootstrap() {\r\n    return bootstrapService.getBootstrap()\r\n      .then((success) => {\r\n        if (success) {\r\n          this.setState({ dataLoading: false });\r\n          return true;\r\n        }\r\n        else {\r\n          console.error('App.getBootstrap() failed');\r\n          this.setState({ dataError: true });\r\n          return false;\r\n        }\r\n      })\r\n      .catch((e) => {\r\n        console.error('App.getBootstrap() error = ', e);\r\n        this.setState({ dataError: true });\r\n      });\r\n  }\r\n\r\n\r\n  // Component\r\n  render() {\r\n    const loading = this.state.dataLoading;\r\n    const error = this.state.dataError;\r\n\r\n    return (\r\n      <>\r\n        {\r\n          loading && !error &&\r\n          <div className=\"spinner-container\">\r\n            <Spinner />\r\n          </div>\r\n        }\r\n\r\n        {\r\n          !loading && !error &&\r\n          <Router>\r\n            <Switch>\r\n              {/* Routes */}\r\n              <Route path=\"/\" exact component={Home} />\r\n              <Route path=\"/approvals\" exact component={Approvals} />\r\n              <Route path=\"/courses\" exact component={Courses} />\r\n              <Route path=\"/course/:id\" exact component={CourseDetails} />\r\n              <Route path=\"/pricing/:plan\" exact component={Pricing} />\r\n              <Route path=\"/requirements/:state\" exact component={Requirements} />\r\n              <Route path=\"/buy\" exact component={Buy} />\r\n              <Route path=\"/payment\" exact component={Payment} />\r\n              <Route path=\"/login\" exact component={Login} />\r\n              <Route path=\"/register\" exact component={Register} />\r\n              <Route path=\"/register/:group\" exact component={Register} />\r\n              <Route path=\"/forgot-password\" exact component={ForgotPassword} />\r\n              <Route path=\"/reset-password/:token\" exact component={ResetPassword} />\r\n              <Route path=\"/help-and-support\" exact component={Help} />\r\n              <Route path=\"/faq\" exact component={Faq} />\r\n              <Route path=\"/affiliated-sites\" exact component={AffiliatedSites} />\r\n              <Route path=\"/privacy-policy\" exact component={PrivacyPolicy} />\r\n              <Route path=\"/terms-and-conditions\" exact component={Terms} />\r\n              <Route path=\"/confirm-email/:token\" exact component={ConfirmEmail} />\r\n              <Route path=\"/complete-profile/:token\" exact component={CompleteProfile} />\r\n              <Route path=\"/create-group/\" exact component={CreateGroup} />\r\n              <Route path=\"/refund-policy\" exact component={RefundPolicy} />\r\n              <Route path=\"/complaint-resolution-policy\" exact component={ComplaintPolicy} />\r\n\r\n              {/* Redirects */}\r\n              <Route exact path=\"/pricing\"><Redirect to={`/pricing/${bootstrapService.defaultPlanType}`}></Redirect></Route>\r\n\r\n              {/* generic page */}\r\n              <Route path=\"/:name\" exact component={CustomPage} />\r\n\r\n              {/* Not Found */}\r\n              <Route component={Error} />\r\n            </Switch>\r\n          </Router>\r\n        }\r\n\r\n        {/* Bootstrap Error */}\r\n        {\r\n          error &&\r\n          <div className=\"error-container\">\r\n            <AppError />\r\n          </div>\r\n        }\r\n      </>\r\n    )\r\n  }\r\n}\r\n\r\nexport default App;\r\n","const reportWebVitals = onPerfEntry => {\r\n  if (onPerfEntry && onPerfEntry instanceof Function) {\r\n    import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n      getCLS(onPerfEntry);\r\n      getFID(onPerfEntry);\r\n      getFCP(onPerfEntry);\r\n      getLCP(onPerfEntry);\r\n      getTTFB(onPerfEntry);\r\n    });\r\n  }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport App from './App';\r\nimport reportWebVitals from './reportWebVitals';\r\n\r\nReactDOM.render(\r\n  <React.StrictMode>\r\n    <App />\r\n  </React.StrictMode>,\r\n  document.getElementById('root')\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"sourceRoot":""}