{"version":3,"sources":["assets/img/aq-logo.svg","assets/img/nav-ico/dark/dashboard.svg","assets/img/nav-ico/dark/campaign.svg","assets/img/nav-ico/dark/resources.svg","assets/img/nav-ico/dark/support.svg","assets/img/nav-ico/dark/logout.svg","assets/img/nav-ico/white/dashboard.svg","assets/img/nav-ico/white/campaign.svg","assets/img/nav-ico/white/resources.svg","assets/img/nav-ico/white/support.svg","assets/img/user-ico.svg","configs/page.js","configs/api.js","utils/auth.js","services/fetch.js","services/privateFetch.js","configs/atoms.js","recoil/account/auth.js","recoil/account/bankDetails.js","recoil/account/billingInfo.js","recoil/account/paymentInfo.js","recoil/account/phoneDetails.js","recoil/account/profiles.js","recoil/account/promoteChannels.js","recoil/account/regStep.js","recoil/nav/leftMenu.js","recoil/stats/campaignDateRangeID.js","recoil/stats/campaignDetail.js","recoil/stats/campaignDetailID.js","recoil/stats/campaigns.js","recoil/stats/earningSummary.js","recoil/lookup/landingPages.js","hooks/useAuthProvider.js","hooks/useFetchProvider.js","services/auth.js","hooks/useLogout.js","hooks/useAuth.js","assets/img/plus-green-circle-ico.svg","assets/img/cross-red-circle-ico.svg","components/buttons/ButtonSpinner.jsx","recoil/account/dateJoined.js","services/account.js","recoil/common/errMsg.js","hooks/useToast.js","hooks/useAccount.js","services/base.js","services/support.js","recoil/support/tickets.js","recoil/support/ticketsCriteria.js","recoil/support/ticketDetail.js","hooks/useSupport.js","services/lookup.js","utils/validations.js","components/ContactSupportForm.jsx","components/ContactSupportFormLogout.jsx","components/modals/ContactSupportPopup.jsx","components/AffiliateHeader.jsx","assets/img/rhp-logo-2019.svg","pages/T&C.jsx","components/modals/T&CPopup.jsx","components/FooterLinks.jsx","components/Footer.jsx","pages/AffiliateQuarter.jsx","utils/validationSchemas/createAccount.js","components/modals/PhoneCountryCodePopup.jsx","hooks/useLogin.js","components/modals/PhoneVerification.jsx","components/CreateAccountForm.jsx","configs/selectors.js","recoil/lookup/country.js","recoil/lookup/currency.js","utils/validationSchemas/paymentInfo.js","recoil/lookup/statsDates.js","recoil/lookup/affiliatePrograms.js","hooks/useLookup.js","components/modals/ConfirmPopup.jsx","components/PaymentInfoForm.jsx","utils/validationSchemas/billingInfo.js","components/BillingInfoForm.jsx","hooks/useRegSteps.js","pages/AffiliateReg.jsx","components/LoginHeader.jsx","assets/img/aq-logo-black.png","pages/Login.jsx","pages/Logout.jsx","pages/ForgotPassword.jsx","pages/ResetPassword.jsx","hooks/useLeftMenu.js","navigations/leftMenu.jsx","hooks/useFullRegOnly.js","layouts/LoggedInLayout.jsx","utils/validationSchemas/editProfile.js","components/modals/PasswordUpdate.jsx","components/modals/PhoneNumberUpdatePopup.jsx","components/EditProfileForm.jsx","pages/Account.jsx","services/stats.js","services/campaign.js","hooks/useCampaigns.js","configs/constants.js","assets/img/plus-circle-ico.svg","assets/img/hand-ico-white.svg","assets/img/user-ico-white.svg","assets/img/number-ico-white.svg","utils/formatter.js","components/Stats.jsx","components/CampaignList.jsx","assets/img/dashboard-empty.svg","assets/img/next-arrow-circle-ico-green.svg","pages/Dashboard.jsx","pages/Campaigns.jsx","assets/img/tick-circle-green.svg","pages/AddCompaign.jsx","pages/CampaignDetails.jsx","assets/banners.js","pages/Resources.jsx","assets/img/camera-ico.svg","assets/img/send-ico.svg","components/TicketReplyForm.jsx","components/modals/TicketMessagePopup.jsx","components/modals/ImageFullViewPopup.jsx","components/TicketDetail.jsx","components/modals/TicketDetailPopup.jsx","components/TicketList.jsx","components/modals/TicketListPopup.jsx","pages/Support.jsx","layouts/LoggedInPlainLayout.jsx","pages/mobileView/ContactSupport.jsx","pages/mobileView/TicketList.jsx","pages/mobileView/TicketDetail.jsx","pages/mobileView/TicketReply.jsx","pages/TotalEarning.jsx","hooks/useIsMountedRef.js","utils/optionsProvider.js","navigations/pageNav.jsx","navigations/mainNav.jsx","App.js","reportWebVitals.js","index.js"],"names":["PAGE_NAV","HOME","JOIN","LOGIN","FORGOT_PWD","RESET_PWD","ACCOUNT","DASHBOARD","CAMPAIGNS","CAMPAIGN_ADD","RESOURCES","SUPPORT","LOGOUT","CONTACTSUPPORT","TICKETLIST","TICKETDETAIL","TICKETMESSAGE","TC","TOTALEARNING","MENUS","value","text","icon","userIco","selectedIcon","positions","DashboardDarkIco","DashboardWhiteIco","CampaignDarkIco","CampaignWhiteIco","ResourcesDarkIco","ResourcesWhiteIco","SupportDarktIco","SupportWhiteIco","LogoutDarkIco","JOIN_STEP","ACCESSTOKEN_KEY","REFRESHTOKEN_KEY","API_HOST","AuthenticationUtil","tokens","localStorage","setItem","authSettings","BearerToken","RefreshToken","err","sessionStorage","token","removeItem","this","getRefreshToken","publicFetch","axios","create","baseURL","customFetch","defaults","headers","common","auth","getCustomToken","privateFetch","Accept","Keys","Lookup","Country","Currency","StatDates","LandingPages","AffiliatePrograms","Account","Auth","AccountDetails","Profiles","PhoneDetails","PaymentInfo","BankDetails","BillingInfo","PromoteChannels","RegStep","Nav","LeftMenu","Statistic","Campaigns","CampaignDateRangeID","EarningsSummary","CampaignDetails","CampaignDetailsID","Common","ErrPopup","Support","TicketList","TicketListSearchCriteria","TicketDetails","initValue","isAuthenticated","getItem","isLoggedIn","accountLoaded","redirToLogout","isRefreshTokenExpired","atom","key","keys","default","bankDetailsAtom","BankName","AccountName","AccountNumber","BSBNumber","SwiftCode","IBAN","CountryID","billingInfoAtom","BillingName","Address","Address2","City","StateID","ABN","GST","initState","AffiliatePaymentTypeID","Paypal","PaymentID","bankAccountAtom","ProgramID","paymentInfoAtom","atomKeys","phoneDetailsAtom","PhoneNumber","PhoneCountryCode","PhoneAlpha2Code","PhoneVerified","profilesAtom","Name","Email","promoteChannelsAtom","PromoteWebsite","PromoteInstagram","PromoteTikTok","PromoteYoutube","PromoteFacebook","PromoteOnlyFans","PromoteOther","regStepAtom","first","leftMenuAtom","campaignDateRangeIDAtom","campaignDetailsAtom","akeys","campaignDetailsIDAtom","campaignsAtom","earningSummaryAtom","lookupLandingPagesAtom","useAuthProvider","useRecoilState","authAtom","authState","setAuthState","resetAuth","useResetRecoilState","resetBankDetailsAtom","resetBillingInfoAtom","resetPaymentInfoAtom","resetPhoneDetailsAtom","resetProfilesAtom","resetPromoteChannelsAtom","resetRegStepAtom","resetLeftMenuAtom","resetCampaignDateRangeIDAtom","resetEarningSummaryAtom","resetCampaignsAtom","resetCampaignDetailsAtom","resetCampaignDetailsIDAtom","resetLookupLandingPagesAtom","clearTokens","getNewAccessToken","failedRequest","a","post","data","response","config","AccessToken","Promise","resolve","reject","Error","getBearerToken","setAuthTokens","useFetchProvider","authProvider","interceptors","request","use","Authorization","createAuthRefreshInterceptor","AuthService","fetch","login","credentials","logout","useLogout","service","useService","then","useAuth","useRecoilValue","ButtonWithSpinner","props","isLoading","rest","type","disabled","color","loading","css","size","dateJoined","AccountService","getAccount","get","createAccount","updateProfileDetails","patch","updatePhone","validatePhone","updatePaymentInfoDetails","updateBillingInfoDetails","updatePassword","requestEmailPasswordReset","submitPasswordReset","validatePasswordResetToken","requestTextPasswordReset","validateTextPasswordResetCode","requestValidationCode","verfifyPhoneValidationCode","errMsgAtom","msg","isShow","useToast","setAuth","useSetRecoilState","setErrMsg","displayErrorMessage","String","toLowerCase","indexOf","prevState","error","defaultErrorMessage","ResponseStatus","Message","success","window","alert","displaySuccessMessage","useAccount","toast","accService","dateJoinedAtom","setDateJoined","profiles","setProfiles","phones","setPhones","paymentInfo","setPaymentInfo","bankDetails","setBankDetails","billingInfo","setBillingInfo","promoteChannels","setPromoteChannels","DateJoined","ProfileDetails","PaymentInfoDetails","BillingInfoDetails","catch","useRecoilCallback","set","code","VerificationCode","verifyPhone","requestPhoneCode","updatePaymentInfo","updateBillingInfo","updatePhoneDetails","phoneDetail","axiosApiInstance","getRefreshTokenUrl","getRefreshTokenBody","tokenRefreshResponse","storeBearerToken","axiosRetry","retries","defaultHeaders","apiRequest","action","url","method","dataOrParams","includes","theData","accessToken","getAccessToken","SupportService","ApiRequest","TicketRef","ticketListAtom","List","Total","NotCheckedCount","ticketListCriteriaAtom","Size","Page","CategoryID","IsLoaded","ticketDetailsAtom","TicketStarter","Responses","Attachments","useSupport","ticketList","setTicketList","ticketListLoadable","useRecoilValueLoadable","ticketListCriteria","ticketDetailLoadable","setTicketDetail","fetchTickets","criteria","current","getTicketList","newCriteria","Data","currentRefs","map","itm","filtered","filter","newList","fetchTicketDetail","ticketRef","currentList","getTicketDetail","cloneDeep","idx","findIndex","newItm","find","NewCount","newListAtomVal","uploadAttachment","addNewTicket","createTicket","prev","addTicketReply","createTicketReply","LookupService","name","countryID","ValidationsUtil","Yup","required","min","max","matches","test","match","lookupService","getLookupAvailability","IsAvailable","email","isEmail","pwdRef","oneOf","ContactSupport","history","useHistory","accountProvider","supportProvider","validationSchema","shape","subject","trim","description","notUniqueEmail","useForm","defaultValues","resolver","yupResolver","handleSubmit","errors","formState","register","setValue","isOpenInPopup","onBackClicked","goBack","postProcFunc","onClose","useState","isSubmitting","setIsSubmitting","isUploading","setIsUploading","attachments","setAttachments","useEffect","handleUpload","event","file","target","files","imageCompression","maxSizeMB","maxWidthOrHeight","compressedFile","FormData","append","File","onSubmitHandler","frmData","e","preventDefault","submittedData","EmailAddress","SuppliedUsername","Subject","Enquiry","SiteCountryID","UserAgent","IPAddress","att","FileID","className","onSubmit","href","onClick","title","faChevronLeft","classNames","message","htmlFor","id","maxLength","placeholder","onChange","length","i","style","backgroundImage","AttachmentUrl","src","alt","atts","handleRemoveAttachment","crossRedCircle","plusGreenCircle","ContactSupportLogout","isSubmitted","setIsSubmitted","isSuccessSubmitted","setIsSuccessSubmitted","handleCloseBtn","faCheckCircle","faExclamationTriangle","ContactSupportPopup","open","close","loggedin","overlay","modal","showCloseIcon","center","AffiliateHeader","logoutProvider","mobileNavOn","setMobileNavOn","showContactSupportPopup","setShowContactSupportPopup","to","aqLogo","faBars","stopPropagation","faTimes","push","onLogoutClicked","variant","TCPopup","FooterLinks","showTCPopup","setShowTCPopup","Footer","AffiliateQuarter","rhpLogo","affiliateName","valUtils","password","confirmPassword","phoneCountryCode","notRequired","nullable","allCountries","phoneNumber","excludeEmptyString","val","parent","iso2","dialCode","isValidPhoneNumber","toUpperCase","showWebsite","website","when","is","show","otherwise","showInstagram","instagram","showTiktok","tiktok","showYoutube","youtube","showFacebook","facebook","showOnlyfans","onlyfans","showOther","other","PhoneCountryCodePopup","setCountryCode","defaultValue","refs","reduce","acc","createRef","handleScrollTo","useCallback","scrollIntoView","behavior","block","selCountry","setTimeout","item","ref","useLogin","handleLoginResponse","isRegister","MobileVerify","onPhoneVerificationClicked","postProcessFunc","onRequestResendCode","setCode","onGetCodeClicked","finally","onValidateCodeClicked","resp","closeOnOverlayClick","closeOnEsc","onKeyDown","keyCode","RegStepOne","postCreateAccountFunc","handlers","useRef","loginProvider","mode","watch","getValues","watchShowWebsite","watchShowInstagram","watchShowTiktok","watchShowYoutube","watchShowFacebook","watchShowOnlyfans","watchShowOther","phoneVerifyOpen","setPhoneVerifyOpen","phoneVerificationResult","setPhoneVerificationResult","countryCodeOpen","setCountryCodeOpen","pcc","onPhoneRequestResendCode","phoneCountry","result","dispatchEvent","Event","cancelable","bubbles","processCreateAccount","phoneDetails","Password","UserName","readOnly","autoComplete","lookupCountrySelector","selector","selectorKeys","getLookupCountry","lookupCountryAtom","lookupCurrencyAtom","paymentType","paypal","payment","payID","parseInt","programID","currency","bankName","accountName","accountNumber","bsb","iban","swiftCode","lookupStatsDatesAtom","lookupAffiliateProgramsAtom","useLookup","statDates","landingPages","affiliatePrograms","isFetchingPrograms","setIsFetchingPrograms","mountedRef","getLandingPages","getLookupLandingPages","getDateRange","getLookup","getPrograms","ConfirmPopup","confirm","heading","sub","children","btnText","RegStepTwo","display","clx","saveText","showHeading","postUpdatePaymentInfo","countryList","setCountryList","countryListLoadable","topCountries","currencyList","countryListState","state","countryListContent","contents","p","ItemID","watchPaymentType","wacthCountryID","afPrgmComfirmPopup","setAfPrgmComfirmPopup","ItemName","faInfoCircle","program","sort","b","country","billingName","address","address2","city","stateID","abn","isValidABN","gst","RegStepThree","showBackButton","postUpdateBillingInfo","onBackButtonClicked","stateList","setStateList","BankCountryID","populateStateList","cid","getLookupState","ItemnName","useRegSteps","currentStep","setCurrentStep","isLoggedInAuth","isFetching","setIsFetching","isLoaded","setIsLoaded","AffiliateReg","CreateAccountForm","postPhoneVerificationFunc","LoginHeader","Login","formOptions","faFacebookF","faTwitter","Logout","loggedOut","setLoggedOut","ForgotPassword","emailForm","phoneForm","tabIndex","setTabIndex","emailSubmitted","setEmailSubmitted","phoneSubmitted","setPhoneSubmitted","setPhoneDetail","affList","setAffList","emailFormSubmitHandler","onRequestSendPasswordResetTxtMsgCode","detail","phoneFormSubmitHandler","on","aff","Guid","Username","verifyFunc","ResetPassword","params","showExpired","setShowExpired","showForm","setShowForm","NewPassword","displayExpiredTokenMessage","Result","useLeftMenu","LeftNav","leftMenu","setLeftMenu","menu","onMenuClicked","useFullRegOnly","content","position","top","left","LoggedInDisplay","pageTitle","accNavOn","setAccNavOn","setDateSelDropdownOn","faUser","faCaretUp","faCaretDown","LoggedInLayout","PasswordUpdate","UpdateMobileNumber","delConfirmPopup","setDelConfirmPopup","processUpdatePhoneNumber","removePhoneNumber","EditProfileForm","showPasswordUpdate","setShowPasswordUpdate","showPhoneUpdate","setShowPhoneUpdate","accOneOpen","setAccOneOpen","accTwoOpen","setAccTwoOpen","accThreeOpen","setAccThreeOpen","faMinus","faPlus","PaymentInfoForm","BillingInfoForm","StatsService","getCampaigns","getCampaign","DateRangeItemID","getTotalEarnings","getEarnings","getCampaignDetails","CampaignID","CampaignService","createCampaign","hideCampaign","useCampaigns","campaignService","useCampaignService","statsService","useStatsService","campaignsSummaryLoadable","setCampaignsSummary","dateRangeID","setDateRangeID","campaignDetailID","setCampaignDetailID","campaignDetailLoadable","campaignListState","campaignListContent","fetchCampaigns","fetchCampaign","campaignID","dateID","StatsSummaries","dt","CampaignDetail","addNewCampaign","Stats","Traffic","Joins","Upgrades","Revenue","isFetchingCampaigns","setIsFetchingCampaigns","deleteCampaign","s","currencyFormatter","Intl","NumberFormat","minimumFractionDigits","currencyFormatterNoDigit","maximumFractionDigits","numberFormatter","selectedDate","dateSelDropdownOn","updateSelDate","campaignNames","selectedCampaign","campaignSelDropdownOn","setCampaignSelDropdownOn","updateSelCampaign","traffic","joins","upgrades","faChevronDown","campaign","Title","date","formatter","format","handIco","usrIco","numberIco","CampaignList","lookupProvider","campaignProvider","campaignList","setCampaignList","setSelectedDate","selDate","selCampaign","setSelCampaign","onDelConfirmPopupClosed","onDelIconClicked","camp","curr","circlePlusIco","c","Math","round","faTrashAlt","AffiliateDashboard","earningsSummaryLoadable","earningsSummaryState","earningsSummaryContent","fetchEarningSummary","isFetchingEarnings","setIsFetchingEarnings","EmptyStateGraphic","arrowIco","OutstandingBalance","toFixed","substring","moment","startOf","add","TotalEarned","AddCompaign","fetchingLandingPages","setFetchingLandingPages","addConfirmPopup","setAddConfirmPopup","newID","setNewID","landingPage","LandingPage","onSuccessPopupClose","page","textAlign","tickCircleGreen","useParams","campaignDetailState","campaignDetailContent","ddlSelCampaign","setDdlSelCampaign","setSelectedCampaign","isFetchingCampaign","setIsFetchingCampaign","isNaN","setCampaignNames","setTraffic","join","setJoin","sales","setSales","copyLink","updateSelectedCampaign","select","document","execCommand","Date","colspan","padding","dating","swingers","Resources","banner","rel","faFolderOpen","TicketMessagePopup","ImageFullViewPopup","imgURL","TicketDetail","el","ticketDetailState","ticketDetailContent","ticketDetail","dtloop","replace","showTicketMessagePopup","setShowTicketMessagePopup","showImageFullViewPopup","setImageFullViewPopup","attachment","setAttachment","DateCreated","j","isDisplayDate","adminReply","AdminID","float","clear","cameraIco","sendIco","TicketDetailPopup","ticketListState","ticketListContent","ticketListDisplay","setTicketListDisplay","showTicketDetailPopup","setShowTicketDetailPopup","displayRef","setDisplayRef","handleTicketListClick","Status","width","height","TicketListPopup","showTicketListPopup","setShowTicketListPopup","faChevronRight","postCreateNewTicket","showBackBtn","TicketListPage","TicketReply","TotalEarning","isMountedRef","isMounted","useIsMountedRef","services","useStatService","curYear","year","yearOptions","getMaxYears","joinedYear","maxYear","minYear","endYear","years","generateEarningsYearOptions","earnings","setEarnings","selectedYear","setSelectedYear","Year","newEarnings","console","updateSelYear","colSpan","PrivateRoute","Component","component","render","LogoutOnlyRoute","PageNav","path","exact","Home","Dashboard","ContactSupportMobileView","TicketMessage","MainNav","PageViews","App","errMsg","resetErrMsg","closeErrMsg","fontSize","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","StrictMode","getElementById"],"mappings":"sQAAe,MAA0B,oCCA1B,MAA0B,sCCA1B,MAA0B,qCCA1B,MAA0B,sCCA1B,MAA0B,oCCA1B,MAA0B,mCCA1B,MAA0B,sCCA1B,MAA0B,qCCA1B,MAA0B,sCCA1B,MAA0B,oCCA1B,MAA0B,qCCa5BA,EAAW,CACpBC,KAAM,IACNC,KAAO,QACPC,MAAQ,SACRC,WAAY,mBACZC,UAAW,kBACXC,QAAS,WACTC,UAAW,aACXC,UAAW,aACXC,aAAc,iBAEdC,UAAW,aACXC,QAAS,WACTC,OAAQ,UACRC,eAAgB,mBAChBC,WAAY,kBACZC,aAAc,gBACdC,cAAe,iBACfC,GAAI,OACJC,aAAc,iBAGLC,EAAQ,CACjB,CAACC,MAAO,UAAWC,KAAM,aAAcC,KAAMC,EAASC,aAAcD,EAASE,UAAU,CAAC,YACxF,CAACL,MAAO,YAAaC,KAAM,YAAaC,KAAMI,EAAkBF,aAAcG,EAAmBF,UAAU,CAAC,SAC5G,CAACL,MAAO,YAAaC,KAAM,YAAaC,KAAMM,EAAiBJ,aAAcK,EAAkBJ,UAAU,CAAC,SAE1G,CAACL,MAAO,YAAaC,KAAM,YAAaC,KAAMQ,EAAkBN,aAAcO,EAAmBN,UAAU,CAAC,SAC5G,CAACL,MAAO,UAAWC,KAAM,UAAWC,KAAMU,EAAiBR,aAAcS,EAAiBR,UAAU,CAAC,OAAQ,YAC7G,CAACL,MAAO,SAAUC,KAAM,UAAWC,KAAMY,EAAeV,aAAcU,EAAeT,UAAU,CAAC,OAAQ,aAG/FU,EACO,EADPA,EAEY,EAFZA,EAGK,EAHLA,EAIK,EAJLA,EAKJ,G,wCClDIC,EAAkB,MAClBC,EAAmB,UACnBC,EAGK,uC,gBCkFHC,E,gGAnFb,SAAmBC,GAEjB,IACEC,aAAaC,QAAQC,EAA8BH,EAAOI,aAC1DH,aAAaC,QAAQC,EAA+BH,EAAOK,cAE7D,MAAOC,GACLC,eAAeL,QAAQC,EAA8BH,EAAOI,aAC5DG,eAAeL,QAAQC,EAA+BH,EAAOK,iB,8BAIjE,SAAwBG,GACtB,IACEP,aAAaC,QAAQC,EAA8BK,GAGrD,MAAMF,GACJC,eAAeL,QAAQC,EAA8BK,M,+BAIzD,SAAyBA,GACvB,IACEP,aAAaC,QAAQC,EAA+BK,GAEtD,MAAOF,GACLC,eAAeL,QAAQC,EAA+BK,M,wBAI1D,WACE,QAA0D,cAA/CP,aAAY,QAEjBA,aAAY,OAIsC,cAAjDM,eAAc,QAEfA,eAAc,M,yBAKtB,WACEA,eAAeE,WAAWN,GAC1BI,eAAeE,WAAWN,GAC1BF,aAAaQ,WAAWN,GACxBF,aAAaQ,WAAWN,K,6BAG1B,WACE,OAAOI,eAAc,QACnBA,eAAc,QACbN,aAAY,QACZA,aAAY,QACZ,K,4BAGL,WACE,OAAOM,eAAc,IACXA,eAAc,IACbN,aAAY,IACXA,aAAY,IACZ,K,gCAGd,WACI,MAAM,GAAN,OAAUE,EAAV,mB,iCAGJ,WACI,MAAO,CACHE,aAAeK,KAAKC,qB,4BAI5B,WACG,MAAO,2C,KC/ENC,EAAcC,IAAMC,OAAO,CAC7BC,QAASjB,IAGPkB,EAAcH,IAAMC,OAAO,CAC7BC,QAASjB,IAGbkB,EAAYC,SAASC,QAAQC,OAA7B,wBAA0DC,EAAKC,kBCT/D,IAUeC,EALMT,IAAMC,OAAO,CAC9BC,QAASjB,EACToB,QAAQ,eAPW,CACnBK,OAAQ,mBACR,eAAgB,uB,iBCoCLC,EAzCF,CACTC,OAAU,CACNC,QAAS,qBACTC,SAAW,qBACXC,UAAW,sBACXC,aAAc,yBACdC,kBAAoB,+BAExBC,QAAU,CACNC,KAAM,iBACNC,eAAgB,qBAChBC,SAAU,sBACVC,aAAc,0BACdC,YAAa,yBACbC,YAAa,yBACbC,YAAa,yBACbC,gBAAiB,6BACjBC,QAAS,sBAGbC,IAAK,CACDC,SAAU,mBAEdC,UAAY,CACRC,UAAW,yBACXC,oBAAsB,mCACtBC,gBAAkB,+BAClBC,gBAAiB,+BACjBC,kBAAmB,kCAGvBC,OAAS,CACLC,SAAU,sBAEdC,QAAU,CACNC,WAAY,wBACZC,yBAA2B,sCAC3BC,cAAe,6BCjCjBC,EAAY,CACdC,mBAAiBvD,aAAawD,QAAQ5D,KAAqBI,aAAawD,QAAQ7D,IAChF8D,YAAY,EACZC,eAAe,EACfC,eAAe,EACfC,uBAAuB,GAQZzC,EALF0C,YAAM,CACfC,IAAKC,EAAKjC,QAAQC,KAClBiC,QAASV,ICKEW,EALSJ,YAAM,CAC1BC,IAAKC,EAAKjC,QAAQM,YAClB4B,QAbc,CACdE,SAAW,GACXC,YAAc,GACdC,cAAgB,GAChBC,UAAY,GACZC,UAAY,GACZC,KAAO,GACP7C,SAAW,MACX8C,UAAW,KCQAC,EALSZ,YAAM,CAC1BC,IAAKC,EAAKjC,QAAQO,YAClB2B,QAbc,CACdU,YAAa,GACbC,QAAS,GACTC,SAAU,GACVC,KAAM,GACNC,SAAU,EACVN,WAAY,EACZO,IAAK,GACLC,KAAK,KCPHC,GAAY,CACdC,uBAAyB,SACzBC,OAAS,GACTC,UAAW,GACXhD,YAAaiD,EACbC,WAAY,GAQDC,GALS1B,YAAK,CACzBC,IAAK0B,EAAS1D,QAAQK,YACtB6B,QAASiB,KCCEQ,GALU5B,YAAK,CAC1BC,IAAK0B,EAAS1D,QAAQI,aACtB8B,QATc,CACd0B,YAAa,GACbC,iBAAkB,GAClBC,gBAAiB,GACjBC,eAAe,KCMJC,GALMjC,YAAK,CACtBC,IAAK0B,EAAS1D,QAAQG,SACtB+B,QAPc,CACd+B,KAAM,GACNC,MAAO,MCaIC,GALapC,YAAM,CAC9BC,IAAKC,EAAKjC,QAAQQ,gBAClB0B,QAZc,CACdkC,eAAiB,GACjBC,iBAAmB,GACnBC,cAAgB,GAChBC,eAAiB,GACjBC,gBAAkB,GAClBC,gBAAkB,GAClBC,aAAe,MCDJC,GALK5C,YAAM,CACtBC,IAAKC,EAAKjC,QAAQS,QAClByB,QAAStE,ICFNgH,GAAP,YAAgBhI,EAAhB,MAOeiI,GALM9C,YAAM,CACvBC,IAAKC,EAAKvB,IAAIC,SACduB,QAAS0C,KCAEE,GALiB/C,YAAM,CAClCC,IAAKC,EAAKrB,UAAUE,oBACpBoB,QAAS,ICGE6C,GALahD,YAAM,CAC9BC,IAAKgD,EAAMpE,UAAUI,gBACrBkB,QAAQ,OCGG+C,GALelD,YAAM,CAChCC,IAAKgD,EAAMpE,UAAUK,kBACrBiB,SAAS,ICwBEgD,GAXOnD,YAAM,CACxBC,IAAKgD,EAAMpE,UAAUC,UACrBqB,QAAQ,OCZGiD,GALYpD,YAAM,CAC7BC,IAAK0B,EAAS9C,UAAUG,gBACxBmB,QAAS,OCGEkD,GALgBrD,YAAM,CACjCC,IAAKC,EAAKvC,OAAOI,aACjBoC,QAAS,KCyHEmD,GAnGS,WACpB,MAAkCC,YAAeC,GAAjD,mBAAOC,EAAP,KAAkBC,EAAlB,KACMC,EAAYC,YAAoBJ,GAChCK,EAAuBD,YAAoBxD,GAC3C0D,EAAuBF,YAAoBhD,GAC3CmD,EAAuBH,YAAoBlC,IAC3CsC,EAAwBJ,YAAoBhC,IAC5CqC,EAAoBL,YAAoB3B,IACxCiC,EAA2BN,YAAoBxB,IAC/C+B,EAAmBP,YAAoBhB,IACvCwB,EAAoBR,YAAoBd,IACxCuB,EAA+BT,YAAoBb,IACnDuB,EAA0BV,YAAoBR,IAC9CmB,EAAqBX,YAAoBT,IACzCqB,EAA2BZ,YAAoBZ,IAC/CyB,EAA6Bb,YAAoBV,IACjDwB,EAA8Bd,YAAoBP,IAElDsB,EAAc,WAChBxI,aAAaQ,WAAWb,GACxBK,aAAaQ,WAAWZ,GAIxB4H,IACAE,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAhB,EAAa,2BAAID,GAAL,IAAgB/D,iBAAiB,EAAOG,eAAc,MAsBhE+E,EAAiB,uCAAG,WAAMC,GAAN,iBAAAC,EAAA,+EAEKhI,EAAYiI,KAC/B,gBACA,CAACxI,aAjBFJ,aAAawD,QAAQ5D,KAaN,uBAEViJ,EAFU,EAEVA,KAKRH,EAAcI,SAASC,OAAO9H,QAA9B,+BAEc4H,EAAKG,aAEnBhJ,aAAaC,QAAQN,EAAiBkJ,EAAKG,aAXzB,kBAaXC,QAAQC,WAbG,yCAiBlBV,IAjBkB,kBAoBXS,QAAQE,OAAO,IAAIC,MAAM,yCApBd,0DAAH,sDA6BvB,OAAO,2BACA9B,GADP,IAEIkB,cACAa,eAlDmB,WACnB,OAAOrJ,aAAawD,QAAQ7D,IAkD5B8I,oBACAa,cA5CkB,SAAC,GAAiC,IAAhCnJ,EAA+B,EAA/BA,YAAaC,EAAkB,EAAlBA,aAEjCJ,aAAaC,QAAQN,EAAiBQ,GACtCH,aAAaC,QAAQL,EAAkBQ,GAGvCmH,EAAa,2BAAID,GAAL,IAAgB/D,iBAAiB,SCxDtCgG,GAxBU,WAAiB,IAAhBtI,EAAe,uDAAP,GACxBuI,EAAerC,KAkBrB,OAhBA9F,EAAaJ,QAAb,2BAA4BI,EAAaJ,SAAYA,GACrDI,EAAaoI,aAAaC,QAAQC,KAC9B,SAAAZ,GAEI,OADAA,EAAO9H,QAAQ2I,cAAf,iBAAyCJ,EAAaH,kBAC/CN,KAOfc,IACIxI,EACAmI,EAAaf,mBAIbpH,GCdOyI,GAPM,WACjB,IAAMC,EAAQR,KACRS,EAAK,uCAAG,WAAOC,GAAP,SAAAtB,EAAA,sEAA4BhI,EAAYiI,KAAZ,oBAAsCqB,GAAlE,mFAAH,sDACLC,EAAM,uCAAG,sBAAAvB,EAAA,sEAAiBoB,EAAMnB,KAAN,gBAAjB,mFAAH,qDACZ,MAAO,CAAEoB,QAAOE,WCOLC,GAVE,WACb,IAAMC,EAAUC,KACVb,EAAerC,KACf+C,EAAM,uCAAG,sBAAAvB,EAAA,+EACJyB,EAAQF,SACdI,MAAK,kBAAId,EAAahB,kBAFZ,2CAAH,qDAIZ,OAAO0B,GCGIK,GAXA,WACX,IAAMjD,EAAYkD,YAAenD,GAC1B9D,EAAiD+D,EAAjD/D,gBACP,MAAO,CACHA,kBACAE,WAAYF,EACZG,cAJoD4D,EAAhC5D,cAKpBC,cALoD2D,EAAjB3D,gB,4CCL5B,OAA0B,kDCA1B,OAA0B,iD,8ECc1B8G,GAZW,SAACC,GACvB,IAAO9L,EAA4B8L,EAA5B9L,KAAM+L,EAAsBD,EAAtBC,UAAcC,EAA3B,YAAmCF,EAAnC,IACA,OACI,kDAAQG,KAAK,UAAaD,GAA1B,IAAgCE,SAAUH,EAA1C,UACI,eAAC,KAAD,CACII,MAAM,UAAUC,QAASL,EACzBM,IAAK,gEACLC,KAAM,MAJd,IAIuBtM,O,SCFhBuM,GALItH,YAAM,CACrBC,IAAK,wBACLE,QAAS,OCqCEoH,GAtCQ,WACnB,IAAMrB,EAAQR,KAER8B,EAAU,uCAAG,sBAAA1C,EAAA,sEAAiBoB,EAAMuB,IAAN,aAAjB,mFAAH,qDACVC,EAAa,uCAAG,WAAM1C,GAAN,SAAAF,EAAA,sEAAqBhI,EAAYiI,KAAZ,WAA6BC,GAAlD,mFAAH,sDACb2C,EAAoB,uCAAE,WAAM3C,GAAN,SAAAF,EAAA,sEAAqBoB,EAAM0B,MAAN,0BAAuC5C,GAA5D,mFAAF,sDACpB6C,EAAW,uCAAG,WAAM7C,GAAN,SAAAF,EAAA,sEAAoBoB,EAAM0B,MAAN,iBAA8B5C,GAAlD,mFAAH,sDACX8C,EAAa,uCAAG,WAAM9C,GAAN,SAAAF,EAAA,sEAAqBoB,EAAMnB,KAAN,iBAA6BC,GAAlD,mFAAH,sDACb+C,EAAwB,uCAAG,WAAM/C,GAAN,SAAAF,EAAA,sEAAqBoB,EAAMnB,KAAN,8BAA0CC,GAA/D,mFAAH,sDACxBgD,EAAwB,uCAAG,WAAOhD,GAAP,SAAAF,EAAA,+EAAgBoB,EAAMnB,KAAN,8BAAyCC,IAAzD,2CAAH,sDACxBiD,EAAc,uCAAG,WAAMjD,GAAN,SAAAF,EAAA,sEAAqBoB,EAAM0B,MAAN,oBAAiC5C,GAAtD,mFAAH,sDACdkD,EAAyB,uCAAE,WAAMlD,GAAN,SAAAF,EAAA,sEAAqB5H,EAAY6H,KAAZ,oCAAsDC,GAA3E,mFAAF,sDACzBmD,EAAmB,uCAAG,WAAMnD,GAAN,SAAAF,EAAA,sEAAoB5H,EAAY0K,MAAZ,8BAAiD5C,GAArE,mFAAH,sDACnBoD,EAA0B,uCAAG,WAAMpD,GAAN,SAAAF,EAAA,sEAAoB5H,EAAY6H,KAAZ,oCAAsDC,GAA1E,mFAAH,sDAC1BqD,EAAwB,uCAAG,WAAMrD,GAAN,SAAAF,EAAA,sEAAoB5H,EAAY6H,KAAZ,6CAA+DC,GAAnF,mFAAH,sDACxBsD,EAA6B,uCAAG,WAAMtD,GAAN,SAAAF,EAAA,sEAAoB5H,EAAY6H,KAAZ,iDAAmEC,GAAvF,mFAAH,sDAC7BuD,EAAqB,uCAAG,WAAMvD,GAAN,SAAAF,EAAA,sEAAoB5H,EAAY6H,KAAZ,sBAAwCC,GAA5D,mFAAH,sDACrBwD,EAA0B,uCAAG,WAAMxD,GAAN,SAAAF,EAAA,sEAAoB5H,EAAY6H,KAAZ,wBAA0CC,GAA9D,mFAAH,sDAEhC,MAAO,CACHwC,aACAE,gBACAC,uBACAE,cACAC,gBACAC,2BACAC,2BACAC,iBACAC,4BACAC,sBACAC,6BACAC,2BACAC,gCACAC,wBACAC,+BC7BOC,GALIzI,YAAM,CACrBC,IAAKC,EAAKf,OAAOC,SACjBe,QAAS,CAAEuI,IAAK,GAAIC,QAAQ,KCsDjBC,GAvDE,WACb,IAAMC,EAAUC,YAAkBxL,GAC5ByL,EAAYD,YAAkBL,IAE9BO,EAAoB,SAACN,GAEnBA,KAGwD,KAF5DA,EAAMO,OAAOP,IAELQ,cAAcC,QAAQ,0BAGD,wBAAtBT,EAAIQ,eACkB,sBAAtBR,EAAIQ,eACkB,8BAAtBR,EAAIQ,eAUc,IAAtBR,EAAIS,QAAQ,QAAeT,EAAIQ,cAAcC,QAAQ,sBAErDJ,EAAU,CAACL,IAAKA,EAAKC,QAAQ,IAT5BE,GAAQ,SAAAO,GAAS,kCACVA,GADU,IAEbtJ,eAAc,SA6B1B,MAAO,CACHuJ,MAhBc,SAACC,EAAqBD,GAGpC,IAAIA,EAAO,OAAOL,EAAoBM,GAEtC,IAAOrE,EAAYoE,EAAZpE,SACP,IAAIA,EAAU,OAAO+D,EAAoBM,GACzC,IAAOtE,EAAQC,EAARD,KACP,IAAIA,EAAK,OAAOgE,EAAoBM,GACpC,IAAOC,EAAkBvE,EAAlBuE,eACP,IAAIA,EAAgB,OAAOP,EAAoBM,GAC/C,IAAOE,EAAWD,EAAXC,QACP,OAAOR,EAAoBQ,GAAoBF,IAK/CG,QAAS,SAACf,GAAD,OArBiB,SAACA,GACxBA,GAAKgB,OAAOC,MAAP,UAAgBjB,IAoBRkB,CAAsB,GAAD,OAAIlB,OCkKlCmB,GA1MI,WACf,IAAMC,EAAQlB,KACRrC,EAAUwD,KAEhB,EAAwBxG,YAAeC,GAAvC,mBAAOlG,EAAP,KAAauL,EAAb,KACA,EAA0BtF,YAAeyG,IAAhCC,EAAT,oBACA,EAAgC1G,YAAetB,IAA/C,mBAAOiI,EAAP,KAAiBC,EAAjB,KACA,EAA4B5G,YAAe3B,IAA3C,mBAAOwI,EAAP,KAAeC,EAAf,KACA,EAAsC9G,YAAe7B,IAArD,mBAAO4I,EAAP,KAAoBC,EAApB,KACA,EAAsChH,YAAenD,GAArD,mBAAOoK,EAAP,KAAoBC,EAApB,KACA,EAAsClH,YAAe3C,GAArD,mBAAO8J,EAAP,KAAoBC,EAApB,KAEA,EAA8CpH,YAAenB,IAA7D,mBAAOwI,EAAP,KAAwBC,EAAxB,KAEMnD,EAAa,uCAAG,WAAM1C,GAAN,SAAAF,EAAA,+EACXyB,EAAQmB,cAAc1C,GAC5ByB,MAAK,SAAAxB,GACF,MAOIA,EAASD,KANT8F,EADJ,EACIA,WACAC,EAFJ,EAEIA,eACA1M,EAHJ,EAGIA,aACA2M,EAJJ,EAIIA,mBACAC,EALJ,EAKIA,mBACAxM,EANJ,EAMIA,gBAGGF,EAC6ByM,EAD7BzM,YAAa8C,EACgB2J,EADhB3J,uBAChBC,EAAgC0J,EAAhC1J,OAAQC,EAAwByJ,EAAxBzJ,UAAWE,EAAauJ,EAAbvJ,UAEvBwI,EAAca,GACdX,EAAYY,GACZV,EAAUhM,GACVwM,EAAmBpM,GACnBkM,EAAeM,GACfR,EAAelM,GACfgM,EAAe,2BACRD,GADO,IAEVjJ,yBACAC,SACAC,YACAE,eAEJoH,EAAQ,2BACDvL,GADA,IAEHuC,eAAe,QAKtBqL,OAAM,SAAC7B,GAEJ,MADAS,EAAMT,MAAM,wBAAyBA,GAC/BA,MArCQ,2CAAH,sDAyCb7B,EAAa2D,aAAkB,gBAAGC,EAAH,EAAGA,IAAH,6BAAa,sBAAAtG,EAAA,+EACvCyB,EAAQiB,aACVf,MAAK,SAAAxB,GAEF,MAOIA,EAASD,KANT8F,EADJ,EACIA,WACAC,EAFJ,EAEIA,eACA1M,EAHJ,EAGIA,aACA2M,EAJJ,EAIIA,mBACAC,EALJ,EAKIA,mBACAxM,EANJ,EAMIA,gBAGGF,EAC6ByM,EAD7BzM,YAAa8C,EACgB2J,EADhB3J,uBAChBC,EAAgC0J,EAAhC1J,OAAQC,EAAwByJ,EAAxBzJ,UAAWE,EAAauJ,EAAbvJ,UAEvB2J,EAAInJ,GAAc8I,GAClBK,EAAIxJ,GAAkBvD,GACtB+M,EAAIhJ,GAAqB3D,GACzB2M,EAAIxK,EAAiBqK,GACrBG,EAAI1J,GAAiB,CACjBL,yBACAC,SACAC,YACAE,cAEJ2J,EAAIhL,EAAiB7B,GACrB6M,EAAI5H,EAAD,YAAC,eAAclG,GAAf,IAAqBuC,eAAe,KACvCuL,EAAIpB,GAAgBc,MAEvBI,OAAM,SAAC7B,GAEJ,MADAS,EAAMT,MAAM,4BAA6BA,GACnCA,MAhCgC,8CAuC5CvB,EAAa,uCAAG,WAAMuD,GAAN,SAAAvG,EAAA,+EACXyB,EAAQuB,cAAc,CAACwD,iBAAmBD,IAC5C5E,MAAK,SAAAxB,GAAQ,OAAEoF,EAAUpF,EAASD,SAClCkG,OAAM,SAAC7B,GAEJ,MADAS,EAAMT,MAAM,wBAAyBA,GAC/BA,MALI,2CAAH,sDASbkC,EAAW,uCAAG,WAAMvG,GAAN,SAAAF,EAAA,+EACTyB,EAAQiC,2BAA2BxD,GACrCyB,MAAK,SAAAxB,GAAQ,OAAEA,EAASD,QACxBkG,OAAM,SAAC7B,GAEJ,MADAS,EAAMT,MAAM,wBAAyBA,GAC/BA,MALE,2CAAH,sDASXmC,EAAgB,uCAAG,WAAMxG,GAAN,SAAAF,EAAA,+EACdyB,EAAQgC,sBAAsBvD,GAChCkG,OAAM,SAAC7B,GAEJ,MADAS,EAAMT,MAAM,6BAA8BA,GACpCA,MAJO,2CAAH,sDAQhBoC,EAAiB,uCAAG,WAAMzG,GAAN,SAAAF,EAAA,+EACfyB,EAAQwB,yBAAyB/C,GACvCyB,MAAK,SAAAxB,GACF,MAGIA,EAASD,KAFTzG,EADJ,EACIA,YAAa8C,EADjB,EACiBA,uBACbC,EAFJ,EAEIA,OAAQC,EAFZ,EAEYA,UAAWE,EAFvB,EAEuBA,UAGvBgJ,EAAelM,GACfgM,EAAe,2BACRD,GADO,IAEVjJ,yBACAC,SACAC,YACAE,kBAKPyJ,OAAM,SAAC7B,GAEJ,MADAS,EAAMT,MAAM,+BAAgCA,GACtCA,MArBY,2CAAH,sDAyBjBqC,EAAiB,uCAAG,WAAM1G,GAAN,SAAAF,EAAA,+EACfyB,EAAQyB,yBAAyBhD,GACvCyB,MAAK,SAAAxB,GAAQ,OAAE0F,EAAe1F,EAASD,SACvCkG,OAAM,SAAC7B,GAEJ,MADAS,EAAMT,MAAM,+BAAgCA,GACtCA,MALY,2CAAH,sDASjB1B,EAAoB,uCAAG,WAAM3C,GAAN,SAAAF,EAAA,+EAClByB,EAAQoB,qBAAqB3C,GACnCyB,MAAK,SAAAxB,GACF,MAGIA,EAASD,KAFT+F,EADJ,EACIA,eACAtM,EAFJ,EAEIA,gBAGJ0L,EAAYY,GACZF,EAAmBpM,MAEtByM,OAAM,SAAC7B,GAEJ,MADAS,EAAMT,MAAM,kCAAmCA,GACzCA,MAbe,2CAAH,sDAiBpBsC,EAAkB,uCAAG,WAAM3G,GAAN,SAAAF,EAAA,+EAChByB,EAAQsB,YAAY7C,GAC1ByB,MAAK,SAAAxB,GAEF,OADAoF,EAAUpF,EAASD,OACoB,IAAhCC,EAASD,KAAKhD,iBAExBkJ,OAAM,SAAC7B,GAEJ,MADAS,EAAMT,MAAM,+BAAgCA,GACtCA,MARa,2CAAH,sDAYxB,MAAO,CACH3B,gBACAI,gBACAyD,cACAC,mBACAlB,cACAE,cACAN,WACA0B,YAAaxB,EACbM,cACAE,kBACApD,aACAiE,oBACAC,oBACA/D,uBACAgE,uB,mBC/MFE,GAAmB9O,IAAMC,SAsB/BgJ,IAA6B6F,IAnBJ,SAAAhH,GAErB,OAAO9H,IACFgI,KADE,UACMzH,EAAKwO,sBAAwBxO,EAAKyO,uBAC1CtF,MAAK,SAAAuF,GACF,IAAO7G,EAAe6G,EAAqBhH,KAApCG,YAGP,OAFA7H,EAAK2O,iBAAiB9G,GACtBN,EAAcI,SAASC,OAAO9H,QAA9B,cAAyD,UAAY+H,EAC9DC,QAAQC,aAChB,WAEC,MADA/H,EAAKqH,cACC,IAAIY,MAAM,4BACjB2F,OAAM,SAAC1O,GAEN,MADAc,EAAKqH,cACC,IAAIY,MAAM/I,SAO5B0P,aAAWL,GAAkB,CAACM,QAAS,IAEvC,IAAMC,GAAiB,CACnB3O,OAAQ,mBACR,eAAgB,oBA4EL4O,GAzEI,SAACC,GAChB,IACIC,EAIED,EAJFC,IACAC,EAGEF,EAHFE,OACAxH,EAEEsH,EAFFtH,KACA5H,EACEkP,EADFlP,QAEIqP,EAAe,CAAC,MAAO,UAAUC,SAASF,GAAU,SAAW,OAC/DG,EAAU3H,EAEV4H,EAActP,EAAKuP,iBAI3B,OAHKD,IACDf,GAAiB1O,SAASC,QAAQC,OAAlC,+BAAsEuP,IAEnEf,GAAiBhG,QAAjB,cACH0G,MACAC,SACApP,QAAO,2BACAgP,IACAhP,IAENqP,EAAeE,KCtDlBG,G,yIACF,WAA2B9H,GAA3B,iFACiB+H,GAAW,CAChBR,IAAI,GAAD,OAAKvQ,EAAL,YACHwQ,OAAQ,MACRxH,KAAOA,IAJnB,mF,wHAOA,WAA0BA,GAA1B,iFACiB+H,GAAW,CAChBR,IAAI,GAAD,OAAKvQ,EAAL,YACHwQ,OAAQ,OACRxH,KAAOA,IAJnB,mF,4HAOA,WAA8BA,GAA9B,iFACiB+H,GAAW,CAChBR,IAAI,GAAD,OAAKvQ,EAAL,wBACHwQ,OAAQ,OACRxH,KAAOA,EACP5H,QAAS,CAAC,eAAgB,yBALtC,mF,2HAQA,WAA6B4H,GAA7B,8EACWgI,EAAahI,EAAbgI,UADX,SAEiBD,GAAW,CAChBR,IAAI,GAAD,OAAKvQ,EAAL,oBAAyBgR,GAC5BR,OAAQ,MACRxH,KAAOA,IALnB,mF,6HAQA,WAA+BA,GAA/B,8EAEWgI,EAAahI,EAAbgI,UAFX,SAGiBD,GAAW,CAChBR,IAAI,GAAD,OAAKvQ,EAAL,oBAAyBgR,GAC5BR,OAAQ,OACRxH,KAAOA,IANnB,mF,8HASA,WAAgCA,GAAhC,8EACWgI,EAAahI,EAAbgI,UADX,SAEiBD,GAAW,CAChBR,IAAI,GAAD,OAAKvQ,EAAL,oBAAyBgR,GAC5BR,OAAQ,QACRxH,KAAOA,IALnB,mF,8DAUW8H,MCvCAG,GALQjN,YAAM,CACzBC,IAAKC,EAAKb,QAAQC,WAClBa,QARkB,CACnB+M,KAAO,GACPC,MAAO,EACPC,gBAAiB,KCSLC,GALgBrN,YAAM,CACjCC,IAAKC,EAAKb,QAAQE,yBAClBY,QATsB,CACtBmN,KAAM,IACNC,KAAM,EACNC,YAAa,EACbC,UAAU,KCOCC,GALW1N,YAAM,CAC5BC,IAAKC,EAAKb,QAAQG,cAClBW,QARc,CACdwN,cAAgB,KAChBC,UAAW,GACXC,YAAa,M,oBCiHFC,GAzGK,WAChB,IAAMhE,EAAQlB,KACd,EAAoCrF,YAAe0J,IAAnD,mBAAOc,EAAP,KAAmBC,EAAnB,KACMC,EAAqBC,YAAuBjB,IAC5CkB,EAAqBxH,YAAe0G,IACpCe,EAAuBF,YAAuBR,IAC9CW,EAAkBvF,YAAkB4E,IAEpCY,EAAenD,aAAkB,gBAAGC,EAAH,EAAGA,IAAH,8CAAa,WAAOmD,EAAUC,GAAjB,SAAA1J,EAAA,+EACzCgI,GAAe2B,cAAcF,GACnC9H,MAAK,SAAAxB,GACF,IAAMyJ,EAAW,2BACVH,GADU,IAEbd,UAAU,IAEdrC,EAAIiC,GAAwBqB,GAC5B,IAAOxB,EAAQsB,EAARtB,KACP,EAAuCjI,EAASD,KAAzC2J,EAAP,EAAOA,KAAMxB,EAAb,EAAaA,MAAOC,EAApB,EAAoBA,gBACdwB,EAAc1B,EAAK2B,KAAI,SAAAC,GAAG,OAAEA,EAAI9B,aAChC+B,EAAWJ,EAAKK,QAAO,SAAAF,GAAG,OAAyC,IAAtCF,EAAYlC,SAASoC,EAAI9B,cACtDiC,EAAO,uBAAO/B,GAAP,aAAgB6B,IAC7B3D,EAAI6B,GAAgB,CAACC,KAAM+B,EAAS9B,QAAOC,uBAG9ClC,OAAM,SAAA1O,GAAMsN,EAAMT,MAAM7M,OAhBuB,2CAAb,2DAmBjC0S,EAAoB/D,aAAkB,gBAAGC,EAAH,EAAGA,IAAH,8CAAa,WAAO+D,EAAWC,GAAlB,SAAAtK,EAAA,yDACjDqK,EADiD,0EAE9CrC,GAAeuC,gBAAgB,CAAErC,UAAWmC,IAC9C1I,MAAK,SAAAxB,GACFmG,EAAIsC,GAAmBzI,EAASD,MAChC,IAAOkI,EAAQkC,EAARlC,KACD+B,EAAUK,KAAUpC,GAEpBqC,EAAMN,EAAQO,WAAU,SAAAV,GAAG,OAAEA,EAAI9B,YAAcmC,KACrD,IAAY,IAATI,EAAW,CACV,IAAME,EAASR,EAAQS,MAAK,SAAAZ,GAAG,OAAEA,EAAI9B,YAAcmC,KACnDM,EAAOE,SAAW,EAClBV,EAAQM,GAAOE,EACf,IAAMG,EAAc,2BACdR,GADc,IAEjBlC,KAAM+B,IAET7D,EAAI6B,GAAgB2C,OAI3B1E,OAAM,SAAA1O,GAAuD,MAA/CsN,EAAMT,MAAM,4BAA6B7M,GAAYA,MArBnB,2CAAb,2DAwBtCqT,EAAgB,uCAAG,WAAM7K,GAAN,SAAAF,EAAA,+EACdgI,GAAe+C,iBAAiB7K,GAC/ByB,MAAK,SAAAxB,GAAQ,OAAEA,KAAU,SAACzI,GACvB,MAAM,IAAI+I,MAAM/I,OAHN,2CAAH,sDAOhBsT,EAAY,uCAAG,WAAM9K,GAAN,SAAAF,EAAA,+EACVgI,GAAeiD,aAAa/K,GAC3ByB,MAAK,SAACxB,GAYF,OATY,IAFG8I,EAARb,KACUsC,WAAU,SAAAV,GAAG,OAAEA,EAAI9B,YAAc/H,EAASD,KAAKgI,cAG5DgB,GAAc,SAAAgC,GAAI,kCACXA,GADW,IAEd9C,KAAI,CAAIjI,EAASD,MAAb,oBAAsBgL,EAAK9C,OAC/BC,MAAO6C,EAAK7C,MAAQ,QAIrB,KACT,SAAC3Q,GACA,MAAM,IAAI+I,MAAM/I,OAhBV,2CAAH,sDAoBZyT,EAAc,uCAAG,WAAMjL,GAAN,SAAAF,EAAA,+EACZgI,GAAeoD,kBAAkBlL,GAChCyB,MAAK,SAACxB,GAMF,OAJDoJ,GAAgB,SAAA2B,GAAI,kCACZA,GADY,IAEfpC,UAAS,CAAI3I,EAASD,MAAb,oBAAsBgL,EAAKpC,kBAEjC,KACT,SAACpR,GACA,MAAM,IAAI+I,MAAM/I,OAVR,2CAAH,sDAcpB,MAAO,CACH8R,eACAP,aACAE,qBACAE,qBACAC,uBACAc,oBACAY,eACAD,mBACAI,mBC/GFE,G,qIACF,WAAuBC,GAAvB,iFACiBrD,GAAW,CAChBR,IAAI,GAAD,OAAKvQ,EAAL,mBAAwBoU,GAC3B5D,OAAQ,MACRxH,KAAO,KAJnB,mF,iIAOA,WAAmCoL,EAAMtV,GAAzC,iFACiBiS,GAAW,CACpBR,IAAI,GAAD,OAAKvQ,EAAL,+BAAoCoU,GACvC5D,OAAQ,MACRxH,KAAO,CAAClK,WAJhB,mF,8HAOA,8FACiBiS,GAAW,CACpBR,IAAI,GAAD,OAAKvQ,EAAL,sBACHwQ,OAAQ,MACRxH,KAAO,KAJf,mF,yHAOA,WAA4BqL,GAA5B,iFACiBtD,GAAW,CACpBR,IAAI,GAAD,OAAKvQ,EAAL,6BAAkCqU,GACrC7D,OAAQ,MACRxH,KAAO,KAJf,mF,iIAOA,8FACiB+H,GAAW,CACpBR,IAAI,GAAD,OAAKvQ,EAAL,iBACHwQ,OAAQ,MACRxH,KAAO,KAJf,mF,6DASWmL,M,qBC+DAG,G,kGAnGb,WACE,OAAOC,OAENC,SAAS,8BACTC,IAAI,EAAG,uCACPC,IAAI,GAAI,wCACRC,QAAQ,wBAAyB,kEACjCC,KACG,2BACA,0CACA,SAAA9V,GACI,OAAOA,EAAM+V,MAAM,0BACjBC,GAAcC,sBAAsB,gBAAiBjW,GAClD2L,MAAK,SAAAxB,GACF,IAAOD,EAAQC,EAARD,KAEP,OAAuB,KADDA,GAAc,CAACgM,aAAY,IAA1CA,oB,mBA8CzB,WACE,OAAOT,OACFC,SAAS,qBACTS,MAAM,oBACNL,KACG,mBACA,iCACA,SAAA9V,GACI,OAAOA,IAASoW,KAAQpW,IACtBgW,GAAcC,sBAAsB,QAASjW,GAC1C2L,MAAK,SAAAxB,GACF,IAAOD,EAAQC,EAARD,KAEP,OAAuB,KADDA,GAAc,CAACgM,aAAY,IAA1CA,oB,4BAO7B,WACE,OAAOT,OACFC,SAAS,qBACTS,MAAM,sB,sBAEb,WACE,OAAOV,OACFE,IAAI,EAAG,0CACPD,SAAS,0B,6BAEhB,SAAuBW,GACrB,OAAOZ,OACNa,MAAM,CAACb,KAAQY,GAAS,MAAO,wBAC/BX,SAAS,oC,KC0JCa,GAtOQ,SAACxK,GAAW,IAAD,wBACxByK,EAAUC,cACVzH,EAAQlB,KACR4I,EAAkB3H,KAClB4H,EAAkB3D,KAChB5D,EAAasH,EAAbtH,SACAhI,EAAgBgI,EAAhBhI,KAAMC,EAAU+H,EAAV/H,MAERuP,EAAmBnB,OAAaoB,MAAM,CACxCC,QAASrB,OAAasB,OAAOrB,SAAS,YACtCsB,YAAavB,OAAasB,OAAOrB,SAAS,YAC1CS,MAAOX,GAAgByB,iBACvB3B,KAAMG,OAAasB,OAAOrB,SAAS,cAEvC,EAKIwB,aAAQ,CACRC,cAAe,CACZL,QAAS,GACTE,YAAa,GACbb,MAAO9O,EACPiO,KAAMlO,GAETgQ,SAAUC,aAAYT,KAXtBU,EADJ,EACIA,aACaC,EAFjB,EAEIC,UAAaD,OACbE,EAHJ,EAGIA,SACAC,EAJJ,EAIIA,SAWJ,EAAwG3L,EAAjG4L,qBAAP,WAAwG5L,EAA1E6L,qBAA9B,MAA8C,WAAKpB,EAAQqB,UAA3D,IAAwG9L,EAAlC+L,oBAAtE,MAAqF,aAArF,EAA6FC,EAAWhM,EAAXgM,QAC7F,EAAwCC,oBAAS,GAAjD,mBAAOC,EAAP,KAAqBC,EAArB,KAGA,EAAsCF,oBAAS,GAA/C,mBAAOG,EAAP,KAAoBC,EAApB,KACA,EAAsCJ,mBAAS,IAA/C,mBAAOK,EAAP,KAAoBC,EAApB,KAEAC,qBAAU,WACNb,EAAS,QAASrQ,KACnB,CAACA,EAAOqQ,IAEXa,qBAAU,WACNb,EAAS,OAAQtQ,KAClB,CAACA,EAAMsQ,IAEV,IAAMc,EAAY,uCAAG,WAAMC,GAAN,mBAAAzO,EAAA,0DACdmO,EADc,wDAEjBC,GAAe,GACTM,EAAOD,EAAME,OAAOC,MAAM,GAHf,kBAMgBC,aAAiBH,EAAM,CAACI,UAAW,EAAGC,iBAAkB,OANxE,cAMPC,EANO,QAQP9O,EAAO,IAAI+O,UACZC,OAAO,OAAQ,IAAIC,KAAK,CAACH,GAAiBN,EAAKpD,OATvC,UAWPqB,EAAgB5B,iBAAiB7K,GACtCyB,MAAK,SAACxB,GACHmO,GAAe,SAAApD,GAAI,6BAAO/K,EAASD,MAAhB,aAAwBgL,OAC3CkD,GAAe,MAChB,SAAC1W,GAAOsN,EAAMT,MAAM,yBAA0B7M,GAAK0W,GAAe,MAfxD,0DAkBTA,GAAe,GACfpJ,EAAMT,MAAN,MAnBS,0DAAH,sDAwCZ6K,EAAe,uCAAG,WAAOC,EAASC,GAAhB,eAAAtP,EAAA,yDACpBsP,EAAEC,kBAECtB,EAHiB,wDAIpBC,GAAgB,GAEVsB,EAAgB,CAClBC,aAAeJ,EAAQlD,MACvBuD,iBAAmBL,EAAQ/D,KAC3BqE,QAAUN,EAAQvC,QAClB8C,QAAUP,EAAQrC,YAClBtE,WAAa,GACbmH,cAAe,EACfC,UAAY,GACZC,UAAW,GACXhH,YAAasF,EAAYtE,KAAI,SAAAiG,GAAG,OAAEA,EAAIC,WAftB,SAkBdtD,EAAgB3B,aAAawE,GAC1B7N,MAAK,WACEuM,GAAgB,GAChBJ,OACD,SAACpW,GACAwW,GAAgB,GAChBlJ,EAAMT,MAAM,6BAA8B7M,MAxBtC,2CAAH,wDAqCrB,OACI,sBAAKwY,UAAU,kBAAf,SAEI,wBAAMA,UAAU,eAAeC,SAAU7C,EAAa8B,GAAtD,UAEI,uBAAKc,UAAU,SAAf,UAEI,oBAAGA,UAAU,WAAb,SAAwB,oBAAGE,KAAK,IAAIC,QAhB7B,SAAC5B,GACpBA,EAAMc,iBACF5B,EAGAI,IAFAH,KAaqE0C,MAAM,mBAA3C,SAA8D,eAAC,KAAD,CAAiBpa,KAAMqa,WAC7G,qBAAIL,UAAU,cAAd,6BACA,qBAAGA,UAAU,iBAAb,cAA+B,eAAC,GAAD,CAAmBja,KAAM,OAAQ+L,UAAWiM,UAG/E,4BAAUiC,UAAU,QAApB,UAEQ7S,EACE,KACA,uCACF,qBAAG6S,UAAWM,IAAW,OAAQ,CAAEjM,MAAK,OAAEgJ,QAAF,IAAEA,GAAF,UAAEA,EAAQjC,YAAV,aAAE,EAAcmF,UAAxD,UACI,wBAAOC,QAAQ,OAAf,kBACA,oCAAOC,GAAG,OAAOC,UAAU,MAAM1O,KAAK,OAAO2O,YAAY,mBAAsBpD,EAAS,WACjF,OAANF,QAAM,IAANA,GAAA,UAAAA,EAAQjC,YAAR,eAAcmF,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,QAA7B,IAA6BA,GAA7B,UAA6BA,EAAQjC,YAArC,aAA6B,EAAcmF,aAGzE,qBAAGP,UAAWM,IAAW,QAAS,CAAEjM,MAAK,OAAEgJ,QAAF,IAAEA,GAAF,UAAEA,EAAQpB,aAAV,aAAE,EAAesE,UAA1D,UACI,wBAAOC,QAAQ,QAAf,mBACA,oCAAOC,GAAG,QAAQC,UAAU,MAAM1O,KAAK,OAAO2O,YAAY,oBAAuBpD,EAAS,YACnF,OAANF,QAAM,IAANA,GAAA,UAAAA,EAAQpB,aAAR,eAAesE,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,QAA7B,IAA6BA,GAA7B,UAA6BA,EAAQpB,aAArC,aAA6B,EAAesE,gBAI/E,qBAAGP,UAAWM,IAAW,UAAW,CAAEjM,MAAK,OAAEgJ,QAAF,IAAEA,GAAF,UAAEA,EAAQT,eAAV,aAAE,EAAiB2D,UAA9D,UACI,wBAAOC,QAAQ,UAAf,qBACA,oCAAOC,GAAG,UAAUC,UAAU,MAAM1O,KAAK,OAAO2O,YAAY,qBAAwBpD,EAAS,cACtF,OAANF,QAAM,IAANA,GAAA,UAAAA,EAAQT,eAAR,eAAiB2D,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,QAA7B,IAA6BA,GAA7B,UAA6BA,EAAQT,eAArC,aAA6B,EAAiB2D,aAG/E,qBAAGP,UAAWM,IAAW,cAAe,CAAEjM,MAAK,OAAEgJ,QAAF,IAAEA,GAAF,UAAEA,EAAQP,mBAAV,aAAE,EAAqByD,UAAtE,UACI,wBAAOC,QAAQ,cAAf,yBACA,uCAAUC,GAAG,cAAcE,YAAY,oBAAuBpD,EAAS,kBAChE,OAANF,QAAM,IAANA,GAAA,UAAAA,EAAQP,mBAAR,eAAqByD,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,QAA7B,IAA6BA,GAA7B,UAA6BA,EAAQP,mBAArC,aAA6B,EAAqByD,aAGvF,uBAAKP,UAAWM,IAAW,iBAA3B,UACI,wBAAOtO,KAAK,OAAOyO,GAAG,eAAerF,KAAK,eAAewF,SAAUtC,EAAc6B,QAAS,SAAC5B,GAAUA,EAAME,OAAO3Y,MAAQ,QAEtHqY,EAAY0C,OAAS,EAGrB,uBAAKb,UAAU,UAAf,UACK7B,EAAYtE,KAAI,SAAC2E,EAAMsC,GAAP,OAEb,qBAAWd,UAAU,YAAYe,MAAO,CACpCC,gBAAgB,OAASxC,EAAKyC,cAAe,KADjD,UAGI,sBAAKC,IAAK1C,EAAKyC,cAAeE,IAAG,qBAAgBL,EAAE,KACnD,uBAAMd,UAAU,MAAMG,QAAS,kBAjGpC,SAACM,GAC5B,IAAMW,EAAOjD,EAAYnE,QAAO,SAAAlK,GAAC,OAAEA,EAAEiQ,SAAWU,KAChDrC,EAAegD,GA+FoDC,CAAuB7C,EAAKuB,SAA/D,SAAwE,sBAAKmB,IAAKI,GAAgBH,IAAI,UAJlGL,MAOZ,yBAAOd,UAAU,YAAYQ,QAAQ,eAArC,UACI,iDACA,uBAAMR,UAAU,MAAhB,SAAsB,sBAAKkB,IAAKK,GAAiBJ,IAAI,cAG3D,yBAAOX,QAAQ,eAAf,0BAA2C,wBAAMR,UAAU,aAAhB,UAA6B,eAAC,KAAD,CAC1E9N,MAAM,UAAUC,QAAS8L,EACzB7L,IAAK,gEACLC,KAAM,MAHuC,WAGxB,uBAAM2N,UAAU,MAAhB,SAAsB,sBAAKkB,IAAKK,GAAiBJ,IAAI,0BCiCvFK,GA7Nc,SAAC3P,GAAW,IAAD,wBAC9ByK,EAAUC,cACVzH,EAAQlB,KAER6I,EAAkB3D,KAIxB,EAAsCgF,oBAAS,GAA/C,mBAAO2D,EAAP,KAAoBC,EAApB,KACA,EAAoD5D,oBAAS,GAA7D,mBAAO6D,EAAP,KAA2BC,EAA3B,KAEMlF,EAAmBnB,OAAaoB,MAAM,CACxCvB,KAAMG,OAAasB,OAAOrB,SAAS,YACnCS,MAAOV,OAAasB,OAAOrB,SAAS,YACpCoB,QAASrB,OAAasB,OAAOrB,SAAS,YACtCsB,YAAavB,OAAasB,OAAOrB,SAAS,cAE9C,EAIIwB,aAAQ,CACRC,cAAe,CACX7B,KAAM,GACNa,MAAO,GACRW,QAAS,GACTE,YAAa,IAEhBI,SAAUC,aAAYT,KAVtBU,EADJ,EACIA,aACaC,EAFjB,EAEIC,UAAaD,OACbE,EAHJ,EAGIA,SAWJ,EAAwG1L,EAAjG4L,qBAAP,WAAwG5L,EAA1E6L,qBAA9B,MAA8C,WAAKpB,EAAQqB,UAA3D,IAAwG9L,EAAlC+L,oBAAtE,MAAqF,aAArF,EAA6FC,EAAWhM,EAAXgM,QAC7F,EAAwCC,oBAAS,GAAjD,mBAAOC,EAAP,KAAqBC,EAArB,KAGA,EAAsCF,oBAAS,GAA/C,mBAAOG,EAAP,KAAoBC,EAApB,KACA,EAAsCJ,mBAAS,IAA/C,mBAAOK,EAAP,KAAoBC,GAApB,KAEME,GAAY,uCAAG,WAAMC,GAAN,mBAAAzO,EAAA,0DACdmO,EADc,wDAEjBC,GAAe,GACTM,EAAOD,EAAME,OAAOC,MAAM,GAHf,kBAMgBC,aAAiBH,EAAM,CAACI,UAAW,EAAGC,iBAAkB,OANxE,cAMPC,EANO,QAQP9O,EAAO,IAAI+O,UACZC,OAAO,OAAQ,IAAIC,KAAK,CAACH,GAAiBN,EAAKpD,OATvC,UAWPqB,EAAgB5B,iBAAiB7K,GACtCyB,MAAK,SAACxB,GACHmO,IAAe,SAAApD,GAAI,6BAAO/K,EAASD,MAAhB,aAAwBgL,OAC3CkD,GAAe,MAChB,SAAC1W,GAAOsN,EAAMT,MAAM,yBAA0B7M,GAAK0W,GAAe,MAfxD,0DAkBTA,GAAe,GACfpJ,EAAMT,MAAN,MAnBS,0DAAH,sDAwCZ6K,GAAe,uCAAG,WAAOC,EAASC,GAAhB,eAAAtP,EAAA,yDACpBsP,EAAEC,kBAECtB,EAHiB,wDAIpBC,GAAgB,GAEVsB,EAAgB,CAClBC,aAAeJ,EAAQlD,MACvBuD,iBAAmBL,EAAQ/D,KAC3BqE,QAAUN,EAAQvC,QAClB8C,QAAUP,EAAQrC,YAClBtE,WAAa,GACbmH,cAAe,EACfC,UAAY,GACZC,UAAW,GACXhH,YAAasF,EAAYtE,KAAI,SAAAiG,GAAG,OAAEA,EAAIC,WAftB,SAkBdtD,EAAgB3B,aAAawE,GAC1B7N,MAAK,WACEuM,GAAgB,GAChBJ,IACAgE,GAAsB,GACtBF,GAAe,MAChB,SAACla,GACAwW,GAAgB,GAEhB4D,GAAsB,GACtBF,GAAe,MA5BX,2CAAH,wDAgCfG,GAAiB,SAACtD,GACpBA,EAAMc,iBACF5B,EAGAI,IAFAH,KAOR,OACI,sBAAKsC,UAAU,kBAAf,SAGSyB,EAmED,uBAAKzB,UAAU,cAAf,UACI,uBAAKA,UAAU,SAAf,UACI,oBAAGA,UAAU,WAAb,SAAwB,oBAAGE,KAAK,IAAIC,QAAS0B,GAAgBzB,MAAM,mBAA3C,SAA8D,eAAC,KAAD,CAAiBpa,KAAMqa,WAC7G,qBAAIL,UAAU,cAAd,gCAEJ,sBAAKA,UAAU,UAAf,SAEQ2B,EAEA,uBAAK3B,UAAU,UAAf,UACI,eAAC,KAAD,CAAiBha,KAAM8b,KAAe9B,UAAU,oBAChD,oBAAGA,UAAU,cAAb,qDAGJ,uBAAKA,UAAU,OAAf,UACA,eAAC,KAAD,CAAiBha,KAAM+b,KAAuB/B,UAAU,iBACxD,oBAAGA,UAAU,WAAb,iDAjFZ,wBAAMA,UAAU,eAAeC,SAAU7C,EAAa8B,IAAtD,UAEI,uBAAKc,UAAU,SAAf,UACI,oBAAGA,UAAU,WAAb,SAAwB,oBAAGE,KAAK,IAAIC,QAAS0B,GAAgBzB,MAAM,mBAA3C,SAA8D,eAAC,KAAD,CAAiBpa,KAAMqa,WAC7G,qBAAIL,UAAU,cAAd,6BACA,qBAAGA,UAAU,iBAAb,cAA+B,eAAC,GAAD,CAAmBja,KAAM,OAAQ+L,UAAWiM,UAG/E,4BAAUiC,UAAU,QAApB,UACI,qBAAGA,UAAWM,IAAW,OAAQ,CAAEjM,MAAK,OAAEgJ,QAAF,IAAEA,GAAF,UAAEA,EAAQjC,YAAV,aAAE,EAAcmF,UAAxD,UACI,wBAAOC,QAAQ,OAAf,kBACA,oCAAOC,GAAG,OAAOC,UAAU,MAAM1O,KAAK,OAAO2O,YAAY,mBAAsBpD,EAAS,WACjF,OAANF,QAAM,IAANA,GAAA,UAAAA,EAAQjC,YAAR,eAAcmF,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,QAA7B,IAA6BA,GAA7B,UAA6BA,EAAQjC,YAArC,aAA6B,EAAcmF,aAGzE,qBAAGP,UAAWM,IAAW,QAAS,CAAEjM,MAAK,OAAEgJ,QAAF,IAAEA,GAAF,UAAEA,EAAQpB,aAAV,aAAE,EAAesE,UAA1D,UACI,wBAAOC,QAAQ,QAAf,mBACA,oCAAOC,GAAG,QAAQC,UAAU,MAAM1O,KAAK,OAAO2O,YAAY,oBAAuBpD,EAAS,YACnF,OAANF,QAAM,IAANA,GAAA,UAAAA,EAAQpB,aAAR,eAAesE,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,QAA7B,IAA6BA,GAA7B,UAA6BA,EAAQpB,aAArC,aAA6B,EAAesE,aAG3E,qBAAGP,UAAWM,IAAW,UAAW,CAAEjM,MAAK,OAAEgJ,QAAF,IAAEA,GAAF,UAAEA,EAAQT,eAAV,aAAE,EAAiB2D,UAA9D,UACI,wBAAOC,QAAQ,UAAf,qBACA,oCAAOC,GAAG,UAAUC,UAAU,MAAM1O,KAAK,OAAO2O,YAAY,qBAAwBpD,EAAS,cACtF,OAANF,QAAM,IAANA,GAAA,UAAAA,EAAQT,eAAR,eAAiB2D,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,QAA7B,IAA6BA,GAA7B,UAA6BA,EAAQT,eAArC,aAA6B,EAAiB2D,aAG/E,qBAAGP,UAAWM,IAAW,cAAe,CAAEjM,MAAK,OAAEgJ,QAAF,IAAEA,GAAF,UAAEA,EAAQP,mBAAV,aAAE,EAAqByD,UAAtE,UACI,wBAAOC,QAAQ,cAAf,yBACA,uCAAUC,GAAG,cAAcE,YAAY,oBAAuBpD,EAAS,kBAChE,OAANF,QAAM,IAANA,GAAA,UAAAA,EAAQP,mBAAR,eAAqByD,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,QAA7B,IAA6BA,GAA7B,UAA6BA,EAAQP,mBAArC,aAA6B,EAAqByD,aAGvF,uBAAKP,UAAWM,IAAW,iBAA3B,UACI,wBAAOtO,KAAK,OAAOyO,GAAG,eAAerF,KAAK,eAAewF,SAAUtC,GAAc6B,QAAS,SAAC5B,GAAUA,EAAME,OAAO3Y,MAAQ,QAEtHqY,EAAY0C,OAAS,EAGrB,uBAAKb,UAAU,UAAf,UACK7B,EAAYtE,KAAI,SAAC2E,EAAMsC,GAAP,OAEb,qBAAWd,UAAU,YAAYe,MAAO,CACpCC,gBAAgB,OAASxC,EAAKyC,cAAe,KADjD,UAGI,sBAAKC,IAAK1C,EAAKyC,cAAeE,IAAG,qBAAgBL,EAAE,KACnD,uBAAMd,UAAU,MAAMG,QAAS,kBAnGxC,SAACM,GAC5B,IAAMW,EAAOjD,EAAYnE,QAAO,SAAAlK,GAAC,OAAEA,EAAEiQ,SAAWU,KAChDrC,GAAegD,GAiGwDC,CAAuB7C,EAAKuB,SAA/D,SAAwE,sBAAKmB,IAAKI,GAAgBH,IAAI,UAJlGL,MAOZ,yBAAOd,UAAU,YAAYQ,QAAQ,eAArC,UACI,iDACA,uBAAMR,UAAU,MAAhB,SAAsB,sBAAKkB,IAAKK,GAAiBJ,IAAI,cAG3D,yBAAOX,QAAQ,eAAf,0BAA2C,wBAAMR,UAAU,aAAhB,UAA6B,eAAC,KAAD,CAC1E9N,MAAM,UAAUC,QAAS8L,EACzB7L,IAAK,gEACLC,KAAM,MAHuC,WAGxB,uBAAM2N,UAAU,MAAhB,SAAsB,sBAAKkB,IAAKK,GAAiBJ,IAAI,0BClL3Fa,GArBa,SAACnQ,GACzB,IAAOoQ,EAA6CpQ,EAA7CoQ,KAAMC,EAAuCrQ,EAAvCqQ,MAAOtE,EAAgC/L,EAAhC+L,aAApB,EAAoD/L,EAAlBsQ,gBAAlC,SAEA,OACI,eAAC,KAAD,CAAO7B,WAAY,CAAE8B,QAAS,0BAA2BC,MAAO,yBAC5DJ,KAAMA,EACNpE,QAASqE,EACTI,eAAe,EACfC,QAAM,EAJV,SAMQJ,EACA,eAAC,GAAD,CAAgB1E,eAAe,EAAMI,QAASqE,EAAOtE,aAAcA,IAEnE,eAAC,GAAD,CAAsBH,eAAe,EAAMI,QAASqE,EAAOtE,aAAcA,OC6C1E4E,GApDS,SAAC3Q,GACrB,IAAOyK,EAAWzK,EAAXyK,QACA1R,EAAc8G,KAAd9G,WACD6X,EAAiBnR,KAOvB,EAAsCwM,oBAAS,GAA/C,mBAAO4E,EAAP,KAAoBC,EAApB,KAEA,EAA8D7E,oBAAS,GAAvE,mBAAO8E,EAAP,KAAgCC,EAAhC,KAEA,OACA,uBAAK7C,UAAU,UAAf,UACI,oBAAGA,UAAU,YAAb,SAAyB,eAAC,IAAD,CAAM8C,GAAIpe,EAASC,KAAMyb,MAAM,qCAA/B,SAAoE,sBAAKc,IAAK6B,EAAQ5B,IAAI,0BACnH,oBAAGnB,UAAU,iBAAb,SACI,oBAAGE,KAAK,IAAR,SACI,eAAC,KAAD,CAAiBla,KAAMgd,KAAQ7C,QAAS,SAACf,GAAKA,EAAEC,iBAAiBsD,GAAgBD,GAAatD,EAAE6D,yBAGxG,uBAAKjD,UAAWM,IAAW,MAAO,CAAC,GAAMoC,IAAzC,UACI,oBAAG1C,UAAU,YAAb,SAAyB,oBAAGE,KAAK,IAAIC,QAAS,SAACf,GAAKA,EAAEC,iBAAiBsD,GAAe,IAA7D,SAAsE,eAAC,KAAD,CAAiB3c,KAAMkd,WACtH,gCACI,8BAAI,eAAC,IAAD,CAAMJ,GAAIpe,EAASC,KAAMyb,MAAM,+BAA/B,oBACJ,gCAEI,eAAC,eAAD,UACA,oBAAGF,KAAK,IAAIC,QAAS,SAAC5B,GAASA,EAAMc,iBAAkBwD,GAA2B,IAAQzC,MAAM,wBAAhG,4BAEA,eAAC,cAAD,UACA,eAAC,IAAD,CAAM0C,GAAIpe,EAASa,eAAgB6a,MAAM,wBAAzC,4BAEA,eAAC,GAAD,CAAqB6B,KAAMW,EAAyBV,MAAO,kBAAIW,GAA2B,IAAQjF,aAAc,aAAQuE,UAAU,OAGlIvX,EACE,qBAAIoV,UAAU,iBAAd,SAA+B,oBAAGE,KAAK,IAAIC,QAAS,SAACf,IAjC/C,SAACA,GACrBA,EAAEC,iBACFoD,IAAiBhR,MAAK,WAAK6K,EAAQ6G,KAAKze,EAASG,UA+BuBue,CAAgBhE,IAA3C,sBAC/B,uCACE,8BAAI,eAAC,IAAD,CAAM0D,GAAIpe,EAASG,MAAOub,MAAM,oBAAhC,qBACJ,qBAAIJ,UAAU,iBAAd,SAA+B,eAAC,IAAD,CAAM8C,GAAIpe,EAASE,KAAMwb,MAAM,oBAA/B,qCCrDxC,OAA0B,0CCoX1Bza,GAhXJ,SAACkM,GAGR,OACI,qCACI,uBAAKmO,UAAU,aAAf,UACI,yBAAQA,UAAU,WAAlB,SACI,qBAAIqD,QAAQ,WAAZ,4BAEJ,uBAAKrD,UAAU,UAAf,UAEA,8DAEA,q2BAGA,oLAEA,gCACI,gCACI,+EAGA,gCACI,4SACA,sMACA,kKAIR,gCACI,sEAGA,gCACI,wMAGA,wXAGA,kkBAKR,gCACI,8CACA,gCACI,8BACI,wMAEJ,gCACI,gFACA,gCACI,sDACA,8DACA,4EAGR,gCACI,0DACA,yaAIJ,gCACI,kEACA,iXAEJ,gCACI,0EACA,2WAIZ,gCACA,gDACI,gCACI,+KACA,gCACI,gCAAI,oFAAJ,2WAEA,gCAAI,qFAAJ,4LAEA,gCAAI,mEAAJ,kNAGR,gCACI,kKACA,gCACA,4JAEA,kNAEA,iKAEA,sNAEA,qJAGJ,gCACI,iGACA,gCACI,+GAEA,4JAEA,gLAEA,8EAIZ,gCACA,2DACI,utBAEJ,gCACA,0DACI,gCACA,8NACI,gCACI,uPACA,qMAER,gUAEA,mPAEA,sLAEA,yIAEA,6TAEA,0PAGJ,gCACA,gEACI,uOAIJ,gCACA,uEACI,ulBAIJ,gCACA,2DACI,kiBAIJ,gCACA,8CACI,ieAIJ,gCACA,8CACI,sNACA,gCACI,yFACA,6LACA,gJAGR,gCACA,wDACI,6KAEJ,gCACA,2DAEI,wLAEA,qVAEA,oLAEA,oXAEA,ykBAEJ,gCACA,mFACI,gCACA,qEAEA,4LAEA,gIAEA,4LAEA,+HAEA,yKAEA,sHAEA,oKAEA,2OAGJ,gCACA,qEAEI,uIAEA,gCACA,wSAEA,wLAEA,sNAEA,iNAEA,2YAEA,0QAEA,wJAEA,wGAEA,kIAEA,0IAEA,6IAEA,gMAEA,yRAEA,+LAEA,0JAEA,4pBAEA,2hBAEA,scAEA,0cAEA,k9BAGJ,gCACA,sDAEI,sSACA,gCACI,yEACA,oFACA,sGACA,mKAEJ,4gBAEJ,gCACA,gDAEI,2GACA,gCACI,iFACA,+GAEJ,mHAEJ,gCACI,mEACA,8IAEJ,gCACI,yDACA,qWAEJ,gCACI,gDACA,4iBAEJ,gCACI,iDACA,8KAEJ,gCACI,sDACA,uLAEJ,gCACI,mDACA,sSAEJ,gCACI,oDACA,kWAEJ,gCACI,8CACA,kXAEJ,gCACI,6CACA,+QAEJ,gCACI,+CACA,wHAEJ,gCACI,mDACA,qLAEJ,gCACI,qDACA,wMAEJ,gCACI,0DAEA,0WACA,mOACA,6KACA,kMACA,uJAEA,0FACA,gCACA,mFACA,uIACA,iFACA,gGACA,4GACA,wGAIA,4GACA,sPACA,gOACA,sNACA,6HACA,mFACA,8JACA,uGACA,kGACA,0GC5VTsD,GAVC,SAACzR,GACb,IAAQoQ,EAAgBpQ,EAAhBoQ,KAAMC,EAAUrQ,EAAVqQ,MAEd,OACI,eAAC,KAAD,CAAO5B,WAAY,CAAE8B,QAAS,aAAcC,MAAO,YAAeJ,KAAMA,EAAMpE,QAASqE,EAAOK,QAAM,EAApG,SACI,eAAC,GAAD,OC0BGgB,GA5BK,SAAC1R,GAEjB,MAAyBA,EAAlBsQ,gBAAP,SAEA,EAAsCrE,oBAAS,GAA/C,mBAAO0F,EAAP,KAAoBC,EAApB,KACA,EAA8D3F,oBAAS,GAAvE,mBAAO8E,EAAP,KAAgCC,EAAhC,KAEA,OACI,uCACI,sBAAI7C,UAAU,QAAd,UAEI,8BAAI,oBAAGE,KAAK,IAAIC,QAAS,SAACf,GAAKA,EAAEC,iBAAkBoE,GAAe,IAAQrD,MAAM,yBAA5E,kCACJ,gCAEI,gBAAC,eAAD,WACA,oBAAGF,KAAK,IAAIC,QAAS,SAAC5B,GAASA,EAAMc,iBAAkBwD,GAA2B,IAAQzC,MAAM,mBAAhG,qBACA,eAAC,GAAD,CAAqB6B,KAAMW,EAAyBV,MAAO,kBAAIW,GAA2B,IAAQjF,aAAc,aAAQuE,SAAUA,OAElI,eAAC,cAAD,UACA,eAAC,IAAD,CAAMW,GAAIpe,EAASa,eAAgB6a,MAAM,mBAAzC,6BAIR,eAAC,GAAD,CAAS6B,KAAMuB,EAAatB,MAAO,kBAAIuB,GAAe,UCJnDC,GArBD,SAAC7R,GACX,MAAyBA,EAAlBsQ,gBAAP,SACA,OAII,eAHA,CAGA,OAAKnC,UAAU,iBAAf,UACI,sBAAKA,UAAU,YAAf,SACI,yGAA0E,oBAAGE,KAAK,8BAAR,kCAG/E,eAAC,GAAD,CAAaiC,SAAUA,QCiHnBwB,GApHU,SAAC9R,GAEtB,MAA8DiM,oBAAS,GAAvE,mBAAO8E,EAAP,KAAgCC,EAAhC,KAEA,OACI,uBAAK7C,UAAWM,IAAW,OAAQ,oBAAqB,aAAxD,UACA,uBAAKN,UAAU,iBAAf,UAUI,eAAC,GAAD,eAAqBnO,IACrB,qDACA,oBAAGmO,UAAU,MAAb,4DAGA,qBAAIA,UAAU,WAAd,SACI,qBAAIA,UAAU,YAAd,SAA0B,eAAC,IAAD,CAAM8C,GAAIpe,EAASE,KAAMwb,MAAM,uBAA/B,gCAKlC,sBAAKJ,UAAU,gBAAf,SACI,uBAAKA,UAAU,UAAf,UACI,gDACA,sBAAIA,UAAU,aAAd,UACI,qBAAIA,UAAU,mBAAd,8BACA,qBAAIA,UAAU,2BAAd,sCACA,qBAAIA,UAAU,kBAAd,6BACA,qBAAIA,UAAU,iBAAd,+BAEJ,sBAAIA,UAAU,aAAd,UACI,qBAAIA,UAAU,0CAAd,qDACA,qBAAIA,UAAU,wBAAd,mCACA,qBAAIA,UAAU,+BAAd,4CACA,qBAAIA,UAAU,+BAAd,kDAsBZ,sBAAKA,UAAU,gBAAf,SACI,uBAAKA,UAAU,UAAf,UACI,4CACA,oBAAGA,UAAU,OAAb,SAAoB,sBAAKkB,IAAK0C,GAASzC,IAAI,8BAInD,uBAAKnB,UAAU,kBAAf,UACI,uBAAKA,UAAU,UAAf,UACI,+CAEA,eAAC,eAAD,UACA,oBAAGA,UAAU,iBAAb,SAA8B,oBAAGE,KAAK,IAAIC,QAAS,SAAC5B,GAASA,EAAMc,iBAAkBwD,GAA2B,IAAQzC,MAAM,2BAAhG,iCAE9B,eAAC,cAAD,UACA,oBAAGJ,UAAU,iBAAb,SAA8B,eAAC,IAAD,CAAM8C,GAAIpe,EAASa,eAAgB6a,MAAM,2BAAzC,oCAoBlC,eAAC,GAAD,CAAqB6B,KAAMW,EAAyBV,MAAO,kBAAIW,GAA2B,IAAQjF,aAAc,aAAQuE,UAAU,OActI,eAAC,GAAD,Q,mBCnDOzF,GApEUnB,OAAaoB,MAAM,CACxCkH,cAAeC,GAASD,gBACxB5H,MAAO6H,GAAS7H,QAChB8H,SAAUD,GAASC,WACnBC,gBAAiBF,GAASE,gBAAgB,YAC1CC,iBAAmB1I,OACV2I,cAAcC,WAEd/H,MAAMgI,gBAAc,8CAC7BC,YAAa9I,OAGJI,QAAQ,QAAQ,CAAC4E,QAAQ,uCAAuC+D,oBAAmB,IACnF1I,KAAK,qBAAsB,wBAAwB,SAAS2I,GACzD,IAAIA,EAAK,OAAO,EAChB,IAAON,EAAoBrc,KAAK4c,OAAzBP,iBACP,IAAIA,EAAkB,OAAO,EAC7B,IAAOQ,EAAkBR,EAAlBQ,KAAMC,EAAYT,EAAZS,SACb,OAAOC,aAAmB,IAAD,OAAKD,GAAL,OAAgBH,GAAOE,EAAKG,kBAEjEC,YAAatJ,OACbuJ,QAASvJ,OAAawJ,KAAK,CAAC,eAAgB,CACpCC,GAAI,SAACC,GAAD,OAAUA,GACdxT,KAAM8J,OAAaC,SAAS,gBAAgBjE,IAAI,eAChD2N,UAAW3J,OAAa2I,cAAcC,aAE9CgB,cAAe5J,OACf6J,UAAW7J,OAAawJ,KAAK,CAAC,iBAAkB,CAC5CC,GAAI,SAACC,GAAD,OAAUA,GACdxT,KAAM8J,OAAaC,SAAS,gBAAgBjE,IAAI,eAChD2N,UAAW3J,OAAa2I,cAAcC,aAE1CkB,WAAY9J,OACZ+J,OAAQ/J,OAAawJ,KAAK,CAAC,cAAe,CACtCC,GAAI,SAACC,GAAD,OAAUA,GACdxT,KAAM8J,OAAaC,SAAS,gBAAgBjE,IAAI,eAChD2N,UAAW3J,OAAa2I,cAAcC,aAE1CoB,YAAahK,OACbiK,QAASjK,OAAawJ,KAAK,CAAC,eAAgB,CACxCC,GAAI,SAACC,GAAD,OAAUA,GACdxT,KAAM8J,OAAaC,SAAS,gBAAgBjE,IAAI,eAChD2N,UAAW3J,OAAa2I,cAAcC,aAE1CsB,aAAclK,OACdmK,SAAUnK,OAAawJ,KAAK,CAAC,gBAAiB,CAC1CC,GAAI,SAACC,GAAD,OAAUA,GACdxT,KAAM8J,OAAaC,SAAS,gBAAgBjE,IAAI,eAChD2N,UAAW3J,OAAa2I,cAAcC,aAE1CwB,aAAcpK,OACdqK,SAAUrK,OAAawJ,KAAK,CAAC,gBAAiB,CAC1CC,GAAI,SAACC,GAAD,OAAUA,GACdxT,KAAM8J,OAAaC,SAAS,gBAAgBjE,IAAI,eAChD2N,UAAW3J,OAAa2I,cAAcC,aAE1C0B,UAAWtK,OACXuK,MAAOvK,OAAawJ,KAAK,CAAC,aAAc,CACpCC,GAAI,SAACC,GAAD,OAAUA,GACdxT,KAAM8J,OAAaC,SAAS,YAC5B0J,UAAW3J,OAAa2I,cAAcC,aAE1CvO,gBAAiB2F,OAAaK,KAAK,yBAA0B,wCAAwC,SAAS2I,GAC1G,MAAqG3c,KAAK4c,OAAnGK,EAAP,EAAOA,YAAaM,EAApB,EAAoBA,cAAeE,EAAnC,EAAmCA,WAAYE,EAA/C,EAA+CA,YAAaE,EAA5D,EAA4DA,aAAcE,EAA1E,EAA0EA,aAAcE,EAAxF,EAAwFA,UACxF,OAAQhB,GAAeM,GAAiBE,GAAcE,GAAeE,GAAgBE,GAAgBE,OCpB9FE,GA7Ce,SAAClU,GAC3B,IAAQoQ,EAA8CpQ,EAA9CoQ,KAAMC,EAAwCrQ,EAAxCqQ,MAAO8D,EAAiCnU,EAAjCmU,eAAgBC,EAAiBpU,EAAjBoU,aAE/BC,EAAO9B,gBAAa+B,QAAO,SAACC,EAAKtgB,GAEnC,OADAsgB,EAAItgB,EAAM2e,MAAQ4B,sBACXD,IACR,IAEGE,EAAiBC,uBAAY,SAAA9F,GAC5ByF,EAAKzF,IAAOyF,EAAKzF,GAAIjH,SACpB0M,EAAKzF,GAAIjH,QAAQgN,eAAe,CAC5BC,SAAU,SACVC,MAAO,YAIhB,CAACR,IAaJ,OAXA7H,qBAAU,WACN,IAAIsI,EACDV,IACCU,EAAavC,gBAAa1J,MAAK,SAAAZ,GAAG,OAAEA,IAAMmM,MAE1CU,EAGAC,YAAW,kBAAIN,EAAeK,EAAWlC,QAAO,KAFhDmC,YAAW,kBAAIN,EAAe,QAAO,OAG3C,CAACL,EAAcK,IAGb,gBAAC,KAAD,CAAOhG,WAAY,CAAE8B,QAAS,uBAAwBC,MAAO,sBAAyBJ,KAAMA,EAAMpE,QAASqE,EAAOK,QAAM,EAAxH,UACI,+CACA,sBAAKvC,UAAU,eAAf,SACI,8BAEQoE,gBAAavK,KAAI,SAACgN,GAAD,OACb,sBAAoBC,IAAKZ,EAAKW,EAAKpC,MAAOtE,QAAS,WAAQ6F,EAAea,GAAO3E,KAAjF,UAA4F,uBAAMlC,UAAU,OAAhB,SAAwB6G,EAAKzL,OAAzH,IAAsI,wBAAM4E,UAAU,OAAhB,cAAyB6G,EAAKnC,cAA3JmC,EAAKpC,iBCL3BsC,GA7BC,WACZ,IAAMjS,EAAQlB,KAERjD,EAAerC,KACfiD,EAAUC,KAEVwV,EAAmB,uCAAG,WAAM/W,GAAN,2BAAAH,EAAA,sFACjBE,EAAQC,EAARD,KAEPW,EAAaF,cAAcT,GAHH,2CAAH,sDASnBmB,EAAK,uCAAG,WAAMnB,GAAN,2BAAAF,EAAA,6DAAYmX,EAAZ,kDACH1V,EAAQJ,MAAMnB,GACpByB,MAAK,SAAAxB,GAAQ,OAAG+W,EAAoB/W,EAAUgX,MAC9C/Q,OAAM,SAAC7B,GAEJ,MADAS,EAAMT,MAAM,eAAgBA,GACtBA,MALA,2CAAH,sDASX,MAAO,CACHlD,UC6CO+V,GAxEM,SAACrV,GAClB,IAAOoQ,EAImBpQ,EAJnBoQ,KAAMC,EAIarQ,EAJbqQ,MACTiF,EAGsBtV,EAHtBsV,2BACAC,EAEsBvV,EAFtBuV,gBACAC,EACsBxV,EADtBwV,oBAHJ,EAI0BxV,EAAtByQ,qBAJJ,SAKA,EAAwBxE,mBAAS,IAAjC,mBAAOzH,EAAP,KAAaiR,EAAb,KACA,EAAwCxJ,oBAAS,GAAjD,mBAAOC,EAAP,KAAqBC,EAArB,KAEMuJ,EAAgB,uCAAG,sBAAAzX,EAAA,0DAClBiO,EADkB,iDAErBC,GAAgB,GAEhBqJ,IACC5V,MAAK,eACL+V,SAAQ,kBAAIxJ,GAAgB,MANR,2CAAH,qDASfyJ,EAAqB,uCAAG,WAAMrI,GAAN,SAAAtP,EAAA,yDAC3BsP,EAAEC,kBACCtB,EAFwB,oDAGvB1H,EAHuB,iDAK3B2H,GAAgB,GAEhBmJ,EAA2B9Q,GAC1B5E,MAAK,SAACiW,GACAN,GAA8C,oBAApBA,EACzBA,EAAgBM,GAGhBxF,OAGPsF,SAAQ,kBAAIxJ,GAAgB,MAhBF,2CAAH,sDA2B5B,OACI,gBAAC,KAAD,CAAOsC,WAAY,CAAE8B,QAAS,uBAAwBC,MAAO,sBACzDJ,KAAMA,EACNpE,QAASqE,EACTyF,qBAAqB,EACrBC,YAAY,EACZtF,cAAeA,EACfC,QAAM,EANV,UAOI,uDACA,mEAAoC,wBAApC,2BACA,oBAAGvC,UAAU,OAAb,SAAoB,sFACpB,wBAAMA,UAAU,oBAAoB6H,UAlBnB,SAACzI,GACJ,KAAdA,EAAE0I,SAEFL,EAAsBrI,IAetB,UACI,4BAAUY,UAAU,QAApB,UACI,+BAAG,uDAAgC,wBAAOA,UAAU,oBAAoBhO,KAAK,SAAS2O,YAAY,yBAAyBC,SAAU,SAAAxB,GAAOkI,EAAQlI,EAAEX,OAAO3Y,aAC7J,gEAA4B,oBAAGoa,KAAK,IAAKC,QAAS,SAAAf,GAAIA,EAAEC,iBAAiBkI,KAAqBnH,MAAM,4BAAxE,oCAEhC,2BAAUJ,UAAU,SAApB,SACI,oBAAGA,UAAU,YAAb,SACI,eAAC,GAAD,CAAmBja,KAAK,SAASoa,QAAS,SAAAf,GAAC,OAAEqI,EAAsBrI,IAAItN,UAAWiM,eCoW3FgK,GAvZI,SAAClW,GAAW,IAAD,kEAEnBmW,EADYnW,EAAZoW,SACAD,sBAEDlB,EAAMoB,mBACN1L,EAAkB3H,KAClBsT,EAAgBpB,KAEf7R,EAA2CsH,EAA3CtH,SAAU0B,EAAiC4F,EAAjC5F,YAAahB,EAAoB4G,EAApB5G,gBACtB1I,EAAgBgI,EAAhBhI,KAAMC,EAAU+H,EAAV/H,MACNN,EAAgC+J,EAAhC/J,YAAaE,EAAmB6J,EAAnB7J,gBAEbM,EAEAuI,EAFAvI,eAAgBC,EAEhBsI,EAFgBtI,iBAAiBC,EAEjCqI,EAFiCrI,cACjCC,GACAoI,EADApI,eAAgBC,GAChBmI,EADgBnI,gBAAiBC,GACjCkI,EADiClI,gBAAiBC,GAClDiI,EADkDjI,aAI1D,GAOQqP,aAAQ,CACRoL,KAAM,MACNnL,cAAe,CACX4G,cAAe3W,EACf+O,MAAO9O,EACP4W,SAAU,GACVM,YAAaxX,EACboX,iBAAkBG,gBAAa1J,MAAK,SAAAZ,GAAG,OAAEA,EAAI2K,QAAS1X,EAAkBA,EAAgBmH,cAAgB,SACxG4Q,QAASzX,EACTwX,cAAexX,EACf+X,UAAW9X,EACX6X,gBAAiB7X,EACjBgY,OAAQ/X,EACR8X,aAAc9X,EACdiY,QAAShY,GACT+X,cAAe/X,GACfkY,SAAUjY,GACVgY,eAAgBhY,GAChBmY,SAAUlY,GACViY,eAAgBjY,GAChBoY,MAAOnY,GACPkY,YAAalY,IAEjBuP,SAAUC,aAAYT,MA7BtBU,GADR,GACQA,aADR,MAEQE,UAAaD,GAFrB,GAEqBA,OAAQoE,GAF7B,GAE6BA,YACrBlE,GAHR,GAGQA,SACA8K,GAJR,GAIQA,MACA7K,GALR,GAKQA,SACA8K,GANR,GAMQA,UA0BFC,GAAmBF,GAAM,gBAAiBhb,GAC1Cmb,GAAqBH,GAAM,kBAAmB/a,GAC9Cmb,GAAkBJ,GAAM,eAAgB9a,GACxCmb,GAAmBL,GAAM,gBAAiB7a,IAC1Cmb,GAAoBN,GAAM,iBAAkB5a,IAC5Cmb,GAAoBP,GAAM,iBAAkB3a,IAC5Cmb,GAAiBR,GAAM,aAAc1a,IAE3C,GAAwCmQ,oBAAS,GAAjD,qBAAOC,GAAP,MAAqBC,GAArB,MACA,GAA8CF,oBAAS,GAAvD,qBAAOgL,GAAP,MAAwBC,GAAxB,MACA,GAA8DjL,mBAAS,MAAvE,qBAAOkL,GAAP,MAAgCC,GAAhC,MAEA5K,qBAAU,WAEHiK,GAAU,gBACTW,GAA2B,QAGhC,CAACX,GAAWW,KAIf,OAA8CnL,oBAAS,GAAvD,qBAAOoL,GAAP,MAAwBC,GAAxB,MAOA9K,qBAAU,WACP,IAAMoG,EAAO1X,EAAkBA,EAAgBmH,cAAgB,KACzDkV,EAAMhF,gBAAa1J,MAAK,SAAAZ,GAAG,OAAEA,EAAI2K,OAAOA,KAC9CjH,GAAS,mBAAoB4L,GAC7B5L,GAAS,0BAAD,WAAgC4L,EAAI1E,aAC5C,CAAClH,KAMJa,qBAAU,kBAAMb,GAAS,gBAAiBtQ,KAAO,CAACA,EAAMsQ,KACxDa,qBAAU,kBAAMb,GAAS,QAASrQ,KAAQ,CAACA,EAAOqQ,KAClDa,qBAAU,kBAAMb,GAAS,cAAe3Q,KAAc,CAACA,EAAa2Q,KACpEa,qBAAU,kBAAMb,GAAS,mBAAoB4G,gBAAa1J,MAAK,SAAAZ,GAAG,OAAEA,EAAI2K,QAAS1X,EAAkBA,EAAgBmH,cAAgB,YAAS,CAACnH,EAAiByQ,KAC9Ja,qBAAU,WACNb,GAAS,UAAWnQ,GACpBmQ,GAAS,gBAAiBnQ,KAC3B,CAACA,EAAgBmQ,KACpBa,qBAAU,WACNb,GAAS,YAAalQ,GACtBkQ,GAAS,kBAAmBlQ,KAC7B,CAACA,EAAkBkQ,KACtBa,qBAAU,WACNb,GAAS,SAAUjQ,GACnBiQ,GAAS,eAAgBjQ,KAC1B,CAACA,EAAeiQ,KACnBa,qBAAU,WACNb,GAAS,UAAWhQ,IACpBgQ,GAAS,gBAAiBhQ,MAC3B,CAACA,GAAgBgQ,KACpBa,qBAAU,WACNb,GAAS,WAAY/P,IACrB+P,GAAS,iBAAkB/P,MAC5B,CAACA,GAAiB+P,KACrBa,qBAAU,WACNb,GAAS,WAAY9P,IACrB8P,GAAS,iBAAkB9P,MAC5B,CAACA,GAAiB8P,KACrBa,qBAAU,WACNb,GAAS,QAAS7P,IAClB6P,GAAS,cAAe7P,MACzB,CAACA,GAAc6P,KAElB,IAAM6L,GAAwB,uCAAG,kCAAAvZ,EAAA,6DACvBuU,EAAciE,GAAU,eACxBgB,EAAehB,GAAU,oBACxB5D,EAAkB4E,EAAlB5E,SAAUD,EAAQ6E,EAAR7E,KAHY,kBAKtBjI,EAAgBhG,iBAAiB,CAAC3J,YAAYwX,EAAavX,iBAAiB4X,EAAU3X,gBAAgB0X,KALhF,2CAAH,qDAQxB0C,GAA0B,uCAAG,WAAM9Q,GAAN,uBAAAvG,EAAA,6DACzBuU,EAAciE,GAAU,eACxBgB,EAAehB,GAAU,oBACxB5D,EAAkB4E,EAAlB5E,SAAUD,EAAQ6E,EAAR7E,KAHc,SAKVjI,EAAgBjG,YAAY,CAC7CD,iBAAkBD,EAClBxJ,YAAYwX,EACZvX,iBAAiB4X,EACjB3X,gBAAgB0X,IATW,OAKzB8E,EALyB,OAW/BN,GAA2BM,GAC3B3C,YAAW,WACPE,EAAItN,QAAQgQ,cACR,IAAIC,MAAM,SAAU,CAAEC,YAAY,EAAMC,SAAS,OAEtD,KAhB4B,2CAAH,sDAwB1BC,GAAoB,uCAAG,WAAMzK,EAAS0K,GAAf,eAAA/Z,EAAA,0DACtBiO,GADsB,iDAEzBC,IAAgB,GAEVsB,EAAgB,CAClBpS,KAAMiS,EAAQ0E,cACd1W,MAAOgS,EAAQlD,MACf6N,SAAU3K,EAAQ4E,SAClB8F,aAAcA,EAMdpgB,gBAAiB,CACb4D,eAAgB8R,EAAQ0F,aAAe1F,EAAQ2F,QAAU3F,EAAQ2F,QAAU,GAC3ExX,iBAAkB6R,EAAQgG,eAAiBhG,EAAQiG,UAAYjG,EAAQiG,UAAY,GACnF7X,cAAe4R,EAAQkG,YAAclG,EAAQmG,OAASnG,EAAQmG,OAAS,GACvE9X,eAAgB2R,EAAQoG,aAAepG,EAAQqG,QAAUrG,EAAQqG,QAAU,GAC3E/X,gBAAiB0R,EAAQsG,cAAgBtG,EAAQuG,SAAWvG,EAAQuG,SAAW,GAC/EhY,gBAAiByR,EAAQwG,cAAgBxG,EAAQyG,SAAWzG,EAAQyG,SAAW,GAC/EjY,aAAcwR,EAAQ0G,WAAa1G,EAAQ2G,MAAQ3G,EAAQ2G,MAAQ,KAG3EtJ,EAAgB9J,cAAc4M,GAC7B7N,MAAK,WACF,OAAO0W,EAAchX,MAAM,CAAC4Y,SAAU5K,EAAQlD,MAAO6N,SAAU3K,EAAQ4E,WAAW,GACjFtS,MAAK,WACCuW,GAA0D,oBAA1BA,GAC/BA,OAEPR,SAAQ,kBAIZA,SAAQ,WACLxJ,IAAgB,MApCK,2CAAH,wDAwCpBkB,GAAe,uCAAG,WAAMC,EAASC,GAAf,SAAAtP,EAAA,sDACpBsP,EAAEC,iBAEEF,EAAQkF,YAQL2E,GACCY,GAAqBzK,EAAS6J,IAG9BK,KAA2B5X,MAAK,WAC5BsX,IAAmB,MAZ3Ba,GAAqBzK,EAAS,CAC1BtS,YAAa,GACbC,iBAAkB,GAClBC,gBAAiB,KAPL,2CAAH,wDAuBrB,GAAsC+Q,oBAAS,GAA/C,qBAAO0F,GAAP,MAAoBC,GAApB,MAEA,OACI,uCACA,wBAAMzD,UAAU,WAAW8G,IAAKA,EAAK7G,SAAU7C,GAAa8B,IAA5D,UACA,uBAAKc,UAAU,WAAf,UACA,yDACA,uBAAKA,UAAU,eAAf,UACI,2BAAUA,UAAU,QAApB,SAEI,qBAAGA,UAAWM,IAAW,OAAQ,CAACjM,MAAK,OAAEgJ,SAAF,IAAEA,IAAF,UAAEA,GAAQwG,qBAAV,aAAE,EAAuBtD,UAAhE,UACI,wBAAOC,QAAQ,aAAf,4BACA,oCAAOC,GAAG,aAAazO,KAAK,OAAO2O,YAAY,kBAAqBpD,GAAS,mBAC7E,uBAAMyC,UAAU,YAAhB,gBAA6B3C,SAA7B,IAA6BA,IAA7B,UAA6BA,GAAQwG,qBAArC,aAA6B,EAAuBtD,eAG5D,4BAAUP,UAAU,QAApB,UACI,qBAAGA,UAAWM,IAAW,QAAS,CAACjM,MAAK,OAAEgJ,SAAF,IAAEA,IAAF,UAAEA,GAAQgH,mBAAV,aAAE,EAAqB9D,UAA/D,UACI,wBAAOC,QAAQ,QAAf,2BACA,wBAAMR,UAAU,QAAhB,UACI,oCAAOhO,KAAK,SAASyO,GAAG,uBAA0BlD,GAAS,sBAC3D,gDAAOyC,UAAU,YAAYS,GAAG,YAAYzO,KAAK,MAAM2O,YAAY,OAAUpD,GAAS,4BAAtF,IAAkH4C,QAAS,kBAAIgJ,IAAmB,IAAQa,UAAQ,KAClK,oCAAOvJ,GAAG,QAAQT,UAAU,QAAQhO,KAAK,MAAM2O,YAAY,iBAAoBpD,GAAS,oBAE5F,uBAAMyC,UAAU,YAAhB,gBAA6B3C,SAA7B,IAA6BA,IAA7B,UAA6BA,GAAQgH,mBAArC,aAA6B,EAAqB9D,aAGtD,qBAAGP,UAAWM,IAAW,QAAS,CAACjM,MAAK,OAAEgJ,SAAF,IAAEA,IAAF,UAAEA,GAAQpB,aAAV,aAAE,EAAesE,UAAzD,UACI,wBAAOC,QAAQ,QAAf,mBACA,oCAAOC,GAAG,QAAQwJ,aAAa,QAAQjY,KAAK,QAAQ2O,YAAY,SAAYpD,GAAS,WACrF,uBAAMyC,UAAU,YAAhB,gBAA6B3C,SAA7B,IAA6BA,IAA7B,UAA6BA,GAAQpB,aAArC,aAA6B,EAAesE,gBAIpD,4BAAUP,UAAU,QAApB,UACI,qBAAGA,UAAWM,IAAW,cAAe,CAACjM,MAAK,OAAEgJ,SAAF,IAAEA,IAAF,UAAEA,GAAQ0G,gBAAV,aAAE,EAAkBxD,UAAlE,UACI,wBAAOC,QAAQ,cAAf,kCACA,oCAAOC,GAAG,cAAcwJ,aAAa,eAAejY,KAAK,WAAW2O,YAAY,wBAA4BpD,GAAS,cACrH,uBAAMyC,UAAU,YAAhB,gBAA6B3C,SAA7B,IAA6BA,IAA7B,UAA6BA,GAAQ0G,gBAArC,aAA6B,EAAkBxD,aAEnD,qBAAGP,UAAWM,IAAW,eAAgB,CAACjM,MAAK,OAAEgJ,SAAF,IAAEA,IAAF,UAAEA,GAAQ2G,uBAAV,aAAE,EAAyBzD,UAA1E,UACI,wBAAOC,QAAQ,eAAf,8BACA,oCAAOC,GAAG,eAAewJ,aAAa,eAAejY,KAAK,WAAW2O,YAAY,oBAAwBpD,GAAS,qBAClH,uBAAMyC,UAAU,YAAhB,gBAA6B3C,SAA7B,IAA6BA,IAA7B,UAA6BA,GAAQ2G,uBAArC,aAA6B,EAAyBzD,mBAKlE,4BAAUP,UAAU,QAApB,UACI,uBAAKA,UAAWM,IAAW,iBAAkB,CAACjM,MAAQoN,KAAgB8G,KAAqBC,KAAuBC,KAAoBC,KAAqBC,KAAsBC,KAAsBC,KAAvM,UACI,mEAEA,qBAAG7I,UAAU,UAAb,UACI,wBAAMA,UAAU,WAAhB,UACI,oCAAOhO,KAAK,WAAWyO,GAAG,UAAUrF,KAAK,WAAcmC,GAAS,iBAAmB,wBAAOiD,QAAQ,UAAf,wBAGnF+H,IACA,wBAAOvI,UAAWM,IAAW,QAAS,CAACjM,MAAK,OAAEgJ,SAAF,IAAEA,IAAF,UAAEA,GAAQyH,eAAV,aAAE,EAAiBvE,UAA/D,UACI,wBAAOC,QAAQ,UAAf,2CACA,oCAAOC,GAAG,UAAUzO,KAAK,OAAO2O,YAAY,iCAAoCpD,GAAS,UAAW,CAAE/B,SAAU,mBAAoBjE,IAAK,mBAClI,OAAN8F,SAAM,IAANA,IAAA,UAAAA,GAAQyH,eAAR,eAAiBvE,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,SAA7B,IAA6BA,IAA7B,UAA6BA,GAAQyH,eAArC,aAA6B,EAAiBvE,gBAMvF,qBAAGP,UAAU,YAAb,UACI,wBAAMA,UAAU,WAAhB,UACI,oCAAOhO,KAAK,WAAWyO,GAAG,YAAYrF,KAAK,aAAgBmC,GAAS,mBAAoB,wBAAOiD,QAAQ,YAAf,0BAGxFgI,IACA,wBAAMxI,UAAWM,IAAW,iBAAkB,CAACjM,MAAK,OAAEgJ,SAAF,IAAEA,IAAF,UAAEA,GAAQ+H,iBAAV,aAAE,EAAmB7E,UAAzE,UACI,wBAAOC,QAAQ,gBAAf,6CACA,oCAAOC,GAAG,gBAAgBzO,KAAK,OAAO2O,YAAY,mCAAsCpD,GAAS,gBAC1F,OAANF,SAAM,IAANA,IAAA,UAAAA,GAAQ+H,iBAAR,eAAmB7E,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,SAA7B,IAA6BA,IAA7B,UAA6BA,GAAQ+H,iBAArC,aAA6B,EAAmB7E,gBAM3F,qBAAGP,UAAU,SAAb,UACI,wBAAMA,UAAU,WAAhB,UACI,oCAAOhO,KAAK,WAAWyO,GAAG,SAASrF,KAAK,UAAamC,GAAS,gBAAiB,wBAAOiD,QAAQ,SAAf,uBAG/EiI,IACA,wBAAOzI,UAAWM,IAAW,QAAS,CAACjM,MAAK,OAAEgJ,SAAF,IAAEA,IAAF,UAAEA,GAAQiI,cAAV,aAAE,EAAgB/E,UAA9D,UACI,wBAAOC,QAAQ,aAAf,kDACA,oCAAOC,GAAG,YAAYzO,KAAK,OAAO2O,YAAY,wCAA2CpD,GAAS,aAC3F,OAANF,SAAM,IAANA,IAAA,UAAAA,GAAQiI,cAAR,eAAgB/E,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,SAA7B,IAA6BA,IAA7B,UAA6BA,GAAQiI,cAArC,aAA6B,EAAgB/E,gBAMrF,qBAAGP,UAAU,UAAb,UACI,wBAAMA,UAAU,WAAhB,UACI,oCAAOhO,KAAK,WAAWyO,GAAG,UAAUrF,KAAK,WAAcmC,GAAS,iBAAkB,wBAAOiD,QAAQ,UAAf,wBAGlFkI,IACA,wBAAM1I,UAAWM,IAAW,QAAS,CAACjM,MAAK,OAAEgJ,SAAF,IAAEA,IAAF,UAAEA,GAAQmI,eAAV,aAAE,EAAiBjF,UAA9D,UACI,wBAAOC,QAAQ,cAAf,mDACA,oCAAOC,GAAG,cAAczO,KAAK,OAAO2O,YAAY,kCAAqCpD,GAAS,cACtF,OAANF,SAAM,IAANA,IAAA,UAAAA,GAAQmI,eAAR,eAAiBjF,UAAW,uBAAMP,UAAU,YAAhB,gBAA8B3C,SAA9B,IAA8BA,IAA9B,UAA8BA,GAAQmI,eAAtC,aAA8B,EAAiBjF,gBAMzF,qBAAGP,UAAU,WAAb,UACI,wBAAMA,UAAU,WAAhB,UACI,oCAAOhO,KAAK,WAAWyO,GAAG,WAAWrF,KAAK,YAAemC,GAAS,kBAAkB,wBAAOiD,QAAQ,WAAf,yBAGpFmI,IACA,wBAAM3I,UAAWM,IAAW,QAAS,CAACjM,MAAK,OAAEgJ,SAAF,IAAEA,IAAF,UAAEA,GAAQqI,gBAAV,aAAE,EAAkBnF,UAA/D,UACI,wBAAOC,QAAQ,eAAf,4CACA,oCAAOC,GAAG,eAAezO,KAAK,OAAO2O,YAAY,kCAAqCpD,GAAS,eACxF,OAANF,SAAM,IAANA,IAAA,UAAAA,GAAQqI,gBAAR,eAAkBnF,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,SAA7B,IAA6BA,IAA7B,UAA6BA,GAAQqI,gBAArC,aAA6B,EAAkBnF,gBAMzF,qBAAGP,UAAU,YAAb,UACI,wBAAMA,UAAU,WAAhB,UACI,oCAAOhO,KAAK,WAAWyO,GAAG,YAAYrF,KAAK,aAAgBmC,GAAS,kBAAmB,wBAAOiD,QAAQ,YAAf,yBAGvFoI,IACA,wBAAM5I,UAAWM,IAAW,QAAS,CAACjM,MAAK,OAAEgJ,SAAF,IAAEA,IAAF,UAAEA,GAAQuI,gBAAV,aAAE,EAAkBrF,UAA/D,UACI,wBAAOC,QAAQ,gBAAf,4CACA,oCAAOC,GAAG,gBAAgBzO,KAAK,OAAO2O,YAAY,kCAAqCpD,GAAS,eACzF,OAANF,SAAM,IAANA,IAAA,UAAAA,GAAQuI,gBAAR,eAAkBrF,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,SAA7B,IAA6BA,IAA7B,UAA6BA,GAAQuI,gBAArC,aAA6B,EAAkBrF,gBAMzF,qBAAGP,UAAU,QAAb,UACI,wBAAMA,UAAU,WAAhB,UACI,oCAAOhO,KAAK,WAAWyO,GAAG,QAAQrF,KAAK,SAAYmC,GAAS,eAAgB,wBAAOiD,QAAQ,QAAf,sBAG5EqI,IACA,wBAAM7I,UAAWM,IAAW,QAAS,CAACjM,MAAK,OAAEgJ,SAAF,IAAEA,IAAF,UAAEA,GAAQyI,aAAV,aAAE,EAAevF,UAA5D,UACI,wBAAOC,QAAQ,YAAf,wDACA,oCAAOC,GAAG,YAAYzO,KAAK,OAAO2O,YAAY,8CAAiDpD,GAAS,YACjG,OAANF,SAAM,IAANA,IAAA,UAAAA,GAAQyI,aAAR,eAAevF,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,SAA7B,IAA6BA,IAA7B,UAA6BA,GAAQyI,aAArC,aAA6B,EAAevF,gBAMjFkB,KAAgB8G,KAAqBC,KAAuBC,KAAoBC,KAAqBC,KAAsBC,KAAsBC,KAAjJ,OAAmKxL,SAAnK,IAAmKA,IAAnK,UAAmKA,GAAQzH,uBAA3K,aAAmK,EAAyB2K,UAAW,oBAAGP,UAAU,YAAb,gBAA0B3C,SAA1B,IAA0BA,IAA1B,UAA0BA,GAAQzH,uBAAlC,aAA0B,EAAyB2K,aAKhQ,qBAAGP,UAAU,OAAb,4CAAmD,oBAAGE,KAAK,IAAIC,QAAS,SAAAf,GAAIA,EAAEC,iBAAiBoE,IAAe,IAAQrD,MAAM,yBAAzE,kDACnD,eAAC,GAAD,CAAS6B,KAAMuB,GAAatB,MAAO,kBAAIuB,IAAe,YAI1D,2BAAUzD,UAAU,SAApB,SACI,oBAAGA,UAAU,iBAAb,SACI,eAAC,GAAD,CAAmBja,KAAI,OAAU+L,UAAWiM,YAMhDmL,IAAmB,eAAC,GAAD,CAAwBjH,KAAMiH,GAAiBhH,MAAO,kBAAIiH,IAAmB,IAAQnD,eA/TpF,SAACoD,GACzB5L,GAAS,mBAAoB4L,GAC7B5L,GAAS,0BAAD,WAAgC4L,EAAI1E,YA6TqGuB,aAAcqC,GAAU,sBAGrKQ,IACA,eAAC,GAAD,CAAc7G,KAAM6G,GAAiB5G,MAAO,kBAAI6G,IAAmB,IAC/D3B,gBAxP6B,aAyP7BD,2BAA4BA,GAC5BE,oBAAqBgC,SCnZtB3gB,GAZF,CACTC,OAAU,CACNC,QAAS,wBACTE,UAAW,2BAEfe,UAAY,CACRC,UAAW,6BACXE,gBAAiB,qCCFnBkgB,GAAwBC,YAAS,CACnClf,IAAKmf,GAAazhB,OAAOC,QACzB6J,IAAI,WAAD,4BAAE,4BAAA3C,EAAA,sEACsByB,GAAQ8Y,mBAD9B,cACKpa,EADL,yBAEMA,EAASD,MAFf,2CAAF,kDAAC,KAWOsa,GALWtf,YAAM,CAC5BC,IAAKC,EAAKvC,OAAOC,QACjBuC,QAAS+e,KCPEK,GALYvf,YAAM,CAC7BC,IAAKC,EAAKvC,OAAOE,SACjBsC,QAAS,CAAC,SCqECuR,GAxEUnB,OAAaoB,MAAM,CACxC6N,YAAajP,OAAaC,SAAS,wCACnCiP,OAAQlP,OACKwJ,KAAK,CAAC,eAAgB,CACnBC,GAAI,SAAC0F,GAAD,MAAuB,WAAVA,GACjBjZ,KAAM8J,OAAaC,SAAS,+BAC5B0J,UAAW3J,OAAa2I,cAAcC,aAEtDwG,MAAOpP,OACMwJ,KAAK,CAAC,eAAgB,CACnBC,GAAI,SAAC0F,GAAD,MAAuB,UAAVA,GACjBjZ,KAAM8J,OAAaC,SAAS,2BAC5B0J,UAAW3J,OAAa2I,cAAcC,aAEtD9I,UAAWE,OACEK,KAAK,iBAAkB,yBAAyB,SAAS2I,GAEtD,MAAmB,kBADG3c,KAAK4c,OAApBgG,aAEAjG,GAAOqG,SAASrG,GAAO,KAE9CsG,UAAWtP,OACMC,SAAS,YACTI,KAAK,eAAgB,YAAW,SAAC9V,GAAD,OAAWA,EAAQ,KACpEglB,SAAUvP,OAAaK,KAAK,kBAAmB,0BAA0B,SAAS2I,GAClE,MAAiC3c,KAAK4c,OAA/BgG,EAAP,EAAOA,YAAanP,EAApB,EAAoBA,UACpB,MAAmB,kBAAhBmP,KACCnP,GAAauP,SAASvP,GAAa,GAA6B,IAAxBuP,SAASvP,IAC9CkJ,EAAI1H,WAE3BkO,SAAUxP,OAAaK,KAAK,kBAAmB,YAAY,SAAS2I,GAEpD,MAAmB,kBADG3c,KAAK4c,OAApBgG,aAEAjG,EAAI1H,UAE3BmO,YAAazP,OAAaK,KAAK,qBAAsB,YAAY,SAAS2I,GAE1D,MAAmB,kBADG3c,KAAK4c,OAApBgG,aAEAjG,EAAI1H,UAE3BoO,cAAe1P,OAAaK,KAAK,uBAAwB,YAAY,SAAS2I,GAC9D,MAAiC3c,KAAK4c,OAA/BgG,EAAP,EAAOA,YAAanP,EAApB,EAAoBA,UACpB,MAAmB,kBAAhBmP,KACCnP,GAAauP,SAASvP,GAAa,GAAKuP,SAASvP,GAAa,GAC3DkJ,EAAI1H,WAE3BqO,IAAK3P,OACIK,KAAK,cAAe,YAAY,SAAS2I,GACtC,MAAiC3c,KAAK4c,OAA/BgG,EAAP,EAAOA,YAAanP,EAApB,EAAoBA,UACpB,MAAmB,kBAAhBmP,KACCnP,GAAauP,SAASvP,GAAa,GAAKuP,SAASvP,GAAa,GAC3DkJ,EAAI1H,WAEdjB,KAAK,aAAc,eAAe,SAAS2I,GACxC,MAAiC3c,KAAK4c,OAA/BgG,EAAP,EAAOA,YAAanP,EAApB,EAAoBA,UACpB,MAAmB,kBAAhBmP,KACCnP,GAAauP,SAASvP,GAAa,GAAKuP,SAASvP,GAAa,IAAMkJ,GACjEA,EAAI1H,OAAOhB,MAAM,4BAEpCsP,KAAM5P,OAAaK,KAAK,cAAe,YAAY,SAAS2I,GACxD,MAAiC3c,KAAK4c,OAA/BgG,EAAP,EAAOA,YAAanP,EAApB,EAAoBA,UACpB,MAAmB,kBAAhBmP,KACCnP,GAAauP,SAASvP,GAAa,GAA4B,IAAvBuP,SAASvP,IAC9CkJ,EAAI1H,WAEfuO,UAAW7P,OAAaK,KAAK,eAAgB,YAAY,SAAS2I,GAC9D,MAAiC3c,KAAK4c,OAA/BgG,EAAP,EAAOA,YAAanP,EAApB,EAAoBA,UACpB,MAAmB,kBAAhBmP,KACCnP,GAAauP,SAASvP,GAAa,GAA6B,IAAxBuP,SAASvP,IAC9CkJ,EAAI1H,aC9DJwO,GALcrgB,YAAM,CAC/BC,IAAKC,EAAKvC,OAAOG,UACjBqC,QAAS,KCGEmgB,GALqBtgB,YAAM,CACtCC,IAAKC,EAAKvC,OAAOK,kBACjBmC,QAAS,KC2EEogB,GAxEG,WACd,IAAMzW,EAAQlB,KACR4X,EAAY7Z,YAAe0Z,IAC3BI,EAAe9Z,YAAetD,IAC9Bqd,EAAoB/Z,YAAe2Z,IACzC,EAAwCxN,oBAAS,GAAjD,mBAAOC,EAAP,KAAqBC,EAArB,KACA,EAAoDF,oBAAS,GAA7D,mBAAO6N,EAAP,KAA2BC,EAA3B,KACMC,EAAa3D,kBAAO,GAE1B7J,qBAAU,WACN,OAAO,WACLwN,EAAWrS,SAAU,KAEtB,IAEL,IAAMsS,EAAkB3V,aAAkB,gBAAGC,EAAH,EAAGA,IAAH,6BAAa,sBAAAtG,EAAA,+EAC5CyB,GAAQwa,wBACdta,MAAK,SAAAxB,GACFmG,EAAI/H,GAAwB4B,EAASD,SAExCkG,OAAM,SAAC7B,GAEJ,MADAS,EAAMT,MAAM,sCAAuCA,GAC7CA,MAPyC,8CAWjD2X,EAAe7V,aAAkB,gBAAGC,EAAH,EAAGA,IAAH,6BAAa,sBAAAtG,EAAA,+EACzCyB,GAAQ0a,UAAU,aACxBxa,MAAK,SAAAxB,GACFmG,EAAIiV,GAAsBpb,EAASD,SAEtCkG,OAAM,SAAC7B,GAEJ,MADAS,EAAMT,MAAM,oCAAqCA,GAC3CA,MAPsC,8CAW9C6X,EAAc/V,aAAkB,gBAAGC,EAAH,EAAGA,IAAH,6BAAa,sBAAAtG,EAAA,+EACxCyB,GAAQ0a,UAAU,oBACxBxa,MAAK,SAAAxB,GACFmG,EAAIkV,GAA6Brb,EAASD,SAE7CkG,OAAM,SAAC7B,GAEJ,MADAS,EAAMT,MAAM,4CAA6CA,GACnDA,MAPqC,8CA2BnD,OAhBAgK,qBAAU,WACHsN,GACCD,GAAkD,IAA7BA,EAAkB7K,SACvCgL,EAAWrS,SAAWoS,GAAsB,GAC5CM,IAAc1E,SAAQ,kBAAKqE,EAAWrS,SAAWoS,GAAsB,SAE5E,CAACF,EAAmBQ,EAAaP,EAAoBC,IAExDvN,qBAAU,WACHN,GACCyN,GAAkC,IAArBA,EAAU3K,SACvBgL,EAAWrS,SAAWwE,GAAgB,GACtCgO,IAAexE,SAAQ,kBAAKqE,EAAWrS,SAAWwE,GAAgB,SAEvE,CAACwN,EAAWQ,EAAcjO,EAAcC,IAEpC,CACHwN,YACAC,eACAC,oBACAI,oBCjDOK,GAxBM,SAACta,GAClB,IAAQoQ,EAA+DpQ,EAA/DoQ,KAAMC,EAAyDrQ,EAAzDqQ,MAAOkK,EAAkDva,EAAlDua,QAASC,EAAyCxa,EAAzCwa,QAASC,EAAgCza,EAAhCya,IAAKC,EAA2B1a,EAA3B0a,SAA5C,EAAuE1a,EAAjB2a,eAAtD,MAA8D,KAA9D,EAEA,OACI,gBAAC,KAAD,CAAOlM,WAAY,CAAE8B,QAAS,0BAA2BC,MAAO,yBAA4BJ,KAAMA,EAAMpE,QAASqE,EAAOK,QAAM,EAA9H,UAEQ8J,GAAW,qBAAIrM,UAAU,UAAd,SAAyBqM,IAGpCC,GAAO,oBAAGtM,UAAU,cAAb,SAA4BsM,IAGnCC,GACA,sBAAKvM,UAAU,MAAf,SACKuM,IAGT,sBAAKvM,UAAU,SAAf,SACG,oBAAGA,UAAU,YAAb,SAAyB,oBAAGE,KAAK,IAAIC,QAAS,SAACf,GAAKA,EAAEC,iBAAkB+M,KAAahM,MAAM,mBAAlE,SAAsFoM,YCuV/GC,GA5VI,SAAC5a,GAAW,IAAD,oEAElB6Z,EADeH,KACfG,kBACDzD,EAA0BpW,EAA1BoW,SAAUyE,EAAgB7a,EAAhB6a,QAASC,EAAO9a,EAAP8a,IAC1B,EAA4CD,EAArCE,gBAAP,MAAgB,OAAhB,IAA4CF,EAApBG,mBAAxB,SACOC,EAAyB7E,EAAzB6E,sBACDtQ,EAAkB3H,KAChBS,EAA6BkH,EAA7BlH,YAAaE,EAAgBgH,EAAhBhH,YACbnJ,GAAyDiJ,EAAzDjJ,uBAAwBC,GAAiCgJ,EAAjChJ,OAAQC,GAAyB+I,EAAzB/I,UAAWE,GAAc6I,EAAd7I,UAG/CpB,GAQAmK,EARAnK,SACAC,GAOAkK,EAPAlK,YACAC,GAMAiK,EANAjK,cACAC,GAKAgK,EALAhK,UACAC,GAIA+J,EAJA/J,UACAC,GAGA8J,EAHA9J,KACA7C,GAEA2M,EAFA3M,SACA8C,GACA6J,EADA7J,UAEJ,GAAsCmS,mBAAS,IAA/C,qBAAOiP,GAAP,MAAoBC,GAApB,MACMC,GAAsB/T,YAAuBoR,IAC7C4C,GAAe,CAAC,EAAG,GAAI,IAAK,EAAG,IAC/BC,GAAexb,YAAe4Y,IACrB6C,GAAmDH,GAA1DI,MAAmCC,GAAuBL,GAAjCM,SAEjClP,qBAAU,WACN,GACS,aADD+O,GAEAJ,GAAeM,MAaxB,CAACF,GAAkBE,KAEtB,OAOItQ,aAAQ,CACRC,cAAe,CACXuN,YAAane,GACboe,OAAQne,GACRqe,MAAOpe,GACP8O,UAAW1P,GACXmf,SAAUjiB,GACVkiB,SAAU1f,GACV2f,YAAa1f,GACb2f,cAAe1f,GACf2f,IAAK1f,GACL2f,KAAMzf,GACN0f,UAAW3f,GACXof,UAAWa,EAAkBhR,MAAK,SAAA8S,GAAC,OAAEA,EAAEC,SAAWhhB,MAAaA,IAAa,GAEhFyQ,SAAUC,aAAYT,MArBtBU,GADJ,GACIA,aACaC,GAFjB,GAEIC,UAAaD,OACbE,GAHJ,GAGIA,SACA8K,GAJJ,GAIIA,MACA7K,GALJ,GAKIA,SAoBEkQ,GAAmBrF,GAAM,cAAehc,IACxCshB,GAAiBtF,GAAM,aAAc,GAE3ChK,qBAAU,kBAAMb,GAAS,cAAenR,MAAyB,CAACA,GAAwBmR,KAC1Fa,qBAAU,kBAAMb,GAAS,SAAUlR,MAAS,CAACA,GAAQkR,KACrDa,qBAAU,kBAAMb,GAAS,QAASjR,MAAY,CAACA,GAAWiR,KAC1Da,qBAAU,kBAAMb,GAAS,YAAa7R,MAAY,CAACA,GAAW6R,KAC9Da,qBAAU,WACHqN,EAAkBhR,MAAK,SAAA8S,GAAC,OAAEA,EAAEC,SAAWhhB,OACtC+Q,GAAS,YAAa/Q,MAC3B,CAACA,GAAWif,EAAmBlO,KAClCa,qBAAU,kBAAMb,GAAS,WAAY3U,MAAW,CAACA,GAAU2U,KAC3Da,qBAAU,kBAAMb,GAAS,WAAYnS,MAAW,CAACA,GAAUmS,KAC3Da,qBAAU,kBAAMb,GAAS,cAAelS,MAAc,CAACA,GAAakS,KACpEa,qBAAU,kBAAMb,GAAS,gBAAiBjS,MAAgB,CAACA,GAAeiS,KAC1Ea,qBAAU,kBAAMb,GAAS,MAAOhS,MAAY,CAACA,GAAWgS,KACxDa,qBAAU,kBAAMb,GAAS,OAAQ9R,MAAO,CAACA,GAAM8R,KAC/Ca,qBAAU,kBAAMb,GAAS,YAAa/R,MAAY,CAACA,GAAW+R,KAE9D,OAAwCM,oBAAS,GAAjD,qBAAOC,GAAP,MAAqBC,GAArB,MAEMkB,GAAe,uCAAG,WAAOC,EAASC,GAAhB,eAAAtP,EAAA,yDACpBsP,EAAEC,kBAECtB,GAHiB,iDAIpBC,IAAgB,GAEVsB,EAAgB,CAClBjT,uBAAwB8S,EAAQqL,YAChCje,UAAW4S,EAAQwL,MACnBre,OAAQ6S,EAAQsL,OAChBlhB,YAAa,CACTiC,UAAW2T,EAAQ+L,IACnB7f,SAAU8T,EAAQ4L,SAClBtf,UAAW0T,EAAQiM,UACnB9f,YAAa6T,EAAQ6L,YACrBzf,cAAe4T,EAAQ8L,cACvBvf,KAAMyT,EAAQgM,KACdxf,UAAWwT,EAAQ9D,UACnBxS,SAAgC,IAAtBsW,EAAQ9D,UAAkB,MAAQ8D,EAAQ2L,UAExDre,UAAY0S,EAAQ0L,WAGxBrO,EAAgB/F,kBAAkB6I,GACjC7N,MAAK,WACCqb,GAA0D,oBAA1BA,GAC/BA,OAGPtF,SAAQ,WACLxJ,IAAgB,MA9BA,2CAAH,wDAkCrB,GAAoDF,oBAAS,GAA7D,qBAAO8P,GAAP,MAA2BC,GAA3B,MAEA,GAAsC/P,oBAAS,GAA/C,qBAAO0F,GAAP,MAAoBC,GAApB,MAEA,OACI,wBAAMzD,UAAW2M,EAAK1M,SAAU7C,GAAa8B,IAA7C,UACI,uBAAKc,UAAU,WAAf,UACK6M,GAAe,kEAGXjC,SAASne,IAAa,GAAMif,EAAkBhR,MAAK,SAAA8S,GAAC,OAAGA,EAAEC,SAAWhhB,MAErE,uBAAKuT,UAAU,UAAf,UACI,yDAA2B0L,EAAkBhR,MAAK,SAAA8S,GAAC,OAAG5C,SAAS4C,EAAEC,UAAY7C,SAASne,OAAYqhB,SAAlG,YAAoH,uBAAM9N,UAAU,OAAOG,QAAS,kBAAI0N,IAAsB,IAA1D,SAAkE,eAAC,KAAD,CAAiB7nB,KAAM+nB,YAC7M,gBAAC,GAAD,CAAc9L,KAAM2L,GAChB1L,MAAO,kBAAI2L,IAAsB,IACjCzB,QAASwB,GACTvB,QAAS,0BAA4BX,EAAkBhR,MAAK,SAAA8S,GAAC,OAAG5C,SAAS4C,EAAEC,UAAY7C,SAASne,OAAYqhB,SAAW,UACvHtB,QAAQ,aAJZ,UAM0B,KAAd/f,GAEC,wHACe,KAAdA,GAEE,wIAEC,0HAGT,uFAAwD,oBAAGyT,KAAK,IAAIC,QAAS,SAAAf,GAAIA,EAAEC,iBAAiBoE,IAAe,IAAQrD,MAAM,yBAAzE,gCAAxD,OACA,yHACA,eAAC,GAAD,CAAS6B,KAAMuB,GAAatB,MAAO,kBAAIuB,IAAe,YAGjE,4BAAUzD,UAAWM,IAAW,QAAS,CAAEjM,MAAK,OAAEgJ,SAAF,IAAEA,IAAF,UAAEA,GAAQwN,iBAAV,aAAE,EAAmBtK,UAArE,UACG,gEACA,uBAAKP,UAAWM,IAAW,cAAe,CAAEjM,MAAK,OAAEgJ,SAAF,IAAEA,IAAF,UAAEA,GAAQwN,iBAAV,aAAE,EAAmBtK,UAAtE,UAEQmL,EAAkB7R,KAAI,SAACmU,EAASlN,GAAV,OAClB,oBAAGd,UAAU,UAAb,SACI,wBAAMA,UAAU,QAAhB,UACI,oCAAOhO,KAAK,QAAQyO,GAAE,kBAAaK,GAAK1F,KAAI,kBAAa0F,GAAKhb,MAAOkoB,EAAQP,QAAYlQ,GAAS,eAAgB,wBAAOiD,QAAO,kBAAaM,GAA3B,SAAiCkN,EAAQF,eAFnK,cAAmChN,QAOpC,OAANzD,SAAM,IAANA,IAAA,UAAAA,GAAQwN,iBAAR,eAAmBtK,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,SAA7B,IAA6BA,IAA7B,UAA6BA,GAAQwN,iBAArC,aAA6B,EAAmBtK,gBAK3F,4BAAUP,UAAU,QAApB,UACI,wDACA,uBAAKA,UAAU,cAAf,UACI,qBAAGA,UAAU,SAAb,UACI,wBAAMA,UAAU,QAAhB,UACI,oCAAOhO,KAAK,QAAQyO,GAAG,SAASrF,KAAK,SAAStV,MAAM,UAC5CyX,GAAS,iBACf,wBAAOiD,QAAQ,SAAf,uBAGmB,WAArBkN,IACA,wBAAM1N,UAAWM,IAAW,QAAS,CAAEjM,MAAK,OAAEgJ,SAAF,IAAEA,IAAF,UAAEA,GAAQoN,cAAV,aAAE,EAAgBlK,UAA9D,UACI,wBAAOC,QAAQ,aAAf,4BACA,oCAAOC,GAAG,aAAazO,KAAK,OACxB2O,YAAY,kBACRpD,GAAS,aAEV,OAANF,SAAM,IAANA,IAAA,UAAAA,GAAQoN,cAAR,eAAgBlK,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,SAA7B,IAA6BA,IAA7B,UAA6BA,GAAQoN,cAArC,aAA6B,EAAgBlK,gBAMrF,qBAAGP,UAAU,QAAb,UACI,wBAAMA,UAAU,QAAhB,UACI,oCAAOhO,KAAK,QAAQyO,GAAG,QAAQrF,KAAK,QAAQtV,MAAM,SAC1CyX,GAAS,iBAAkB,wBAAOiD,QAAQ,QAAf,sBAId,UAArBkN,IACA,wBAAM1N,UAAWM,IAAW,QAAS,CAAEjM,MAAK,OAAEgJ,SAAF,IAAEA,IAAF,UAAEA,GAAQsN,aAAV,aAAE,EAAepK,UAA7D,UACI,wBAAOC,QAAQ,WAAf,0BACA,oCAAOC,GAAG,WAAWzO,KAAK,OAAO2O,YAAY,gBAAmBpD,GAAS,YAClE,OAANF,SAAM,IAANA,IAAA,UAAAA,GAAQsN,aAAR,eAAepK,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,SAA7B,IAA6BA,IAA7B,UAA6BA,GAAQsN,aAArC,aAA6B,EAAepK,gBAMnF,qBAAGP,UAAU,gBAAb,UACI,wBAAMA,UAAU,QAAhB,UACI,oCAAOhO,KAAK,QAAQyO,GAAG,gBAAgBrF,KAAK,gBACxCtV,MAAM,iBAAoByX,GAAS,iBACrC,wBAAOiD,QAAQ,gBAAf,8BAImB,kBAArBkN,IACA,wBAAM1N,UAAU,cAAhB,UACI,uBAAMA,UAAU,QAAhB,SACI,wBAAMA,UAAWM,IAAW,UAAW,CAAEjM,MAAK,OAAEgJ,SAAF,IAAEA,IAAF,UAAEA,GAAQhC,iBAAV,aAAE,EAAmBkF,UAAnE,UACI,wBAAOC,QAAQ,UAAf,qBACA,uBAAMR,UAAU,SAAhB,SACI,kDAAQ5E,KAAK,UAAUqF,GAAG,WAClBlD,GAAS,cADjB,cAGQwP,GACC/S,QAAO,SAAAF,GAAG,OAAIoT,GAAaxV,SAASoC,EAAI2T,WACxCQ,MAAK,SAACne,EAAGoe,GAAJ,OAAUpe,EAAEge,SAAWI,EAAEJ,SAAW,GAAK,KAC9CjU,KAAI,SAACsU,GAAD,OACD,yBAA0CroB,MAAOqoB,EAAQV,OAAzD,SAAkEU,EAAQL,UAA1E,kBAAwBK,EAAQV,YAGxC,yBAAQxb,UAAU,EAAMnM,OAAQ,EAAhC,mDAEIinB,GACC/S,QAAO,SAAAF,GAAG,OAAKoT,GAAaxV,SAASoC,EAAI2T,WACzCQ,MAAK,SAACne,EAAGoe,GAAJ,OAAUpe,EAAEge,SAAWI,EAAEJ,SAAW,GAAK,KAC9CjU,KAAI,SAACsU,GAAD,OACD,yBAA0CroB,MAAOqoB,EAAQV,OAAzD,SAAkEU,EAAQL,UAA1E,kBAAwBK,EAAQV,mBAKzC,OAANpQ,SAAM,IAANA,IAAA,UAAAA,GAAQhC,iBAAR,eAAmBkF,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,SAA7B,IAA6BA,IAA7B,UAA6BA,GAAQhC,iBAArC,aAA6B,EAAmBkF,eAKnFoN,GAAiB,GACjB,uBAAM3N,UAAU,QAAhB,SACI,wBAAMA,UAAWM,IAAW,WAAY,CAAEjM,MAAK,OAAEgJ,SAAF,IAAEA,IAAF,UAAEA,GAAQyN,gBAAV,aAAE,EAAkBvK,UAAnE,UACI,wBAAOC,QAAQ,WAAf,sBACA,uBAAMR,UAAU,SAAhB,SACI,iDAAQ5E,KAAK,WAAWqF,GAAG,YACnBlD,GAAS,aADjB,aAGQ4P,GAAatT,KAAI,SAACiR,GAAD,OACb,yBAAuBhlB,MAAOglB,EAA9B,SAAyCA,GAA5BA,YAKtB,OAANzN,SAAM,IAANA,IAAA,UAAAA,GAAQhC,iBAAR,eAAmBkF,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,SAA7B,IAA6BA,IAA7B,UAA6BA,GAAQhC,iBAArC,aAA6B,EAAmBkF,eAM3F,wBAAMP,UAAWM,IAAW,QAAS,CAAEjM,MAAK,OAAEgJ,SAAF,IAAEA,IAAF,UAAEA,GAAQ0N,gBAAV,aAAE,EAAkBxK,UAAhE,UACI,wBAAOC,QAAQ,SAAf,wCACA,oCAAOC,GAAG,SAASzO,KAAK,OAAO2O,YAAY,8BACnCpD,GAAS,eAEV,OAANF,SAAM,IAANA,IAAA,UAAAA,GAAQ0N,gBAAR,eAAkBxK,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,SAA7B,IAA6BA,IAA7B,UAA6BA,GAAQ0N,gBAArC,aAA6B,EAAkBxK,aAGjF,wBAAMP,UAAWM,IAAW,QAAS,CAAEjM,MAAK,OAAEgJ,SAAF,IAAEA,IAAF,UAAEA,GAAQ2N,mBAAV,aAAE,EAAqBzK,UAAnE,UACI,wBAAOC,QAAQ,WAAf,0BACA,oCAAOC,GAAG,WAAWzO,KAAK,OAAO2O,YAAY,gBACrCpD,GAAS,kBAEV,OAANF,SAAM,IAANA,IAAA,UAAAA,GAAQ2N,mBAAR,eAAqBzK,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,SAA7B,IAA6BA,IAA7B,UAA6BA,GAAQ2N,mBAArC,aAA6B,EAAqBzK,aAGnFoN,GAAiB,GACjB,uCACI,wBAAM3N,UAAWM,IAAW,QAAS,CAAEjM,MAAK,OAAEgJ,SAAF,IAAEA,IAAF,UAAEA,GAAQ+N,iBAAV,aAAE,EAAmB7K,UAAjE,UACI,wBAAOC,QAAQ,SAAf,uBACA,oCAAOC,GAAG,SAASzO,KAAK,OAAO2O,YAAY,aACnCpD,GAAS,gBACV,OAANF,SAAM,IAANA,IAAA,UAAAA,GAAQ+N,iBAAR,eAAmB7K,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,SAA7B,IAA6BA,IAA7B,UAA6BA,GAAQ+N,iBAArC,aAA6B,EAAmB7K,aAGnF,wBAAMP,UAAWM,IAAW,QAAS,CAAEjM,MAAK,OAAEgJ,SAAF,IAAEA,IAAF,UAAEA,GAAQ8N,YAAV,aAAE,EAAc5K,UAA5D,UACI,wBAAOC,QAAQ,SAAf,sDACA,oCAAOC,GAAG,SAASzO,KAAK,OAAO2O,YAAY,QACnCpD,GAAS,WAEV,OAANF,SAAM,IAANA,IAAA,UAAAA,GAAQ8N,YAAR,eAAc5K,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,SAA7B,IAA6BA,IAA7B,UAA6BA,GAAQ8N,YAArC,aAA6B,EAAc5K,gBAM7EoN,IAA+C,IAA7B/C,SAAS+C,KAC3B,uCACI,wBAAM3N,UAAWM,IAAW,QAAS,CAAEjM,MAAK,OAAEgJ,SAAF,IAAEA,IAAF,UAAEA,GAAQ6N,WAAV,aAAE,EAAa3K,UAA3D,UACI,wBAAOC,QAAQ,SAAf,wBACA,oCAAOC,GAAG,SAASzO,KAAK,OAAO2O,YAAY,OACnCpD,GAAS,UACV,OAANF,SAAM,IAANA,IAAA,UAAAA,GAAQ6N,WAAR,eAAa3K,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,SAA7B,IAA6BA,IAA7B,UAA6BA,GAAQ6N,WAArC,aAA6B,EAAa3K,aAGvE,wBAAMP,UAAWM,IAAW,QAAS,CAAEjM,MAAK,OAAEgJ,SAAF,IAAEA,IAAF,UAAEA,GAAQ4N,qBAAV,aAAE,EAAuB1K,UAArE,UACI,wBAAOC,QAAQ,SAAf,4BACA,oCAAOC,GAAG,SAASzO,KAAK,OAAO2O,YAAY,kBACnCpD,GAAS,oBAEV,OAANF,SAAM,IAANA,IAAA,UAAAA,GAAQ4N,qBAAR,eAAuB1K,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,SAA7B,IAA6BA,IAA7B,UAA6BA,GAAQ4N,qBAArC,aAA6B,EAAuB1K,sBAO/G,oBAAGP,UAAU,YAAb,2CAIZ,2BAAUA,UAAU,SAApB,SACI,oBAAGA,UAAU,iBAAb,SACI,eAAC,GAAD,CAAmBja,KAAM6mB,EAAU9a,UAAWiM,a,UCrUnDrB,GA3BUnB,OAAaoB,MAAM,CACxCyR,YAAa7S,OAAasB,OAAOrB,SAAS,YAC1C6S,QAAS9S,OAAasB,OAAOrB,SAAS,YACtC8S,SAAU/S,OAAa2I,cAAcC,WACrCoK,KAAMhT,OAAasB,OAAOrB,SAAS,YACnCgT,QAASjT,OACIK,KAAK,eAAgB,uBAAuB,SAAS2I,GAClD,OAAOA,GAAOqG,SAASrG,GAAO,KAE9ClJ,UAAWE,OACEK,KAAK,iBAAkB,yBAAyB,SAAS2I,GACtD,OAAOA,GAAOqG,SAASrG,GAAO,KAE9CkK,IAAKlT,OACAK,KAAK,cAAe,YAAY,SAAS2I,GACtC,IAAOlJ,EAAazT,KAAK4c,OAAlBnJ,UACP,OAAIA,GAAauP,SAASvP,GAAa,GAAKuP,SAASvP,GAAa,GAC3DkJ,EAAI1H,UAEdjB,KAAK,aAAc,eAAe,SAAS2I,GACxC,IAAOlJ,EAAazT,KAAK4c,OAAlBnJ,UACP,OAAIA,GAAauP,SAASvP,GAAa,GAAKuP,SAASvP,GAAa,IAAMkJ,GACjEmK,aAAWnK,EAAI1H,WAE9B8R,IAAKpT,SCuOMqT,GArPM,SAAC/c,GAAW,IAAD,oCACrBoW,EAA0BpW,EAA1BoW,SAAUyE,EAAgB7a,EAAhB6a,QAASC,EAAO9a,EAAP8a,IAC1B,EAAkED,EAA3DmC,sBAAP,WAAkEnC,EAArCE,gBAA7B,MAAsC,OAAtC,IAAkEF,EAApBG,mBAA9C,SACOiC,EAA8C7G,EAA9C6G,sBAAuBC,EAAuB9G,EAAvB8G,oBACxBvS,EAAkB3H,KACxB,EAAsCiJ,mBAAS,IAA/C,mBAAOiP,EAAP,KAAoBC,EAApB,KACA,EAAkClP,mBAAS,IAA3C,mBAAOkR,EAAP,KAAkBC,EAAlB,KACMhC,EAAsB/T,YAAuBoR,IACpC8C,EAAmDH,EAA1DI,MAAmCC,EAAuBL,EAAjCM,SACzB7X,EAA6B8G,EAA7B9G,YAAaF,EAAgBgH,EAAhBhH,YACf0X,EAAe,CAAC,EAAG,GAAI,IAAK,EAAG,IAC7BrhB,EAQJ6J,EARI7J,YACJC,EAOA4J,EAPA5J,QACAC,GAMA2J,EANA3J,SACAC,GAKA0J,EALA1J,KACAC,GAIAyJ,EAJAzJ,QACAN,GAGA+J,EAHA/J,UACAO,GAEAwJ,EAFAxJ,IACAC,GACAuJ,EADAvJ,IAGe+iB,GAAkB1Z,EAA7B7J,UAER0S,qBAAU,WACN,GACS,aADD+O,EAEAJ,EAAeM,KAaxB,CAACF,EAAkBE,IAEtB,IAAM6B,GAAiB,uCAAG,WAAOC,GAAP,SAAAtf,EAAA,sDAClBsf,EAAM,GAAGH,EAAa,IAE1BnT,GAAcuT,eAAezE,SAASwE,IACjC3d,MAAK,SAAAxB,GAAQ,OAAIgf,EAAahf,EAASD,SACvCkG,OAAM,SAAC7B,GACJ,MAAMA,KANQ,2CAAH,sDAWvB,GAOI2I,aAAQ,CACRC,cAAe,CACXmR,YAAaviB,EACbwiB,QAASviB,EACTwiB,SAAUviB,GACVwiB,KAAMviB,GACNwiB,QAASviB,GACToP,UAAW1P,GAAY,EAAIA,GAAYujB,GACvCT,IAAKviB,GACLyiB,IAAKxiB,IAET+Q,SAAUC,aAAYT,MAjBtBU,GADJ,GACIA,aACaC,GAFjB,GAEIC,UAAaD,OACbE,GAHJ,GAGIA,SACA8K,GAJJ,GAIIA,MACA7K,GALJ,GAKIA,SAgBEmQ,GAAiBtF,GAAM,YAAa1c,GAAY,EAAIA,GAAYujB,IAStE7Q,qBAAU,kBAAMb,GAAS,cAAe3R,KAAc,CAACA,EAAa2R,KACpEa,qBAAU,kBAAMb,GAAS,UAAW1R,KAAU,CAACA,EAAS0R,KACxDa,qBAAU,kBAAMb,GAAS,WAAYzR,MAAW,CAACA,GAAUyR,KAC3Da,qBAAU,kBAAMb,GAAS,OAAQxR,MAAO,CAACA,GAAMwR,KAC/Ca,qBAAU,kBAAMb,GAAS,UAAWvR,MAAU,CAACA,GAASuR,KACxDa,qBAAU,kBAAMb,GAAS,YAAa7R,MAAY,CAACA,GAAW6R,KAC9Da,qBAAU,kBAAMb,GAAS,MAAOtR,MAAM,CAACA,GAAKsR,KAC5Ca,qBAAU,kBAAMb,GAAS,MAAOrR,MAAM,CAACA,GAAKqR,KAE5Ca,qBAAU,WACF1S,GAAY,EACZwjB,GAAkBxjB,IAEbujB,GAAgB,GACrBC,GAAkBD,MAGvB,IAEH,IAIA,GAAwCpR,oBAAS,GAAjD,qBAAOC,GAAP,MAAqBC,GAArB,MAEMkB,GAAe,uCAAG,WAAOC,EAASC,GAAhB,eAAAtP,EAAA,yDACpBsP,EAAEC,kBAECtB,GAHiB,iDAIpBC,IAAgB,GAEVsB,EAAgB,CAClBzT,YAAasT,EAAQiP,YACrBtiB,QAASqT,EAAQkP,QACjBtiB,SAAUoT,EAAQmP,SAClBtiB,KAAMmT,EAAQoP,KACdtiB,QAASkT,EAAQqP,QACjB7iB,UAAWwT,EAAQ9D,UACnBnP,IAAyB,IAApBiT,EAAQ9D,UAAgB8D,EAAQsP,IAAM,GAC3CtiB,IAAKgT,EAAQwP,KAGjBnS,EAAgB9F,kBAAkB4I,GACjC7N,MAAK,WACCqd,GAAyD,oBAAzBA,GAC/BA,OAEPtH,SAAQ,WACLxJ,IAAgB,MAvBA,2CAAH,wDA2BrB,OACI,wBAAMgC,UAAW2M,EAAK1M,SAAU7C,GAAa8B,IAA7C,UACI,uBAAKc,UAAU,aAAf,UACK6M,GAAe,sDAEhB,4BAAU7M,UAAU,QAApB,UAEI,qBAAGA,UAAWM,IAAW,eAAgB,CAAEjM,MAAK,OAAEgJ,SAAF,IAAEA,IAAF,UAAEA,GAAQ+Q,mBAAV,aAAE,EAAqB7N,UAAvE,UACI,wBAAOC,QAAQ,eAAf,0BACA,oCAAOC,GAAG,eAAezO,KAAK,OAAO2O,YAAY,gBAAmBpD,GAAS,kBACtE,OAANF,SAAM,IAANA,IAAA,UAAAA,GAAQ+Q,mBAAR,eAAqB7N,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,SAA7B,IAA6BA,IAA7B,UAA6BA,GAAQ+Q,mBAArC,aAA6B,EAAqB7N,aAGvF,qBAAGP,UAAWM,IAAW,kBAAmB,CAAEjM,MAAK,OAAEgJ,SAAF,IAAEA,IAAF,UAAEA,GAAQhC,iBAAV,aAAE,EAAmBkF,UAAxE,UACI,wBAAOC,QAAQ,kBAAf,qBACA,uBAAMR,UAAU,SAAhB,SACI,kDAAQ5E,KAAK,kBAAkBqF,GAAG,mBAC1BlD,GAAS,YAAa,CAAEqD,SA5E/B,SAACxB,GACtB5B,GAAS,WAAY,GACrB2R,GAAkB/P,EAAEX,OAAO3Y,WAyEP,cAEI,yBAAQmM,UAAU,EAAMnM,MAAM,KAA9B,2BAEIinB,EACC/S,QAAO,SAAAF,GAAG,OAAIoT,EAAaxV,SAASoC,EAAI2T,WACxCQ,MAAK,SAACne,EAAGoe,GAAJ,OAAUpe,EAAEge,SAAWI,EAAEJ,SAAW,GAAK,KAC9CjU,KAAI,SAACsU,GAAD,OACD,yBAA0CroB,MAAOqoB,EAAQV,OAAzD,SAAkEU,EAAQL,UAA1E,kBAAwBK,EAAQV,YAGxC,yBAAQxb,UAAU,EAAMnM,OAAQ,EAAhC,mDAEIinB,EACC/S,QAAO,SAAAF,GAAG,OAAKoT,EAAaxV,SAASoC,EAAI2T,WACzCQ,MAAK,SAACne,EAAGoe,GAAJ,OAAUpe,EAAEge,SAAWI,EAAEJ,SAAW,GAAK,KAC9CjU,KAAI,SAACsU,GAAD,OACD,yBAA0CroB,MAAOqoB,EAAQV,OAAzD,SAAkEU,EAAQL,UAA1E,kBAAwBK,EAAQV,mBAKzC,OAANpQ,SAAM,IAANA,IAAA,UAAAA,GAAQhC,iBAAR,eAAmBkF,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,SAA7B,IAA6BA,IAA7B,UAA6BA,GAAQhC,iBAArC,aAA6B,EAAmBkF,aAInF,qBAAGP,UAAWM,IAAW,UAAW,CAAEjM,MAAK,OAAEgJ,SAAF,IAAEA,IAAF,UAAEA,GAAQgR,eAAV,aAAE,EAAiB9N,UAA9D,UACI,wBAAOC,QAAQ,UAAf,qBACA,oCAAOC,GAAG,UAAUzO,KAAK,OAAO2O,YAAY,aAAgBpD,GAAS,cAC9D,OAANF,SAAM,IAANA,IAAA,UAAAA,GAAQgR,eAAR,eAAiB9N,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,SAA7B,IAA6BA,IAA7B,UAA6BA,GAAQgR,eAArC,aAA6B,EAAiB9N,aAG/E,oBAAGP,UAAWM,IAAW,YAAzB,SACI,oCAAOG,GAAG,WAAWzO,KAAK,OAAO2O,YAAY,aAAgBpD,GAAS,gBAG1E,qBAAGyC,UAAWM,IAAW,OAAQ,CAAEjM,MAAK,OAAEgJ,SAAF,IAAEA,IAAF,UAAEA,GAAQkR,YAAV,aAAE,EAAchO,UAAxD,UACI,wBAAOC,QAAQ,OAAf,kBACA,oCAAOC,GAAG,OAAOzO,KAAK,OAAO2O,YAAY,QAAWpD,GAAS,WACtD,OAANF,SAAM,IAANA,IAAA,UAAAA,GAAQkR,YAAR,eAAchO,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,SAA7B,IAA6BA,IAA7B,UAA6BA,GAAQkR,YAArC,aAA6B,EAAchO,aAGzE,qBAAGP,UAAWM,IAAW,gBAAiB,CAAEjM,MAAK,OAAEgJ,SAAF,IAAEA,IAAF,UAAEA,GAAQmR,eAAV,aAAE,EAAiBjO,UAApE,UACI,wBAAOC,QAAQ,gBAAf,2BACA,uBAAMR,UAAU,SAAhB,SACI,kDAAQ5E,KAAK,gBAAgBqF,GAAG,iBACxBlD,GAAS,YADjB,cAEI,yBAAQtL,UAAU,EAAMnM,MAAM,KAA9B,2BAEIkpB,EACChV,QAAO,SAAAF,GAAG,MAAsB,KAAlBA,EAAIwV,aAClBrB,MAAK,SAACne,EAAGoe,GAAJ,OAAUpe,EAAEge,SAAWI,EAAEJ,SAAW,GAAK,KAC9CjU,KAAI,SAACwT,GAAD,OACD,yBAAsCvnB,MAAOunB,EAAMI,OAAnD,SAA4DJ,EAAMS,UAAlE,gBAAsBT,EAAMI,mBAKrC,OAANpQ,SAAM,IAANA,IAAA,UAAAA,GAAQmR,eAAR,eAAiBjO,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,SAA7B,IAA6BA,IAA7B,UAA6BA,GAAQmR,eAArC,aAA6B,EAAiBjO,aAG3EoN,IAA6C,IAA3B/C,SAAS+C,KAC3B,uCACI,qBAAG3N,UAAWM,IAAW,MAAO,CAAEjM,MAAK,OAAEgJ,SAAF,IAAEA,IAAF,UAAEA,GAAQoR,WAAV,aAAE,EAAalO,UAAtD,UACI,wBAAOC,QAAQ,MAAf,iBACA,oCAAOC,GAAG,MAAMzO,KAAK,OAAO2O,YAAY,OAAUpD,GAAS,UACpD,OAANF,SAAM,IAANA,IAAA,UAAAA,GAAQoR,WAAR,eAAalO,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,SAA7B,IAA6BA,IAA7B,UAA6BA,GAAQoR,WAArC,aAA6B,EAAalO,aAGvE,oBAAGP,UAAWM,IAAW,OAAzB,SACI,wBAAMN,UAAU,WAAhB,UACI,oCAAOhO,KAAK,WAAWyO,GAAG,MAAMrF,KAAK,OAAUmC,GAAS,SAAU,wBAAOiD,QAAQ,MAAf,+BAS1F,4BAAUR,UAAU,SAApB,UAEQ6O,GACA,oBAAG7O,UAAU,WAAb,SAAwB,qBAAGE,KAAK,IAAIE,MAAM,mBAAmBD,QAAS,SAACf,GAAQA,EAAEC,iBAnI1F0P,GAAsD,oBAAxBA,GAAoCA,KAmIjC,UAA+F,eAAC,KAAD,CAAiB/oB,KAAMqa,OAAtH,aAE5B,oBAAGL,UAAU,iBAAb,SACI,eAAC,GAAD,CAAmBja,KAAM6mB,EAAU9a,UAAWiM,cC9KnDwR,GAnEK,WAChB,MAAsChhB,YAAeX,IAArD,mBAAO4hB,EAAP,KAAoBC,EAApB,KACMC,EAAiBpnB,EAAKsC,aACtB4R,EAAkB3H,KACjBhK,EAAiB6G,KAAjB7G,cACP,EAAoCiT,oBAAS,GAA7C,mBAAO6R,EAAP,KAAmBC,EAAnB,KACA,EAAgC9R,oBAAS,GAAzC,mBAAO+R,EAAP,KAAiBC,EAAjB,KA0DD,OAxDCzR,qBAAU,WACN,GAAGqR,EACC,GAAI7kB,GAOC,IAAIglB,EAAU,CACfC,GAAY,GACZ,IAAOxa,EAKHkH,EALGlH,YACHE,EAIAgH,EAJAhH,YACAN,EAGAsH,EAHAtH,SAEAQ,EACA8G,EADA9G,YAGGxI,EAAegI,EAAfhI,KAAMC,EAAS+H,EAAT/H,MAGb,GAAID,GAASC,EAMR,CAED,IAAOd,EAA6CiJ,EAA7CjJ,uBAAwBC,EAAqBgJ,EAArBhJ,OAAQC,EAAa+I,EAAb/I,UAEhClB,EAAYmK,EAAZnK,SAEP,GACgC,WAA3BgB,IAAwCC,GACV,UAA3BD,IAAuCE,GACZ,kBAA3BF,IAA+ChB,EAEnDokB,EAAe5oB,OAEd,CACD,IAAOgF,EAAe6J,EAAf7J,YAKH4jB,EAJA5jB,EAIehF,EAHAA,SArBvB4oB,EAAe5oB,SAnBf8oB,IACAC,GAAc,GACdpT,EAAgBhK,aAAaf,MAAK,kBAAIme,GAAc,OAgDhE,OAAO,eACT,CAACF,EAAgB7kB,EAAe4kB,EAAgBjT,EAAiBmT,EAAYC,EAAeC,EAAUC,IAElG,CAACN,EAAaC,ICuBTM,GAnFM,SAACle,GAClB,IAAOyK,EAAWzK,EAAXyK,QACP,EAAsCiT,KAAtC,mBAAOC,EAAP,KAAoBC,EAApB,KA8BA,OANApR,qBAAU,WACHmR,IAAgB3oB,GACfyV,EAAQ6G,KAAKze,EAASO,aAE3B,CAACuqB,EAAalT,IAGb,uBAAK0D,UAAU,OAAf,UACC,sBAAKA,UAAU,iBAAf,SACG,eAAC,GAAD,eAAqBnO,MAGzB,sBAAKmO,UAAU,cAAf,SAEI,uBAAKA,UAAU,UAAf,WAEKwP,IAAgB3oB,GAA4B2oB,IAAgB3oB,IAAkC,eAACmpB,GAAD,CAAmB/H,SAAU,CAACD,sBAtC3G,WAE1ByH,EAAe5oB,IAoC6IopB,0BAjC9H,gBAkCrBT,IAAgB3oB,GAA2B,eAAC,GAAD,CAAYohB,SAAU,CAAC6E,sBA9BjD,WAC1B2C,EAAe5oB,KA6BoF6lB,QAAS,CAACE,SAAS,QAASD,IAAI,aAC3H6C,IAAgB3oB,GAA2B,eAAC,GAAD,CAAcohB,SAAU,CAAC6G,sBA3BlD,WAC1BW,EAAe5oB,GACfyV,EAAQ6G,KAAKze,EAASO,YAyB6E8pB,oBAtBrE,WAC9BU,EAAe5oB,KAqBoI6lB,QAAS,CAACmC,gBAAe,EAAMjC,SAAS,QAASD,IAAI,aAWhM,uBAAK3M,UAAU,mBAAf,UACI,gEACA,gCACI,gCACI,yDACA,mJAEJ,gCACI,kEACA,mJAEJ,gCACI,sDACA,8JAUpB,eAAC,GAAD,QC7EOkQ,GARK,WAChB,OACQ,sBAAKlQ,UAAU,SAAf,SACI,oBAAGA,UAAU,YAAb,SAAyB,eAAC,IAAD,CAAM8C,GAAIpe,EAASC,KAAMyb,MAAM,qCAA/B,SAAoE,sBAAKc,ICRnG,qoYDQgHC,IAAI,6B,SE4FpHgP,GApFD,SAACte,GAAW,IAAD,YACdyK,EAAWzK,EAAXyK,QAEDI,EAAmBnB,OAAaoB,MAAM,CACxCoH,SAAUD,GAASC,WACnB9H,MAAO6H,GAAS/G,mBAGdqT,EAAc,CAAElT,SAAUC,aAAYT,IAC5C,EAA0DM,aAAQoT,GAA1D7S,EAAR,EAAQA,SAAUH,EAAlB,EAAkBA,aAA2BC,EAA7C,EAAgCC,UAAaD,OACtClM,EAAS4V,KAAT5V,MACP,EAAwC2M,oBAAS,GAAjD,mBAAOC,EAAP,KAAqBC,EAArB,KAEMkB,EAAe,uCAAG,WAAMC,GAAN,iBAAArP,EAAA,0DACjBiO,EADiB,iDAGpBC,GAAgB,GAET/B,EAAmBkD,EAAnBlD,MAAO8H,EAAY5E,EAAZ4E,SAEd5S,EAAM,CAAC4Y,SAAU9N,EAAO6N,SAAU/F,IACjCtS,MAAK,WAEFuM,GAAgB,GAChB1B,EAAQ6G,KAAKze,EAASO,cAEzBiR,OAAM,WACH8H,GAAgB,MAdA,2CAAH,sDAmBrB,OACI,qCACI,uBAAKgC,UAAU,gBAAf,UACI,eAAC,GAAD,IACA,sBAAKA,UAAU,UAAf,SAII,wBAAMA,UAAU,aAAaC,SAAU7C,EAAa8B,GAApD,UACI,4BAAUc,UAAU,QAApB,UACI,qBAAIA,UAAWM,IAAW,QAAS,CAAEjM,MAAK,OAAEgJ,QAAF,IAAEA,GAAF,UAAEA,EAAQpB,aAAV,aAAE,EAAesE,UAA3D,UACI,oCAAOvO,KAAK,QAAQiY,aAAa,QAAStJ,YAAY,SAAYpD,EAAS,YACpE,OAANF,QAAM,IAANA,GAAA,UAAAA,EAAQpB,aAAR,eAAesE,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,QAA7B,IAA6BA,GAA7B,UAA6BA,EAAQpB,aAArC,aAA6B,EAAesE,aAE3E,qBAAIP,UAAWM,IAAW,OAAQ,CAAEjM,MAAK,OAAEgJ,QAAF,IAAEA,GAAF,UAAEA,EAAQ0G,gBAAV,aAAE,EAAkBxD,UAA7D,UACI,oCAAOvO,KAAK,WAAWiY,aAAa,mBAAmBtJ,YAAY,YAAepD,EAAS,eACpF,OAANF,QAAM,IAANA,GAAA,UAAAA,EAAQ0G,gBAAR,eAAkBxD,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,QAA7B,IAA6BA,GAA7B,UAA6BA,EAAQ0G,gBAArC,aAA6B,EAAkBxD,gBAGrF,2BAAUP,UAAU,SAApB,SACI,oBAAGA,UAAU,YAAb,SACI,eAAC,GAAD,CAAmBja,KAAK,QAAQ+L,UAAWiM,QAGnD,6BAAG,eAAC,IAAD,CAAM+E,GAAIpe,EAASI,WAAYsb,MAAM,+BAArC,gCACH,gDAAiB,eAAC,IAAD,CAAM0C,GAAIpe,EAASE,KAAMwb,MAAM,qBAA/B,8BASzB,uBAAKJ,UAAU,iBAAf,UACI,sBAAKA,UAAU,YAAf,SACI,yGAA0E,oBAAGE,KAAK,8BAAR,kCAG9E,eAAC,GAAD,IAEA,uBAAKF,UAAU,SAAf,UACI,6BAAG,oBAAGE,KAAK,IAAIC,QAAS,SAAAf,GAAC,OAAEA,EAAEC,kBAAkBW,UAAU,WAAtD,SAAiE,gCAAM,eAAC,KAAD,CAAiBha,KAAMqqB,aACjG,6BAAG,oBAAGnQ,KAAK,IAAIC,QAAS,SAAAf,GAAC,OAAEA,EAAEC,kBAAkBW,UAAU,UAAtD,SAAgE,gCAAM,eAAC,KAAD,CAAiBha,KAAMsqB,yBC1DzGC,GA5BA,WACX,IAAM9N,EAAiBnR,KACvB,EAAkCwM,oBAAS,GAA3C,mBAAO0S,EAAP,KAAkBC,EAAlB,KACM5E,EAAa3D,kBAAO,GAC1B,EAAwCpK,oBAAS,GAAjD,mBAAOC,EAAP,KAAqBC,EAArB,KAqBA,OAnBAK,qBAAU,WACN,OAAO,WACLwN,EAAWrS,SAAU,KAEtB,IAEL6E,qBAAU,WACLN,IACH8N,EAAWrS,SAAWwE,GAAgB,GAEtCyE,IACG+E,SAAQ,WACJqE,EAAWrS,UACZiX,GAAa,GACbzS,GAAgB,UAGtB,CAACyS,EAAahO,EAAe1E,EAAcC,IAEtCwS,EAAY,eAAC,IAAD,CAAU1N,GAAIpe,EAASG,QAAY,MC2O3C6rB,GAxPQ,SAAC7e,GAAW,IAAD,wBACxBkD,EAAaxD,KACbuD,EAAQlB,KACP0I,EAAWzK,EAAXyK,QACDqU,EAAY3T,aAAQ,CAAEoL,KAAM,MAAOlL,SAAUC,aAAY5B,OAAaoB,MAAM,CAC9EV,MAAO6H,GAAS/G,sBAGd6T,EAAY5T,aAAQ,CAAEoL,KAAM,MAAOlL,SAAUC,aAAY5B,OAAaoB,MAAM,CAC9EsH,iBAAmB1I,OACdC,SAAS,kCACTY,MAAMgI,gBAAc,8CACzBC,YAAa9I,OACRC,SAAS,4BACTG,QAAQ,QAAS,wCACjBC,KAAK,qBAAsB,wBAAwB,SAAS2I,GACzD,IAAON,EAAoBrc,KAAK4c,OAAzBP,iBACP,IAAIA,EAAkB,OAAO,EAC7B,IAAOQ,EAAkBR,EAAlBQ,KAAMC,EAAYT,EAAZS,SACb,OAAOC,aAAmB,IAAD,OAAKD,GAAL,OAAgBH,GAAOE,EAAKG,uBAIjE,EAA8C9G,oBAAS,GAAvD,mBAAOoL,EAAP,KAAwBC,EAAxB,KAOA9K,qBAAU,WACP,IAAM+K,EAAMhF,gBAAa1J,MAAK,SAAAZ,GAAG,MAAa,OAAXA,EAAI2K,QACvCmM,EAAUpT,SAAS,mBAAoB4L,GACvCwH,EAAUpT,SAAS,0BAAnB,WAAkD4L,EAAI1E,aACtD,CAACkM,IAEJ,MAAgC9S,mBAAS,GAAzC,mBAAO+S,EAAP,KAAiBC,EAAjB,KACA,EAA4ChT,oBAAS,GAArD,mBAAOiT,EAAP,KAAuBC,EAAvB,KACA,EAA4ClT,oBAAS,GAArD,mBAAOmT,EAAP,KAAuBC,EAAvB,KACA,EAA8CpT,oBAAS,GAAvD,mBAAOgL,EAAP,KAAwBC,EAAxB,KACA,EAAwCjL,oBAAS,GAAjD,mBAAOC,EAAP,KAAqBC,EAArB,KACA,EAAsCF,mBAAS,CAACjR,YAAY,GAAIC,iBAAiB,GAAIC,gBAAgB,KAArG,mBAAO6J,EAAP,KAAoBua,EAApB,KACA,GAA8BrT,mBAAS,IAAvC,qBAAOsT,GAAP,MAAgBC,GAAhB,MAEMC,GAAsB,uCAAG,WAAMnS,GAAN,SAAArP,EAAA,0DACxBiO,EADwB,iDAE3BC,GAAgB,GAChBjJ,EAAW7B,0BAA0B,CAACqM,aAAcJ,EAAQlD,QAC3DxK,MAAK,kBAAKuf,GAAkB,MAS5B9a,OAAM,SAAC1O,GAEJ,MADAsN,EAAMT,MAAM,+CAAgD7M,GACtDA,KAETggB,SAAQ,WAAKxJ,GAAgB,MAjBH,2CAAH,sDAqBtBuT,GAAoC,uCAAG,WAAMC,GAAN,eAAA1hB,EAAA,6DACnCwP,EAAgBkS,GAAkB,CACpC3kB,YAAa+J,EAAY/J,YACzBC,iBAAkB8J,EAAY9J,iBAC9BC,gBAAiB6J,EAAY7J,iBAJQ,kBAMlCgI,EAAW1B,yBAAyBiM,GAC1CpJ,OAAM,SAAC1O,GAEJ,MADAsN,EAAMT,MAAM,gCAAiC7M,GACvCA,MAT+B,2CAAH,sDAapCiqB,GAAsB,uCAAG,WAAMtS,GAAN,SAAArP,EAAA,0DAExBiO,EAFwB,iDAG3BC,GAAgB,GAEhBmT,EAAe,CACXtkB,YAAasS,EAAQkF,YACrBvX,iBAAkBqS,EAAQ8E,iBAAiBS,SAC3C3X,gBAAiBoS,EAAQ8E,iBAAiBQ,OAG9CmC,YAAW,WACP2K,GAAqC,CACjC1kB,YAAasS,EAAQkF,YACrBvX,iBAAkBqS,EAAQ8E,iBAAiBS,SAC3C3X,gBAAiBoS,EAAQ8E,iBAAiBQ,OAE7ChT,MAAK,WACFsX,GAAmB,GACnB/K,GAAgB,MAEnB9H,OAAM,kBAAI8H,GAAgB,QAC5B,KAtBwB,2CAAH,sDA2D5B,OACI,uBAAKgC,UAAU,gCAAf,UAEI,eAAC,GAAD,IAEA,uBAAKA,UAAU,UAAf,UAEI,mDAEK+Q,IAAoBE,GACrB,uCACA,8LACA,sBAAKjR,UAAU,uBAAf,SACA,uBAAKA,UAAU,MAAf,UACI,sBAAKA,UAAU,aAAf,SACI,gCACI,qBAAIA,UAAWM,IAAW,CAACoR,GAAiB,IAAbb,IAAkB1Q,QAAS,kBAAI2Q,EAAY,IAA1E,mBACA,qBAAI9Q,UAAWM,IAAW,CAACoR,GAAiB,IAAbb,IAAkB1Q,QAAS,kBAAI2Q,EAAY,IAA1E,+BAGR,uBAAK9Q,UAAU,cAAf,UACI,sBAAKA,UAAWM,IAAW,UAAW,CAACoR,GAAiB,IAAbb,IAA3C,SACI,wBAAM7Q,UAAU,aAAaC,SAAU0Q,EAAUvT,aAAakU,IAA9D,UACI,2BAAUtR,UAAU,QAApB,SACA,qBAAGA,UAAWM,IAAW,QAAS,CAACjM,MAAK,UAAEsc,EAAUrT,UAAUD,cAAtB,iBAAE,EAA4BpB,aAA9B,aAAE,EAAmCsE,UAA7E,UACI,oCAAOvO,KAAK,QAAQ2O,YAAY,oBACxBgQ,EAAUpT,SAAS,YAE1B,UAAAoT,EAAUrT,UAAUD,cAApB,mBAA4BpB,aAA5B,eAAmCsE,UAAW,uBAAMP,UAAU,YAAhB,mBAA6B2Q,EAAUrT,UAAUD,cAAjD,iBAA6B,EAA4BpB,aAAzD,aAA6B,EAAmCsE,eAGvH,2BAAUP,UAAU,SAApB,SACI,oBAAGA,UAAU,YAAb,SACI,eAAC,GAAD,CAAmBja,KAAK,yBAAyB+L,UAAWiM,aAKxE,sBAAKiC,UAAWM,IAAW,UAAW,CAACoR,GAAiB,IAAbb,IAA3C,SACI,wBAAM7Q,UAAU,aAAaC,SAAU2Q,EAAUxT,aAAaqU,IAA9D,UACI,2BAAUzR,UAAU,QAApB,SACA,qBAAGA,UAAWM,IAAW,QAAS,CAACjM,MAAK,UAAEuc,EAAUtT,UAAUD,cAAtB,iBAAE,EAA4BgH,mBAA9B,aAAE,EAAyC9D,UAAnF,UACI,wBAAMP,UAAU,QAAhB,UACI,oCAAOhO,KAAK,SAASyO,GAAG,uBAA0BmQ,EAAUrT,SAAS,sBACrE,gDAAOyC,UAAU,YAAYS,GAAG,YAAYzO,KAAK,MAAM2O,YAAY,OAAUiQ,EAAUrT,SAAS,4BAAhG,IAA4H4C,QAAS,kBAAIgJ,GAAmB,IAAQa,UAAQ,KAC5K,oCAAOvJ,GAAG,QAAQT,UAAU,QAAQhO,KAAK,MAAM2O,YAAY,2BAA8BiQ,EAAUrT,SAAS,qBAI/G,UAAAqT,EAAUtT,UAAUD,cAApB,mBAA4BgH,mBAA5B,eAAyC9D,UAAW,uBAAMP,UAAU,YAAhB,mBAA6B4Q,EAAUtT,UAAUD,cAAjD,iBAA6B,EAA4BgH,mBAAzD,aAA6B,EAAyC9D,eAGnI,2BAAUP,UAAU,SAApB,SACI,oBAAGA,UAAU,YAAb,SAAyB,eAAC,GAAD,CAAmBja,KAAK,yBAAyB+L,UAAWiM,wBAUrGgT,GAAkB,sBAAK/Q,UAAU,gBAAf,0KAGlBkJ,GAAmB,eAAC,GAAD,CAAwBjH,KAAMiH,EAAiBhH,MAAO,kBAAIiH,GAAmB,IAAQnD,eAlL5F,SAACoD,GACzBwH,EAAUpT,SAAS,mBAAoB4L,GACvCwH,EAAUpT,SAAS,0BAAnB,WAAkD4L,EAAI1E,YAgLmGuB,aAAc2K,EAAUtI,UAAU,sBAG/K2I,GACA,sBAAKjR,UAAU,gBAAf,SACI,8BAEQoR,GAAQvX,KAAI,SAAC8X,EAAK7Q,GAAN,OACR,8BAAY,eAAC,IAAD,CAAMgC,GAAE,UAAKpe,EAASK,UAAd,YAA2B4sB,EAAIC,MAAvC,SAAgDD,EAAIE,YAAvD/Q,UAO7B,eAAC,GAAD,CAAcmB,KAAM6G,EACZ5G,MAAO,kBAAI6G,GAAmB,IAC9B+I,WAAY,kBAAI/I,GAAmB,IACnC3B,gBAtHqB,SAACM,GACtC,IAAO1X,EAAQ0X,EAAR1X,KACFA,GAAsB,IAAdA,EAAK6Q,OAMC,IAAhB7Q,EAAK6Q,QAKRwQ,GAAWrhB,GACXkhB,GAAkB,GAClBnI,GAAmB,IANfzM,EAAQ6G,KAAR,UAAgBze,EAASK,UAAzB,YAAsC2iB,EAAK1X,KAAK,GAAG4hB,OANnD7I,GAAmB,IAoHP5B,2BApGe,SAAC9Q,GAChC,IAAMiJ,EAAgB,CAClBzS,YAAa+J,EAAY/J,YACzBC,iBAAkB8J,EAAY9J,iBAC9BC,gBAAiB6J,EAAY7J,gBAC7BuJ,iBAAkBD,GAEtB,OAAOtB,EAAWzB,8BAA8BgM,GACvCpJ,OAAM,SAAC1O,GAEJ,MADAsN,EAAMT,MAAM,+BAAgC7M,GACtCA,MA2FF8a,eAAe,EACf+E,oBAAqBkK,QAiBjC,sBAAKvR,UAAU,SAAf,SACI,sBAAKA,UAAU,UAAf,SAAyB,oEC5I1B+R,GA3GO,SAAClgB,GAAW,IAAD,QACvBkD,EAAaxD,KACbuD,EAAQlB,KACNiI,EAAmBhK,EAAnBgK,MAAOS,EAAYzK,EAAZyK,QACP5U,EAAUmU,EAAMmW,OAAhBtqB,MACR,EAAsCoW,oBAAS,GAA/C,mBAAOmU,EAAP,KAAoBC,EAApB,KACA,EAAgCpU,oBAAS,GAAzC,mBAAOqU,EAAP,KAAiBC,EAAjB,KAEM1V,EAAmBnB,OAAaoB,MAAM,CACxCoH,SAAUD,GAASC,WACnBC,gBAAiBF,GAASE,gBAAgB,cAExCoM,EAAc,CAAElT,SAAUC,aAAYT,IAC5C,EAA0DM,aAAQoT,GAA1D7S,EAAR,EAAQA,SAAUH,EAAlB,EAAkBA,aAA2BC,EAA7C,EAAgCC,UAAaD,OAE7C,EAAwCS,oBAAS,GAAjD,mBAAOC,EAAP,KAAqBC,EAArB,KAEMkB,EAAe,uCAAG,WAAOC,GAAP,SAAArP,EAAA,0DAChBiO,EADgB,iDAEpBC,GAAgB,GAEhBjJ,EAAW5B,oBAAoB,CAAEye,KAAMlqB,EAAO2qB,YAAalT,EAAQ4E,WAC9DtS,MAAK,WAEFuM,GAAgB,GAChB1B,EAAQ6G,KAAR,UAAgBze,EAASG,WAE5BqR,OAAM,SAAC1O,GAIJ,MAFAwW,GAAgB,GAChBlJ,EAAMT,MAAM,4BAA6B7M,GACnCA,KAdM,2CAAH,sDAsBf8qB,EAA6B,WAC/BF,GAAY,GACZF,GAAe,IAqBnB,OAlBA7T,qBAAU,WACD3W,EAILqN,EAAW3B,2BAA2B,CAAEwe,KAAMlqB,IACzC+J,MAAK,SAACiW,GACgBA,EAAK1X,KAAhBuiB,QAfhBH,GAAY,GACZF,GAAe,IAgBFI,OAERpc,OAAM,WACHoc,OAVJA,MAaL,CAAC5qB,IAIA,qCACI,uBAAKsY,UAAU,gCAAf,UACI,eAAC,GAAD,IACA,uBAAKA,UAAU,UAAf,UAEQiS,GACA,+BACI,sLAIJE,GACA,uCACI,iDACA,wBAAMnS,UAAU,OAAOC,SAAU7C,EAAa8B,GAA9C,UACI,4BAAUc,UAAU,QAApB,UACI,qBAAGA,UAAWM,IAAW,cAAe,CAAEjM,MAAK,OAAEgJ,QAAF,IAAEA,GAAF,UAAEA,EAAQ0G,gBAAV,aAAE,EAAkBxD,UAAnE,UACI,oCAAOE,GAAG,cAAczO,KAAK,WAAW2O,YAAY,gBAAoBpD,EAAS,cACjF,uBAAMyC,UAAU,YAAhB,gBAA6B3C,QAA7B,IAA6BA,GAA7B,UAA6BA,EAAQ0G,gBAArC,aAA6B,EAAkBxD,aAEnD,qBAAGP,UAAWM,IAAW,eAAgB,CAAEjM,MAAK,OAAEgJ,QAAF,IAAEA,GAAF,UAAEA,EAAQ2G,uBAAV,aAAE,EAAyBzD,UAA3E,UACI,oCAAOE,GAAG,eAAezO,KAAK,WAAW2O,YAAY,oBAAwBpD,EAAS,qBACtF,uBAAMyC,UAAU,YAAhB,gBAA6B3C,QAA7B,IAA6BA,GAA7B,UAA6BA,EAAQ2G,uBAArC,aAA6B,EAAyBzD,gBAI9D,2BAAUP,UAAU,SAApB,SACI,oBAAGA,UAAU,iBAAb,SACI,eAAC,GAAD,CAAmBja,KAAK,OAAO+L,UAAWiM,iBAQlE,sBAAKiC,UAAU,SAAf,SACI,sBAAKA,UAAU,UAAf,SAAyB,sEC3G7BwS,GAFK,kBAAMjkB,YAAeT,KCuC3B2kB,GAnCC,SAAC5gB,GACb,IAAQ6f,EAAgB7f,EAAhB6f,GAAIpV,EAAYzK,EAAZyK,QACZ,EAAgCkW,KAAhC,mBAAOE,EAAP,KAAiBC,EAAjB,KAgBA,OACI,uBAAK3S,UAAWM,IAAW,MAAO,CAAC,GAAMoR,IAAzC,UACI,oBAAG1R,UAAU,WAAb,SAAwB,oBAAGE,KAAK,IAAIE,MAAM,qCAAlB,SAAwD,sBAAKc,IAAK6B,EAAQ5B,IAAI,0BACtG,8BACQtb,EAAMmU,QAAO,SAAA4Y,GAAI,OAAEA,EAAKzsB,UAAUuR,SAAS,WAASmC,KAAI,SAAC+Y,EAAM9R,GAAP,OAAW,qBAAsBd,UAAWM,IAAW,CAAC,GAAMsS,IAAOF,IAA1D,SAAsE,qBAAGxS,KAAMxb,EAASkuB,EAAK9sB,OAAQqa,QAAS,SAACf,IAjB5K,SAACA,EAAGwT,GACtBxT,EAAEC,iBAOFsT,EAAYC,GACZtW,EAAQ6G,KAAKze,EAASkuB,EAAK9sB,QAQwK+sB,CAAczT,EAAGwT,IAAQxS,MAAOwS,EAAK7sB,KAAnF,UAAyF,sBAAKob,IAAKyR,EAAK7sB,KAAMmb,IAAKwR,IAAWE,EAAOA,EAAK1sB,aAAe0sB,EAAK5sB,KAAMoa,MAAOwS,EAAK7sB,OAAhL,IAAyL,gCAAO6sB,EAAK7sB,WAA3Q,eAAiB+a,a,qBCyDzFgS,GA7EQ,SAACC,GACpB,IAAMvW,EAAkB3H,KAClBC,EAAQlB,KACP/I,EAAiByD,KAAjBzD,cACP,EAAoCiT,oBAAS,GAA7C,mBAAO6R,EAAP,KAAmBC,EAAnB,KACM/D,EAAa3D,kBAAO,GAsB1B,GApBA7J,qBAAU,WACN,OAAO,WACLwN,EAAWrS,SAAU,KAEtB,IAEL6E,qBAAU,WACN,IAAGxT,IACA8kB,GACC9D,EAAWrS,QAMf,OALAoW,GAAc,GAEdpT,EAAgBhK,aACXf,MAAK,kBAAIoa,EAAWrS,SAAWoW,GAAc,MAC7C1Z,OAAM,SAAA1O,GAAG,OAAEsN,EAAMT,MAAM7M,MACrB,eACT,CAACqD,EAAe2R,EAAgBmT,EAAYC,EAAe9a,KAIzDjK,EAAe,OACf,sBAAKkW,MAAO,CACRiS,SAAU,WACVC,IAAK,kBACLC,KAAM,mBAHV,SAOK,eAAC,KAAD,CAAc/gB,SAAS,EAAMD,MAAO,OAAQG,KAAM,QAG3D,IAAOiD,EAKHkH,EALGlH,YACHE,EAIAgH,EAJAhH,YACAN,EAGAsH,EAHAtH,SAEAQ,EACA8G,EADA9G,YAGOxI,EAAegI,EAAfhI,KAAMC,EAAS+H,EAAT/H,MAENtB,EAAe6J,EAAf7J,YAEP,IAAIqB,IAASC,EACT,OAAQ,eAAC,IAAD,CAAU2V,GAAIpe,EAASE,OAQnC,IAAOyH,EAA6CiJ,EAA7CjJ,uBAAwBC,EAAqBgJ,EAArBhJ,OAAQC,EAAa+I,EAAb/I,UAChClB,EAAYmK,EAAZnK,SAEP,MACgC,WAA3BgB,IAAwCC,GACV,UAA3BD,IAAuCE,GACZ,kBAA3BF,IAA+ChB,EAEvC,eAAC,IAAD,CAAUyX,GAAIpe,EAASE,OAInCiH,EAIGknB,EAHK,eAAC,IAAD,CAAUjQ,GAAIpe,EAASE,QClErCuuB,GAAmB,SAACthB,GACtB,IAAQ0a,EAAiC1a,EAAjC0a,SAAUjQ,EAAuBzK,EAAvByK,QAAS8W,EAAcvhB,EAAduhB,UAE3B,EAAmBZ,KAAZE,EAAP,oBAGA,EAAsC5U,oBAAS,GAA/C,mBAAO4E,EAAP,KAAoBC,EAApB,KACA,EAAgC7E,oBAAS,GAAzC,mBAAOuV,EAAP,KAAiBC,EAAjB,KACA,EAAiCxV,oBAAS,GAAjCyV,EAAT,oBAWA,OACI,qCAEOT,GACK,uBAAK9S,UAAWM,IAAW,OAAQoS,EAAS5sB,MAAMoO,cAAe,aAAciM,QAAS,WAAQwC,GAAe,GAAQ2Q,GAAY,GAAQC,GAAqB,IAAhK,UACI,uBAAKvT,UAAU,eAAf,UACI,eAAC,GAAD,aAAU0R,GAAIhP,GAAiB7Q,IAC/B,uBAAKmO,UAAWM,IAAW,UAAW,WAAtC,UACI,sBAAKN,UAAU,iBAAf,SACI,uBAAKA,UAAU,aAAf,UACI,oBAAGA,UAAU,iBAAb,SACI,oBAAGE,KAAK,IAAR,SACI,eAAC,KAAD,CAAiBla,KAAMgd,KAAQ7C,QAAS,SAACf,GAAQA,EAAEC,iBAAkBsD,GAAgBD,GAActD,EAAE6D,yBAG7G,8BAAMmQ,GAAYV,EAAS3sB,OAC3B,uBAAKia,UAAU,OAAf,UACI,sBAAKA,UAAU,SAAf,SACI,oBAAGE,KAAK,IAAIC,QAAS,SAACf,GAAQA,EAAEC,iBAAkBiU,GAAaD,GAAWjU,EAAE6D,mBAA5E,SACI,eAAC,KAAD,CAAiBjd,KAAMwtB,WAG/B,eAAC,KAAD,CAAiBxtB,KAAMqtB,EAAWI,KAAYC,KAAavT,QAAS,SAACf,GAAQkU,GAAaD,GAAWjU,EAAE6D,qBACvG,sBAAKjD,UAAWM,IAAW,cAAe,CAAE,GAAM+S,IAAlD,SACI,8BAEQxtB,EAAMmU,QAAO,SAAA4Y,GAAI,OAAIA,EAAKzsB,UAAUuR,SAAS,cAAYmC,KAAI,SAAC+Y,EAAM9R,GAAP,OAAa,8BAAsB,qBAAGZ,KAAMxb,EAASkuB,EAAK9sB,OAAQqa,QAAS,SAACf,IAnCvK,SAACA,EAAGwT,GACtBxT,EAAEC,iBAKF/C,EAAQ6G,KAAKze,EAASkuB,EAAK9sB,QA6BsK+sB,CAAczT,EAAGwT,IAASxS,MAAOwS,EAAK7sB,KAAvF,UAA6F,sBAAKob,IAAKyR,EAAK7sB,KAAMmb,IAAK0R,EAAK5sB,KAAMoa,MAAOwS,EAAK7sB,OAA9I,IAAuJ,gCAAO6sB,EAAK7sB,WAAzL,eAAiB+a,mBAkClHyL,QAGT,eAAC,GAAD,CAAQpK,UAAU,WAe3BwR,GARQ,SAAC9hB,GACpB,OACI,qCACI,eAAC,GAAD,eAAqBA,OCpDlB6K,GAnDUnB,OAAaoB,MAAM,CACxCkH,cAAeC,GAASD,gBACxB5H,MAAO6H,GAAS7H,QAChB4I,YAAatJ,OACbuJ,QAASvJ,OAAawJ,KAAK,CAAC,eAAgB,CACpCC,GAAI,SAACC,GAAD,OAAUA,GACdxT,KAAM8J,OAAaC,SAAS,gBAAgBjE,IAAI,eAChD2N,UAAW3J,OAAa2I,cAAcC,aAE9CgB,cAAe5J,OACf6J,UAAW7J,OAAawJ,KAAK,CAAC,iBAAkB,CAC5CC,GAAI,SAACC,GAAD,OAAUA,GACdxT,KAAM8J,OAAaC,SAAS,gBAAgBjE,IAAI,eAChD2N,UAAW3J,OAAa2I,cAAcC,aAE1CkB,WAAY9J,OACZ+J,OAAQ/J,OAAawJ,KAAK,CAAC,cAAe,CACtCC,GAAI,SAACC,GAAD,OAAUA,GACdxT,KAAM8J,OAAaC,SAAS,gBAAgBjE,IAAI,eAChD2N,UAAW3J,OAAa2I,cAAcC,aAE1CoB,YAAahK,OACbiK,QAASjK,OAAawJ,KAAK,CAAC,eAAgB,CACxCC,GAAI,SAACC,GAAD,OAAUA,GACdxT,KAAM8J,OAAaC,SAAS,gBAAgBjE,IAAI,eAChD2N,UAAW3J,OAAa2I,cAAcC,aAE1CsB,aAAclK,OACdmK,SAAUnK,OAAawJ,KAAK,CAAC,gBAAiB,CAC1CC,GAAI,SAACC,GAAD,OAAUA,GACdxT,KAAM8J,OAAaC,SAAS,gBAAgBjE,IAAI,eAChD2N,UAAW3J,OAAa2I,cAAcC,aAE1CwB,aAAcpK,OACdqK,SAAUrK,OAAawJ,KAAK,CAAC,gBAAiB,CAC1CC,GAAI,SAACC,GAAD,OAAUA,GACdxT,KAAM8J,OAAaC,SAAS,gBAAgBjE,IAAI,eAChD2N,UAAW3J,OAAa2I,cAAcC,aAE1C0B,UAAWtK,OACXuK,MAAOvK,OAAawJ,KAAK,CAAC,aAAc,CACpCC,GAAI,SAACC,GAAD,OAAUA,GACdxT,KAAM8J,OAAaC,SAAS,YAC5B0J,UAAW3J,OAAa2I,cAAcC,aAE1CvO,gBAAiB2F,OAAaK,KAAK,yBAA0B,wCAAwC,SAAS2I,GAC1G,MAAqG3c,KAAK4c,OAAnGK,EAAP,EAAOA,YAAaM,EAApB,EAAoBA,cAAeE,EAAnC,EAAmCA,WAAYE,EAA/C,EAA+CA,YAAaE,EAA5D,EAA4DA,aAAcE,EAA1E,EAA0EA,aAAcE,EAAxF,EAAwFA,UACxF,OAAQhB,GAAeM,GAAiBE,GAAcE,GAAeE,GAAgBE,GAAgBE,OC0C9F+N,GAjFQ,SAAC/hB,GAAW,IAAD,QACxBiD,EAAQlB,KACR8I,EAAmBnB,OAAaoB,MAAM,CACxCoH,SAAUD,GAASC,WACnBC,gBAAiBF,GAASE,gBAAgB,cAGvC/B,EAAgBpQ,EAAhBoQ,KAAMC,EAAUrQ,EAAVqQ,MACb,EAAwCpE,oBAAS,GAAjD,mBAAOC,EAAP,KAAqBC,EAArB,KAEA,EAIIhB,aAAQ,CACRoL,KAAM,MACNnL,cAAe,CACX8G,SAAU,GACVC,gBAAiB,IAErB9G,SAAUC,aAAYT,KATtBU,EADJ,EACIA,aACaC,EAFjB,EAEIC,UAAaD,OACbE,EAHJ,EAGIA,SAWG2B,EAAe,uCAAG,WAAMC,EAASC,GAAf,eAAAtP,EAAA,yDAErBsP,EAAEC,kBAEEtB,EAJiB,iDAKrBC,GAAgB,GAEVsB,EAAgB,CAACwK,SAAU3K,EAAQ4E,UAEzCxR,GAAeU,eAAeqM,GAC7B7N,MAAK,WACFuM,GAAgB,GAChBkE,OAEHhM,OAAM,SAAA1O,IAC8B,IAA9ByM,OAAOzM,GAAK2M,QAAQ,OACnBW,EAAMT,MAAMJ,OAAOzM,IAGnBsN,EAAMT,MAAM,2BAA2B7M,MAG9CggB,SAAQ,kBAAIxJ,GAAgB,MAtBR,2CAAH,wDA2BtB,OACI,gBAAC,KAAD,CAAOsC,WAAY,CAAE8B,QAAS,uBAAwBC,MAAO,sBACzDJ,KAAMA,EACNpE,QAASqE,EACTK,QAAM,EAHV,UAII,kDAEA,wBAAMvC,UAAU,oBAAoBC,SAAU7C,EAAa8B,GAA3D,UACI,4BAAUc,UAAU,QAApB,UACI,qBAAGA,UAAWM,IAAW,cAAe,CAACjM,MAAK,OAAEgJ,QAAF,IAAEA,GAAF,UAAEA,EAAQ0G,gBAAV,aAAE,EAAkBxD,UAAlE,UACI,wBAAOC,QAAQ,cAAf,kCACA,oCAAOC,GAAG,cAAcwJ,aAAa,eAAejY,KAAK,WAAW2O,YAAY,gBAAoBpD,EAAS,cAC7G,uBAAMyC,UAAU,YAAhB,gBAA6B3C,QAA7B,IAA6BA,GAA7B,UAA6BA,EAAQ0G,gBAArC,aAA6B,EAAkBxD,aAEnD,qBAAGP,UAAWM,IAAW,eAAgB,CAACjM,MAAK,OAAEgJ,QAAF,IAAEA,GAAF,UAAEA,EAAQ2G,uBAAV,aAAE,EAAyBzD,UAA1E,UACI,wBAAOC,QAAQ,eAAf,8BACA,oCAAOC,GAAG,eAAewJ,aAAa,eAAejY,KAAK,WAAW2O,YAAY,oBAAwBpD,EAAS,qBAClH,uBAAMyC,UAAU,YAAhB,gBAA6B3C,QAA7B,IAA6BA,GAA7B,UAA6BA,EAAQ2G,uBAArC,aAA6B,EAAyBzD,gBAG9D,2BAAUP,UAAU,SAApB,SACI,oBAAGA,UAAU,YAAb,SACI,eAAC,GAAD,CAAmBja,KAAI,SAAY+L,UAAWiM,eC0IvD8V,GAhNY,SAAChiB,GAAW,IAAD,IAC3BoQ,EAAmCpQ,EAAnCoQ,KAAMC,EAA6BrQ,EAA7BqQ,MAAb,EAA0CrQ,EAAtByQ,qBAApB,SACMwE,EAAMoB,mBACN1L,EAAkB3H,KACjB+B,EAAgB4F,EAAhB5F,YACC/J,EAAgC+J,EAAhC/J,YAAaE,EAAmB6J,EAAnB7J,gBACf2P,EAAmBnB,OAAaoB,MAAM,CACxCsH,iBAAmB1I,OACd2I,cAAcC,WAEd/H,MAAMgI,gBAAc,8CACzBC,YAAa9I,OAEJI,QAAQ,QAAQ,CAAC4E,QAAQ,uCAAuC+D,oBAAmB,IACnF1I,KAAK,qBAAsB,wBAAwB,SAAS2I,GACzD,IAAIA,EAAK,OAAO,EAChB,IAAON,EAAoBrc,KAAK4c,OAAzBP,iBACP,IAAIA,EAAkB,OAAO,EAC7B,IAAOQ,EAAkBR,EAAlBQ,KAAMC,EAAYT,EAAZS,SACb,OAAOC,aAAmB,IAAD,OAAKD,GAAL,OAAgBH,GAAOE,EAAKG,oBAGrE,EAMI5H,aAAQ,CACRoL,KAAM,MACNnL,cAAe,CACXoH,YAAaxX,EACboX,iBAAkBG,gBAAa1J,MAAK,SAAAZ,GAAG,OAAEA,EAAI2K,QAAS1X,EAAkBA,EAAgBmH,cAAgB,UAE5GgJ,SAAUC,aAAYT,KAXtBU,EADJ,EACIA,aACaC,EAFjB,EAEIC,UAAaD,OACbE,EAHJ,EAGIA,SACAC,EAJJ,EAIIA,SACA8K,EALJ,EAKIA,UAUJ,EAA8CxK,oBAAS,GAAvD,mBAAOoL,EAAP,KAAwBC,EAAxB,KAOA9K,qBAAU,WACP,IAAMoG,EAAO1X,EAAkBA,EAAgBmH,cAAgB,KACzDkV,EAAMhF,gBAAa1J,MAAK,SAAAZ,GAAG,OAAEA,EAAI2K,OAAOA,KAC9CjH,EAAS,mBAAoB4L,GAC7B5L,EAAS,0BAAD,WAAgC4L,EAAI1E,aAC5C,CAAClH,IAEJ,MAAwCM,oBAAS,GAAjD,mBAAOC,EAAP,KAAqBC,EAArB,KACA,EAA8CF,oBAAS,GAAvD,mBAAOgL,EAAP,KAAwBC,EAAxB,KACA,EAA8CjL,oBAAS,GAAvD,mBAAOgW,EAAP,KAAwBC,EAAxB,KACA,EAA8DjW,mBAAS,MAAvE,mBAAOkL,EAAP,KAAgCC,EAAhC,KAEA5K,qBAAU,WACHiK,EAAU,gBACTW,EAA2B,QAEhC,CAACX,EAAWW,IAEf,IAAMI,EAA2B,WAC7B,IAAMhF,EAAciE,EAAU,eACxBgB,EAAehB,EAAU,oBACxB5D,EAAkB4E,EAAlB5E,SAAUD,EAAQ6E,EAAR7E,KACjB,OAAOjI,EAAgBhG,iBAAiB,CAAC3J,YAAYwX,EAAavX,iBAAiB4X,EAAU3X,gBAAgB0X,KAG3G0C,EAA0B,uCAAG,WAAO9Q,GAAP,uBAAAvG,EAAA,6DACzBuU,EAAciE,EAAU,eACxBgB,EAAehB,EAAU,oBACxB5D,EAAkB4E,EAAlB5E,SAAUD,EAAQ6E,EAAR7E,KAHc,SAKVjI,EAAgBjG,YAAY,CAC7CD,iBAAkBD,EAClBxJ,YAAYwX,EACZvX,iBAAiB4X,EACjB3X,gBAAgB0X,IATW,OAKzB8E,EALyB,OAW/BN,EAA2BM,GAC3B3C,YAAW,WACPE,EAAItN,QAAQgQ,cACR,IAAIC,MAAM,SAAU,CAAEC,YAAY,EAAMC,SAAS,OAEtD,KAhB4B,2CAAH,sDAwB1BqK,EAAwB,uCAAG,WAAM1U,GAAN,SAAAxP,EAAA,0DAC1BiO,EAD0B,iDAE7BC,GAAgB,GAChBxB,EAAgB7F,mBAAmB2I,GAClC7N,MAAK,SAACiW,OAGNF,SAAQ,WACLxJ,GAAgB,GAChBkE,OATyB,2CAAH,sDAaxB+R,EAAiB,uCAAG,sBAAAnkB,EAAA,sDACtBkkB,EAAyB,CACrBnnB,YAAa,GACbC,iBAAkB,GAClBC,gBAAiB,GACjBC,eAAe,IALG,2CAAH,qDASjBkS,EAAe,uCAAG,WAAMC,EAASC,GAAf,SAAAtP,EAAA,sDACpBsP,EAAEC,iBAEEF,EAAQkF,YAUL2E,EACCgL,EAAyBhL,GAGzBK,IAA2B5X,MAAK,WAC5BsX,GAAmB,MAdxBlc,EACCknB,GAAmB,GAGnBE,IARY,2CAAH,wDAyBrB,OACI,gBAAC,KAAD,CAAO3T,WAAY,CAAE8B,QAAS,uBAAwBC,MAAO,sBACzDJ,KAAMA,EACNpE,QAASqE,EACTyF,qBAAqB,EACrBC,YAAY,EACZtF,cAAeA,EACfC,QAAM,EANV,UAOI,gCAAK1V,EAAW,eAAhB,mBACA,yDAEA,wBAAMmT,UAAU,oBAAoB8G,IAAKA,EAAK7G,SAAU7C,EAAa8B,GAArE,UACI,2BAAUc,UAAU,QAApB,SACI,qBAAGA,UAAWM,IAAW,QAAS,CAACjM,MAAK,OAAEgJ,QAAF,IAAEA,GAAF,UAAEA,EAAQgH,mBAAV,aAAE,EAAqB9D,UAA/D,UACI,wBAAOC,QAAQ,QAAf,2BACA,wBAAMR,UAAU,QAAhB,UACI,oCAAOhO,KAAK,SAASyO,GAAG,uBAA0BlD,EAAS,sBAC3D,gDAAOyC,UAAU,YAAYS,GAAG,YAAYzO,KAAK,MAAM2O,YAAY,OAAUpD,EAAS,4BAAtF,IAAkH4C,QAAS,kBAAIgJ,GAAmB,IAAQa,UAAQ,KAClK,oCAAOvJ,GAAG,QAAQT,UAAU,QAAQhO,KAAK,MAAM2O,YAAY,iBAAoBpD,EAAS,oBAE5F,uBAAMyC,UAAU,YAAhB,gBAA6B3C,QAA7B,IAA6BA,GAA7B,UAA6BA,EAAQgH,mBAArC,aAA6B,EAAqB9D,eAY1D,2BAAUP,UAAU,SAApB,SACI,oBAAGA,UAAU,YAAb,SACI,eAAC,GAAD,CAAmBja,KAAK,SAAS+L,UAAWiM,WAKpDmL,GAAmB,eAAC,GAAD,CAAwBjH,KAAMiH,EAAiBhH,MAAO,kBAAIiH,GAAmB,IAAQnD,eA5IxF,SAACoD,GACzB5L,EAAS,mBAAoB4L,GAC7B5L,EAAS,0BAAD,WAAgC4L,EAAI1E,YA0IyGuB,aAAcqC,EAAU,sBAGrKQ,GAAoB,eAAC,GAAD,CACI7G,KAAM6G,EACN5G,MAAO,kBAAI6G,GAAmB,IAC9B3B,gBAjGK,aAkGLD,2BAA4BA,EAC5BE,oBAAqBgC,EACrB/G,eAAe,IAIvCwR,GACA,eAAC,GAAD,CACI7R,KAAM6R,EACN5R,MAAO,WAAK6R,GAAmB,IAC/B3H,QAAS6H,EACT5H,QAAQ,sBACRG,QAAQ,SALZ,SAMI,0FC0FL0H,GArSS,SAACriB,GAAW,IAAD,sDACzB2K,EAAkB3H,KAChBK,EAA2CsH,EAA3CtH,SAAUU,EAAiC4G,EAAjC5G,gBAAiBgB,EAAgB4F,EAAhB5F,YAC3B1J,EAAgBgI,EAAhBhI,KAAMC,EAAU+H,EAAV/H,MAEVE,EAEAuI,EAFAvI,eAAgBC,EAEhBsI,EAFgBtI,iBAAkBC,EAElCqI,EAFkCrI,cAClCC,EACAoI,EADApI,eAAgBC,EAChBmI,EADgBnI,gBAAiBC,EACjCkI,EADiClI,gBAAiBC,EAClDiI,EADkDjI,aAE9Cd,EAAkC+J,EAAlC/J,YAAaC,EAAqB8J,EAArB9J,iBAErB,EAMIkQ,aAAQ,CACRoL,KAAM,MACNnL,cAAe,CACX4G,cAAe3W,EACf+O,MAAO9O,EACP2X,QAASzX,EACTwX,cAAexX,EACf+X,UAAW9X,EACX6X,gBAAiB7X,EACjBgY,OAAQ/X,EACR8X,aAAc9X,EACdiY,QAAShY,EACT+X,cAAe/X,EACfkY,SAAUjY,EACVgY,eAAgBhY,EAChBmY,SAAUlY,EACViY,eAAgBjY,EAChBoY,MAAOnY,EACPkY,YAAalY,GAEjBuP,SAAUC,aAAYT,MAzBtBU,EADJ,EACIA,aADJ,IAEIE,UAAaD,EAFjB,EAEiBA,OAAQoE,EAFzB,EAEyBA,YACrBlE,GAHJ,EAGIA,SACA8K,GAJJ,EAIIA,MACA7K,GALJ,EAKIA,SAuBE+K,GAAmBF,GAAM,gBAAiBhb,GAC1Cmb,GAAqBH,GAAM,kBAAmB/a,GAC9Cmb,GAAkBJ,GAAM,eAAgB9a,GACxCmb,GAAmBL,GAAM,gBAAiB7a,GAC1Cmb,GAAoBN,GAAM,iBAAkB5a,GAC5Cmb,GAAoBP,GAAM,iBAAkB3a,GAC5Cmb,GAAiBR,GAAM,aAAc1a,GAE3C,GAAwCmQ,oBAAS,GAAjD,qBAAOC,GAAP,MAAqBC,GAArB,MACA,GAAoDF,oBAAS,GAA7D,qBAAOqW,GAAP,MAA2BC,GAA3B,MACA,GAA8CtW,oBAAS,GAAvD,qBAAOuW,GAAP,MAAwBC,GAAxB,MAYMpV,GAAe,uCAAG,WAAOC,EAASC,GAAhB,eAAAtP,EAAA,yDACpBsP,EAAEC,kBAEEtB,GAHgB,iDAIpBC,IAAgB,GAEVsB,EAAgB,CAClBpS,KAAMiS,EAAQ0E,cACd1W,MAAOgS,EAAQlD,MACfxS,gBAAiB,CACb4D,eAAgB8R,EAAQ0F,aAAe1F,EAAQ2F,QAAU3F,EAAQ2F,QAAU,GAC3ExX,iBAAkB6R,EAAQgG,eAAiBhG,EAAQiG,UAAYjG,EAAQiG,UAAY,GACnF7X,cAAe4R,EAAQkG,YAAclG,EAAQmG,OAASnG,EAAQmG,OAAS,GACvE9X,eAAgB2R,EAAQoG,aAAepG,EAAQqG,QAAUrG,EAAQqG,QAAU,GAC3E/X,gBAAiB0R,EAAQsG,cAAgBtG,EAAQuG,SAAWvG,EAAQuG,SAAW,GAC/EhY,gBAAiByR,EAAQwG,cAAgBxG,EAAQyG,SAAWzG,EAAQyG,SAAW,GAC/EjY,aAAcwR,EAAQ0G,WAAa1G,EAAQ2G,MAAQ3G,EAAQ2G,MAAQ,KAG3EtJ,EAAgB7J,qBAAqB2M,GAChC7N,MAAK,eAGL+V,SAAQ,WACLxJ,IAAgB,MAxBJ,2CAAH,wDA4DrB,OAhCAK,qBAAU,kBAAMb,GAAS,gBAAiBtQ,KAAO,CAACA,EAAMsQ,KACxDa,qBAAU,kBAAMb,GAAS,QAASrQ,KAAQ,CAACA,EAAOqQ,KAClDa,qBAAU,WACNb,GAAS,UAAWnQ,GACpBmQ,GAAS,gBAAiBnQ,KAC3B,CAACA,EAAgBmQ,KACpBa,qBAAU,WACNb,GAAS,YAAalQ,GACtBkQ,GAAS,kBAAmBlQ,KAC7B,CAACA,EAAkBkQ,KACtBa,qBAAU,WACNb,GAAS,SAAUjQ,GACnBiQ,GAAS,eAAgBjQ,KAC1B,CAACA,EAAeiQ,KACnBa,qBAAU,WACNb,GAAS,UAAWhQ,GACpBgQ,GAAS,gBAAiBhQ,KAC3B,CAACA,EAAgBgQ,KACpBa,qBAAU,WACNb,GAAS,WAAY/P,GACrB+P,GAAS,iBAAkB/P,KAC5B,CAACA,EAAiB+P,KACrBa,qBAAU,WACNb,GAAS,WAAY9P,GACrB8P,GAAS,iBAAkB9P,KAC5B,CAACA,EAAiB8P,KACrBa,qBAAU,WACNb,GAAS,QAAS7P,GAClB6P,GAAS,cAAe7P,KACzB,CAACA,EAAc6P,KAId,uCACI,wBAAMwC,UAAU,WAAWC,SAAU7C,EAAa8B,IAAlD,UACI,sBAAKc,UAAU,eAAf,SACI,4BAAUA,UAAU,QAApB,UACI,oBAAGA,UAAWM,IAAW,OAAQ,CAAEjM,MAAK,OAAEgJ,QAAF,IAAEA,GAAF,UAAEA,EAAQwG,qBAAV,aAAE,EAAuBtD,UAAjE,SACI,kCACI,wBAAOC,QAAQ,aAAf,4BACA,oCAAOC,GAAG,aAAazO,KAAK,OAAO2O,YAAY,kBAAqBpD,GAAS,mBAC7E,uBAAMyC,UAAU,YAAhB,gBAA6B3C,QAA7B,IAA6BA,GAA7B,UAA6BA,EAAQwG,qBAArC,aAA6B,EAAuBtD,eAI5D,qBAAGP,UAAWM,IAAW,UAAzB,UACI,kCACI,wBAAOE,QAAQ,gBAAf,2BACA,wBAAOC,GAAG,QAAQT,UAAU,QAAQhO,KAAK,MAAM2O,YAAY,gBAAgB7a,MAAO+G,EAAW,WAAOC,EAAP,YAA2BD,GAA3B,GAA+Cmd,UAAQ,EAAC/X,UAAU,OAEnK,uBAAM+N,UAAU,SAAhB,SAAyB,qBAAGE,KAAK,IAAIE,MAAM,uBAAuBD,QAnF/D,SAACf,GACxBA,EAAEC,iBACFiV,IAAmB,IAiF0B,UAAuEznB,EAAW,SAAc,MAAhG,yBAG7B,oBAAGmT,UAAWM,IAAW,QAAS,CAAEjM,MAAK,OAAEgJ,QAAF,IAAEA,GAAF,UAAEA,EAAQpB,aAAV,aAAE,EAAesE,UAA1D,SACI,kCACI,wBAAOC,QAAQ,QAAf,mBACA,oCAAOC,GAAG,QAAQwJ,aAAa,QAAQjY,KAAK,QAAQ2O,YAAY,SAAYpD,GAAS,WACrF,uBAAMyC,UAAU,YAAhB,gBAA6B3C,QAA7B,IAA6BA,GAA7B,UAA6BA,EAAQpB,aAArC,aAA6B,EAAesE,eAIpD,qBAAGP,UAAWM,IAAW,QAAzB,UACI,kCACI,wBAAOE,QAAQ,cAAf,sBACA,wBAAOC,GAAG,cAAc3a,MAAM,4BAA4BkM,KAAK,WAAW2O,YAAY,WAAWqJ,UAAQ,EAAC/X,UAAU,OAExH,uBAAM+N,UAAU,SAAhB,SAAyB,oBAAGE,KAAK,IAAIE,MAAM,kBAAkBD,QAxGvD,SAACf,GAC3BA,EAAEC,iBACF+U,IAAsB,IAsGuB,uCAMrC,2BAAUpU,UAAU,QAApB,SACI,uBAAKA,UAAWM,IAAW,iBAAkB,CAAEjM,MAAQoN,IAAgB8G,KAAqBC,KAAuBC,KAAoBC,KAAqBC,KAAsBC,KAAsBC,KAAxM,UACI,mEAEA,qBAAG7I,UAAU,UAAb,UACI,wBAAMA,UAAU,WAAhB,UACI,oCAAOhO,KAAK,WAAWyO,GAAG,UAAUrF,KAAK,WAAcmC,GAAS,iBAAkB,wBAAOiD,QAAQ,UAAf,wBAGlF+H,IACA,wBAAMvI,UAAWM,IAAW,QAAS,CAAEjM,MAAK,OAAEgJ,QAAF,IAAEA,GAAF,UAAEA,EAAQyH,eAAV,aAAE,EAAiBvE,UAA/D,UACI,wBAAOC,QAAQ,UAAf,2CACA,oCAAOC,GAAG,UAAUzO,KAAK,OAAO2O,YAAY,iCAAoCpD,GAAS,UAAW,CAAE/B,SAAU,mBAAoBjE,IAAK,mBAClI,OAAN8F,QAAM,IAANA,GAAA,UAAAA,EAAQyH,eAAR,eAAiBvE,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,QAA7B,IAA6BA,GAA7B,UAA6BA,EAAQyH,eAArC,aAA6B,EAAiBvE,gBAMvF,qBAAGP,UAAU,YAAb,UACI,wBAAMA,UAAU,WAAhB,UACI,oCAAOhO,KAAK,WAAWyO,GAAG,YAAYrF,KAAK,aAAgBmC,GAAS,mBAAoB,wBAAOiD,QAAQ,YAAf,0BAGxFgI,IACA,wBAAMxI,UAAWM,IAAW,iBAAkB,CAAEjM,MAAK,OAAEgJ,QAAF,IAAEA,GAAF,UAAEA,EAAQ+H,iBAAV,aAAE,EAAmB7E,UAA1E,UACI,wBAAOC,QAAQ,gBAAf,6CACA,oCAAOC,GAAG,gBAAgBzO,KAAK,OAAO2O,YAAY,mCAAsCpD,GAAS,gBAC1F,OAANF,QAAM,IAANA,GAAA,UAAAA,EAAQ+H,iBAAR,eAAmB7E,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,QAA7B,IAA6BA,GAA7B,UAA6BA,EAAQ+H,iBAArC,aAA6B,EAAmB7E,gBAM3F,qBAAGP,UAAU,SAAb,UACI,wBAAMA,UAAU,WAAhB,UACI,oCAAOhO,KAAK,WAAWyO,GAAG,SAASrF,KAAK,UAAamC,GAAS,gBAAiB,wBAAOiD,QAAQ,SAAf,uBAG/EiI,IACA,wBAAMzI,UAAWM,IAAW,QAAS,CAAEjM,MAAK,OAAEgJ,QAAF,IAAEA,GAAF,UAAEA,EAAQiI,cAAV,aAAE,EAAgB/E,UAA9D,UACI,wBAAOC,QAAQ,aAAf,kDACA,oCAAOC,GAAG,YAAYzO,KAAK,OAAO2O,YAAY,wCAA2CpD,GAAS,aAC3F,OAANF,QAAM,IAANA,GAAA,UAAAA,EAAQiI,cAAR,eAAgB/E,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,QAA7B,IAA6BA,GAA7B,UAA6BA,EAAQiI,cAArC,aAA6B,EAAgB/E,gBAMrF,qBAAGP,UAAU,UAAb,UACI,wBAAMA,UAAU,WAAhB,UACI,oCAAOhO,KAAK,WAAWyO,GAAG,UAAUrF,KAAK,WAAcmC,GAAS,iBAAkB,wBAAOiD,QAAQ,UAAf,wBAGlFkI,IACA,wBAAM1I,UAAWM,IAAW,QAAS,CAAEjM,MAAK,OAAEgJ,QAAF,IAAEA,GAAF,UAAEA,EAAQmI,eAAV,aAAE,EAAiBjF,UAA/D,UACI,wBAAOC,QAAQ,cAAf,mDACA,oCAAOC,GAAG,cAAczO,KAAK,OAAO2O,YAAY,kCAAqCpD,GAAS,cACvF,OAANF,QAAM,IAANA,GAAA,UAAAA,EAAQmI,eAAR,eAAiBjF,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,QAA7B,IAA6BA,GAA7B,UAA6BA,EAAQmI,eAArC,aAA6B,EAAiBjF,gBAMvF,qBAAGP,UAAU,WAAb,UACI,wBAAMA,UAAU,WAAhB,UACI,oCAAOhO,KAAK,WAAWyO,GAAG,WAAWrF,KAAK,YAAemC,GAAS,kBAAmB,wBAAOiD,QAAQ,WAAf,yBAGrFmI,IACA,wBAAM3I,UAAWM,IAAW,QAAS,CAAEjM,MAAK,OAAEgJ,QAAF,IAAEA,GAAF,UAAEA,EAAQqI,gBAAV,aAAE,EAAkBnF,UAAhE,UACI,wBAAOC,QAAQ,eAAf,4CACA,oCAAOC,GAAG,eAAezO,KAAK,OAAO2O,YAAY,kCAAqCpD,GAAS,eACxF,OAANF,QAAM,IAANA,GAAA,UAAAA,EAAQqI,gBAAR,eAAkBnF,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,QAA7B,IAA6BA,GAA7B,UAA6BA,EAAQqI,gBAArC,aAA6B,EAAkBnF,gBAMzF,qBAAGP,UAAU,YAAb,UACI,wBAAMA,UAAU,WAAhB,UACI,oCAAOhO,KAAK,WAAWyO,GAAG,YAAYrF,KAAK,aAAgBmC,GAAS,kBAAmB,wBAAOiD,QAAQ,YAAf,yBAGvFoI,IACA,wBAAM5I,UAAWM,IAAW,QAAS,CAAEjM,MAAK,OAAEgJ,QAAF,IAAEA,GAAF,UAAEA,EAAQuI,gBAAV,aAAE,EAAkBrF,UAAhE,UACI,wBAAOC,QAAQ,gBAAf,4CACA,oCAAOC,GAAG,gBAAgBzO,KAAK,OAAO2O,YAAY,kCAAqCpD,GAAS,eACzF,OAANF,QAAM,IAANA,GAAA,UAAAA,EAAQuI,gBAAR,eAAkBrF,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,QAA7B,IAA6BA,GAA7B,UAA6BA,EAAQuI,gBAArC,aAA6B,EAAkBrF,gBAMzF,qBAAGP,UAAU,QAAb,UACI,wBAAMA,UAAU,WAAhB,UACI,oCAAOhO,KAAK,WAAWyO,GAAG,QAAQrF,KAAK,SAAYmC,GAAS,eAAgB,wBAAOiD,QAAQ,QAAf,sBAG5EqI,IACA,wBAAM7I,UAAWM,IAAW,QAAS,CAAEjM,MAAK,OAAEgJ,QAAF,IAAEA,GAAF,UAAEA,EAAQyI,aAAV,aAAE,EAAevF,UAA7D,UACI,wBAAOC,QAAQ,YAAf,wDACA,oCAAOC,GAAG,YAAYzO,KAAK,OAAO2O,YAAY,8CAAiDpD,GAAS,YACjG,OAANF,QAAM,IAANA,GAAA,UAAAA,EAAQyI,aAAR,eAAevF,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,QAA7B,IAA6BA,GAA7B,UAA6BA,EAAQyI,aAArC,aAA6B,EAAevF,gBAMlFkB,IAAgB8G,KAAqBC,KAAuBC,KAAoBC,KAAqBC,KAAsBC,KAAsBC,KAAjJ,OAAmKxL,QAAnK,IAAmKA,GAAnK,UAAmKA,EAAQzH,uBAA3K,aAAmK,EAAyB2K,UAAW,oBAAGP,UAAU,YAAb,gBAA0B3C,QAA1B,IAA0BA,GAA1B,UAA0BA,EAAQzH,uBAAlC,aAA0B,EAAyB2K,eAInQ,2BAAUP,UAAU,SAApB,SACI,oBAAGA,UAAU,iBAAb,SACI,eAAC,GAAD,CAAmBja,KAAI,SAAY+L,UAAWiM,YAMtDoW,IAAsB,eAAC,GAAD,CAAqBlS,KAAMkS,GAAoBjS,MAAO,kBAAIkS,IAAsB,MAGtGC,IAAoB,eAAC,GAAD,CAAkBpS,KAAMoS,GAAiBnS,MAAO,kBAAIoS,IAAmB,UC1F5FrrB,GA9LC,SAAC4I,GACb,MAAgC2gB,KAAhC,mBAAOE,EAAP,KAAiBC,EAAjB,KAEAtU,qBAAU,WACgB,YAAnBqU,EAAS5sB,OACR6sB,EAAY9sB,EAAM6U,MAAK,SAAAkY,GAAI,MAAe,YAAbA,EAAK9sB,YACvC,CAAC4sB,EAAUC,IAEd,MAAoC7U,oBAAS,GAA7C,mBAAOyW,EAAP,KAAmBC,EAAnB,KACA,EAAoC1W,oBAAS,GAA7C,mBAAO2W,EAAP,KAAmBC,EAAnB,KACA,EAAwC5W,oBAAS,GAAjD,mBAAO6W,EAAP,KAAqBC,EAArB,KAOA,OACI,gBAAC,GAAD,2BAAoB/iB,GAApB,cAEQ,uBAAKmO,UAAWM,IAAW,MAAM,OAAQ,YAAa,CAAC2B,KAAMsS,IAA7D,UACI,uBAAKvU,UAAU,mBAAmBG,QAAS,kBAAIqU,GAAeD,IAA9D,UACI,kDACCA,EACK,eAAC,KAAD,CAAiBvuB,KAAM6uB,OACvB,eAAC,KAAD,CAAiB7uB,KAAM8uB,UAGjC,sBAAK9U,UAAWM,IAAW,qBAA3B,SACI,eAAC,GAAD,SAmIR,uBAAKN,UAAWM,IAAW,MAAM,OAAQ,YAAa,CAAC2B,KAAMwS,IAA7D,UACI,uBAAKzU,UAAU,mBAAmBG,QAAS,kBAAIuU,GAAeD,IAA9D,UACI,kEACCA,EACK,eAAC,KAAD,CAAiBzuB,KAAM6uB,OACvB,eAAC,KAAD,CAAiB7uB,KAAM8uB,UAGjC,sBAAK9U,UAAWM,IAAW,qBAA3B,SACI,eAACyU,GAAD,CAAiBpI,IAAI,WAAW1E,SAAU,CAAC6E,sBAAuB,cAASJ,QAAS,CAACE,SAAS,SAAUC,aAAY,UAI5H,uBAAK7M,UAAWM,IAAW,MAAM,OAAQ,YAAa,CAAC2B,KAAM0S,IAA7D,UACI,uBAAK3U,UAAU,mBAAmBG,QAAS,kBAAIyU,GAAiBD,IAAhE,UACI,uDACCA,EACK,eAAC,KAAD,CAAiB3uB,KAAM6uB,OACvB,eAAC,KAAD,CAAiB7uB,KAAM8uB,UAGjC,sBAAK9U,UAAWM,IAAW,qBAA3B,SACI,eAAC0U,GAAD,CAAiBrI,IAAI,WAAW1E,SAAU,CAAC6G,sBAAsB,aAAQC,oBAAoB,cAASrC,QAAS,CAACE,SAAS,SAAUC,aAAY,eCtLxJoI,GAZO,WAClB,IAAM/jB,EAAQR,KACRwkB,EAAY,uCAAG,sBAAAplB,EAAA,sEAAiBoB,EAAMuB,IAAN,yBAAjB,mFAAH,qDACZ0iB,EAAW,uCAAG,WAAMC,GAAN,SAAAtlB,EAAA,sEAA+BoB,EAAMnB,KAAN,wBAAoC,CAACqlB,oBAApE,mFAAH,sDACXC,EAAgB,uCAAG,sBAAAvlB,EAAA,sEAAgBoB,EAAMuB,IAAN,8BAAhB,mFAAH,qDAChB6iB,EAAW,uCAAG,WAAMtlB,GAAN,SAAAF,EAAA,sEAAoBoB,EAAMuB,IAAN,uBAAkC,CAACuf,OAAQhiB,IAA/D,mFAAH,sDACXulB,EAAkB,uCAAG,WAAMvlB,GAAN,SAAAF,EAAA,sEAAqBoB,EAAMuB,IAAN,+BAAkCzC,EAAKwlB,YAAc,CAACxD,OAAQhiB,IAAnF,mFAAH,sDACxB,MAAO,CACHklB,eAAcC,cAAaG,cAAaC,qBAAoBF,qBCArDI,GAPS,WACpB,IAAMvkB,EAAQR,KACRglB,EAAc,uCAAG,WAAM1lB,GAAN,SAAAF,EAAA,sEAAoBoB,EAAMnB,KAAN,aAAyBC,GAA7C,mFAAH,sDACd2lB,EAAY,uCAAG,WAAMlV,GAAN,SAAA3Q,EAAA,sEAAmBoB,EAAM0B,MAAN,oBAAyB6N,EAAzB,UAAnB,mFAAH,sDAClB,MAAO,CAACiV,iBAAgBC,iBCqIbC,GAjIM,WACjB,IAAMC,EAAkBC,KAClBC,EAAeC,KACflhB,EAAQlB,KACRqiB,EAA2B/c,YAAuB/K,IAClD+nB,EAAsBpiB,YAAkB3F,IAC9C,EAAsCI,YAAeR,IAArD,mBAAOooB,EAAP,KAAoBC,EAApB,KACA,EAAgD7nB,YAAeL,IAA/D,mBAAOmoB,EAAP,KAAyBC,EAAzB,KACMC,EAAyBrd,YAAuBlL,IAEvCwoB,EAAqDP,EAA5D5I,MAAoCoJ,EAAwBR,EAAlC1I,SAE5BmJ,EAAiBvgB,aAAkB,gBAAGC,EAAH,EAAGA,IAAH,8CAAa,WAAOqK,EAAIjH,GAAX,SAAA1J,EAAA,0DAC/C0J,GAAWoR,SAAQ,OAACpR,QAAD,IAACA,OAAD,EAACA,EAAS4b,mBAAqBxK,SAASnK,GADZ,0EAK3CsV,EAAaZ,YAAY1U,GAC/BhP,MAAK,SAAAxB,GACFmG,EAAIjI,GAAe8B,EAASD,SAE/BkG,OAAM,SAAA1O,GAAMsN,EAAMT,MAAM7M,OATyB,2CAAb,2DAYnCmvB,EAAgBxgB,aAAkB,gBAAGC,EAAH,EAAGA,IAAH,8CAAa,WAAOwgB,EAAYC,GAAnB,SAAA/mB,EAAA,2DAC9C8mB,EAAa,GADiC,uBAE7CxgB,EAAIpI,GAAqB,MAFoB,6BAKxB,aAAtBwoB,EAL8C,oDAM7CC,EAN6C,2DAQjCA,QARiC,IAQjCA,OARiC,EAQjCA,EAAqBK,eAC5Bpc,MAAK,SAAAqc,GAAE,OAAIA,EAAGC,eAAexB,aAAe5K,SAASgM,MATb,wBAY7CxgB,EAAIpI,GAAqB,MACzBoI,EAAIlI,IChDqB,KDmCoB,oDAgB1C6nB,EAAaR,mBAAmB,CAAEC,WAAYoB,EAAYxB,gBAAiByB,IAC7EplB,MAAK,SAAAxB,GAAQ,OAAImG,EAAIpI,GAAqBiC,EAASD,SACnDkG,OAAM,SAAA1O,GAAG,OAAIsN,EAAMT,MAAM7M,OAlBmB,4CAAb,2DAqBlCyvB,EAAc,uCAAG,WAAMjnB,GAAN,SAAAF,EAAA,+EACX+lB,EAAgBH,eAAe1lB,GAC9ByB,MAAK,SAACxB,GAiBH,OAfAimB,GAAoB,SAAAlb,GAAI,kCACjBA,GADiB,IAEpB8b,eAAc,uBACP9b,EAAK8b,gBADE,CAEV,CACIE,eAAiB/mB,EAASD,KAC1BknB,MAAQ,CACJC,QAAS,EACTC,MAAO,EACPC,SAAU,EACVC,QAAS,WAKlBrnB,EAASD,KAAKwlB,cACtB,SAAChuB,GAEA,MAAM,IAAI+I,MAAM/I,OAtBT,2CAAH,sDAmDpB,EAAsDsW,oBAAS,GAA/D,mBAAOyZ,EAAP,KAA4BC,EAA5B,KACM3L,EAAa3D,kBAAO,GAkB1B,OAhBA7J,qBAAU,WACN,OAAO,WACLwN,EAAWrS,SAAU,KAEtB,IAEL6E,qBAAU,WACHkZ,GACsB,aAAtBf,IACAC,IACH5K,EAAWrS,SAAWge,GAAuB,GAC7Cd,EAAeP,GAAa1kB,MAAK,WAC7Boa,EAAWrS,SAAWge,GAAuB,UAElD,CAAChB,EAAmBC,EAAqBC,EAAgBP,EAAaoB,EAAqBC,IAEvF,CACHrB,cACAC,iBACAH,2BACAS,iBACAL,mBACAC,sBACAC,yBACAI,gBACAM,iBACAQ,eAtDmB,SAAChX,GACpB,OAAOoV,EAAgBF,aAAalV,GAC3BhP,MAAK,SAACxB,GAGH,IAFiBA,EAASD,KAAnBuiB,OAIH,MAAM,IAAIhiB,MAAM,kCASpB,OALA2lB,GAAoB,SAAAlb,GAAI,kCACjBA,GADiB,IAEpB8b,eAAgB9b,EAAK8b,eAAe9c,QAAO,SAAA0d,GAAC,OAAEA,EAAEV,eAAexB,aAAe5K,SAASnK,YAGpF,KAEX,SAACjZ,GAEG,MAAM,IAAI+I,MAAM/I,SEtGrB,OAA0B,4CCA1B,OAA0B,2CCA1B,OAA0B,2CCA1B,OAA0B,6CCA5BmwB,GAAoB,IAAIC,KAAKC,aAAa,QAAS,CAC5D9W,MAAO,WACP+J,SAAU,MACVgN,sBAAuB,IAMdC,GAA2B,IAAIH,KAAKC,aAAa,QAAS,CACnE9W,MAAO,WACP+J,SAAU,MACVkN,sBAAuB,IAMdC,GAAkB,IAAIL,KAAKC,aAAa,QAAS,CAC1DG,sBAAuB,IC0EZd,GApFD,SAACrlB,GACX,IACQ2Z,EAeA3Z,EAfA2Z,UACA0M,EAcArmB,EAdAqmB,aACAC,EAaAtmB,EAbAsmB,kBACA5E,EAYA1hB,EAZA0hB,qBACA6E,EAWAvmB,EAXAumB,cAEAC,EASAxmB,EATAwmB,cACAC,EAQAzmB,EARAymB,iBACAC,EAOA1mB,EAPA0mB,sBACAC,EAMA3mB,EANA2mB,yBACAC,EAKA5mB,EALA4mB,kBAEAC,EAGA7mB,EAHA6mB,QACAC,EAEA9mB,EAFA8mB,MACAC,EACA/mB,EADA+mB,SAGR,OACI,qCACA,uBAAK5Y,UAAWM,IAAW,UAAW,QAAS,cAA/C,UACQ,uBAAKN,UAAU,iBAAf,UAISqY,EAID,uBAAKrY,UAAU,kBAAf,UACI,qBAAGA,UAAU,oBAAoBG,QAAS,SAACf,GAAQoZ,GAA0BD,GAAwBnZ,EAAE6D,mBAAvG,UAA6HqV,EAA7H,IAA+I,eAAC,KAAD,CAAiBtyB,KAAM6yB,UACtK,sBAAK7Y,UAAWM,IAAW,gBAAiB,CAAE,GAAMiY,IAApD,SACI,8BAEQF,EAAcxe,KAAI,SAACif,EAAUhY,GAAX,OAAiB,8BAAsD,oBAAGZ,KAAK,IAAIE,MAAO0Y,EAAS9B,eAAe+B,MAAO5Y,QAAS,SAACf,GAAOqZ,EAAkBK,EAAU1Z,IAA/F,SAAqG0Z,EAAS9B,eAAe+B,SAAnL,cAAgBD,EAAS9B,eAAexB,uBAP1F,wCAeL,uBAAKxV,UAAU,cAAf,UACI,qBAAGA,UAAU,gBAAgBG,QAAS,SAACf,GAAQmU,GAAsB4E,GAAoB/Y,EAAE6D,mBAA3F,UAAiHiV,EAAjH,IAA+H,eAAC,KAAD,CAAiBlyB,KAAM6yB,UACtJ,sBAAK7Y,UAAWM,IAAW,YAAa,CAAE,GAAM6X,IAAhD,SACI,8BAEQ3M,EAAU3R,KAAI,SAACmf,GAAD,OAAU,8BAA8B,oBAAG9Y,KAAK,IAAIE,MAAM,QAAQD,QAAS,SAACf,GAAOgZ,EAAcY,EAAM5Z,IAA/D,SAAqE4Z,EAAKlL,YAAxG,aAAekL,EAAKvL,sBAOhE,sBAAKzN,UAAWM,IAAW,OAAQ,eAAnC,SACI,uBAAKN,UAAU,eAAf,UACI,qBAAGA,UAAU,QAAb,UACI,uBAAMA,UAAU,SAAhB,SAA0BiZ,GAAUC,OAAOR,KAAgB,qDAE/D,6BAAG,sBAAKxX,IAAKiY,GAAShY,IAAI,qBAGlC,sBAAKnB,UAAWM,IAAW,OAAQ,YAAnC,SACI,uBAAKN,UAAU,eAAf,UACI,qBAAGA,UAAU,QAAb,UACI,uBAAMA,UAAU,SAAhB,SAA0BiZ,GAAUC,OAAOP,KAAc,kDAE7D,6BAAG,sBAAKzX,IAAKkY,GAAQjY,IAAI,qBAGjC,sBAAKnB,UAAWM,IAAW,OAAQ,QAAnC,SACI,uBAAKN,UAAU,eAAf,UACI,qBAAGA,UAAU,QAAb,UACI,uBAAMA,UAAU,SAAhB,SAA0BiZ,GAAUC,OAAON,KAAiB,8CAEhE,6BAAG,sBAAK1X,IAAKmY,GAAWlY,IAAI,2BCuIrCmY,GA7MM,SAACznB,GAAW,IAAD,EACtB0nB,EAAiBhO,KACjBiO,EAAmB5D,KACjBpK,EAAc+N,EAAd/N,UACA2K,EAKJqD,EALIrD,YACJC,EAIAoD,EAJApD,eACAH,EAGAuD,EAHAvD,yBACAS,EAEA8C,EAFA9C,eACAe,EACA+B,EADA/B,eAEE3iB,EAAQlB,KACRiY,EAAa3D,kBAAO,GAE1B7J,qBAAU,WACN,OAAO,WACLwN,EAAWrS,SAAU,KAEtB,IAEL,MAAwCsE,qBAAxC,mBAAO2b,EAAP,KAAqBC,EAArB,KACelD,EAAqDP,EAA5D5I,MAAoCoJ,EAAwBR,EAAlC1I,SAElClP,qBAAU,WACN,OAAQmY,GACJ,IAAK,WACEC,GACCiD,EAAgBjD,GACpB,MACJ,IAAK,WACD3hB,EAAMT,MAAMoiB,GACZiD,IACA,MACJ,IAAK,UACDA,OAMT,CAAClD,EAAmBC,IAEvB,MAAwC3Y,mBAAS,IAAjD,mBAAOoa,EAAP,KAAqByB,EAArB,KASA,EAAkD7b,oBAAS,GAA3D,mBAAOqa,EAAP,KAA0B5E,EAA1B,KAEAlV,qBAAU,WACN,IAAK6Z,GAAgB1M,EAAU3K,OAAS,EAAG,CACvC,IAAM+Y,EAAUpO,EAAU9Q,MAAK,SAAAqc,GAAE,OAAIA,EAAGtJ,SAAW0I,KAC/CyD,GAAU/N,EAAWrS,SAAWmgB,EAAgBC,EAAQ9L,aAEjE,CAACoK,EAAcyB,EAAiBnO,EAAW2K,IAE9C,MAA8CrY,oBAAS,GAAvD,mBAAOgW,EAAP,KAAwBC,EAAxB,KACA,EAAsCjW,mBAAS,MAA/C,mBAAO+b,EAAP,KAAoBC,EAApB,KACA,EAAwChc,oBAAS,GAAjD,mBAAOC,EAAP,KAAqBC,EAArB,KAEM+b,EAA0B,WAC5BD,EAAe,MACf/F,GAAmB,IAuBjBiG,EAAmB,SAACC,GACtBH,EAAeG,GACflG,GAAmB,IAGvB,OAEI,uBAAK5T,QAAS,WAAKoT,GAAqB,IAAxC,UACI,eAAC,GAAD,CACI/H,UAAWA,EACX0M,aAAcA,EACdC,kBAAmBA,EACnB5E,qBAAsBA,EACtB6E,cAAe,SAACY,EAAM5Z,GAAP,OA3DL,SAAC4Z,EAAM5Z,GACzBA,EAAEC,iBACFqX,EAAesC,EAAKvL,OAAQgJ,GAC5BL,EAAe4C,EAAKvL,QACpBkM,EAAgBX,EAAKlL,UACrByF,GAAqB,GAsDa6E,CAAcY,EAAM5Z,IAC9CsZ,QAASe,GAAgBA,EAAa3C,gBAAkB2C,EAAa3C,eAAejW,OAAS,EAAI4Y,EAAa3C,eAAe3Q,QAAO,SAACC,EAAK8T,GAAN,OAAe9T,EAAM8T,EAAKhD,MAAMC,UAAS,GAAK,EAClLwB,MAAOc,GAAgBA,EAAa3C,gBAAkB2C,EAAa3C,eAAejW,OAAS,EAAI4Y,EAAa3C,eAAe3Q,QAAO,SAACC,EAAK8T,GAAN,OAAe9T,EAAM8T,EAAKhD,MAAME,QAAO,GAAK,EAC9KwB,SAAUa,GAAgBA,EAAa3C,gBAAkB2C,EAAa3C,eAAejW,OAAS,EAAI4Y,EAAa3C,eAAe3Q,QAAO,SAACC,EAAK8T,GAAN,OAAe9T,EAAM8T,EAAKhD,MAAMG,WAAU,GAAK,IAGxL,uBAAKrX,UAAWM,IAAW,UAAW,cAAe,cAArD,UACI,uBAAKN,UAAU,iBAAf,UACI,+CACA,oBAAGA,UAAU,eAAb,SAA4B,gBAAC,IAAD,CAAM8C,GAAIpe,EAASS,aAAcib,MAAM,eAAvC,UAAsD,sBAAKc,IAAKiZ,GAAehZ,IAAI,MAAnF,IAA0F,yDAG1H,eAAC,eAAD,UACI,yBAAOnB,UAAU,iBAAjB,UACI,wBAAOA,UAAWM,IAAW,SAA7B,SACI,gCAEI,wBACA,wCACA,wCACA,wCACA,2CACA,yCAGR,iCAEQmZ,GACGA,EAAa3C,gBACb2C,EAAa3C,eAAejW,OAAS,GACrC,aAAI4Y,EAAa3C,gBACfjd,KAAI,SAAAugB,GAAC,kCACCA,GADD,IAEFpD,eAAe,2BACRoD,EAAEpD,gBADK,IAEV+B,MAAOqB,EAAEpD,eAAe+B,MAAQqB,EAAEpD,eAAe+B,MAAQ,kBAGhE9K,MAAK,SAACne,EAAGoe,GAAJ,OAAUpe,EAAEknB,eAAe+B,MAAM7kB,cAAgBga,EAAE8I,eAAe+B,MAAM7kB,cAAgB,GAAK,KAClG2F,KAAI,SAACif,EAAUhY,GAAX,OACD,gCACI,8BAAI,eAAC,IAAD,CAAMgC,GAAE,UAAKpe,EAASQ,UAAd,YAA2B4zB,EAAS9B,eAAexB,YAA3D,SAA0EsD,EAAS9B,eAAe+B,UACtG,8BAAKd,GAAgBiB,OAAOJ,EAAS5B,MAAMC,WAC3C,gCAAKc,GAAgBiB,OAAOJ,EAAS5B,MAAME,OAA3C,IAAoD0B,EAAS5B,MAAMC,QAAU,GAAK2B,EAAS5B,MAAME,MAAQ,EAArD,WAA6DiD,KAAKC,MAA6B,IAAvBxB,EAAS5B,MAAME,MAAc0B,EAAS5B,MAAMC,SAApH,YACpD,gCAAKc,GAAgBiB,OAAOJ,EAAS5B,MAAMG,UAA3C,IAAuDyB,EAAS5B,MAAMG,SAAW,GAAKyB,EAAS5B,MAAME,MAAQ,EAAtD,WAA8DiD,KAAKC,MAAgC,IAA1BxB,EAAS5B,MAAMG,SAAiByB,EAAS5B,MAAME,OAAxH,YACvD,8BAAKO,GAAkBuB,OAAOJ,EAAS5B,MAAMI,WAC7C,qBAAInX,QAAS,SAACf,GAAKA,EAAEC,iBAAkB2a,EAAiBlB,IAAxD,SAAoE,eAAC,KAAD,CAAiB9yB,KAAMu0B,WAN/F,mBAAqBzB,EAAS9B,eAAexB,WAA7C,YAA2D1U,cAcnF,eAAC,cAAD,UAEQ2Y,GACGA,EAAa3C,gBACb2C,EAAa3C,eAAejW,OAAS,GACrC,aAAI4Y,EAAa3C,gBACfjd,KAAI,SAAAugB,GAAC,kCACCA,GADD,IAEFpD,eAAe,2BACRoD,EAAEpD,gBADK,IAEV+B,MAAOqB,EAAEpD,eAAe+B,MAAQqB,EAAEpD,eAAe+B,MAAQ,kBAGhE9K,MAAK,SAACne,EAAGoe,GAAJ,OAAUpe,EAAEknB,eAAe+B,MAAM7kB,cAAgBga,EAAE8I,eAAe+B,MAAM7kB,cAAgB,GAAK,KAClG2F,KAAI,SAACif,EAAUhY,GAAX,OACD,uBAAKd,UAAU,QAAf,UACQ,uBAAKA,UAAU,aAAf,UAA4B,eAAC,IAAD,CAAM8C,GAAE,UAAKpe,EAASQ,UAAd,YAA2B4zB,EAAS9B,eAAexB,YAA3D,SAA0EsD,EAAS9B,eAAe+B,QAA9H,IAA4I,eAAC,KAAD,CAAiB/yB,KAAMu0B,KAAYpa,QAAS,SAACf,GAAKA,EAAEC,iBAAkB2a,EAAiBlB,SACnO,uBAAK9Y,UAAU,QAAf,UACI,iCACI,sBAAKA,UAAU,KAAf,mBACA,sBAAKA,UAAU,KAAf,kBACA,sBAAKA,UAAU,KAAf,mBACA,sBAAKA,UAAU,KAAf,yBAEJ,iCACI,sBAAKA,UAAU,KAAf,SAAqBiY,GAAgBiB,OAAOJ,EAAS5B,MAAMC,WAC3D,uBAAKnX,UAAU,KAAf,UAAqBiY,GAAgBiB,OAAOJ,EAAS5B,MAAME,OAA3D,IAAoE0B,EAAS5B,MAAMC,QAAU,GAAK2B,EAAS5B,MAAME,MAAQ,EAArD,WAA6DiD,KAAKC,MAA6B,IAAvBxB,EAAS5B,MAAME,MAAc0B,EAAS5B,MAAMC,SAApH,YACpE,uBAAKnX,UAAU,KAAf,UAAqBiY,GAAgBiB,OAAOJ,EAAS5B,MAAMG,UAA3D,IAAuEyB,EAAS5B,MAAMG,SAAW,GAAKyB,EAAS5B,MAAME,MAAQ,EAAtD,WAA8DiD,KAAKC,MAAgC,IAA1BxB,EAAS5B,MAAMG,SAAiByB,EAAS5B,MAAME,OAAxH,YACvE,sBAAKpX,UAAU,KAAf,SAAqB2X,GAAkBuB,OAAOJ,EAAS5B,MAAMI,mBAb7E,mBAAwCwB,EAAS9B,eAAexB,WAAhE,YAA8E1U,SAqB9F,eAAC,GAAD,CACImB,KAAM6R,EACN5R,MAAO6X,EACP3N,QA9HmB,WAAK,IAAD,EAChCrO,IACC8b,IAA0B,OAAXA,QAAW,IAAXA,GAAA,UAAAA,EAAa7C,sBAAb,eAA6BxB,YAAa,GAI1D3J,EAAWrS,UACVwE,GAAgB,GAChByZ,EAAgBoC,EAAY7C,eAAexB,YAC1C/jB,MAAK,WACCoa,EAAWrS,SACVugB,OAEL,SAACvyB,GACAsN,EAAMT,MAAM,4BAA6B7M,MAE5CggB,SAAQ,WAAMqE,EAAWrS,SAAWwE,GAAgB,QA+G7CqO,QAAQ,kBACRG,QAAQ,kBALZ,SAMI,yFAAoDqN,QAApD,IAAoDA,GAApD,UAAoDA,EAAa7C,sBAAjE,aAAoD,EAA6B+B,MAAjF,gB,oBCpNL,OAA0B,4CCA1B,OAA0B,wDCmL1ByB,GAxJY,SAAC3oB,GACxB,IAAMkkB,EAAeC,KACfyE,EAA0BvhB,YAAuB9K,IACxCssB,EAA2DD,EAAlEpN,MAAuCsN,EAA2BF,EAArClN,SAErC,EAAgCiF,KAAhC,mBAAOE,EAAP,KAAiBC,EAAjB,KACMnW,EAAkB3H,KAClBC,EAAQlB,KAEN1G,EADasP,EAAbtH,SACAhI,KACF2e,EAAa3D,kBAAO,GAEnB+N,EADkBL,KAClBK,yBACQO,EAAqDP,EAA5D5I,MAAoCoJ,EAAwBR,EAAlC1I,SAClC,EAAwCzP,mBAAS,MAAjD,mBAAO2b,EAAP,KAAqBC,EAArB,KACArb,qBAAU,WACN,GACS,aADDmY,EAEGC,GACCiD,EAAgBjD,KAK7B,CAACD,EAAmBC,IAGvBpY,qBAAU,WACN,OAAO,WACLwN,EAAWrS,SAAU,KAEtB,IAEL,IAAMohB,EAAsBzkB,aAAkB,gBAAGC,EAAH,EAAGA,IAAH,6BAAa,sBAAAtG,EAAA,+EAChDimB,EAAaV,mBACnB5jB,MAAK,SAAAxB,GAAQ,OAAEmG,EAAIhI,GAAoB6B,EAASD,SAChDkG,OAAM,SAAA1O,GACHsN,EAAMT,MAAM7M,OAJuC,8CAO3D,EAAoDsW,oBAAS,GAA7D,mBAAO+c,EAAP,KAA2BC,EAA3B,KAiBA,OAfAzc,qBAAU,WACHwc,GACuB,aAAvBH,GAAsCC,IACrCG,GAAsB,GACtBF,IACCpT,SAAQ,WAASqE,EAAWrS,SAAQshB,GAAsB,SAEjE,CAACJ,EAAsBC,EAAwBC,EAAqBC,IAEtExc,qBAAU,WACiB,cAAnBqU,EAAS5sB,OAA0B+lB,EAAWrS,SAC9CmZ,EAAY9sB,EAAM6U,MAAK,SAAAkY,GAAI,MAAmB,cAAfA,EAAK9sB,YAEzC,CAAC4sB,EAAUC,IAIV,gBAAC,GAAD,2BAAoB9gB,GAApB,cAG8B,aAAtB2kB,GACGiD,GACAA,EAAa3C,gBAC0B,IAAvC2C,EAAa3C,eAAejW,QAE/B,uBAAKb,UAAU,cAAf,UACI,oBAAGA,UAAU,YAAb,SAAyB,sBAAKkB,IAAK6Z,GAAmB5Z,IAAI,0BAC1D,oBAAGnB,UAAU,YAAb,6CACA,oBAAGA,UAAU,MAAb,4GACA,oBAAGA,UAAU,iBAAb,SAA8B,eAAC,IAAD,CAAM8C,GAAIpe,EAASS,aAAcib,MAAM,eAAvC,2CAIZ,aAAtBoW,GACGiD,GACAA,EAAa3C,gBACb2C,EAAa3C,eAAejW,OAAS,GAExC,uCACA,uBAAKb,UAAU,QAAf,UACA,2CAAa9S,EAAb,OACA,mFAGJ,uBAAK8S,UAAWM,IAAW,UAAW,UAAW,cAAjD,UAIiC,YAAzBoa,GAAsC,yBAGb,aAAzBA,GACG,uCACC,uBAAK1a,UAAU,OAAf,UACI,sBAAKA,UAAU,cAAf,SACI,iDAEJ,uBAAKA,UAAU,eAAf,UACI,oBAAGA,UAAU,QAAb,gBACA,qBAAGA,UAAU,aAAb,UAA0B,0DAAkC,uBAAMA,UAAU,OAAhB,mCAIpE,uBAAKA,UAAU,OAAf,UACI,sBAAKA,UAAU,cAAf,SACI,mDAEJ,uBAAKA,UAAU,eAAf,UACI,oBAAGA,UAAU,QAAb,gBACA,oBAAGA,UAAU,aAAb,SAA0B,gBAAC,IAAD,CAAM8C,GAAIpe,EAASkB,aAAcwa,MAAM,oBAAvC,UAA2D,6CAA3D,IAAiF,sBAAKJ,UAAU,MAAMkB,IAAK8Z,GAAU7Z,IAAI,oBAMtI,aAAzBuZ,GAAwCC,GACrC,uCACC,uBAAK3a,UAAU,OAAf,UACI,sBAAKA,UAAU,cAAf,SACI,iDAEJ,uBAAKA,UAAU,eAAf,UACI,qBAAGA,UAAU,QAAb,UAAsBiZ,GAAUC,OAAOtO,SAAS+P,EAAuBM,qBAAvE,IAA6F,iCAAQrQ,UAAU+P,EAAuBM,mBAAqB,GAAGC,QAAQ,GAAGC,UAAU,SACnL,qBAAGnb,UAAU,aAAb,UAA0B,0DAAkC,uBAAMA,UAAU,OAAhB,UAAyBob,OAASpC,OAAS,GAAKoC,OAAWA,OAASC,QAAQ,SAASC,IAAI,EAAG,MAAMpC,OAAO,2BAI7K,uBAAKlZ,UAAU,OAAf,UACI,sBAAKA,UAAU,cAAf,SACI,mDAEJ,uBAAKA,UAAU,eAAf,UACI,qBAAGA,UAAU,QAAb,UAAsBiZ,GAAUC,OAAOtO,SAAS+P,EAAuBY,cAAvE,IAAsF,iCAAQ3Q,UAAU+P,EAAuBY,YAAc,GAAGL,QAAQ,GAAGC,UAAU,SACrK,oBAAGnb,UAAU,aAAb,SAA0B,gBAAC,IAAD,CAAM8C,GAAIpe,EAASkB,aAAcwa,MAAM,oBAAvC,UAA2D,6CAA3D,IAAiF,sBAAKJ,UAAU,MAAMkB,IAAK8Z,GAAU7Z,IAAI,uBAOvK,eAAC,GAAD,YCpGGrX,GA1DG,SAAC+H,GACf,MAAgC2gB,KAAhC,mBAAOE,EAAP,KAAiBC,EAAjB,KACM9G,EAAa3D,kBAAO,GAGnB+N,EADkBL,KAClBK,yBACQO,EAAqDP,EAA5D5I,MAAoCoJ,EAAwBR,EAAlC1I,SAClC,EAAwCzP,mBAAS,MAAjD,mBAAO2b,EAAP,KAAqBC,EAArB,KAsBA,OArBArb,qBAAU,WACN,GACS,aADDmY,EAEGC,GACCiD,EAAgBjD,KAK7B,CAACD,EAAmBC,IAEvBpY,qBAAU,WACN,OAAO,WACLwN,EAAWrS,SAAU,KAEtB,IAEL6E,qBAAU,WACgB,cAAnBqU,EAAS5sB,OAAyB+lB,EAAWrS,SAASmZ,EAAY9sB,EAAM6U,MAAK,SAAAkY,GAAI,MAAe,cAAbA,EAAK9sB,YAC5F,CAAC4sB,EAAUC,IAGV,gBAAC,GAAD,2BAAoB9gB,GAApB,cAE8B,aAAtB2kB,GACGiD,GACAA,EAAa3C,gBAC0B,IAAvC2C,EAAa3C,eAAejW,QAE/B,uBAAKb,UAAU,cAAf,UACI,oBAAGA,UAAU,YAAb,SAAyB,sBAAKkB,IAAK6Z,GAAmB5Z,IAAI,0BAC1D,oBAAGnB,UAAU,YAAb,6CACA,oBAAGA,UAAU,MAAb,4GACA,oBAAGA,UAAU,iBAAb,SAA8B,eAAC,IAAD,CAAM8C,GAAIpe,EAASS,aAAcib,MAAM,eAAvC,2CAId,aAAtBoW,GACGiD,GACAA,EAAa3C,gBACb2C,EAAa3C,eAAejW,OAAS,GAExC,eAAC,GAAD,SC7DC,OAA0B,8CCuJ1B2a,GAvIK,SAAC3pB,GAAW,IAAD,QACpByK,EAAWzK,EAAXyK,QACP,EAAgCkW,KAAhC,mBAAOE,EAAP,KAAiBC,EAAjB,KACM4G,EAAiBhO,KAChBE,EAAiC8N,EAAjC9N,aAAcK,EAAmByN,EAAnBzN,gBACfD,EAAa3D,kBAAO,GAC1B,EAAwDpK,oBAAS,GAAjE,mBAAO2d,EAAP,KAA6BC,EAA7B,KACA,EAAwC5d,oBAAS,GAAjD,mBAAOC,EAAP,KAAqBC,EAArB,KACA,EAA8CF,oBAAS,GAAvD,mBAAO6d,EAAP,KAAwBC,EAAxB,KAEO3E,EADkBrB,KAClBqB,eACDniB,EAAQlB,KACd,EAA0BkK,oBAAU,GAApC,mBAAO+d,EAAP,KAAcC,EAAd,KAEMpf,EAAmBnB,OAAaoB,MAAM,CACxCyD,MAAO7E,OAAasB,OAAOrB,SAAS,YACpCugB,YAAaxgB,OAAasB,OAAOrB,SAAS,cAG9C,EAIIwB,aAAQ,CACRoL,KAAM,MACNnL,cAAe,CACXmD,MAAO,GACP2b,YAAa,IAEjB7e,SAAUC,aAAYT,KATtBU,EADJ,EACIA,aACaC,EAFjB,EAEIC,UAAaD,OACbE,EAHJ,EAGIA,SAWG2B,EAAe,uCAAG,WAAMC,EAASC,GAAf,eAAAtP,EAAA,yDACrBsP,EAAEC,kBACCtB,EAFkB,iDAIfuB,EAAgB,CAClByZ,MAAO5Z,EAAQiB,MACf4b,YAAa7c,EAAQ4c,aAGtBlQ,EAAWrS,UACVwE,GAAgB,GAChBiZ,EAAe3X,GACd7N,MAAK,SAACiW,GACAmE,EAAWrS,UACVsiB,EAASpU,GACTkU,GAAmB,OAExB,SAACp0B,GACAsN,EAAMT,MAAM,6BAA8B7M,MAE7CggB,SAAQ,WAAMqE,EAAWrS,SAAWwE,GAAgB,OApBpC,2CAAH,wDAwBtBK,qBAAU,WACN,OAAO,WACLwN,EAAWrS,SAAU,KAEtB,IAEL6E,qBAAU,WACgB,cAAnBqU,EAAS5sB,OAAyB+lB,EAAWrS,SAC5CmZ,EAAY9sB,EAAM6U,MAAK,SAAAkY,GAAI,MAAe,cAAbA,EAAK9sB,YACvC,CAAC4sB,EAAUC,IAEdtU,qBAAU,WACHod,GACwB,IAAxBhQ,EAAa5K,SACZ6a,GAAwB,GACxB5P,IAAkBtE,SAAQ,WAAMqE,EAAWrS,SAAWkiB,GAAwB,SAEnF,CAACjQ,EAAcgQ,EAAsBC,EAAyB5P,IAEjE,IAAMmQ,EAAsB,WACxBpQ,EAAWrS,SAAWoiB,GAAmB,GACzCtf,EAAQ6G,KAAR,UAAgBze,EAASQ,UAAzB,YAAsC22B,KAG1C,OACI,eAAC,GAAD,2BAAoBhqB,GAApB,IAA2BuhB,UAAU,eAArC,SACI,uBAAKpT,UAAWM,IAAW,eAAe,QAA1C,UACI,mDACA,sBAAKN,UAAU,eAAf,SACI,wBAAMA,UAAU,oBAAoBC,SAAU7C,EAAa8B,GAA3D,UACI,4BAAUc,UAAU,QAApB,UACI,oBAAGA,UAAWM,IAAW,OAAQ,CAACjM,MAAK,OAAEgJ,QAAF,IAAEA,GAAF,UAAEA,EAAQ+C,aAAV,aAAE,EAAeG,UAAxD,SACI,kCACI,wBAAOC,QAAQ,gBAAf,iCACA,oCAAOC,GAAG,gBAAgBzO,KAAK,OAAO2O,YAAY,uBAA0BpD,EAAS,WACrF,uBAAMyC,UAAU,YAAhB,gBAA6B3C,QAA7B,IAA6BA,GAA7B,UAA6BA,EAAQ+C,aAArC,aAA6B,EAAeG,eAcpD,qBAAGP,UAAWM,IAAW,eAAgB,CAACjM,MAAK,OAAEgJ,QAAF,IAAEA,GAAF,UAAEA,EAAQ0e,mBAAV,aAAE,EAAqBxb,UAAtE,UACI,wBAAOC,QAAQ,eAAf,0BACA,uBAAMR,UAAU,SAAhB,SACI,kDAAQ5E,KAAK,eAAeqF,GAAG,gBAAmBlD,EAAS,gBAA3D,cACA,yBAASzX,MAAM,GAAf,2BAEQ2lB,EAAa5R,KAAI,SAACqiB,EAAMpb,GAAP,OAAY,yBAAwBhb,MAAOo2B,EAA/B,SAAsCA,GAAtC,aAAmBpb,aAI5D,uBAAMd,UAAU,YAAhB,gBAA6B3C,QAA7B,IAA6BA,GAA7B,UAA6BA,EAAQ0e,mBAArC,aAA6B,EAAqBxb,gBAG1D,2BAAUP,UAAU,SAApB,SACI,oBAAGA,UAAU,YAAb,SACI,eAAC,GAAD,CAAmBja,KAAI,eAAkB+L,UAAWiM,aAKpE,gBAAC,GAAD,CAAckE,KAAM0Z,EAAiBzZ,MAAO+Z,EAAqB7P,QAAS6P,EAAqBzP,QAAQ,aAAvG,UACI,oBAAGzL,MAAO,CAACob,UAAW,UAAtB,SAAiC,sBAAKjb,IAAKkb,GAAiBjb,IAAI,gBAChE,oBAAGJ,MAAO,CAACob,UAAW,UAAtB,qDCyKLlyB,GA1SS,SAAC4H,GAAW,IAAD,IAEvByK,EAAYzK,EAAZyK,QACFxH,EAAQlB,KACR2lB,EAAiBhO,KACjBiO,EAAmB5D,KACzB,EAAgCpD,KAAhC,mBAAOE,EAAP,KAAiBC,EAAjB,KACkB0D,EAAqBgG,cAAjCzF,WAEFT,EAUAqD,EAVArD,YACAC,EASAoD,EATApD,eACAM,EAQA8C,EARA9C,eACAT,EAOAuD,EAPAvD,yBAGAM,EAIAiD,EAJAjD,uBACAI,EAGA6C,EAHA7C,cACAc,EAEA+B,EAFA/B,eAGW6E,EAAyD/F,EAAhElJ,MAAsCkP,EAA0BhG,EAApChJ,SACrBiJ,EAAqDP,EAA5D5I,MAAoCoJ,EAAwBR,EAAlC1I,SAC1B/B,EAAc+N,EAAd/N,UACR,EAAwC1N,qBAAxC,mBAAO2b,EAAP,KAAqBC,EAArB,KACA,EAAkD5b,oBAAS,GAA3D,mBAAOqa,EAAP,KAA0B5E,EAA1B,KACA,EAAwCzV,mBAAS,IAAjD,mBAAOoa,EAAP,KAAqByB,EAArB,KACA,EAA4C7b,oBAAS,GAArD,mBAAO0e,EAAP,KAAuBC,EAAvB,KACA,EAAgD3e,mBAAS,IAAzD,mBAAOwa,EAAP,KAAyBoE,EAAzB,KACA,EAAoD5e,oBAAS,GAA7D,mBAAO6e,EAAP,KAA2BC,GAA3B,KACM/Q,GAAa3D,kBAAO,GAE1B7J,qBAAU,WACN,OAAO,WACLwN,GAAWrS,SAAU,KAEtB,IAGL6E,qBAAU,WACiB,cAAnBqU,EAAS5sB,OACT+lB,GAAWrS,SAAYmZ,EAAY9sB,EAAM6U,MAAK,SAAAkY,GAAI,MAAmB,cAAfA,EAAK9sB,YAChE,CAAC4sB,EAAUC,IAEdtU,qBAAU,WAAO,IAAD,EACRse,GACCtG,IACFwG,MAAMxG,IACNzL,SAASyL,GAAoB,GACL,aAAxBiG,IACsB,OAArBC,QAAqB,IAArBA,GAAA,UAAAA,EAAuBvF,sBAAvB,eAAuCxB,cAAe5K,SAASyL,KAEnExK,GAAWrS,SAAWojB,IAAsB,GAC5CjG,EAAcN,EAAkBF,GAC3B3O,SAAQ,kBAAMqE,GAAWrS,SAAWojB,IAAsB,UAChE,CAACvG,EAAkBiG,EAAqBC,EAAuBpG,EAAaQ,EAAegG,IAE9Fte,qBAAU,WACN,OAAQie,GACJ,IAAK,WACGC,GACA7C,EAAgB6C,GACpB,MACJ,IAAK,WACDznB,EAAMT,MAAMkoB,GACZ7C,IACA,MACJ,IAAK,UACDA,OAOT,CAAC4C,EAAqBC,EAAuBznB,IAEhDuJ,qBAAU,WACN,GAAKgY,IACFwG,MAAMxG,KACJ6B,GAAgB1M,EAAU3K,OAAS,EAAG,CACvC,IAAM+Y,EAAUpO,EAAU9Q,MAAK,SAAAqc,GAAE,OAAIA,EAAGtJ,SAAW0I,KAC/CyD,GACA/N,GAAWrS,SAAWmgB,EAAgBC,EAAQ9L,aAEvD,CAACoK,EAAcyB,EAAiBnO,EAAW2K,EAAaE,IAE3DhY,qBAAU,WACN,GAAKgY,IACFwG,MAAMxG,IAEiB,aAAtBG,GACGC,GACAA,EAAoBK,gBACpBL,EAAoBK,eAAejW,OAAS,GAC5CwV,EAAmB,EACxB,CACE,IAAMuD,EAAUnD,EAAoBK,eAC/Bpc,MAAK,SAAAqc,GAAE,OAAIA,EAAGC,eAAexB,aAAe5K,SAASyL,MAEtDuD,GAAWA,EAAQ5C,eAAe+B,QAAUT,GACxCzM,GAAWrS,SAAWkjB,EAAoB9C,EAAQ5C,eAAe+B,UAG9E,CAACT,EAAkBoE,EAAqBlG,EAAmBC,EAAqBJ,IAEnF,OAA0CvY,mBAAS,IAAnD,qBAAOua,GAAP,MAAsByE,GAAtB,MAEAze,qBAAU,WAEDgY,IACFwG,MAAMxG,IACLgC,IAAiBA,GAAcxX,OAAS,GAClB,aAAtB2V,GACAC,GACGA,EAAoBK,gBACpBL,EAAoBK,eAAejW,OAAS,GAC3CgL,GAAWrS,SACXsjB,GAAiB,aAAIrG,EAAoBK,gBACpC7I,MAAK,SAACne,EAAGoe,GAAJ,OAAUpe,EAAEknB,eAAe+B,MAAM7kB,cAAgBga,EAAE8I,eAAe+B,MAAM7kB,cAAgB,GAAK,SAEhH,CAACsiB,EAAmBC,EAAqB4B,GAAeyE,GAAkBzG,IAE7E,OAA8BvY,mBAAS,GAAvC,qBAAO4a,GAAP,MAAgBqE,GAAhB,MACA,GAAwBjf,mBAAS,GAAjC,qBAAOkf,GAAP,MAAaC,GAAb,MACA,GAA0Bnf,mBAAS,GAAnC,qBAAOof,GAAP,MAAcC,GAAd,MAEA9e,qBAAU,WACDgY,IACFwG,MAAMxG,KACLoD,GACGA,EAAavC,OACbuC,EAAavC,MAAMrW,OAAS,GAC3BgL,GAAWrS,SAAWujB,GAAWtD,EAAavC,MAAM/Q,QAAO,SAACC,EAAK8T,GAAN,OAAe9T,EAAM8T,EAAK/C,UAAS,IAC9FtL,GAAWrS,SAAWyjB,GAAQxD,EAAavC,MAAM/Q,QAAO,SAACC,EAAK8T,GAAN,OAAe9T,EAAM8T,EAAK9C,QAAO,IACzFvL,GAAWrS,SAAW2jB,GAAS1D,EAAavC,MAAM/Q,QAAO,SAACC,EAAK8T,GAAN,OAAe9T,EAAM8T,EAAK7C,WAAU,MAGjGxL,GAAWrS,SAAWujB,GAAW,GACjClR,GAAWrS,SAAWyjB,GAAQ,GAC9BpR,GAAWrS,SAAW2jB,GAAS,QAEpC,CAAC1D,EAAcf,GAASqE,GAAYC,GAAMC,GAASC,GAAOC,GAAU9G,IAEvEhY,qBAAU,WACN,GAAIgY,IAAoBwG,MAAMxG,IAI9B,GAAIA,EAAmB,GACM,aAAtBG,GACAC,GACAA,EAAoBK,gBACpBL,EAAoBK,eAAejW,OAAS,KAElC,OAAG4V,QAAH,IAAGA,OAAH,EAAGA,EAAqBK,eAChCpc,MAAK,SAAAqc,GAAE,OAAIA,EAAGC,eAAexB,aAAe5K,SAASyL,OAItD,YADA/Z,EAAQ6G,KAAKze,EAASQ,gBAb1BoX,EAAQ6G,KAAKze,EAASQ,aAkB3B,CAACsxB,EAAmBC,EAAqBJ,EAAkB/Z,IAE9D,IAiBA,GAA8CwB,oBAAS,GAAvD,qBAAOgW,GAAP,MAAwBC,GAAxB,MACA,GAAwCjW,oBAAS,GAAjD,qBAAOC,GAAP,MAAqBC,GAArB,MAwBMof,GAAWlV,iBAAO,MAMxB,OACI,sBAAK/H,QAAS,WAAKsc,GAAkB,GAAQlJ,GAAqB,IAAlE,SACA,gBAAC,GAAD,2BAAoB1hB,GAApB,cAEI,eAAC,GAAD,CACI2Z,UAAWA,EACX0M,aAAcA,EACdC,kBAAmBA,EACnB5E,qBAAsBA,EACtB6E,cAAe,SAACY,EAAM5Z,GAAP,OAzDL,SAAC4Z,EAAM5Z,GACzBA,EAAEC,iBACF+W,EAAe4C,EAAKvL,QACpBkM,EAAgBX,EAAKlL,UACrB4I,EAAesC,EAAKvL,OAAQgJ,GAC3BhlB,MAAK,WACFklB,EAAcN,EAAkB2C,EAAKvL,WAEzC8F,GAAqB,GAiDe6E,CAAcY,EAAM5Z,IAEhDiZ,cAAeA,GACfC,iBAAkBA,EAClBC,sBAAuBiE,EACvBhE,yBAA0BiE,EAC1BhE,kBAAmB,SAACK,EAAU1Z,GAAX,OApDA,SAAC0Z,EAAU1Z,GACtCA,EAAEC,iBACFod,GAAkB,GAClBngB,EAAQ6G,KAAR,UAAgBze,EAASQ,UAAzB,YAAsC4zB,EAAS9B,eAAexB,aAiDlB6H,CAAuBvE,EAAU1Z,IAErEsZ,QAASA,GACTC,MAAOqE,GACPpE,SAAUsE,KAGd,uBAAKld,UAAU,iBAAf,UACI,0DACA,uBAAKA,UAAU,YAAf,UACI,wBAAO8G,IAAKsW,GAAUprB,KAAK,OAAOgY,UAAU,EAAMlkB,MAAmB,OAAZ2zB,QAAY,IAAZA,GAAA,UAAAA,EAAczC,sBAAd,SAA8BgF,YAA9B,OAA4CvC,QAA5C,IAA4CA,GAA5C,UAA4CA,EAAczC,sBAA1D,aAA4C,EAA8BgF,YAAc,KACjJ,oBAAGhc,UAAU,YAAb,SAAyB,yBAAQG,QA/BrB,WACxBid,GAAS5jB,QAAQ8jB,SACjBC,SAASC,YAAY,SA6BgB,uBAE7B,kHAGJ,uBAAKxd,UAAU,kBAAf,UACI,yBAAOA,UAAU,wBAAjB,UACI,wBAAOA,UAAWM,IAAW,SAA7B,SACI,gCACI,uCACA,yCACA,wCACA,6CAIR,mCAGQmZ,GACGA,EAAavC,OACbuC,EAAavC,MAAMrW,OAAS,GAC5B,aAAI4Y,EAAavC,OACfjJ,MAAK,SAACne,EAAGoe,GAAJ,OAAUpe,EAAE2tB,KAAOvP,EAAEuP,KAAO,GAAK,KACtC5jB,KAAI,SAACif,EAAUhY,GAAX,OACD,gCACI,8BAAKsa,KAAOtC,EAAS2E,MAAMvE,OAAO,gBAClC,8BAAKjB,GAAgBiB,OAAOJ,EAAS3B,WACrC,gCAAKc,GAAgBiB,OAAOJ,EAAS1B,OAArC,IAA8C0B,EAAS3B,QAAU,GAAK2B,EAAS1B,MAAQ,EAAzC,WAAiDiD,KAAKC,MAAuB,IAAjBxB,EAAS1B,MAAc0B,EAAS3B,SAA5F,YAC9C,gCAAKc,GAAgBiB,OAAOJ,EAASzB,UAArC,IAAiDyB,EAASzB,SAAW,GAAKyB,EAAS1B,MAAQ,EAA1C,WAAkDiD,KAAKC,MAA0B,IAApBxB,EAASzB,SAAiByB,EAAS1B,OAAhG,cAJrD,0BAA4BtW,OASpC2Y,GACGA,EAAavC,QACZuC,EAAavC,MAAMrW,OAAS,GAChC,8BACI,qBAAI6c,QAAQ,IAAI3c,MAAO,CAAC4c,QAAS,SAAUxB,UAAW,UAAtD,6DAKhB,oBAAGnc,UAAU,MAAb,SAAmB,yBAAQG,QAAS,SAACf,GAAKA,EAAEC,iBAAiB0U,IAAmB,IAA7D,kCAIvB,eAAC,GAAD,CAAc9R,KAAM6R,GAChB5R,MAAO,kBAAI6R,IAAmB,IAC9B3H,QAvGc,WACnBrO,KACCsY,GAAoBwG,MAAMxG,IAAqBzL,SAASyL,GAAmB,GAI5ExK,GAAWrS,UACVwE,IAAgB,GAChByZ,EAAepB,GACd5kB,MAAK,WACCoa,GAAWrS,UACVua,IAAmB,GACnB/V,IAAgB,GAChB1B,EAAQ6G,KAAKze,EAASQ,eAE3B,SAACsC,GACAsN,EAAMT,MAAM,4BAA6B7M,MAE5CggB,SAAQ,WAAMqE,GAAWrS,SAAWwE,IAAgB,QAsFjDqO,QAAQ,kBACRG,QAAQ,kBAJZ,SAKQ,iFAAmD8L,EAAnD,gBC/RPsF,GAAS,CAClB,CACIxiB,KAAO,qBAEP7D,IAAK,6DAET,CACI6D,KAAO,oBAEP7D,IAAK,4DAET,CACI6D,KAAO,sBAEP7D,IAAK,8DAET,CACI6D,KAAO,sBAEP7D,IAAM,8DAEV,CACI6D,KAAO,qBAEP7D,IAAK,6DAET,CACI6D,KAAO,sBAEP7D,IAAM,8DAEV,CACI6D,KAAO,qBAEP7D,IAAK,6DAET,CACI6D,KAAO,qBAEP7D,IAAK,6DAET,CACI6D,KAAO,qBAEP7D,IAAK,6DAET,CACI6D,KAAO,oBAEP7D,IAAK,4DAGT,CACI6D,KAAO,oBAEP7D,IAAK,4DAET,CACI6D,KAAO,sBAEP7D,IAAK,8DAET,CACI6D,KAAO,qBAEP7D,IAAK,6DAET,CACI6D,KAAO,sBAEP7D,IAAK,8DAET,CACI6D,KAAO,qBAEP7D,IAAK,6DAET,CACI6D,KAAO,sBAEP7D,IAAK,8DAET,CACI6D,KAAO,qBAEP7D,IAAK,6DAET,CACI6D,KAAO,qBAEP7D,IAAK,8DAQAsmB,GAAW,CACpB,CACIziB,KAAM,4BACN7D,IAAK,6EAET,CACI6D,KAAM,4BACN7D,IAAK,6EAET,CACI6D,KAAM,4BACN7D,IAAK,6EAET,CACI6D,KAAM,4BACN7D,IAAK,8ECtDEumB,GA9DG,SAACjsB,GACf,MAAgC2gB,KAAhC,mBAAOE,EAAP,KAAiBC,EAAjB,KAEA,EAAgC7U,mBAAS,GAAzC,mBAAO+S,EAAP,KAAiBC,EAAjB,KAOA,OALAzS,qBAAU,WACgB,cAAnBqU,EAAS5sB,OACR6sB,EAAY9sB,EAAM6U,MAAK,SAAAkY,GAAI,MAAe,cAAbA,EAAK9sB,YACvC,CAAC4sB,EAAUC,IAGV,eAAC,GAAD,2BAAoB9gB,GAApB,aACI,sBAAKmO,UAAU,WAAf,SACA,uBAAKA,UAAU,MAAf,UACI,sBAAKA,UAAU,aAAf,SACI,gCACI,qBAAIA,UAAWM,IAAW,CAACoR,GAAiB,IAAbb,IAAkB1Q,QAAS,kBAAI2Q,EAAY,IAA1E,oBACA,qBAAI9Q,UAAWM,IAAW,CAACoR,GAAiB,IAAbb,IAAkB1Q,QAAS,kBAAI2Q,EAAY,IAA1E,qBACA,qBAAI9Q,UAAWM,IAAW,CAACoR,GAAiB,IAAbb,IAAkB1Q,QAAS,kBAAI2Q,EAAY,IAA1E,sBACA,qBAAI9Q,UAAWM,IAAW,CAACoR,GAAiB,IAAbb,IAAkB1Q,QAAS,kBAAI2Q,EAAY,IAA1E,oBACA,qBAAI9Q,UAAWM,IAAW,CAACoR,GAAiB,IAAbb,IAAkB1Q,QAAS,kBAAI2Q,EAAY,IAA1E,uBAGR,uBAAK9Q,UAAU,cAAf,UACI,sBAAKA,UAAWM,IAAW,UAAW,CAACoR,GAAiB,IAAbb,IAA3C,SAOQ+M,GAAO/jB,KAAI,SAACkkB,EAAQjd,GAAT,OACP,oBAAGd,UAAU,SAAb,SAA8B,oBAAGE,KAAM6d,EAAOxmB,IAAKkH,OAAQ,SAAUuf,IAAI,aAAa5d,MAAO2d,EAAO3iB,KAAtE,SAA4E,sBAAK8F,IAAK6c,EAAOxmB,IAAK4J,IAAK4c,EAAO3iB,UAAjH0F,QAKvC,sBAAKd,UAAWM,IAAW,UAAW,CAACoR,GAAiB,IAAbb,IAA3C,SACI,oBAAG7Q,UAAU,eAAb,SAA4B,eAAC,KAAD,CAAiBha,KAAMi4B,WAEvD,sBAAKje,UAAWM,IAAW,UAAW,CAACoR,GAAiB,IAAbb,IAA3C,SAEQgN,GAAShkB,KAAI,SAACkkB,EAAQjd,GAAT,OACT,oBAAGd,UAAU,SAAb,SAA8B,oBAAGE,KAAM6d,EAAOxmB,IAAKkH,OAAQ,SAAUuf,IAAI,aAAa5d,MAAO2d,EAAO3iB,KAAtE,SAA4E,sBAAK8F,IAAK6c,EAAOxmB,IAAK4J,IAAK4c,EAAO3iB,UAAjH0F,QAIvC,sBAAKd,UAAWM,IAAW,UAAW,CAACoR,GAAiB,IAAbb,IAA3C,SACI,oBAAG7Q,UAAU,eAAb,SAA4B,eAAC,KAAD,CAAiBha,KAAMi4B,WAEvD,sBAAKje,UAAWM,IAAW,UAAW,CAACoR,GAAiB,IAAbb,IAA3C,SACI,oBAAG7Q,UAAU,eAAb,SAA4B,eAAC,KAAD,CAAiBha,KAAMi4B,uBCnE5D,OAA0B,uCCA1B,OAA0B,qCC6L1BzpB,GAzKC,SAAC3C,GAAW,IAAD,MACjBiD,EAAQlB,KACR6I,EAAkB3D,KAElB4D,EAAmBnB,OAAaoB,MAAM,CACxC4D,QAAShF,OAAasB,OAAOrB,SAAS,cAE1C,EAIIwB,aAAQ,CACRC,cAAe,CACZsD,QAAS,IAEZrD,SAAUC,aAAYT,KAPtBU,EADJ,EACIA,aACaC,EAFjB,EAEIC,UAAaD,OACbE,EAHJ,EAGIA,SAQJ,EAA+F1L,EAAvF4L,qBAAR,WAA+F5L,EAA/DsI,iBAAhC,MAA4C,GAA5C,EAAgDuD,EAA+C7L,EAA/C6L,cAAhD,EAA+F7L,EAAhC+L,oBAA/D,MAA8E,aAA9E,EAAsFsE,EAASrQ,EAATqQ,MACtF,EAAwCpE,oBAAS,GAAjD,mBAAOC,EAAP,KAAqBC,EAArB,KACA,EAAsCF,oBAAS,GAA/C,mBAAOG,EAAP,KAAoBC,EAApB,KACA,EAAsCJ,mBAAS,IAA/C,mBAAOK,EAAP,KAAoBC,EAApB,KAEME,EAAY,uCAAG,WAAMC,GAAN,mBAAAzO,EAAA,0DACdmO,EADc,wDAEjBC,GAAe,GACTM,EAAOD,EAAME,OAAOC,MAAM,GAHf,kBAMgBC,aAAiBH,EAAM,CAACI,UAAW,EAAGC,iBAAkB,OANxE,cAMPC,EANO,QAQP9O,EAAO,IAAI+O,UACZC,OAAO,OAAQ,IAAIC,KAAK,CAACH,GAAiBN,EAAKpD,OATvC,UAWPqB,EAAgB5B,iBAAiB7K,GACtCyB,MAAK,SAACxB,GACHmO,GAAe,SAAApD,GAAI,6BAAO/K,EAASD,MAAhB,aAAwBgL,OAC3CkD,GAAe,MAChB,SAAC1W,GAAOsN,EAAMT,MAAM,yBAA0B7M,GAAK0W,GAAe,MAfxD,0DAkBTA,GAAe,GACfpJ,EAAMT,MAAN,MAnBS,0DAAH,sDA4BZ6K,EAAe,uCAAG,WAAOC,EAASC,GAAhB,eAAAtP,EAAA,yDACpBsP,EAAEC,kBAECtB,EAHiB,wDAIpBC,GAAgB,GAEVsB,EAAgB,CAClBtH,UAAYmC,EACZ3F,QAAU2K,EAAQoB,QAClB1H,YAAasF,EAAYtE,KAAI,SAAAiG,GAAG,OAAEA,EAAIC,WATtB,SAYdtD,EAAgBxB,eAAeqE,GAChC7N,MAAK,WACEuM,GAAgB,GAChBJ,OACD,SAACpW,GACAwW,GAAgB,GAChBlJ,EAAMT,MAAM,kBAAmB7M,MAlBvB,2CAAH,wDA+BrB,OACI,sBAAKwY,UAAU,aAAf,SAEI,wBAAMA,UAAU,WAAWC,SAAU7C,EAAa8B,GAAlD,UACI,uBAAKc,UAAU,SAAf,UAEI,oBAAGA,UAAU,WAAb,SAAwB,oBAAGE,KAAK,IAAIC,QAf7B,SAAC5B,GACpBA,EAAMc,iBACF5B,EAGAyE,IAFAxE,KAYqE0C,MAAM,mBAA3C,SAA8D,eAAC,KAAD,CAAiBpa,KAAMqa,WAC7G,sBAAIL,UAAU,cAAd,UACI,uBAAMA,UAAU,QAAhB,2BACA,wBAAMA,UAAU,YAAhB,yBAAyC7F,QAE7C,oBAAG6F,UAAU,YAAb,SAAyB,eAAC,GAAD,CAAmBja,KAAM,OAAQ+L,UAAWiM,SAEzE,2BAAUiC,UAAU,YAApB,SACI,qBAAGA,UAAWM,IAAW,CAAEjM,MAAK,OAAEgJ,QAAF,IAAEA,GAAF,UAAEA,EAAQkD,eAAV,aAAE,EAAiBA,UAAnD,UACI,uCAAUE,GAAG,UAAUE,YAAY,sBAAyBpD,EAAS,cAC9D,OAANF,QAAM,IAANA,GAAA,UAAAA,EAAQkD,eAAR,eAAiBA,UAAW,uBAAMP,UAAU,YAAhB,gBAA6B3C,QAA7B,IAA6BA,GAA7B,UAA6BA,EAAQkD,eAArC,aAA6B,EAAiBA,eAGnF,uBAAKP,UAAWM,IAAW,iBAA3B,UACQ,wBAAOtO,KAAK,OAAOyO,GAAG,eAAerF,KAAK,eAAewF,SAAUtC,EAAc6B,QAAS,SAAC5B,GAAUA,EAAME,OAAO3Y,MAAQ,QAEtHqY,EAAY0C,OAAS,EAGrB,uBAAKb,UAAU,UAAf,UACK7B,EAAYtE,KAAI,SAAC2E,EAAMsC,GAAP,OAEb,qBAAWd,UAAU,YAAYe,MAAO,CACpCC,gBAAgB,OAASxC,EAAKyC,cAAe,KADjD,UAGI,sBAAKC,IAAK1C,EAAKyC,cAAeE,IAAG,qBAAgBL,EAAE,KACnD,uBAAMd,UAAU,MAAMG,QAAS,kBApEpC,SAACM,GAC5B,IAAMW,EAAOjD,EAAYnE,QAAO,SAAAlK,GAAC,OAAEA,EAAEiQ,SAAWU,KAChDrC,EAAegD,GAkEoDC,CAAuB7C,EAAKuB,SAA/D,SAAwE,sBAAKmB,IAAKI,GAAgBH,IAAI,UAJlGL,MAOZ,yBAAOd,UAAU,YAAYQ,QAAQ,eAArC,UACI,iDACA,uBAAMR,UAAU,MAAhB,SAAsB,sBAAKkB,IAAKK,GAAiBJ,IAAI,cAG3D,yBAAOX,QAAQ,eAAf,0BAA2C,wBAAMR,UAAU,aAAhB,UAA6B,eAAC,KAAD,CAC1E9N,MAAM,UAAUC,QAAS8L,EACzB7L,IAAK,gEACLC,KAAM,MAHuC,WAGxB,uBAAM2N,UAAU,MAAhB,SAAsB,sBAAKkB,IAAKK,GAAiBJ,IAAI,uBC9HvF+c,GAdY,SAACrsB,GACxB,IAAOoQ,EAAgBpQ,EAAhBoQ,KAAMC,EAAUrQ,EAAVqQ,MAEb,OACI,eAAC,KAAD,CAAO5B,WAAY,CAAE8B,QAAS,yBAA0BC,MAAO,wBAC3DJ,KAAMA,EACNpE,QAASqE,EACTI,eAAe,EACfC,QAAM,EAJV,SAKI,eAAC,GAAD,aAAe9E,eAAe,GAAU5L,OCGrCssB,GAdY,SAACtsB,GACxB,IAAQoQ,EAAwBpQ,EAAxBoQ,KAAMC,EAAkBrQ,EAAlBqQ,MAAOkc,EAAWvsB,EAAXusB,OAErB,OACI,eAAC,KAAD,CAAO9d,WAAY,CAAE8B,QAAS,wBAAyBC,MAAO,uBAC1DJ,KAAMA,EACNpE,QAASqE,EAETK,QAAM,EAJV,SAKO,oBAAGvC,UAAU,mBAAb,SAAgC,sBAAKkB,IAAKkd,EAAQjd,IAAI,8BCuNtDkd,GArNM,SAACxsB,GAElB,IAAMysB,EAAKpW,iBAAO,MAEZpT,EAAQlB,KACd,EAAgG/B,EAAzF4L,qBAAP,WAAgG5L,EAAlE6L,qBAA9B,MAA6C,WAAKpB,EAAQqB,UAA1D,IAAgG9L,EAA3BsI,iBAArE,MAAiF,GAAjF,EAAqF0D,EAAWhM,EAAXgM,QAC/EpB,EAAkB3D,KACjBM,EAAuDqD,EAAvDrD,qBAAsBc,EAAiCuC,EAAjCvC,kBAAmBnB,EAAc0D,EAAd1D,WACjCwlB,EAAqDnlB,EAA5DiU,MAAoCmR,EAAwBplB,EAAlCmU,SAClC,EAAwCzP,mBACpC,CAACnF,cAAgB,KACjBC,UAAW,GACXC,YAAa,KAHjB,mBAAO4lB,EAAP,KAAqBplB,EAArB,KAKOV,EAEY8lB,EAFZ9lB,cACHC,EACe6lB,EADf7lB,UACAC,EAAe4lB,EAAf5lB,YAEA6lB,EAAS/lB,GAAiBA,EAAc8kB,KAAOrC,KAAOziB,EAAc8kB,MAAMvE,OAAO,WAAa,GAElG,EAAoCpb,oBAAS,GAA7C,mBAAO6R,EAAP,KAAmBC,EAAnB,KACAvR,qBAAU,WACN,OAAQkgB,GACJ,IAAK,WACEC,GAAuBA,EAAoB7lB,eAAkB6lB,EAAoB7lB,cAAcX,YAAcmC,EAC5Gd,EAAgBmlB,GAEX7O,IACLC,GAAc,GACd1V,EAAkBC,EAAWpB,GAC5BtH,MAAK,WACFme,GAAc,MAChB,WACKnS,GAGCnB,EAAQqiB,QAAQj6B,EAASc,gBAMrC,MACJ,IAAK,WACEiY,GAGCnB,EAAQqiB,QAAQj6B,EAASc,eAMtC,CAAC+4B,EAAmBC,EAAqBrkB,EAAWd,IAEvD,IAAMiD,EAAUC,cAEhB,EAA4DuB,oBAAS,GAArE,mBAAO8gB,EAAP,KAA+BC,EAA/B,KAEA,EAAwD/gB,oBAAS,GAAjE,mBAAOghB,EAAP,KAA+BC,EAA/B,KACA,EAAoCjhB,mBAAS,IAA7C,mBAAOkhB,EAAP,KAAmBC,EAAnB,KA4BA,OAJA5gB,qBAAU,WACNigB,EAAG9kB,QAAQgN,eAAe,CAAEE,MAAO,MAAOD,SAAU,cAIpD,uBAAKzG,UAAU,gBAAf,UACI,uBAAKA,UAAU,SAAf,UAEI,oBAAGA,UAAU,WAAb,SAAwB,oBAAGE,KAAK,IAAIC,QAjBzB,SAAC5B,GACpBA,EAAMc,iBACF5B,EAGAI,IAFAH,KAciE0C,MAAM,mBAA3C,SAA8D,eAAC,KAAD,CAAiBpa,KAAMqa,WAC7G,sBAAIL,UAAU,cAAd,UACI,uBAAMA,UAAU,QAAhB,2BACA,wBAAMA,UAAU,YAAhB,yBAAyC7F,WAGjD,uBAAK6F,UAAU,uBAAf,UACI,uBAAKA,UAAU,kBAAf,UAEQrH,GAAiBA,EAAcX,WAC5B,uCACH,oBAAGgI,UAAU,WAAb,SAAyBob,KAAOziB,EAAc8kB,MAAMvE,OAAO,kBACvD,sBAAKlZ,UAAU,aAAf,SACI,uBAAKA,UAAU,cAAf,UACI,sBAAKA,UAAU,OAAf,SAAuBob,KAAOziB,EAAc8kB,MAAMvE,OAAO,aACzD,sBAAKlZ,UAAU,OAAf,SACI,6BAAIrH,EAAcnE,YAGlBqE,GAAeA,EAAYgI,OAAS,GACpChI,EAAYgB,KAAI,SAACiG,EAAKgB,GAAN,OACZ,sBAAyBd,UAAU,aAAaG,QAAS,WAAO8e,EAAcnf,GAAKif,GAAsB,IAAzG,SACI,sBAAK/e,UAAU,QAAQkB,IAAKpB,EAAKqB,IAAI,aADzC,iBAAoBL,eAWxClI,GAAaA,EAAUiI,OAAS,GAC7B,aAAIjI,GACFqV,MAAK,SAACne,EAAGoe,GAAJ,OAAUpe,EAAEovB,YAAchR,EAAEgR,YAAc,GAAK,KACpDrlB,KAAI,SAAC6N,EAAKyX,GACX,IAAMpI,EAAKqE,KAAO1T,EAAKwX,aAAahG,OAAO,WACrCkG,EAAgBrI,IAAO2H,EAC1BU,IACCV,EAAS3H,GAEb,IAAMsI,EAAa3X,EAAK4X,QAAU,EAElC,OACI,iCAEGF,GAAiB,oBAAGpf,UAAU,WAAb,SAA6Cob,KAAO1T,EAAKwX,aAAahG,OAAO,iBAA7E,iBAAuCiG,IAE3D,uBAAKnf,UAAWqf,EAAa,MAAQ,aAArC,UAEQA,GACA,sBAAKrf,UAAU,cAAf,SACI,eAAC,KAAD,CAAiBha,KAAMwtB,SAI/B,uBAAKxT,UAAU,cAAf,UACI,sBAAKA,UAAU,OAAf,SAAuBob,KAAO1T,EAAKwX,aAAahG,OAAO,aACvD,sBAAKlZ,UAAU,OAAf,SACI,6BAAI0H,EAAKlT,YAGTkT,EAAK7O,aAAe6O,EAAK7O,YAAYgI,OAAS,GAC9C6G,EAAK7O,YAAYgB,KAAI,SAACiG,EAAKgB,GAAN,OACjB,sBAA6Bd,UAAU,aAAaG,QAAS,WAAO8e,EAAcnf,GAAKif,GAAsB,IAA7G,SACI,sBAAK/e,UAAU,QAAQkB,IAAKpB,EAAKqB,IAAI,aADzC,gBAAmBge,EAAnB,YAAwBre,YAhBxC,eAAiEqe,MAJjE,cAAiBA,UAyDjC,sBAAKnf,UAAU,gBAAgBe,MAAO,CAAEwe,MAAM,OAAQC,MAAO,QAAU1Y,IAAKwX,OAGhF,uBAAKte,UAAU,YAAYG,QAtIP,WAErB1C,EACCohB,GAA0B,GAE1BviB,EAAQ6G,KAAR,UAAgBze,EAASc,WAAzB,YAAuC2U,EAAvC,YAiIA,UACI,sBAAK6F,UAAU,YAAYkB,IAAKue,GAAWte,IAAI,gBAC/C,wBAAOnB,UAAU,gBAAgBW,YAAY,qBAAqBqJ,UAAU,IAC5E,sBAAKhK,UAAU,WAAWkB,IAAKwe,GAASve,IAAI,iBAEhD,eAAC,GAAD,CACIc,KAAM2c,EACN1c,MAAO,kBAAI2c,GAA0B,IACrC1kB,UAAWA,EACXyD,aAtIoB,WAC5BihB,GAA0B,GAC1B/pB,EAAML,QAAQ,+BAuIV,eAAC,GAAD,CAAewN,KAAM6c,EAAwB5c,MAAO,kBAAI6c,GAAsB,IAAQX,OAAQY,QCvM3FW,GAlBW,SAAC9tB,GACvB,IAAOoQ,EAA2BpQ,EAA3BoQ,KAAMC,EAAqBrQ,EAArBqQ,MAAO/H,EAActI,EAAdsI,UAEpB,OACI,eAAC,KAAD,CAAOmG,WAAY,CAAE8B,QAAS,wBAAyBC,MAAO,uBAC1DJ,KAAMA,EACNpE,QAASqE,EACTI,eAAe,EACfC,QAAM,EAJV,SAKI,eAAC,GAAD,CACI9E,eAAiB,EACjBtD,UAAWA,EACX0D,QAASqE,O,SCuNV5X,GAzNI,SAACuH,GAChB,IAAMyK,EAAUC,cACVzH,EAAQlB,KACR6I,EAAkB3D,KACjBQ,EAEmBmD,EAFnBnD,aACHL,EACsBwD,EADtBxD,mBACAE,EAAsBsD,EAAtBtD,mBAEGV,EAAYU,EAAZV,SACQmnB,EAAiD3mB,EAAxDoU,MAAkCwS,EAAsB5mB,EAAhCsU,SAChC,EAAkDzP,mBAAS,IAA3D,mBAAOgiB,EAAP,KAA0BC,EAA1B,KACA,EAAoCjiB,oBAAS,GAA7C,mBAAO6R,EAAP,KAAmBC,EAAnB,KAEAvR,qBAAU,WACN,GACS,aADDuhB,EAEGC,GACCE,EAAqBF,EAAkB3nB,QAOpD,CAAC0nB,EAAiBC,IAErB,IAAMhU,EAAa3D,kBAAO,GAE1B7J,qBAAU,WACN,OAAO,WACLwN,EAAWrS,SAAU,KAEtB,IAEL6E,qBAAU,WACN,IAAG5F,GACoB,aAApBmnB,IACAjQ,EAAH,CAEAC,GAAc,GACd,IAAMlW,EAAW,2BACVP,GADU,IAEbZ,KAAMY,EAAmBZ,KAAO,IAEpCe,EAAaI,EAAammB,GACzBpuB,MAAK,WACCoa,EAAWrS,SACVoW,GAAc,MAEnB,SAACpoB,GACGqkB,EAAWrS,UACVoW,GAAc,GACd9a,EAAMT,MAAM7M,UAGtB,CAACiR,EAAUkX,EAAYrW,EAAcsmB,EAAiBC,IAGxD,MAAoFhuB,EAA7E4L,qBAAP,WAAoF5L,EAAtD6L,qBAA9B,MAA8C,WAAMpB,EAAQqB,UAA5D,EAAwEE,EAAYhM,EAAZgM,QACxE,EAA0DC,oBAAS,GAAnE,mBAAOkiB,EAAP,KAA8BC,EAA9B,KACA,EAAoCniB,mBAAS,IAA7C,mBAAOoiB,EAAP,KAAmBC,EAAnB,KAYA,EAA8DriB,oBAAS,GAAvE,mBAAO8E,EAAP,KAAgCC,EAAhC,KAsBA,OACI,uBAAK7C,UAAU,cAAf,UACI,uBAAKA,UAAU,SAAf,UAEI,oBAAGA,UAAU,WAAb,SAAwB,oBAAGE,KAAK,IAAIC,QAbzB,SAAC5B,GACpBA,EAAMc,iBACF5B,EAGAI,IAFAH,KAUiE0C,MAAM,mBAA3C,SAA8D,eAAC,KAAD,CAAiBpa,KAAMqa,WAC7G,qBAAIL,UAAU,cAAd,yBACA,oBAAGA,UAAU,YAAb,SACI,yBAAQhO,KAAK,SAASmO,QAAS,SAACf,GAAKA,EAAEC,iBAtBhD5B,EACCoF,GAA2B,GAE3BvG,EAAQ6G,KAAKze,EAASa,iBAmBd,sBAIR,sBAAIya,UAAU,SAAd,YAEU2P,GAAkC,aAApBiQ,IAAiE,IAA7BE,EAAkBjf,QAAiB,8BAAI,uBAAMb,UAAU,QAAhB,mCAG3F,aAAI8f,GACH7R,MAAK,SAACne,EAAGoe,GAAJ,OAAUpe,EAAE2tB,KAAOvP,EAAEuP,MAAQ,EAAI,KACtC5jB,KAAI,SAACgN,EAAM/F,GAAP,OAEG,sBAAqCX,QAAS,YApDxC,SAAC0G,GAExBpJ,GACC0iB,EAActZ,EAAK7O,WACnBioB,GAAyB,IAEzB3jB,EAAQ6G,KAAR,UAAgBze,EAASc,WAAzB,YAAuCqhB,EAAK7O,YA8CuBooB,CAAsBvZ,IAAzE,UACI,uBAAK7G,UAAU,OAAf,UACI,uBAAMA,UAAU,MAAhB,SAAuBob,KAAOvU,EAAK4W,MAAMvE,OAAO,QAChD,uBAAMlZ,UAAU,QAAhB,SAAyBob,KAAOvU,EAAK4W,MAAMvE,OAAO,YAEtD,sBAAKlZ,UAAU,UAAf,SACI,uBAAMA,UAAU,QAAhB,SACQ6G,EAAKkS,MACLlS,EAAKkS,MAAMoC,UAAU,EAAE,IACvBtU,EAAKrS,QAAQ2mB,UAAU,EAAE,QAIrC,uBAAKnb,UAAU,SAAf,UACK6G,EAAKlM,SAAW,GAAK,uBAAMqF,UAAU,UAAhB,SAA2B6G,EAAKlM,WACtD,uBAAMqF,UAAU,WAAhB,SAA4B6G,EAAKwZ,cAfzC,iBAAmBxZ,EAAK7O,gBAsBX,YAApB4nB,GAAiCjQ,IAClC,uCACI,8BACI,sBAAM5O,MAAO,CAACuf,MAAM,QAApB,SACI,eAAC,KAAD,CAAUC,OAAO,aAGzB,8BACI,sBAAMxf,MAAO,CAACuf,MAAM,QAApB,SACI,eAAC,KAAD,CAAUC,OAAO,aAGzB,8BACI,sBAAMxf,MAAO,CAACuf,MAAM,QAApB,SACI,eAAC,KAAD,CAAUC,OAAO,mBAmDjCP,GACA,eAAC,GAAD,CACI/d,KAAM+d,EACN9d,MAAO,kBAAI+d,GAAyB,IACpC9lB,UAAW+lB,IAIftd,GACA,eAAC,GAAD,CAAqBX,KAAMW,EAAyBV,MAAO,kBAAIW,GAA2B,IAAQjF,aAzI7E,WAC7BiF,GAA2B,GAC3B/N,EAAML,QAAQ,wCCvEP+rB,GAdS,SAAC3uB,GACrB,IAAOoQ,EAAgBpQ,EAAhBoQ,KAAMC,EAAUrQ,EAAVqQ,MAEb,OACI,eAAC,KAAD,CAAO5B,WAAY,CAAE8B,QAAS,sBAAuBC,MAAO,qBACxDJ,KAAMA,EACNpE,QAASqE,EACTI,eAAe,EACfC,QAAM,EAJV,SAKI,eAAC,GAAD,CAAY9E,eAAe,EAAMI,QAASqE,OCwCvC7X,GAzCC,SAACwH,GACb,MAAgC2gB,KAAhC,mBAAOE,EAAP,KAAiBC,EAAjB,KACM7d,EAAQlB,KAEdyK,qBAAU,WACgB,YAAnBqU,EAAS5sB,OACR6sB,EAAY9sB,EAAM6U,MAAK,SAAAkY,GAAI,MAAe,YAAbA,EAAK9sB,YACvC,CAAC4sB,EAAUC,IAEd,MAA8D7U,oBAAS,GAAvE,mBAAO8E,EAAP,KAAgCC,EAAhC,KACA,EAAsD/E,oBAAS,GAA/D,mBAAO2iB,EAAP,KAA4BC,EAA5B,KAOA,OACI,gBAAC,GAAD,2BAAoB7uB,GAApB,cACI,uBAAKmO,UAAU,UAAf,UACI,eAAC,eAAD,UACA,sBAAIA,UAAU,UAAd,UACI,8BAAI,qBAAGE,KAAK,IAAIC,QAAS,SAAC5B,GAASA,EAAMc,iBAAkBwD,GAA2B,IAAQzC,MAAM,2BAAhG,UAA2H,oDAA3H,IAAwJ,eAAC,KAAD,CAAiBpa,KAAM26B,YACnL,8BAAI,qBAAGzgB,KAAK,IAAIC,QAAS,SAAC5B,GAASA,EAAMc,iBAAkBqhB,GAAuB,IAAQtgB,MAAM,+BAA5F,UAA2H,gDAA3H,IAAoJ,eAAC,KAAD,CAAiBpa,KAAM26B,YAC/K,8BAAI,qBAAGzgB,KAAK,8BAA8BzB,OAAQ,SAAUuf,IAAI,aAAa5d,MAAM,yBAA/E,UAAwG,wCAAxG,IAAyH,eAAC,KAAD,CAAiBpa,KAAM26B,iBAGxJ,eAAC,cAAD,UACA,sBAAI3gB,UAAU,UAAd,UACI,8BAAI,gBAAC,IAAD,CAAM8C,GAAIpe,EAASa,eAAgB6a,MAAM,2BAAzC,UAAoE,oDAApE,IAAiG,eAAC,KAAD,CAAiBpa,KAAM26B,YAC5H,8BAAI,gBAAC,IAAD,CAAM7d,GAAIpe,EAASc,WAAY4a,MAAM,6BAArC,UAAkE,gDAAlE,IAA2F,eAAC,KAAD,CAAiBpa,KAAM26B,YACtH,8BAAI,qBAAGzgB,KAAK,8BAA8BzB,OAAQ,SAAUuf,IAAI,aAAa5d,MAAM,yBAA/E,UAAwG,wCAAxG,IAAyH,eAAC,KAAD,CAAiBpa,KAAM26B,oBAI5J,eAAC,GAAD,CAAqB1e,KAAMW,EAAyBV,MAAO,kBAAIW,GAA2B,IAAQjF,aAvBzE,WAC7BiF,GAA2B,GAC3B/N,EAAML,QAAQ,oCAsBV,eAAC,GAAD,CAAiBwN,KAAMwe,EAAqBve,MAAO,kBAAIwe,GAAuB,WC3CpFvN,GAAmB,SAACthB,GACtB,IAAQ0a,EAAa1a,EAAb0a,SAER,OACI,qCAEOuG,GACK,qCACEvG,QAuBPoH,GAfQ,SAAC9hB,GACpB,IACO/G,EADc4G,KACd5G,cAEP,OACI,qCAEQA,EACE,eAAC,IAAD,CAAUgY,GAAIpe,EAASY,SACvB,eAAC,GAAD,eAAqBuM,OCFxBwK,GAxBQ,SAACxK,GACpB,IAAMiD,EAAQlB,KACP0I,EAAWzK,EAAXyK,QAEDqB,EAAS,kBAAKrB,EAAQqB,UAEtBijB,EAAsB,WACxB9rB,EAAML,QAAQ,iCACd6H,EAAQqB,UAMZ,OAFuBrV,EAAKsC,aAItB,eAAC,GAAD,2BAAoBiH,GAApB,aACE,eAAC,GAAD,CAAagvB,aAAa,EAAMnjB,cAAeC,EAAQC,aAAcgjB,OAEvE,eAAC,GAAD,CAAaC,aAAa,EAAMnjB,cAAeC,EAAQC,aAAcgjB,KCRhEE,GAZQ,SAACjvB,GACpB,IAAOyK,EAAWzK,EAAXyK,QAGP,OACI,eAAC,GAAD,2BAAoBzK,GAApB,aACI,eAAC,GAAD,CAAY4L,eAAe,EAAOC,cAJlB,kBAAMpB,EAAQqiB,QAAQj6B,EAASW,gBCiB5Cg5B,GAjBM,SAACxsB,GAClB,IAAOyK,EAAWzK,EAAXyK,QAEDnC,EAAckiB,cAAdliB,UAMN,OAJAkE,qBAAU,WACFlE,GAAWmC,EAAQqiB,QAAQj6B,EAASc,cACzC,CAAC2U,EAAWmC,IAGX,eAAC,GAAD,2BAAoBzK,GAApB,aACI,eAAC,GAAD,aAAqB4L,eAAe,EAAOC,cAT9B,kBAAKpB,EAAQqiB,QAAQj6B,EAASc,aAS6B2U,UAAWA,GAAetI,QCe/FkvB,GAzBK,SAAClvB,GACjB,IAAMiD,EAAQlB,KACP0I,EAAWzK,EAAXyK,QAGDnC,EAAckiB,cAAdliB,UAENkE,qBAAU,WACFlE,GAAWmC,EAAQqiB,QAAQj6B,EAASc,cACzC,CAAC2U,EAAWmC,IAQf,OACI,eAAC,GAAD,2BAAoBzK,GAApB,aACI,eAAC,GAAD,aAAWgvB,aAAa,EAAMnjB,cAfjB,kBAAKpB,EAAQqiB,QAAR,UAAmBj6B,EAASc,WAA5B,YAA0C2U,KAeDyD,aARxC,WACvB9I,EAAML,QAAQ,4BACd6H,EAAQqB,UAMyFxD,UAAWA,GAAetI,QCAnI,IA6IemvB,GA7IM,SAACnvB,GACpB,IAAMovB,ECvBO,WACb,IAAMC,EAAYhZ,kBAAO,GASzB,OAPA7J,qBACE,kBAAM,WACJ6iB,EAAU1nB,SAAU,KAEtB,IAGK0nB,EDacC,GACrB,EAAgC3O,KAAhC,mBAAOE,EAAP,KAAiBC,EAAjB,KACMyO,EAAWC,KAETC,EAAUlG,OAASmG,OACnBC,EE9BiC,SAAClvB,GAMxC,IANsE,IAAlBmvB,EAAiB,uDAAL,EAC1DC,EAAatG,KAAO9oB,GAAYivB,OAClCI,EAAUvG,OAASmG,OACjBK,EAAUD,EAAUF,EAAc,EAClCI,EAAUH,EAAaE,EAAUF,EAAaE,EAChDE,EAAQ,GACLH,GAAWE,GACdC,EAAM3e,KAAKwe,GACXA,IAIJ,OAAOG,EFkBaC,CAA4BpwB,YAAeqD,KAG/D,EAAgC8I,mBAAS,IAAzC,mBAAOkkB,EAAP,KAAiBC,EAAjB,KACA,EAAwCnkB,mBAASwjB,GAAjD,mBAAOY,EAAP,KAAqBC,EAArB,KACA,EAAkDrkB,oBAAS,GAA3D,mBAAOqa,EAAP,KAA0B5E,EAA1B,KAOM+B,EAAc/O,sBAAW,sBAAC,sBAAAzW,EAAA,sDAC9B,KACMmxB,EAAaznB,SACVwoB,GAAaA,EAASE,IACzBd,EAAS9L,YAAY,CAAC8M,KAAMF,IAC3BzwB,MAAK,SAACxB,GACJ,IAAOD,EAAMC,EAAND,KACDqyB,EAAc/nB,KAAU0nB,GAC9BK,EAAYH,GAAclyB,EAC1BiyB,EAAYI,MAGnB,MAAOhuB,GACPiuB,QAAQjuB,MAAMA,GAbc,2CAe7B,CAAC4sB,EAAciB,EAAcF,EAAUZ,IAY1C,OAVA/iB,qBAAU,WACJ2jB,EAASE,IAAe5M,MAC3B,CAACA,EAAa0M,EAAUE,IAE3B7jB,qBAAU,WACe,cAAnBqU,EAAS5sB,OAA0Bm7B,EAAaznB,SAChDmZ,EAAY9sB,EAAM6U,MAAK,SAAAkY,GAAI,MAAmB,cAAfA,EAAK9sB,YAEzC,CAAC4sB,EAAUC,EAAasO,IAGzB,eAAC,GAAD,2BAAoBpvB,GAApB,IAA2BuhB,UAAU,YAArC,SACI,uBAAKpT,UAAWM,IAAW,UAAW,cAAe,cACjDH,QAAS,WAAKoT,GAAqB,IADvC,UAEQ,uBAAKvT,UAAU,iBAAf,UACI,iDAEA,uBAAKA,UAAU,cAAf,UACI,qBAAGA,UAAU,gBAAgBG,QAAS,SAACf,GAAQmU,GAAsB4E,GAAoB/Y,EAAE6D,mBAA3F,UAAiHif,EAAjH,IAA+H,eAAC,KAAD,CAAiBl8B,KAAM6yB,UACtJ,sBAAK7Y,UAAWM,IAAW,YAAa,CAAE,GAAM6X,IAAhD,SACI,8BAEQqJ,EAAY3nB,KAAI,SAAC0nB,EAAMzgB,GAAP,OAAa,8BAAoB,oBAAGZ,KAAK,IAAIE,MAAM,QAAQD,QAAS,SAACf,IA7C/F,SAACmiB,EAAMniB,GACzBA,EAAEC,iBACF8iB,EAAgBZ,GAChBhO,GAAqB,GA0CmGgP,CAAchB,EAAMniB,IAA/D,SAAqEmiB,KAAzF,aAAezgB,iBAOhE,eAAC,eAAD,UACI,yBAAOd,UAAU,+BAAjB,UACI,wBAAOA,UAAWM,IAAW,SAA7B,SACI,gCAEI,wBACA,wCACA,wCACA,wCACA,gDAGR,iCAEQ0hB,GAAYA,EAASE,IAErB,qCAEMF,EAASE,GAAcrhB,OAAS,EAC7B,aAAImhB,EAASE,IACfjU,MAAK,SAACne,EAAGoe,GAAJ,OAAUpe,EAAE2tB,KAAOvP,EAAEuP,KAAO,GAAK,KACtC5jB,KAAI,SAACif,EAAUhY,GAAX,OACD,gCACI,8BAAKsa,KAAOtC,EAAS2E,MAAMvE,OAAO,cAClC,8BAAKjB,GAAgBiB,OAAOJ,EAAS3B,WACrC,gCAAKc,GAAgBiB,OAAOJ,EAAS1B,OAArC,IAA8C0B,EAAS3B,QAAU,GAAK2B,EAAS1B,MAAQ,EAAzC,WAAiDiD,KAAKC,MAAuB,IAAjBxB,EAAS1B,MAAc0B,EAAS3B,SAA5F,YAC9C,gCAAKc,GAAgBiB,OAAOJ,EAASzB,UAArC,IAAiDyB,EAASzB,SAAW,GAAKyB,EAAS1B,MAAQ,EAA1C,WAAkDiD,KAAKC,MAA0B,IAApBxB,EAASzB,SAAiByB,EAAS1B,OAAhG,YACjD,8BAAKO,GAAkBuB,OAAOJ,EAASxB,aAL3C,mBAAqB4K,EAArB,oBAA6CphB,OAQ/C,8BAAI,qBAAI0hB,QAAS,EAAb,yCAQ5B,eAAC,cAAD,UAEUR,GAAYA,EAASE,IACrB,qCAEEF,EAASE,GAAcrhB,OAAS,EAC9B,aAAImhB,EAASE,IACdjU,MAAK,SAACne,EAAGoe,GAAJ,OAAUpe,EAAE2tB,KAAOvP,EAAEuP,KAAO,GAAK,KACtC5jB,KAAI,SAACif,EAAUhY,GAAX,OACD,uBAAKd,UAAU,QAAf,UACQ,sBAAKA,UAAU,aAAf,SAA6Bob,KAAOtC,EAAS2E,MAAMvE,OAAO,cAC1D,uBAAKlZ,UAAU,QAAf,UACI,iCACI,sBAAKA,UAAU,KAAf,mBACA,sBAAKA,UAAU,KAAf,kBACA,sBAAKA,UAAU,KAAf,mBACA,sBAAKA,UAAU,KAAf,yBAEJ,iCACI,sBAAKA,UAAU,KAAf,SAAqBiY,GAAgBiB,OAAOJ,EAAS3B,WACrD,uBAAKnX,UAAU,KAAf,UAAqBiY,GAAgBiB,OAAOJ,EAAS1B,OAArD,IAA8D0B,EAAS3B,QAAU,GAAK2B,EAAS1B,MAAQ,EAAzC,WAAiDiD,KAAKC,MAAuB,IAAjBxB,EAAS1B,MAAc0B,EAAS3B,SAA5F,YAC9D,uBAAKnX,UAAU,KAAf,UAAqBiY,GAAgBiB,OAAOJ,EAASzB,UAArD,IAAiEyB,EAASzB,SAAW,GAAKyB,EAAS1B,MAAQ,EAA1C,WAAkDiD,KAAKC,MAA0B,IAApBxB,EAASzB,SAAiByB,EAAS1B,OAAhG,YACjE,sBAAKpX,UAAU,KAAf,SAAqB2X,GAAkBuB,OAAOJ,EAASxB,mBAbvE,mBAAwC4K,EAAxC,mBAA+DphB,OAmBjE,qE,kCG5HxB2hB,GAAe,SAAC,GAAuC,IAA1BC,EAAyB,EAApCC,UAAyB5wB,EAAW,kBAE1D,OAD0BzD,KAAnB5D,gBAEK,eAAC,IAAD,2BAAWqH,GAAX,IAAiB6wB,OAAQ,SAAA/wB,GAAK,OAAI,eAAC6wB,EAAD,eAAe7wB,QACjD,eAAC,IAAD,2BAAWE,GAAX,IAAiB6wB,OAAQ,kBAAM,eAAC,IAAD,CAAU9f,GAAIpe,EAASG,aAI9Dg+B,GAAkB,SAAC,GAAsC,IAAzBH,EAAwB,EAAnCC,UAAyB5wB,EAAU,kBAG1D,OADwBzD,KAAnB5D,gBAEG,eAAC,IAAD,2BAAWqH,GAAX,IAAiB6wB,OAAQ,kBAAM,eAAC,IAAD,CAAU9f,GAAIpe,EAASO,gBACtD,eAAC,IAAD,2BAAW8M,GAAX,IAAiB6wB,OAAQ,SAAA/wB,GAAK,OAAI,eAAC6wB,EAAD,eAAe7wB,SAsD9CixB,GAjDC,WACd,IAAOp4B,EAAmB4D,KAAnB5D,gBAIL,OAEQ,gBAAC,IAAD,WACE,eAAC,GAAD,CAAiBq4B,KAAMr+B,EAASC,KAAMq+B,OAAK,EAACL,UAAWM,KAErD,eAAC,IAAD,CAAOF,KAAMr+B,EAASE,KAAO+9B,UAAW5S,KACxC,eAAC,IAAD,CAAOgT,KAAMr+B,EAASY,OAASq9B,UAAWpS,KAC1C,eAAC,GAAD,CAAiBwS,KAAMr+B,EAASG,MAAQ89B,UAAWxS,KACnD,eAAC,GAAD,CAAiB4S,KAAI,UAAKr+B,EAASK,UAAd,WAAmC49B,UAAW5Q,KACnE,eAAC,GAAD,CAAiBiR,OAAK,EAACD,KAAMr+B,EAASI,WAAa69B,UAAWjS,KAC9D,eAAC,GAAD,CAAcqS,KAAMr+B,EAASM,QAAU29B,UAAW15B,KAClD,eAAC,GAAD,CAAc85B,KAAMr+B,EAASO,UAAY09B,UAAWO,KACpD,eAAC,GAAD,CAAcF,OAAK,EAACD,KAAMr+B,EAASS,aAAew9B,UAAWnH,KAC7D,eAAC,GAAD,CAAcuH,KAAI,UAAKr+B,EAASQ,UAAd,gBAAwCy9B,UAAW14B,KACrE,eAAC,GAAD,CAAc+4B,OAAK,EAACD,KAAMr+B,EAASQ,UAAYy9B,UAAW74B,KAG1D,eAAC,GAAD,CAAci5B,KAAMr+B,EAASU,UAAYu9B,UAAW7E,KAElDpzB,EACE,eAAC,GAAD,CAAcs4B,OAAK,EAACD,KAAMr+B,EAASa,eAAiBo9B,UAAWQ,KAC/D,eAAC,GAAD,CAAiBJ,KAAMr+B,EAASa,eAAiBo9B,UAAWQ,KAGhE,eAAC,GAAD,CAAcH,OAAK,EAACD,KAAMr+B,EAASc,WAAam9B,UAAWr4B,KAC3D,eAAC,GAAD,CAAcy4B,KAAI,UAAKr+B,EAASc,WAAd,qBAA6Cm9B,UAAWS,KAE1E,eAAC,GAAD,CAAcL,KAAI,UAAKr+B,EAASc,WAAd,eAAuCm9B,UAAWtE,KAGpE,eAAC,GAAD,CAAc0E,KAAMr+B,EAASW,QAAUs9B,UAAWt4B,KAElD,eAAC,IAAD,CAAO04B,KAAMr+B,EAASiB,GAAKg9B,UAAWh9B,KAEtC,eAAC,GAAD,CAAco9B,KAAMr+B,EAASkB,aAAe+8B,UAAW3B,KAEvD,eAAC,IAAD,CAAO+B,KAAMr+B,EAASiB,GAAKg9B,UAAWh9B,KAEtC,eAAC,IAAD,CAAUmd,GAAIpe,EAASC,WC9ExB0+B,GATC,WACZ,OACI,eAAC,IAAD,UAEI,eAAC,IAAD,CAAOV,UAAWW,Q,qBC4DfC,OA7Cf,WACE,IAAMC,EAAS7xB,YAAe8B,IACxBgwB,EAAc70B,YAAoB6E,IACjCC,EAAe8vB,EAAf9vB,IAAKC,EAAU6vB,EAAV7vB,OAEN+vB,EAAc,WAClBD,KAGF,OACE,uBAAKzjB,UAAU,MAAf,UACE,eAAC,GAAD,IAEErM,GAAU,gBAAC,GAAD,CACRsO,KAAMtO,EACNuO,MAAOwhB,EACPtX,QAASsX,EACTlX,QAAQ,KAJA,UAKR,oBAAGzL,MAAO,CAAC2L,QAAQ,QAASyP,UAAW,UAAvC,SAAkD,eAAC,KAAD,CAAiBpb,MAAO,CAAC4iB,SAAU,OAAOzxB,MAAM,WAAYlM,KAAMkd,SACpH,oBAAGnC,MAAO,CAACob,UAAW,UAAtB,SAAkCzoB,WChC7BkwB,GAZS,SAAAC,GAClBA,GAAeA,aAAuBC,UACxC,8BAAqBryB,MAAK,YAAkD,IAA/CsyB,EAA8C,EAA9CA,OAAQC,EAAsC,EAAtCA,OAAQC,EAA8B,EAA9BA,OAAQC,EAAsB,EAAtBA,OAAQC,EAAc,EAAdA,QAC3DJ,EAAOF,GACPG,EAAOH,GACPI,EAAOJ,GACPK,EAAOL,GACPM,EAAQN,OCKdO,IAASxB,OACP,eAAC,IAAMyB,WAAP,UACE,eAAC,IAAD,UACE,eAAC,IAAD,UACE,eAAC,GAAD,UAIN9G,SAAS+G,eAAe,SAM1BV,O","file":"static/js/main.ad663324.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/aq-logo.50cb9de4.svg\";","export default __webpack_public_path__ + \"static/media/dashboard.ddfcdaf1.svg\";","export default __webpack_public_path__ + \"static/media/campaign.f248f875.svg\";","export default __webpack_public_path__ + \"static/media/resources.7e5326df.svg\";","export default __webpack_public_path__ + \"static/media/support.2b393862.svg\";","export default __webpack_public_path__ + \"static/media/logout.6b1cc4e6.svg\";","export default __webpack_public_path__ + \"static/media/dashboard.e66647be.svg\";","export default __webpack_public_path__ + \"static/media/campaign.008544f9.svg\";","export default __webpack_public_path__ + \"static/media/resources.dfb3a642.svg\";","export default __webpack_public_path__ + \"static/media/support.1b6a15be.svg\";","export default __webpack_public_path__ + \"static/media/user-ico.414919f9.svg\";","import DashboardDarkIco from \"assets/img/nav-ico/dark/dashboard.svg\";\r\nimport CampaignDarkIco from \"assets/img/nav-ico/dark/campaign.svg\";\r\n// import StatsDarkIco from \"assets/img/nav-ico/dark/stats.svg\";\r\nimport ResourcesDarkIco from \"assets/img/nav-ico/dark/resources.svg\";\r\nimport SupportDarktIco from \"assets/img/nav-ico/dark/support.svg\";\r\nimport LogoutDarkIco from \"assets/img/nav-ico/dark/logout.svg\";\r\nimport DashboardWhiteIco from \"assets/img/nav-ico/white/dashboard.svg\";\r\nimport CampaignWhiteIco from \"assets/img/nav-ico/white/campaign.svg\";\r\n// import StatsWhiteIco from \"assets/img/nav-ico/white/stats.svg\";\r\nimport ResourcesWhiteIco from \"assets/img/nav-ico/white/resources.svg\";\r\nimport SupportWhiteIco from \"assets/img/nav-ico/white/support.svg\";\r\nimport userIco from \"assets/img/user-ico.svg\";\r\n\r\nexport const PAGE_NAV = {\r\n HOME: \"/\",\r\n JOIN : \"/join\",\r\n LOGIN : \"/login\",\r\n FORGOT_PWD: \"/password/forgot\",\r\n RESET_PWD: \"/password/reset\",\r\n ACCOUNT: \"/account\",\r\n DASHBOARD: \"/dashboard\",\r\n CAMPAIGNS: \"/campaigns\",\r\n CAMPAIGN_ADD: \"/campaigns/add\",\r\n //STATS: \"/stats\",\r\n RESOURCES: \"/resources\",\r\n SUPPORT: \"/support\",\r\n LOGOUT: \"/logout\",\r\n CONTACTSUPPORT: \"/support/contact\",\r\n TICKETLIST: \"/support/ticket\",\r\n TICKETDETAIL: \"/ticketdetail\",\r\n TICKETMESSAGE: \"/ticketmessage\",\r\n TC: \"/t&C\",\r\n TOTALEARNING: \"/totalearning\"\r\n};\r\n\r\nexport const MENUS = [\r\n {value: \"ACCOUNT\", text: \"My account\", icon: userIco, selectedIcon: userIco, positions:[\"account\"]},\r\n {value: \"DASHBOARD\", text: \"Dashboard\", icon: DashboardDarkIco, selectedIcon: DashboardWhiteIco, positions:[\"main\"]},\r\n {value: \"CAMPAIGNS\", text: \"Campaigns\", icon: CampaignDarkIco, selectedIcon: CampaignWhiteIco, positions:[\"main\"]},\r\n //{value: \"STATS\", text: \"Stats\", icon: StatsDarkIco, selectedIcon: StatsWhiteIco, positions:[\"main\"]},\r\n {value: \"RESOURCES\", text: \"Resources\", icon: ResourcesDarkIco, selectedIcon: ResourcesWhiteIco, positions:[\"main\"]},\r\n {value: \"SUPPORT\", text: \"Support\", icon: SupportDarktIco, selectedIcon: SupportWhiteIco, positions:[\"main\", \"account\"]},\r\n {value: \"LOGOUT\", text: \"Log out\", icon: LogoutDarkIco, selectedIcon: LogoutDarkIco, positions:[\"main\", \"account\"]},\r\n];\r\n\r\nexport const JOIN_STEP = {\r\n CREATE_ACCOUNT: 1,\r\n VERIFY_PHONE_NUMBER: 2,\r\n PAYMENT_INFO: 3,\r\n BILLING_INFO: 4,\r\n DONE:99\r\n}","export const ACCESSTOKEN_KEY = \"jwt\";\r\nexport const REFRESHTOKEN_KEY = \"refresh\";\r\nexport const API_HOST = (process.env.NODE_ENV === 'development')\r\n ? 'https://tstaffapi.redhotpie.com.au' \r\n // 'http://localhost:58077'\r\n : 'https://affsrvs.affiliatequarter.com'","import * as authSettings from \"configs/api\";\r\n\r\nclass AuthenticationUtil {\r\n\r\n static storeTokens(tokens){\r\n \r\n try {\r\n localStorage.setItem(authSettings.ACCESSTOKEN_KEY, tokens.BearerToken);\r\n localStorage.setItem(authSettings.REFRESHTOKEN_KEY, tokens.RefreshToken);\r\n }\r\n catch (err){\r\n sessionStorage.setItem(authSettings.ACCESSTOKEN_KEY, tokens.BearerToken);\r\n sessionStorage.setItem(authSettings.REFRESHTOKEN_KEY, tokens.RefreshToken);\r\n }\r\n }\r\n\r\n static storeBearerToken(token){\r\n try {\r\n localStorage.setItem(authSettings.ACCESSTOKEN_KEY, token);\r\n \r\n }\r\n catch(err){\r\n sessionStorage.setItem(authSettings.ACCESSTOKEN_KEY, token);\r\n }\r\n }\r\n\r\n static storeRefreshToken(token){\r\n try {\r\n localStorage.setItem(authSettings.REFRESHTOKEN_KEY, token);\r\n }\r\n catch (err){\r\n sessionStorage.setItem(authSettings.REFRESHTOKEN_KEY, token);\r\n }\r\n }\r\n\r\n static isLoggedIn() {\r\n return (!!(localStorage[authSettings.ACCESSTOKEN_KEY] !== 'undefined') \r\n //&& !!(localStorage[authSettings.REFRESHTOKEN_KEY] !== 'undefined')\r\n && !!localStorage[authSettings.ACCESSTOKEN_KEY] \r\n //&& !!localStorage[authSettings.REFRESHTOKEN_KEY]\r\n ) \r\n || \r\n (!!(sessionStorage[authSettings.ACCESSTOKEN_KEY] !== 'undefined') \r\n //&& !!(sessionStorage[authSettings.REFRESHTOKEN_KEY] !== 'undefined')\r\n && !!sessionStorage[authSettings.ACCESSTOKEN_KEY] \r\n //&& !!sessionStorage[authSettings.REFRESHTOKEN_KEY]\r\n );\r\n }\r\n\r\n static clearTokens() {\r\n sessionStorage.removeItem(authSettings.ACCESSTOKEN_KEY);\r\n sessionStorage.removeItem(authSettings.REFRESHTOKEN_KEY);\r\n localStorage.removeItem(authSettings.ACCESSTOKEN_KEY);\r\n localStorage.removeItem(authSettings.REFRESHTOKEN_KEY);\r\n }\r\n\r\n static getRefreshToken(){\r\n return sessionStorage[authSettings.REFRESHTOKEN_KEY]\r\n ? sessionStorage[authSettings.REFRESHTOKEN_KEY]\r\n : (localStorage[authSettings.REFRESHTOKEN_KEY]\r\n ?localStorage[authSettings.REFRESHTOKEN_KEY]\r\n :'');\r\n }\r\n\r\n static getAccessToken(){\r\n return sessionStorage[authSettings.ACCESSTOKEN_KEY]\r\n ? sessionStorage[authSettings.ACCESSTOKEN_KEY]\r\n : (localStorage[authSettings.ACCESSTOKEN_KEY]\r\n ? localStorage[authSettings.ACCESSTOKEN_KEY]\r\n : '');\r\n }\r\n\r\n static getRefreshTokenUrl(){\r\n return `${authSettings.API_HOST}/access-token`\r\n }\r\n\r\n static getRefreshTokenBody(){\r\n return {\r\n RefreshToken : this.getRefreshToken()\r\n };\r\n }\r\n\r\n static getCustomToken(){\r\n return \"f73e1aed-8fd1-4c53-9bb0-ea1535d56f42\";\r\n }\r\n}\r\n\r\nexport default AuthenticationUtil;","import axios from 'axios';\r\nimport {API_HOST} from \"configs/api\";\r\nimport auth from 'utils/auth';\r\n\r\nconst publicFetch = axios.create({\r\n baseURL: API_HOST\r\n });\r\n\r\nconst customFetch = axios.create({\r\n baseURL: API_HOST\r\n});\r\n\r\ncustomFetch.defaults.headers.common[\"Authorization\"] = `${auth.getCustomToken()}`;\r\n \r\n export { publicFetch, customFetch };","import axios from 'axios';\r\nimport {API_HOST} from \"configs/api\";\r\n\r\nconst defaultHeaders = {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\"\r\n};\r\n\r\nconst privateFetch = axios.create({\r\n baseURL: API_HOST,\r\n headers: {...defaultHeaders},\r\n});\r\n\r\nexport default privateFetch;","const Keys = {\r\n Lookup : {\r\n Country: \"categoryLookupAtom\",\r\n Currency: \"currencyLookupAtom\",\r\n StatDates: \"statDatesLookupAtom\",\r\n LandingPages: \"landingPagesLookupAtom\",\r\n AffiliatePrograms: \"AffiliateProgramsLookupAtom\",\r\n },\r\n Account : {\r\n Auth: \"authTokensAtom\",\r\n AccountDetails: \"accountDetailsAtom\",\r\n Profiles: \"accountProfilesAtom\",\r\n PhoneDetails: \"accountPhoneDetailsAtom\",\r\n PaymentInfo: \"accountPaymentInfoAtom\",\r\n BankDetails: \"accountBankDetailsAtom\",\r\n BillingInfo: \"accountBillingInfoAtom\",\r\n PromoteChannels: \"accountPromoteChannelsAtom\",\r\n RegStep: \"accountRegStepAtom\"\r\n\r\n }, \r\n Nav: {\r\n LeftMenu: \"navLeftMenuAtom\"\r\n },\r\n Statistic : {\r\n Campaigns: \"statisticCampaignsAtom\",\r\n CampaignDateRangeID : \"statisticCampaignDateRangeIDAtom\",\r\n EarningsSummary : \"statisticEarningsSummaryAtom\",\r\n CampaignDetails: \"statisticCampaignDetailsAtom\",\r\n CampaignDetailsID: \"statisticCampaignDetailsIDAtom\",\r\n\r\n },\r\n Common : {\r\n ErrPopup: \"commonErrPopupAtom\"\r\n },\r\n Support : {\r\n TicketList: \"supportTicketListAtom\",\r\n TicketListSearchCriteria: \"supportTicketListSearchCriteriaAtom\",\r\n TicketDetails: \"supportTicketDetailsAtom\"\r\n }\r\n}\r\n\r\nexport default Keys;","import {atom} from \"recoil\";\r\nimport keys from \"configs/atoms\";\r\nimport {REFRESHTOKEN_KEY, ACCESSTOKEN_KEY} from \"configs/api\";\r\n\r\nconst initValue = {\r\n isAuthenticated: localStorage.getItem(REFRESHTOKEN_KEY) && localStorage.getItem(ACCESSTOKEN_KEY) ? true : false, \r\n isLoggedIn: false, \r\n accountLoaded: false, \r\n redirToLogout: false,\r\n isRefreshTokenExpired: false\r\n}\r\n\r\nconst auth = atom(({\r\n key: keys.Account.Auth,\r\n default: initValue \r\n}));\r\n\r\nexport default auth;","import {atom} from \"recoil\";\r\nimport keys from \"configs/atoms\";\r\n\r\nconst initState = {\r\n BankName : \"\", \r\n AccountName : \"\", \r\n AccountNumber : \"\", //for au\r\n BSBNumber : \"\", //for au\r\n SwiftCode : \"\", //for intl\r\n IBAN : \"\", //for intl\r\n Currency : \"AUD\", \r\n CountryID :1 \r\n}\r\n\r\nconst bankDetailsAtom = atom(({\r\n key: keys.Account.BankDetails,\r\n default: initState\r\n}));\r\n\r\nexport default bankDetailsAtom;","import {atom} from \"recoil\";\r\nimport keys from \"configs/atoms\";\r\n\r\nconst initState = {\r\n BillingName: \"\",\r\n Address: \"\",\r\n Address2: \"\",\r\n City: \"\",\r\n StateID: -1,\r\n CountryID: -1,\r\n ABN: \"\", // for au\r\n GST: false,// for au\r\n}\r\n\r\nconst billingInfoAtom = atom(({\r\n key: keys.Account.BillingInfo,\r\n default: initState\r\n}));\r\n\r\nexport default billingInfoAtom;","import { atom} from \"recoil\";\r\nimport atomKeys from \"configs/atoms\";\r\nimport bankAccountAtom from \"./bankDetails\";\r\n\r\nconst initState = {\r\n AffiliatePaymentTypeID : \"Paypal\",\r\n Paypal : \"\",\r\n PaymentID: \"\",\r\n BankDetails: bankAccountAtom,\r\n ProgramID: -1\r\n}\r\n\r\nconst paymentInfoAtom = atom({\r\n key: atomKeys.Account.PaymentInfo,\r\n default: initState\r\n});\r\n\r\nexport default paymentInfoAtom;","import { atom} from \"recoil\";\r\nimport atomKeys from \"configs/atoms\";\r\n\r\nconst initState = {\r\n PhoneNumber: \"\",\r\n PhoneCountryCode: \"\",\r\n PhoneAlpha2Code: \"\",\r\n PhoneVerified: false\r\n};\r\n\r\nconst phoneDetailsAtom = atom({\r\n key: atomKeys.Account.PhoneDetails,\r\n default: initState\r\n});\r\n\r\nexport default phoneDetailsAtom;","import { atom} from \"recoil\";\r\nimport atomKeys from \"configs/atoms\";\r\n\r\nconst initState = {\r\n Name: \"\",\r\n Email: \"\"\r\n};\r\n\r\nconst profilesAtom = atom({\r\n key: atomKeys.Account.Profiles,\r\n default: initState\r\n});\r\n\r\nexport default profilesAtom;","import {atom} from \"recoil\";\r\nimport keys from \"configs/atoms\";\r\n\r\nconst initState = {\r\n PromoteWebsite : \"\",\r\n PromoteInstagram : \"\",\r\n PromoteTikTok : \"\",\r\n PromoteYoutube : \"\",\r\n PromoteFacebook : \"\",\r\n PromoteOnlyFans : \"\",\r\n PromoteOther : \"\",\r\n}\r\n\r\nconst promoteChannelsAtom = atom(({\r\n key: keys.Account.PromoteChannels,\r\n default: initState\r\n}));\r\n\r\nexport default promoteChannelsAtom;","import {atom} from \"recoil\";\r\nimport keys from \"configs/atoms\";\r\nimport {JOIN_STEP} from \"configs/page\";\r\n\r\nconst regStepAtom = atom(({\r\n key: keys.Account.RegStep,\r\n default: JOIN_STEP.CREATE_ACCOUNT \r\n}));\r\n\r\nexport default regStepAtom;","import {atom} from \"recoil\";\r\nimport keys from \"configs/atoms\";\r\nimport {MENUS} from \"configs/page\";\r\n\r\nconst [first] = MENUS;\r\n\r\nconst leftMenuAtom = atom(({\r\n key: keys.Nav.LeftMenu,\r\n default: first\r\n}));\r\n\r\nexport default leftMenuAtom;","import {atom} from \"recoil\";\r\nimport keys from \"configs/atoms\";\r\n\r\nconst campaignDateRangeIDAtom = atom(({\r\n key: keys.Statistic.CampaignDateRangeID,\r\n default: 0\r\n}));\r\n\r\nexport default campaignDateRangeIDAtom;\r\n","import {atom} from \"recoil\";\r\nimport akeys from \"configs/atoms\";\r\n\r\nconst campaignDetailsAtom = atom(({\r\n key: akeys.Statistic.CampaignDetails,\r\n default:null,\r\n}));\r\n\r\nexport default campaignDetailsAtom;","import {atom} from \"recoil\";\r\nimport akeys from \"configs/atoms\";\r\n\r\nconst campaignDetailsIDAtom = atom(({\r\n key: akeys.Statistic.CampaignDetailsID,\r\n default:-1,\r\n}));\r\n\r\nexport default campaignDetailsIDAtom;","import {atom} from \"recoil\";\r\n// import keys from \"configs/selectors\";\r\nimport akeys from \"configs/atoms\";\r\n// import campaignDateRangeIDAtom from \"./campaignDateRangeID\";\r\n// import StatsService from \"services/stats\";\r\n\r\n// const campaignsSelector = selector(({\r\n// key: keys.Statistic.Campaigns,\r\n// get: async({get})=> {\r\n// const dateRangeID = get(campaignDateRangeIDAtom);\r\n// const response = await StatsService.getCampaign(dateRangeID);\r\n// return response.data;\r\n// },\r\n// cachePolicy_UNSTABLE: { // Only store the most recent set of dependencies and their values \r\n// eviction: 'most-recent', \r\n// },\r\n// }));\r\n\r\nconst campaignsAtom = atom(({\r\n key: akeys.Statistic.Campaigns,\r\n default:null,\r\n // get: async({get})=> {\r\n // const dateRangeID = get(campaignDateRangeIDAtom);\r\n // const response = await StatsService.getCampaign(dateRangeID);\r\n // return response.data;\r\n // },\r\n \r\n}));\r\n\r\nexport default campaignsAtom;","import {atom} from \"recoil\";\r\nimport atomKeys from \"configs/atoms\";\r\n\r\nconst earningSummaryAtom = atom(({\r\n key: atomKeys.Statistic.EarningsSummary,\r\n default: null,\r\n}));\r\n\r\nexport default earningSummaryAtom;","import {atom} from \"recoil\";\r\nimport keys from \"configs/atoms\";\r\n\r\nconst lookupLandingPagesAtom = atom(({\r\n key: keys.Lookup.LandingPages,\r\n default: []//lookupStatsDatesSelector\r\n}));\r\n\r\nexport default lookupLandingPagesAtom;","import { useRecoilState, useResetRecoilState } from \"recoil\";\r\nimport {REFRESHTOKEN_KEY, ACCESSTOKEN_KEY} from \"configs/api\";\r\nimport { publicFetch } from \"services/fetch\";\r\n\r\n//account atoms\r\nimport authAtom from \"recoil/account/auth\";\r\nimport bankDetailsAtom from \"recoil/account/bankDetails\";\r\nimport billingInfoAtom from \"recoil/account/billingInfo\";\r\nimport paymentInfoAtom from \"recoil/account/paymentInfo\";\r\nimport phoneDetailsAtom from \"recoil/account/phoneDetails\";\r\nimport profilesAtom from \"recoil/account/profiles\";\r\nimport promoteChannelsAtom from \"recoil/account/promoteChannels\";\r\nimport regStepAtom from \"recoil/account/regStep\";\r\n\r\n//nav atoms\r\nimport leftMenuAtom from \"recoil/nav/leftMenu\";\r\n\r\n//stats atoms:\r\nimport campaignDateRangeIDAtom from \"recoil/stats/campaignDateRangeID\";\r\nimport campaignDetailsAtom from \"recoil/stats/campaignDetail\";\r\nimport campaignDetailsIDAtom from \"recoil/stats/campaignDetailID\";\r\nimport campaignsAtom from \"recoil/stats/campaigns\";\r\nimport earningSummaryAtom from \"recoil/stats/earningSummary\";\r\n\r\n//lookup atoms:\r\nimport lookupLandingPagesAtom from \"recoil/lookup/landingPages\";\r\n\r\nconst useAuthProvider = () => {\r\n const [authState, setAuthState] = useRecoilState(authAtom);\r\n const resetAuth = useResetRecoilState(authAtom);\r\n const resetBankDetailsAtom = useResetRecoilState(bankDetailsAtom);\r\n const resetBillingInfoAtom = useResetRecoilState(billingInfoAtom);\r\n const resetPaymentInfoAtom = useResetRecoilState(paymentInfoAtom);\r\n const resetPhoneDetailsAtom = useResetRecoilState(phoneDetailsAtom);\r\n const resetProfilesAtom = useResetRecoilState(profilesAtom);\r\n const resetPromoteChannelsAtom = useResetRecoilState(promoteChannelsAtom);\r\n const resetRegStepAtom = useResetRecoilState(regStepAtom);\r\n const resetLeftMenuAtom = useResetRecoilState(leftMenuAtom);\r\n const resetCampaignDateRangeIDAtom = useResetRecoilState(campaignDateRangeIDAtom);\r\n const resetEarningSummaryAtom = useResetRecoilState(earningSummaryAtom);\r\n const resetCampaignsAtom = useResetRecoilState(campaignsAtom);\r\n const resetCampaignDetailsAtom = useResetRecoilState(campaignDetailsAtom);\r\n const resetCampaignDetailsIDAtom = useResetRecoilState(campaignDetailsIDAtom);\r\n const resetLookupLandingPagesAtom = useResetRecoilState(lookupLandingPagesAtom);\r\n\r\n const clearTokens = ()=>{\r\n localStorage.removeItem(ACCESSTOKEN_KEY);\r\n localStorage.removeItem(REFRESHTOKEN_KEY);\r\n\r\n //set auth atom to not authenticated\r\n //setAuthState({...authState, isAuthenticated: false});\r\n resetAuth();\r\n resetBankDetailsAtom();\r\n resetBillingInfoAtom();\r\n resetPaymentInfoAtom();\r\n resetPhoneDetailsAtom();\r\n resetProfilesAtom();\r\n resetPromoteChannelsAtom();\r\n resetRegStepAtom();\r\n resetLeftMenuAtom();\r\n resetCampaignDateRangeIDAtom();\r\n resetEarningSummaryAtom();\r\n resetCampaignsAtom();\r\n resetCampaignDetailsAtom();\r\n resetCampaignDetailsIDAtom();\r\n resetLookupLandingPagesAtom();\r\n setAuthState({...authState, isAuthenticated: false, accountLoaded:false});\r\n };\r\n\r\n\r\n const getBearerToken = () => {\r\n return localStorage.getItem(ACCESSTOKEN_KEY);\r\n };\r\n\r\n const getRefreshToken = () => {\r\n return localStorage.getItem(REFRESHTOKEN_KEY);\r\n };\r\n\r\n const setAuthTokens = ({BearerToken, RefreshToken}) => {\r\n //store tokens\r\n localStorage.setItem(ACCESSTOKEN_KEY, BearerToken);\r\n localStorage.setItem(REFRESHTOKEN_KEY, RefreshToken);\r\n\r\n //set auth atom to authenticated\r\n setAuthState({...authState, isAuthenticated: true});\r\n\r\n }\r\n\r\n const getNewAccessToken = async failedRequest => {\r\n try {\r\n const { data } = await publicFetch.post(\r\n '/access-token', \r\n {RefreshToken: getRefreshToken()}\r\n );\r\n \r\n failedRequest.response.config.headers[\r\n 'Authorization'\r\n ] = `Bearer ${data.AccessToken}`;\r\n \r\n localStorage.setItem(ACCESSTOKEN_KEY, data.AccessToken);\r\n \r\n return Promise.resolve();\r\n }\r\n catch{\r\n //console.log(\"goes here\");\r\n clearTokens();\r\n //set auth atom to authenticated\r\n //setAuthState({...authState, isAuthenticated: false, isRefreshTokenExpired: true});\r\n return Promise.reject(new Error(\"session expired, please login again\"));\r\n }\r\n \r\n };\r\n\r\n // const isAuthenticated = ()=>{\r\n // return authState.isAuthenticated;\r\n // }\r\n\r\n return {\r\n ...authState,\r\n clearTokens,\r\n getBearerToken,\r\n getNewAccessToken,\r\n setAuthTokens,\r\n };\r\n}\r\n\r\nexport default useAuthProvider;","import privateFetch from \"services/privateFetch\";\r\nimport createAuthRefreshInterceptor from 'axios-auth-refresh';\r\nimport useAuthProvider from \"./useAuthProvider\";\r\n\r\nconst useFetchProvider = (headers={}) => {\r\n const authProvider = useAuthProvider();\r\n\r\n privateFetch.headers = { ...privateFetch.headers, ...headers};\r\n privateFetch.interceptors.request.use(\r\n config => {\r\n config.headers.Authorization = `Bearer ${authProvider.getBearerToken()}`;\r\n return config;\r\n },\r\n // error => {\r\n // console.log(\"session expired, please login again:\", error);\r\n // }\r\n );\r\n\r\n createAuthRefreshInterceptor(\r\n privateFetch,\r\n authProvider.getNewAccessToken,\r\n );\r\n\r\n return (\r\n privateFetch\r\n );\r\n};\r\n\r\nexport default useFetchProvider;","import {publicFetch} from \"services/fetch\";\r\nimport useFetchProvider from 'hooks/useFetchProvider';\r\n\r\nconst AuthService = ()=> {\r\n const fetch = useFetchProvider();\r\n const login = async (credentials)=> await publicFetch.post(`/auth/credentials`, credentials);\r\n const logout = async() => await fetch.post(`/auth/logout`);\r\n return { login, logout };\r\n}\r\n\r\nexport default AuthService;","\r\nimport useService from \"services/auth\";\r\nimport useAuthProvider from \"./useAuthProvider\";\r\n\r\nconst useLogout =()=>{\r\n const service = useService();\r\n const authProvider = useAuthProvider();\r\n const logout = async()=>{\r\n return service.logout()\r\n .then(()=>authProvider.clearTokens());\r\n };\r\n return logout;\r\n}\r\n\r\nexport default useLogout;","import authAtom from \"recoil/account/auth\";\r\nimport { useRecoilValue } from \"recoil\";\r\n\r\nconst useAuth =()=>{\r\n const authState = useRecoilValue(authAtom); \r\n const {isAuthenticated, accountLoaded, redirToLogout} = authState;\r\n return {\r\n isAuthenticated,\r\n isLoggedIn: isAuthenticated,\r\n accountLoaded,\r\n redirToLogout\r\n };\r\n}\r\n\r\nexport default useAuth;","export default __webpack_public_path__ + \"static/media/plus-green-circle-ico.72fbfed3.svg\";","export default __webpack_public_path__ + \"static/media/cross-red-circle-ico.be261fd6.svg\";","import ClipLoader from \"react-spinners/ClipLoader\";\r\n\r\nconst ButtonWithSpinner = (props)=>{\r\n const {text, isLoading, ...rest} = props;\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default ButtonWithSpinner;","import {atom} from \"recoil\";\r\n\r\nconst dateJoined = atom(({\r\n key: \"accountDateJoinedAtom\",\r\n default: null \r\n}));\r\n\r\nexport default dateJoined;","import useFetchProvider from 'hooks/useFetchProvider';\r\nimport { publicFetch, customFetch } from './fetch';\r\n\r\nconst AccountService = ()=> {\r\n const fetch = useFetchProvider();\r\n\r\n const getAccount = async() => await fetch.get(`/Account/`);\r\n const createAccount = async(data) => await publicFetch.post(`/Account`, data); \r\n const updateProfileDetails= async(data) => await fetch.patch(`/Account/ProfileDetails`, data);\r\n const updatePhone = async(data)=> await fetch.patch(`/Account/Phone`, data);\r\n const validatePhone = async(data) => await fetch.post(`/Account/Phone`, data);\r\n const updatePaymentInfoDetails = async(data) => await fetch.post(`/Account/PaymentInfoDetails`, data);\r\n const updateBillingInfoDetails = async (data) => fetch.post(`/Account/BillingInfoDetails`,data);\r\n const updatePassword = async(data) => await fetch.patch(`/Account/Password`, data);\r\n const requestEmailPasswordReset= async(data) => await customFetch.post(`/User/Account/PasswordReset/Email`, data);\r\n const submitPasswordReset = async(data)=> await customFetch.patch(`/User/Account/PasswordReset`, data);\r\n const validatePasswordResetToken = async(data)=> await customFetch.post(`/User/Account/PasswordReset/Token`, data);\r\n const requestTextPasswordReset = async(data)=> await customFetch.post(`/User/Account/PasswordReset/SendTxtMsgCode`, data);\r\n const validateTextPasswordResetCode = async(data)=> await customFetch.post(`/User/Account/PasswordReset/ValidateTxtMsgCode`, data);\r\n const requestValidationCode = async(data)=> await customFetch.post(`/Account/Phone/Send`, data);\r\n const verfifyPhoneValidationCode = async(data)=> await customFetch.post(`/Account/Phone/Verify`, data);\r\n\r\n return {\r\n getAccount,\r\n createAccount,\r\n updateProfileDetails,\r\n updatePhone,\r\n validatePhone,\r\n updatePaymentInfoDetails,\r\n updateBillingInfoDetails,\r\n updatePassword,\r\n requestEmailPasswordReset,\r\n submitPasswordReset,\r\n validatePasswordResetToken,\r\n requestTextPasswordReset,\r\n validateTextPasswordResetCode,\r\n requestValidationCode,\r\n verfifyPhoneValidationCode\r\n };\r\n}\r\n\r\nexport default AccountService;","import {atom} from \"recoil\";\r\nimport keys from \"configs/atoms\";\r\n\r\nconst errMsgAtom = atom(({\r\n key: keys.Common.ErrPopup,\r\n default: { msg: \"\", isShow: false } \r\n}));\r\n\r\nexport default errMsgAtom;","import {useSetRecoilState} from \"recoil\"\r\nimport auth from \"recoil/account/auth\";\r\nimport errMsgAtom from \"recoil/common/errMsg\";\r\n\r\nconst useToast = ()=>{\r\n const setAuth = useSetRecoilState(auth);\r\n const setErrMsg = useSetRecoilState(errMsgAtom);\r\n\r\n const displayErrorMessage=(msg)=>{\r\n // console.log(\"msg\", msg);\r\n if(!msg) return;\r\n msg = String(msg);\r\n if(\r\n msg.toLowerCase().indexOf(\"refresh token expired\") !== -1\r\n // msg.indexOf(\"401\")!==-1 //from axios\r\n // || \r\n || msg.toLowerCase() === \"user does not exist\" //from api credentials\r\n || msg.toLowerCase() === \"account not found\" // from api\r\n || msg.toLowerCase() === \"failed retrieving account\" //from useAccount\r\n ){\r\n // console.log(\"redir to logout\");\r\n setAuth(prevState=>({\r\n ...prevState,\r\n redirToLogout:true\r\n }));\r\n return;\r\n }\r\n \r\n if(msg.indexOf(\"401\")===-1 && msg.toLowerCase().indexOf(\"token has expired\") ) //from axios because bearer token is being updated\r\n // window.alert(`${msg}`);\r\n setErrMsg({msg: msg, isShow: true});\r\n }\r\n\r\n const displaySuccessMessage = (msg)=>{\r\n if(msg) window.alert(`${msg}`);\r\n }\r\n\r\n const showError = (defaultErrorMessage, error)=>{\r\n // console.log(\"defaultErrorMessage\", defaultErrorMessage);\r\n // console.log(\"error\", error)\r\n if(!error) return displayErrorMessage(defaultErrorMessage); \r\n \r\n const {response} = error;\r\n if(!response) return displayErrorMessage(defaultErrorMessage); \r\n const {data} = response;\r\n if(!data)return displayErrorMessage(defaultErrorMessage); \r\n const {ResponseStatus} = data;\r\n if(!ResponseStatus) return displayErrorMessage(defaultErrorMessage); \r\n const {Message} = ResponseStatus;\r\n return displayErrorMessage(Message ? Message : defaultErrorMessage); \r\n }\r\n\r\n return {\r\n error: showError,\r\n success: (msg)=>displaySuccessMessage(`${msg}`)\r\n };\r\n\r\n}\r\n\r\nexport default useToast;","import profilesAtom from \"recoil/account/profiles\";\r\nimport phoneDetailsAtom from \"recoil/account/phoneDetails\";\r\nimport paymentInfoAtom from \"recoil/account/paymentInfo\";\r\nimport bankDetailsAtom from \"recoil/account/bankDetails\";\r\nimport billingInfoAtom from \"recoil/account/billingInfo\";\r\nimport promoteChannelsAtom from \"recoil/account/promoteChannels\";\r\nimport authAtom from \"recoil/account/auth\";\r\nimport dateJoinedAtom from \"recoil/account/dateJoined\";\r\nimport accService from \"services/account\";\r\n//eslint-disable-next-line no-unused-vars\r\nimport { useRecoilState, useRecoilCallback } from \"recoil\";\r\nimport useToast from \"./useToast\";\r\n\r\n\r\nconst useAccount = ()=>{\r\n const toast = useToast();\r\n const service = accService();\r\n \r\n const [auth, setAuth] = useRecoilState(authAtom);\r\n const [, setDateJoined] = useRecoilState(dateJoinedAtom);\r\n const [profiles, setProfiles] = useRecoilState(profilesAtom); \r\n const [phones, setPhones] = useRecoilState(phoneDetailsAtom);\r\n const [paymentInfo, setPaymentInfo] = useRecoilState(paymentInfoAtom);\r\n const [bankDetails, setBankDetails] = useRecoilState(bankDetailsAtom);\r\n const [billingInfo, setBillingInfo] = useRecoilState(billingInfoAtom);\r\n //eslint-disable-next-line no-unused-vars\r\n const [promoteChannels, setPromoteChannels] = useRecoilState(promoteChannelsAtom);\r\n\r\n const createAccount = async(data)=>{\r\n return service.createAccount(data)\r\n .then(response=>{\r\n const {\r\n DateJoined,\r\n ProfileDetails, \r\n PhoneDetails, \r\n PaymentInfoDetails, \r\n BillingInfoDetails, \r\n PromoteChannels\r\n } = response.data;\r\n\r\n const {BankDetails, AffiliatePaymentTypeID,\r\n Paypal, PaymentID, ProgramID} = PaymentInfoDetails;\r\n \r\n setDateJoined(DateJoined);\r\n setProfiles(ProfileDetails);\r\n setPhones(PhoneDetails);\r\n setPromoteChannels(PromoteChannels);\r\n setBillingInfo(BillingInfoDetails);\r\n setBankDetails(BankDetails)\r\n setPaymentInfo({\r\n ...paymentInfo,\r\n AffiliatePaymentTypeID,\r\n Paypal,\r\n PaymentID,\r\n ProgramID\r\n });\r\n setAuth({\r\n ...auth,\r\n accountLoaded: true,\r\n });\r\n\r\n return;\r\n })\r\n .catch((error) => {\r\n toast.error(\"Failed create account\", error);\r\n throw error;\r\n });\r\n };\r\n\r\n const getAccount = useRecoilCallback(({ set }) => async()=>{\r\n return service.getAccount()\r\n .then(response=>{\r\n \r\n const {\r\n DateJoined,\r\n ProfileDetails, \r\n PhoneDetails, \r\n PaymentInfoDetails, \r\n BillingInfoDetails, \r\n PromoteChannels\r\n } = response.data;\r\n\r\n const {BankDetails, AffiliatePaymentTypeID,\r\n Paypal, PaymentID, ProgramID} = PaymentInfoDetails;\r\n\r\n set(profilesAtom, ProfileDetails);\r\n set(phoneDetailsAtom, PhoneDetails);\r\n set(promoteChannelsAtom, PromoteChannels);\r\n set(billingInfoAtom, BillingInfoDetails);\r\n set(paymentInfoAtom, {\r\n AffiliatePaymentTypeID,\r\n Paypal,\r\n PaymentID,\r\n ProgramID\r\n });\r\n set(bankDetailsAtom, BankDetails);\r\n set(authAtom, {...auth, accountLoaded: true});\r\n set(dateJoinedAtom, DateJoined);\r\n })\r\n .catch((error) => {\r\n toast.error(\"Failed retrieving account\", error);\r\n throw error;\r\n });\r\n \r\n \r\n \r\n });\r\n \r\n const validatePhone = async(code)=>{\r\n return service.validatePhone({VerificationCode : code})\r\n .then(response=>setPhones(response.data))\r\n .catch((error) => {\r\n toast.error(\"Failed verifying code\", error);\r\n throw error;\r\n });\r\n }\r\n\r\n const verifyPhone = async(data)=>{\r\n return service.verfifyPhoneValidationCode(data)\r\n .then(response=>response.data)\r\n .catch((error) => {\r\n toast.error(\"Failed verifying code\", error);\r\n throw error;\r\n });\r\n }\r\n\r\n const requestPhoneCode = async(data)=>{\r\n return service.requestValidationCode(data)\r\n .catch((error) => {\r\n toast.error(\"Failed requesting sms code\", error);\r\n throw error;\r\n });\r\n }\r\n\r\n const updatePaymentInfo = async(data)=>{\r\n return service.updatePaymentInfoDetails(data)\r\n .then(response=>{\r\n const {\r\n BankDetails, AffiliatePaymentTypeID,\r\n Paypal, PaymentID, ProgramID\r\n } = response.data;\r\n\r\n setBankDetails(BankDetails)\r\n setPaymentInfo({\r\n ...paymentInfo,\r\n AffiliatePaymentTypeID,\r\n Paypal,\r\n PaymentID, \r\n ProgramID\r\n });\r\n \r\n return;\r\n })\r\n .catch((error) => {\r\n toast.error(\"Failed updating payment info\", error);\r\n throw error;\r\n });\r\n }\r\n\r\n const updateBillingInfo = async(data)=>{\r\n return service.updateBillingInfoDetails(data)\r\n .then(response=>setBillingInfo(response.data))\r\n .catch((error) => {\r\n toast.error(\"Failed updating billing info\", error);\r\n throw error;\r\n });\r\n }\r\n\r\n const updateProfileDetails = async(data)=>{\r\n return service.updateProfileDetails(data)\r\n .then(response=>{\r\n const {\r\n ProfileDetails, \r\n PromoteChannels\r\n } = response.data;\r\n\r\n setProfiles(ProfileDetails);\r\n setPromoteChannels(PromoteChannels);\r\n })\r\n .catch((error) => {\r\n toast.error(\"Failed updating profile details\", error);\r\n throw error;\r\n });\r\n }\r\n\r\n const updatePhoneDetails = async(data)=>{\r\n return service.updatePhone(data)\r\n .then(response=>{\r\n setPhones(response.data);\r\n return response.data.PhoneVerified === false;\r\n })\r\n .catch((error) => {\r\n toast.error(\"Failed updating phone number\", error);\r\n throw error;\r\n });\r\n }\r\n\r\n return {\r\n createAccount,\r\n validatePhone,\r\n verifyPhone,\r\n requestPhoneCode,\r\n paymentInfo,\r\n bankDetails,\r\n profiles,\r\n phoneDetail: phones,\r\n billingInfo,\r\n promoteChannels,\r\n getAccount,\r\n updatePaymentInfo,\r\n updateBillingInfo,\r\n updateProfileDetails,\r\n updatePhoneDetails\r\n }\r\n}\r\n\r\nexport default useAccount;","import axios from \"axios\";\r\nimport createAuthRefreshInterceptor from 'axios-auth-refresh';\r\nimport axiosRetry from 'axios-retry';\r\nimport auth from '../utils/auth';\r\n\r\nconst axiosApiInstance = axios.create();\r\n\r\n// Function that will be called to refresh authorization\r\nconst refreshAuthLogic = failedRequest => {\r\n // console.log(\"failedRequest\", failedRequest)\r\n return axios\r\n .post(`${auth.getRefreshTokenUrl()}`, auth.getRefreshTokenBody())\r\n .then(tokenRefreshResponse => {\r\n const {AccessToken} = tokenRefreshResponse.data;\r\n auth.storeBearerToken(AccessToken);\r\n failedRequest.response.config.headers['Authorization'] = 'Bearer ' + AccessToken;\r\n return Promise.resolve();\r\n }, ()=>{\r\n auth.clearTokens();\r\n throw new Error(\"refresh token expired\")\r\n }).catch((err)=>{\r\n auth.clearTokens();\r\n throw new Error(err);\r\n });\r\n // .finally(()=>console.log(\"finally\"));\r\n}\r\n// Instantiate the interceptor (you can chain it as it returns the axios instance)\r\ncreateAuthRefreshInterceptor(axiosApiInstance, refreshAuthLogic);\r\n\r\naxiosRetry(axiosApiInstance, {retries: 5});\r\n\r\nconst defaultHeaders = {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\"\r\n}\r\n\r\nconst apiRequest = (action)=>{\r\n const {\r\n url,\r\n method,\r\n data,\r\n headers,\r\n } = action;\r\n const dataOrParams = [\"GET\", \"DELETE\"].includes(method) ? \"params\" : \"data\";\r\n const theData = data;\r\n \r\n const accessToken = auth.getAccessToken();\r\n if(accessToken)\r\n axiosApiInstance.defaults.headers.common[\"Authorization\"] = `Bearer ${accessToken}`;\r\n\r\n return axiosApiInstance.request({\r\n url,\r\n method,\r\n headers : {\r\n ...defaultHeaders,\r\n ...headers\r\n },\r\n [dataOrParams]: theData\r\n });\r\n}\r\n\r\nexport const apiRequestCustomApiToken = (action)=>{\r\n const {\r\n url,\r\n method,\r\n data,\r\n headers,\r\n } = action;\r\n const dataOrParams = [\"GET\", \"DELETE\"].includes(method) ? \"params\" : \"data\";\r\n const theData = data;\r\n const accessToken = auth.getCustomToken();\r\n if(accessToken)\r\n axios.defaults.headers.common[\"Authorization\"] = `${accessToken}`;\r\n\r\n return axios.request({\r\n url,\r\n method,\r\n headers : {\r\n ...defaultHeaders,\r\n ...headers\r\n },\r\n [dataOrParams]: theData\r\n });\r\n}\r\n\r\nexport const apiRequestNoInterceptor = (action)=>{\r\n const {\r\n url,\r\n method,\r\n data,\r\n headers,\r\n } = action;\r\n const dataOrParams = [\"GET\", \"DELETE\"].includes(method) ? \"params\" : \"data\";\r\n const theData = data;\r\n const accessToken = auth.getAccessToken();\r\n if(accessToken)\r\n axios.defaults.headers.common[\"Authorization\"] = `Bearer ${accessToken}`;\r\n\r\n return axios.request({\r\n url,\r\n method,\r\n headers : {\r\n ...defaultHeaders,\r\n ...headers\r\n },\r\n [dataOrParams]: theData\r\n });\r\n}\r\n\r\nexport default apiRequest;\r\n\r\n","import ApiRequest from './base';\r\nimport {API_HOST} from \"../configs/api\";\r\n\r\nclass SupportService {\r\n static async getTicketList(data){\r\n return await ApiRequest({\r\n url: `${API_HOST}/Support`,\r\n method: \"GET\",\r\n data : data\r\n });\r\n };\r\n static async createTicket(data){\r\n return await ApiRequest({\r\n url: `${API_HOST}/Support`,\r\n method: \"POST\",\r\n data : data\r\n });\r\n };\r\n static async uploadAttachment(data){\r\n return await ApiRequest({\r\n url: `${API_HOST}/Support/Attachments`,\r\n method: \"POST\",\r\n data : data,\r\n headers: {\"Content-Type\": \"multipart/form-data\"}\r\n });\r\n };\r\n static async getTicketDetail(data){\r\n const {TicketRef} = data;\r\n return await ApiRequest({\r\n url: `${API_HOST}/Support/${TicketRef}`,\r\n method: \"GET\",\r\n data : data\r\n });\r\n };\r\n static async createTicketReply(data){\r\n // console.log(\"data\", data)\r\n const {TicketRef} = data;\r\n return await ApiRequest({\r\n url: `${API_HOST}/Support/${TicketRef}`,\r\n method: \"POST\",\r\n data : data\r\n });\r\n };\r\n static async updateTicketStatus(data){\r\n const {TicketRef} = data;\r\n return await ApiRequest({\r\n url: `${API_HOST}/Support/${TicketRef}`,\r\n method: \"PATCH\",\r\n data : data\r\n });\r\n };\r\n}\r\n\r\nexport default SupportService;","import {atom} from \"recoil\";\r\nimport keys from \"configs/atoms\";\r\n\r\nconst initStateList = {\r\n List : [],\r\n Total: 0,\r\n NotCheckedCount: 0\r\n}\r\n\r\nconst ticketListAtom = atom(({\r\n key: keys.Support.TicketList,\r\n default: initStateList\r\n}));\r\n\r\nexport default ticketListAtom;","import {atom} from \"recoil\";\r\nimport keys from \"configs/atoms\";\r\n\r\nconst initStateCriteria = {\r\n Size: 2000,\r\n Page: 0,\r\n CategoryID: -1,\r\n IsLoaded: false\r\n};\r\n\r\nconst ticketListCriteriaAtom = atom(({\r\n key: keys.Support.TicketListSearchCriteria,\r\n default: initStateCriteria\r\n}));\r\n\r\nexport default ticketListCriteriaAtom;","import {atom} from \"recoil\";\r\nimport keys from \"configs/atoms\";\r\n\r\nconst initState = {\r\n TicketStarter : null,\r\n Responses: [],\r\n Attachments: []\r\n}\r\n\r\nconst ticketDetailsAtom = atom(({\r\n key: keys.Support.TicketDetails,\r\n default: initState\r\n}));\r\n\r\nexport default ticketDetailsAtom;","import { useRecoilValueLoadable, \r\n useRecoilValue,\r\n useSetRecoilState, \r\n useRecoilState, \r\n useRecoilCallback } from \"recoil\";\r\nimport SupportService from 'services/support';\r\nimport useToast from \"./useToast\";\r\n\r\nimport ticketListAtom from \"recoil/support/tickets\";\r\nimport ticketListCriteriaAtom from \"recoil/support/ticketsCriteria\";\r\nimport ticketDetailsAtom from \"recoil/support/ticketDetail\";\r\n\r\nimport cloneDeep from 'lodash/cloneDeep';\r\n\r\nconst useSupport = ()=>{\r\n const toast = useToast();\r\n const [ticketList, setTicketList] = useRecoilState(ticketListAtom);\r\n const ticketListLoadable = useRecoilValueLoadable(ticketListAtom);\r\n const ticketListCriteria = useRecoilValue(ticketListCriteriaAtom);\r\n const ticketDetailLoadable = useRecoilValueLoadable(ticketDetailsAtom);\r\n const setTicketDetail = useSetRecoilState(ticketDetailsAtom);\r\n\r\n const fetchTickets = useRecoilCallback(({ set }) => async (criteria, current) => {\r\n return SupportService.getTicketList(criteria)\r\n .then(response=>{\r\n const newCriteria = {\r\n ...criteria,\r\n IsLoaded: true\r\n };\r\n set(ticketListCriteriaAtom, newCriteria);\r\n const {List} = current;\r\n const {Data, Total, NotCheckedCount} = response.data;\r\n const currentRefs = List.map(itm=>itm.TicketRef);\r\n const filtered = Data.filter(itm=> currentRefs.includes(itm.TicketRef)===false);\r\n const newList = [...List, ...filtered];\r\n set(ticketListAtom, {List: newList, Total, NotCheckedCount});\r\n \r\n })\r\n .catch(err=>{toast.error(err)});\r\n });\r\n\r\n const fetchTicketDetail = useRecoilCallback(({ set }) => async (ticketRef, currentList) => {\r\n if(!ticketRef) return;\r\n return SupportService.getTicketDetail({ TicketRef: ticketRef})\r\n .then(response => {\r\n set(ticketDetailsAtom, response.data);\r\n const {List} = currentList;\r\n const newList = cloneDeep(List);\r\n\r\n const idx = newList.findIndex(itm=>itm.TicketRef === ticketRef);\r\n if(idx !== -1){\r\n const newItm = newList.find(itm=>itm.TicketRef === ticketRef);\r\n newItm.NewCount = 0;\r\n newList[idx] = newItm;\r\n const newListAtomVal = {\r\n ...currentList,\r\n List: newList\r\n };\r\n set(ticketListAtom, newListAtomVal);\r\n }\r\n\r\n })\r\n .catch(err => {toast.error(\"Failed to retrieve ticket\", err); throw err});\r\n });\r\n\r\n const uploadAttachment = async(data)=>{\r\n return SupportService.uploadAttachment(data)\r\n .then(response=>response, (err)=>{\r\n throw new Error(err);\r\n });\r\n }\r\n\r\n const addNewTicket = async(data)=>{\r\n return SupportService.createTicket(data)\r\n .then((response)=>{\r\n const {List} = ticketList;\r\n const idx = List.findIndex(itm=>itm.TicketRef === response.data.TicketRef);\r\n if(idx === -1){\r\n //add to list\r\n setTicketList(prev=>({\r\n ...prev,\r\n List : [response.data, ...prev.List],\r\n Total: prev.Total + 1\r\n }));\r\n }\r\n \r\n return true;\r\n }, (err)=>{\r\n throw new Error(err);\r\n });\r\n };\r\n\r\n const addTicketReply = async(data)=>{\r\n return SupportService.createTicketReply(data)\r\n .then((response)=>{\r\n //add to response list\r\n setTicketDetail(prev=>({\r\n ...prev,\r\n Responses : [response.data, ...prev.Responses]\r\n }));\r\n return true;\r\n }, (err)=>{\r\n throw new Error(err);\r\n });\r\n };\r\n\r\n return {\r\n fetchTickets,\r\n ticketList,\r\n ticketListLoadable,\r\n ticketListCriteria,\r\n ticketDetailLoadable,\r\n fetchTicketDetail,\r\n addNewTicket,\r\n uploadAttachment,\r\n addTicketReply\r\n }\r\n}\r\n\r\nexport default useSupport;","import ApiRequest from './base';\r\nimport {API_HOST} from \"../configs/api\";\r\n\r\n\r\nclass LookupService {\r\n static async getLookup(name){\r\n return await ApiRequest({\r\n url: `${API_HOST}/Lookup/${name}`,\r\n method: \"GET\",\r\n data : {}\r\n });\r\n };\r\n static async getLookupAvailability(name, value){\r\n return await ApiRequest({\r\n url: `${API_HOST}/LookupAvailability/${name}`,\r\n method: \"GET\",\r\n data : {value}\r\n });\r\n };\r\n static async getLookupCountry(){\r\n return await ApiRequest({\r\n url: `${API_HOST}/Location/Country/`,\r\n method: \"GET\",\r\n data : {}\r\n });\r\n }\r\n static async getLookupState(countryID){\r\n return await ApiRequest({\r\n url: `${API_HOST}/Location/Country/${countryID}`,\r\n method: \"GET\",\r\n data : {}\r\n });\r\n }\r\n static async getLookupLandingPages(){\r\n return await ApiRequest({\r\n url: `${API_HOST}/LandingPages`,\r\n method: \"GET\",\r\n data : {}\r\n });\r\n }\r\n}\r\n\r\nexport default LookupService;","\r\nimport * as Yup from 'yup';\r\nimport lookupService from \"services/lookup\";\r\nimport isEmail from 'sane-email-validation';\r\n\r\nclass ValidationsUtil {\r\n static affiliateName(){\r\n return Yup\r\n .string()\r\n .required('Affiliate name is required')\r\n .min(5, 'Affiliate name minimum 5 characters')\r\n .max(20, 'Affiliate name maximum 20 characters')\r\n .matches(/^[a-zA-Z0-9_ ]{5,20}$/, 'Affiliate name must only contain letters, numbers & underscore')\r\n .test(\r\n 'checkUniqueAffiliateName', \r\n \"This affiliate name is already in used\", \r\n value=>{ \r\n return value.match(/^[a-zA-Z0-9_ ]{5,20}$/)\r\n ? lookupService.getLookupAvailability(\"affiliatename\", value)\r\n .then(response =>{\r\n const {data} = response;\r\n const {IsAvailable} = data ? data : {IsAvailable:false};\r\n return IsAvailable === true\r\n })\r\n : true\r\n })\r\n ;\r\n // .test(async (v, context) => {\r\n // try {\r\n // await Yup.string().required('Affiliate name is required')\r\n // .min(5, 'Affiliate name minimun 5 characters')\r\n // .max(20, 'Affiliate name maximum 20 characters')\r\n // .matches(/^[a-zA-Z0-9_ ]{5,20}$/, 'Affiliate name must only contain letters, numbers & underscore').validate(v);\r\n // await Yup.string().test(\r\n // 'checkUniqueAffiliateName', \r\n // \"This affiliate name is already in used\", \r\n // value=>{ \r\n // return lookupService.getLookupAvailability(\"affiliatename\", value)\r\n // .then(response =>{\r\n // const {data} = response;\r\n // const {IsAvailable} = data ? data : {IsAvailable:false};\r\n // return IsAvailable === true\r\n // })\r\n // }).validate(v);\r\n // } catch ({message}) {\r\n // return context.createError({message});\r\n // }\r\n // return true;\r\n // })\r\n \r\n // .test(\r\n // 'checkUniqueAffiliateName', \r\n // \"This affiliate name is already in used\", \r\n // value=>{ \r\n // // return \r\n // // value.match(/^[a-zA-Z0-9_ ]{5,20}$/)\r\n // // ? \r\n // return lookupService.getLookupAvailability(\"affiliatename\", value)\r\n // .then(response =>{\r\n // const {data} = response;\r\n // const {IsAvailable} = data ? data : {IsAvailable:false};\r\n // return IsAvailable === true\r\n // })\r\n // // : true\r\n // })\r\n // ;\r\n }\r\n static email() {\r\n return Yup.string()\r\n .required('Email is required')\r\n .email('Email is invalid')\r\n .test(\r\n 'checkUniqueEmail', \r\n \"This Email is already in used\", \r\n value=>{ \r\n return value && isEmail(value) \r\n ? lookupService.getLookupAvailability(\"email\", value)\r\n .then(response =>{\r\n const {data} = response;\r\n const {IsAvailable} = data ? data : {IsAvailable:false};\r\n return IsAvailable === true\r\n })\r\n : true\r\n })\r\n ; \r\n }\r\n static notUniqueEmail() {\r\n return Yup.string()\r\n .required('Email is required')\r\n .email('Email is invalid'); \r\n }\r\n static password(){\r\n return Yup.string()\r\n .min(6, 'Password must be at least 6 characters')\r\n .required('Password is required');\r\n }\r\n static confirmPassword(pwdRef){\r\n return Yup.string()\r\n .oneOf([Yup.ref(pwdRef), null], 'Passwords must match')\r\n .required('Confirm Password is required');\r\n }\r\n \r\n \r\n}\r\n\r\nexport default ValidationsUtil;","import React, { useState, useEffect } from 'react';\r\nimport classNames from 'classnames';\r\nimport {useHistory} from \"react-router-dom\";\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faChevronLeft } from \"@fortawesome/free-solid-svg-icons\";\r\nimport plusGreenCircle from 'assets/img/plus-green-circle-ico.svg';\r\nimport crossRedCircle from \"assets/img/cross-red-circle-ico.svg\";\r\n\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport { useForm } from \"react-hook-form\";\r\nimport * as Yup from 'yup';\r\n\r\nimport ButtonWithSpinner from './buttons/ButtonSpinner';\r\n\r\nimport imageCompression from \"browser-image-compression\";\r\n\r\nimport useAccount from \"hooks/useAccount\";\r\nimport useToast from \"hooks/useToast\";\r\nimport useSupport from 'hooks/useSupport';\r\n\r\nimport ClipLoader from \"react-spinners/ClipLoader\";\r\nimport ValidationsUtil from 'utils/validations';\r\n\r\nconst ContactSupport = (props) => {\r\n const history = useHistory();\r\n const toast = useToast();\r\n const accountProvider = useAccount();\r\n const supportProvider = useSupport();\r\n const { profiles } = accountProvider;\r\n const { Name, Email } = profiles;\r\n \r\n const validationSchema = Yup.object().shape({\r\n subject: Yup.string().trim().required(\"Required\"),\r\n description: Yup.string().trim().required(\"Required\"),\r\n email: ValidationsUtil.notUniqueEmail(),\r\n name: Yup.string().trim().required(\"Required\"),\r\n });\r\n const {\r\n handleSubmit,\r\n formState: { errors },\r\n register,\r\n setValue\r\n } = useForm({\r\n defaultValues: {\r\n subject: \"\",\r\n description: \"\",\r\n email: Email,\r\n name: Name\r\n },\r\n resolver: yupResolver(validationSchema)\r\n });\r\n\r\n const {isOpenInPopup = false, onBackClicked = ()=>{history.goBack()}, postProcFunc = ()=>{}, onClose} = props;\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n // const history = useHistory();\r\n\r\n const [isUploading, setIsUploading] = useState(false);\r\n const [attachments, setAttachments] = useState([]);\r\n\r\n useEffect(()=>{\r\n setValue(\"email\", Email);\r\n }, [Email, setValue])\r\n\r\n useEffect(()=>{\r\n setValue(\"name\", Name);\r\n }, [Name, setValue])\r\n\r\n const handleUpload = async(event) => {\r\n if(isUploading) return;\r\n setIsUploading(true);\r\n const file = event.target.files[0];\r\n \r\n try {\r\n const compressedFile = await imageCompression(file, {maxSizeMB: 4, maxWidthOrHeight: 1920});\r\n //note compressedFile is a blob, convert it to file for uploading\r\n const data = new FormData();\r\n data.append(\"file\", new File([compressedFile], file.name));\r\n \r\n await supportProvider.uploadAttachment(data)\r\n .then((response)=>{\r\n setAttachments(prev=>([...response.data,...prev]));\r\n setIsUploading(false);\r\n }, (err)=>{toast.error(\"Failed to upload image\", err);setIsUploading(false);});\r\n ; // write your own logic\r\n } catch (error) {\r\n setIsUploading(false);\r\n toast.error(error);\r\n }\r\n\r\n // if(file) {\r\n // const fileURL = URL.createObjectURL(file);\r\n // let fileType = null;\r\n // if(file.type.match('image')) {\r\n // fileType = \"image\";\r\n // }else if (file.type.match('video')) {\r\n // fileType = \"video\";\r\n // }\r\n \r\n // setUploadFiles([...uploadFiles, {url:fileURL, type:fileType}]);\r\n // }\r\n }\r\n\r\n const handleRemoveAttachment = (id)=>{\r\n const atts = attachments.filter(a=>a.FileID !== id);\r\n setAttachments(atts);\r\n }\r\n\r\n const onSubmitHandler = async (frmData, e) => {\r\n e.preventDefault();\r\n\r\n if(isSubmitting) return;\r\n setIsSubmitting(true);\r\n\r\n const submittedData = {\r\n EmailAddress : frmData.email,\r\n SuppliedUsername : frmData.name,\r\n Subject : frmData.subject,\r\n Enquiry : frmData.description,\r\n CategoryID : 15,\r\n SiteCountryID: 1,\r\n UserAgent : '',\r\n IPAddress: '',\r\n Attachments: attachments.map(att=>att.FileID)\r\n };\r\n\r\n await supportProvider.addNewTicket(submittedData)\r\n .then(()=>{\r\n setIsSubmitting(false);\r\n postProcFunc();\r\n }, (err)=>{\r\n setIsSubmitting(false);\r\n toast.error(\"Failed to add a new ticket\", err);\r\n });\r\n }\r\n\r\n const handleCloseBtn = (event) => {\r\n event.preventDefault();\r\n if(!isOpenInPopup) {\r\n onBackClicked();\r\n }else {\r\n onClose();\r\n }\r\n }\r\n\r\n return (\r\n
\r\n\r\n
\r\n \r\n
\r\n {/* {showBackBtn &&

{event.preventDefault();onBackClicked();}} title=\"Click to go back\">

} */}\r\n

\r\n

Contact support

\r\n

\r\n
\r\n\r\n
\r\n {\r\n Email \r\n ? null\r\n : <>\r\n

\r\n \r\n \r\n {errors?.name?.message && {errors?.name?.message}}\r\n

\r\n\r\n

\r\n \r\n \r\n {errors?.email?.message && {errors?.email?.message}}\r\n

\r\n \r\n }\r\n

\r\n \r\n \r\n {errors?.subject?.message && {errors?.subject?.message}}\r\n

\r\n \r\n

\r\n \r\n \r\n {errors?.description?.message && {errors?.description?.message}}\r\n \r\n

\r\n
\r\n {event.target.value = null}} />\r\n {\r\n attachments.length > 0 \r\n ?\r\n\r\n
\r\n {attachments.map((file, i)=>(\r\n \r\n

\r\n {`attachment\r\n handleRemoveAttachment(file.FileID)}>\"X\"\r\n

\r\n ))}\r\n \r\n
\r\n : \r\n }\r\n \r\n {/* {\r\n uploadFiles.length > 0 \r\n ?\r\n
\r\n {uploadFiles.map((file, i)=>(\r\n file.type === \"image\" ?\r\n

\r\n \"Image\r\n handleRemove(file.url)}>\"X\"\r\n

\r\n :\r\n

\r\n \r\n handleRemove(file.url)}>\"X\"\r\n

\r\n ))}\r\n \r\n
\r\n :\r\n \r\n }*/}\r\n
\r\n \r\n
\r\n {/*
\r\n

\r\n
*/}\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default ContactSupport;","import React, { useState} from 'react';\r\nimport classNames from 'classnames';\r\nimport {useHistory} from \"react-router-dom\";\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faChevronLeft, faCheckCircle, faExclamationTriangle } from \"@fortawesome/free-solid-svg-icons\";\r\nimport plusGreenCircle from 'assets/img/plus-green-circle-ico.svg';\r\nimport crossRedCircle from \"assets/img/cross-red-circle-ico.svg\";\r\n\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport { useForm } from \"react-hook-form\";\r\nimport * as Yup from 'yup';\r\n\r\nimport ButtonWithSpinner from './buttons/ButtonSpinner';\r\n\r\nimport imageCompression from \"browser-image-compression\";\r\n\r\n//import useAccount from \"hooks/useAccount\";\r\nimport useToast from \"hooks/useToast\";\r\nimport useSupport from 'hooks/useSupport';\r\n\r\nimport ClipLoader from \"react-spinners/ClipLoader\";\r\n\r\nconst ContactSupportLogout = (props) => {\r\n const history = useHistory();\r\n const toast = useToast();\r\n //const accountProvider = useAccount();\r\n const supportProvider = useSupport();\r\n //const { profiles } = accountProvider;\r\n //const { Name, Email } = profiles;\r\n\r\n const [isSubmitted, setIsSubmitted] = useState(false);\r\n const [isSuccessSubmitted, setIsSuccessSubmitted] = useState(false);\r\n \r\n const validationSchema = Yup.object().shape({\r\n name: Yup.string().trim().required(\"Required\"),\r\n email: Yup.string().trim().required(\"Required\"),\r\n subject: Yup.string().trim().required(\"Required\"),\r\n description: Yup.string().trim().required(\"Required\"),\r\n });\r\n const {\r\n handleSubmit,\r\n formState: { errors },\r\n register,\r\n } = useForm({\r\n defaultValues: {\r\n name: \"\",\r\n email: \"\",\r\n subject: \"\",\r\n description: \"\"\r\n },\r\n resolver: yupResolver(validationSchema)\r\n });\r\n\r\n const {isOpenInPopup = false, onBackClicked = ()=>{history.goBack()}, postProcFunc = ()=>{}, onClose} = props;\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n // const history = useHistory();\r\n\r\n const [isUploading, setIsUploading] = useState(false);\r\n const [attachments, setAttachments] = useState([]);\r\n\r\n const handleUpload = async(event) => {\r\n if(isUploading) return;\r\n setIsUploading(true);\r\n const file = event.target.files[0];\r\n \r\n try {\r\n const compressedFile = await imageCompression(file, {maxSizeMB: 4, maxWidthOrHeight: 1920});\r\n //note compressedFile is a blob, convert it to file for uploading\r\n const data = new FormData();\r\n data.append(\"file\", new File([compressedFile], file.name));\r\n \r\n await supportProvider.uploadAttachment(data)\r\n .then((response)=>{\r\n setAttachments(prev=>([...response.data,...prev]));\r\n setIsUploading(false);\r\n }, (err)=>{toast.error(\"Failed to upload image\", err);setIsUploading(false);});\r\n ; // write your own logic\r\n } catch (error) {\r\n setIsUploading(false);\r\n toast.error(error);\r\n }\r\n\r\n // if(file) {\r\n // const fileURL = URL.createObjectURL(file);\r\n // let fileType = null;\r\n // if(file.type.match('image')) {\r\n // fileType = \"image\";\r\n // }else if (file.type.match('video')) {\r\n // fileType = \"video\";\r\n // }\r\n \r\n // setUploadFiles([...uploadFiles, {url:fileURL, type:fileType}]);\r\n // }\r\n }\r\n\r\n const handleRemoveAttachment = (id)=>{\r\n const atts = attachments.filter(a=>a.FileID !== id);\r\n setAttachments(atts);\r\n }\r\n\r\n const onSubmitHandler = async (frmData, e) => {\r\n e.preventDefault();\r\n \r\n if(isSubmitting) return;\r\n setIsSubmitting(true);\r\n\r\n const submittedData = {\r\n EmailAddress : frmData.email,\r\n SuppliedUsername : frmData.name,\r\n Subject : frmData.subject,\r\n Enquiry : frmData.description,\r\n CategoryID : 15,\r\n SiteCountryID: 1,\r\n UserAgent : '',\r\n IPAddress: '',\r\n Attachments: attachments.map(att=>att.FileID)\r\n };\r\n\r\n await supportProvider.addNewTicket(submittedData)\r\n .then(()=>{\r\n setIsSubmitting(false);\r\n postProcFunc();\r\n setIsSuccessSubmitted(true);\r\n setIsSubmitted(true);\r\n }, (err)=>{\r\n setIsSubmitting(false);\r\n //toast.error(\"Failed to add a new ticket\", err);\r\n setIsSuccessSubmitted(false);\r\n setIsSubmitted(true);\r\n });\r\n }\r\n\r\n const handleCloseBtn = (event) => {\r\n event.preventDefault();\r\n if(!isOpenInPopup) {\r\n onBackClicked();\r\n }else {\r\n onClose();\r\n }\r\n }\r\n\r\n \r\n return (\r\n
\r\n\r\n {\r\n !isSubmitted \r\n ?\r\n
\r\n \r\n
\r\n

\r\n

Contact support

\r\n

\r\n
\r\n\r\n
\r\n

\r\n \r\n \r\n {errors?.name?.message && {errors?.name?.message}}\r\n

\r\n\r\n

\r\n \r\n \r\n {errors?.email?.message && {errors?.email?.message}}\r\n

\r\n\r\n

\r\n \r\n \r\n {errors?.subject?.message && {errors?.subject?.message}}\r\n

\r\n \r\n

\r\n \r\n \r\n {errors?.description?.message && {errors?.description?.message}}\r\n \r\n

\r\n
\r\n {event.target.value = null}} />\r\n {\r\n attachments.length > 0 \r\n ?\r\n\r\n
\r\n {attachments.map((file, i)=>(\r\n \r\n

\r\n {`attachment\r\n handleRemoveAttachment(file.FileID)}>\"X\"\r\n

\r\n ))}\r\n \r\n
\r\n : \r\n }\r\n \r\n
\r\n \r\n
\r\n
\r\n :\r\n
\r\n
\r\n

\r\n

Contact support

\r\n
\r\n
\r\n {\r\n isSuccessSubmitted\r\n ?\r\n
\r\n \r\n

Ticket has been create successfully!

\r\n
\r\n :\r\n
\r\n \r\n

Failed to add a new ticket!

\r\n
\r\n }\r\n \r\n \r\n \r\n
\r\n
\r\n }\r\n\r\n
\r\n );\r\n}\r\n\r\nexport default ContactSupportLogout;","import React from 'react';\r\nimport { Modal } from 'react-responsive-modal';\r\n\r\nimport ContactSupport from 'components/ContactSupportForm';\r\nimport ContactSupportLogout from 'components/ContactSupportFormLogout';\r\n\r\nconst ContactSupportPopup = (props) => {\r\n const {open, close, postProcFunc, loggedin=true } = props;\r\n\r\n return (\r\n \r\n {\r\n loggedin ?\r\n \r\n :\r\n \r\n }\r\n\r\n\r\n \r\n );\r\n}\r\n\r\nexport default ContactSupportPopup;","import React,{ useState } from 'react';\r\nimport classNames from 'classnames';\r\nimport aqLogo from \"../assets/img/aq-logo.svg\";\r\nimport { Link } from 'react-router-dom';\r\nimport {PAGE_NAV} from \"configs/page\";\r\nimport useLogout from 'hooks/useLogout';\r\nimport useAuth from 'hooks/useAuth';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faBars, faTimes } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { BrowserView, MobileView } from 'react-device-detect';\r\nimport ContactSupportPopup from \"components/modals/ContactSupportPopup\";\r\n\r\nconst AffiliateHeader = (props) => {\r\n const {history} = props;\r\n const {isLoggedIn} = useAuth();\r\n const logoutProvider = useLogout();\r\n\r\n const onLogoutClicked = (e)=>{\r\n e.preventDefault();\r\n logoutProvider().then(()=>{history.push(PAGE_NAV.LOGIN)});\r\n }\r\n\r\n const [mobileNavOn, setMobileNavOn] = useState(false);\r\n\r\n const [showContactSupportPopup, setShowContactSupportPopup] = useState(false);\r\n\r\n return (\r\n
\r\n

\"Affiliate

\r\n

\r\n \r\n {e.preventDefault();setMobileNavOn(!mobileNavOn);e.stopPropagation()}} />\r\n \r\n

\r\n
\r\n

{e.preventDefault();setMobileNavOn(false)}}>

\r\n \r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default AffiliateHeader;","export default __webpack_public_path__ + \"static/media/rhp-logo-2019.9d854301.svg\";","import React from 'react';\r\n// import classNames from 'classnames';\r\n// import LoginHeader from \"../components/LoginHeader\";\r\n\r\nconst TC = (props) => {\r\n //const {history} = props;\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n

Terms of use

\r\n
\r\n
\r\n \r\n

AFFILIATE PROGRAM AGREEMENT

\r\n\r\n

THIS AGREEMENT (as defined in the definitions section below) is entered into by you the person or entity named in the Application To Join and described in this agreement as the 'Affiliate', 'you' and 'your' and DIGITAL QUARTER PTY LIMITED (ACN 102 421 590) described in this Agreement as 'Digital Quarter', 'us' and 'we' a company duly incorporated in the State of Western Australia, Australia and contains the terms and conditions that apply to your participation in Digital Quarter's affiliate program for RedHotPie ('The Product') \r\n We can change these terms at any time. If we change these terms an online version of these terms and conditions will be updated to reflect those changes and a notice will be displayed in the news section of your affiliate account (logged in) advising that there has been changes and prompting review.

\r\n\r\n

Words with initial capital letters (e.g. 'Application To Join') have the meanings set out in the Definitions Section at the end of this Agreement.

\r\n\r\n \r\n
\r\n
\r\n \r\n );\r\n}\r\n\r\nexport default TC;","import React from 'react';\r\nimport { Modal } from 'react-responsive-modal';\r\nimport TC from 'pages/T&C'\r\n\r\nconst TCPopup = (props) => {\r\n const { open, close } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default TCPopup;","import React, {useState} from 'react';\r\nimport TCPopup from 'components/modals/T&CPopup'\r\nimport { Link } from 'react-router-dom';\r\nimport {PAGE_NAV} from \"configs/page\";\r\nimport { BrowserView, MobileView } from 'react-device-detect';\r\nimport ContactSupportPopup from \"components/modals/ContactSupportPopup\";\r\n\r\nconst FooterLinks = (props) => {\r\n\r\n const {loggedin=false} = props;\r\n\r\n const [showTCPopup, setShowTCPopup] = useState(false);\r\n const [showContactSupportPopup, setShowContactSupportPopup] = useState(false);\r\n\r\n return (\r\n <>\r\n \r\n setShowTCPopup(false)} />\r\n \r\n )\r\n}\r\n\r\nexport default FooterLinks; ","import React from 'react';\r\nimport FooterLinks from 'components/FooterLinks';\r\n// import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\n// import { faFacebookF, faTwitter } from \"@fortawesome/free-brands-svg-icons\";\r\n\r\nconst Footer =(props) => {\r\n const {loggedin=false} = props;\r\n return (\r\n //
\r\n // \r\n //
\r\n
\r\n
\r\n

Copyright 2021 | Affiliate Quarter | All Rights Reserved | Powered by Digital Quarter

\r\n
\r\n\r\n \r\n\r\n {/*
\r\n

e.preventDefault()} className=\"facebook\">

\r\n

e.preventDefault()} className=\"twitter\">

\r\n
*/}\r\n
\r\n )\r\n}\r\n\r\nexport default Footer","import React, {useState} from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport AffiliateHeader from \"components/AffiliateHeader\";\r\nimport rhpLogo from \"assets/img/rhp-logo-2019.svg\";\r\nimport {PAGE_NAV} from \"configs/page\";\r\n// import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\n// import { faFacebookF, faTwitter } from \"@fortawesome/free-brands-svg-icons\"\r\nimport classNames from 'classnames';\r\n// import FooterLinks from 'components/FooterLinks';\r\nimport ContactSupportPopup from \"components/modals/ContactSupportPopup\";\r\nimport { BrowserView, MobileView } from 'react-device-detect';\r\nimport Footer from 'components/Footer';\r\n\r\nconst AffiliateQuarter = (props) => {\r\n\r\n const [showContactSupportPopup, setShowContactSupportPopup] = useState(false);\r\n\r\n return (\r\n
\r\n
\r\n {/*
\r\n

\"Affiliate

\r\n\r\n \r\n
*/}\r\n \r\n

Affiliates Quarter

\r\n

Best online dating affiliate marketing program

\r\n\r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n

What we offer

\r\n
    \r\n
  • Reliable Partner
  • \r\n
  • Strongly Growing Company
  • \r\n
  • Global Audience
  • \r\n
  • Stable Payouts
  • \r\n
\r\n
    \r\n
  • Transparent Reports and Marketing Tools
  • \r\n
  • High Commission Rates
  • \r\n
  • Many Desktop and Mobile Offers
  • \r\n
  • Dedicated Account Management
  • \r\n
\r\n
\r\n
\r\n {/*
\r\n
\r\n

Geneerous payouts

\r\n
\r\n \r\n \r\n
\r\n

e.preventDefault()} title=\"Click to start earning now\">Start earning now

\r\n
\r\n
*/}\r\n
\r\n
\r\n

Our brand

\r\n

\"redhotpie

\r\n
\r\n
\r\n\r\n
\r\n
\r\n

Get in touch

\r\n \r\n \r\n

{event.preventDefault(); setShowContactSupportPopup(true)}} title=\"Click to contact support\">Contact support

\r\n
\r\n \r\n

Contact support

\r\n
\r\n \r\n {/*

Please leave your enquiry or message below and we will be in touch with you shortly.

*/}\r\n {/*
\r\n\r\n
\r\n

\r\n

\r\n

\r\n

\r\n
\r\n \r\n
\r\n

\r\n

\r\n
\r\n
*/}\r\n
\r\n\r\n setShowContactSupportPopup(false)} postProcFunc={()=>{}} loggedin={false} />\r\n
\r\n {/*
\r\n
\r\n

Copyright 2021 | Affiliate Quarter | All Rights Reserved | Powered by Digital Quarter

\r\n
\r\n\r\n \r\n\r\n
\r\n

e.preventDefault()} className=\"facebook\">

\r\n

e.preventDefault()} className=\"twitter\">

\r\n
\r\n
*/}\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default AffiliateQuarter;","import * as Yup from 'yup';\r\nimport valUtils from \"../validations\";\r\nimport { allCountries } from 'country-telephone-data';\r\nimport { isValidPhoneNumber } from 'libphonenumber-js/mobile';\r\n\r\nconst validationSchema = Yup.object().shape({\r\n affiliateName: valUtils.affiliateName(),\r\n email: valUtils.email(), \r\n password: valUtils.password(),\r\n confirmPassword: valUtils.confirmPassword(\"password\"),\r\n phoneCountryCode: Yup.object()\r\n .notRequired().nullable()\r\n //.required('Phone country code is required')\r\n .oneOf(allCountries, \"Please select a country code from the list\"),\r\n phoneNumber: Yup.string()\r\n //.notRequired().nullable()\r\n //.required(\"Phone number is required\")\r\n .matches(/^\\d+$/,{message:'Phone number should have digits only',excludeEmptyString:true})\r\n .test(\"isPhoneNumberValid\", \"Invalid phone number\", function(val){\r\n if(!val) return true;\r\n const {phoneCountryCode} = this.parent;\r\n if(!phoneCountryCode) return true;\r\n const {iso2, dialCode} = phoneCountryCode;\r\n return isValidPhoneNumber(`+${dialCode}${val}`, iso2.toUpperCase());\r\n }),\r\n showWebsite: Yup.bool(),\r\n website: Yup.string().when(['showWebsite'], {\r\n is: (show) => show,\r\n then: Yup.string().required('Url required').url(\"Invalid url\"),\r\n otherwise: Yup.string().notRequired().nullable()\r\n }),\r\n showInstagram: Yup.bool(),\r\n instagram: Yup.string().when(['showInstagram'], {\r\n is: (show) => show,\r\n then: Yup.string().required('Url required').url(\"Invalid url\"),\r\n otherwise: Yup.string().notRequired().nullable()\r\n }),\r\n showTiktok: Yup.bool(),\r\n tiktok: Yup.string().when(['showTiktok'], {\r\n is: (show) => show,\r\n then: Yup.string().required('Url required').url(\"Invalid url\"),\r\n otherwise: Yup.string().notRequired().nullable()\r\n }),\r\n showYoutube: Yup.bool(),\r\n youtube: Yup.string().when(['showYoutube'], {\r\n is: (show) => show,\r\n then: Yup.string().required('Url required').url(\"Invalid url\"),\r\n otherwise: Yup.string().notRequired().nullable()\r\n }),\r\n showFacebook: Yup.bool(),\r\n facebook: Yup.string().when(['showFacebook'], {\r\n is: (show) => show,\r\n then: Yup.string().required('Url required').url(\"Invalid url\"),\r\n otherwise: Yup.string().notRequired().nullable()\r\n }),\r\n showOnlyfans: Yup.bool(),\r\n onlyfans: Yup.string().when(['showOnlyfans'], {\r\n is: (show) => show,\r\n then: Yup.string().required('Url required').url(\"Invalid url\"),\r\n otherwise: Yup.string().notRequired().nullable()\r\n }),\r\n showOther: Yup.bool(),\r\n other: Yup.string().when(['showOther'], {\r\n is: (show) => show,\r\n then: Yup.string().required('Required'),\r\n otherwise: Yup.string().notRequired().nullable()\r\n }),\r\n promoteChannels: Yup.string().test(\"isPromoteChannelsValid\", \"Require at least one promote channel\", function(val){\r\n const {showWebsite, showInstagram, showTiktok, showYoutube, showFacebook, showOnlyfans, showOther} = this.parent;\r\n return (showWebsite || showInstagram || showTiktok || showYoutube || showFacebook || showOnlyfans || showOther)\r\n }) \r\n});\r\n\r\nexport default validationSchema;\r\n","import React, { useEffect, createRef, useCallback } from 'react';\r\nimport { Modal } from 'react-responsive-modal';\r\nimport { allCountries } from 'country-telephone-data';\r\n\r\nconst PhoneCountryCodePopup = (props) => {\r\n const { open, close, setCountryCode, defaultValue } = props;\r\n\r\n const refs = allCountries.reduce((acc, value) => {\r\n acc[value.iso2] = createRef();\r\n return acc;\r\n }, {});\r\n\r\n const handleScrollTo = useCallback(id =>{\r\n if(refs[id] && refs[id].current){\r\n refs[id].current.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'start',\r\n });\r\n }\r\n \r\n }, [refs]);\r\n\r\n useEffect(()=>{\r\n let selCountry;\r\n if(defaultValue)\r\n selCountry = allCountries.find(itm=>itm===defaultValue);\r\n \r\n if(!selCountry)\r\n setTimeout(()=>handleScrollTo(\"au\"), 100);\r\n else\r\n setTimeout(()=>handleScrollTo(selCountry.iso2), 100);\r\n },[defaultValue, handleScrollTo]);\r\n\r\n return (\r\n \r\n

Country code

\r\n
\r\n
    \r\n {\r\n allCountries.map((item) => (\r\n
  • { setCountryCode(item); close() }}>{item.name} +{item.dialCode}
  • \r\n ))\r\n }\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default PhoneCountryCodePopup;","// import auth from 'utils/auth';\r\nimport useService from \"services/auth\";\r\n// import useAccount from \"./useAccount\";\r\nimport useToast from './useToast';\r\nimport useAuthProvider from './useAuthProvider';\r\n\r\nconst useLogin =()=>{\r\n const toast = useToast();\r\n // const accountProvider = useAccount();\r\n const authProvider = useAuthProvider();\r\n const service = useService();\r\n\r\n const handleLoginResponse = async(response, isRegister=false)=>{\r\n const {data} = response;\r\n // console.log(\"data\", data)\r\n authProvider.setAuthTokens(data);\r\n // if(!isRegister){\r\n // return accountProvider.getAccount();\r\n // }\r\n }\r\n\r\n const login = async(data, isRegister=false)=>{\r\n return service.login(data)\r\n .then(response=> handleLoginResponse(response, isRegister))\r\n .catch((error) => {\r\n toast.error(\"Login Failed\", error);\r\n throw error;\r\n })\r\n }\r\n\r\n return {\r\n login\r\n };\r\n}\r\n\r\nexport default useLogin;","import React, {useState} from 'react';\r\nimport { Modal } from 'react-responsive-modal';\r\nimport ButtonWithSpinner from 'components/buttons/ButtonSpinner';\r\n\r\nconst MobileVerify = (props) => {\r\n const {open, close, \r\n onPhoneVerificationClicked, \r\n postProcessFunc,\r\n onRequestResendCode,\r\n showCloseIcon=true} = props;\r\n const [code, setCode] = useState(\"\");\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n\r\n const onGetCodeClicked = async()=>{\r\n if(isSubmitting) return;\r\n setIsSubmitting(true);\r\n \r\n onRequestResendCode()\r\n .then(()=>{})\r\n .finally(()=>setIsSubmitting(false));\r\n }\r\n\r\n const onValidateCodeClicked = async(e)=>{\r\n e.preventDefault();\r\n if(isSubmitting) return;\r\n if(!code) return;\r\n\r\n setIsSubmitting(true);\r\n\r\n onPhoneVerificationClicked(code)\r\n .then((resp)=>{\r\n if(postProcessFunc && typeof postProcessFunc === \"function\"){\r\n postProcessFunc(resp);\r\n }\r\n else {\r\n close();\r\n }\r\n })\r\n .finally(()=>setIsSubmitting(false));\r\n\r\n }\r\n\r\n const onKeyDownHandler = (e) => {\r\n if (e.keyCode === 13) {\r\n // e.preventDefault();\r\n onValidateCodeClicked(e);\r\n }\r\n };\r\n\r\n return (\r\n \r\n

Verify mobile number

\r\n

You should receive a text message
from us in a moment.

\r\n

Please enter the verification code you receive.

\r\n
\r\n
\r\n

{ setCode(e.target.value)}}/>

\r\n

Didn’t receive the text? {e.preventDefault();onGetCodeClicked()}} title=\"Click to get another code\">Get another code

\r\n
\r\n
\r\n

\r\n onValidateCodeClicked(e)} isLoading={isSubmitting} />\r\n {/* onValidateCodeClicked(e)} /> */}\r\n

\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default MobileVerify;","import classNames from 'classnames';\r\nimport React, {useEffect, useState, useRef} from 'react';\r\nimport validationSchema from 'utils/validationSchemas/createAccount';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport { useForm } from \"react-hook-form\";\r\nimport PhoneCountryCodePopup from 'components/modals/PhoneCountryCodePopup';\r\nimport { allCountries } from 'country-telephone-data';\r\nimport useAccount from \"hooks/useAccount\";\r\nimport useLogin from \"hooks/useLogin\";\r\nimport MobileVerify from 'components/modals/PhoneVerification';\r\n// import { useRecoilValue } from 'recoil';\r\n// import regStepAtom from 'recoil/account/regStep';\r\n// import {JOIN_STEP} from \"configs/page\";\r\nimport ButtonWithSpinner from './buttons/ButtonSpinner';\r\nimport TCPopup from 'components/modals/T&CPopup';\r\n\r\nconst RegStepOne = (props) => {\r\n const {handlers} = props;\r\n const {postCreateAccountFunc} = handlers;\r\n // const currentStep = useRecoilValue(regStepAtom);\r\n const ref = useRef();\r\n const accountProvider = useAccount();\r\n const loginProvider = useLogin();\r\n\r\n const {profiles, phoneDetail, promoteChannels} = accountProvider;\r\n const { Name, Email } = profiles;\r\n const { PhoneNumber, PhoneAlpha2Code} = phoneDetail;\r\n const {\r\n PromoteWebsite, PromoteInstagram,PromoteTikTok,\r\n PromoteYoutube, PromoteFacebook, PromoteOnlyFans, PromoteOther,\r\n } = promoteChannels;\r\n\r\n\r\n const { \r\n handleSubmit, \r\n formState: { errors, isSubmitted }, \r\n register,\r\n watch,\r\n setValue,\r\n getValues\r\n } = useForm({ \r\n mode: 'all', \r\n defaultValues: {\r\n affiliateName: Name,\r\n email: Email,\r\n password: '',\r\n phoneNumber: PhoneNumber,\r\n phoneCountryCode: allCountries.find(itm=>itm.iso2=== (PhoneAlpha2Code ? PhoneAlpha2Code.toLowerCase() : \"au\")),\r\n website: PromoteWebsite,\r\n showWebsite: !!PromoteWebsite,\r\n instagram: PromoteInstagram,\r\n showInstagram: !!PromoteInstagram,\r\n tiktok: PromoteTikTok,\r\n showTiktok: !!PromoteTikTok,\r\n youtube: PromoteYoutube,\r\n showYoutube: !!PromoteYoutube,\r\n facebook: PromoteFacebook,\r\n showFacebook: !!PromoteFacebook,\r\n onlyfans: PromoteOnlyFans,\r\n showOnlyfans: !!PromoteOnlyFans,\r\n other: PromoteOther,\r\n showOther: !!PromoteOther\r\n },\r\n resolver: yupResolver(validationSchema) \r\n });\r\n const watchShowWebsite = watch(\"showWebsite\", !!PromoteWebsite);\r\n const watchShowInstagram = watch(\"showInstagram\", !!PromoteInstagram);\r\n const watchShowTiktok = watch(\"showTiktok\", !!PromoteTikTok);\r\n const watchShowYoutube = watch(\"showYoutube\", !!PromoteYoutube);\r\n const watchShowFacebook = watch(\"showFacebook\", !!PromoteFacebook);\r\n const watchShowOnlyfans = watch(\"showOnlyfans\", !!PromoteOnlyFans);\r\n const watchShowOther = watch(\"showOther\", !PromoteOther);\r\n \r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n const [phoneVerifyOpen, setPhoneVerifyOpen] = useState(false);\r\n const [phoneVerificationResult, setPhoneVerificationResult] = useState(null);\r\n \r\n useEffect(()=>{\r\n \r\n if(getValues(\"phoneNumber\")){\r\n setPhoneVerificationResult(null);\r\n }\r\n \r\n }, [getValues, setPhoneVerificationResult])\r\n\r\n \r\n\r\n const [countryCodeOpen, setCountryCodeOpen] = useState(false);\r\n \r\n const setPhoneCountryCode = (pcc)=>{\r\n setValue(\"phoneCountryCode\", pcc);\r\n setValue(\"phoneCountryCodeDisplay\", `+${pcc.dialCode}`)\r\n }\r\n\r\n useEffect(()=>{\r\n const iso2 = PhoneAlpha2Code ? PhoneAlpha2Code.toLowerCase() : \"au\";\r\n const pcc = allCountries.find(itm=>itm.iso2===iso2);\r\n setValue(\"phoneCountryCode\", pcc);\r\n setValue(\"phoneCountryCodeDisplay\", `+${pcc.dialCode}`)\r\n }, [setValue]) // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n // useEffect(()=>{\r\n // if(currentStep === JOIN_STEP.VERIFY_PHONE_NUMBER) setPhoneVerifyOpen(true);\r\n // }, [currentStep])\r\n\r\n useEffect(() => setValue(\"affiliateName\", Name), [Name, setValue]);\r\n useEffect(() => setValue(\"email\", Email), [Email, setValue]);\r\n useEffect(() => setValue(\"phoneNumber\", PhoneNumber), [PhoneNumber, setValue]);\r\n useEffect(() => setValue(\"phoneCountryCode\", allCountries.find(itm=>itm.iso2=== (PhoneAlpha2Code ? PhoneAlpha2Code.toLowerCase() : \"au\"))), [PhoneAlpha2Code, setValue]);\r\n useEffect(() => {\r\n setValue(\"website\", PromoteWebsite);\r\n setValue(\"showWebsite\", !!PromoteWebsite);\r\n }, [PromoteWebsite, setValue]);\r\n useEffect(() => {\r\n setValue(\"instagram\", PromoteInstagram);\r\n setValue(\"showInstagram\", !!PromoteInstagram);\r\n }, [PromoteInstagram, setValue]);\r\n useEffect(() => {\r\n setValue(\"tiktok\", PromoteTikTok);\r\n setValue(\"showTiktok\", !!PromoteTikTok);\r\n }, [PromoteTikTok, setValue]);\r\n useEffect(() => {\r\n setValue(\"youtube\", PromoteYoutube);\r\n setValue(\"showYoutube\", !!PromoteYoutube);\r\n }, [PromoteYoutube, setValue]);\r\n useEffect(() => {\r\n setValue(\"facebook\", PromoteFacebook);\r\n setValue(\"showFacebook\", !!PromoteFacebook);\r\n }, [PromoteFacebook, setValue]);\r\n useEffect(() => { \r\n setValue(\"onlyfans\", PromoteOnlyFans);\r\n setValue(\"showOnlyfans\", !!PromoteOnlyFans);\r\n }, [PromoteOnlyFans, setValue]);\r\n useEffect(() => {\r\n setValue(\"other\", PromoteOther);\r\n setValue(\"showOther\", !!PromoteOther);\r\n }, [PromoteOther, setValue]);\r\n\r\n const onPhoneRequestResendCode = async ()=>{\r\n const phoneNumber = getValues(\"phoneNumber\");\r\n const phoneCountry = getValues(\"phoneCountryCode\");\r\n const {dialCode, iso2} = phoneCountry;\r\n\r\n return accountProvider.requestPhoneCode({PhoneNumber:phoneNumber, PhoneCountryCode:dialCode, PhoneAlpha2Code:iso2});\r\n }\r\n\r\n const onPhoneVerificationClicked = async(code)=>{\r\n const phoneNumber = getValues(\"phoneNumber\");\r\n const phoneCountry = getValues(\"phoneCountryCode\");\r\n const {dialCode, iso2} = phoneCountry;\r\n\r\n const result = await accountProvider.verifyPhone({\r\n VerificationCode: code,\r\n PhoneNumber:phoneNumber, \r\n PhoneCountryCode:dialCode, \r\n PhoneAlpha2Code:iso2});\r\n \r\n setPhoneVerificationResult(result);\r\n setTimeout(()=>{\r\n ref.current.dispatchEvent(\r\n new Event(\"submit\", { cancelable: true, bubbles: true })\r\n );\r\n }, 150) \r\n }\r\n\r\n const postPhoneVerificationSuccessFunc = ()=>{\r\n //setPhoneVerifyOpen(false);\r\n // postPhoneVerificationFunc();\r\n }\r\n\r\n const processCreateAccount = async(frmData, phoneDetails)=>{\r\n if(isSubmitting) return;\r\n setIsSubmitting(true);\r\n\r\n const submittedData = {\r\n Name: frmData.affiliateName,\r\n Email: frmData.email,\r\n Password: frmData.password,\r\n phoneDetails: phoneDetails,\r\n // PhoneDetails: {\r\n // PhoneNumber: frmData.phoneNumber,\r\n // PhoneCountryCode: frmData.phoneCountryCode.dialCode,\r\n // PhoneAlpha2Code: frmData.phoneCountryCode.iso2\r\n // },\r\n PromoteChannels: {\r\n PromoteWebsite: frmData.showWebsite && frmData.website ? frmData.website : '',\r\n PromoteInstagram: frmData.showInstagram && frmData.instagram ? frmData.instagram : '',\r\n PromoteTikTok: frmData.showTiktok && frmData.tiktok ? frmData.tiktok : '',\r\n PromoteYoutube: frmData.showYoutube && frmData.youtube ? frmData.youtube : '',\r\n PromoteFacebook: frmData.showFacebook && frmData.facebook ? frmData.facebook : '',\r\n PromoteOnlyFans: frmData.showOnlyfans && frmData.onlyfans ? frmData.onlyfans : '',\r\n PromoteOther: frmData.showOther && frmData.other ? frmData.other : ''\r\n }\r\n };\r\n accountProvider.createAccount(submittedData)\r\n .then(()=>{\r\n return loginProvider.login({UserName: frmData.email, Password: frmData.password}, true)\r\n .then(()=>{\r\n if(postCreateAccountFunc && typeof postCreateAccountFunc === \"function\")\r\n postCreateAccountFunc();\r\n })\r\n .finally(()=>{\r\n\r\n });\r\n })\r\n .finally(()=>{\r\n setIsSubmitting(false);\r\n });\r\n }\r\n\r\n const onSubmitHandler = async(frmData, e)=>{\r\n e.preventDefault();\r\n\r\n if(!frmData.phoneNumber){\r\n processCreateAccount(frmData, {\r\n PhoneNumber: '',\r\n PhoneCountryCode: '',\r\n PhoneAlpha2Code: ''\r\n });\r\n }\r\n else {\r\n if(phoneVerificationResult){\r\n processCreateAccount(frmData, phoneVerificationResult);\r\n }\r\n else {\r\n onPhoneRequestResendCode().then(()=>{\r\n setPhoneVerifyOpen(true);\r\n });\r\n }\r\n \r\n }\r\n }\r\n\r\n const [showTCPopup, setShowTCPopup] = useState(false);\r\n \r\n return (\r\n <>\r\n
\r\n
\r\n

Start your application

\r\n
\r\n
\r\n\r\n

\r\n \r\n \r\n {errors?.affiliateName?.message}\r\n

\r\n
\r\n
\r\n

\r\n \r\n \r\n \r\n setCountryCodeOpen(true)} readOnly />\r\n \r\n \r\n {errors?.phoneNumber?.message}\r\n

\r\n \r\n

\r\n \r\n \r\n {errors?.email?.message}\r\n

\r\n
\r\n\r\n
\r\n

\r\n \r\n \r\n {errors?.password?.message}\r\n

\r\n

\r\n \r\n \r\n {errors?.confirmPassword?.message}\r\n

\r\n
\r\n
\r\n \r\n
\r\n
\r\n

Where will you promote RedHotPie?

\r\n\r\n

\r\n \r\n \r\n \r\n {\r\n watchShowWebsite &&\r\n \r\n \r\n \r\n {errors?.website?.message && {errors?.website?.message} }\r\n \r\n }\r\n \r\n

\r\n \r\n

\r\n \r\n \r\n \r\n {\r\n watchShowInstagram &&\r\n \r\n \r\n \r\n {errors?.instagram?.message && {errors?.instagram?.message}}\r\n \r\n }\r\n \r\n

\r\n \r\n

\r\n \r\n \r\n \r\n {\r\n watchShowTiktok &&\r\n \r\n \r\n \r\n {errors?.tiktok?.message && {errors?.tiktok?.message} }\r\n \r\n }\r\n \r\n

\r\n \r\n

\r\n \r\n \r\n \r\n {\r\n watchShowYoutube &&\r\n \r\n \r\n \r\n { errors?.youtube?.message && { errors?.youtube?.message} }\r\n \r\n }\r\n \r\n

\r\n \r\n

\r\n \r\n \r\n \r\n {\r\n watchShowFacebook &&\r\n \r\n \r\n \r\n {errors?.facebook?.message && {errors?.facebook?.message} }\r\n \r\n }\r\n \r\n

\r\n \r\n

\r\n \r\n \r\n \r\n {\r\n watchShowOnlyfans &&\r\n \r\n \r\n \r\n {errors?.onlyfans?.message && {errors?.onlyfans?.message} }\r\n \r\n }\r\n \r\n

\r\n \r\n

\r\n \r\n \r\n \r\n {\r\n watchShowOther &&\r\n \r\n \r\n \r\n {errors?.other?.message && {errors?.other?.message} }\r\n \r\n }\r\n \r\n

\r\n \r\n { isSubmitted && !watchShowWebsite && !watchShowInstagram && !watchShowTiktok && !watchShowYoutube && !watchShowFacebook && !watchShowOnlyfans && !watchShowOther && errors?.promoteChannels?.message &&

{errors?.promoteChannels?.message}

}\r\n
\r\n\r\n \r\n\r\n

By signing up you agree to the {e.preventDefault();setShowTCPopup(true)}} title=\"Click to find out more\">Terms of service & Privacy policy

\r\n setShowTCPopup(false)} />\r\n
\r\n
\r\n\r\n
\r\n

\r\n \r\n

\r\n
\r\n\r\n
\r\n {\r\n countryCodeOpen && setCountryCodeOpen(false)} setCountryCode={setPhoneCountryCode} defaultValue={getValues(\"phoneCountryCode\")} />\r\n }\r\n {\r\n phoneVerifyOpen &&\r\n setPhoneVerifyOpen(false)} \r\n postProcessFunc={postPhoneVerificationSuccessFunc} \r\n onPhoneVerificationClicked={onPhoneVerificationClicked} \r\n onRequestResendCode={onPhoneRequestResendCode} />\r\n }\r\n \r\n \r\n );\r\n\r\n}\r\n\r\nexport default RegStepOne;","const Keys = {\r\n Lookup : {\r\n Country: \"countryLookupSelector\",\r\n StatDates: \"statDatesLookupSelector\"\r\n },\r\n Statistic : {\r\n Campaigns: \"statisticCampaignsSelector\",\r\n EarningsSummary: \"statisticEarningsSummarySelector\",\r\n }\r\n \r\n}\r\n\r\nexport default Keys;","import {atom, selector} from \"recoil\";\r\nimport keys from \"configs/atoms\";\r\nimport selectorKeys from \"configs/selectors\";\r\nimport service from \"services/lookup\"\r\n\r\nconst lookupCountrySelector = selector({\r\n key: selectorKeys.Lookup.Country,\r\n get: async()=> {\r\n const response = await service.getLookupCountry();\r\n return response.data;\r\n } \r\n});\r\n\r\nconst lookupCountryAtom = atom(({\r\n key: keys.Lookup.Country,\r\n default: lookupCountrySelector\r\n}));\r\n\r\nexport default lookupCountryAtom;","import {atom} from \"recoil\";\r\nimport keys from \"configs/atoms\";\r\n\r\nconst lookupCurrencyAtom = atom(({\r\n key: keys.Lookup.Currency,\r\n default: [\"AUD\"]\r\n}));\r\n\r\nexport default lookupCurrencyAtom;","import * as Yup from 'yup';\r\n\r\nconst validationSchema = Yup.object().shape({\r\n paymentType: Yup.string().required(\"Please select one of payment options\"),\r\n paypal: Yup.string()\r\n .when(['paymentType'], {\r\n is: (payment) => payment===\"Paypal\",\r\n then: Yup.string().required('Please enter paypal account'),\r\n otherwise: Yup.string().notRequired().nullable()\r\n }),\r\n payID: Yup.string()\r\n .when(['paymentType'], {\r\n is: (payment) => payment===\"PayID\",\r\n then: Yup.string().required('Please enter your PayID'),\r\n otherwise: Yup.string().notRequired().nullable()\r\n }),\r\n countryID: Yup.number()\r\n .test(\"isCountryValid\", \"Please select country\", function(val){\r\n const {paymentType} = this.parent;\r\n if(paymentType !== \"DirectDeposit\") return true;\r\n return val && parseInt(val) > 0;\r\n }),\r\n programID: Yup.number()\r\n .required('Required')\r\n .test('Is positive?', 'Required',(value) => value > 0),\r\n currency: Yup.string().test(\"isCurrencyValid\", \"Please select currency\", function(val){\r\n const {paymentType, countryID} = this.parent;\r\n if(paymentType !== \"DirectDeposit\") return true;\r\n if(!countryID || parseInt(countryID) < 1 || parseInt(countryID) === 1) return true;\r\n return val.trim();\r\n }),\r\n bankName: Yup.string().test(\"isBankNameValid\", \"Required\", function(val){\r\n const {paymentType} = this.parent;\r\n if(paymentType !== \"DirectDeposit\") return true;\r\n return val.trim();\r\n }),\r\n accountName: Yup.string().test(\"isAccountNameValid\", \"Required\", function(val){\r\n const {paymentType} = this.parent;\r\n if(paymentType !== \"DirectDeposit\") return true;\r\n return val.trim();\r\n }),\r\n accountNumber: Yup.string().test(\"isAccountNumberValid\", \"Required\", function(val){\r\n const {paymentType, countryID} = this.parent;\r\n if(paymentType !== \"DirectDeposit\") return true;\r\n if(!countryID || parseInt(countryID) < 1 || parseInt(countryID) > 1) return true;\r\n return val.trim();\r\n }),\r\n bsb: Yup.string()\r\n .test(\"isBsbExists\", \"Required\", function(val){\r\n const {paymentType, countryID} = this.parent;\r\n if(paymentType !== \"DirectDeposit\") return true;\r\n if(!countryID || parseInt(countryID) < 1 || parseInt(countryID) > 1) return true;\r\n return val.trim();\r\n })\r\n .test(\"isBsbValid\", \"Invalid BSB\", function(val){\r\n const {paymentType, countryID} = this.parent;\r\n if(paymentType !== \"DirectDeposit\") return true;\r\n if(!countryID || parseInt(countryID) < 1 || parseInt(countryID) > 1 || !val) return true;\r\n return val.trim().match(/^\\d{3}(-?|\\s?)\\d{3}$/);\r\n }),\r\n iban: Yup.string().test(\"isIbanValid\", \"Required\", function(val){\r\n const {paymentType, countryID} = this.parent;\r\n if(paymentType !== \"DirectDeposit\") return true;\r\n if(!countryID || parseInt(countryID) < 1 || parseInt(countryID)=== 1) return true;\r\n return val.trim();\r\n }),\r\n swiftCode: Yup.string().test(\"isSwiftValid\", \"Required\", function(val){\r\n const {paymentType, countryID} = this.parent;\r\n if(paymentType !== \"DirectDeposit\") return true;\r\n if(!countryID || parseInt(countryID) < 1 || parseInt(countryID) === 1) return true;\r\n return val.trim();\r\n })\r\n});\r\n\r\nexport default validationSchema;\r\n","import {atom} from \"recoil\";\r\nimport keys from \"configs/atoms\";\r\n\r\nconst lookupStatsDatesAtom = atom(({\r\n key: keys.Lookup.StatDates,\r\n default: []//lookupStatsDatesSelector\r\n}));\r\n\r\nexport default lookupStatsDatesAtom;","import {atom} from \"recoil\";\r\nimport keys from \"configs/atoms\";\r\n\r\nconst lookupAffiliateProgramsAtom = atom(({\r\n key: keys.Lookup.AffiliatePrograms,\r\n default: []\r\n}));\r\n\r\nexport default lookupAffiliateProgramsAtom;","import lookupStatsDatesAtom from \"recoil/lookup/statsDates\";\r\nimport lookupLandingPagesAtom from \"recoil/lookup/landingPages\";\r\nimport lookupAffiliateProgramsAtom from \"recoil/lookup/affiliatePrograms\";\r\nimport { useRecoilValue, useRecoilCallback } from \"recoil\";\r\nimport service from \"services/lookup\"\r\nimport useToast from \"./useToast\";\r\nimport { useEffect, useState,useRef } from \"react\";\r\n\r\nconst useLookup = ()=>{\r\n const toast = useToast();\r\n const statDates = useRecoilValue(lookupStatsDatesAtom);\r\n const landingPages = useRecoilValue(lookupLandingPagesAtom);\r\n const affiliatePrograms = useRecoilValue(lookupAffiliateProgramsAtom);\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n const [isFetchingPrograms, setIsFetchingPrograms] = useState(false);\r\n const mountedRef = useRef(true);\r\n\r\n useEffect(() => {\r\n return () => { \r\n mountedRef.current = false\r\n }\r\n }, []);\r\n\r\n const getLandingPages = useRecoilCallback(({ set }) => async()=>{\r\n return service.getLookupLandingPages()\r\n .then(response=>{\r\n set(lookupLandingPagesAtom, response.data);\r\n })\r\n .catch((error) => {\r\n toast.error(\"Failed retrieving landing page data\", error);\r\n throw error;\r\n });\r\n });\r\n \r\n const getDateRange = useRecoilCallback(({ set }) => async()=>{\r\n return service.getLookup(\"DateRange\")\r\n .then(response=>{\r\n set(lookupStatsDatesAtom, response.data);\r\n })\r\n .catch((error) => {\r\n toast.error(\"Failed retrieving date range data\", error);\r\n throw error;\r\n });\r\n });\r\n\r\n const getPrograms = useRecoilCallback(({ set }) => async()=>{\r\n return service.getLookup(\"AffiliateProgram\")\r\n .then(response=>{\r\n set(lookupAffiliateProgramsAtom, response.data);\r\n })\r\n .catch((error) => {\r\n toast.error(\"Failed retrieving affiliate programs data\", error);\r\n throw error;\r\n });\r\n });\r\n \r\n useEffect(()=>{\r\n if(isFetchingPrograms) return;\r\n if(!affiliatePrograms || affiliatePrograms.length === 0) {\r\n mountedRef.current && setIsFetchingPrograms(true);\r\n getPrograms().finally(()=> mountedRef.current && setIsFetchingPrograms(false));\r\n }\r\n }, [affiliatePrograms, getPrograms, isFetchingPrograms, setIsFetchingPrograms]); \r\n\r\n useEffect(()=>{\r\n if(isSubmitting) return;\r\n if(!statDates || statDates.length === 0) {\r\n mountedRef.current && setIsSubmitting(true);\r\n getDateRange().finally(()=> mountedRef.current && setIsSubmitting(false));\r\n }\r\n }, [statDates, getDateRange, isSubmitting, setIsSubmitting]);\r\n\r\n return {\r\n statDates,\r\n landingPages,\r\n affiliatePrograms,\r\n getLandingPages\r\n }\r\n}\r\n\r\nexport default useLookup;","import React from 'react';\r\nimport { Modal } from 'react-responsive-modal';\r\n\r\nconst ConfirmPopup = (props) => {\r\n const { open, close, confirm, heading, sub, children, btnText=\"Ok\" } = props;\r\n\r\n return (\r\n \r\n {\r\n heading &&

{heading}

\r\n }\r\n {\r\n sub &&

{sub}

\r\n }\r\n {\r\n children && \r\n
\r\n {children}\r\n
\r\n }\r\n
\r\n

{e.preventDefault(); confirm();}} title=\"Click to confirm\">{btnText}

\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default ConfirmPopup;","import classNames from 'classnames';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { useForm } from \"react-hook-form\";\r\nimport useAccount from \"hooks/useAccount\";\r\nimport { useRecoilValueLoadable, useRecoilValue } from 'recoil';\r\nimport lookupCountryAtom from 'recoil/lookup/country';\r\nimport lookupCurrencyAtom from 'recoil/lookup/currency';\r\nimport validationSchema from 'utils/validationSchemas/paymentInfo';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport ButtonWithSpinner from './buttons/ButtonSpinner';\r\nimport useLookup from 'hooks/useLookup';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport {faInfoCircle } from \"@fortawesome/free-solid-svg-icons\";\r\nimport ConfirmPopup from 'components/modals/ConfirmPopup';\r\nimport TCPopup from 'components/modals/T&CPopup';\r\n\r\nconst RegStepTwo = (props) => {\r\n const lookupProvider = useLookup();\r\n const {affiliatePrograms} = lookupProvider;\r\n const {handlers, display, clx} = props;\r\n const {saveText=\"Save\", showHeading=true} = display;\r\n const {postUpdatePaymentInfo} = handlers;\r\n const accountProvider = useAccount();\r\n const { paymentInfo, bankDetails } = accountProvider;\r\n const { AffiliatePaymentTypeID, Paypal, PaymentID, ProgramID } = paymentInfo;\r\n \r\n const {\r\n BankName,\r\n AccountName,\r\n AccountNumber, //for au\r\n BSBNumber, //for au\r\n SwiftCode, //for intl\r\n IBAN, //for intl\r\n Currency,\r\n CountryID\r\n } = bankDetails;\r\n const [countryList, setCountryList] = useState([]);\r\n const countryListLoadable = useRecoilValueLoadable(lookupCountryAtom); //todo: put this in uselookup\r\n const topCountries = [1, 72, 213, 2, 34];\r\n const currencyList = useRecoilValue(lookupCurrencyAtom);\r\n const { state: countryListState, contents: countryListContent } = countryListLoadable;\r\n\r\n useEffect(() => {\r\n switch (countryListState) {\r\n case \"hasValue\":\r\n setCountryList(countryListContent);\r\n break;\r\n case \"hasError\":\r\n // toast.error(\"Failed to load club's category\", catsContent);\r\n break;\r\n case \"loading\":\r\n\r\n break;\r\n default:\r\n\r\n break;\r\n\r\n }\r\n }, [countryListState, countryListContent]) // eslint-disable-line react-hooks/exhaustive-deps\r\n \r\n const {\r\n handleSubmit,\r\n formState: { errors },\r\n register,\r\n watch,\r\n setValue\r\n \r\n } = useForm({\r\n defaultValues: {\r\n paymentType: AffiliatePaymentTypeID,\r\n paypal: Paypal,\r\n payID: PaymentID,\r\n countryID: CountryID,\r\n currency: Currency,\r\n bankName: BankName,\r\n accountName: AccountName,\r\n accountNumber: AccountNumber,\r\n bsb: BSBNumber,\r\n iban: IBAN,\r\n swiftCode: SwiftCode,\r\n programID: affiliatePrograms.find(p=>p.ItemID === ProgramID) ? ProgramID : -1\r\n },\r\n resolver: yupResolver(validationSchema)\r\n });\r\n\r\n const watchPaymentType = watch(\"paymentType\", AffiliatePaymentTypeID);\r\n const wacthCountryID = watch(\"countryID\", -1);\r\n \r\n useEffect(() => setValue(\"paymentType\", AffiliatePaymentTypeID), [AffiliatePaymentTypeID, setValue]);\r\n useEffect(() => setValue(\"paypal\", Paypal), [Paypal, setValue]);\r\n useEffect(() => setValue(\"payID\", PaymentID), [PaymentID, setValue]);\r\n useEffect(() => setValue(\"countryID\", CountryID), [CountryID, setValue]);\r\n useEffect(() => {\r\n if(affiliatePrograms.find(p=>p.ItemID === ProgramID))\r\n setValue(\"programID\", ProgramID)\r\n }, [ProgramID, affiliatePrograms, setValue]);\r\n useEffect(() => setValue(\"currency\", Currency), [Currency, setValue]);\r\n useEffect(() => setValue(\"bankName\", BankName), [BankName, setValue]);\r\n useEffect(() => setValue(\"accountName\", AccountName), [AccountName, setValue]);\r\n useEffect(() => setValue(\"accountNumber\", AccountNumber), [AccountNumber, setValue]);\r\n useEffect(() => setValue(\"bsb\", BSBNumber), [BSBNumber, setValue]);\r\n useEffect(() => setValue(\"iban\", IBAN), [IBAN, setValue]);\r\n useEffect(() => setValue(\"swiftCode\", SwiftCode), [SwiftCode, setValue]);\r\n\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n\r\n const onSubmitHandler = async (frmData, e) => {\r\n e.preventDefault();\r\n \r\n if(isSubmitting) return;\r\n setIsSubmitting(true);\r\n\r\n const submittedData = {\r\n AffiliatePaymentTypeID: frmData.paymentType,\r\n PaymentID: frmData.payID,\r\n Paypal: frmData.paypal,\r\n BankDetails: {\r\n BSBNumber: frmData.bsb,\r\n BankName: frmData.bankName,\r\n SwiftCode: frmData.swiftCode,\r\n AccountName: frmData.accountName,\r\n AccountNumber: frmData.accountNumber,\r\n IBAN: frmData.iban,\r\n CountryID: frmData.countryID,\r\n Currency: frmData.countryID === 1 ? \"AUD\" : frmData.currency\r\n }, \r\n ProgramID : frmData.programID\r\n }\r\n\r\n accountProvider.updatePaymentInfo(submittedData)\r\n .then(()=>{\r\n if(postUpdatePaymentInfo && typeof postUpdatePaymentInfo === \"function\"){\r\n postUpdatePaymentInfo();\r\n }\r\n })\r\n .finally(()=>{\r\n setIsSubmitting(false);\r\n });\r\n }\r\n\r\n const [afPrgmComfirmPopup, setAfPrgmComfirmPopup] = useState(false);\r\n \r\n const [showTCPopup, setShowTCPopup] = useState(false);\r\n\r\n return (\r\n
\r\n
\r\n {showHeading &&

How would you like to get paid?

}\r\n\r\n { \r\n (parseInt(ProgramID) > 0) && affiliatePrograms.find(p=> p.ItemID === ProgramID)\r\n ?\r\n
\r\n

Your account is on the {affiliatePrograms.find(p=> parseInt(p.ItemID) === parseInt(ProgramID)).ItemName} program setAfPrgmComfirmPopup(true)} >

\r\n setAfPrgmComfirmPopup(false)}\r\n confirm={afPrgmComfirmPopup}\r\n heading={\"Your account is on the \" + affiliatePrograms.find(p=> parseInt(p.ItemID) === parseInt(ProgramID)).ItemName + \"program\"}\r\n btnText=\"Ok, got it\">\r\n {\r\n ProgramID === 10 \r\n ?\r\n

You will get 50% share of any purchases made from the people you send to our platform.

\r\n : ProgramID === 12 \r\n ?\r\n

You will get $3 for each person that you send to our platform and they complete the registration form.

\r\n : \r\n

You will get $10 for each person that you send to our platform and they make a purchase.

\r\n\r\n }\r\n

There are a few rules that apply, so please read the {e.preventDefault();setShowTCPopup(true)}} title=\"Click to find out more\">Terms & conditions.

\r\n

If you'd like to subscribe to a different program, you'll need to create a new account.

\r\n setShowTCPopup(false)} />\r\n
\r\n
\r\n :
\r\n

Select your affiliate program

\r\n
\r\n {\r\n affiliatePrograms.map((program, i)=>\r\n

\r\n \r\n \r\n \r\n

\r\n )\r\n }\r\n {errors?.programID?.message && {errors?.programID?.message}}\r\n
\r\n
\r\n }\r\n \r\n
\r\n

Select payment method

\r\n
\r\n

\r\n \r\n \r\n \r\n {\r\n watchPaymentType === \"PayPal\" &&\r\n \r\n \r\n \r\n {errors?.paypal?.message && {errors?.paypal?.message}}\r\n \r\n }\r\n\r\n

\r\n\r\n

\r\n \r\n \r\n\r\n \r\n {\r\n watchPaymentType === \"PayID\" &&\r\n \r\n \r\n \r\n {errors?.payID?.message && {errors?.payID?.message}}\r\n \r\n }\r\n\r\n

\r\n\r\n

\r\n \r\n \r\n \r\n\r\n {\r\n watchPaymentType === \"DirectDeposit\" &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {errors?.countryID?.message && {errors?.countryID?.message}}\r\n \r\n \r\n\r\n {\r\n wacthCountryID > 1 &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n {errors?.countryID?.message && {errors?.countryID?.message}}\r\n \r\n \r\n }\r\n\r\n\r\n \r\n \r\n \r\n {errors?.bankName?.message && {errors?.bankName?.message}}\r\n \r\n\r\n \r\n \r\n \r\n {errors?.accountName?.message && {errors?.accountName?.message}}\r\n \r\n {\r\n wacthCountryID > 1 &&\r\n <>\r\n \r\n \r\n \r\n {errors?.swiftCode?.message && {errors?.swiftCode?.message}}\r\n \r\n\r\n \r\n \r\n \r\n {errors?.iban?.message && {errors?.iban?.message}}\r\n \r\n \r\n }\r\n\r\n {\r\n wacthCountryID && parseInt(wacthCountryID) === 1 &&\r\n <>\r\n \r\n \r\n \r\n {errors?.bsb?.message && {errors?.bsb?.message}}\r\n \r\n\r\n \r\n \r\n \r\n {errors?.accountNumber?.message && {errors?.accountNumber?.message}}\r\n \r\n \r\n }\r\n \r\n }\r\n

\r\n

Please select option

\r\n
\r\n
\r\n
\r\n
\r\n

\r\n \r\n

\r\n
\r\n
\r\n\r\n );\r\n\r\n}\r\n\r\nexport default RegStepTwo;","import * as Yup from 'yup';\r\nimport isValidABN from \"is-valid-abn\";\r\n\r\nconst validationSchema = Yup.object().shape({\r\n billingName: Yup.string().trim().required(\"Required\"),\r\n address: Yup.string().trim().required(\"Required\"),\r\n address2: Yup.string().notRequired().nullable(),\r\n city: Yup.string().trim().required(\"Required\"),\r\n stateID: Yup.number()\r\n .test(\"isStateValid\", \"Please select state\", function(val){\r\n return val && parseInt(val) > 0;\r\n }),\r\n countryID: Yup.number()\r\n .test(\"isCountryValid\", \"Please select country\", function(val){\r\n return val && parseInt(val) > 0;\r\n }),\r\n abn: Yup.string()\r\n .test(\"abnRequired\", \"Required\", function(val){\r\n const {countryID} = this.parent;\r\n if(!countryID || parseInt(countryID) < 1 || parseInt(countryID) > 1) return true;\r\n return val.trim();\r\n })\r\n .test(\"isValidABN\", \"Invalid ABN\", function(val){\r\n const {countryID} = this.parent;\r\n if(!countryID || parseInt(countryID) < 1 || parseInt(countryID) > 1 || !val) return true;\r\n return isValidABN(val.trim());\r\n }),\r\n gst: Yup.bool(),\r\n});\r\n\r\nexport default validationSchema;\r\n","import classNames from 'classnames';\r\nimport React, { useState, useEffect } from 'react';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faChevronLeft } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { useRecoilValueLoadable } from 'recoil';\r\nimport lookupCountryAtom from 'recoil/lookup/country';\r\nimport { useForm } from \"react-hook-form\";\r\nimport lookupService from 'services/lookup';\r\nimport validationSchema from 'utils/validationSchemas/billingInfo';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport useAccount from \"hooks/useAccount\";\r\nimport ButtonWithSpinner from './buttons/ButtonSpinner';\r\n\r\nconst RegStepThree = (props) => {\r\n const {handlers, display, clx} = props;\r\n const {showBackButton=false, saveText=\"Save\", showHeading=true} = display;\r\n const {postUpdateBillingInfo, onBackButtonClicked} = handlers;\r\n const accountProvider = useAccount();\r\n const [countryList, setCountryList] = useState([]);\r\n const [stateList, setStateList] = useState([]);\r\n const countryListLoadable = useRecoilValueLoadable(lookupCountryAtom);\r\n const { state: countryListState, contents: countryListContent } = countryListLoadable;\r\n const { billingInfo, bankDetails } = accountProvider;\r\n const topCountries = [1, 72, 213, 2, 34];\r\n const { BillingName,\r\n Address,\r\n Address2,\r\n City,\r\n StateID,\r\n CountryID,\r\n ABN, // for au\r\n GST\r\n } = billingInfo;\r\n\r\n const { CountryID: BankCountryID } = bankDetails;\r\n\r\n useEffect(() => {\r\n switch (countryListState) {\r\n case \"hasValue\":\r\n setCountryList(countryListContent);\r\n break;\r\n case \"hasError\":\r\n // toast.error(\"Failed to load club's category\", catsContent);\r\n break;\r\n case \"loading\":\r\n\r\n break;\r\n default:\r\n\r\n break;\r\n\r\n }\r\n }, [countryListState, countryListContent]) // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n const populateStateList = async (cid) => {\r\n if (cid < 1) setStateList([]);\r\n\r\n lookupService.getLookupState(parseInt(cid))\r\n .then(response => setStateList(response.data))\r\n .catch((error) => {\r\n throw error;\r\n //return toast.error(\"Failed create account\", error);\r\n });\r\n }\r\n\r\n const {\r\n handleSubmit,\r\n formState: { errors },\r\n register,\r\n watch,\r\n setValue,\r\n \r\n } = useForm({\r\n defaultValues: {\r\n billingName: BillingName,\r\n address: Address,\r\n address2: Address2,\r\n city: City,\r\n stateID: StateID,\r\n countryID: CountryID > 0 ? CountryID : BankCountryID,\r\n abn: ABN,\r\n gst: GST\r\n },\r\n resolver: yupResolver(validationSchema)\r\n });\r\n\r\n const wacthCountryID = watch(\"countryID\", CountryID > 0 ? CountryID : BankCountryID);\r\n\r\n const onCountryChanged = (e) => {\r\n setValue(\"stateID\", -1);\r\n populateStateList(e.target.value);\r\n }\r\n\r\n \r\n\r\n useEffect(() => setValue(\"billingName\", BillingName), [BillingName, setValue]);\r\n useEffect(() => setValue(\"address\", Address), [Address, setValue]);\r\n useEffect(() => setValue(\"address2\", Address2), [Address2, setValue]);\r\n useEffect(() => setValue(\"city\", City), [City, setValue]);\r\n useEffect(() => setValue(\"stateID\", StateID), [StateID, setValue]);\r\n useEffect(() => setValue(\"countryID\", CountryID), [CountryID, setValue]);\r\n useEffect(() => setValue(\"abn\", ABN), [ABN, setValue]);\r\n useEffect(() => setValue(\"gst\", GST), [GST, setValue]);\r\n\r\n useEffect(() => {\r\n if (CountryID > 0) {\r\n populateStateList(CountryID);\r\n }\r\n else if (BankCountryID > 0) {\r\n populateStateList(BankCountryID);\r\n }\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n const handleBackStep = () => {\r\n if(onBackButtonClicked && typeof onBackButtonClicked === \"function\") onBackButtonClicked();\r\n }\r\n\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n\r\n const onSubmitHandler = async (frmData, e) => {\r\n e.preventDefault();\r\n \r\n if(isSubmitting) return;\r\n setIsSubmitting(true);\r\n\r\n const submittedData = {\r\n BillingName: frmData.billingName,\r\n Address: frmData.address,\r\n Address2: frmData.address2,\r\n City: frmData.city,\r\n StateID: frmData.stateID,\r\n CountryID: frmData.countryID,\r\n ABN: frmData.countryID===1 ? frmData.abn : '', // for au\r\n GST: frmData.gst\r\n }\r\n\r\n accountProvider.updateBillingInfo(submittedData)\r\n .then(()=>{\r\n if(postUpdateBillingInfo && typeof postUpdateBillingInfo ===\"function\")\r\n postUpdateBillingInfo();\r\n })\r\n .finally(()=>{\r\n setIsSubmitting(false);\r\n });\r\n }\r\n\r\n return (\r\n
\r\n
\r\n {showHeading &&

Billing information

}\r\n\r\n
\r\n\r\n

\r\n \r\n \r\n {errors?.billingName?.message && {errors?.billingName?.message}}\r\n

\r\n\r\n

\r\n \r\n \r\n \r\n \r\n {errors?.countryID?.message && {errors?.countryID?.message}}\r\n

\r\n\r\n\r\n

\r\n \r\n \r\n {errors?.address?.message && {errors?.address?.message}}\r\n\r\n

\r\n

\r\n \r\n

\r\n\r\n

\r\n \r\n \r\n {errors?.city?.message && {errors?.city?.message}}\r\n

\r\n\r\n

\r\n \r\n \r\n \r\n \r\n {errors?.stateID?.message && {errors?.stateID?.message}}\r\n

\r\n {\r\n wacthCountryID && parseInt(wacthCountryID)===1 &&\r\n <>\r\n

\r\n \r\n \r\n {errors?.abn?.message && {errors?.abn?.message}}\r\n

\r\n\r\n

\r\n \r\n \r\n \r\n

\r\n \r\n }\r\n \r\n\r\n
\r\n
\r\n
\r\n {\r\n showBackButton &&\r\n

{ e.preventDefault(); handleBackStep() }}> Back

\r\n }\r\n

\r\n \r\n

\r\n
\r\n
\r\n\r\n );\r\n\r\n}\r\n\r\nexport default RegStepThree;","import useAccount from \"./useAccount\";\r\nimport useAuth from './useAuth';\r\nimport { useEffect, useState } from 'react';\r\nimport {JOIN_STEP} from \"configs/page\";\r\nimport { useRecoilState } from 'recoil';\r\nimport regStepAtom from 'recoil/account/regStep';\r\nimport auth from 'utils/auth';\r\n\r\nconst useRegSteps = ()=>{\r\n const [currentStep, setCurrentStep] = useRecoilState(regStepAtom);\r\n const isLoggedInAuth = auth.isLoggedIn()\r\n const accountProvider = useAccount();\r\n const {accountLoaded} = useAuth();\r\n const [isFetching, setIsFetching] = useState(false);\r\n const [isLoaded, setIsLoaded] = useState(false);\r\n \r\n useEffect(()=>{\r\n if(isLoggedInAuth){\r\n if(!accountLoaded){\r\n if(!isFetching){\r\n setIsFetching(true);\r\n accountProvider.getAccount().then(()=>setIsFetching(false));\r\n }\r\n \r\n }\r\n else if(!isLoaded) {\r\n setIsLoaded(true);\r\n const {paymentInfo,\r\n bankDetails,\r\n profiles,\r\n // phoneDetail,\r\n billingInfo\r\n } = accountProvider;\r\n \r\n const {Name, Email} = profiles;\r\n // const {PhoneNumber, PhoneVerified} = phoneDetail\r\n \r\n if(!Name || !Email ){//|| !PhoneNumber){\r\n setCurrentStep(JOIN_STEP.CREATE_ACCOUNT);\r\n }\r\n // else if(!PhoneVerified){\r\n // setCurrentStep(JOIN_STEP.VERIFY_PHONE_NUMBER);\r\n // }\r\n else {\r\n \r\n const {AffiliatePaymentTypeID, Paypal, PaymentID} = paymentInfo;\r\n // console.log(\"AffiliatePaymentTypeID\",AffiliatePaymentTypeID)\r\n const {BankName} = bankDetails;\r\n \r\n if(\r\n (AffiliatePaymentTypeID === \"Paypal\" && !Paypal)\r\n || (AffiliatePaymentTypeID === \"PayID\" && !PaymentID)\r\n || (AffiliatePaymentTypeID === \"DirectDeposit\" && !BankName)\r\n ){\r\n setCurrentStep(JOIN_STEP.PAYMENT_INFO);\r\n }\r\n else {\r\n const {BillingName} = billingInfo;\r\n if(!BillingName){\r\n setCurrentStep(JOIN_STEP.BILLING_INFO);\r\n }\r\n else {\r\n setCurrentStep(JOIN_STEP.DONE);\r\n }\r\n }\r\n }\r\n }\r\n \r\n }\r\n return ()=>{}\r\n },[isLoggedInAuth, accountLoaded, setCurrentStep, accountProvider, isFetching, setIsFetching, isLoaded, setIsLoaded]);\r\n\r\n return [currentStep, setCurrentStep];\r\n}\r\n\r\nexport default useRegSteps;","import React, { useEffect } from 'react';\r\nimport AffiliateHeader from \"../components/AffiliateHeader\";\r\nimport CreateAccountForm from 'components/CreateAccountForm';\r\nimport RegStepTwo from 'components/PaymentInfoForm';\r\nimport RegStepThree from 'components/BillingInfoForm';\r\nimport {JOIN_STEP, PAGE_NAV} from \"configs/page\";\r\nimport useRegSteps from 'hooks/useRegSteps';\r\nimport Footer from \"components/Footer\";\r\n// import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\n// import { faChevronLeft } from \"@fortawesome/free-solid-svg-icons\";\r\n\r\n\r\nconst AffiliateReg = (props) => {\r\n const {history} = props;\r\n const [currentStep, setCurrentStep] = useRegSteps(); //useRecoilState(regStepAtom);\r\n\r\n const postCreateAccountFunc = ()=>{\r\n // setCurrentStep(JOIN_STEP.VERIFY_PHONE_NUMBER);\r\n setCurrentStep(JOIN_STEP.PAYMENT_INFO);\r\n }\r\n\r\n const postPhoneVerificationFunc = ()=>{\r\n // setCurrentStep(JOIN_STEP.PAYMENT_INFO);\r\n }\r\n\r\n const postUpdatePaymentInfo = ()=>{\r\n setCurrentStep(JOIN_STEP.BILLING_INFO);\r\n }\r\n\r\n const postUpdateBillingInfo = ()=>{\r\n setCurrentStep(JOIN_STEP.DONE);\r\n history.push(PAGE_NAV.DASHBOARD);\r\n }\r\n\r\n const handleBackFromBillingInfo = ()=>{\r\n setCurrentStep(JOIN_STEP.PAYMENT_INFO);\r\n }\r\n\r\n useEffect(()=>{\r\n if(currentStep === JOIN_STEP.DONE){\r\n history.push(PAGE_NAV.DASHBOARD);\r\n }\r\n }, [currentStep, history])\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n {(currentStep === JOIN_STEP.CREATE_ACCOUNT || currentStep === JOIN_STEP.VERIFY_PHONE_NUMBER) && } \r\n { currentStep === JOIN_STEP.PAYMENT_INFO && }\r\n {currentStep === JOIN_STEP.BILLING_INFO && }\r\n \r\n \r\n {/*
\r\n {currentStep !== 1 &&

{e.preventDefault(); handleBackStep()}}> Back

}\r\n

{e.preventDefault(); handleNextStep()}}>Next

\r\n
*/}\r\n \r\n {/* */}\r\n\r\n\r\n
\r\n

Open a live affiliate account

\r\n
    \r\n
  1. \r\n

    Start your application

    \r\n

    Fill in your details using the form on this page. Our website is encrypted to secure your personal information

    \r\n
  2. \r\n
  3. \r\n

    How would you like to get paid?

    \r\n

    Fill in your details using the form on this page. Our website is encrypted to secure your personal information

    \r\n
  4. \r\n
  5. \r\n

    Billing information

    \r\n

    Fill in your details using the form on this page. Our website is encrypted to secure your personal information

    \r\n
  6. \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default AffiliateReg;","import React from 'react';\r\nimport aqLogo from \"../assets/img/aq-logo-black.png\";\r\nimport { Link } from 'react-router-dom';\r\nimport {PAGE_NAV} from \"configs/page\";\r\n\r\nconst LoginHeader = () => {\r\n return (\r\n
\r\n

\"Affiliate

\r\n
\r\n );\r\n}\r\n\r\nexport default LoginHeader;","export default \"data:image/png;base64,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\"","import React, {useState} from 'react';\r\nimport classNames from 'classnames';\r\nimport LoginHeader from \"../components/LoginHeader\";\r\nimport { Link } from 'react-router-dom';\r\nimport {PAGE_NAV} from \"configs/page\";\r\nimport { useForm } from \"react-hook-form\";\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport * as Yup from 'yup';\r\nimport valUtils from \"utils/validations\";\r\nimport useLogin from 'hooks/useLogin';\r\nimport ButtonWithSpinner from 'components/buttons/ButtonSpinner';\r\nimport FooterLinks from 'components/FooterLinks';\r\n\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faFacebookF, faTwitter } from \"@fortawesome/free-brands-svg-icons\";\r\n\r\nconst Login = (props) => {\r\n const {history} = props;\r\n // form validation rules \r\n const validationSchema = Yup.object().shape({\r\n password: valUtils.password(),\r\n email: valUtils.notUniqueEmail(),\r\n });\r\n\r\n const formOptions = { resolver: yupResolver(validationSchema) };\r\n const { register, handleSubmit, formState: { errors } } = useForm(formOptions);\r\n const {login} = useLogin();\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n\r\n const onSubmitHandler = async(frmData) => {\r\n if(isSubmitting) return; \r\n\r\n setIsSubmitting(true);\r\n \r\n const {email, password} = frmData;\r\n \r\n login({UserName: email, Password: password})\r\n .then(()=>{\r\n //redir manually\r\n setIsSubmitting(false)\r\n history.push(PAGE_NAV.DASHBOARD);\r\n })\r\n .catch(() => {\r\n setIsSubmitting(false)\r\n });\r\n \r\n }\r\n\r\n return (\r\n <>\r\n
\r\n \r\n
\r\n {/*

e.preventDefault()} title=\"Click to sign in with Apple\">Sign in with Apple

\r\n

e.preventDefault()} title=\"Click to sign in with Facebook\">Sign in with Facebook

\r\n

Or

*/}\r\n
\r\n
\r\n

\r\n \r\n {errors?.email?.message && {errors?.email?.message}}\r\n

\r\n

\r\n \r\n {errors?.password?.message && {errors?.password?.message}}\r\n

\r\n
\r\n
\r\n

\r\n \r\n

\r\n
\r\n

Forgot password?

\r\n

Not a member? Join now

\r\n
\r\n
\r\n {/*
\r\n
\r\n

Powered by Digital Quarter

\r\n \r\n
\r\n
*/}\r\n
\r\n
\r\n

Copyright 2021 | Affiliate Quarter | All Rights Reserved | Powered by Digital Quarter

\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n
\r\n \r\n \r\n );\r\n}\r\n\r\nexport default Login;","import React, {useEffect, useState, useRef} from 'react';\r\nimport {PAGE_NAV} from \"configs/page\";\r\nimport { Redirect } from 'react-router-dom';\r\nimport useLogout from 'hooks/useLogout';\r\n\r\nconst Logout = () => {\r\n const logoutProvider = useLogout();\r\n const [loggedOut, setLoggedOut] = useState(false);\r\n const mountedRef = useRef(true);\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n\r\n useEffect(() => {\r\n return () => { \r\n mountedRef.current = false\r\n }\r\n }, []);\r\n\r\n useEffect(()=>{\r\n if(isSubmitting) return;\r\n mountedRef.current && setIsSubmitting(true);\r\n\r\n logoutProvider()\r\n .finally(()=> {\r\n if(mountedRef.current){ \r\n setLoggedOut(true);\r\n setIsSubmitting(false);\r\n }\r\n });\r\n },[setLoggedOut,logoutProvider,isSubmitting, setIsSubmitting]);\r\n \r\n return loggedOut ? : null ;\r\n}\r\n\r\nexport default Logout;","import React,{ useState, useEffect } from 'react';\r\nimport classNames from \"classnames\";\r\nimport LoginHeader from \"../components/LoginHeader\";\r\nimport MobileVerify from '../components/modals/PhoneVerification';\r\nimport { Link } from 'react-router-dom';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport { useForm } from \"react-hook-form\";\r\nimport PhoneCountryCodePopup from 'components/modals/PhoneCountryCodePopup';\r\nimport valUtils from \"utils/validations\";\r\nimport { allCountries } from 'country-telephone-data';\r\nimport { isValidPhoneNumber } from 'libphonenumber-js/mobile';\r\nimport * as Yup from 'yup';\r\nimport service from \"services/account\";\r\nimport {PAGE_NAV} from \"configs/page\";\r\nimport ButtonWithSpinner from 'components/buttons/ButtonSpinner';\r\nimport useToast from 'hooks/useToast';\r\n\r\nconst ForgotPassword = (props) => {\r\n const accService = service();\r\n const toast = useToast();\r\n const {history} = props;\r\n const emailForm = useForm({ mode: 'all', resolver: yupResolver(Yup.object().shape({\r\n email: valUtils.notUniqueEmail()\r\n })) });\r\n\r\n const phoneForm = useForm({ mode: 'all', resolver: yupResolver(Yup.object().shape({\r\n phoneCountryCode: Yup.object()\r\n .required('Phone country code is required')\r\n .oneOf(allCountries, \"Please select a country code from the list\"),\r\n phoneNumber: Yup.string()\r\n .required(\"Phone number is required\")\r\n .matches(/^\\d+$/, 'Phone number should have digits only')\r\n .test(\"isPhoneNumberValid\", \"Invalid phone number\", function(val){\r\n const {phoneCountryCode} = this.parent;\r\n if(!phoneCountryCode) return true;\r\n const {iso2, dialCode} = phoneCountryCode;\r\n return isValidPhoneNumber(`+${dialCode}${val}`, iso2.toUpperCase());\r\n })\r\n })) });\r\n\r\n const [countryCodeOpen, setCountryCodeOpen] = useState(false);\r\n \r\n const setPhoneCountryCode = (pcc)=>{\r\n phoneForm.setValue(\"phoneCountryCode\", pcc);\r\n phoneForm.setValue(\"phoneCountryCodeDisplay\", `+${pcc.dialCode}`)\r\n }\r\n\r\n useEffect(()=>{\r\n const pcc = allCountries.find(itm=>itm.iso2===\"au\");\r\n phoneForm.setValue(\"phoneCountryCode\", pcc);\r\n phoneForm.setValue(\"phoneCountryCodeDisplay\", `+${pcc.dialCode}`)\r\n }, [phoneForm])\r\n\r\n const [tabIndex, setTabIndex] = useState(1);\r\n const [emailSubmitted, setEmailSubmitted] = useState(false);\r\n const [phoneSubmitted, setPhoneSubmitted] = useState(false);\r\n const [phoneVerifyOpen, setPhoneVerifyOpen] = useState(false);\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n const [phoneDetail, setPhoneDetail] = useState({PhoneNumber:'', PhoneCountryCode:'', PhoneAlpha2Code:''})\r\n const [affList, setAffList] = useState([]);\r\n\r\n const emailFormSubmitHandler = async(frmData)=>{\r\n if(isSubmitting) return\r\n setIsSubmitting(true);\r\n accService.requestEmailPasswordReset({EmailAddress: frmData.email})\r\n .then(()=>(setEmailSubmitted(true)))\r\n // (resp)=>{\r\n // if(resp.data.Result){\r\n // history.push(`${PAGE_NAV.RESET_PWD}/${resp.data.Result}`);\r\n // }\r\n // else {\r\n // setEmailSubmitted(true)\r\n // }\r\n // })\r\n .catch((err)=>{\r\n toast.error(\"Failed on requesting password reset by email\", err);\r\n throw err;\r\n })\r\n .finally(()=>{setIsSubmitting(false)})\r\n }\r\n\r\n\r\n const onRequestSendPasswordResetTxtMsgCode = async(detail)=>{\r\n const submittedData = detail ? detail : {\r\n PhoneNumber: phoneDetail.PhoneNumber,\r\n PhoneCountryCode: phoneDetail.PhoneCountryCode,\r\n PhoneAlpha2Code: phoneDetail.PhoneAlpha2Code\r\n };\r\n return accService.requestTextPasswordReset(submittedData)\r\n .catch((err)=>{\r\n toast.error(\"Failed on requesting sms code\", err);\r\n throw err;\r\n });\r\n }\r\n\r\n const phoneFormSubmitHandler = async(frmData)=>{\r\n \r\n if(isSubmitting) return\r\n setIsSubmitting(true);\r\n\r\n setPhoneDetail({\r\n PhoneNumber: frmData.phoneNumber,\r\n PhoneCountryCode: frmData.phoneCountryCode.dialCode,\r\n PhoneAlpha2Code: frmData.phoneCountryCode.iso2\r\n });\r\n\r\n setTimeout(()=>{\r\n onRequestSendPasswordResetTxtMsgCode({\r\n PhoneNumber: frmData.phoneNumber,\r\n PhoneCountryCode: frmData.phoneCountryCode.dialCode,\r\n PhoneAlpha2Code: frmData.phoneCountryCode.iso2\r\n })\r\n .then(()=>{\r\n setPhoneVerifyOpen(true);\r\n setIsSubmitting(false);\r\n })\r\n .catch(()=>setIsSubmitting(false))\r\n }, 300);\r\n }\r\n\r\n const postPhoneVerificationSuccessFunc = (resp)=>{\r\n const {data} = resp;\r\n if (!data || data.length===0){\r\n setPhoneVerifyOpen(false);\r\n //display error message?\r\n return;\r\n }\r\n \r\n if(data.length === 1){\r\n history.push(`${PAGE_NAV.RESET_PWD}/${resp.data[0].Guid}`);\r\n return;\r\n }\r\n\r\n setAffList(data);\r\n setPhoneSubmitted(true);\r\n setPhoneVerifyOpen(false);\r\n\r\n }\r\n\r\n const onPhoneVerificationClicked = (code)=>{\r\n const submittedData = {\r\n PhoneNumber: phoneDetail.PhoneNumber,\r\n PhoneCountryCode: phoneDetail.PhoneCountryCode,\r\n PhoneAlpha2Code: phoneDetail.PhoneAlpha2Code,\r\n VerificationCode: code\r\n }\r\n return accService.validateTextPasswordResetCode(submittedData)\r\n .catch((err)=>{\r\n toast.error(\"Failed on verifying sms code\", err);\r\n throw err;\r\n });\r\n \r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n\r\n
\r\n\r\n

Forgot pasword?

\r\n {\r\n !emailSubmitted && !phoneSubmitted && \r\n <>\r\n

Don’t worry, just enter your email address or mobile number registered with Affiliate Quarter and we will send you instructions to reset your password.

\r\n
\r\n
\r\n
\r\n
    \r\n
  • setTabIndex(1)}>Email
  • \r\n
  • setTabIndex(2)}>Phone number
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n \r\n {emailForm.formState.errors?.email?.message && {emailForm.formState.errors?.email?.message}}\r\n

\r\n
\r\n
\r\n

\r\n \r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n \r\n \r\n setCountryCodeOpen(true)} readOnly />\r\n \r\n {/* \r\n */}\r\n \r\n {phoneForm.formState.errors?.phoneNumber?.message && {phoneForm.formState.errors?.phoneNumber?.message} }\r\n

\r\n
\r\n
\r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n }\r\n {\r\n emailSubmitted &&
Ok! If there’s an Affiliate Quarter account linked to this email address, then you should receive an email shortly. Please check your junk mail folder.
\r\n }\r\n {\r\n countryCodeOpen && setCountryCodeOpen(false)} setCountryCode={setPhoneCountryCode} defaultValue={phoneForm.getValues(\"phoneCountryCode\")} />\r\n }\r\n {\r\n phoneSubmitted &&\r\n
\r\n
    \r\n {\r\n affList.map((aff, i)=>\r\n
  • {aff.Username}
  • \r\n )\r\n }\r\n \r\n
\r\n
\r\n }\r\n setPhoneVerifyOpen(false)} \r\n verifyFunc={()=>setPhoneVerifyOpen(false)} \r\n postProcessFunc={postPhoneVerificationSuccessFunc} \r\n onPhoneVerificationClicked={onPhoneVerificationClicked} \r\n showCloseIcon={true}\r\n onRequestResendCode={onRequestSendPasswordResetTxtMsgCode}\r\n />\r\n\r\n\r\n\r\n {/*
\r\n
\r\n

\r\n

\r\n
\r\n
\r\n

\r\n
\r\n

Forgot password?

\r\n

Not a member? Join now

\r\n
*/}\r\n
\r\n
\r\n

Powered by Digital Quarter

\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default ForgotPassword;","import React, { useState, useEffect } from 'react';\r\nimport classNames from \"classnames\";\r\nimport LoginHeader from \"components/LoginHeader\";\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport { useForm } from \"react-hook-form\";\r\nimport valUtils from \"utils/validations\";\r\nimport * as Yup from 'yup';\r\nimport service from \"services/account\";\r\nimport { PAGE_NAV } from \"configs/page\";\r\nimport ButtonWithSpinner from 'components/buttons/ButtonSpinner';\r\nimport useToast from 'hooks/useToast';\r\n\r\nconst ResetPassword = (props) => {\r\n const accService = service();\r\n const toast = useToast();\r\n const { match, history } = props;\r\n const { token } = match.params;\r\n const [showExpired, setShowExpired] = useState(false);\r\n const [showForm, setShowForm] = useState(false);\r\n\r\n const validationSchema = Yup.object().shape({\r\n password: valUtils.password(),\r\n confirmPassword: valUtils.confirmPassword(\"password\"),\r\n });\r\n const formOptions = { resolver: yupResolver(validationSchema) };\r\n const { register, handleSubmit, formState: { errors } } = useForm(formOptions);\r\n\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n\r\n const onSubmitHandler = async (frmData) => {\r\n if (isSubmitting) return\r\n setIsSubmitting(true);\r\n\r\n accService.submitPasswordReset({ Guid: token, NewPassword: frmData.password })\r\n .then(() => {\r\n //show success?? redir to login??\r\n setIsSubmitting(false);\r\n history.push(`${PAGE_NAV.LOGIN}`);\r\n })\r\n .catch((err) => {\r\n //show error;\r\n setIsSubmitting(false);\r\n toast.error(\"Failed resetting password\", err);\r\n throw err;\r\n })\r\n }\r\n\r\n const displayForm = () => {\r\n setShowForm(true);\r\n setShowExpired(false);\r\n }\r\n const displayExpiredTokenMessage = () => {\r\n setShowForm(false);\r\n setShowExpired(true);\r\n }\r\n\r\n useEffect(() => {\r\n if (!token) {\r\n displayExpiredTokenMessage();\r\n return;\r\n }\r\n accService.validatePasswordResetToken({ Guid: token })\r\n .then((resp) => {\r\n const { Result } = resp.data;\r\n if (Result) displayForm();\r\n else displayExpiredTokenMessage();\r\n })\r\n .catch(() => {\r\n displayExpiredTokenMessage();\r\n });\r\n\r\n }, [token]);\r\n\r\n\r\n return (\r\n <>\r\n
\r\n \r\n
\r\n {\r\n showExpired &&\r\n
\r\n

Ooops.....For your security, a password must be reset within 30 minutes of making a password reset request. Please request another password reset.

\r\n
\r\n }\r\n {\r\n showForm &&\r\n <>\r\n

Reset Password

\r\n
\r\n
\r\n

\r\n \r\n {errors?.password?.message}\r\n

\r\n

\r\n \r\n {errors?.confirmPassword?.message}\r\n

\r\n
\r\n \r\n
\r\n

\r\n \r\n

\r\n
\r\n\r\n
\r\n \r\n }\r\n
\r\n
\r\n

Powered by Digital Quarter

\r\n
\r\n
\r\n \r\n )\r\n}\r\n\r\nexport default ResetPassword;","import { useRecoilState } from \"recoil\"\r\nimport leftMenuAtom from \"recoil/nav/leftMenu\";\r\n\r\n const useLeftMenu = () => useRecoilState(leftMenuAtom);\r\n\r\n export default useLeftMenu;","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport aqLogo from \"assets/img/aq-logo.svg\";\r\nimport { MENUS, PAGE_NAV } from 'configs/page';\r\nimport useLeftMenu from 'hooks/useLeftMenu';\r\n// import useLogout from 'hooks/useLogout';\r\n\r\nconst LeftNav = (props) => {\r\n const { on, history } = props;\r\n const [leftMenu, setLeftMenu] = useLeftMenu();\r\n // const logoutProvider = useLogout();\r\n \r\n const onMenuClicked = (e, menu)=>{\r\n e.preventDefault();\r\n\r\n // if(menu.value === \"LOGOUT\"){\r\n // logoutProvider().then(()=>{history.push(PAGE_NAV.LOGIN)});\r\n // return;\r\n // }\r\n \r\n setLeftMenu(menu);\r\n history.push(PAGE_NAV[menu.value]);\r\n\r\n \r\n }\r\n return (\r\n
\r\n

\"Affiliate

\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default LeftNav;","import useAccount from \"./useAccount\";\r\n// import useAuth from './useAuth';\r\nimport { useEffect, useState,useRef } from 'react';\r\nimport {PAGE_NAV} from \"configs/page\";\r\nimport { Redirect } from 'react-router-dom';\r\nimport useToast from \"./useToast\";\r\nimport SquareLoader from \"react-spinners/SquareLoader\";\r\nimport useAuthProvider from \"./useAuthProvider\";\r\n\r\nconst useFullRegOnly = (content)=>{\r\n const accountProvider = useAccount();\r\n const toast = useToast();\r\n const {accountLoaded} = useAuthProvider();\r\n const [isFetching, setIsFetching] = useState(false);\r\n const mountedRef = useRef(true);\r\n\r\n useEffect(() => {\r\n return () => { \r\n mountedRef.current = false\r\n }\r\n }, [])\r\n\r\n useEffect(()=>{\r\n if(accountLoaded) return;\r\n if(isFetching) return;\r\n if(!mountedRef.current) return;\r\n setIsFetching(true);\r\n // console.log(\"here hrere?\")\r\n accountProvider.getAccount()\r\n .then(()=>mountedRef.current && setIsFetching(false))\r\n .catch(err=>toast.error(err));\r\n return ()=>{}\r\n },[accountLoaded, accountProvider,isFetching, setIsFetching, toast]);\r\n\r\n \r\n \r\n if(!accountLoaded) return (\r\n
\r\n );\r\n \r\n const {paymentInfo,\r\n bankDetails,\r\n profiles,\r\n // phoneDetail,\r\n billingInfo\r\n } = accountProvider;\r\n \r\n const {Name, Email} = profiles;\r\n // const {PhoneNumber, PhoneVerified} = phoneDetail\r\n const {BillingName} = billingInfo;\r\n\r\n if(!Name || !Email){//} || !PhoneNumber){\r\n return \r\n }\r\n \r\n // if(!PhoneVerified){\r\n // if(!BillingName)\r\n // return \r\n // }\r\n\r\n const {AffiliatePaymentTypeID, Paypal, PaymentID} = paymentInfo;\r\n const {BankName} = bankDetails;\r\n\r\n if(\r\n (AffiliatePaymentTypeID === \"Paypal\" && !Paypal)\r\n || (AffiliatePaymentTypeID === \"PayID\" && !PaymentID)\r\n || (AffiliatePaymentTypeID === \"DirectDeposit\" && !BankName)\r\n ){\r\n return \r\n }\r\n \r\n \r\n if(!BillingName){\r\n return \r\n }\r\n \r\n return content;\r\n}\r\n\r\nexport default useFullRegOnly;","import React, { useState } from 'react';\r\nimport classNames from 'classnames';\r\nimport LeftMenu from 'navigations/leftMenu';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faBars, faCaretDown, faCaretUp, faUser } from \"@fortawesome/free-solid-svg-icons\"\r\nimport useLeftMenu from 'hooks/useLeftMenu';\r\nimport { MENUS, PAGE_NAV } from 'configs/page';\r\n// import { Redirect } from 'react-router-dom';\r\n// import useLogout from 'hooks/useLogout';\r\nimport useFullRegOnly from \"hooks/useFullRegOnly\";\r\n// import useAuth from 'hooks/useAuth';\r\n// import useAuthProvider from 'hooks/useAuthProvider';\r\nimport Footer from \"components/Footer\";\r\n\r\nconst LoggedInDisplay = (props) => {\r\n const { children, history, pageTitle } = props;\r\n\r\n const [leftMenu] = useLeftMenu();\r\n \r\n // const logoutProvider = useLogout();\r\n const [mobileNavOn, setMobileNavOn] = useState(false);\r\n const [accNavOn, setAccNavOn] = useState(false);\r\n const [, setDateSelDropdownOn] = useState(false);\r\n\r\n const onMenuClicked = (e, menu) => {\r\n e.preventDefault();\r\n // if (menu.value === \"LOGOUT\") {\r\n // logoutProvider().then(() => { history.push(PAGE_NAV.LOGIN) });\r\n // return;\r\n // }\r\n history.push(PAGE_NAV[menu.value]);\r\n }\r\n\r\n return (\r\n <>\r\n {\r\n useFullRegOnly(\r\n
{ setMobileNavOn(false); setAccNavOn(false); setDateSelDropdownOn(false); }}>\r\n
\r\n \r\n
\r\n
\r\n
\r\n

\r\n \r\n { e.preventDefault(); setMobileNavOn(!mobileNavOn); e.stopPropagation() }} />\r\n \r\n

\r\n

{!pageTitle ? leftMenu.text : pageTitle}

\r\n
\r\n \r\n { setAccNavOn(!accNavOn); e.stopPropagation() }} />\r\n
\r\n
)\r\n }\r\n \r\n );\r\n}\r\n\r\nconst LoggedInLayout = (props) => {\r\n return (\r\n <> \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LoggedInLayout;","import * as Yup from 'yup';\r\nimport valUtils from \"../validations\";\r\n\r\nconst validationSchema = Yup.object().shape({\r\n affiliateName: valUtils.affiliateName(),\r\n email: valUtils.email(), \r\n showWebsite: Yup.bool(),\r\n website: Yup.string().when(['showWebsite'], {\r\n is: (show) => show,\r\n then: Yup.string().required('Url required').url(\"Invalid url\"),\r\n otherwise: Yup.string().notRequired().nullable()\r\n }),\r\n showInstagram: Yup.bool(),\r\n instagram: Yup.string().when(['showInstagram'], {\r\n is: (show) => show,\r\n then: Yup.string().required('Url required').url(\"Invalid url\"),\r\n otherwise: Yup.string().notRequired().nullable()\r\n }),\r\n showTiktok: Yup.bool(),\r\n tiktok: Yup.string().when(['showTiktok'], {\r\n is: (show) => show,\r\n then: Yup.string().required('Url required').url(\"Invalid url\"),\r\n otherwise: Yup.string().notRequired().nullable()\r\n }),\r\n showYoutube: Yup.bool(),\r\n youtube: Yup.string().when(['showYoutube'], {\r\n is: (show) => show,\r\n then: Yup.string().required('Url required').url(\"Invalid url\"),\r\n otherwise: Yup.string().notRequired().nullable()\r\n }),\r\n showFacebook: Yup.bool(),\r\n facebook: Yup.string().when(['showFacebook'], {\r\n is: (show) => show,\r\n then: Yup.string().required('Url required').url(\"Invalid url\"),\r\n otherwise: Yup.string().notRequired().nullable()\r\n }),\r\n showOnlyfans: Yup.bool(),\r\n onlyfans: Yup.string().when(['showOnlyfans'], {\r\n is: (show) => show,\r\n then: Yup.string().required('Url required').url(\"Invalid url\"),\r\n otherwise: Yup.string().notRequired().nullable()\r\n }),\r\n showOther: Yup.bool(),\r\n other: Yup.string().when(['showOther'], {\r\n is: (show) => show,\r\n then: Yup.string().required('Required'),\r\n otherwise: Yup.string().notRequired().nullable()\r\n }),\r\n promoteChannels: Yup.string().test(\"isPromoteChannelsValid\", \"Require at least one promote channel\", function(val){\r\n const {showWebsite, showInstagram, showTiktok, showYoutube, showFacebook, showOnlyfans, showOther} = this.parent;\r\n return (showWebsite || showInstagram || showTiktok || showYoutube || showFacebook || showOnlyfans || showOther)\r\n }) \r\n});\r\n\r\nexport default validationSchema;\r\n","import React, {useState} from 'react';\r\nimport classNames from 'classnames';\r\nimport { Modal } from 'react-responsive-modal';\r\nimport ButtonWithSpinner from 'components/buttons/ButtonSpinner';\r\nimport valUtils from \"utils/validations\"\r\nimport { useForm } from \"react-hook-form\";\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport * as Yup from 'yup';\r\nimport useToast from 'hooks/useToast';\r\nimport AccountService from 'services/account';\r\n\r\nconst PasswordUpdate = (props) => {\r\n const toast = useToast();\r\n const validationSchema = Yup.object().shape({\r\n password: valUtils.password(),\r\n confirmPassword: valUtils.confirmPassword(\"password\"),\r\n });\r\n \r\n const {open, close } = props;\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n\r\n const {\r\n handleSubmit,\r\n formState: { errors },\r\n register,\r\n } = useForm({\r\n mode: 'all',\r\n defaultValues: {\r\n password: '',\r\n confirmPassword: ''\r\n },\r\n resolver: yupResolver(validationSchema)\r\n });\r\n\r\n \r\n const onSubmitHandler = async(frmData, e)=>{\r\n \r\n e.preventDefault();\r\n\r\n if (isSubmitting) return;\r\n setIsSubmitting(true);\r\n\r\n const submittedData = {Password: frmData.password};\r\n\r\n AccountService.updatePassword(submittedData)\r\n .then(()=>{\r\n setIsSubmitting(false);\r\n close();\r\n })\r\n .catch(err=>{\r\n if(String(err).indexOf(\"401\")!==-1){\r\n toast.error(String(err));\r\n }\r\n else{\r\n toast.error(\"Failed updating password\",err);\r\n }\r\n })\r\n .finally(()=>setIsSubmitting(false));\r\n }\r\n\r\n \r\n\r\n return (\r\n \r\n

Password Update

\r\n \r\n
\r\n
\r\n

\r\n \r\n \r\n {errors?.password?.message}\r\n

\r\n

\r\n \r\n \r\n {errors?.confirmPassword?.message}\r\n

\r\n
\r\n
\r\n

\r\n \r\n

\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default PasswordUpdate;","import React, {useState, useEffect, useRef} from 'react';\r\nimport classNames from 'classnames';\r\nimport { Modal } from 'react-responsive-modal';\r\nimport ButtonWithSpinner from 'components/buttons/ButtonSpinner';\r\nimport MobileVerify from 'components/modals/PhoneVerification';\r\nimport useAccount from \"hooks/useAccount\";\r\nimport * as Yup from 'yup';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport { useForm } from \"react-hook-form\";\r\nimport PhoneCountryCodePopup from 'components/modals/PhoneCountryCodePopup';\r\nimport { allCountries } from 'country-telephone-data';\r\nimport { isValidPhoneNumber } from 'libphonenumber-js/mobile';\r\nimport ConfirmPopup from 'components/modals/ConfirmPopup'\r\n\r\nconst UpdateMobileNumber = (props) => {\r\n const {open, close, showCloseIcon=true} = props;\r\n const ref = useRef();\r\n const accountProvider = useAccount();\r\n const {phoneDetail} = accountProvider;\r\n const { PhoneNumber, PhoneAlpha2Code} = phoneDetail;\r\n const validationSchema = Yup.object().shape({\r\n phoneCountryCode: Yup.object()\r\n .notRequired().nullable()\r\n // .required('Phone country code is required')\r\n .oneOf(allCountries, \"Please select a country code from the list\"),\r\n phoneNumber: Yup.string()\r\n // .required(\"Phone number is required\")\r\n .matches(/^\\d+$/,{message:'Phone number should have digits only',excludeEmptyString:true})\r\n .test(\"isPhoneNumberValid\", \"Invalid phone number\", function(val){\r\n if(!val) return true;\r\n const {phoneCountryCode} = this.parent;\r\n if(!phoneCountryCode) return true;\r\n const {iso2, dialCode} = phoneCountryCode;\r\n return isValidPhoneNumber(`+${dialCode}${val}`, iso2.toUpperCase());\r\n }),\r\n });\r\n const { \r\n handleSubmit, \r\n formState: { errors }, \r\n register,\r\n setValue,\r\n getValues\r\n } = useForm({ \r\n mode: 'all', \r\n defaultValues: {\r\n phoneNumber: PhoneNumber,\r\n phoneCountryCode: allCountries.find(itm=>itm.iso2=== (PhoneAlpha2Code ? PhoneAlpha2Code.toLowerCase() : \"au\")),\r\n },\r\n resolver: yupResolver(validationSchema) \r\n });\r\n\r\n const [countryCodeOpen, setCountryCodeOpen] = useState(false);\r\n \r\n const setPhoneCountryCode = (pcc)=>{\r\n setValue(\"phoneCountryCode\", pcc);\r\n setValue(\"phoneCountryCodeDisplay\", `+${pcc.dialCode}`)\r\n }\r\n\r\n useEffect(()=>{\r\n const iso2 = PhoneAlpha2Code ? PhoneAlpha2Code.toLowerCase() : \"au\";\r\n const pcc = allCountries.find(itm=>itm.iso2===iso2);\r\n setValue(\"phoneCountryCode\", pcc);\r\n setValue(\"phoneCountryCodeDisplay\", `+${pcc.dialCode}`)\r\n }, [setValue]) // eslint-disable-line react-hooks/exhaustive-deps\r\n \r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n const [phoneVerifyOpen, setPhoneVerifyOpen] = useState(false);\r\n const [delConfirmPopup, setDelConfirmPopup] = useState(false);\r\n const [phoneVerificationResult, setPhoneVerificationResult] = useState(null);\r\n\r\n useEffect(()=>{\r\n if(getValues(\"phoneNumber\")){\r\n setPhoneVerificationResult(null);\r\n }\r\n }, [getValues, setPhoneVerificationResult])\r\n \r\n const onPhoneRequestResendCode = ()=>{\r\n const phoneNumber = getValues(\"phoneNumber\");\r\n const phoneCountry = getValues(\"phoneCountryCode\");\r\n const {dialCode, iso2} = phoneCountry;\r\n return accountProvider.requestPhoneCode({PhoneNumber:phoneNumber, PhoneCountryCode:dialCode, PhoneAlpha2Code:iso2});\r\n }\r\n\r\n const onPhoneVerificationClicked = async (code)=>{\r\n const phoneNumber = getValues(\"phoneNumber\");\r\n const phoneCountry = getValues(\"phoneCountryCode\");\r\n const {dialCode, iso2} = phoneCountry;\r\n\r\n const result = await accountProvider.verifyPhone({\r\n VerificationCode: code,\r\n PhoneNumber:phoneNumber, \r\n PhoneCountryCode:dialCode, \r\n PhoneAlpha2Code:iso2});\r\n \r\n setPhoneVerificationResult(result);\r\n setTimeout(()=>{\r\n ref.current.dispatchEvent(\r\n new Event(\"submit\", { cancelable: true, bubbles: true })\r\n );\r\n }, 150) \r\n }\r\n\r\n const postPhoneVerificationSuccessFunc = ()=>{\r\n // setPhoneVerifyOpen(false);\r\n // close();\r\n }\r\n\r\n const processUpdatePhoneNumber = async(submittedData)=>{\r\n if(isSubmitting) return;\r\n setIsSubmitting(true);\r\n accountProvider.updatePhoneDetails(submittedData)\r\n .then((resp)=>{\r\n // resp===true ? setPhoneVerifyOpen(true) : close();\r\n })\r\n .finally(()=>{\r\n setIsSubmitting(false)\r\n close();\r\n });\r\n }\r\n\r\n const removePhoneNumber = async()=>{\r\n processUpdatePhoneNumber({\r\n PhoneNumber: \"\",\r\n PhoneCountryCode: \"\",\r\n PhoneAlpha2Code: \"\",\r\n PhoneVerified: false\r\n })\r\n }\r\n\r\n const onSubmitHandler = async(frmData, e)=>{\r\n e.preventDefault();\r\n\r\n if(!frmData.phoneNumber){\r\n if(PhoneNumber){\r\n setDelConfirmPopup(true)\r\n }\r\n else {\r\n removePhoneNumber();\r\n }\r\n \r\n }\r\n else {\r\n if(phoneVerificationResult){\r\n processUpdatePhoneNumber(phoneVerificationResult);\r\n }\r\n else {\r\n onPhoneRequestResendCode().then(()=>{\r\n setPhoneVerifyOpen(true);\r\n });\r\n }\r\n \r\n }\r\n }\r\n\r\n return (\r\n \r\n

{PhoneNumber ? `Update` : `Add`} phone number

\r\n

Enter your phone number

\r\n \r\n
\r\n
\r\n

\r\n \r\n \r\n \r\n setCountryCodeOpen(true)} readOnly />\r\n \r\n \r\n {errors?.phoneNumber?.message}\r\n

\r\n {/*

\r\n \r\n \r\n \r\n \r\n \r\n\r\n Please enter your mobile number\r\n

*/}\r\n
\r\n
\r\n

\r\n \r\n

\r\n
\r\n
\r\n {\r\n countryCodeOpen && setCountryCodeOpen(false)} setCountryCode={setPhoneCountryCode} defaultValue={getValues(\"phoneCountryCode\")} />\r\n }\r\n {\r\n phoneVerifyOpen && setPhoneVerifyOpen(false)} \r\n postProcessFunc={postPhoneVerificationSuccessFunc} \r\n onPhoneVerificationClicked={onPhoneVerificationClicked} \r\n onRequestResendCode={onPhoneRequestResendCode} \r\n showCloseIcon={true}\r\n />\r\n }\r\n {\r\n delConfirmPopup && \r\n {setDelConfirmPopup(false);}}\r\n confirm={removePhoneNumber} \r\n heading=\"Remove phone number\" \r\n btnText=\"Remove\">\r\n

Are you sure you want to remove your phone number?

\r\n
\r\n }\r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nexport default UpdateMobileNumber;","import classNames from 'classnames';\r\nimport React, { useEffect, useState } from 'react';\r\nimport validationSchema from 'utils/validationSchemas/editProfile';\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport { useForm } from \"react-hook-form\";\r\nimport useAccount from \"hooks/useAccount\";\r\nimport ButtonWithSpinner from './buttons/ButtonSpinner';\r\nimport PasswordUpdateModal from './modals/PasswordUpdate';\r\nimport PhoneUpdateModal from './modals/PhoneNumberUpdatePopup';\r\n\r\nconst EditProfileForm = (props) => {\r\n const accountProvider = useAccount();\r\n const { profiles, promoteChannels, phoneDetail } = accountProvider;\r\n const { Name, Email } = profiles;\r\n const {\r\n PromoteWebsite, PromoteInstagram, PromoteTikTok,\r\n PromoteYoutube, PromoteFacebook, PromoteOnlyFans, PromoteOther,\r\n } = promoteChannels;\r\n const { PhoneNumber, PhoneCountryCode } = phoneDetail;\r\n\r\n const {\r\n handleSubmit,\r\n formState: { errors, isSubmitted },\r\n register,\r\n watch,\r\n setValue,\r\n } = useForm({\r\n mode: 'all',\r\n defaultValues: {\r\n affiliateName: Name,\r\n email: Email,\r\n website: PromoteWebsite,\r\n showWebsite: !!PromoteWebsite,\r\n instagram: PromoteInstagram,\r\n showInstagram: !!PromoteInstagram,\r\n tiktok: PromoteTikTok,\r\n showTiktok: !!PromoteTikTok,\r\n youtube: PromoteYoutube,\r\n showYoutube: !!PromoteYoutube,\r\n facebook: PromoteFacebook,\r\n showFacebook: !!PromoteFacebook,\r\n onlyfans: PromoteOnlyFans,\r\n showOnlyfans: !!PromoteOnlyFans,\r\n other: PromoteOther,\r\n showOther: !!PromoteOther\r\n },\r\n resolver: yupResolver(validationSchema)\r\n });\r\n const watchShowWebsite = watch(\"showWebsite\", !!PromoteWebsite);\r\n const watchShowInstagram = watch(\"showInstagram\", !!PromoteInstagram);\r\n const watchShowTiktok = watch(\"showTiktok\", !!PromoteTikTok);\r\n const watchShowYoutube = watch(\"showYoutube\", !!PromoteYoutube);\r\n const watchShowFacebook = watch(\"showFacebook\", !!PromoteFacebook);\r\n const watchShowOnlyfans = watch(\"showOnlyfans\", !!PromoteOnlyFans);\r\n const watchShowOther = watch(\"showOther\", !PromoteOther);\r\n\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n const [showPasswordUpdate, setShowPasswordUpdate] = useState(false);\r\n const [showPhoneUpdate, setShowPhoneUpdate] = useState(false)\r\n\r\n const onEditPasswordClicked = (e)=>{\r\n e.preventDefault();\r\n setShowPasswordUpdate(true);\r\n }\r\n\r\n const onEditPhoneClicked = (e)=>{\r\n e.preventDefault();\r\n setShowPhoneUpdate(true);\r\n }\r\n\r\n const onSubmitHandler = async (frmData, e) => {\r\n e.preventDefault();\r\n\r\n if (isSubmitting) return;\r\n setIsSubmitting(true);\r\n\r\n const submittedData = {\r\n Name: frmData.affiliateName,\r\n Email: frmData.email,\r\n PromoteChannels: {\r\n PromoteWebsite: frmData.showWebsite && frmData.website ? frmData.website : '',\r\n PromoteInstagram: frmData.showInstagram && frmData.instagram ? frmData.instagram : '',\r\n PromoteTikTok: frmData.showTiktok && frmData.tiktok ? frmData.tiktok : '',\r\n PromoteYoutube: frmData.showYoutube && frmData.youtube ? frmData.youtube : '',\r\n PromoteFacebook: frmData.showFacebook && frmData.facebook ? frmData.facebook : '',\r\n PromoteOnlyFans: frmData.showOnlyfans && frmData.onlyfans ? frmData.onlyfans : '',\r\n PromoteOther: frmData.showOther && frmData.other ? frmData.other : ''\r\n }\r\n };\r\n accountProvider.updateProfileDetails(submittedData)\r\n .then(() => {\r\n\r\n })\r\n .finally(() => {\r\n setIsSubmitting(false);\r\n });\r\n }\r\n\r\n useEffect(() => setValue(\"affiliateName\", Name), [Name, setValue]);\r\n useEffect(() => setValue(\"email\", Email), [Email, setValue]);\r\n useEffect(() => {\r\n setValue(\"website\", PromoteWebsite);\r\n setValue(\"showWebsite\", !!PromoteWebsite);\r\n }, [PromoteWebsite, setValue]);\r\n useEffect(() => {\r\n setValue(\"instagram\", PromoteInstagram);\r\n setValue(\"showInstagram\", !!PromoteInstagram);\r\n }, [PromoteInstagram, setValue]);\r\n useEffect(() => {\r\n setValue(\"tiktok\", PromoteTikTok);\r\n setValue(\"showTiktok\", !!PromoteTikTok);\r\n }, [PromoteTikTok, setValue]);\r\n useEffect(() => {\r\n setValue(\"youtube\", PromoteYoutube);\r\n setValue(\"showYoutube\", !!PromoteYoutube);\r\n }, [PromoteYoutube, setValue]);\r\n useEffect(() => {\r\n setValue(\"facebook\", PromoteFacebook);\r\n setValue(\"showFacebook\", !!PromoteFacebook);\r\n }, [PromoteFacebook, setValue]);\r\n useEffect(() => {\r\n setValue(\"onlyfans\", PromoteOnlyFans);\r\n setValue(\"showOnlyfans\", !!PromoteOnlyFans);\r\n }, [PromoteOnlyFans, setValue]);\r\n useEffect(() => {\r\n setValue(\"other\", PromoteOther);\r\n setValue(\"showOther\", !!PromoteOther);\r\n }, [PromoteOther, setValue]);\r\n\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n
\r\n

\r\n \r\n \r\n \r\n {errors?.affiliateName?.message}\r\n \r\n

\r\n\r\n

\r\n \r\n \r\n \r\n \r\n {PhoneNumber ? `Update` : 'Add'} mobile number\r\n

\r\n\r\n

\r\n \r\n \r\n \r\n {errors?.email?.message}\r\n \r\n

\r\n\r\n

\r\n \r\n \r\n \r\n \r\n Update password\r\n

\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n

Where will you promote RedHotPie?

\r\n\r\n

\r\n \r\n \r\n \r\n {\r\n watchShowWebsite &&\r\n \r\n \r\n \r\n {errors?.website?.message && {errors?.website?.message}}\r\n \r\n }\r\n\r\n

\r\n\r\n

\r\n \r\n \r\n \r\n {\r\n watchShowInstagram &&\r\n \r\n \r\n \r\n {errors?.instagram?.message && {errors?.instagram?.message}}\r\n \r\n }\r\n\r\n

\r\n\r\n

\r\n \r\n \r\n \r\n {\r\n watchShowTiktok &&\r\n \r\n \r\n \r\n {errors?.tiktok?.message && {errors?.tiktok?.message}}\r\n \r\n }\r\n\r\n

\r\n\r\n

\r\n \r\n \r\n \r\n {\r\n watchShowYoutube &&\r\n \r\n \r\n \r\n {errors?.youtube?.message && {errors?.youtube?.message}}\r\n \r\n }\r\n\r\n

\r\n\r\n

\r\n \r\n \r\n \r\n {\r\n watchShowFacebook &&\r\n \r\n \r\n \r\n {errors?.facebook?.message && {errors?.facebook?.message}}\r\n \r\n }\r\n\r\n

\r\n\r\n

\r\n \r\n \r\n \r\n {\r\n watchShowOnlyfans &&\r\n \r\n \r\n \r\n {errors?.onlyfans?.message && {errors?.onlyfans?.message}}\r\n \r\n }\r\n\r\n

\r\n\r\n

\r\n \r\n \r\n \r\n {\r\n watchShowOther &&\r\n \r\n \r\n \r\n {errors?.other?.message && {errors?.other?.message}}\r\n \r\n }\r\n\r\n

\r\n\r\n {isSubmitted && !watchShowWebsite && !watchShowInstagram && !watchShowTiktok && !watchShowYoutube && !watchShowFacebook && !watchShowOnlyfans && !watchShowOther && errors?.promoteChannels?.message &&

{errors?.promoteChannels?.message}

}\r\n
\r\n
\r\n\r\n
\r\n

\r\n \r\n

\r\n
\r\n\r\n
\r\n {\r\n showPasswordUpdate && setShowPasswordUpdate(false)} />\r\n }\r\n {\r\n showPhoneUpdate && setShowPhoneUpdate(false)}>\r\n }\r\n \r\n \r\n \r\n );\r\n\r\n}\r\n\r\nexport default EditProfileForm;","import React, { useEffect, useState} from 'react';\r\nimport classNames from \"classnames\";\r\nimport LoggedInLayout from 'layouts/LoggedInLayout';\r\nimport useLeftMenu from 'hooks/useLeftMenu';\r\nimport { MENUS } from 'configs/page';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faMinus, faPlus } from \"@fortawesome/free-solid-svg-icons\";\r\n\r\nimport PaymentInfoForm from \"components/PaymentInfoForm\";\r\nimport BillingInfoForm from \"components/BillingInfoForm\";\r\nimport EditProfileForm from 'components/EditProfileForm';\r\n\r\n// import UpdateMobileNumber from \"components/modals/UpdateMobileNumber\";\r\n\r\nconst Account = (props) => {\r\n const [leftMenu, setLeftMenu] = useLeftMenu();\r\n\r\n useEffect(()=>{\r\n if(leftMenu.value !== \"ACCOUNT\")\r\n setLeftMenu(MENUS.find(menu=>menu.value===\"ACCOUNT\"));\r\n }, [leftMenu, setLeftMenu]);\r\n\r\n const [accOneOpen, setAccOneOpen] = useState(true);\r\n const [accTwoOpen, setAccTwoOpen] = useState(false);\r\n const [accThreeOpen, setAccThreeOpen] = useState(false);\r\n\r\n // const [mobiNoPop, setMobiNoPop] = useState(false);\r\n\r\n\r\n // /console.log(\"contentOne: \",contentOne.current.scrollHeight);\r\n\r\n return (\r\n \r\n\r\n
\r\n
setAccOneOpen(!accOneOpen)}>\r\n

Account details

\r\n {accOneOpen \r\n ? \r\n : \r\n }\r\n
\r\n
\r\n \r\n {/*
{}}>\r\n
\r\n
\r\n

\r\n \r\n \r\n \r\n Please enter a Affiliate name\r\n \r\n

\r\n\r\n

\r\n \r\n \r\n \r\n Please enter a mobile-number\r\n \r\n {e.preventDefault(); setMobiNoPop(true);}} title=\"Update mobile number\">Update mobile number\r\n

\r\n\r\n

\r\n \r\n \r\n \r\n Please enter your email\r\n \r\n

\r\n\r\n

\r\n \r\n \r\n \r\n Please enter new password\r\n \r\n Update password\r\n

\r\n\r\n
\r\n
\r\n
\r\n
\r\n

Where will you promote RedHotPie?

\r\n\r\n

\r\n \r\n \r\n \r\n \r\n \r\n \r\n Please enter a vaild url\r\n \r\n

\r\n\r\n

\r\n \r\n \r\n \r\n \r\n \r\n \r\n Please enter a vaild url\r\n \r\n

\r\n\r\n

\r\n \r\n \r\n \r\n \r\n \r\n \r\n Please enter a vaild url\r\n \r\n

\r\n

\r\n \r\n \r\n \r\n \r\n \r\n \r\n Please enter a vaild url\r\n \r\n

\r\n

\r\n \r\n \r\n \r\n \r\n \r\n \r\n Please enter a vaild url\r\n \r\n

\r\n\r\n

\r\n \r\n \r\n \r\n \r\n \r\n \r\n Please enter a vaild url\r\n \r\n

\r\n\r\n

\r\n \r\n \r\n \r\n \r\n \r\n \r\n Please enter a vaild url\r\n \r\n

\r\n

Please select option

\r\n
\r\n
\r\n
\r\n

\r\n \r\n

\r\n
\r\n
*/}\r\n
\r\n {/* setMobiNoPop(false)} closeOnE /> */}\r\n
\r\n \r\n
\r\n
setAccTwoOpen(!accTwoOpen)}>\r\n

How would you like to get paid?

\r\n {accTwoOpen \r\n ? \r\n : \r\n }\r\n
\r\n
\r\n {}}} display={{saveText:\"Update\", showHeading:false}} />\r\n
\r\n
\r\n\r\n
\r\n
setAccThreeOpen(!accThreeOpen)}>\r\n

Billing information?

\r\n {accThreeOpen \r\n ? \r\n : \r\n }\r\n
\r\n
\r\n {}, onBackButtonClicked:()=>{}}} display={{saveText:\"Update\", showHeading:false}} />\r\n
\r\n
\r\n\r\n
\r\n );\r\n}\r\n\r\nexport default Account;","import useFetchProvider from 'hooks/useFetchProvider';\r\n\r\nconst StatsService = ()=> {\r\n const fetch = useFetchProvider();\r\n const getCampaigns = async() => await fetch.get(`/Statistics/Campaign/`);\r\n const getCampaign = async(DateRangeItemID)=> await fetch.post(`/Statistics/Campaign/`, {DateRangeItemID});\r\n const getTotalEarnings = async()=> await fetch.get(`/Statistics/Earnings/Total`);\r\n const getEarnings = async(data)=> await fetch.get(`/Statistics/Earnings`, {params: data});\r\n const getCampaignDetails = async(data) => await fetch.get(`/Statistics/Campaign/${data.CampaignID}`, {params: data});\r\n return {\r\n getCampaigns, getCampaign, getEarnings, getCampaignDetails, getTotalEarnings\r\n };\r\n}\r\n\r\nexport default StatsService;","\r\nimport useFetchProvider from 'hooks/useFetchProvider';\r\n\r\nconst CampaignService = ()=>{\r\n const fetch = useFetchProvider();\r\n const createCampaign = async(data)=> await fetch.post(`/Campaign/`, data);\r\n const hideCampaign = async(id) => await fetch.patch(`/Campaign/${id}/Hide`);\r\n return {createCampaign, hideCampaign}\r\n}\r\n\r\nexport default CampaignService;","import { useRecoilValueLoadable, useRecoilState, useRecoilCallback, useSetRecoilState } from \"recoil\";\r\nimport campaignDateRangeIDAtom from \"recoil/stats/campaignDateRangeID\";\r\nimport campaignsAtom from 'recoil/stats/campaigns';\r\nimport campaignDetailsIDAtom from 'recoil/stats/campaignDetailID';\r\nimport campaignDetailsAtom from 'recoil/stats/campaignDetail';\r\nimport useStatsService from 'services/stats';\r\nimport useCampaignService from \"services/campaign\";\r\nimport useToast from \"./useToast\";\r\nimport { CAMPAIGN_ID_NOTFOUND } from \"configs/constants\";\r\nimport { useEffect, useRef, useState } from \"react\";\r\n\r\nconst useCampaigns = ()=>{\r\n const campaignService = useCampaignService();\r\n const statsService = useStatsService();\r\n const toast = useToast();\r\n const campaignsSummaryLoadable = useRecoilValueLoadable(campaignsAtom);\r\n const setCampaignsSummary = useSetRecoilState(campaignsAtom);\r\n const [dateRangeID, setDateRangeID] = useRecoilState(campaignDateRangeIDAtom);\r\n const [campaignDetailID, setCampaignDetailID] = useRecoilState(campaignDetailsIDAtom);\r\n const campaignDetailLoadable = useRecoilValueLoadable(campaignDetailsAtom);\r\n // const setCampaignDetail = useSetRecoilState(campaignDetailsAtom);\r\n const { state: campaignListState, contents: campaignListContent } = campaignsSummaryLoadable;\r\n \r\n const fetchCampaigns = useRecoilCallback(({ set }) => async (id, current) => {\r\n if(current && parseInt(current?.DateRangeItemID) === parseInt(id)){\r\n return;\r\n }\r\n \r\n return statsService.getCampaign(id)\r\n .then(response=>{\r\n set(campaignsAtom, response.data);\r\n })\r\n .catch(err=>{toast.error(err)});\r\n });\r\n\r\n const fetchCampaign = useRecoilCallback(({ set }) => async (campaignID, dateID) => {\r\n if(campaignID < 1) {\r\n set(campaignDetailsAtom, null);\r\n return;\r\n };\r\n if(campaignListState !== \"hasValue\") return;\r\n if(!campaignListContent) return;\r\n \r\n const selDate = campaignListContent?.StatsSummaries\r\n .find(dt => dt.CampaignDetail.CampaignID === parseInt(campaignID));\r\n \r\n if(!selDate){\r\n set(campaignDetailsAtom, null);\r\n set(campaignDetailsIDAtom, CAMPAIGN_ID_NOTFOUND);\r\n return;\r\n }\r\n return statsService.getCampaignDetails({ CampaignID: campaignID, DateRangeItemID: dateID })\r\n .then(response => set(campaignDetailsAtom, response.data))\r\n .catch(err => toast.error(err));\r\n });\r\n\r\n const addNewCampaign = async(data)=>{\r\n return campaignService.createCampaign(data)\r\n .then((response)=>{\r\n //add to campaigns\r\n setCampaignsSummary(prev=>({\r\n ...prev,\r\n StatsSummaries : [\r\n ...prev.StatsSummaries,\r\n {\r\n CampaignDetail : response.data,\r\n Stats : {\r\n Traffic :0,\r\n Joins :0,\r\n Upgrades: 0,\r\n Revenue: 0\r\n }\r\n }\r\n ]\r\n }));\r\n return response.data.CampaignID;\r\n }, (err)=>{\r\n // toast.error(\"Failed to add new campaign\", err);\r\n throw new Error(err);\r\n });\r\n }\r\n\r\n const deleteCampaign = (id)=>{\r\n return campaignService.hideCampaign(id)\r\n .then((response)=>{\r\n const {Result} = response.data;\r\n\r\n if(!Result){\r\n // toast.error(\"Failed to remove this campaign\");\r\n throw new Error(\"Failed to remove this campaign\");\r\n }\r\n\r\n //remove from summary\r\n setCampaignsSummary(prev=>({\r\n ...prev,\r\n StatsSummaries: prev.StatsSummaries.filter(s=>s.CampaignDetail.CampaignID !== parseInt(id)),\r\n }));\r\n\r\n return true;\r\n },\r\n (err)=>{\r\n //toast.error(\"Failed to remove campaign\", err);\r\n throw new Error(err);\r\n });\r\n };\r\n\r\n \r\n const [isFetchingCampaigns, setIsFetchingCampaigns] = useState(false)\r\n const mountedRef = useRef(true);\r\n\r\n useEffect(() => {\r\n return () => { \r\n mountedRef.current = false\r\n }\r\n }, [])\r\n\r\n useEffect(()=>{\r\n if(isFetchingCampaigns) return;\r\n if(campaignListState !== \"hasValue\") return;\r\n if(campaignListContent) return;\r\n mountedRef.current && setIsFetchingCampaigns(true);\r\n fetchCampaigns(dateRangeID).then(()=>{\r\n mountedRef.current && setIsFetchingCampaigns(false)\r\n });\r\n }, [campaignListState, campaignListContent, fetchCampaigns, dateRangeID, isFetchingCampaigns, setIsFetchingCampaigns])\r\n\r\n return {\r\n dateRangeID, \r\n setDateRangeID,\r\n campaignsSummaryLoadable,\r\n fetchCampaigns,\r\n campaignDetailID, \r\n setCampaignDetailID,\r\n campaignDetailLoadable,\r\n fetchCampaign,\r\n addNewCampaign,\r\n deleteCampaign\r\n };\r\n}\r\n\r\nexport default useCampaigns;","export const CAMPAIGN_ID_NOTFOUND = -100;","export default __webpack_public_path__ + \"static/media/plus-circle-ico.3c8834d1.svg\";","export default __webpack_public_path__ + \"static/media/hand-ico-white.74d05e73.svg\";","export default __webpack_public_path__ + \"static/media/user-ico-white.51bad28f.svg\";","export default __webpack_public_path__ + \"static/media/number-ico-white.46928a02.svg\";","export const currencyFormatter = new Intl.NumberFormat('en-AU', {\r\n style: 'currency',\r\n currency: 'AUD',\r\n minimumFractionDigits: 2\r\n // These options are needed to round to whole numbers if that's what you want.\r\n //minimumFractionDigits: 0, // (this suffices for whole numbers, but will print 2500.10 as $2,500.1)\r\n //maximumFractionDigits: 0, // (causes 2500.99 to be printed as $2,501)\r\n });\r\n\r\nexport const currencyFormatterNoDigit = new Intl.NumberFormat('en-AU', {\r\n style: 'currency',\r\n currency: 'AUD',\r\n maximumFractionDigits: 0\r\n // These options are needed to round to whole numbers if that's what you want.\r\n //minimumFractionDigits: 0, // (this suffices for whole numbers, but will print 2500.10 as $2,500.1)\r\n //maximumFractionDigits: 0, // (causes 2500.99 to be printed as $2,501)\r\n });\r\n\r\nexport const numberFormatter = new Intl.NumberFormat('en-AU', {\r\n maximumFractionDigits: 0\r\n});","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport handIco from \"assets/img/hand-ico-white.svg\";\r\nimport usrIco from \"assets/img/user-ico-white.svg\";\r\nimport numberIco from \"assets/img/number-ico-white.svg\";\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faChevronDown } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { numberFormatter as formatter } from 'utils/formatter';\r\n\r\nconst Stats = (props) => {\r\n const {\r\n statDates, \r\n selectedDate,\r\n dateSelDropdownOn,\r\n setDateSelDropdownOn,\r\n updateSelDate, \r\n\r\n campaignNames,\r\n selectedCampaign,\r\n campaignSelDropdownOn,\r\n setCampaignSelDropdownOn,\r\n updateSelCampaign,\r\n\r\n traffic, \r\n joins, \r\n upgrades \r\n } = props;\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n \r\n \r\n {\r\n !campaignNames \r\n ?\r\n

Stats

\r\n :\r\n
\r\n

{ setCampaignSelDropdownOn(!campaignSelDropdownOn); e.stopPropagation() }}>{selectedCampaign}

\r\n
\r\n \r\n
\r\n
\r\n }\r\n \r\n\r\n
\r\n

{ setDateSelDropdownOn(!dateSelDropdownOn); e.stopPropagation() }}>{selectedDate}

\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n

\r\n {formatter.format(traffic)}Total clicks\r\n

\r\n

\"Hand

\r\n
\r\n
\r\n
\r\n
\r\n

\r\n {formatter.format(joins)}New users\r\n

\r\n

\"Hand

\r\n
\r\n
\r\n
\r\n
\r\n

\r\n {formatter.format(upgrades)}Sales\r\n

\r\n

\"Hand

\r\n
\r\n
\r\n
\r\n \r\n )\r\n}\r\n\r\nexport default Stats;","import React, { useState, useEffect, useRef } from 'react';\r\nimport classNames from 'classnames';\r\nimport circlePlusIco from \"assets/img/plus-circle-ico.svg\";\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faTrashAlt } from \"@fortawesome/free-solid-svg-icons\";\r\nimport useLookup from 'hooks/useLookup';\r\nimport useCampaigns from 'hooks/useCampaigns';\r\nimport ConfirmPopup from 'components/modals/ConfirmPopup';\r\nimport Stats from 'components/Stats';\r\nimport { BrowserView, MobileView } from 'react-device-detect';\r\nimport useToast from 'hooks/useToast';\r\nimport { Link } from 'react-router-dom';\r\nimport { PAGE_NAV } from 'configs/page';\r\nimport { currencyFormatter, numberFormatter } from 'utils/formatter';\r\n\r\nconst CampaignList = (props) => {\r\n const lookupProvider = useLookup();\r\n const campaignProvider = useCampaigns();\r\n const { statDates } = lookupProvider;\r\n const { dateRangeID,\r\n setDateRangeID,\r\n campaignsSummaryLoadable,\r\n fetchCampaigns,\r\n deleteCampaign\r\n } = campaignProvider;\r\n const toast = useToast();\r\n const mountedRef = useRef(true);\r\n\r\n useEffect(() => {\r\n return () => { \r\n mountedRef.current = false\r\n }\r\n }, [])\r\n \r\n const [campaignList, setCampaignList] = useState();\r\n const { state: campaignListState, contents: campaignListContent } = campaignsSummaryLoadable;\r\n\r\n useEffect(() => {\r\n switch (campaignListState) {\r\n case \"hasValue\":\r\n if(campaignListContent)\r\n setCampaignList(campaignListContent);\r\n break;\r\n case \"hasError\":\r\n toast.error(campaignListContent);\r\n setCampaignList();\r\n break;\r\n case \"loading\":\r\n setCampaignList();\r\n break;\r\n default:\r\n\r\n break;\r\n }\r\n }, [campaignListState, campaignListContent]) // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n const [selectedDate, setSelectedDate] = useState(\"\");\r\n const updateSelDate = (date, e) => {\r\n e.preventDefault();\r\n fetchCampaigns(date.ItemID, campaignListContent);\r\n setDateRangeID(date.ItemID);\r\n setSelectedDate(date.ItemName);\r\n setDateSelDropdownOn(false);\r\n }\r\n\r\n const [dateSelDropdownOn, setDateSelDropdownOn] = useState(false);\r\n\r\n useEffect(() => {\r\n if (!selectedDate && statDates.length > 0) {\r\n const selDate = statDates.find(dt => dt.ItemID === dateRangeID);\r\n if (selDate) mountedRef.current && setSelectedDate(selDate.ItemName);\r\n }\r\n }, [selectedDate, setSelectedDate, statDates, dateRangeID]);\r\n\r\n const [delConfirmPopup, setDelConfirmPopup] = useState(false);\r\n const [selCampaign, setSelCampaign] = useState(null);\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n\r\n const onDelConfirmPopupClosed = ()=>{\r\n setSelCampaign(null);\r\n setDelConfirmPopup(false);\r\n }\r\n\r\n const onDelConfirmPopupConfirmed = ()=>{\r\n if(isSubmitting) return;\r\n if(!selCampaign || selCampaign?.CampaignDetail?.CampaignID < 1){\r\n return;\r\n }\r\n \r\n if(mountedRef.current) {\r\n setIsSubmitting(true);\r\n deleteCampaign( selCampaign.CampaignDetail.CampaignID)\r\n .then(()=>{\r\n if(mountedRef.current) {\r\n onDelConfirmPopupClosed();\r\n }\r\n }, (err)=>{\r\n toast.error(\"Failed to remove campaign\", err);\r\n })\r\n .finally(()=>{ mountedRef.current && setIsSubmitting(false);})\r\n };\r\n }\r\n\r\n const onDelIconClicked = (camp)=>{\r\n setSelCampaign(camp);\r\n setDelConfirmPopup(true);\r\n }\r\n\r\n return (\r\n\r\n
{setDateSelDropdownOn(false);}}> \r\n updateSelDate(date, e)}\r\n traffic={campaignList && campaignList.StatsSummaries && campaignList.StatsSummaries.length > 0 ? campaignList.StatsSummaries.reduce((acc, curr) => acc + curr.Stats.Traffic, 0) : 0} \r\n joins={campaignList && campaignList.StatsSummaries && campaignList.StatsSummaries.length > 0 ? campaignList.StatsSummaries.reduce((acc, curr) => acc + curr.Stats.Joins, 0) : 0} \r\n upgrades={campaignList && campaignList.StatsSummaries && campaignList.StatsSummaries.length > 0 ? campaignList.StatsSummaries.reduce((acc, curr) => acc + curr.Stats.Upgrades, 0) : 0} \r\n />\r\n \r\n
\r\n
\r\n

My campaigns

\r\n

\"+\" Add campaign

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n campaignList\r\n && campaignList.StatsSummaries\r\n && campaignList.StatsSummaries.length > 0\r\n && [...campaignList.StatsSummaries]\r\n .map(c=>({\r\n ...c,\r\n CampaignDetail: {\r\n ...c.CampaignDetail,\r\n Title: c.CampaignDetail.Title ? c.CampaignDetail.Title : 'Campaign', \r\n \r\n }}))\r\n .sort((a, b) => a.CampaignDetail.Title.toLowerCase() > b.CampaignDetail.Title.toLowerCase() ? 1 : -1)\r\n .map((campaign, i) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))\r\n }\r\n \r\n
ClickJoinsSalesEarnings
{campaign.CampaignDetail.Title}{numberFormatter.format(campaign.Stats.Traffic)}{numberFormatter.format(campaign.Stats.Joins)} {campaign.Stats.Traffic > 0 && campaign.Stats.Joins > 0 ? `(${Math.round(campaign.Stats.Joins * 100 / campaign.Stats.Traffic)}%)` : ``}{numberFormatter.format(campaign.Stats.Upgrades)} {campaign.Stats.Upgrades > 0 && campaign.Stats.Joins > 0 ? `(${Math.round(campaign.Stats.Upgrades * 100 / campaign.Stats.Joins)}%)` : ``}{currencyFormatter.format(campaign.Stats.Revenue)}{e.preventDefault(); onDelIconClicked(campaign)}}>
\r\n
\r\n\r\n \r\n {\r\n campaignList\r\n && campaignList.StatsSummaries\r\n && campaignList.StatsSummaries.length > 0\r\n && [...campaignList.StatsSummaries]\r\n .map(c=>({\r\n ...c,\r\n CampaignDetail: {\r\n ...c.CampaignDetail,\r\n Title: c.CampaignDetail.Title ? c.CampaignDetail.Title : 'Campaign', \r\n \r\n }}))\r\n .sort((a, b) => a.CampaignDetail.Title.toLowerCase() > b.CampaignDetail.Title.toLowerCase() ? 1 : -1)\r\n .map((campaign, i) => (\r\n
\r\n
{campaign.CampaignDetail.Title} {e.preventDefault(); onDelIconClicked(campaign)}} />
\r\n
\r\n
\r\n
Click
\r\n
Join
\r\n
Sales
\r\n
Earnings
\r\n
\r\n
\r\n
{numberFormatter.format(campaign.Stats.Traffic)}
\r\n
{numberFormatter.format(campaign.Stats.Joins)} {campaign.Stats.Traffic > 0 && campaign.Stats.Joins > 0 ? `(${Math.round(campaign.Stats.Joins * 100 / campaign.Stats.Traffic)}%)` : ``}
\r\n
{numberFormatter.format(campaign.Stats.Upgrades)} {campaign.Stats.Upgrades > 0 && campaign.Stats.Joins > 0 ? `(${Math.round(campaign.Stats.Upgrades * 100 / campaign.Stats.Joins)}%)` : ``}
\r\n
{currencyFormatter.format(campaign.Stats.Revenue)}
\r\n
\r\n
\r\n
\r\n ))\r\n }\r\n
\r\n\r\n \r\n

Are you sure you want to delete this campaign : {selCampaign?.CampaignDetail?.Title}?

\r\n
\r\n\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default CampaignList;","export default __webpack_public_path__ + \"static/media/dashboard-empty.0085d9c9.svg\";","export default __webpack_public_path__ + \"static/media/next-arrow-circle-ico-green.ca6e4916.svg\";","import React, { useEffect, useState, useRef } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport classNames from 'classnames';\r\n//recoil/atom related\r\nimport {useRecoilValueLoadable, useRecoilCallback} from \"recoil\"\r\nimport earningSummaryAtom from 'recoil/stats/earningSummary';\r\n//configs\r\nimport { PAGE_NAV } from 'configs/page';\r\nimport { MENUS } from 'configs/page';\r\n//layout\r\nimport LoggedInLayout from 'layouts/LoggedInLayout';\r\n//hooks\r\nimport useLeftMenu from 'hooks/useLeftMenu';\r\nimport useAccount from 'hooks/useAccount';\r\nimport useStatsService from 'services/stats';\r\nimport useToast from 'hooks/useToast';\r\nimport useCampaigns from 'hooks/useCampaigns';\r\n//components\r\nimport CampaignList from 'components/CampaignList';\r\n//utils\r\nimport { currencyFormatterNoDigit as formatter } from 'utils/formatter';\r\nimport moment from 'moment';\r\n//icons\r\nimport EmptyStateGraphic from 'assets/img/dashboard-empty.svg'\r\nimport arrowIco from \"assets/img/next-arrow-circle-ico-green.svg\";;\r\n\r\n\r\nconst AffiliateDashboard = (props) => {\r\n const statsService = useStatsService();\r\n const earningsSummaryLoadable = useRecoilValueLoadable(earningSummaryAtom);\r\n const { state: earningsSummaryState, contents: earningsSummaryContent } = earningsSummaryLoadable;\r\n\r\n const [leftMenu, setLeftMenu] = useLeftMenu();\r\n const accountProvider = useAccount();\r\n const toast = useToast();\r\n const { profiles } = accountProvider;\r\n const { Name } = profiles;\r\n const mountedRef = useRef(true);\r\n const campaignProvider = useCampaigns();\r\n const {campaignsSummaryLoadable } = campaignProvider;\r\n const { state: campaignListState, contents: campaignListContent } = campaignsSummaryLoadable;\r\n const [campaignList, setCampaignList] = useState(null);\r\n useEffect(() => {\r\n switch (campaignListState) {\r\n case \"hasValue\":\r\n if(campaignListContent)\r\n setCampaignList(campaignListContent);\r\n break;\r\n default:\r\n break;\r\n }\r\n }, [campaignListState, campaignListContent]) // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n \r\n useEffect(() => {\r\n return () => { \r\n mountedRef.current = false\r\n }\r\n }, [])\r\n\r\n const fetchEarningSummary = useRecoilCallback(({ set }) => async () => {\r\n return statsService.getTotalEarnings()\r\n .then(response=>set(earningSummaryAtom, response.data))\r\n .catch(err=> {\r\n toast.error(err);\r\n });\r\n });\r\n const [isFetchingEarnings, setIsFetchingEarnings] = useState(false);\r\n\r\n useEffect(()=>{\r\n if(isFetchingEarnings) return;\r\n if(earningsSummaryState===\"hasValue\" && !earningsSummaryContent){\r\n setIsFetchingEarnings(true)\r\n fetchEarningSummary()\r\n .finally(()=> {if(mountedRef.current)setIsFetchingEarnings(false)});\r\n }\r\n },[earningsSummaryState, earningsSummaryContent, fetchEarningSummary, isFetchingEarnings])\r\n\r\n useEffect(() => {\r\n if (leftMenu.value !== \"DASHBOARD\" && mountedRef.current )\r\n setLeftMenu(MENUS.find(menu => menu.value === \"DASHBOARD\"));\r\n\r\n }, [leftMenu, setLeftMenu]);\r\n\r\n return (\r\n\r\n \r\n\r\n {\r\n campaignListState === \"hasValue\" \r\n && campaignList \r\n && campaignList.StatsSummaries\r\n && campaignList.StatsSummaries.length === 0 \r\n &&\r\n
\r\n

\"Empty

\r\n

LET’S GET THE BALL ROLLING

\r\n

Creating and launching a campaign is pretty easy and we’ll guide you through the process.

\r\n

CREATE MY FIRST CAMPAIGN

\r\n
\r\n }\r\n {\r\n campaignListState === \"hasValue\" \r\n && campaignList \r\n && campaignList.StatsSummaries\r\n && campaignList.StatsSummaries.length > 0 \r\n &&\r\n <>\r\n
\r\n

Welcome {Name},

\r\n

Here whats happening in your Affiliate account

\r\n
\r\n\r\n
\r\n \r\n {\r\n //skeleton goes here\r\n earningsSummaryState === \"loading\" &&
\r\n }\r\n {\r\n earningsSummaryState === \"hasError\" \r\n && <>\r\n
\r\n
\r\n

Next Payment

\r\n
\r\n
\r\n

$0

\r\n

Expected payment dateXX XXXX XXXX

\r\n
\r\n
\r\n\r\n
\r\n
\r\n

Total earnings

\r\n
\r\n
\r\n

$0

\r\n

See more \"\" />

\r\n
\r\n
\r\n \r\n }\r\n {\r\n earningsSummaryState === \"hasValue\" && earningsSummaryContent\r\n && <>\r\n
\r\n
\r\n

Next Payment

\r\n
\r\n
\r\n

{formatter.format(parseInt(earningsSummaryContent.OutstandingBalance))}.{parseInt((earningsSummaryContent.OutstandingBalance % 1).toFixed(2).substring(2))}

\r\n

Expected payment date{(moment().date() < 16 ? moment() : moment().startOf('month').add(1, 'M')).format(\"15 MMMM YYYY\")}

\r\n
\r\n
\r\n\r\n
\r\n
\r\n

Total earnings

\r\n
\r\n
\r\n

{formatter.format(parseInt(earningsSummaryContent.TotalEarned))}.{parseInt((earningsSummaryContent.TotalEarned % 1).toFixed(2).substring(2))}

\r\n

See more \"\" />

\r\n
\r\n
\r\n \r\n }\r\n \r\n
\r\n \r\n \r\n } \r\n\r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nexport default AffiliateDashboard;","import React, { useEffect, useState} from 'react';\r\nimport LoggedInLayout from 'layouts/LoggedInLayout';\r\nimport useLeftMenu from 'hooks/useLeftMenu';\r\nimport { MENUS } from 'configs/page';\r\nimport CampaignList from 'components/CampaignList';\r\nimport { useRef } from 'react';\r\nimport useCampaigns from 'hooks/useCampaigns';\r\nimport EmptyStateGraphic from 'assets/img/dashboard-empty.svg';\r\nimport { Link } from 'react-router-dom';\r\nimport { PAGE_NAV } from 'configs/page';\r\n\r\nconst Campaigns = (props) => {\r\n const [leftMenu, setLeftMenu] = useLeftMenu();\r\n const mountedRef = useRef(true);\r\n\r\n const campaignProvider = useCampaigns();\r\n const {campaignsSummaryLoadable } = campaignProvider;\r\n const { state: campaignListState, contents: campaignListContent } = campaignsSummaryLoadable;\r\n const [campaignList, setCampaignList] = useState(null);\r\n useEffect(() => {\r\n switch (campaignListState) {\r\n case \"hasValue\":\r\n if(campaignListContent)\r\n setCampaignList(campaignListContent);\r\n break;\r\n default:\r\n break;\r\n }\r\n }, [campaignListState, campaignListContent]) // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n useEffect(() => {\r\n return () => { \r\n mountedRef.current = false\r\n }\r\n }, [])\r\n \r\n useEffect(()=>{\r\n if(leftMenu.value !== \"CAMPAIGNS\" && mountedRef.current) setLeftMenu(MENUS.find(menu=>menu.value===\"CAMPAIGNS\"));\r\n }, [leftMenu, setLeftMenu]);\r\n\r\n return (\r\n \r\n {\r\n campaignListState === \"hasValue\" \r\n && campaignList \r\n && campaignList.StatsSummaries\r\n && campaignList.StatsSummaries.length === 0 \r\n &&\r\n
\r\n

\"Empty

\r\n

LET’S GET THE BALL ROLLING

\r\n

Creating and launching a campaign is pretty easy and we’ll guide you through the process.

\r\n

CREATE MY FIRST CAMPAIGN

\r\n
\r\n }\r\n {\r\n campaignListState === \"hasValue\" \r\n && campaignList \r\n && campaignList.StatsSummaries\r\n && campaignList.StatsSummaries.length > 0 \r\n &&\r\n \r\n }\r\n\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default Campaigns;","export default __webpack_public_path__ + \"static/media/tick-circle-green.dd01a5fe.svg\";","import React, { useState, useEffect, useRef } from 'react';\r\nimport classNames from 'classnames';\r\nimport LoggedInLayout from 'layouts/LoggedInLayout';\r\nimport useLeftMenu from 'hooks/useLeftMenu';\r\nimport { MENUS } from 'configs/page';\r\nimport ConfirmPopup from 'components/modals/ConfirmPopup';\r\nimport tickCircleGreen from 'assets/img/tick-circle-green.svg';\r\nimport useLookup from 'hooks/useLookup';\r\nimport { useForm } from \"react-hook-form\";\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport * as Yup from 'yup';\r\nimport ButtonWithSpinner from 'components/buttons/ButtonSpinner';\r\nimport useCampaigns from 'hooks/useCampaigns';\r\nimport useToast from 'hooks/useToast';\r\nimport { PAGE_NAV } from 'configs/page';\r\n\r\nconst AddCompaign = (props) => {\r\n const {history} = props;\r\n const [leftMenu, setLeftMenu] = useLeftMenu();\r\n const lookupProvider = useLookup();\r\n const {landingPages, getLandingPages} = lookupProvider;\r\n const mountedRef = useRef(true);\r\n const [fetchingLandingPages, setFetchingLandingPages] = useState(false);\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n const [addConfirmPopup, setAddConfirmPopup] = useState(false);\r\n const campaignProvider = useCampaigns();\r\n const {addNewCampaign} = campaignProvider;\r\n const toast = useToast();\r\n const [newID, setNewID] = useState(-1);\r\n\r\n const validationSchema = Yup.object().shape({\r\n title: Yup.string().trim().required(\"Required\"),\r\n landingPage: Yup.string().trim().required(\"Required\"),\r\n });\r\n\r\n const {\r\n handleSubmit,\r\n formState: { errors },\r\n register,\r\n } = useForm({\r\n mode: 'all',\r\n defaultValues: {\r\n title: '',\r\n landingPage: ''\r\n },\r\n resolver: yupResolver(validationSchema)\r\n });\r\n\r\n \r\n const onSubmitHandler = async(frmData, e)=>{\r\n e.preventDefault();\r\n if(isSubmitting) return;\r\n\r\n const submittedData = {\r\n Title: frmData.title,\r\n LandingPage: frmData.landingPage\r\n };\r\n\r\n if(mountedRef.current) {\r\n setIsSubmitting(true);\r\n addNewCampaign(submittedData)\r\n .then((resp)=>{\r\n if(mountedRef.current) {\r\n setNewID(resp);\r\n setAddConfirmPopup(true);\r\n }\r\n }, (err)=>{\r\n toast.error(\"Failed to add new campaign\", err);\r\n })\r\n .finally(()=>{ mountedRef.current && setIsSubmitting(false);})\r\n };\r\n }\r\n \r\n useEffect(() => {\r\n return () => { \r\n mountedRef.current = false\r\n }\r\n }, []);\r\n\r\n useEffect(()=>{\r\n if(leftMenu.value !== \"CAMPAIGNS\" && mountedRef.current)\r\n setLeftMenu(MENUS.find(menu=>menu.value===\"CAMPAIGNS\"));\r\n }, [leftMenu, setLeftMenu]);\r\n\r\n useEffect(()=>{\r\n if(fetchingLandingPages) return;\r\n if(landingPages.length === 0){\r\n setFetchingLandingPages(true);\r\n getLandingPages().finally(()=>{ mountedRef.current && setFetchingLandingPages(false)})\r\n }\r\n }, [landingPages, fetchingLandingPages, setFetchingLandingPages, getLandingPages])\r\n\r\n const onSuccessPopupClose = ()=>{\r\n mountedRef.current && setAddConfirmPopup(false);\r\n history.push(`${PAGE_NAV.CAMPAIGNS}/${newID}`)\r\n }\r\n\r\n return(\r\n \r\n
\r\n

Add new campaign

\r\n
\r\n
\r\n
\r\n

\r\n \r\n \r\n \r\n {errors?.title?.message}\r\n \r\n

\r\n\r\n {/*

\r\n \r\n \r\n \r\n \r\n

*/}\r\n\r\n

\r\n \r\n \r\n \r\n \r\n {errors?.landingPage?.message}\r\n

\r\n
\r\n
\r\n

\r\n \r\n

\r\n
\r\n
\r\n
\r\n \r\n

\"Tick

\r\n

Your campaign has been added.

\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default AddCompaign;","import React, { useEffect, useState, useRef } from 'react';\r\nimport LoggedInLayout from 'layouts/LoggedInLayout';\r\nimport useLeftMenu from 'hooks/useLeftMenu';\r\nimport { MENUS } from 'configs/page';\r\nimport { useParams } from 'react-router';\r\nimport useCampaigns from 'hooks/useCampaigns';\r\nimport classNames from 'classnames';\r\nimport useLookup from 'hooks/useLookup';\r\nimport useToast from 'hooks/useToast';\r\nimport moment from 'moment';\r\nimport { numberFormatter } from 'utils/formatter';\r\nimport { PAGE_NAV } from 'configs/page';\r\nimport Stats from 'components/Stats';\r\nimport ConfirmPopup from 'components/modals/ConfirmPopup';\r\n\r\nconst CampaignDetails = (props) => {\r\n\r\n const { history } = props;\r\n const toast = useToast();\r\n const lookupProvider = useLookup();\r\n const campaignProvider = useCampaigns();\r\n const [leftMenu, setLeftMenu] = useLeftMenu();\r\n let { campaignID: campaignDetailID } = useParams();\r\n const {\r\n dateRangeID,\r\n setDateRangeID,\r\n fetchCampaigns,\r\n campaignsSummaryLoadable,\r\n // campaignDetailID,\r\n // setCampaignDetailID,\r\n campaignDetailLoadable,\r\n fetchCampaign,\r\n deleteCampaign\r\n\r\n } = campaignProvider;\r\n const { state: campaignDetailState, contents: campaignDetailContent } = campaignDetailLoadable;\r\n const { state: campaignListState, contents: campaignListContent } = campaignsSummaryLoadable;\r\n const { statDates } = lookupProvider;\r\n const [campaignList, setCampaignList] = useState();\r\n const [dateSelDropdownOn, setDateSelDropdownOn] = useState(false);\r\n const [selectedDate, setSelectedDate] = useState(\"\");\r\n const [ddlSelCampaign, setDdlSelCampaign] = useState(false);\r\n const [selectedCampaign, setSelectedCampaign] = useState(\"\");\r\n const [isFetchingCampaign, setIsFetchingCampaign] = useState(false);\r\n const mountedRef = useRef(true);\r\n\r\n useEffect(() => {\r\n return () => { \r\n mountedRef.current = false\r\n }\r\n }, [])\r\n\r\n //setup menu\r\n useEffect(() => {\r\n if (leftMenu.value !== \"CAMPAIGNS\")\r\n mountedRef.current && setLeftMenu(MENUS.find(menu => menu.value === \"CAMPAIGNS\"));\r\n }, [leftMenu, setLeftMenu]);\r\n\r\n useEffect(() => {\r\n if (isFetchingCampaign) return;\r\n if (!campaignDetailID) return;\r\n if(isNaN(campaignDetailID)) return;\r\n if(parseInt(campaignDetailID) < 1) return;\r\n if(campaignDetailState !== \"hasValue\") return;\r\n if (campaignDetailContent?.CampaignDetail?.CampaignID === parseInt(campaignDetailID)) return;\r\n \r\n mountedRef.current && setIsFetchingCampaign(true);\r\n fetchCampaign(campaignDetailID, dateRangeID)\r\n .finally(() => mountedRef.current && setIsFetchingCampaign(false));\r\n }, [campaignDetailID, campaignDetailState, campaignDetailContent, dateRangeID, fetchCampaign, isFetchingCampaign]);\r\n\r\n useEffect(() => {\r\n switch (campaignDetailState) {\r\n case \"hasValue\":\r\n if (campaignDetailContent)\r\n setCampaignList(campaignDetailContent);\r\n break;\r\n case \"hasError\":\r\n toast.error(campaignDetailContent);\r\n setCampaignList();\r\n break;\r\n case \"loading\":\r\n setCampaignList();\r\n break;\r\n default:\r\n\r\n break;\r\n\r\n }\r\n }, [campaignDetailState, campaignDetailContent, toast]);\r\n\r\n useEffect(() => {\r\n if (!campaignDetailID) return;\r\n if(isNaN(campaignDetailID)) return;\r\n if (!selectedDate && statDates.length > 0) {\r\n const selDate = statDates.find(dt => dt.ItemID === dateRangeID);\r\n if (selDate) \r\n mountedRef.current && setSelectedDate(selDate.ItemName);\r\n }\r\n }, [selectedDate, setSelectedDate, statDates, dateRangeID, campaignDetailID])\r\n\r\n useEffect(() => {\r\n if (!campaignDetailID) return;\r\n if(isNaN(campaignDetailID)) return;\r\n\r\n if (campaignListState === \"hasValue\"\r\n && campaignListContent\r\n && campaignListContent.StatsSummaries\r\n && campaignListContent.StatsSummaries.length > 0\r\n && campaignDetailID > 0\r\n ) {\r\n const selDate = campaignListContent.StatsSummaries\r\n .find(dt => dt.CampaignDetail.CampaignID === parseInt(campaignDetailID));\r\n \r\n if (selDate && selDate.CampaignDetail.Title !== selectedCampaign) {\r\n mountedRef.current && setSelectedCampaign(selDate.CampaignDetail.Title)\r\n };\r\n }\r\n }, [selectedCampaign, setSelectedCampaign, campaignListState, campaignListContent, campaignDetailID])\r\n \r\n const [campaignNames, setCampaignNames] = useState([]);\r\n\r\n useEffect(() => {\r\n \r\n if (!campaignDetailID) return;\r\n if(isNaN(campaignDetailID)) return;\r\n if (campaignNames && campaignNames.length > 0) return;\r\n if (campaignListState === \"hasValue\" &&\r\n campaignListContent\r\n && campaignListContent.StatsSummaries\r\n && campaignListContent.StatsSummaries.length > 0) {\r\n mountedRef.current && \r\n setCampaignNames([...campaignListContent.StatsSummaries]\r\n .sort((a, b) => a.CampaignDetail.Title.toLowerCase() > b.CampaignDetail.Title.toLowerCase() ? 1 : -1));\r\n }\r\n }, [campaignListState, campaignListContent, campaignNames, setCampaignNames, campaignDetailID]);\r\n\r\n const [traffic, setTraffic] = useState(0);\r\n const [join, setJoin] = useState(0);\r\n const [sales, setSales] = useState(0)\r\n\r\n useEffect(() => {\r\n if (!campaignDetailID) return;\r\n if(isNaN(campaignDetailID)) return;\r\n if (campaignList\r\n && campaignList.Stats\r\n && campaignList.Stats.length > 0) {\r\n mountedRef.current && setTraffic(campaignList.Stats.reduce((acc, curr) => acc + curr.Traffic, 0));\r\n mountedRef.current && setJoin(campaignList.Stats.reduce((acc, curr) => acc + curr.Joins, 0));\r\n mountedRef.current && setSales(campaignList.Stats.reduce((acc, curr) => acc + curr.Upgrades, 0));\r\n }\r\n else {\r\n mountedRef.current && setTraffic(0);\r\n mountedRef.current && setJoin(0);\r\n mountedRef.current && setSales(0);\r\n }\r\n }, [campaignList, traffic, setTraffic, join, setJoin, sales, setSales, campaignDetailID])\r\n\r\n useEffect(() => {\r\n if(!campaignDetailID || isNaN(campaignDetailID)){\r\n history.push(PAGE_NAV.CAMPAIGNS);\r\n return;\r\n }\r\n if (campaignDetailID > 0 \r\n && campaignListState === \"hasValue\" \r\n && campaignListContent\r\n && campaignListContent.StatsSummaries\r\n && campaignListContent.StatsSummaries.length > 0) {\r\n \r\n const selDate = campaignListContent?.StatsSummaries\r\n .find(dt => dt.CampaignDetail.CampaignID === parseInt(campaignDetailID));\r\n \r\n if(!selDate){\r\n history.push(PAGE_NAV.CAMPAIGNS);\r\n return;\r\n }\r\n }\r\n \r\n }, [campaignListState, campaignListContent, campaignDetailID, history]);\r\n\r\n const updateSelDate = (date, e) => {\r\n e.preventDefault();\r\n setDateRangeID(date.ItemID);\r\n setSelectedDate(date.ItemName);\r\n fetchCampaigns(date.ItemID, campaignListContent)\r\n .then(() => { \r\n fetchCampaign(campaignDetailID, date.ItemID) \r\n })\r\n setDateSelDropdownOn(false);\r\n }\r\n\r\n const updateSelectedCampaign = (campaign, e) => {\r\n e.preventDefault();\r\n setDdlSelCampaign(false);\r\n history.push(`${PAGE_NAV.CAMPAIGNS}/${campaign.CampaignDetail.CampaignID}`);\r\n }\r\n\r\n const [delConfirmPopup, setDelConfirmPopup] = useState(false);\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n\r\n const onDeleteConfirmed = ()=>{\r\n if(isSubmitting) return;\r\n if(!campaignDetailID || isNaN(campaignDetailID) || parseInt(campaignDetailID)< 1){\r\n return;\r\n }\r\n \r\n if(mountedRef.current) {\r\n setIsSubmitting(true);\r\n deleteCampaign(campaignDetailID)\r\n .then(()=>{\r\n if(mountedRef.current) {\r\n setDelConfirmPopup(false);\r\n setIsSubmitting(false);\r\n history.push(PAGE_NAV.CAMPAIGNS);\r\n }\r\n }, (err)=>{\r\n toast.error(\"Failed to remove campaign\", err);\r\n })\r\n .finally(()=>{ mountedRef.current && setIsSubmitting(false);})\r\n };\r\n }\r\n\r\n const copyLink = useRef(null);\r\n const copyLinkToClipboard = () => {\r\n copyLink.current.select();\r\n document.execCommand('copy');\r\n }\r\n\r\n return (\r\n
{setDdlSelCampaign(false); setDateSelDropdownOn(false);}}>\r\n \r\n\r\n updateSelDate(date, e)}\r\n\r\n campaignNames={campaignNames}\r\n selectedCampaign={selectedCampaign}\r\n campaignSelDropdownOn={ddlSelCampaign}\r\n setCampaignSelDropdownOn={setDdlSelCampaign}\r\n updateSelCampaign={(campaign, e) => updateSelectedCampaign(campaign, e)}\r\n\r\n traffic={traffic}\r\n joins={join}\r\n upgrades={sales}\r\n />\r\n\r\n
\r\n

Your generated link is:

\r\n
\r\n \r\n

\r\n
\r\n

Use this link with any content you post to direct traffic to the landing page

\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n {\r\n campaignList\r\n && campaignList.Stats\r\n && campaignList.Stats.length > 0\r\n && [...campaignList.Stats]\r\n .sort((a, b) => a.Date > b.Date ? 1 : -1)\r\n .map((campaign, i) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ))\r\n }\r\n {\r\n campaignList\r\n && campaignList.Stats\r\n && !campaignList.Stats.length > 0 &&\r\n \r\n \r\n \r\n }\r\n \r\n
DateClicksJoinsSalesEarnings
{moment(campaign.Date).format(\"DD/MM/YYYY\")}{numberFormatter.format(campaign.Traffic)}{numberFormatter.format(campaign.Joins)} {campaign.Traffic > 0 && campaign.Joins > 0 ? `(${Math.round(campaign.Joins * 100 / campaign.Traffic)}%)` : ``}{numberFormatter.format(campaign.Upgrades)} {campaign.Upgrades > 0 && campaign.Joins > 0 ? `(${Math.round(campaign.Upgrades * 100 / campaign.Joins)}%)` : ``}
Your campaign activity will appear here
\r\n

\r\n
\r\n\r\n\r\n setDelConfirmPopup(false)}\r\n confirm={onDeleteConfirmed}\r\n heading=\"Delete campaign\" \r\n btnText=\"Delete campaign\">\r\n

Are you sure you want to delete this campaign: {selectedCampaign}?

\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default CampaignDetails;","// import banner640x100JPG from \"assets/img/banners/640x100.jpg\";\r\n// import banner728x90JPG from \"assets/img/banners/728x90.jpg\";\r\n// import banner1456x180JPG from \"assets/img/banners/1456x180.jpg\";\r\n// import banner320x1200JPG from \"assets/img/banners/320x1200.jpg\";\r\n// import banner300x600JPG from \"assets/img/banners/300x600.jpg\";\r\n// import banner600x1200JPG from \"assets/img/banners/600x1200.jpg\";\r\n// import banner300x250JPG from \"assets/img/banners/300x250.jpg\";\r\n// import banner600x500JPG from \"assets/img/banners/600x500.jpg\";\r\n// import banner160x600JPG from \"assets/img/banners/160x600.jpg\";\r\n// import banner320x50GIF from \"assets/img/banners/320x50.gif\";\r\n// import banner728x90GIF from \"assets/img/banners/728x90.gif\";\r\n// import banner1456x180GIF from \"assets/img/banners/1456x180.gif\";\r\n// import banner300x600GIF from \"assets/img/banners/300x600.gif\";\r\n// import banner600x1200GIF from \"assets/img/banners/600x1200.gif\";\r\n// import banner160x600GIF from \"assets/img/banners/160x600.gif\";\r\n// import banner320x1200GIF from \"assets/img/banners/320x1200.gif\";\r\n// import banner300x250GIF from \"assets/img/banners/300x250.gif\";\r\n// import banner600x500GIF from \"assets/img/banners/600x500.gif\";\r\n\r\nexport const dating = [\r\n {\r\n name : 'banner 640x100 JPG',\r\n //img : banner640x100JPG,\r\n url: 'https://redhotpie.com.au/image/banners/dating/640x100.jpg',\r\n },\r\n {\r\n name : 'banner 728x90 JPG',\r\n //img : banner728x90JPG\r\n url: 'https://redhotpie.com.au/image/banners/dating/728x90.jpg',\r\n },\r\n {\r\n name : 'banner 1456x180 JPG',\r\n //img : banner1456x180JPG\r\n url: 'https://redhotpie.com.au/image/banners/dating/1456x180.jpg',\r\n },\r\n {\r\n name : 'banner 320x1200 JPG',\r\n //img : banner320x1200JPG\r\n url : 'https://redhotpie.com.au/image/banners/dating/320x1200.jpg',\r\n },\r\n {\r\n name : 'banner 300x600 JPG',\r\n //img : banner300x600JPG,\r\n url: 'https://redhotpie.com.au/image/banners/dating/300x600.jpg'\r\n },\r\n {\r\n name : 'banner 600x1200 JPG',\r\n //img : banner600x1200JPG\r\n url : 'https://redhotpie.com.au/image/banners/dating/600x1200.jpg'\r\n },\r\n {\r\n name : 'banner 300x250 JPG',\r\n //img: banner300x250JPG\r\n url: 'https://redhotpie.com.au/image/banners/dating/300x250.jpg'\r\n },\r\n {\r\n name : 'banner 600x500 JPG',\r\n //img : banner600x500JPG\r\n url: 'https://redhotpie.com.au/image/banners/dating/600x500.jpg'\r\n },\r\n {\r\n name : 'banner 160x600 JPG',\r\n //img : banner160x600JPG\r\n url: 'https://redhotpie.com.au/image/banners/dating/160x600.jpg'\r\n },\r\n {\r\n name : 'banner 320x50 GIF',\r\n //img : banner320x50GIF\r\n url: 'https://redhotpie.com.au/image/banners/dating/320x50.gif'\r\n },\r\n\r\n {\r\n name : 'banner 728x90 GIF',\r\n //img : banner728x90GIF\r\n url: 'https://redhotpie.com.au/image/banners/dating/728x90.gif'\r\n },\r\n {\r\n name : 'banner 1456x180 GIF',\r\n //img : banner1456x180GIF\r\n url: 'https://redhotpie.com.au/image/banners/dating/1456x180.gif'\r\n },\r\n {\r\n name : 'banner 300x600 GIF',\r\n //img : banner300x600GIF\r\n url: 'https://redhotpie.com.au/image/banners/dating/300x600.gif'\r\n },\r\n {\r\n name : 'banner 600x1200 GIF',\r\n //img : banner600x1200GIF\r\n url: 'https://redhotpie.com.au/image/banners/dating/600x1200.gif'\r\n },\r\n {\r\n name : 'banner 160x600 GIF',\r\n //img : banner160x600GIF\r\n url: 'https://redhotpie.com.au/image/banners/dating/160x600.gif'\r\n },\r\n {\r\n name : 'banner 320x1200 GIF',\r\n //img : banner320x1200GIF\r\n url: 'https://redhotpie.com.au/image/banners/dating/320x1200.gif'\r\n },\r\n {\r\n name : 'banner 300x250 GIF',\r\n //img : banner300x250GIF\r\n url: 'https://redhotpie.com.au/image/banners/dating/300x250.gif'\r\n },\r\n {\r\n name : 'banner 600x500 GIF',\r\n //img : banner600x500GIF\r\n url: 'https://redhotpie.com.au/image/banners/dating/600x500.gif'\r\n }\r\n];\r\n\r\nexport const hookups = {\r\n\r\n};\r\n\r\nexport const swingers = [\r\n {\r\n name: \"SwingersBoard 728x200 GIF\",\r\n url: \"https://redhotpie.com.au/image/banners/swingers/SwingersBoard-728x200.gif\"\r\n },\r\n {\r\n name: \"SwingersBoard 728x200 JPG\",\r\n url: \"https://redhotpie.com.au/image/banners/swingers/SwingersBoard-728x200.jpg\"\r\n },\r\n {\r\n name: \"SwingersBoard 300x250 JPG\",\r\n url: \"https://redhotpie.com.au/image/banners/swingers/SwingersBoard-300x250.jpg\"\r\n },\r\n {\r\n name: \"SwingersBoard 300x250 GIF\",\r\n url: \"https://redhotpie.com.au/image/banners/swingers/SwingersBoard-300x250.jpg\"\r\n }\r\n];\r\n\r\nexport const fetish = {\r\n\r\n};\r\n\r\nexport const logo = {\r\n\r\n};","import React, { useEffect, useState} from 'react';\r\nimport classNames from \"classnames\";\r\nimport LoggedInLayout from 'layouts/LoggedInLayout';\r\nimport useLeftMenu from 'hooks/useLeftMenu';\r\nimport { MENUS } from 'configs/page';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faFolderOpen } from \"@fortawesome/free-solid-svg-icons\";\r\n\r\n// import banner640x100 from \"assets/img/banners/640x100.jpg\";\r\n// import banner728x90 from \"assets/img/banners/728x90.jpg\";\r\n// import banner1456x180 from \"assets/img/banners/1456x180.jpg\";\r\n// import banner320x1200 from \"assets/img/banners/320x1200.jpg\";\r\n// import banner300x600 from \"assets/img/banners/300x600.jpg\";\r\n\r\nimport { dating, swingers } from 'assets/banners';\r\n\r\nconst Resources = (props) => {\r\n const [leftMenu, setLeftMenu] = useLeftMenu();\r\n\r\n const [tabIndex, setTabIndex] = useState(1);\r\n \r\n useEffect(()=>{\r\n if(leftMenu.value !== \"RESOURCES\")\r\n setLeftMenu(MENUS.find(menu=>menu.value===\"RESOURCES\"));\r\n }, [leftMenu, setLeftMenu]);\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n
    \r\n
  • setTabIndex(1)}>Dating
  • \r\n
  • setTabIndex(2)}>Hookups
  • \r\n
  • setTabIndex(3)}>Swingers
  • \r\n
  • setTabIndex(4)}>Fetish
  • \r\n
  • setTabIndex(5)}>Logo
  • \r\n
\r\n
\r\n
\r\n
\r\n {/*

\"banner

\r\n

\"banner

\r\n

\"banner

\r\n

\"banner

\r\n

\"banner

*/}\r\n {\r\n dating.map((banner, i)=>(\r\n

{banner.name}

\r\n ))\r\n }\r\n\r\n
\r\n
\r\n

\r\n
\r\n
\r\n {\r\n swingers.map((banner, i)=>(\r\n

{banner.name}

\r\n ))\r\n }\r\n
\r\n
\r\n

\r\n
\r\n
\r\n

\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default Resources;","export default __webpack_public_path__ + \"static/media/camera-ico.5d5cf9a6.svg\";","export default __webpack_public_path__ + \"static/media/send-ico.7ce3f567.svg\";","import React, { useState} from 'react';\r\nimport classNames from 'classnames';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faChevronLeft } from \"@fortawesome/free-solid-svg-icons\";\r\nimport plusGreenCircle from 'assets/img/plus-green-circle-ico.svg';\r\nimport crossRedCircle from \"assets/img/cross-red-circle-ico.svg\";\r\n\r\nimport { yupResolver } from '@hookform/resolvers/yup';\r\nimport { useForm } from \"react-hook-form\";\r\nimport * as Yup from 'yup';\r\n\r\nimport ButtonWithSpinner from './buttons/ButtonSpinner';\r\n\r\nimport imageCompression from \"browser-image-compression\";\r\n\r\nimport useToast from \"hooks/useToast\";\r\nimport useSupport from 'hooks/useSupport';\r\n\r\nimport ClipLoader from \"react-spinners/ClipLoader\";\r\n\r\nconst Message = (props) => {\r\n const toast = useToast();\r\n const supportProvider = useSupport();\r\n\r\n const validationSchema = Yup.object().shape({\r\n message: Yup.string().trim().required(\"Required\"),\r\n });\r\n const {\r\n handleSubmit,\r\n formState: { errors },\r\n register,\r\n } = useForm({\r\n defaultValues: {\r\n message: \"\"\r\n },\r\n resolver: yupResolver(validationSchema)\r\n });\r\n\r\n const { isOpenInPopup = false, ticketRef = '', onBackClicked, postProcFunc = ()=>{}, close} = props;\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n const [isUploading, setIsUploading] = useState(false);\r\n const [attachments, setAttachments] = useState([]);\r\n\r\n const handleUpload = async(event) => {\r\n if(isUploading) return;\r\n setIsUploading(true);\r\n const file = event.target.files[0];\r\n \r\n try {\r\n const compressedFile = await imageCompression(file, {maxSizeMB: 4, maxWidthOrHeight: 1920});\r\n //note compressedFile is a blob, convert it to file for uploading\r\n const data = new FormData();\r\n data.append(\"file\", new File([compressedFile], file.name));\r\n \r\n await supportProvider.uploadAttachment(data)\r\n .then((response)=>{\r\n setAttachments(prev=>([...response.data,...prev]));\r\n setIsUploading(false);\r\n }, (err)=>{toast.error(\"Failed to upload image\", err);setIsUploading(false);});\r\n \r\n } catch (error) {\r\n setIsUploading(false);\r\n toast.error(error);\r\n }\r\n }\r\n\r\n const handleRemoveAttachment = (id)=>{\r\n const atts = attachments.filter(a=>a.FileID !== id);\r\n setAttachments(atts);\r\n }\r\n\r\n const onSubmitHandler = async (frmData, e) => {\r\n e.preventDefault();\r\n\r\n if(isSubmitting) return;\r\n setIsSubmitting(true);\r\n\r\n const submittedData = {\r\n TicketRef : ticketRef,\r\n Message : frmData.message,\r\n Attachments: attachments.map(att=>att.FileID)\r\n };\r\n\r\n await supportProvider.addTicketReply(submittedData)\r\n .then(()=>{\r\n setIsSubmitting(false);\r\n postProcFunc();\r\n }, (err)=>{\r\n setIsSubmitting(false);\r\n toast.error(\"Failed to reply\", err);\r\n });\r\n }\r\n\r\n const handleCloseBtn = (event) => {\r\n event.preventDefault();\r\n if(!isOpenInPopup) {\r\n onBackClicked();\r\n }else {\r\n close();\r\n }\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n
\r\n {/* {showBackBtn &&

{event.preventDefault();onBackClicked();}} title=\"Click to go back\">

} */}\r\n

\r\n

\r\n Ticket detail\r\n Ticket ID: #{ticketRef}\r\n

\r\n

\r\n
\r\n
\r\n

\r\n \r\n {errors?.message?.message && {errors?.message?.message}}\r\n

\r\n
\r\n
\r\n {event.target.value = null}} />\r\n {\r\n attachments.length > 0 \r\n ?\r\n\r\n
\r\n {attachments.map((file, i)=>(\r\n \r\n

\r\n {`attachment\r\n handleRemoveAttachment(file.FileID)}>\"X\"\r\n

\r\n ))}\r\n \r\n
\r\n : \r\n }\r\n {/* {\r\n uploadFiles.length > 0 \r\n ?\r\n
\r\n {uploadFiles.map((file, i)=>(\r\n file.type === \"image\" ?\r\n

\r\n \"Image\r\n handleRemove(file.url)}>\"X\"\r\n

\r\n :\r\n

\r\n \r\n handleRemove(file.url)}>\"X\"\r\n

\r\n ))}\r\n \r\n
\r\n :\r\n \r\n }*/}\r\n
\r\n {/*
\r\n

\r\n
*/}\r\n \r\n
\r\n \r\n \r\n\r\n
\r\n );\r\n}\r\n\r\nexport default Message;","import React from 'react';\r\nimport { Modal } from 'react-responsive-modal';\r\n\r\nimport TicketMessage from 'components/TicketReplyForm';\r\n\r\nconst TicketMessagePopup = (props) => {\r\n const {open, close } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default TicketMessagePopup;","import React from 'react';\r\nimport { Modal } from 'react-responsive-modal';\r\n\r\nconst ImageFullViewPopup = (props) => {\r\n const { open, close, imgURL } = props;\r\n\r\n return (\r\n \r\n

\"Attachment

\r\n
\r\n );\r\n}\r\n\r\nexport default ImageFullViewPopup;","import React, { useEffect, useState, useRef} from 'react';\r\nimport {useHistory} from \"react-router-dom\";\r\n// import classNames from 'classnames';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faChevronLeft, faUser } from \"@fortawesome/free-solid-svg-icons\";\r\nimport cameraIco from \"assets/img/camera-ico.svg\";\r\nimport sendIco from \"assets/img/send-ico.svg\";\r\nimport TicketMessagePopup from 'components/modals/TicketMessagePopup';\r\nimport useToast from 'hooks/useToast';\r\nimport useSupport from 'hooks/useSupport';\r\nimport moment from 'moment';\r\nimport {PAGE_NAV} from \"configs/page\";\r\nimport ImageFullView from 'components/modals/ImageFullViewPopup';\r\n\r\nconst TicketDetail = (props) => {\r\n\r\n const el = useRef(null);\r\n\r\n const toast = useToast();\r\n const {isOpenInPopup = false, onBackClicked= ()=>{history.goBack()}, ticketRef = '', onClose} = props;\r\n const supportProvider = useSupport();\r\n const {ticketDetailLoadable, fetchTicketDetail, ticketList} = supportProvider;\r\n const { state: ticketDetailState, contents: ticketDetailContent } = ticketDetailLoadable;\r\n const [ticketDetail, setTicketDetail] = useState(\r\n {TicketStarter : null,\r\n Responses: [],\r\n Attachments: []});\r\n \r\n const {TicketStarter,\r\n Responses,\r\n Attachments} = ticketDetail;\r\n \r\n let dtloop = TicketStarter && TicketStarter.Date ? moment(TicketStarter.Date).format(\"DDMMYYY\") : \"\";\r\n \r\n const [isFetching, setIsFetching] = useState(false);\r\n useEffect(() => {\r\n switch (ticketDetailState) {\r\n case \"hasValue\":\r\n if(ticketDetailContent && ticketDetailContent.TicketStarter && ticketDetailContent.TicketStarter.TicketRef === ticketRef){\r\n setTicketDetail(ticketDetailContent);\r\n }\r\n else if(!isFetching){\r\n setIsFetching(true);\r\n fetchTicketDetail(ticketRef, ticketList)\r\n .then(()=>{\r\n setIsFetching(false);\r\n },()=>{\r\n if(isOpenInPopup) {\r\n \r\n } else {\r\n history.replace(PAGE_NAV.TICKETLIST);\r\n }\r\n });\r\n //.finally(()=>{setIsFetching(false)});\r\n }\r\n \r\n break;\r\n case \"hasError\":\r\n if(isOpenInPopup) {\r\n \r\n } else {\r\n history.replace(PAGE_NAV.TICKETLIST);\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }, [ticketDetailState, ticketDetailContent, ticketRef, setTicketDetail]) // eslint-disable-line react-hooks/exhaustive-deps\r\n \r\n const history = useHistory();\r\n\r\n const [showTicketMessagePopup, setShowTicketMessagePopup] = useState(false);\r\n\r\n const [showImageFullViewPopup, setImageFullViewPopup] = useState(false);\r\n const [attachment, setAttachment] = useState(\"\");\r\n\r\n const handleMsgInputClick = () => {\r\n \r\n if(isOpenInPopup) {\r\n setShowTicketMessagePopup(true)\r\n } else {\r\n history.push(`${PAGE_NAV.TICKETLIST}/${ticketRef}/reply`);\r\n }\r\n }\r\n\r\n const postCreateNewReplyPopup = ()=>{\r\n setShowTicketMessagePopup(false);\r\n toast.success(\"Succesfully create reply\");\r\n }\r\n const handleCloseBtn = (event) => {\r\n event.preventDefault();\r\n if(!isOpenInPopup) {\r\n onBackClicked();\r\n }else {\r\n onClose();\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n el.current.scrollIntoView({ block: 'end', behavior: 'smooth' });\r\n });\r\n\r\n return (\r\n
\r\n
\r\n {/* {showBackBtn &&

{event.preventDefault();onBackClicked();}} title=\"Click to go back\">

} */}\r\n

\r\n

\r\n Ticket detail\r\n Ticket ID: #{ticketRef}\r\n

\r\n
\r\n
\r\n
\r\n {\r\n TicketStarter && TicketStarter.TicketRef \r\n && <>\r\n

{moment(TicketStarter.Date).format(\"MMM DD, YYYY\")}

\r\n
\r\n
\r\n
{moment(TicketStarter.Date).format(\"hh:mm a\")}
\r\n
\r\n

{TicketStarter.Message}

\r\n
\r\n {\r\n Attachments && Attachments.length > 0 &&\r\n Attachments.map((att, i)=>(\r\n
{setAttachment(att);setImageFullViewPopup(true);}}>\r\n \"message\"\r\n
\r\n ))\r\n }\r\n
\r\n
\r\n \r\n }\r\n \r\n {\r\n Responses && Responses.length > 0\r\n && [...Responses]\r\n .sort((a, b) => a.DateCreated > b.DateCreated ? 1 : -1)\r\n .map((resp,j)=>{\r\n const dt = moment(resp.DateCreated).format(\"DDMMYYY\");\r\n const isDisplayDate = dt !== dtloop;\r\n if(isDisplayDate){\r\n dtloop = dt;\r\n }\r\n const adminReply = resp.AdminID > 0;\r\n \r\n return (\r\n
\r\n {\r\n isDisplayDate &&

{moment(resp.DateCreated).format(\"MMM DD, YYYY\")}

\r\n }\r\n
\r\n {\r\n adminReply && \r\n
\r\n \r\n
\r\n }\r\n \r\n
\r\n
{moment(resp.DateCreated).format(\"hh:mm a\")}
\r\n
\r\n

{resp.Message}

\r\n
\r\n {\r\n resp.Attachments && resp.Attachments.length > 0 &&\r\n resp.Attachments.map((att, i)=>(\r\n
{setAttachment(att);setImageFullViewPopup(true);}}>\r\n \"message\"\r\n
\r\n ))\r\n }\r\n
\r\n
\r\n
\r\n );\r\n })\r\n }\r\n {/*

May 11, 2016

\r\n
\r\n
\r\n
10:11 am
\r\n
\r\n

dxfhgxdfg

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \"name\r\n
\r\n
\r\n
\r\n
10:11 am
\r\n
\r\n

dxfhgxdfg

\r\n
\r\n
\r\n \"message\"\r\n
\r\n
\r\n
*/}\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \"camera\r\n \r\n \"send\r\n
\r\n setShowTicketMessagePopup(false)} \r\n ticketRef={ticketRef}\r\n postProcFunc={postCreateNewReplyPopup}\r\n />\r\n\r\n setImageFullViewPopup(false)} imgURL={attachment} />\r\n
\r\n );\r\n}\r\n\r\nexport default TicketDetail;","import React from 'react';\r\nimport { Modal } from 'react-responsive-modal';\r\n\r\nimport TicketDetail from 'components/TicketDetail';\r\n\r\nconst TicketDetailPopup = (props) => {\r\n const {open, close, ticketRef } = props;\r\n \r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default TicketDetailPopup;","import React, { useEffect, useState, useRef} from 'react';\r\nimport {useHistory} from \"react-router-dom\";\r\n// import classNames from 'classnames';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faChevronLeft } from \"@fortawesome/free-solid-svg-icons\";\r\nimport TicketDetailPopup from 'components/modals/TicketDetailPopup';\r\nimport ContactSupportPopup from \"components/modals/ContactSupportPopup\";\r\n\r\nimport useToast from 'hooks/useToast';\r\nimport useSupport from 'hooks/useSupport';\r\nimport Skeleton from \"react-loading-skeleton\";\r\nimport moment from 'moment';\r\n\r\nimport {PAGE_NAV} from \"configs/page\";\r\n\r\nconst TicketList = (props) => {\r\n const history = useHistory();\r\n const toast = useToast();\r\n const supportProvider = useSupport();\r\n const {fetchTickets,\r\n ticketListLoadable,\r\n ticketListCriteria} = supportProvider;\r\n \r\n const {IsLoaded} = ticketListCriteria;\r\n const { state: ticketListState, contents: ticketListContent } = ticketListLoadable;\r\n const [ticketListDisplay, setTicketListDisplay] = useState([]);\r\n const [isFetching, setIsFetching] = useState(false);\r\n\r\n useEffect(() => {\r\n switch (ticketListState) {\r\n case \"hasValue\":\r\n if(ticketListContent){\r\n setTicketListDisplay(ticketListContent.List);\r\n }\r\n \r\n break;\r\n default:\r\n break;\r\n }\r\n }, [ticketListState, ticketListContent]) // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n const mountedRef = useRef(true);\r\n\r\n useEffect(() => {\r\n return () => { \r\n mountedRef.current = false\r\n }\r\n }, [])\r\n\r\n useEffect(()=>{\r\n if(IsLoaded) return;\r\n if(ticketListState !== \"hasValue\") return;\r\n if(isFetching) return;\r\n\r\n setIsFetching(true);\r\n const newCriteria = {\r\n ...ticketListCriteria,\r\n Page: ticketListCriteria.Page + 1\r\n };\r\n fetchTickets(newCriteria, ticketListContent)\r\n .then(()=>{\r\n if(mountedRef.current){\r\n setIsFetching(false);\r\n }\r\n }, (err)=>{\r\n if(mountedRef.current){\r\n setIsFetching(false);\r\n toast.error(err);\r\n }\r\n })\r\n },[IsLoaded, isFetching, fetchTickets, ticketListState, ticketListContent]) // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n \r\n const {isOpenInPopup = false, onBackClicked = ()=>{ history.goBack() }, onClose } = props;\r\n const [showTicketDetailPopup, setShowTicketDetailPopup] = useState(false);\r\n const [displayRef, setDisplayRef] = useState(\"\");\r\n\r\n const handleTicketListClick = (item) => {\r\n \r\n if(isOpenInPopup) {\r\n setDisplayRef(item.TicketRef);\r\n setShowTicketDetailPopup(true);\r\n } else {\r\n history.push(`${PAGE_NAV.TICKETLIST}/${item.TicketRef}`);\r\n }\r\n }\r\n\r\n const [showContactSupportPopup, setShowContactSupportPopup] = useState(false);\r\n const postCreateNewTicketPopup = ()=>{\r\n setShowContactSupportPopup(false);\r\n toast.success(\"Succesfully create new ticket\");\r\n }\r\n\r\n const handleNewButtonClick = () =>{\r\n if(isOpenInPopup) {\r\n setShowContactSupportPopup(true);\r\n } else {\r\n history.push(PAGE_NAV.CONTACTSUPPORT);\r\n }\r\n }\r\n const handleCloseBtn = (event) => {\r\n event.preventDefault();\r\n if(!isOpenInPopup) {\r\n onBackClicked();\r\n }else {\r\n onClose();\r\n }\r\n }\r\n\r\n return (\r\n
\r\n
\r\n {/* {!isOpenInPopup &&

{event.preventDefault();onBackClicked();}} title=\"Click to go back\">

}*/}\r\n

\r\n

Ticket list

\r\n

\r\n \r\n

\r\n
\r\n\r\n
    \r\n {\r\n (!isFetching || ticketListState !== \"hasValue\" ) && ticketListDisplay.length === 0 &&
  • No ticket avaliable
  • \r\n }\r\n {\r\n [...ticketListDisplay]\r\n .sort((a, b) => a.Date > b.Date ? -1 : 1)\r\n .map((item, i)=>\r\n ( \r\n
  • {handleTicketListClick(item)}}>\r\n
    \r\n {moment(item.Date).format(\"DD\")}\r\n {moment(item.Date).format(\"MMM\")}\r\n
    \r\n
    \r\n \r\n { item.Title ?\r\n item.Title.substring(0,30) :\r\n item.Message.substring(0,30)\r\n }\r\n \r\n
    \r\n
    \r\n {item.NewCount > 0 && {item.NewCount} }\r\n {item.Status}\r\n
    \r\n
  • \r\n )\r\n )\r\n }\r\n {\r\n (ticketListState === \"loading\" || isFetching) && \r\n <>\r\n
  • \r\n
    \r\n \r\n
    \r\n
  • \r\n
  • \r\n
    \r\n \r\n
    \r\n
  • \r\n
  • \r\n
    \r\n \r\n
    \r\n
  • \r\n \r\n }\r\n \r\n {/*
  • \r\n
    \r\n 19\r\n Jul\r\n
    \r\n
    \r\n Lorem Ipsum is simply dummy text of the printing and typesetting industry.\r\n
    \r\n
    \r\n 10\r\n Open\r\n
    \r\n
  • \r\n
  • \r\n
    \r\n 18\r\n Jul\r\n
    \r\n
    \r\n Lorem Ipsum is simply dummy text .\r\n
    \r\n
    \r\n 10\r\n Open\r\n
    \r\n
  • \r\n
  • \r\n
    \r\n 05\r\n Jul\r\n
    \r\n
    \r\n Lorem Ipsum is simply dummy text of the printing and typesetting industry.\r\n
    \r\n
    \r\n Open\r\n
    \r\n
  • */}\r\n
\r\n {/*
\r\n

\r\n \r\n

\r\n
*/}\r\n {\r\n showTicketDetailPopup && \r\n setShowTicketDetailPopup(false)} \r\n ticketRef={displayRef}\r\n />\r\n }\r\n { \r\n showContactSupportPopup &&\r\n setShowContactSupportPopup(false)} postProcFunc={postCreateNewTicketPopup} />\r\n }\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default TicketList;","import React from 'react';\r\nimport { Modal } from 'react-responsive-modal';\r\n\r\nimport TicketList from 'components/TicketList';\r\n\r\nconst TicketListPopup = (props) => {\r\n const {open, close } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default TicketListPopup;","import React, { useEffect, useState} from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport LoggedInLayout from 'layouts/LoggedInLayout';\r\nimport useLeftMenu from 'hooks/useLeftMenu';\r\nimport {PAGE_NAV} from \"configs/page\";\r\nimport { MENUS } from 'configs/page';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faChevronRight } from \"@fortawesome/free-solid-svg-icons\";\r\nimport ContactSupportPopup from \"components/modals/ContactSupportPopup\";\r\nimport TicketListPopup from 'components/modals/TicketListPopup';\r\nimport { BrowserView, MobileView } from 'react-device-detect';\r\nimport useToast from \"hooks/useToast\";\r\n\r\nconst Support = (props) => {\r\n const [leftMenu, setLeftMenu] = useLeftMenu();\r\n const toast = useToast();\r\n\r\n useEffect(()=>{\r\n if(leftMenu.value !== \"SUPPORT\")\r\n setLeftMenu(MENUS.find(menu=>menu.value===\"SUPPORT\"));\r\n }, [leftMenu, setLeftMenu]);\r\n\r\n const [showContactSupportPopup, setShowContactSupportPopup] = useState(false);\r\n const [showTicketListPopup, setShowTicketListPopup] = useState(false);\r\n\r\n const postCreateNewTicketPopup = ()=>{\r\n setShowContactSupportPopup(false);\r\n toast.success(\"Succesfully create new ticket\");\r\n }\r\n\r\n return (\r\n \r\n \r\n setShowContactSupportPopup(false)} postProcFunc={postCreateNewTicketPopup} />\r\n setShowTicketListPopup(false)} />\r\n \r\n );\r\n}\r\n\r\nexport default Support;","import React from 'react';\r\nimport { PAGE_NAV } from 'configs/page';\r\nimport { Redirect } from 'react-router-dom';\r\nimport useFullRegOnly from \"hooks/useFullRegOnly\";\r\nimport useAuth from 'hooks/useAuth';\r\n\r\nconst LoggedInDisplay = (props) => {\r\n const { children } = props;\r\n \r\n return (\r\n <>\r\n {\r\n useFullRegOnly(\r\n <>\r\n {children} \r\n \r\n )\r\n }\r\n \r\n );\r\n}\r\n\r\nconst LoggedInLayout = (props) => {\r\n const authProvider = useAuth();\r\n const {redirToLogout} = authProvider;\r\n\r\n return (\r\n <>\r\n {\r\n redirToLogout\r\n ? \r\n : \r\n }\r\n \r\n );\r\n}\r\n\r\nexport default LoggedInLayout;","import SupportForm from \"components/ContactSupportForm\";\r\nimport useToast from \"hooks/useToast\";\r\nimport LoggedInLayout from 'layouts/LoggedInPlainLayout';\r\nimport auth from 'utils/auth';\r\n\r\nconst ContactSupport = (props) => {\r\n const toast = useToast()\r\n const {history} = props;\r\n\r\n const goBack = ()=> history.goBack();\r\n\r\n const postCreateNewTicket = ()=>{\r\n toast.success(\"Succesfully create new ticket\");\r\n history.goBack();\r\n \r\n }\r\n\r\n const isLoggedInAuth = auth.isLoggedIn();\r\n\r\n return (\r\n isLoggedInAuth\r\n ? \r\n \r\n \r\n : \r\n );\r\n \r\n}\r\n\r\nexport default ContactSupport;\r\n\r\n","import TicketList from \"components/TicketList\";\r\nimport LoggedInLayout from 'layouts/LoggedInPlainLayout';\r\nimport {PAGE_NAV} from \"configs/page\";\r\n\r\nconst TicketListPage = (props) => {\r\n const {history} = props;\r\n const goBackToSupport = ()=> history.replace(PAGE_NAV.SUPPORT);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n \r\n}\r\n\r\nexport default TicketListPage;\r\n\r\n","import React, {useEffect} from \"react\";\r\nimport TicketDetailDisplay from \"components/TicketDetail\";\r\nimport LoggedInLayout from 'layouts/LoggedInPlainLayout';\r\nimport { useParams } from 'react-router';\r\nimport {PAGE_NAV} from \"configs/page\";\r\n\r\nconst TicketDetail = (props) => {\r\n const {history} = props;\r\n const goBackToList = ()=> history.replace(PAGE_NAV.TICKETLIST);\r\n let { ticketRef } = useParams();\r\n\r\n useEffect(()=>{\r\n if(!ticketRef) history.replace(PAGE_NAV.TICKETLIST);\r\n }, [ticketRef, history])\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n \r\n}\r\n\r\nexport default TicketDetail;\r\n\r\n","import React, {useEffect} from \"react\";\r\nimport ReplyForm from \"components/TicketReplyForm\";\r\nimport useToast from \"hooks/useToast\";\r\nimport LoggedInLayout from 'layouts/LoggedInPlainLayout';\r\nimport { useParams } from 'react-router';\r\nimport {PAGE_NAV} from \"configs/page\";\r\n\r\nconst TicketReply = (props) => {\r\n const toast = useToast()\r\n const {history} = props;\r\n\r\n const goBackToView = ()=> history.replace(`${PAGE_NAV.TICKETLIST}/${ticketRef}`);\r\n let { ticketRef } = useParams();\r\n\r\n useEffect(()=>{\r\n if(!ticketRef) history.replace(PAGE_NAV.TICKETLIST);\r\n }, [ticketRef, history])\r\n\r\n const postCreateNewReply = ()=>{\r\n toast.success(\"Succesfully create reply\");\r\n history.goBack();\r\n \r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n \r\n}\r\n\r\nexport default TicketReply;\r\n\r\n","import React, { useEffect, useState, useCallback } from 'react';\r\nimport classNames from 'classnames';\r\n//configs\r\nimport { MENUS } from 'configs/page';\r\n//atoms\r\nimport { useRecoilValue } from 'recoil';\r\nimport dateJoinedAtom from \"recoil/account/dateJoined\";\r\n//utils\r\nimport moment from 'moment';\r\nimport cloneDeep from 'lodash/cloneDeep';\r\nimport {generateEarningsYearOptions} from \"utils/optionsProvider\";\r\nimport { currencyFormatter, numberFormatter } from 'utils/formatter';\r\n//hooks\r\nimport useIsMountedRef from 'hooks/useIsMountedRef';\r\nimport useLeftMenu from 'hooks/useLeftMenu';\r\n//services\r\nimport useStatService from \"services/stats\";\r\n//layouts, views\r\nimport { BrowserView, MobileView } from 'react-device-detect';\r\nimport LoggedInLayout from 'layouts/LoggedInLayout';\r\n//fonts\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faChevronDown } from \"@fortawesome/free-solid-svg-icons\";\r\n\r\n\r\n\r\nconst TotalEarning = (props) => {\r\n const isMountedRef = useIsMountedRef();\r\n const [leftMenu, setLeftMenu] = useLeftMenu();\r\n const services = useStatService();\r\n \r\n const curYear = moment().year();\r\n const yearOptions = generateEarningsYearOptions(useRecoilValue(dateJoinedAtom));\r\n\r\n\r\n const [earnings, setEarnings] = useState({});\r\n const [selectedYear, setSelectedYear] = useState(curYear);\r\n const [dateSelDropdownOn, setDateSelDropdownOn] = useState(false);\r\n const updateSelYear = (year, e) => {\r\n e.preventDefault();\r\n setSelectedYear(year);\r\n setDateSelDropdownOn(false);\r\n }\r\n\r\n const getEarnings = useCallback(async () => {\r\n try {\r\n if (isMountedRef.current \r\n && (!earnings || !earnings[selectedYear])) {\r\n services.getEarnings({Year: selectedYear})\r\n .then((response)=>{\r\n const {data}=response;\r\n const newEarnings = cloneDeep(earnings);\r\n newEarnings[selectedYear]=data;\r\n setEarnings(newEarnings);\r\n });\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }, [isMountedRef, selectedYear, earnings, services]);\r\n\r\n useEffect(() => {\r\n if(!earnings[selectedYear]) getEarnings();\r\n }, [getEarnings, earnings, selectedYear]);\r\n\r\n useEffect(() => {\r\n if (leftMenu.value !== \"DASHBOARD\" && isMountedRef.current )\r\n setLeftMenu(MENUS.find(menu => menu.value === \"DASHBOARD\"));\r\n\r\n }, [leftMenu, setLeftMenu, isMountedRef]);\r\n\r\n return (\r\n \r\n
{setDateSelDropdownOn(false);}}>\r\n
\r\n

Total Earnings

\r\n\r\n
\r\n

{ setDateSelDropdownOn(!dateSelDropdownOn); e.stopPropagation() }}>{selectedYear}

\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n earnings && earnings[selectedYear]\r\n && \r\n <>\r\n {\r\n earnings[selectedYear].length > 0\r\n ? [...earnings[selectedYear]]\r\n .sort((a, b) => a.Date > b.Date ? 1 : -1)\r\n .map((campaign, i) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))\r\n : \r\n }\r\n \r\n }\r\n \r\n
ClickJoinsSalesEarnings
{moment(campaign.Date).format(\"MMM YYYY\")}{numberFormatter.format(campaign.Traffic)}{numberFormatter.format(campaign.Joins)} {campaign.Traffic > 0 && campaign.Joins > 0 ? `(${Math.round(campaign.Joins * 100 / campaign.Traffic)}%)` : ``}{numberFormatter.format(campaign.Upgrades)} {campaign.Upgrades > 0 && campaign.Joins > 0 ? `(${Math.round(campaign.Upgrades * 100 / campaign.Joins)}%)` : ``}{currencyFormatter.format(campaign.Revenue)}
No results found
\r\n
\r\n\r\n \r\n {\r\n earnings && earnings[selectedYear] &&\r\n <>\r\n {\r\n earnings[selectedYear].length > 0\r\n ? [...earnings[selectedYear]]\r\n .sort((a, b) => a.Date > b.Date ? 1 : -1)\r\n .map((campaign, i) => (\r\n
\r\n
{moment(campaign.Date).format(\"MMM YYYY\")}
\r\n
\r\n
\r\n
Click
\r\n
Join
\r\n
Sales
\r\n
Earnings
\r\n
\r\n
\r\n
{numberFormatter.format(campaign.Traffic)}
\r\n
{numberFormatter.format(campaign.Joins)} {campaign.Traffic > 0 && campaign.Joins > 0 ? `(${Math.round(campaign.Joins * 100 / campaign.Traffic)}%)` : ``}
\r\n
{numberFormatter.format(campaign.Upgrades)} {campaign.Upgrades > 0 && campaign.Joins > 0 ? `(${Math.round(campaign.Upgrades * 100 / campaign.Joins)}%)` : ``}
\r\n
{currencyFormatter.format(campaign.Revenue)}
\r\n
\r\n
\r\n
\r\n ))\r\n\r\n : <>No results found\r\n }\r\n \r\n }\r\n
\r\n\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default TotalEarning;","import { useRef, useEffect } from 'react';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function useIsMountedRef() {\r\n const isMounted = useRef(true);\r\n\r\n useEffect(\r\n () => () => {\r\n isMounted.current = false;\r\n },\r\n []\r\n );\r\n\r\n return isMounted;\r\n}\r\n","import moment from \"moment\"\r\n\r\nexport const generateEarningsYearOptions = (dateJoined, getMaxYears=3) =>{\r\n const joinedYear = moment(dateJoined).year();\r\n let maxYear = moment().year();\r\n const minYear = maxYear - getMaxYears + 1;\r\n const endYear = joinedYear > minYear ? joinedYear : minYear;\r\n let years = [];\r\n while (maxYear >= endYear) {\r\n years.push(maxYear);\r\n maxYear--;\r\n \r\n }\r\n \r\n return years;\r\n}\r\n\r\n","import React from 'react';\r\nimport { Route, Switch, Redirect } from 'react-router-dom';\r\n// import { useLocation } from 'react-router-dom';\r\nimport Home from \"pages/AffiliateQuarter\";\r\nimport AffiliateReg from 'pages/AffiliateReg';\r\nimport Login from \"pages/Login\";\r\nimport Logout from \"pages/Logout\";\r\nimport ForgotPassword from 'pages/ForgotPassword';\r\nimport ResetPassword from 'pages/ResetPassword';\r\n\r\nimport Account from 'pages/Account';\r\nimport Dashboard from 'pages/Dashboard';\r\nimport Campaigns from 'pages/Campaigns';\r\n// import CampaignDetail from 'pages/CampaignDetail';\r\nimport AddCompaign from 'pages/AddCompaign';\r\nimport CampaignDetails from \"pages/CampaignDetails\";\r\nimport Resources from 'pages/Resources';\r\nimport Support from 'pages/Support';\r\nimport ContactSupportMobileView from 'pages/mobileView/ContactSupport';\r\nimport TicketList from 'pages/mobileView/TicketList';\r\nimport TicketDetail from 'pages/mobileView/TicketDetail';\r\nimport TicketMessage from 'pages/mobileView/TicketReply';\r\nimport TotalEarning from 'pages/TotalEarning';\r\n// import auth from 'utils/auth';\r\nimport {PAGE_NAV} from \"configs/page\";\r\nimport TC from 'pages/T&C';\r\nimport useAuthProvider from 'hooks/useAuthProvider';\r\n// import useLogout from 'hooks/useLogout';\r\n\r\n// import authAtom from \"recoil/account/auth\";\r\n// import { useRecoilState, useResetRecoilState } from \"recoil\";\r\n\r\nconst PrivateRoute = ({ component: Component, ...rest }) => {\r\n const {isAuthenticated} = useAuthProvider();\r\n return isAuthenticated \r\n ? } />\r\n : } />\r\n \r\n}\r\n\r\nconst LogoutOnlyRoute = ({ component: Component, ...rest }) =>{\r\n \r\n const {isAuthenticated} = useAuthProvider();\r\n return isAuthenticated\r\n ? } />\r\n : } />\r\n}\r\n\r\n\r\n\r\nconst PageNav = ()=>{\r\n const {isAuthenticated} = useAuthProvider();\r\n // const loc = useLocation();\r\n \r\n // console.log(\"pathname\", loc.pathname)\r\n return(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n {\r\n isAuthenticated\r\n ? \r\n : \r\n }\r\n \r\n \r\n \r\n \r\n \r\n {/* \r\n */}\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default PageNav;","import React from 'react';\r\nimport { Route, Switch } from 'react-router-dom';\r\n// import Home from \"pages/AffiliateQuarter\";\r\nimport PageViews from \"./pageNav\";\r\n// import {PAGE_NAV} from \"configs/page\";\r\n\r\nconst MainNav = ()=>{\r\n return (\r\n \r\n {/* */}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default MainNav;","// import logo from './logo.svg';\r\n// import './App.css';\r\nimport MainNav from \"navigations/mainNav\"\r\n// import AffiliateQuarter from './pages/AffiliateQuarter';\r\n// import Login from './pages/Login';\r\n// import ForgotPassword from './pages/ForgotPassword';\r\n// import AffiliateReg from './pages/AffiliateReg';\r\n// import Dashboard from 'pages/AffiliateDashboard';\r\nimport 'react-responsive-modal/styles.css';\r\nimport './assets/scss/master.scss';\r\nimport 'react-loading-skeleton/dist/skeleton.css';\r\n\r\nimport ErrPopup from 'components/modals/ConfirmPopup';\r\nimport { useRecoilValue, useResetRecoilState } from \"recoil\";\r\nimport errMsgAtom from \"recoil/common/errMsg\";\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faTimes } from \"@fortawesome/free-solid-svg-icons\";\r\n// import {\r\n// BrowserRouter as Router,\r\n// Switch,\r\n// Route,\r\n// //Link\r\n// } from \"react-router-dom\";\r\n\r\n\r\nfunction App() {\r\n const errMsg = useRecoilValue(errMsgAtom);\r\n const resetErrMsg = useResetRecoilState(errMsgAtom)\r\n const {msg, isShow} = errMsg;\r\n\r\n const closeErrMsg = ()=>{\r\n resetErrMsg();\r\n } \r\n \r\n return (\r\n
\r\n \r\n {\r\n isShow && \r\n

\r\n

{msg}

\r\n
\r\n }\r\n \r\n {/* \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \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 {\r\n RecoilRoot\r\n} from 'recoil';\r\nimport {\r\n BrowserRouter as Router,\r\n} from \"react-router-dom\";\r\nimport './index.css';\r\nimport App from './App';\r\nimport reportWebVitals from './reportWebVitals';\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\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":""}